
dawg the hallway monitor - monitorar mudanças no sistema operacional e analisar a superfície de ataque introduzida ao instalar software
dawgmon - Dawg, o Monitor do Corredor
RESUMO
O nome desta ferramenta é baseado em um episódio (temporada 10, episódio 10) de South Park no qual Cartman é o Dawg, o Monitor do Corredor, patrulhando os corredores de sua escola. É uma ferramenta que ajuda a monitorar mudanças que ocorreram em um sistema baseado em Linux desde a última vez que a ferramenta foi executada.
Uma maneira de usá-la é utilizando algo como o cronjob de exemplo incluído para executar dawgmon em intervalos regulares e enviar os resultados por e-mail para o administrador do sistema. Isso pode ajudar a identificar máquinas nas quais coisas nefastas estão acontecendo e monitorar quem está instalando o quê e onde. Por favor, observe que qualquer backdoor sério do kernel será capaz de se esconder facilmente desta ferramenta e, portanto, é apenas mais uma ferramenta no seu kit, mas não deve ser confiável para monitoramento completo de segurança de máquinas Linux. É apenas uma opção extra na sua caixa de ferramentas.
A outra forma em que é útil é gerando uma linha de base antes de instalar um software. Depois de instalar esse software, executa-se a ferramenta novamente e então é fácil ver quais mudanças foram feitas no sistema. Um exemplo após estabelecer uma linha de base e então instalar o virtualbox em uma máquina pode produzir algo como isto:
1 change detected (0 warnings)
[...]
33 changes detected (0 warnings)
O exemplo acima ajuda agora a fazer uma revisão de segurança completa do virtualbox. Os binários suid instalados são pontos de entrada óbvios e os serviços em execução são interessantes.
Outro exemplo de execução que detecta corretamente a abertura e fechamento de portas TCP:
0 changes detected (0 warnings)
[1] 12489
1 change detected (0 warnings)
nc -l -p 4455 ^C
1 change detected (0 warnings)
A ferramenta não foi projetada para precisão absoluta. Existem recomendações
muito sérias normalmente para não confiar na saída de utilitários do GNU coreutils como ls
como entrada da ferramenta. Em outras palavras; raramente se deve construir ferramentas para analisar e confiar
neste tipo de saída, pois ela pode mudar o tempo todo. Realisticamente, a saída
dessas ferramentas é relativamente estável, já que muitas pessoas e ferramentas automáticas
já confiam em suas saídas para todos os tipos de propósitos.
No entanto, o tradeoff para o dawgmon é o seguinte; precisaríamos implementar muita lógica para fazer monitoramento do sistema de arquivos por conta própria, construir binários complexos que incluam bibliotecas para fazer a análise e monitoramento de dispositivos de bloco, interfaces de rede e muito mais. Isso também tornaria a ferramenta muito mais complexa e menos sustentável. Em projetos atuais, pode-se adicionar um novo comando incluindo detecção de mudanças em muito pouco tempo, pois a ferramenta principal dawgmon já cuida do cache, execução do comando e, em seguida, fornecimento da saída anterior e atual ao executar uma comparação com uma implementação de comando. Isso significa que em projetos com restrições de tempo, pode-se adicionar rapidamente um novo comando e executar análises incluindo esses novos comandos.
Um comando pode ser adicionado simplesmente herdando da classe Command. Esta classe está definida em commands/init.py. Esse arquivo contém também a lista mestre de comandos (e a ordem em que são executados ao fazer uma análise completa). Em seguida, as propriedades como 'name', 'shell', 'command' e 'desc' terão que ser definidas e dois métodos 'parse()' e 'compare()' terão que ser implementados. Comandos suficientes estão incluídos para ter uma boa ideia de como implementar e adicionar novos.
USO
Para melhores resultados, execute a ferramenta como root. Para ajuda, digite -h/--help e para informações de versão, digite -v/--version.
Uma ação principal sempre terá que ser especificada. Essas ações são: -A: analisar o sistema -C: comparar entradas de cache -E: listar comandos disponíveis -L: listar entradas de cache
dawgmon -A
dawgmon -A -e list_suids -e list_tcpudp_ports
dawgmon -E
dawgmon -L
dawgmon -C 3 5
Opções adicionais para ajudar na análise são:
-d: mostrar saída de depuração -e: executar um comando específico (pode ser usado várias vezes) -f: forçar a execução sem avisar sobre execução como root -g: colorir a saída -l: localização do banco de dados de cache a ser usado -m: quantidade máxima de entradas de cache permitidas no cache (se o cache tiver mais entradas do que essa quantidade, truncará o banco de dados) -t: não exibir informações de timestamp por anomalia detectada.
Para mais informações de uso, execute a ferramenta com -h.
LIMITAÇÕES