serie snortando - introdução ao snort

31
Serie Snortando - Usando e Entendendo o Snort Caros, Iniciarei uma série que chamarei de "Snortando". Minha idéia aqui é semanalmente fazer um post sobre funcionalidades do snort no geral . Entre os assuntos abordarei bastante coisa de pre-processadores (logicamente 1 pre-processador por post visto que a ideia é explicar para o bom uso) entre outras funções: dcerpc2 decode decoder_preproc_rules dnp3 dns filters flowbits frag3 ftptelnet gre GTP http_inspect imap ipip ipv6 modbus multipleconfigs normalize PerfProfiling pop ppm reload reputation rzb_saac sensitive_data sfportscan sip SMTP ssh ssl stream5 Também postarei sobre criação de regras, explicação snort.conf , dicas de instalação e deploy, ferramentas para testes dos pre-

Upload: eugenio-inacio

Post on 28-Dec-2015

97 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Serie Snortando - Introdução Ao Snort

Serie Snortando - Usando e Entendendo o SnortCaros,

Iniciarei uma série que chamarei de "Snortando". Minha idéia aqui é semanalmente fazer um post sobre funcionalidades do snort no geral . Entre os assuntos abordarei bastante coisa de pre-processadores (logicamente 1 pre-processador por post visto que a ideia é explicar para o bom uso) entre outras funções: dcerpc2

decode

decoder_preproc_rules

dnp3

dns

filters

flowbits

frag3

ftptelnet

gre

GTP

http_inspect

imap

ipip

ipv6

modbus

multipleconfigs

normalize

PerfProfiling

pop

ppm

reload

reputation

rzb_saac

sensitive_data

sfportscan

sip

SMTP

ssh

ssl

stream5

Também postarei sobre criação de regras, explicação snort.conf , dicas de instalação e deploy, ferramentas para testes dos pre-processadores , teste de performance de regras, dicas gerais entre outras coisas/idéias que surgirem durante o ano. 

Em paralelo a isso também lançaremos via EaD da Dynsec treinamento de análise de pacotes, snort básico, snort avançado e criação de regras .

Acompanhe a nova serie "Snortando". Caso tenha alguma sugestão entre em contato. Possivelmente junto com o primeiro post tentarei colocar uma mini-agenda .

Page 2: Serie Snortando - Introdução Ao Snort

Quem sabe no final não temos um mini howto em pt_BR =)

Em paralelo continuarei postando sobre Deteção de Intrusos e Malwares no geral também . 

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Introdução ao Snort - Serie Snortando (Parte 1)        Muitas vezes vejo pessoas seguindo receitas de bolo de como instalar o snort (não somente o snort mas varias ferramentas) sem ao menos saber exato o funcionamento do mesmo. Quando pensei na serie Snortando meu intuito é explicar como funciona o Snort no geral bem como explicar mais em detalhes funcionalidades especificas. Já me falaram para escrever um livro sobre snort mas infelizmente não acho que o snort tem evoluido muito rapidamente e o livro quando lançado estarei totalmente desatualizado, ou seja, fazendo algo online acredito ser a melhor opção visto que posso atualizar os post das partes atualizadas bem como adicionar capitulos =)

O que é o Snort ?

         É um sistema de detecção de Intrusos de Redes ( NIDS - Network Intrusion Detection System) no qual ele visa monitora seu tráfego da rede em algum segmento especifico ou geral . O snort foi criado por Marty Roesch em 1998/1999 e desde então com o apoio da comunidade sempre teve grande crescimento. Atualmente a Sourcefire é quem realmente desenvolve, empresa criada pelo Roesch onde possui "versões comerciais do snort".

        O funcionamento do snort bem resumidamente é dividido fases, essas quais teremos os post que voce pode ver a agenda http://spookerlabs.blogspot.com/2012/01/agenda-da-serie-snortando.html.

A figura abaixo ilustra o fluxo da aquisição da informação até a geração ou não de um alerta:

Page 3: Serie Snortando - Introdução Ao Snort

- Caputra de Pacotes         Atualmente o snort utiliza para aquisição de pacotes o DAQ (que iremos falar no próximo post da série) . Em resumo existem algumas formas de replicar o tráfego da sua rede como Network Tap , Port Mirror e Inline . Comentarei melhor sobre eles e como funcionam no post do DAQ. É importante salientar que onde se coloca o IDS e aquisição dos pacotes é o primeiro passo para o sucesso da implantação da ferramenta. - Pré-Processadores           Os pre – processadores sao responsáveis por remontar os pacotes, ver possiveis codificacoes como unicode , entre outras tarefas. O Snort possui dezenas deles (por volta de 22 atualmente) como http_inspec, stream5, frag3, dcerpc2, ip_reputation entre outros diversos. Por exemplo se fizermos ums requisicao com \\ ou com os famosos ataques de unicode , ou algo do genero, para tentar “enganar” o ids, esses pre processadores remontam o pacote da maneira correta, para diminuir falso-negativos na hora da comparacao com as assinaturas,e dar mais confiabilidade ao IDS. Falso-negativo – é quando um pacote passa sem ser notificado pelo IDS , o IDS pensaque o pacote é fluxo normal, na minha opinião pior que os falsos-positivos. 

