Primeiramente me desculpar pelo atraso do post mas as coisam andam corridas por esses lados mas não vamos deixar a peteca cair mesmo com atrasos =)!
Nesse post iremos falar sobre os decoders do Snort. Para lembrar exato onde estamos os decoders estão logo após a aquisição de dados através do DAQ .
Em resumo o processo do snort é o seguinte:
DAQ (Captura de pacotes) --> Decoders --> Preprocessors --> Rule Engine --> Output Plugins
Os decoder são de EXTREMA importancia para o snort pois ali é onde podemos dizer que se separa a parte "Protocolo" da parte "Payload". Caso não exista decoders para tráfegos específicos o snort simplesmente não terá como analisar o conteúdo.
Atualmente o snort possui basicamente os seguintes decoders :
TCP
UDP
IPv4
IPv6
MPLS
GRE
GTP (GRPS Tunneling Protocol)*
* Suporte a GTP/GPRS é algo totalmente novo implantado na versão 2.9.2. Certamente adicionarei algo sobre isso na agenda para o futuro. Caso queiram mais informação leiam o README.gtp no doc/ to tarball mais recente e/ou o blogpost do VRT sobre isso http://blog.snort.org/2012/01/gtp-decoder-and-preprocessor.html . O encapsulamento do GPRS é BEM interessante.
Além do fato de separar a parte protocolo da parte payload os decoders também podem tomar ações e tirar pacotes de serem analisados ou mesmo bloqueados com as decoders rules.
Aqui algumas configurações default com os decoder no snort.conf
# Stop generic decode events:
config disable_decode_alerts
# Stop Alerts on experimental TCP options
config disable_tcpopt_experimental_alerts
# Stop Alerts on obsolete TCP options
config disable_tcpopt_obsolete_alerts
# Stop Alerts on T/TCP alerts
config disable_tcpopt_ttcp_alerts
# Stop Alerts on all other TCPOption type events:
config disable_tcpopt_alerts
# Stop Alerts on invalid ip options
config disable_ipopt_alerts
# Alert if value in length field (IP, TCP, UDP) is greater th elength of the packet
# config enable_decode_oversized_alerts
# Same as above, but drop packet if in Inline mode (requires enable_decode_oversized_alerts)
# config enable_decode_oversized_drops
# Configure IP / TCP checksum mode
config checksum_mode: all
* Pra mim essa configuração acima em vermelho é bem importante pois ele vai tirar da inspecção pacotes com bad checksum o que vai liberar esse tempo para pacotes não malformados.
Um ponto muito importante aqui é que essas regras são desabilitadas por padrão, não a normalização de separação do "Protocolo do Payload" mas as proteções em si.
Para habilitar você terá que realizar 3 passos:
- Configurar o PATH das preprocrules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
- Copiar as decoder.rules para o diretorio configurado acima
- Reiniciar seu snort (lembre-se sempre se usar a opcão -T para checar o arquivo de configuração antes de parar seu snort para o mesmo não ficar fora do ar por alguma razão)
O que essas decoders rules alertam?
Atualmente existem por volta de 142 decode rules e abaixo mostrar algumas que acho interessante. Vale lembra que é de suma importancia saber e ler sobre os protocolos citados que a mesma faz decode para melhor entendimento da regra e logicamente de quando a mesma gerar um alerta saber analisar.
alert ( msg:"DECODE_IPV4_INVALID_HEADER_LEN"; sid:2; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_ISATAP_SPOOF"; sid:453; gid:116; rev:1; metadata:rule-type decode; reference:cve,2010-0812; reference:url,www.microsoft.com/technet/security/bulletin/MS10-029.mspx; classtype:misc-attack; )
alert ( msg:"DECODE_ICMP_ORIG_PAYLOAD_GT_576"; sid:254; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCP_NMAP_XMAS"; sid: 401; gid: 116; rev: 1; metadata: rule-type decode ; classtype:attempted-recon; reference:bugtraq,7700; reference:cve,2003-0393; )
alert ( msg:"DECODE_ICMP_REDIRECT_HOST"; sid:436; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
Lembrem-se galera que é nos detalhes que achamos os grandes perigos, não adiantar ficar observando somente os payload enquanto tem muita coisa já acontecendo umas camadas antes. Estude protocolos, cabeçalhos e se tiverem paciencia leiam as RFC =) .
Recomendo também que leiam o README.decode que voce encontra no doc/ do tarball do snort.
Happy Snorting!
Rodrigo "Sp0oKeR" Montoro
Nenhum comentário:
Postar um comentário