
Uma versão de próxima geração do enum4linux (uma ferramenta de enumeração Windows/Samba) com funcionalidades adicionais como exportação JSON/YAML. Destinada a profissionais de segurança e jogadores de CTF.
Uma versão de próxima geração do enum4linux
enum4linux-ng.py é uma reescrita do enum4linux.pl de Mark Lowe (antigo Portcullis Labs, agora Cisco CX Security Labs), uma ferramenta para enumerar informações de sistemas Windows e Samba, destinada a profissionais de segurança e jogadores de CTF. A ferramenta é principalmente um invólucro em torno das ferramentas Samba nmblookup, net, rpcclient e smbclient.
Eu a fiz para fins educacionais para mim mesmo e para superar problemas com enum4linux.pl. Ela tem a mesma funcionalidade da ferramenta original (embora faça algumas coisas de forma diferente). Diferentemente da ferramenta original, ela analisa toda a saída das ferramentas Samba e permite exportar todos os resultados como arquivo YAML ou JSON. A ideia por trás disso é permitir que outras ferramentas importem os resultados e os processem posteriormente. Está planejado adicionar novos recursos no futuro.
Algumas coisas são implementadas de forma diferente em comparação com o enum4linux original. Estas são as diferenças importantes:
-Gm-A), mas pode ser ativado com -R-A em vez de -a)Gostaria de agradecer e dar crédito às pessoas do antigo Portcullis Labs (agora Cisco CX Security Labs), nomeadamente:
Além disso, gostaria de agradecer e dar crédito a:
Foi muito divertido ler o seu código! :)
Por último, mas não menos importante, gostaria de agradecer às várias pessoas que contribuíram com código, relataram problemas e forneceram sugestões úteis sobre como melhorar a ferramenta.
Se você usar a ferramenta: Não a use para fins ilegais.
Um exemplo de execução poderia ser assim:
enum4linux-ng.py -As <target> -oY out
Isso demonstra uma execução contra uma instalação padrão do Windows Server 2012 R2. O seguinte comando está sendo usado:
enum4linux-ng.py 192.168.125.131 -u Tester -p 'Start123!' -oY out
Um usuário 'Tester' com senha 'Start123!' foi criado. O acesso ao firewall foi permitido. Quando a enumeração termina, eu rolo para cima para que os resultados fiquem mais claros. Como nenhuma outra opção de enumeração é especificada, a ferramenta assumirá -A que se comporta de forma semelhante à opção -a do enum4linux. O usuário e a senha são passados. A opção -oY exportará todos os dados enumerados como arquivo YAML para processamento posterior em out.yaml. A ferramenta detecta automaticamente no início que o LDAP não está em execução no host remoto. Portanto, ignorará quaisquer verificações LDAP adicionais que normalmente fariam parte da enumeração padrão.

A segunda demonstração mostra uma execução contra o Metasploitable 2. O seguinte comando está sendo usado:
enum4linux-ng.py 192.168.125.145 -A -C
Desta vez, as opções -A e -C são usadas. Enquanto a primeira se comporta de forma semelhante à opção -a do enum4linux, a segunda ativará a enumeração de serviços. Desta vez, nenhuma credencial foi fornecida. A ferramenta detecta automaticamente que precisa usar SMBv1. Nenhum arquivo YAML ou JSON está sendo escrito. Novamente, eu rolo para cima para que os resultados fiquem mais claros.

