Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением Active Directory). Курс был написан в 2024 году и будет интересен системным администраторам, специалистам по защите данных и другим специалистам.
Полный список уроков доступен по тегу Архивный курс по пентесту Active Directory и на странице первого урока.
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в образовательных и ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!
- CrackMapExec - известный инструмент для тестирования сетей под управлением Active Directory.
- Инструмент CrackMapExec считается "швейцарским" ножом для тестирования инфраструктуры, построенной на основе Active Directory.
- CrackMapExec имеет огромные возможности, включая перечисление пользователей и выполнение атак в стиле psexec.
- Инструмент использует многопоточность и собственные вызовы WinAPI для работы с сеансами и дампом хэшей из SAM.
- CrackMapExec активно использует библиотеку скриптов Impacket и набор инструментов PowerSploit для работы с сетевыми протоколами.
- CrackMapExec имеет собственную базу данных, в которой хранятся найденные учетные данные.
- Инструмент полезен как для атакующих, так и для защищающихся команд.
Введение
Начнем с самого простого и известного инструмента для тестирования сетей под управлением Active Directory - CrackMapExec. С ним мы встретимся ещё неоднократно и с каждым разом будем погружаться в него все глубже.

Поиск доступных хостов при помощи CrackMapExec
Для чего инструмент CrackMapExec
Прежде чем начать пользоваться инструментом CrackMapExec, давайте кратко познакомимся с ним. По мере прохождения уроков будем погружаться в этот инструмент более детально.
Инструмент CrackMapExec считается "швейцарским" ножом для тестирования на проникновение инфраструктуры, построенной на основе Active Directory. Список возможностей огромный: от перечисления пользователей до выполнения атак в стиле psexec, дампа NTDS.dit и многого другого.
Инструмент CrackMapExec использует многопоточность и только собственные вызовы WinAPI для работы с сеансами, дампа хэшей из SAM и так далее. Он активно использует библиотеку скриптов Impacket (с ним встретимся далее еще много раз) и набор инструментов PowerSploit для работы с сетевыми протоколами.
Кроме того, CrackMapExec имеет собственную базу данных, в которой хранятся найденные учетные данные.
Несмотря на то, что CrackMapExec предназначен в первую очередь для атакующих (красных) команд, он также будет полезным для защищающихся (синих) команд: оценка привилегий учетной записи, поиск возможных неправильных настроек, моделирование атак и так далее.
Базовые параметры CrackMapExec и нотация CIDR
crackmapexec --help

В GOAD развернуты пять виртуальных машин, все они находятся в одной подсети 192.168.56.0/24:
192.168.56.10sevenkingdoms.local192.168.56.11north.sevenkingdoms.local192.168.56.12essos.local192.168.56.22castelblack.north.sevenkingdoms.local192.168.56.23braavos.essos.local
Перейдем к инструменту CrackMapExec. Каждый протокол поддерживает нотацию CIDR, например:
crackmapexec <protocol> essos.local
crackmapexec <protocol> 192.168.56.12 192.168.56.22
crackmapexec <protocol> 192.168.56.0/24
crackmapexec <protocol> 192.168.56.0-23
crackmapexec <protocol> ~/list_targets.txt

Введем команду crackmapexec --help и узнаем, какие протоколы нам доступны:

Использование учетных данных в CrackMapExec
Каждый протокол поддерживает использование учетных данных в той или иной мере. Более подробно нужно смотреть в Wiki. По мере углубления в материал будем знакомиться с другими способами использования учетных данных. Чаще всего, чтобы использовать учетные данные в CrackMapExec, используется следующая команда:
crackmapexec <protocol> <target(s)> -u username -p password
После ключа -u указывается имя пользователя, а после -p пишется пароль. Например, у нас есть учетная записи khal.drogo, принадлежащая домену essos.local. Проверим, что у нас на руках правильные учетные данные для пользователя khal.drogo.
crackmapexec smb 192.168.56.12 -u 'khal.drogo' -p 'horse'

В данном примере необязательно было использовать одинарные кавычки, но если в учетных данных встречаются специальные символы, то использование кавычек обязательно.
Может быть ситуация, что учетные данные начинаются с тире (-), что может вызвать ошибку.

Чтобы исправить эту ошибку, достаточно использовать длинный формат аргументов:
crackmapexec smb 192.168.56.12 -u='-khal.drogo' -p='-horse'

Пользователя -khal.drogo не существует, поэтому ошибка STATUS_LOGON_FAILURE
Использование учетных данных из базы данных cmedb
Как мы говорили ранее, найденные учетные данные (введенные в CrackMapExec) сохраняются в его базе данных, содержимое которой можно посмотреть следующей командой:
cmedb
В cmedb вводим команду creds:

Если мы не хотим вводить учетные данные пользователя khal.drogo и хотим их использовать, то достаточно применить ключ -id:
crackmapexec smb 192.168.56.12 -id 1

С другими возможностями CrackMapExec будем знакомиться далее, когда будет такая необходимость, а пока перейдем к сканированию подсети и поиску хостов для дальнейшего тестирования.
Сканирование подсети при помощи CrackMapExec
Для нас будет удобно просканировать следующим образом:
crackmapexec smb 192.168.56.0-23

Эта простая команда возвращает много полезной информации. Давайте разбираться. Во-первых, мы видим три домена:
essos.local(2 IP-адреса):BRAAVOS(Windows Server 2016) (подпись SMB пакетов выключена, SMBv1 включена)MEEREEN(Windows Server 2019) (подпись SMB пакетов включена, SMBv1 включена)
sevenkingdoms.local(1 IP-адрес):KINGSLANDING(Windows Server 2019) (подпись SMB пакетов включена, SMBv1 выключена)
north.sevenkingdoms.local(2 IP-адреса):CASTELBLACK(windows server 2019) (подпись SMB пакетов выключена, SMBv1 выключена)WINTERFELL(windows server 2019) (подпись SMB пакетов включена, SMBv1 выключена)
Мы нашли три домена, значит существует три контролера домена (DC), которые нам предстоит найти. По умолчанию у DC подпись SMB включена, поэтому можно предположить: 192.168.56.10, 192.168.56.11 и 192.168.56.12 - IP-адреса контролеров домена. Убедимся в этом далее еще раз.
Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегам Пентест и Active Directory.
