Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
enum4linux-ng — Следующее поколение версии enum4linux (инструмент для перечисления Windows/Samba) с дополнительными функциями, такими как экспорт в JSON/YAML. Предназначен для специалистов по безопасности и участников CTF. | Kitploit
Инструменты/GitHubGitHub/cddmp/enum4linux-ng
РазведкаСбор информацииСетевая безопасностьCTFТестирование на Проникновение
GitHubcddmp/enum4linux-ng

enum4linux-ng

Следующее поколение версии enum4linux (инструмент для перечисления Windows/Samba) с дополнительными функциями, такими как экспорт в JSON/YAML. Предназначен для специалистов по безопасности и участников CTF.

Репозиторий
1.6k15276 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

enum4linux-ng

Версия enum4linux нового поколения

enum4linux-ng.py — это переработка enum4linux.pl, созданной Марком Лоу (ранее Portcullis Labs, теперь Cisco CX Security Labs). Инструмент предназначен для сбора информации о системах Windows и Samba и ориентирован на специалистов по безопасности и участников CTF. Он является в первую очередь обёрткой вокруг утилит Samba: nmblookup, net, rpcclient и smbclient.

Я создал его в образовательных целях для себя и чтобы обойти проблемы enum4linux.pl. Он обладает той же функциональностью, что и оригинальный инструмент (хотя некоторые вещи реализованы иначе). В отличие от оригинала, он анализирует весь вывод утилит Samba и позволяет экспортировать все результаты в файл YAML или JSON. Идея в том, чтобы другие инструменты могли импортировать результаты и обрабатывать их дальше. В будущем планируется добавить новые функции.

Особенности

  • поддержка экспорта в YAML и JSON
  • цветной вывод в консоль (можно отключить через NO_COLOR)
  • ldapsearch и polenum реализованы нативно
  • поддержка нескольких методов аутентификации
  • поддержка старых подключений SMBv1
  • автоматическое определение поддержки подписи IPC
  • «умное» перечисление: автоматически отключает проверки, которые в противном случае завершились бы ошибкой
  • поддержка тайм-аутов
  • проверка версий протокола SMB
  • экспериментальная поддержка IPv6

Различия

Некоторые вещи реализованы иначе по сравнению с оригинальным enum4linux. Вот основные отличия:

  • члены групп не перечисляются по умолчанию, это можно включить с помощью -Gm
  • RID cycling не входит в стандартное перечисление (-A), но может быть включено с помощью -R
  • RID cycling можно ускорить, группируя несколько запросов SID в один вызов rpcclient
  • имена параметров немного отличаются (например, -A вместо -a)

Благодарности