Page 4: Serie Snortando - Introdução Ao Snort

Falso-positivo – é quando o pacote é notificado como intrusivo, mas na verdade ésomente um falso alerta, alarme falso. O grande problema de muito falso positivo é a ferramenta perder a credibilidade, é a velha história do alarme do carro que dispara muito e quando realmente for um furto voce nao vai acreditar que estão levando seu carro .

- Sistema de Deteção / Assinaturas                Aqui é onde entram as regras que compramos, baixamos ou criamos. Nessa parte o payload já estara separado do resto do pacote e normalizado para comparar com as regras. Teremos bastante posts e laboratorios durante a serie na parte de criação de regras mas como citado temos que fazer o payload chegar corretamente ao Engine de Detecção para evitar os falsos-negativos em especial por isso a importancia da configuração de forma correta do snort.

- Plugins de Saída (Output)

        Os plugins de saida sao ferramentas que podem ser utilizadas para gerar alertas, logsou para tomar algumas medidas em imediato. Em resumo esse é o funcinoamento do snort de um modo bem resumido e que iremos explorar de modo bem especifico cada parte durante nossa serie.Esse post é bem introdutório visto que a idéia da seria Snortando é atingir desde usuários que nunca usaram o snort bem como usuário avançados que certamente so aproveitarão mais os posts futuros.

Mais informações existem um post no blog da SegInfo bem mais detalhado que voce podera ler emhttp://www.seginfo.com.br/sistemas-de-deteccao-de-intrusoes-ids-intrusion-detection-systems-usando-unicamente-softwares-open-source/

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Sistemas de Detecção de Intrusões (IDS – Intrusion Detection Systems) usando unicamente softwares Open Source

21 de junho de 2010

« Voltar para as notícias do dia

Page 5: Serie Snortando - Introdução Ao Snort

Por Victor Santos.

Este artigo tem como objetivo apresentar aos iniciantes um estudo introdutório realizado sobre Sistemas de Detecção de Intrusões (IDS – Intrusion Detection Systems) usando unicamente softwares Open Source. Serão abordadas as formas de detecção, tipos de IDS, classificação e no final serão apresentadas as ferramentas Snort e Ossec.

1. Introdução 2. Tipos de Sistemas de Detecção de Intrusão

1. Sistemas de Detecção de Intrusão baseados em Host (HIDS) 2. Sistemas de Detecção de Intrusão baseados em Rede (NIDS) 3. Sistemas de Detecção de Intrusão Híbridos

3. Formas de Detecção 1. Detecção por Assinatura 2. Detecção por Anomalias

4. Modelo de Utilização 1. Modo Passivo 2. Modo Reativo

5. Ferramentas 1. SNORT 2. OSSEC-HIDS

6. Conclusão

Foto: Imagem ilustrativa do treinamento  ”Fortalecimento (Hardening) de Servidores Unix/Linux” porAcademia   Clavis Segurança da Informação , CC-BY-NC-ND.

Introdução

A popularização do computador nas décadas de 80 e 90 fez com que todo o mundo assistisse uma verdadeira “revolução tecnológica”, onde o computador passou a desempenhar um papel fundamental na vida de todos. Grandes empresas utilizando redes financeiras e sistemas de comunicação passaram a depender cada dia mais dos sistemas computacionais e até hoje o avanço da tecnologia vem trazendo inúmeros benefícios e facilidades para toda a sociedade.

Se por um lado essa “revolução” introduziu facilidades, por outro lado ela trouxe também inúmeras ameaças virtuais. A medida que as tecnologias de rede avançam em direção ao futuro e a informação passa a ser o principal ativo de muitas organizações, é necessário a implementação de mecanismos para proteger os dados . A cada dia surgem novas ferramentas automatizadas ou código-fonte de explorações de falhas de sistemas prontos que promovem acesso a servidores de redes, comprometendo sua segurança. Hoje em dia não é mais necessário ter conhecimentos avançados em um determinado sistema operacional ou protocolo para explorar suas vulnerabilidades, basta apenas pesquisar no Google.

Existem diversas ferramentas que contribuem significativamente para melhoria da segurança de uma rede, tais como: a criptografia, que estabelece um nível de proteção para dados, o uso de Firewalls estabelecem uma lógica na entrada e saída da rede controlando o tráfego a nível de pacotes, a VPN que cria um túnel criptografado entre 2 pontos de rede, etc…

Page 6: Serie Snortando - Introdução Ao Snort

Entre elas, o Sistema de Detecção de Intrusão merece um destaque especial, pois engloba o processo de monitorar, identificar e notificar a ocorrência de atividades maliciosas, atividades não-autorizadas que coloquem em risco e tenham como alvo ativos de tecnologia de uma rede de computadores.

Tipos de Sistemas de Detecção de Intrusão

