Codebra
07 февраля 2026 в 08:31

Урок 10. Поиск хостов с помощью CrackMapExec

Познакомимся с инструментом CrackMapExec и при помощи его научимся сканировать сеть в поисках активных хостов.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением 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.10 sevenkingdoms.local
  • 192.168.56.11 north.sevenkingdoms.local
  • 192.168.56.12 essos.local
  • 192.168.56.22 castelblack.north.sevenkingdoms.local
  • 192.168.56.23 braavos.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.