Ossec – Entendendo o Syscheck – HIDS parte 5

Fala pessoal! Dando continuidade a nossa série de posts sobre o ossec; vamos ver mais uma funcionalidade que ele nos oferece, o Syscheck. O Syscheck é o nome do processo de verificação de integridade dentro do OSSEC. Ele é executado periodicamente para verificar se algum arquivo (ou entrada de registro no Windows) mudou.

Existem vários tipos e vetores de ataque; mas há uma coisa única em todos eles, eles deixam vestígios e sempre alteram o sistema de alguma forma. De vírus que modificam alguns arquivos, até os rootkits do tipo kernel-land que alteram o kernel, sempre há alguma alteração na integridade do sistema.

A verificação de integridade é uma parte essencial da detecção de intrusão que detecta mudanças na integridade do sistema. O OSSEC faz isso procurando alterações nos checksums MD5/SHA1 de arquivos chave no sistema e/ou no registro do Windows.

Ele funciona da seguinte maneira, o agente verifica o sistema dentro de um intervalo de tempo pré-definido e envia todos os checksums para o servidor. O servidor armazena os checksums e verifica se houveram modificações nos arquivos, caso positivo um alerta é enviado.

Por padrão ele roda a cada 6 horas e sua base de dados fica armazenada em “/var/ossec/queue/syscheck”. Além de todas essas funcionalidades, ele ainda ajuda no processo de certificação PCI DSS, especificamente com as sessões 10.5 e 11.5. A checagem dos arquivos é feita lentamente para evitar sobrecarga de CPU e memória. Todas as configurações necessárias (inclusão e exclusão de diretórios) podem ser realizadas pelo ossec.conf ou agent.conf.

Configurações

Essas opções de configuração podem ser especificadas no arquivo ossec.conf de cada agente ou no agent.conf do servidor, com exceção do arquivo auto_ignore e alert_new que se aplica às instalações locais e manager. A opção de ignorar irá se aplicar a todos os agentes caso seja especificado no manager.

directories

Use essa opção para adicionar e remover diretórios a serem monitorados (eles devem ser separados por vírgula). Todos os arquivos e sub-diretórios também serão monitorados. Unidades de disco sem diretórios não serão validadas, deve haver no mínimo um ponto ‘.’ (D:\.)

Atributos:

realtime: Value=yes

Isso permitirá o monitoramento em tempo real no Linux (usando as chamadas do sistema inotify) e sistemas Windows.

report_changes: Value=yes

Relata diffs de alterações de arquivos. É limitado aos arquivos de texto.

check_all: Value=yes

Todas as seguintes opções de check_ * são usadas em conjunto, a menos que uma opção específica seja explicitamente substituída por “no”.

check_sum: Value=yes

Verifique se os mapeamentos md5 e sha1 dos arquivos serão verificados. Isso é o mesmo que usar ambos check_sha1sum = “yes” e check_md5sum = “yes”

check_sha1sum: Value=yes

Quando usado apenas o hash sha1 dos arquivos será verificado.

check_md5sum: Value=yes

Quando usado apenas o hash MD5 dos arquivos será verificado.

check_size: Value=yes

O tamanho dos arquivos será verificado.

check_owner: Value=yes

Verifique o proprietário dos arquivos selecionados.

check_group: Value=yes

Verifique o grupo proprietário dos arquivos/diretórios selecionados.

check_perm: Value=yes

Verifique a permissão UNIX dos arquivos/diretórios selecionados. No Windows, só irá verificar as permissões POSIX.

ignore

Lista de arquivos ou diretórios a serem ignorados (uma entrada por elemento). Os arquivos e diretórios ainda são verificados, mas os resultados são ignorados.

frenquency

Frequência que o SysCheck vai ser executado (em segundos). O padrão é 6 horas ou 21600 segundos

scan_time

Tempo para executar as varreduras (pode estar nos formatos de 21pm, 8:30, 12am, etc).

scan_day

Dia da semana para executar as varreduras (pode ser no formato de domingo, sábado, segunda-feira, etc.)

alert_new_files

Especifica se o syscheck deve alertar sobre novos arquivos criados.

windows_registry

Use esta opção para adicionar entradas de registro do Windows a serem monitoradas.

registry_ignore

Lista de entradas de registro a serem ignoradas.

