O
Snort é um aplicativo que habilita a placa de rede do computador onde foi configurado, para modo promíscuo, ou seja, permite que todos os pacotes que trafegam pelo segmento de rede daquela máquina sejam capturados.
Através de regras que são as assinaturas conhecidas dos ataques, é possível descobrir uma variedade de ataques e sondagens, como buffer overflow , port scans, ataques CGI (Common Gateway Interface), verificação de SMB (Server Message Block).O Snort com capacidade de alerta em tempo real, pode enviar os alertas a um arquivo de alerta individual ou a um meio externo como o WinPopUp (utilitário responsável por mandar mensagens de uma máquina para outra em uma rede).
A engenharia de detecção é programada usando um idioma simples que descreve a programação de testes de pacote e ações. A facilidade de uso simplifica e agiliza o desenvolvimento de regras de descoberta de novos ataques. A arquitetura do Snort enfoca o desempenho, simplicidade e flexibilidade. Há três subsistemas primários que o compõem:
- Decodificador de pacote;
- Engenharia de Detecção;
- Subsistema de login e alerta.
Estes subsistemas são desenvolvidos sobre a biblioteca Libpcap. Esta biblioteca oferece uma API (Aplication Program Interface) independente do sistema operacional que permite as aplicações capturarem pacotes de uma rede para gravá-los em um arquivo, e também ler arquivos contendo capturas gravadas. A configuração do programa, analise do arquivo de regras e geração dos dados estruturados acontece antes da seção de captura ser inicializada.
O decodificador de pacotes
A arquitetura de decodificação é organizada ao redor das camadas da pilha protocolar presentes e suportadas pelo protocolo TCP/IP. Estas rotinas de decodificação são chamadas ordenadamente pela pilha protocolar, do nível de dados, subindo para o nível de transporte terminando finalmente no nível de aplicação.
A velocidade é enfatizada, e a maioria das funcionalidades do decodificador consistem na colocação de ponteiros nos pacotes de dados, para mais tarde serem analisados pela arquitetura de detecção. A ferramenta Snort provê capacidades para decodificar pacotes em redes Ethernet, SLIP (Serial Line Internet Protocol), PPP (Point to Point Protocol), sendo que o suporte a ATM (Asynchronous Transfer Mode) está sendo desenvolvido.
A arquitetura de detecção
A ferramenta Snort mantém suas regras de descoberta de intrusão em duas listas denominadas Chain Headers (Cabeçalho da Regra) e Chain Options (Cabeçalho de Opções). Chain Headers contém os atributos comuns de uma regra, e Chain Options armazena os padrões de ataque que serão pesquisados dentro dos pacotes capturados e as ações que serão tomadas caso um ataque seja diagnosticado.
Arquitetura de armazenamento de regras
A arquitetura de armazenamento de regras é examinada pela arquitetura de detecção de forma recursiva, para cada pacote de dados capturado.
Quando o cabeçalho da regra for idêntico ao cabeçalho do pacote capturado, os dados contidos no pacote são comparados com o cabeçalho das opções da regra. Se a ocorrência de um ataque for identificada, uma ação especifica definida na regra é disparada.
Uma revisão da arquitetura de descoberta está atualmente em planejamento e em fase de desenvolvimento. A próxima versão da arquitetura incluirá a capacidade para que os usuários possam escrever e distribuir módulos compatíveis com as palavras chaves da linguagem da arquitetura de detecção. Isto permitirá a customização do programa para situações específicas.
O subsistema de login/alerta
O subsistema de login e alerta é selecionado em tempo real com comandos condicionais de interrupção. Há atualmente três opções de login e cinco de alerta As opções de login podem ser fixadas para armazenar pacotes decodificados, em formato legível para o ser humano.
O formato decodificado de login permite análise rápida de dados armazenados pelo sistema. Os login podem ser deixados parcialmente incompletos para agilizar a performance. O administrador pode ser avisado de novos alertas através do envio de mensagem ao syslog (programa responsável por gerar e armazenar logs no
Linux/Unix) ou armazenar em um arquivo texto que pode ser utilizado em multi-plataformas.
Existem três opções disponíveis para criação de arquivos de alerta. A primeira opção possibilita a criação de um arquivo texto com informações completas do alerta, registrando a mensagem de alerta e a informação de cabeçalho de pacote fornecido pelo protocolo do nível de transporte. A segunda opção cria um arquivo que registra um subconjunto condensado de informações, permitindo maior desempenho que a primeira opção. A última opção é utilizada para desconsiderar alertas e é extremamente útil quando os registros são desnecessários ou impróprios. Esta situação ocorre quando a rede está passando por testes de penetração.
Referência:
http://www.snort.com.br/arquiteturasnort.asp