MimiPenguin 2.0
Uma ferramenta para capturar a senha de login do atual usuário desktop Linux. Adaptada da ideia por trás da popular ferramenta Windows mimikatz. Foi atribuída a ela CVE-2018-20781 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20781). Curiosamente, ainda não foi corrigida após o GNOME Keyring 3.27.2 e ainda funciona na versão 3.28.0.2-1ubuntu1.18.04.1.

Detalhes
Aproveita-se de credenciais em texto claro na memória, despejando o processo e extraindo linhas com alta probabilidade de conter senhas em texto claro. Tentará calcular a probabilidade de cada palavra verificando hashes em /etc/shadow, hashes na memória e pesquisas regex. A versão 2.0 introduz uma porta limpa em C que visa aumentar a velocidade de execução e portabilidade.
Problemas Conhecidos
- A variante de 32 bits do mimipenguin (compilação em C) pode falhar em um espaço de usuário de 64 bits, pois atualmente não lida adequadamente com a busca em um espaço de endereço de 64 bits.
Requisitos
Sistemas Suportados/Testados
- Kali 4.3.0 (rolling) x64 (gdm3)
- Ubuntu Desktop 12.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Ubuntu Desktop 14.04.1 LTS x64 (Gnome Keyring 3.10.1-1ubuntu4.3, LightDM 1.10.6-0ubuntu1)
- Ubuntu Desktop 16.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Ubuntu Desktop 16.04.4 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2, LightDM 1.18.3-0ubuntu1.1)
- Ubuntu 18
- XUbuntu Desktop 16.04 x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Archlinux x64 Gnome 3 (Gnome Keyring 3.20)
- OpenSUSE Leap 42.2 x64 (Gnome Keyring 3.20)
- VSFTPd 3.0.3-8+b1 (Conexões FTP ativas do cliente)
- Apache2 2.4.25-3 (Sessões HTTP BASIC AUTH ativas/antigas) [Dependência Gcore]
- openssh-server 1:7.3p1-1 (Conexões SSH ativas - uso do sudo)
Compilação
- Para compilar a variante C da versão, basta executar
make no diretório raiz do projeto.
- Para compilar um binário de depuração com impressões de depuração, execute
make debug.
- Para compilar binários com linkedição estática, execute
make static.
Notas
- A senha se move na memória - ainda refinando para 100% de eficácia.
- Planos de expandir o suporte e outras localizações de credenciais.
- Trabalhando para expandir para ambientes não desktop.
- Bug conhecido - às vezes o gcore trava o script, isso é um problema do gcore.
- Aberto a pull requests e pesquisas da comunidade.
- Pesquisa LDAP (nscld winbind etc) planejada para o futuro.
Roteiro de Desenvolvimento
- Implementar agulhas na porta em C (acelerar)
- Adicionar argumento opcional para segmentar apenas usuários específicos (acelerar)
O MimiPenguin está sendo lentamente portado para várias linguagens para suportar todos os cenários possíveis de pós-execução. O roteiro abaixo foi sugerido por KINGSABRI para rastrear as várias versões e funcionalidades. Um "X" indica suporte total, enquanto um "~" indica uma funcionalidade com bugs conhecidos.
Contato
Licença
Licença CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
Agradecimentos Especiais
- the-useless-one por remover a dependência do Gcore, limpar as tabulações, adicionar opção de saída e uma porta completa para python3
- gentilkiwi pelo Mimikatz, a inspiração e o shoutout no twitter
- pugilist por limpar a extração de PID e testar
- ianmiell por limpar parte do meu código bagunçado
- w0rm por identificar erro de printf quando caracteres especiais estão envolvidos
- benichmt1 por identificar problema de múltiplos usuários autenticados
- ChaitanyaHaritash por identificar problemas de borda com caracteres especiais
- ImAWizardLizard por limpar as correspondências de padrões com um loop for
- coreb1t pelas verificações do python3, suporte ao Arch, outras correções
- n1nj4sec pela porta python2 e suporte
- KINGSABRI pela proposta de roteiro
- bourgouinadrien por vincular https://github.com/koalaman/shellcheck
- bcoles por adicionar mais agulhas
- space-r7 e bcoles pelo trabalho no Módulo MimiPenguin do Metasploit