usage: enum4linux-ng.py [-h] [-A] [-As] [-U] [-G] [-Gm] [-S] [-C] [-P] [-O] [-L] [-I] [-R [BULK_SIZE]] [-N] [-w DOMAIN] [-u USER]
[-p PW | -K TICKET_FILE | -H NTHASH] [--local-auth] [-d] [-k USERS] [-r RANGES] [-s SHARES_FILE] [-t TIMEOUT] [-v] [--keep]
[-oJ OUT_JSON_FILE | -oY OUT_YAML_FILE | -oA OUT_FILE]
host
This tool is a rewrite of Mark Lowe's enum4linux.pl, a tool for enumerating information from Windows and Samba systems. It is mainly a wrapper around the Samba
tools nmblookup, net, rpcclient and smbclient. Other than the original tool it allows to export enumeration results as YAML or JSON file, so that it can be
further processed with other tools. The tool tries to do a 'smart' enumeration. It first checks whether SMB or LDAP is accessible on the target. Depending on the
result of this check, it will dynamically skip checks (e.g. LDAP checks if LDAP is not running). If SMB is accessible, it will always check whether a session can
be set up or not. If no session can be set up, the tool will stop enumeration. The enumeration process can be interupted with CTRL+C. If the options -oJ or -oY
are provided, the tool will write out the current enumeration state to the JSON or YAML file, once it receives SIGINT triggered by CTRL+C. The tool was made for
security professionals and CTF players. Illegal use is prohibited.
positional arguments:
host
options:
-h, --help show this help message and exit
-A Do all simple enumeration including nmblookup (-U -G -S -P -O -N -I -L). This option is enabled if you don't provide any other option.
-As Do all simple short enumeration without NetBIOS names lookup (-U -G -S -P -O -I -L)
-U Get users via RPC
-G Get groups via RPC
-Gm Get groups with group members via RPC
-S Get shares via RPC
-C Get services via RPC
-P Get password policy information via RPC
-O Get OS information via RPC
-I Get printer information via RPC
-R [BULK_SIZE] Enumerate users via RID cycling. Optionally, specifies lookup request size.
-N Do an NetBIOS names lookup (similar to nbtstat) and try to retrieve workgroup from output
-w DOMAIN Specify workgroup/domain manually (usually found automatically)
-u USER Specify username to use (default "")
-p PW Specify password to use (default "")
-K TICKET_FILE Try to authenticate with Kerberos, only useful in Active Directory environment (Note: DNS must be setup correctly for this option to work)
-H NTHASH Try to authenticate with hash
--local-auth Authenticate locally to target
-d Get detailed information for users and groups, applies to -U, -G and -R
-k USERS User(s) that exists on remote system (default: administrator,guest,krbtgt,domain admins,root,bin,none). Used to get sid with "lookupsids"
-r RANGES RID ranges to enumerate (default: 500-550,1000-1050)
-s SHARES_FILE Brute force guessing for shares
-t TIMEOUT Sets connection timeout in seconds (default: 10s)
-v Verbose, show full samba tools commands being run (net, rpcclient, etc.)
--keep Don't delete the Samba configuration file created during tool run after enumeration (useful with -v)
-oJ OUT_JSON_FILE Writes output to JSON file (extension is added automatically)
-oY OUT_YAML_FILE Writes output to YAML file (extension is added automatically)
-oA OUT_FILE Writes output to YAML and JSON file (extensions are added automatically)
Existem várias maneiras de instalar a ferramenta. Ou a ferramenta vem como um pacote com sua distribuição Linux ou você precisa fazer uma instalação manual.
apt install enum4linux-ng
pacman -S enum4linux-ng
(testado no NixOS 20.9)
nix-env -iA nixos.enum4linux-ng
Se sua distribuição Linux não oferece um pacote, os seguintes métodos de instalação manual podem ser usados.
A ferramenta usa as ferramentas cliente samba, nomeadamente:
Elas devem estar disponíveis para todas as distribuições Linux. O pacote é tipicamente chamado de smbclient, samba-client ou algo semelhante.
Além disso, você precisará dos seguintes pacotes Python:
Para um processamento mais rápido de YAML (opcional!) instale também (deve vir como dependência do PyYaml para a maioria das distribuições Linux):
Alguns exemplos para instalações específicas de distribuições Linux estão listados abaixo. Alternativamente, formas independentes de distribuição (python pip, ambiente virtual python e Docker) são possíveis.
Para todos os exemplos de distribuição abaixo, o LibYAML já é uma dependência do pacote PyYaml correspondente e, portanto, será instalado automaticamente.
pacman -S smbclient python-ldap3 python-yaml impacket
(testado no Fedora Workstation 31)
dnf install samba-common-tools samba-client python3-ldap3 python3-pyyaml python3-impacket
(Para Ubuntu 18.04 ou inferior, use a variante Docker ou ambiente virtual Python)
apt install smbclient python3-ldap3 python3-yaml python3-impacket
Dependendo da distribuição Linux, é necessário pip3 ou pip:
pip install pyyaml ldap3 impacket
Alternativa:
pip install -r requirements.txt
Lembre-se de que você ainda precisa instalar as ferramentas samba conforme mencionado acima.
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
python3 -m venv venv
source venv/bin/activate
pip install wheel
pip install -r requirements.txt
Depois execute via:
python3 enum4linux-ng.py -As <target>
Lembre-se de que você ainda precisa instalar as ferramentas samba conforme mencionado acima. Além disso, certifique-se de executar source venv/bin/activate toda vez que abrir um novo shell. Caso contrário, o interpretador Python errado com as bibliotecas erradas será usado (o do sistema em vez do do ambiente virtual).
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
docker build . --tag enum4linux-ng
Uma vez concluído, um exemplo de execução poderia ser assim:
docker run -t enum4linux-ng -As <target>
Ocasionalmente, a ferramenta exibirá mensagens de erro como esta:
Could not <some text here>, please open a GitHub issue
Nesse caso, execute novamente a ferramenta com a opção -v e --keep. Isso permitirá que você veja o comando exato que causou a mensagem de erro. Copie esse comando, execute-o no seu terminal e redirecione a saída para um arquivo. Em seguida, abra um problema no GitHub, colando o comando e anexando o arquivo de saída do erro. Isso ajuda a depurar o problema. Claro, você pode depurar por conta própria e fazer um pull request.
Se a ferramenta for útil para você, fico feliz se você deixar uma estrela!