Primeiro Case: Analisando tráfego anormal em sua rede.
Bom, vamos levar em consideração um modus operadis de um atacante
mediano. Ele ganhou acesso a nossa máquina e está utilizando nossa máquina
como plataforma para outros ataques.
Um belo dia você está logado na sua máquina e listando as conexões
com um "netstat -na". Você vê uma conexão saindo de sua máquina na
porta 23 (telnet), porém nenhum usuário seu utiliza essa porta.
Como sabemos, o telnet não usa criptografia, por isso devemos
utilizar SSH, a falta de criptografia faz do telnet um alvo fácil à uma
análise simples.
Vamos nesse case utilizar o asctcpdump e o tcpdump. Digo
os dois porque o asctcpdump é um front-end para o tcpdump.
Como o nome sugere, ele transforma saídas do tcpdump em ASCII para que
nós, pobres mortais, possamos entender o que se passa no meio daqueles
números matriciais ;)
O asctcpdump é muito fácil de usar e você encontrará rapidamente
a melhor forma utilizá-lo. Vou mostrar uma bem simples que resolverá
nosso caso.
Em nosso tty de análise, rodaremos o asctcpdump dessa maneira:
$ asctcpdump -x -v -i ppp0 -s 1500
Isso seria suficiente para ele capturar todo o tráfego que chega na
interface ppp0, o parâmetro "-s 1500" é o tamanho em bytes do que ele
irá analisar, esse número é bom para pegarmos arquivos que entram e
saem da nossa rede também.
Suponhamos que queremos apenas analisar o tráfego FTP que entra ou sai
do nosso servidor. Para tanto, vamos setar a porta que desejamos analisar
com o parâmetro <PORT>, então nosso esquema ficará assim:
$ asctcpdump -x -v -i ppp0 -s 1500 port 21
tcpdump: listening on ppp0
Agora, em outro terminal vamos acessar uma sessão ftp normalmente:
$ ftp rootsec.com
Connected to rootsec.com.
220 FTP Server ready.
Name (rootsec.com:root): admin
331 Password required for admin.
Password: ******
230 User admin logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
Agora vamos ver no nosso terminal que o ASCtcpdump estava rodando o que
ele analisou:
986:3945129986(0) win 5808 <mss 1452,sackOK,timestamp 645581 0,nop,wscale 1> (DF) (ttl 64, id 12751, len 60)
4500 003c 31cf 4000 4006 b6f3 c900 0a77 E..<1.@.@......w
c891 b5f0 8077 0015 eb25 e802 0000 0000 .....w...%......
a002 16b0 b1d8 0000 0204 05ac 0402 080a ................
0009 d9cd 0000 0000 0103 0301 ............
ack 1 win 5792 <nop,nop,timestamp 15795897 645597> (DF) (ttl 53, id 49721, len 75)
4500 004b c239 4000 3506 317a c891 b5f0 E..K.9@.5.1z....
c900 0a77 0015 8077 c236 c480 eb25 e803 ...w...w.6...%..
8018 16a0 0b97 0000 0101 080a 00f1 06b9 ................
0009 d9dd 3232 3020 4654 5020 5365 7276 ....220 FTP Serv
6572 2072 6561 6479 2e0d 0a er ready...
ack 24 win 2904 <nop,nop,timestamp 645839 15795897> (DF) [tos 0x10] (ttl 64, id 12754, len 64)
4510 0040 31d2 4000 4006 b6dc c900 0a77 E..@1.@.@......w
c891 b5f0 8077 0015 eb25 e803 c236 c497 .....w...%...6..
8018 0b58 c663 0000 0101 080a 0009 dacf ...X.c..........
00f1 06b9 5553 4552 2061 646d 696e 0d0a ....USER admin..
ack 13 win 5792 <nop,nop,timestamp 15796140 645839> (DF) (ttl 53, id 49723, len 86)
4500 0056 c23b 4000 3506 316d c891 b5f0 E..V.;@.5.1m....
c900 0a77 0015 8077 c236 c497 eb25 e80f ...w...w.6...%..
8018 16a0 498e 0000 0101 080a 00f1 07ac ....I...........
0009 dacf 3333 3120 5061 7373 776f 7264 ....331 Password
2072 6571 7569 7265 6420 666f 7220 6164 required for ad
6d69 6e2e 0d0a min...
ack 58 win 2904 <nop,nop,timestamp 646093 15796140> (DF) [tos 0x10] (ttl 64, id 12756, len 69)
4510 0045 31d4 4000 4006 b6d5 c900 0a77 E..E1.@.@......w
c891 b5f0 8077 0015 eb25 e80f c236 c4b9 .....w...%...6..
8018 0b58 635e 0000 0101 080a 0009 dbcd ...Xc^..........
00f1 07ac 5041 5353 206f 776e 616c 6c72 ....PASS Sad123r
6f6f 740d 0a oot..
ack 30 win 5792 <nop,nop,timestamp 15796396 646093> (DF) (ttl 53, id 49724, len 79)
4500 004f c23c 4000 3506 3173 c891 b5f0 E..O.<@.5.1s....
c900 0a77 0015 8077 c236 c4b9 eb25 e820 ...w...w.6...%.
8018 16a0 457e 0000 0101 080a 00f1 08ac ....E~..........
0009 dbcd 3233 3020 5573 6572 2061 646d ....230 User adm
696e 206c 6f67 6765 6420 696e 2e0d 0a in logged in...
...
Viu na saída ASCII que ele retornou? Pegamos a conexão completa do
cliente ftp, com usuário: admin e senha: Sad123root.
Conseguimos pegar facilmente porque como sabemos, o tráfego FTP não é
criptografado, o mesmo acontece com o telnet.
Da mesma maneira poderíamos ter deixado o tcpdump normal rodando.
Iríamos pegar o tráfego do mesmo jeito, porém não iríamos entender a saída,
por isso o asctcpdump é nosso amigo :-)
Existem meios de você logar tudo com o tcpdump normal e depois traduzir os
logs com asctcpdump.
Vamos ver agora uma análise com o Ethereal.