IP Spoof

Started by _Dr4k0_, 29 de June , 2006, 06:45:26 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

_Dr4k0_

Por: Nash Leon

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
os esquemas 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 descrito abaixo:

I - Host A -----> Envia Pacote SYN ---> Host B

Host A envia um pacote com a flag SYN ativa dizendo que quer criar uma conexão com Host B.

II - Hosta A <---- 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 ---> Envia pacote com ACK + ISN ---> Host B

Depois 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 + + >> /root/.rhosts

Isso 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/gr ... ADM-SPOOF/

Um texto descrevendo em pormenores pode ser visto em:

http://www.phrack-dont-give-a-shit-abou ... /48/P48-14
Project Sp00fed - threx -
http://www.legions.org/kv/kv10.txt


Bom, 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 possuiam uma 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-ad ... 001.tar.gz

Atualmente, 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 Spoof

Aqui é 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/sniffers ... nt-1.5.tgz

Soluçõ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 Spoof

Um 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á processar a 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/gr ... 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 Spoof

O 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:44:D8) 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/papers/p ... oofing.pdf
Yuri Boloev - Redir games with ARP and ICMP -
http://www.legions.org/kv/kv7.txt

Ferramentas que executam este ataque:
http://teso.scene.at/releases/arpmim-0.2.tar.gz
http://teso.scene.at/releases/arpmitm-0.1.tar.gz
http://teso.scene.at/releases/arptool-0.0.1.tar.gz
http://packetstorm.linuxsecurity.com/sn ... 6.9.tar.gz


Solução contra isso?

Alguns softwares tentam detectar, mas nada 100%.


Ps.: Estou postando vários textos a maioria do Nash Leon apesar de não conhece-lo admiro muito ele.. pois todos os seus textos são excelentes.. e pretendo compartilhar com vcs..
100% Livre!!!Livre para escolher o que há de melhor no Windows e Linux. Livre de preconceito direto ou inverso!
Adote essa filosofia e tenha mais chance de sucesso profissional.

BRUNA

Spoof Pack - tudo em Um


As tecnicas que envolvem o conceito de SPOOF(IP Spoof, DNS Spoof e etc) sao caracterizadas basicamente pela adulteracao do IP origem do emissor, ou seja, um atacante envia um pacote para uma rede alvo com IP de uma rede diferente da rede a que ele se encontra.Esta tecnica tem suas diversas utilidades e dentre elas a 'passagem de pacotes' por um Firewall.



Password : thijs


Fonte: www.thespoof.com