Smbtakeover — захват порта 445 TCP на Windows при атаке NTLM Relay

Smbtakeover — захват порта 445 TCP на Windows при атаке NTLM Relay, image #1

Сегодня расскажу о технике Smbtakeover, которая позволяет освободить и снова привязать порт 445 TCP на Windows, не прибегая к загрузке драйвера, модуля в LSASS или перезагрузке целевой машины.

Захват порта 445 TCP на Windows

Эта техника значительно облегчает эксплуатацию NTLM relay через SMB, особенно в условиях работы с C2 (сервер для управления скомпрометированными устройствами). Технические детали были рассмотрены на презентации «Relay Your Heart Away: An OPSEC Concious Approach to 445 Takeover» на конференции x33fcon.

Перед применением техники следует учесть несколько моментов:

  • Отключение служб, описанных ниже, временно лишает целевую машину возможности использовать namedpipes и серверную часть SMB-коммуникаций (например, CIFS). Важно понимать, для чего используется целевая машина, особенно если это критическая или производственная инфраструктура. После повторного включения службы их нормальная работа восстанавливается.
  • Иногда может потребоваться отключить и другой набор служб. Это замечено на некоторых версиях 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

Эти команды позволяют проверять статус, останавливать и запускать необходимые службы на целевых машинах, как локально, так и удаленно.

12 views·1 share