Ver Feed RSS

Marcus Maciel

Sniffando pacotes em Firewalls Cisco PIX, ASA e FWSM

Avaliação: 2 votos, 5,00 média.
Uma ferramenta extremamente necessária para fazer um troubleshooting em uma rede é um sniffer. Vejo muitas pessoas reclamando da falta de opções de se fazer isso em firewalls Cisco, uma coisa que não é verdade. Até mesmo porque utilizo
diariamente em meu trabalho.

Tentarei explicar então como você pode sniffar pacotes dentro de Firewalls da Cisco.
Ex: Cisco Pix, Cisco ASA e FWSM. Gostaria de lembrar que o capture nao funciona corretamente em Firewalls FWSM versões inferiores a 3. Pelo que pude perceber ele so faz sniffer de trafego direcionado a interface do próprio Firewall.


Criando ACL's
a Primeira coisa que deve ser feita é a criação da access-list para o trafego desejado. Basicamente a idéia é restrigir o sniffer a apenas o trafego que você realmente quer ver. Eu não recomendo utilizar "any" em roteadores com grande Tráfego de dados.


PIX# config t
PIX(config)# access-list webcap line 1 extended permit tcp any host 192.168.1.1 eq 80
PIX(config)# access-list webcap line 2 extended permit tcp host 192.168.1.1 eq 80 any
PIX(config)# exit



No exemplo acima foi criado uma access-list chamada webcap e nela estou restringindo tudo que entra para o ip 192.168.1.1 na porta 80. E tudo sai da porta 80 do 192.168.1.1.

Listando sua Access-List

PIX# show access-list webcap
access-list webcap; 2 elements
access-list webcap line 1 extended permit tcp any host 192.168.1.1 eq www (hitcnt=0)
access-list webcap line 2 extended permit tcp host 192.168.1.1 eq www any (hitcnt=0)



Como podem ver o hitcount da access-list é 0 e vai continuar assim pq essa access-list nao será aplicada na interface será usada apenas para o capture.


Criando o Capture para ver o trafego


PIX# capture webcapinside access-list webcap interface inside
PIX# capture webcapoutside access-list webcap interface outside



No exemplo acima eu criei 2 captures para serem vistos, 1 para interface inside e outro para interface outside.

Ou seja se o trafego que voce quer ver só passa pela interface inside não vejo necessidade de criar um capture para sua interface outside. Lembrando que inside e outside é o nome que você deu para interface ou seja isso pode ser qualquer nome.


Listando Captures


PIX# show capture
capture webcapinside type raw-data access-list webcap interface inside
capture webcapoutside type raw-data access-list webcap interface outside



No exemplo acima estou listando os captures existentes no firewall assim você poderá escolher qual capture deseja ver.


Vendo o Trafego sniffado pelos captures criados


PIX# show capture webcapoutside

17 packets captured
1: 09:03:02.244906 192.168.2.2.2536 > 192.168.1.1.80: S 39829922:39829922(0) win 65535
2: 09:03:02.275620 192.168.1.1.80 > 192.168.2.2.2536: S 1295066193:1295066193(0) ack 39829923 win 5840
3: 09:03:02.275940 192.168.2.2.2536 > 192.168.1.1.80: . ack 1295066194 win 65535
4: 09:03:02.282303 192.168.2.2.2536 > 192.168.1.1.80: P 39829923:39830620(697) ack 1295066194 win 65535
5: 09:03:02.314864 192.168.1.1.80 > 192.168.2.2.2536: . ack 39830620 win 6970
6: 09:03:05.029722 192.168.1.1.80 > 192.168.2.2.2536: . 1295066194:1295067454(1260) ack 39830620 win 6970
7: 09:03:05.030805 192.168.1.1.80 > 192.168.2.2.2536: . 1295067454:1295068714(1260) ack 39830620 win 6970
8: 09:03:05.031309 192.168.2.2.2536 > 192.168.1.1.80: . ack 1295068714 win 65535
9: 09:03:05.064129 192.168.1.1.80 > 192.168.2.2.2536: . 1295068714:1295069974(1260) ack 39830620 win 6970
10: 09:03:05.065182 192.168.1.1.80 > 192.168.2.2.2536: . 1295069974:1295071234(1260) ack 39830620 win 6970
11: 09:03:05.065700 192.168.2.2.2536 > 192.168.1.1.80: . ack 1295071234 win 65535
12: 09:03:05.066296 192.168.1.1.80 > 192.168.2.2.2536: . 1295071234:1295072494(1260) ack 39830620 win 6970
13: 09:03:05.098597 192.168.1.1.80 > 192.168.2.2.2536: . 1295072494:1295073754(1260) ack 39830620 win 6970
14: 09:03:05.099146 192.168.2.2.2536 > 192.168.1.1.80: . ack 1295073754 win 65535
15: 09:03:05.099588 192.168.1.1.80 > 192.168.2.2.2536: . 1295073754:1295075014(1260) ack 39830620 win 6970
16: 09:03:05.100168 192.168.1.1.80 > 192.168.2.2.2536: P 1295075014:1295075958(944) ack 39830620 win 6970
17: 09:03:05.100595 192.168.2.2.2536 > 192.168.1.1.80: . ack 1295075958 win 65535
17 packets shown



No exemplo acima estou mostrando o trafego capturado pelo capture webcapoutside que foi aplicado na interface outside.

Para ver mais detalhes do que esta sendo capturado voce pode utilizar o parametro detail.


Exemplo:

PIX# show capture webcapoutside detail



Removendo o capture


PIX# no capture webcapinside type raw-data access-list webcap interface inside.
PIX# no capture webcapoutside type raw-data access-list webcap interface outside



Removendo a access-list


PIX# config t
PIX(config)# no access-list webcap line 1 extended permit tcp any host 192.168.1.1 eq 80
PIX(config)# no access-list webcap line 2 extended permit tcp host 192.168.1.1 eq 80 any
PIX(config)# exit
PIX#




Importante


Em algumas versões de firewall da cisco existe um BUG que quando se remove a access-list antes de ser removido o capture. Ele passa a sniffar todo o trafego enviado a device e em firewalls de grande quantidade de trafego isso pode fazer com que o firewall trave completamente.

Referencia
Usei como exemplo os comandos usados no site
http://www.computernetworkinghelp.com/content/view/40/1/

Informações
Caso tenham alguma duvida terei prazer em responde-las para tal utilize os comentários deste artigo.
Categorias
Artigos

Comentários

  1. Avatar de Duca
    Belo post, otimo assunto e bem formatado!
  2. Avatar de Patrick
    otima dica mesmo. só acho um procedimento muito chato para as vezes capiturar um trafego minimo. o legal mesmo é (se a rede for de sua responsabilidade) fazer um port mirror no switch e colocar um linux capiturando tudo =)
  3. Avatar de alexandrecorrea
    huhuhuuh muito bom !! e organizado !!

    clap clap clap !!!! \o/

+ Enviar Comentário