Exemplos de configuração
<syscheck>
    <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>
</syscheck> 
<syscheck>
    <ignore>/etc/random-seed</ignore>
    <ignore>/root/dir</ignore>
    <ignore type="sregex">.log$|.tmp</ignore>
</syscheck>

O binário que nos permite trabalhar com o syscheck é o syscheck_control, ele está localizado na pasta bin do ossec, com ele podemos atualizar a base de dados dos agentes, lista arquivos e registros modificados e visualizar as modificações realizadas:

# /var/ossec/bin/syscheck_control

No nosso laboratório eu deixei o agent.conf da seguinte maneira:

<agent_config name="Agent_Linux"> 
    <syscheck> 
        <directories realtime="yes" check_all="yes">/var/laboratorio</directories> 
        <ignore>/var/laboratorio/trabalhos</ignore> 
    </syscheck> 
</agent_config>

Perceba que no agente “Agent_Linux” eu configurei o diretório “/var/laboratorio” em real time e criei uma exclusão com o diretório “/var/laboratorio/trabalhos”, o que significa que tudo que for alterado no diretório “laboratorio” será alertado, com exceção do diretório “trabalhos”.

No arquivo de logs de alertas do servidor podemos ver o alerta de modificação no agente “Agent_Linux”:

** Alert 1498658780.154225: mail - ossec,syscheck, 
2017 Jun 28 11:06:20 (Agent_Linux) any->syscheck 
Rule: 550 (level 7) -> 'Integrity checksum changed.' 
Integrity checksum changed for: '/var/laboratorio/aula1' 
Size changed from '0' to '6' 
Old md5sum was: 'd41d8cd98f00b204e9800998ecf8427e' 
New md5sum is : '1ca308df6cdb0a8bf40d59be2a17eac1' 
Old sha1sum was: 'da39a3ee5e6b4b0d3255bfef95601890afd80709' 
New sha1sum is : '9dc628289966d144c1a5fa20dd60b1ca1b9de6ed'

Vamos ver um exemplo de configuração no Windows agora, quando se fala de Windows eu particularmente prefiro realizar as configurações do syscheck diretamente no ossec.conf dos agentes, como não é uma coisa que iremos ficar alterando toda hora, não tem muito problema. Eu prefiro fazer assim por que as vezes rola erro de sincronização do agent.conf com o Windows e pra evitar dores de cabeça assim fica mais fácil 🙂

No diretório “C:\Program Files (x86)\ossec-agent” edite o arquivo ossec.conf, entre as chaves <syscheck> insira as linhas abaixo:

<directories realtime="yes" check_all="yes">C:\laboratorio</directories>
 <ignore>C:\laboratorio/lixo</ignore>
 <windows_registry>HKEY_LOCAL_MACHINE\Software\guiadoti</windows_registry>

Essas regras vão monitorar as alterações em tempo real do diretório “C:\laboratorio” com exceção do “C:\laboratorio/lixo”, além disso ele irá monitorar o registro “guiadoti” que eu criei para o nosso teste, depois disso é só reiniciar o agent e pronto. Qualquer alteração será notificada como podemos ver no exemplo abaixo:

** Alert 1499412881.4544: mail - ossec,syscheck,
2017 Jul 07 04:34:41 (win_2012) any->syscheck
Rule: 550 (level 7) -> 'Integrity checksum changed.'
Integrity checksum changed for: 'C:\laboratorio/aula1.txt'
Size changed from '20' to '26'
Old md5sum was: '03aed8f36d207dc7461a3e2b0f41ad2c'
New md5sum is : 'f5a1230237ebea3094debda4a91fd6da'
Old sha1sum was: '2a95cb1654aaf60d7728d3e7a5f9b0fa42e51421'
New sha1sum is : 'bf371fb18b067ae8c66adef3ccb96e3d0ed4e8c0'

Bem pessoal é isso ai, espero que tenham curtido. Em breve irei postar outros artigos sobre o Ossec mostrando configurações mais avançadas. Não esqueçam de curtir nossas páginas nas redes sociais, FacebookG+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.

 

Ricardo Galossi
Siga me

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão.Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.
Ricardo Galossi
Siga me

Últimos posts por Ricardo Galossi (exibir todos)

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão. Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.

Deixe seu comentário