IP Spoof
Autor: ° Hacker | Publicado: 2010-12-25T05:21:00-08:00


IP Spoof consiste basicamente em alterar o endreço origem em um cabeçalho IP. Simples programação em Sockets pode nos ensinar como fazer isso. No entanto, em cima disso existem várias técnicas, e eu enumerarei apenas algumas básicas:- Blind Spoof;- Non Blind Spoof;- DNS Spoof;- ARP Spoof;Todas estas técnicas se utilizam das fraquezas fornecidas na suite TCP/IP(Internet). De modo que um bom conhecimento de TCP/IP se faz nencessário para entender plenamente osesquemas de exploitação.- Blind Spoof.Em 1985, Steve Belovin tornou manifesto em um documento conhecido como "Be Dragons" alguns problemas que o TCP/IP possui. Robert Morris (o pai, não o criador do primeiro Worm) também já havia descrito o problema de se "forjar"(spoofar) endereços de origem em TCP/IP.Mas foi somente em janeiro de 1995 que a Comunidade de Segurança abriu os olhos para este problema. Tsotumo Shimomura, um Analista de Segurança, havia cometido uma série de erros na configuração de um dos seus ervidores de Internet, dentre os quais, eles havia deixado os serviços r* (rlogind, rshd, rexecd) habilitados bem como o fingerd, algo que muitos analistas de segurança já haviam banido de seus hosts. Se aproveitando desta configuração, no Natal de 1994, Kevin David Mitnick invadiu a rede de Tsutomu Shimomura.Tsutomu só foi tomar conhecimento dias depois, analisando um log gerado pelo tcpdump(http://www.tcpdump.org/). Mas que técnica Mitnick usou? A técnica de Blind Spoof. Consiste basicamente em se predizer os números de sequência(ISN) e utilizá-los na exploitação de serviços r*.Vamos avançar um pouco. No TCP/IP, sempre que uma conexão é criada ocorre um processo semelhante ao descritoabaixo:I - Host A -----&gt; Envia Pacote SYN ---&gt; Host BHost A envia um pacote com a flag SYN ativa dizendo que quer criar uma conexão com Host B.II - Hosta A &lt;---- Recebe pacote SYN+ACK + ISN ---- Host B
Host B responde para Host A enviando um pacote com as flags SYN+ACK ativas e enviando junto um número de sequência (Internet Sequencial Number)ISN responsavel depois por "gerir" a troca de mensagens. É atraves deste numero que o Host B vai saber de quem eh o pacote e etc.III - Host A ---&gt; Envia pacote com ACK + ISN ---&gt; Host BDepois do recebimento do pacote, o Host A envia então um pacote com ACK + ISN+1(Note aqui. Se ISN = 123456 entao Host A tem que enviar um ISN = 123457, deste modo o Host B saberah que Host A quer interagir).O nome que se dá a este processo é Handshake ou TriWayHandshake (Aperto de Mãos em 3 vias).O problema se encontra que se nós pudermos predizer o número de sequência gerado por Host B, nós poderemos nos passar por algum host que tem permissão aos serviços r* e enviar um pacote como se fosse tal host de modo que o Host B executaria. Neste caso, não precisaríamos ter uma conta válida no sistema alvo.Nota: Os serviços r*(rlogin, rexec, rsh) foram criado pra facilitar o envio de dados e comandos entre duas redes, sendo que estas redes deveriam "confiar" uma na outra. Qualquer informação a mais, executem em seus linux(man logind).Então. Se a rede alvo possui os serviços r* e hosts de confiança, nós poderíamos nos passar por tais hosts e enviar um comando para nos abrir uma porta para acesso de qualquer lugar.Por exemplo: echo + + &gt;&gt; /root/.rhostsIsso permitiria acesso via rsh no host alvo como root sem necessitar de senha(Os sistemas mais atuais não permitem que a conta root seja usada em acessos via rlogind).Para ser efetivo, deve-se ainda derrubar o host de confiança pra que ele não reponda após o início da Conexão. Para isso, pode-se utilizar um ataque de denial of service qualquer na máquina de Confiança.E foi isso que ocorreu em 1994. Mintinck conseguiu com sucesso implementar este ataque. Hoje em dia existem ferramentas que demonstram como este ataque ocorre.http://packetstorm.linuxsecurity.com...ADM/ADM-SPOOF/Um texto descrevendo em pormenores pode ser visto em:http://www.phrack-dont-give-a-shit-a...rack/48/P48-14
Project Sp00fed - threx -http://www.legions.org/kv/kv10.txtBom, atualizando as informações para os nossos dias. Hoje este tipo de ataque é e não é tão simples. As opiniões variam de Analista pra analista. Por quê?A "solução" criada pelo pessoal da segurança foi fazer com que o número de sequência se tornasse "pseudo-aleatório", ou seja.Antigamente, se fulano se conectava em rede A e recebesse o número de sequência X, o beltrano(próximo a se conectar) receberia um ISN, por exemplo, de número X + 1000, o próximo X + 1000 + 1000. E assim por diante, de modo que se nós soubessemos quanto é X, poderíamos prever os ISN seguinte e gerar o Blind Spoof.Mas a solução foi pseudo randomizar(tornar "pseudo-aleatório") o ISN.Agora, ao invés de X+1000, teríamos algo tipo X+1000+alguma outra coisa.Só que no mundo virtual, não existe aleatorização, ou seja, tudo que um computador fizer, poderá de algum modo ser predito se pudermos simular as condições e/ou conhecermos as implementações de pseudo-randomização. E foi o que ocorreu. Por exemplo, os sistemas operacionais Linux com kernel 2.2.X onde X eh menor que 7 possuiamuma péssima randomização, de modo que Blind Spoof era possível nestes casos. O grupo de hacking/security alemão TESO criou uma ferramenta para exploitar isso:http://teso.scene.at/advisories/teso...ory-001.tar.gzAtualmente, os sistemas de pseudo-randomização são mais complexos, no entanto, não existe nenhuma solução realmente eficaz contra a técnica de Blind Spoof. Apenas se pode dificultar removendo serviços como r*, colocando tais esquemas de randomização(/dev/urandom, por exemplo)e etc.Existe um documento de Michal Zaliensky que aborda esquemas de randomização em muitos sistemas operacionais:http://razor.bindview.com/publish/papers/tcpseq.html- Non Blind SpoofAqui é semelhante ao processo acima, só que não é feito "ás cegas"(Blind). Como assim? Aqui o atacante já obteve acesso a um sistema no meio das conexões alvos(hosts de confiança) e ele passa a analisar o tráfego e com base na análise feita através de um sniffer, ele é capaz de "sequestrar" a conexão. Esta técnica também recebe nomes variados como IP Hijacking, e também costumam se referir a ela com Man-in-the-middle, pois ela é uma espécie de man-in-the-middle.Maiores informações:Uma ferramenta que executa esta técnica:http://packetstormsecurity.org/sniff...t/hunt-1.5.tgzSoluções contra esta técnica?Este é um dos grandes problemas que afetam a Internet na atualidade. Já que se formos analisar, os ataques de Man-in-the-Middle são capazes de inutilizar esquemas de PKI(Public Key Infrastructure) usados em serviços de e-commerce, ssh, ssl, essas coisas.Mas na prática, também não possui solução.- DNS SpoofUm servidor de DNS(Domain Name Server) é o responsável por associar um determinado IP a um determinado nome de host. Por exemplo, quando digitamos www.infoshack.cjb.net o servidor de DNS da cjb irá processara informação recebida e associar este endereço a uma tabela de endereços previamente definida pelo administrador num arquivo de configuração (algo como named.conf).Um atacante pode se utilizar disso de várias formas, desde usar técnicas de man-in-the-middle(invadindo um server no meio do caminho) até mesmo utilizando problemas no protocolo DNS(udp/53). Existe um campo no cabeçalho DNS responsável pela ID que pode ser atacado como se ataca um cache, enviando múltiplas requisições até entupir a pilha.Este tipo de ataque também é conhecido como DNS Cache Spoof.Maiores informaçoes em:http://packetstorm.linuxsecurity.com...ADM-DNS-SPOOF/Solução contra estes problemas?Existem "defesas" contra ID Spoof. As versões mais atuais de Nameds dificultam isso. Mas nada em definitivo, não sei bem a respeito disso. Quanto a Man-in-the-middle em DNS, não existe nada.- ARP SpoofO protocolo ARP(Adress Response Protocol) é o responsável por "associar" endereço IP(notação: 192.168.0.1) a seu MAC correspondente(00:23:B5:76:448) que nada mais é que o endereço físico de uma placa de rede em uma rede local.Em 1998, Yuri boloye tornou a técnica de ARP Spoof massificada. O protocolo ARP possui uma tabela que associa um endereço MAC a um IP. Esta tabela pode ser envenenada com inúmeras requisições capazes de fazer com que um host alvo pense que um IP de um host Y esteja associa a um Host Z, onde este host Z pode ter sido previamente comprometido pelo atacante.Este tipo de ataque é bastante útil em redes segmentadas. Sim!! Talvez alguns de vocês tenham ouvido alguém dizer que para se proteger contra sniffers basta compra um switch de 1000 reais, no entanto, este ataque é capaz de fazer com que o switch seja inutilizado contra sniffers.ARP Spoof também recebe vários nomes como ARP Cache e o famoso nome ARP Poison. Também é conhecida como ARP Poisoning.Maiores informações em:http://packetstormsecurity.org/paper...p_spoofing.pdfYuri Boloev - Redir games with ARP and ICMP -http://www.legions.org/kv/kv7.txtFerramentas que executam este ataque:http://teso.scene.at/releases/arpmim-0.2.tar.gzhttp://teso.scene.at/releases/arpmitm-0.1.tar.gzhttp://teso.scene.at/releases/arptool-0.0.1.tar.gzhttp://packetstorm.linuxsecurity.com...p-0.6.9.tar.gzSe protegendo de IP Spoof no LinuxEssa dica serve para aqueles que se preocupam com segurança anti- hacker, ou seja, para aqueles que não querem sofrer nenhum ataque do tipo DNS-IP Spoofing ou ainda não querem ter o seu número IP na mão dos hackers.É bem simples. Primeiro, entre na pasta /etc/rc.d/. Lá edite o arquivo rc.local acrescentando as seguintes linhas:for X==/proc/sys/net/ipv4/for Y==/proc/sys/net/ipv4/conf/echo 1 &gt; X/icmp_echo_ignore_allecho 1 &gt; X/icmp_echo_ignore_broadcastsecho 1 &gt; X/icmp_ignore_bogus_error_responsesecho 1 &gt; Y/all/rp_filterecho 1 &gt; Y/default/rp_filterecho 1 &gt; Y/eth0/rp_filterecho 1 &gt; Y/lo/rp_filterSalve e dê um reboot na sua máquina. Isso fará com que a sua máquina não aceite mais os pacotes ICMP (ping) ao mesmo tempo que será bloqueado o ataque DNS-IP Spoofing.