Я хотел бы поблагодарить и выразить признательность сотрудникам бывшего Portcullis Labs (теперь Cisco CX Security Labs), а именно:

  • Марку Лоу (Mark Lowe) за создание оригинального 'enum4linux.pl' (https://github.com/CiscoCXSecurity/enum4linux)
  • Ричарду 'deanx' Дину (Richard 'deanx' Dean) за создание оригинального 'polenum' (https://labs.portcullis.co.uk/tools/polenum/)

Кроме того, хочу поблагодарить:

  • Крейга 'Wh1t3Fox' Веста (Craig 'Wh1t3Fox' West) за его форк 'polenum' (https://github.com/Wh1t3Fox/polenum)

Было очень интересно читать ваш код! :)

И наконец, я благодарю всех, кто внёс свой вклад в код, сообщал о проблемах и давал полезные советы по улучшению инструмента.

Юридическое примечание

Если вы используете этот инструмент: не применяйте его в нелегальных целях.

Запуск

Пример запуска может выглядеть так:

root@kitploit:~
enum4linux-ng.py -As <target> -oY out

Демонстрация

Windows Server 2012 R2

На этой демонстрации показан запуск против стандартной установки Windows Server 2012 R2. Используется следующая команда:

root@kitploit:~
enum4linux-ng.py 192.168.125.131 -u Tester -p 'Start123!' -oY out

Был создан пользователь 'Tester' с паролем 'Start123!'. Доступ через брандмауэр разрешён. После завершения перечисления я прокручиваю вверх, чтобы результаты стали более наглядными. Поскольку не указана другая опция перечисления, инструмент предполагает -A, что аналогично опции -a enum4linux. Переданы имя пользователя и пароль. Опция -oY экспортирует все собранные данные в файл YAML для дальнейшей обработки в out.yaml. В начале инструмент автоматически определяет, что LDAP не запущен на удалённом хосте, поэтому он пропускает все дальнейшие проверки LDAP, которые обычно входят в стандартное перечисление.

Демонстрация

Metasploitable 2

Вторая демонстрация показывает запуск против Metasploitable 2. Используется следующая команда:

root@kitploit:~
enum4linux-ng.py 192.168.125.145 -A -C

На этот раз используются опции -A и -C. Первая ведёт себя аналогично опции -a enum4linux, а вторая включает перечисление служб. На этот раз учётные данные не предоставлялись. Инструмент автоматически определяет, что нужно использовать SMBv1. Файлы YAML или JSON не записываются. Я снова прокручиваю вверх, чтобы результаты стали более наглядными.

Демонстрация

Использование

root@kitploit:~
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
  -L                 Get additional domain info via LDAP/LDAPS (for DCs only)
  -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)

Установка

Есть несколько способов установки инструмента. Либо он поставляется в виде пакета в вашем дистрибутиве Linux, либо требуется ручная установка.

Kali Linux

root@kitploit:~
apt install enum4linux-ng 

Archstrike

root@kitploit:~
pacman -S enum4linux-ng

NixOS

(проверено на NixOS 20.9)

root@kitploit:~
nix-env -iA nixos.enum4linux-ng

Ручная установка

Если ваш дистрибутив Linux не предоставляет пакета, можно использовать следующие методы ручной установки.

Зависимости

Инструмент использует клиентские утилиты Samba, а именно:

  • nmblookup
  • net
  • rpcclient
  • smbclient

Они должны быть доступны во всех дистрибутивах Linux. Пакет обычно называется smbclient, samba-client или что-то подобное.

Кроме того, потребуются следующие пакеты Python:

  • ldap3
  • PyYaml
  • impacket

Для более быстрой обработки YAML (опционально!) также установите (должна быть зависимостью PyYaml в большинстве дистрибутивов Linux):

  • LibYAML

Ниже приведены примеры установки для конкретных дистрибутивов Linux. Также возможны способы, не зависящие от дистрибутива (python pip, python virtual env и Docker).

Для конкретных дистрибутивов Linux

Во всех приведённых ниже примерах LibYAML уже является зависимостью соответствующего пакета PyYaml и будет установлен автоматически.

ArchLinux

root@kitploit:~
pacman -S smbclient python-ldap3 python-yaml impacket

Fedora/CentOS/RHEL

(проверено на Fedora Workstation 31)

root@kitploit:~
dnf install samba-common-tools samba-client python3-ldap3 python3-pyyaml python3-impacket

Debian/Ubuntu/Linux Mint

(Для Ubuntu 18.04 и ниже используйте вариант с Docker или виртуальным окружением Python)

root@kitploit:~
apt install smbclient python3-ldap3 python3-yaml python3-impacket

Не зависящие от дистрибутива Linux

Python pip

В зависимости от дистрибутива может потребоваться pip3 или pip:

root@kitploit:~
pip install pyyaml ldap3 impacket

Альтернатива:

root@kitploit:~
pip install -r requirements.txt

Не забудьте, что всё равно нужно установить утилиты Samba, как указано выше.

Виртуальное окружение Python

root@kitploit:~
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

Затем запуск:

root@kitploit:~
python3 enum4linux-ng.py -As <target>

Не забудьте, что всё равно нужно установить утилиты Samba, как указано выше. Кроме того, каждый раз при открытии новой оболочки выполняйте source venv/bin/activate. Иначе будет использоваться интерпретатор Python системы с неправильными библиотеками, а не из виртуального окружения.

Docker

root@kitploit:~
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
docker build . --tag enum4linux-ng

После завершения пример запуска может выглядеть так:

root@kitploit:~
docker run -t enum4linux-ng -As <target>

Вклад и поддержка

Время от времени инструмент может выдавать сообщения об ошибках следующего вида:

Could not <some text here>, please open a GitHub issue

В таком случае перезапустите инструмент с опциями -v и --keep. Это позволит увидеть точную команду, вызвавшую ошибку. Скопируйте эту команду, выполните её в терминале и перенаправьте вывод в файл. Затем откройте issue на GitHub, вставив команду и приложив файл с выводом ошибки. Это поможет отладить проблему. Конечно, вы можете отладить её самостоятельно и отправить pull request.

Если инструмент оказался для вас полезным, буду рад, если вы поставите звёздочку!

Скачать инструмент