Sistemas de Detecção de Intrusão baseados em Host (HIDS)

Sistemas de Detecção de Intrusão baseados em Host monitora e analisa informações coletadas de um único Host (Máquina). Não observa o tráfego que passa pela rede, seu uso volta-se a verificação de informações relativas aos eventos e registros de logs e sistema de arquivos (permissão, alteração, etc.). São instalados em servidores para alertar e identificar ataques e tentativas de acesso indevido à própria máquina, sendo mais empregados nos casos em que a segurança está focada em informações contidas em um servidor e os usuários não precisam ser monitorados. Também é aplicada em redes onde a velocidade de transmissão é muito alta como em redes “Gigabit Ethernet” ou quando não se confia na segurança corporativa da rede em que o servidor está instalado.

Sistemas de Detecção de Intrusão baseados em Rede (NIDS)

Sistemas de Detecção de Intrusão baseados em Rede monitora e analisa todo o tráfego no segmento da rede. Consiste em um conjunto de sensores que trabalha detectando atividades maliciosas na rede, como ataques baseados em serviço, portscans, etc… São instalados em máquinas responsáveis por identificar ataques direcionados a toda a rede, monitorando o conteúdo dos pacotes ou do tráfego e seus detalhes como informações de cabeçalhos e protocolos. Os NIDS tem como um dos objetivos principais detectar se alguém está tentando entrar no seu sistema ou se algum usuário legítimo está fazendo mau uso do mesmo.

Sistemas de Detecção de Intrusão Híbridos

Sistemas de Detecção de Intrusão Híbridos é utilização dos sistemas baseados em redes e dos sistemas baseados em Host para controlar e monitorar a segurança computacional de um ambiente.

Formas de Detecção

Detecção por Assinatura

A Detecção por assinatura analisa as atividades do sistema procurando por eventos que correspondam a padrões pré-definidos de ataques e outras atividades maliciosas. Estes padrões são conhecidos como assinaturas e geralmente cada assinatura corresponde a um ataque. Uma desvantagem desta técnica de detecção é que ela pode detectar somente ataques conhecidos, ou seja, que estão incluídos no conjunto de assinaturas que o IDS possui, necessitando-se assim de constante atualização diante da rapidez que novos ataques surgem.

Detecção por Anomalias

A detecção por anomalias parte do princípio que os ataques são ações diferentes das atividades normais de sistemas. IDS baseado em anomalias monta um perfil que representa o comportamento rotineiro de um usuário, Host e/ou conexão de rede. Estes IDS’s monitoram a rede e usam várias métricas para determinar quando os dados monitorados estão fora do normal, ou seja, desviando do perfil. Uma desvantagem é a geração de um grande número de alarmes falsos devido ao comportamento imprevisível de usuários e do próprio sistema.

Page 7: Serie Snortando - Introdução Ao Snort

Modelo de Utilização

Modo Passivo

Um IDS passivo quando detecta um tráfego suspeito ou malicioso gera um alerta e envia para o administrador. Não toma nenhum atitude em relação ao ataque em si.

Modo Reativo

Um IDS reativo não só detecta o tráfego suspeito ou malicioso e alerta o administrador, como também possuí ações pré-definidas para responder as ameaça. Normalmente, isso significa bloquear todo o tráfego do IPsuspeito ou do usuário mal-intencionado.

Existem diversos outros tipos de abordagens possíveis para a classificação de um IDS, veja a figura abaixo .

Tipos de Classificação de um IDS

Ferramentas

SNORT

O Snort é um sistema de detecção de intrusão Open Source baseado em redes, capaz de realizar análise de tráfego e captura de pacotes em tempo real em redes que utilizam o protocolo IP. Ele pode analisar protocolos, buscar por conteúdo específico, e pode ainda ser utilizado para detectar uma variedade de ataques e sondas, tais como: buffer overflows, portscans, ataques de CGI, tentativas de identificação de sistema operacional, entre outros. O Snort pode ser utilizado de 3 formas:

Page 8: Serie Snortando - Introdução Ao Snort

Captura de pacotes Analisado de tráfego de rede (Sniffer) Sistema completo de detecção de intrusão em redes.

O Snort faz a sua detecção baseado em assinaturas utilizando uma linguagem flexível de regras para analisar o tráfego coletado. Estas assinaturas/regras são atualizadas diariamente pela sua equipe de desenvolvimento, assim como por entusiastas e voluntários e podem ser obtidas diretamente da Internet, inclusive por processos automatizados.

Além de suas regras, o Snort também trabalha com o chamados de pré-processadores. Estes pré- processadores realizam funções específicas e cruciais para a eficiência do Snort, como, por exemplo, detectar portscans, detectar padrões de ataques mais complexos e mecanismos para remontar sequências de pacotes fragmentados.

A figura abaixo demonstra o processo de captura e análise de tráfego do Snort:

