1. Snort - capturar e dissecar o tr´fego de rede
a
Ulisses Ara´jo Costa
u
ulisses@lsd.di.uminho.pt
25 Mar¸o, 2009
c
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
2. Sum´rio
a
1 NIDS
2 Snort
3 Objectivo
4 tshark
Estat´
ısticas
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
3. NIDS - Network Intrusion Detection System
Sistema de detec¸˜o de intrus˜o de rede
ca a
Tenta detectar actividade maliciosa (ataques DoS, DDos, port
scans, tentativas de cracking )
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
4. Como funciona
An´lise de todos os pacotes
a
Tenta encontrar padr˜es suspeitos
o
Exemplo - port scanners
Se um grande n´mero de pedidos de conec¸˜es TCP para um
u co
grande n´mero de portas diferentes num curto espa¸o de tempo
u c
ent˜o o NIDS conclu´ que podemos estar a ser alvo de um scan de
a ı
portos.
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
5. Sum´rio
a
1 NIDS
2 Snort
3 Objectivo
4 tshark
Estat´
ısticas
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
6. Defini¸˜o
ca
SNORT is an open source network intrusion prevention
and detection system utilizing a rule-driven language,
which combines the benefits of signature, protocol and
anomaly based inspection methods. With millions of
downloads to date, Snort is the most widely deployed
intrusion detection and prevention technology worldwide
and has become the de facto standard for the industry.
Modo passivo
Modo activo = firewall
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
7. Abordagem
Usar o Snort para capturar todo o tr´fego que conseguir em modo
a
passivo.
root@pig:# snort -u snort -g snort -D -d -l /var/log/snort -c /etc/snort/snort.debian.conf -S -i
eth0
Grava log em bin´rio (formato tcpdump)
a
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
8. Sum´rio
a
1 NIDS
2 Snort
3 Objectivo
4 tshark
Estat´
ısticas
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
9. Depois de ter o ficheiro. . .
Implementa¸˜o de filtros segundo determinadas regras
ca
Agrega¸˜o de pacotes segundo regras (onde o Snort n˜o
ca a
chega)
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
10. Problema - parsing
Fazer parsing de tcpdump
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
11. Exemplo - pacote SSH
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
12. Implementa¸˜o em Haskell
ca
getPacket :: [ Word8 ] -> InPacket
getPacket bytes = toInPack $ listArray (0 , Prelude . length bytes -1) $ bytes
-- Ethernet | IP | TCP | X
getPacketTCP :: [ Word8 ] -> Maybe ( NE . Packet ( NI4 . Packet ( NT . Packet InPacket ) ) )
getPacketTCP bytes = doParse $ getPacket bytes :: Maybe ( NE . Packet ( NI4 . Packet (
NT . Packet InPacket ) ) )
Problema
N˜o h´ parsers feitos para camada de aplica¸˜o :S
aa ca
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a
13. Sum´rio
a
1 NIDS
2 Snort
3 Objectivo
4 tshark
Estat´
ısticas
Ulisses Ara´jo Costa
u Snort - capturar e dissecar o tr´fego de rede
a