Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
dawgmon — dawg the hallway monitor - monitorar mudanças no sistema operacional e analisar a superfície de ataque introduzida ao instalar software | Kitploit
Ferramentas/GitHubGitHub/anvilsecure/dawgmon
Ferramentas DefensivasAnálise de VulnerabilidadesAuditoria de ConfiguraçãoResposta a Incidentes
GitHubanvilsecure/dawgmon

dawgmon

dawg the hallway monitor - monitorar mudanças no sistema operacional e analisar a superfície de ataque introduzida ao instalar software

Ver Repositório
55849há 6 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Site
Compartilhar

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:

./dawgmon -gfA

1 change detected (0 warnings)

  • systemd property NNames changed from 259 to 261

apt install virtualbox-5.1

[...]

./dawgmon -gfA

33 changes detected (0 warnings)

  • size of file /etc/group changed from 937 to 954
  • file /etc/group got modified on 2017-09-14 19:29:51.804811 +0200
  • size of file /etc/group- changed from 934 to 937
  • file /etc/group- got modified on 2017-09-14 19:29:14.000000 +0200
  • file /etc/gshadow got modified on 2017-09-14 19:29:51.812811 +0200
  • size of file /etc/gshadow- changed from 777 to 794
  • size of file /etc/mailcap changed from 40777 to 41063
  • file /etc/mailcap got modified on 2017-09-14 19:29:51.632812 +0200
  • file /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=49)
  • file /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=51)
  • file /etc/systemd/system/multi-user.target.wants/vboxdrv.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=35)
  • file /etc/systemd/system/multi-user.target.wants/vboxweb-service.service got created (owner=root, group=root, perm=lrwxrwxrwx, size=43)
  • file /etc/udev/rules.d/60-vboxdrv.rules got created (owner=root, group=root, perm=-rw-r--r--, size=747)
  • group vboxusers added
  • package virtualbox-5.1 is to be installed
  • suid binary /usr/lib/virtualbox/VBoxHeadless got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
  • suid binary /usr/lib/virtualbox/VBoxNetAdpCtl got created (owner=root, group=root, perm=-r-s--x--x, size=23144)
  • suid binary /usr/lib/virtualbox/VBoxNetDHCP got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
  • suid binary /usr/lib/virtualbox/VBoxNetNAT got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
  • suid binary /usr/lib/virtualbox/VBoxSDL got created (owner=root, group=root, perm=-r-s--x--x, size=158296)
  • suid binary /usr/lib/virtualbox/VBoxVolInfo got created (owner=root, group=root, perm=-r-s--x--x, size=10472)
  • suid binary /usr/lib/virtualbox/VirtualBox got created (owner=root, group=root, perm=-r-s--x--x, size=158304)
  • i-node for listening UNIX socket /run/systemd/private changed from 3428734 to 3452848
  • systemd property NInstalledJobs changed from 8392199 to 3238035463
  • systemd property NNames changed from 261 to 263
  • systemd unit file vboxautostart-service.service added
  • systemd unit file vboxballoonctrl-service.service added
  • systemd unit file vboxdrv.service added
  • systemd unit file vboxweb-service.service added
  • systemd unit 'vboxautostart-service.service' added
  • systemd unit 'vboxballoonctrl-service.service' added
  • systemd unit 'vboxdrv.service' added
  • systemd unit 'vboxweb-service.service' added
  • 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:

    ./dawgmon -gfA

    0 changes detected (0 warnings)

    nc -l -p 4455 &

    [1] 12489

    ./dawgmon -gfA

    1 change detected (0 warnings)

    • port 4455 tcp opened

    fg

    nc -l -p 4455 ^C

    ./dawgmon -gfA

    1 change detected (0 warnings)

    • port 4455 tcp closed

    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

    executa uma análise

    dawgmon -A

    executa uma análise mas apenas com alguns comandos

    dawgmon -A -e list_suids -e list_tcpudp_ports

    mostra a lista de comandos disponíveis

    dawgmon -E

    mostra as entradas de cache disponíveis para comparação

    dawgmon -L

    compara a entrada de cache antiga 3 com a nova entrada de cache 5

    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

    A ferramenta analisa a saída de ferramentas de linha de comando e depende de opções específicas do GNU coreutils para parte disso. Não há razão específica pela qual esta ferramenta e as implementações de comando não possam ser rapidamente portadas para outros sistemas operacionais como os BSDs, mas atualmente não está ocorrendo detecção de Sistema Operacional nem está sendo feita uma classificação de comandos com base no suporte do Sistema Operacional. Isso teria que ser implementado primeiro.

    Em relação à descoberta de pipes, sockets UNIX, arquivos em /boot, /etc e mais, deve-se notar que o uso de -xdev passado para 'find' significa que nem todos os sistemas de arquivos montados sob o diretório inicial serão percorridos. Isso significa que, por exemplo, /boot será escaneado adequadamente, mas /boot/efi pode não ser. Uma abordagem mais inteligente terá que ser usada aqui no futuro.

    Os timestamps ao fazer uma análise atual podem ser um pouco confusos. Por padrão, um timestamp para uma mensagem de anomalia de aviso, normal ou depuração será o timestamp do momento de sua geração (como pode ser visto em commands/init.py). As anomalias são geradas após uma varredura completa da linha de comando ter sido feita. Portanto, a saída sobre a qual essa detecção funciona foi gerada anteriormente e, subsequentemente, os timestamps para anomalias individuais mostram um tempo após o tempo da varredura. Ao comparar entradas de cache, o timestamp da varredura está sendo usado para exibir o momento em que a detecção ocorreu, pois isso faz logicamente mais sentido.

    SOBRE

    Todos os direitos reservados. Copyright (C) 2017-2019 por Anvil Ventures Inc. Para informações de licenciamento, veja LICENSE. Para mais informações, entre em contato com Vincent Berg [email protected]

    Para encontrar o código fonte atualizado ou contribuir com patches, acesse a seguinte URL: https://github.com/anvilventures/dawgmon/

    Baixar ferramenta