Existem também mecanismos de integração do SNORT com Firewalls, como o SnortSam e o Snort-inline, transformando ele em um modelo de IDS reativo. O SnortSam permite que o SNORT possa interagir diretamente com diversos Firewalls do mercado, desde o básico IPChains/IPTiptables até produtos avançados, como o Cisco Firewall. Já o Snort-inline, é uma opção de compilação do SNORT e permite a alteração da forma como ele trata os pacotes, ao invés de registar e alertar ele faz um “drop” na conexão suspeita.

Trabalhando com um interface de correlação de eventos como o BASE podemos gerenciar a estatísticas de tentativas de intrusão para otimizar os nossos mecanismos de segurança.

OSSEC-HIDS

O OSSEC [4] é um Sistema de Detecção de Intrusão Open Source baseado em Host que possui como desenvolvedor principal o brasileiro Daniel Cid e tem como principais funções:

Análise de Logs

Page 9: Serie Snortando - Introdução Ao Snort

Integridade de Sistemas Detecção de rootkit Alertas e resposta ativa (regras no Firewall ou TCP Wrappers).

Em 2007 foi eleita, pela Linuxworld, a melhor ferramenta de segurança Open Source. Sua fácil instalação, totalmente intuitiva e fácil configuração com arquivo em formato XML, o transforma em uma excelente opção para monitoramento e auditoria de servidores.

Multiplataforma e sob a licença GPLv3, o OSSEC suporta uma vasta gama de logs, tais como: Unix pan, sshd (OpenSSH), Unix telnetd, Samba, Su, Sudo, Proftpd, Pure-ftpd, vsftpd, Solaris ftpd, Imapd and pop3d, Horde imp, Named (bind), Postfix, Sendmail, Iptables firewall, Solais ipfilter firewall, AIX , ipsec/firewall, Netscreen firewall, Snort IDS, Apache web server (access log and error log), IIS web server, Squid proxy, Windows event logs, Generic unix authentiction (adduser, logins, etc).

Ele possui os seguintes modos de atuação:

Local – Monitora e análise somente o Host onde o Ossec está instalado. Servidor – Monitora e a analisa os logs enviados pelos Agentes. Agente – Funciona como cliente e envia todas as informações para o servidor processar e

analisar. Veja a Figura abaixo.

O Ossec pode trabalhar em conjunto com o Snort, transformando o ambiente em um sistema de Detecção Híbrido, pois ele analisa os logs e alertas gerados pelo Snort, e os classifica de acordo com as assinaturas geradas e alerta ao administrador.

Conclusão

Seja para monitorar e analisar atividades suspeitas na rede ou realizar a auditoria na infraestrutura, de acordo com as vulnerabilidades existentes, um sistema de detecção de intrusão se faz fundamental para otimizar os controles de segurança da empresa e entender melhor as tentativas e vetores de ataques que vem surgindo ao longo do tempo. É bom frisar que a utilização de um IDS não atende a todas as necessidade de segurança de uma organização, sendo necessário utilizar outro mecanismo para auxiliar na Proteção de Perímetro.

Para saber mais:

Page 10: Serie Snortando - Introdução Ao Snort

Marcus Silva, Miguel Sampaio, Mário Antunes, Miguel Fraude. Estudo de Sistemas de Detecção de Prevenção de Intrusões – Uma abordagem Open Source (2006)SNORT: http://www.snort.orgSnortSam: http://www.snortsam.netOSSEC: http://www.ossec.net

« Voltar para as notícias do dia

Veja também:Estudo indica janela de tempo média de 2 dias para softwares de segurançaBoletim de Segurança SB10-172 do Departamento de Segurança Nacional dos Estados Unidos lista 179 vulnerabilidades na semana

Tags: detecção, detection, hids, ids, intrusão, intrusion, nids, sistema, snort, system

Posicionamento Sensores / DAQ (Data AcQuisition Library) - Serie Snortando (Parte 2)  Para quem não leu postamos na Parte 1 da Serie Snortando (http://spookerlabs.blogspot.com/2012/01/introducao-ao-snort-serie-snortando.html ) a introdução ao Snort, como ele funciona . A primeira parte para o bom funcionamento do mesmo iniciasse com a aquisicão de dados e é aqui que entra o DAQ ( Data AcQuisition library ).

       O DAQ foi adicionado ao Snort a partir da versão 2.9, ou seja,  é algo relativamente novo. Um dos pontos importantes para melhor aquisição de dados é o posicionamento do seu Sensor e por isso antes de falar do DAQ comentarei o básico de posicionamento de um sensor.

Inicialmente temos que fazer algumas perguntas para visualizar melhor o tráfego:

       1-) O que quero monitorar ?             Essa pergunta parece lógica mas muita gente não sabe o que realmente quer proteger ou monitorar. É de extrema importancia saber o que queremos, um sensor dificilmente conseguira monitar TUDO que voce quer, ou seja,  se não tem opção para multiplos sensores foque no que achar importante (se não sabe exatamente melhor entender mais da sua rede =)  ).

       2-) Qual a vazão da minha rede ?             Outro questionamento importante é o tipo de tráfego que quer monitorar para saber escolher melhor um hardware. Não existe resposta pronta para a famosa pergunta "Uma maquina com X de memoria, N CPUs e Disco Rigido de Y Bytes é suficiente?" . Logicamente em um hardware convencional voce nunca conseguira a performance de appliance dedicados, um snort bem configurado em uma boa máquina e com tuning bem feito dificilmente conseguira monitrar 1 gbps .              Na parte que falaremos do pre-processador de performance ensinaremos como analisar se esta dropando pacotes etc etc =).

       3-) Quais protocolos quero monitorar ?              É muito importante saber os protocolos que passam e são importantes monitorar para

