
Получает открытые текстом учетные данные Active Directory, если вы находитесь во внутренней сети, но за пределами среды AD.
Прорвите лёд в той милой среде Active Directory. Когда вы холодны и одиноки, глядя на вечеринку Active Directory, но не имеете ни одного учётного данного AD, чтобы присоединиться к веселью, этот инструмент для вас.
Последовательно автоматизирует 5 внутренних сетевых атак против Active Directory, чтобы предоставить вам учётные данные в открытом виде. Используйте опцию --auto для автоматического получения привилегий администратора домена после получения точки опоры.
Следующие атаки выполняются последовательно, пока четвёртая и пятая атаки не начнут выполняться параллельно и бесконечно.
Все хеши NetNTLMv2, захваченные в описанных ниже методиках, автоматически взламываются с помощью JohnTheRipper и списка паролей, специфичного для AD, длиной 1 миллион.
Он выполнит указанные выше 5 сетевых атак по порядку. Обратный перебор и загрузка SCF-файлов обычно выполняются довольно быстро, затем он задерживается на атаке 3 (Responder.py) на 10 минут по умолчанию. После этого времени (или заданного пользователем времени) он переходит к двум последним атакам, которые выполняются параллельно и бесконечно.
Если будут обнаружены хосты, допускающие пустые SMB-сессии, icebreaker использует ridenum для выполнения RID-циклирования с целью получения действительных имён пользователей. Если вы используете опцию "-d <somedomain.com>", theHarvester соберёт все адреса электронной почты с указанного веб-сайта. Любые имена пользователей электронной почты, совместимые с AD, будут добавлены в список имён пользователей для обратного перебора. Icebreaker использует библиотеку asyncio для выполнения обратного перебора с помощью linux-инструмента rpcclient, используя 10 асинхронных рабочих процессов.
Атака с загрузкой SCF использует файлы команд оболочки (Shell Command Files) для анонимно доступных для записи сетевых ресурсов. SCF — это файлы, которые могут выполнять базовые действия, такие как отображение рабочего стола или открытие окна проводника. У них есть любопытное свойство: можно установить значок файла на сетевой путь. Если вы установите этот сетевой путь на свою собственную машину, пользователи, открывающие общий файловый ресурс в проводнике, автоматически отправят вам хеш своего пароля NetNTLMv2. Icebreaker использует скрипт Nmap smb-enum-shares для поиска анонимно доступных для записи ресурсов, затем автоматически генерирует и загружает полезный SCF.
Атака 3 использует Responder.py для отравления многоадресных/широковещательных протоколов LLMNR, NBT-NS и mDNS. Когда пользователи переходят по несуществующему сетевому пути, Responder сообщает им, что ваша атакующая машина является правильным путём. Хеш пароля NetNTLMv2 пользователя теперь ваш. Responder захватит хеши, отправленные через атаку SCF, но следующая атака обычно более полезна для захвата хешей SCF, поскольку она может использовать хеш для выполнения команд.
Ретрансляция SMB — это старая сетевая атака, при которой злоумышленники занимают позицию между SMB-клиентом и SMB-сервером. Это позволяет злоумышленникам захватывать и ретранслировать хеши NetNTLMv2 на хосты, на которых включён SMBv1 и отключена подпись SMB. ntlmrelayx.py из библиотеки Impacket используется для ретрансляции, а Responder.py используется для атаки «человек посередине» на SMB-соединения. Если у пользователя SMB-клиента есть права администратора на любом хосте в сети с отключённой подписью SMB, ntlmrelayx.py выполнит команду на этом хосте.
Как только ntlmrelayx ретранслирует захваченный хеш, он запускает команду PowerShell в кодировке base64, которая сначала добавляет административного пользователя (icebreaker:P@ssword123456), затем запускает обфусцированную и обходящую AMSI версию Mimikatz, а затем обфусцированную и обходящую AMSI версию Invoke-PowerDump. Вывод Invoke-Mimikatz и Invoke-PowerDump анализируется на наличие паролей в открытом виде или хешей NTLM и передаётся пользователю в стандартный вывод, а также в файл found-passwords.txt. Хеши NTLM, в отличие от хешей NetNTLMv2, могут использоваться так же, как пароль в открытом виде для аутентификации на других хостах AD. Единственное предостережение: после исправления Microsoft KB2871997 только встроенная учётная запись локального администратора с RID 500 может использоваться в атаках pass-the-hash.
Последняя атака использует инструмент mitm6 для выполнения атаки «человек посередине» на IPv6 DNS против всей сети. Это заставляет хосты в сети использовать машину атакующего в качестве своего DNS-сервера. После того как он становится их DNS-сервером, атакующий отдаёт вредоносные файлы настроек WPAD-прокси жертвам и собирает их хеши NetNTLMv2. Эти хеши ретранслируются с помощью ntlmrelayx.py для последующего удалённого выполнения кода. Стоит отметить, что эта атака часто вызывает проблемы в сети. Она часто вызывает ошибки сертификатов на клиентских машинах в браузере. Также она, вероятно, замедлит сеть. Однако прелесть этой атаки в том, что среды Windows AD уязвимы по умолчанию.
Если icebreaker запущен с флагом --auto [tmux/xterm], то по достижении атаки 4 icebreaker запустит Empire и DeathStar в сеансе tmux или окнах xterm. При этом варианте вместо запуска mimikatz на удалённом хосте, на который был ретранслирован хеш, icebreaker добавит административного пользователя, а затем запустит код запуска PowerShell от Empire для получения агента на удалённой машине. DeathStar использует этого агента для автоматизации процесса получения прав администратора домена. Empire и DeathStar не закроются при выходе из icebreaker.
Взлом паролей выполняется с помощью JohnTheRipper и пользовательского списка слов. Источник этого списка — merged.txt, который содержит все пароли из учётной записи SecLists GitHub, объединённые вместе. Список слов был сокращён и не включает пароли: только строчные, только прописные, только символы, короче 7 символов, длиннее 32 символов. Эти правила соответствуют требованиям к паролям Active Directory по умолчанию и сократили список с 20 миллионов до чуть более 1 миллиона, что делает взлом паролей чрезвычайно быстрым.
От root:
./setup.sh
pipenv install --three
pipenv shell
Вы можете получить ошибку после запуска pipenv install. В этом случае обновитесь до версии pipenv выше 11.9.0. Вы можете склонировать pipenv с github и просто выполнить apt-get remove python-pipenv && python setup.py install из папки.
В образе Docker ещё есть несколько ошибок, так что он, скорее всего, выдаст ошибку, но он почти готов. Из Git-репозитория:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
Или добавьте команды, которые вы обычно добавляете в icebreaker (не забудьте сопоставить тома):
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml
Примечание: Вам потребуется сопоставить порты для слушателей с помощью флага Docker -p <host>:<container>.
Запускать от root. Читает из списка IP-адресов, разделённых новой строкой (отдельные IP-адреса или диапазоны CIDR), и вместо того, чтобы ntlmrelayx добавлял пользователя и запускал mimikatz на жертве после ретрансляции хеша, выполняет пользовательскую команду на машине жертвы. В этом примере мы даём команду, похожую на ту, которую Empire мог бы дать нам для однострочного запуска PowerShell.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Читает из списка хостов, указывает Responder использовать интерфейс eth0 вместо интерфейса шлюза по умолчанию, позволяет Responder работать 30 минут вместо обычных 10 и запускает команды ntlmrelayx после ретрансляции по умолчанию для снятия SAM с сервера жертвы.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Использовать выходной XML-файл Nmap, пропустить все пять атак, а также не выполнять автоматический взлом хешей, и использовать собственный список паролей для атаки обратного перебора (обратите внимание, что в этом примере пропускается атака 1 с помощью '-s rid', поэтому указанный список паролей даже не будет использован; это просто пример).
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Использование «запустил и забыл»: ввести файл целей, собрать адреса электронной почты с companydomain.com для добавления в атаку обратного перебора, пропустить отравление IPv6 DNS mitm6, и запустить Empire и DeathStar в окнах tmux или xterm после начала атаки 4 для автоматического получения прав администратора домена. Цель этого использования — запустить команду в понедельник в 9 утра, а затем уйти на короткий непрерывный перерыв до пятницы 16:30, когда мы вернёмся к ожидающей нас оболочке администратора домена. Мы пропускаем атаку 5 (mitm6), потому что она иногда вызывает проблемы в сети, и мы не хотим, чтобы разгневанные клиенты прерывали наш заслуженный перерыв.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]