Page 11: Serie Snortando - Introdução Ao Snort

não desperdiçar ciclos do snort com algo que não precisara monitorar ou carregar em memoria regras que não serão utilizadas. Lembre-se que nem sempre quanto mais regras melhor é, isso pode ser totalmente inverso =)

       4-) Quero uma proteção imediata ou somente monitoramento ?             Aqui entra a parte do posicionamento . Existem os dois tipos ou sopinha de letras mais clássico que seriam:

            IDS -Intrusion Detection System  no qual é um sistema passivo recebendo copia do tráfego e fazendo analise. Na pratica se o cara precisa de somente 1 pacote para exploitar uma falha por exemplo esse sistema te alertara mas a maquina já tera sido exploitada. Logicamente voce pode ter uma reação ao ataque com sistemas que monitoram os logs do snort (OSSEC por exemplo) bem como o proprio snort enviar pacotes para encerramento da conexão (entraremos em detalhes em posts futuros na parte de escrita de regras).

 OBS: imagem meramente ilustrativa e simplificada 

            IPS - Intrusion Prevention System no qual é um sistema ativo. Ele fica Inline na rede, dropando os pacotes em tempo real antes dos mesmo chegarem a maquina alvo. A vantagem é que ele protege mais visto que nao deixara o pacote malicioso chegar na maquina porem como esse tipo de sistema tende a gerar falsos-positivos voce podera bloquear muitas conexões validas que pode ser clientes  .

Page 12: Serie Snortando - Introdução Ao Snort

OBS: imagem meramente ilustrativa e simplificada   

       5-) Meus equipamentos atuais me possibilitam fazer o que quero ?             Existem alguns meios de se copiar o tráfego da rede para o seu sensor nos quais os mais conhecidos:

             - Sensor Inline               Inline não quer dizer que voce está bloqueando o tráfego, voce pode colocar a maquina inline na sua rede mas usá-la no modo passivo (IDS). Um exemplo simples seria uma maquina com duas placas de rede em bridge com o snort monitorando as interfaces. Veja a imagem do IPS acima, o posicionamento seria igual porém sem interferir no tráfego.

             - Port Mirroring (Espelhamento de Portas) Switch               Nem todo switch tem essa opção mas a grande maioria tem que nada mais é que copiar o tráfego de todas as portas para uma porta de espelhamento no qual voce plugara seu sensor. Eu não sou um grande fã de utilizar esse tipo de solução visto que muitas vezes ela sobrecarrega a CPU do switch bem como essa função é "desabilitada" quando o switch tambem fica com alto consumo de CPU por algum motivo. 

Page 13: Serie Snortando - Introdução Ao Snort

               Como podem ver na imagem de forma BEM resumida todo o tráfego é replicado para a porta espelhada (no caso porta 1 da imagem - fonte: http://www.planex.net ). 

             - Network TAP               Pra mim é a melhor solução quando vamos implementar um sensor. Existem dezenas de tipos de Netwrok Tap bem como varios preços. Os mais simples apenas copiam o tráfego (vide imagem ) até soluções mais avançadas que voce já filtra o que quer enviar para as portas monitoradas ou com diversas portas onde voce pode colocar outros devices que precisam da copia do tráfego. Abaixo uma imagem para ilustrar o que seria um TAP (retirado do site da barracuda, imagem simples e facil entendimento). Um bom site com vários modelos e que totalmente recomendo ( http://netoptics.com/ )

                   6-) Quantos sensores terei na rede ?             Como citado antes é importante saber qual será seu budget pois voce TEM que saber FOCAR nas proteções que atendam sua necessidade e não por um sensor para ser uma maquina de gerar alertas e achar que como gera alertas é a oitava maravilha do mundo . Planejamento mesmo que for iniciar com um só mas se pretende aumentar é essencial. Pense tambem num gerenciamento centralizado dos alertas, onde estará sua base de dados (e como ira protege-la tambem) . Outro ponto é performance, lembre que se sua rede tem uma vazão muito grande talvez para um unico segmento tera que colocar mais de 1 sensor com diferentes regras.

       Em resumo pense nas questões acimas e muitas outras coisas que pode ser importante antes de instalar seu snort ou mesmo comprar um appliance de alguns milhares de dolares =).

O DAQ, como ele funciona ?

Page 14: Serie Snortando - Introdução Ao Snort

        O DAQ foi adicionado no snort 2.9 . Uma das grandes vantagens é a facilidade de migrar seu sensor de modo passivo (IDS) para modo ativo/intrusivo (IPS) sem a necessidade de recompilar o snort como se havia antes. Para utilizá-lo voce deve instalar o tarball do mesmo .               O pessoal do VRT fez um ótimo post dando alguns detalhes de como funciona, como instalar e configurar o mesmo no seu blog  ( http://vrt-blog.snort.org/2010/08/snort-29-essentials-daq.html ) e não vejo necessidade de reinventar a roda e escrever o que  já está lá. Caso tenha alguma dúvida fique a vontade para postar nos comentários =)

        O que vale frisar que o DAQ sendo uma evolução de aquisição de pacotes de nada terá proveito se o posicionamento do sensor for erroneo.

        Mais informações leia o README.daq dentro do docs/ do tarball do snort.

        Até a parte 3 que virá provavelmente após o Carnaval (Se o Carnaval não estiver dos melhores durante o carnaval eu faço e publico hehehe)

         Dúvidas, sugestões , criticas e elogios podem usar os comentários =)!

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Entendendo básico do snort.conf - Serie Snortando (Parte 3)O snort.conf é o principal e praticamente o único arquivo de configuração do snort. Nele configuramos variáveis, diretivas, decoders, preprocessadores, plugins de saida entre outras coisas.

É de suma importancia saber o que esta fazendo quando se edita o snort.conf para não modificar algo erroneamente e comprometer todo o funcionamento do mesmo. Lembre-se que modificar erronenamente não propriamente quer dizer que o snort não iniciara e sim não carregara partes importantes.

No arquivo snort.conf existe até um passo a passo de onde e o que modificar (está em inglês e usarei traduzido pra pt_BR) :

Original no snort.conf

#################################################### This file contains a sample snort configuration. # You should take the following steps to create your own custom configuration:## 1) Set the network variables.# 2) Configure the decoder# 3) Configure the base detection engine# 4) Configure dynamic loaded libraries

Page 15: Serie Snortando - Introdução Ao Snort

# 5) Configure preprocessors# 6) Configure output plugins# 7) Customize your rule set# 8) Customize preprocessor and decoder rule set# 9) Customize shared object rule set################################################### 

Então vamos por partes:

1-) Configure suas variáveis2-) Configure o decoder3-) Configure o engine de detecção4-) Configure as bibliotecas dinamicas5-) Configure os pre-processadores6-) Configure os plugins de saida7-) Customize suas regras8-) Customize seu preprocessador e decoder9-) Customize as Shared Object Rules

Muitas opções aqui terão mais sentido no final da serie no qual farei outro post dai mais completo e com dicas mas nesse post inicial focarei no passo 1 - Configure suas variáveise abordarei sobre a diretiva config .

Existem 3 tipos de variáveis:

- var- portvar- ipvar

Alguns exemplos:

var RULES_PATH /etc/snort/rules/portvar MY_PORTS [22,80,1024:2000]portvar SSH [22]ipvar REDE_INTERNA [192.168.200.0/24,192.168.100.1]

Essas variaveis são utilizadas em regras, preprocessadores não fazem o uso das mesmas. Exemplo básico :

alert tcp any any -> $REDE_INTERNA $MY_PORTS (flags:S; msg:"Pacote com SYN";) 

Alem de declarar os IPs ou CIDR na variável voce pode adicionar uma negação. Vamos pensar que voce quer monitorar todas as maquinas da rede 10.0.0.0/24 porém não a maquina 10.0.0.10 que é um scanner na rede.

ipvar MINHA_VARIAVEL [10.0.0.0/24,![10.0.0.10]]

A utilizacão da variável será igual a uma variavel simples .

Variaveis de porta (port) também podem usar a negação bem como  um port range

Page 16: Serie Snortando - Introdução Ao Snort

portvar TESTE [!80]portvar RANGE_SERVIDORES [3000:4000]

Na variavel RANGE_SERVIDORES ele vai monitorar portas 3000 até a 4000 .

A diretiva config não entrarei em detalhes aqui mas elas são bem importantes para voce ajustar suas configurações. Voce pode chamar o parametro via linha de comando quando for iniciar o snort bem como utiliza-las no snort.conf . No total temos mais de 60 diretivas que podem ser configuradas , abaxio alguns exemplos retirados do manual em pdf do snort. Um config bem importante de entender e adicionarei na lista de posts, talvez até o próximo é o config detection no qual voce pode melhorar muito consumo de memoria por exemplo.

Outro parametro no snort.conf que utilizamos bastante é o include no qual resumidamente

Page 17: Serie Snortando - Introdução Ao Snort

falando voce podera incluir config de forma simples num arquivo diferente do snort.conf . Alguns includes presentes por padrão :

include classification.configinclude reference.config

Não se esqueça que quando atualizar seu engine sempre temos um novo snort.conf padrão que voce deve adicioná-lo e modifica-lo com as suas configurações pois muitas vezes são pre-processadores novos, variáveis que são utilizadas pelo VRT na criação de regras.

Caso queira acompanhar os arquivos de configurações mais atuais sugiro acompanharhttp://www.snort.org/vrt/snort-conf-configurations/   .

É mandatorio saber utilizar e modificar o snort.conf por isso sempre leia ele, a documentação, configurações que possue pois isso certamente aumentara a qualidade do seu sensor instalado. 

Desculpe do atraso mas infelizmente trabalho primeiro =)

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Detectando Trojans bancários brasileiros utilizando o snort http_inspect

Page 18: Serie Snortando - Introdução Ao Snort

Introdução aos decoders - Serie Snortando (Parte 4)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 :

TCPUDPIPv4IPv6 MPLSGRE 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 optionsconfig disable_tcpopt_experimental_alerts

# Stop Alerts on obsolete TCP optionsconfig disable_tcpopt_obsolete_alerts

# Stop Alerts on T/TCP alertsconfig disable_tcpopt_ttcp_alerts

# Stop Alerts on all other TCPOption type events:config disable_tcpopt_alerts

Page 19: Serie Snortando - Introdução Ao Snort

# Stop Alerts on invalid ip optionsconfig 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 modeconfig 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; )

Page 20: Serie Snortando - Introdução Ao Snort

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

Frag3 Preprocessor - Serie Snortando (Parte 5)Bom, como sabemos o pacote passa por diversos caminhos até chegar ao seu destino final. Durante esse caminho os "pacotes" podem ser quebrados em partes menores na camada 3 (IP) devido ao MTU. Quando isso acontece chamamos de fragmentação IP.

Primeiramente o que seria o MTU ?

MTU é a sopinha de letras para Maximum Transmission Unit que resumidamente seria o tamanho máximo em bytes do payload. Existem diferente valores de MTU dependendo da tecnologia utilizada (ver figura abaixo) mas para Ethernet o padrão é 1500 bytes onde. Um simples exemplo para ver o MTU da sua máquina (no meu caso Mac) seria com o ifconfig:

$ ifconfig en1

en1: flags=8863 mtu 1500    ether 00:26:bb:11:88:0d     inet6 fe80::226:bbff:fe11:880d%en1 prefixlen 64 scopeid 0x6     inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255    media: autoselect    status: active

Page 21: Serie Snortando - Introdução Ao Snort

 

No caso existe a fragmentação necessaria visto algum MTU menor no caminho e também existe a malicioso no qual o atacante já envia os pacotes fragmentados tentando bypassar a proteção. Bem resumidamente teriamos:

1-) Host A envia seu trafego para maquina Host B que está em outra rede2-) Máquina Host A vai montando o pacote da camada 7 para baixo até chegar a camada fisica3-) O pacote então é enviado para o roteador default configurado no Host A caso não esteja na mesma rede .4-) Esse roteador default possui outras rotas e cada roteador abre o pacote até a camada 3 para ver opções IP assim como o endereço destino5-) Quando o "pacote" sai da minha máquina ele sai com um tamanho X que é o MTU no qual caso ele seja menor no caminho o pacote precisara ser fragmentado (Comparando com algo do dia a dia seria como um encanamento onde a água sairia de um cano maior e entraria num menor). 6-) O "pacote" quando fragmentado é divido em partes menores e todos chegarão na maquina Host B com uma sequencia para que possam ser remontados.

A questão em jogo é que o seu snort (NIDS) estará no meio desse tráfego, se o mesmo não remontar o "pacote" fragmentado, ele não conseguira ver o real conteúdo que esta sendo tráfegado nas camadas superiores e NUNCA irá conseguir fazer o match com algum regra visto que so terá um pedaço da informação. Por isso existe o preprocessador FRAG3.

Para melhor entender o que é fragmentação devemos primeiramente entender o cabeçalho IP . Nesse artigo falaremos apenas sobre IPv4.

Page 22: Serie Snortando - Introdução Ao Snort

Não entrarei em detalhes do cabeçalho inteiro aqui mas o que é importante para nos serão os campos: IP Flags e Fragment Offset .

Na parte de IP Flags

- D não fragmentado- M mais fragmentos

No caso se a flag D estiver setada quer dizer que o pacote está fragmentado e no caso M indicara se é o ultimo ou se mais fragmentos estão por vir

O Fragment Offset é onde fica setado a ordem dos pacotes e onde ele se encaixara na remontagem falando de forma bem simples. Com base nisso existem o Overlapping do fragmento quando 2 gramentos diferentes chegam com o mesmo offset .

Se analisarmos no wireshark veremos que normalmente os pacotes não são fragmentados (muitos são parte de uma remontagem que acontece na camada TCP e falaremos no post do Stream5) como podemos observar no exemplo abaixo:

Page 23: Serie Snortando - Introdução Ao Snort

Após explicarmos como funciona a fragmentação da para se  entender a importancia do preprocessador frag3 onde podemos listar:

- Evitar evasions (veja exemplos abaixo)

a-) Nesse primeiro exemplo o atacante aproveitaria que o timeout do IDS é menor que do computador da vitima fazendo com que o IDS drop o "pacote" enquanto a maquina vitima aguardara o segundo fragmento.

b-) No exemplo abaixo atacante aproveita da diferença de timeout entre o sensor de IDS e o host atrás do mesmo sendo que ele engana a remontagem enviando "pacotes" com timeout preparados para isso onde o IDS remontara errado e a vitima recebera o ataque.

Page 24: Serie Snortando - Introdução Ao Snort

c-) Como citado existem o Overlapping que seria quando dois fragmentos chegam com o mesmo offset no qual alguns sistemas remontam o "pacote" com o segundo que chegar .

Existem outros ataques mas vou ilustrar apenas esses 3 =)! 

* Imagens retiradas desse artigo que diga-se de passagem muito bom em Ingles -http://www.symantec.com/connect/articles/evading-nids-revisited

- Policy based, ou seja, cada sistema operacional remonta esses pacotes em uma ordem. Sugiro lerem o paper no site do Snort onde Judy Novak explicou seus estudos para criação desse preprocessador . Abaixo diferente sistemas operacionais versus a policy a ser utilizada

Page 25: Serie Snortando - Introdução Ao Snort
Page 26: Serie Snortando - Introdução Ao Snort

Alguns exempos de configuração do frag3:

preprocessor frag3_global: prealloc_memcap 8192 preprocessor frag3_engine: policy linux, bind_to 192.168.1.0/24 preprocessor frag3_engine: policy first, bind_to [10.1.47.0/24,172.16.8.0/24] preprocessor frag3_engine: policy last, detect_anomalies

No exemplo acima usaremos um memoria de 8mb prealocada o que fará o preprocessador mais veloz. Na segunda linux vamos usar a policy linux para a rede 192. Na terceira linha a policy first para as redes 10 e 172. Na ultima linha o que não fizer bind nas redes acima será considerado policy last. No caso vale lembra da opcão detect_anomalies onde com regras de preprocessor ele detectara algumas anomalias de fragmentação.

Mais info sobre frag3 no manual do snorthttp://manual.snort.org/node17.html#SECTION00321000000000000000

* Vale a dica que caso não conheça todas as maquinas utilize a policy que possui maior numero de SO instalados . O ideal seria setar tudo corretamente mas isso leva tempo.

Agora edit seu snort.conf e faça as devidas configurações =)!

Espero que tenha ajudado!

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Introdução Pre-Processadores - Serie Snortando (Parte 6)Depois de algum tempo sumido estamos de volta com a Série Snortando. Caso não tenha visto os post anteriores e a Agenda basta acessa aqui: http://spookerlabs.blogspot.com.br/2012/01/agenda-da-serie-snortando.html

Como comentamos anteriormente o Snort possui um ciclo, no qual o quanto mais rápido o pacote for analisado ou retirado do ciclo melhor a performance. Basicamente temos:

Aquisição do tráfego (DAQ) -> Decoders -> Pré-Processadores -> Engine de Detecção (Assinaturas/Regras) -> Plugins de Saída

Os pré-processadores tem um papel MUITO importante nesse ciclo de detecção e é de suma importância entende-los. Alguma das funções que podemos salientar:

- Remontagem pacotes IP fragmentados (frag3)- Reassemble protocolo TCP (stream5)- Normalização de encodes HTTP (http_inspect)- Javascript (http_inspect)

Page 27: Serie Snortando - Introdução Ao Snort

- Analise de performance (perfmonitor)- Normalização de tráfego de e-mail (SMTP / POP e IMAP)- Normalização tráfego SMB/Netbios (DCERPC2) - Arp Spoofing (arpspoof)- Lista de Reputação IP (ip_reputation)- Detecção dados confidenciais (sensitive_data)

No total o snort possui por volta de 22 pre-processadores que tem o trabalho de repassar os dados o mais normalizado e "original" possivel para o sistema de deteção possa fazer seu trabalhando, mitigando os falsos-negativos, vulgo, bypass.

Como citei na agenda falaremos em especifico da maioria dos pre-processadores visto a grande importancia dos mesmo. O interessante que o pre-processador pode remover os dados do ciclo ganhando assim tempo visto que isso dara oportunidade para analisar outro pacote.

Algo que é de suma importancia para a configuração correta dos mesmo é entender como os protocolos funcionam, pois sem isso fica dificil configura-los de forma correta. Também temos as pre-proc rules que serão comentadas no próximo blogpost no qual cobrirei esse assunto.

Em resumo os pre-processadores são a parte mais importante do Snort, muito mais que as assinaturas pois se a normalização não acontecer de forma correta de nada adiantara as regras.

Lembrando que ministrarei treinamento completo EaD no próximo mes (Agosto/2012) -http://spookerlabs.blogspot.com.br/2012/06/treinamento-snort-completo-ensino.html

Happy Snorting!

Rodrigo "Sp0oKeR" Montoro

Page 28: Serie Snortando - Introdução Ao Snort