Сегодня расскажу о технике Smbtakeover, которая позволяет освободить и снова привязать порт 445 TCP на Windows, не прибегая к загрузке драйвера, модуля в LSASS или перезагрузке целевой машины.
Еще по теме: Manspider — поиск файлов по SMB шарам
Захват порта 445 TCP на Windows
Эта техника значительно облегчает эксплуатацию NTLM relay через SMB, особенно в условиях работы с C2 (сервер для управления скомпрометированными устройствами). Технические детали были рассмотрены на презентации «
Для просмотра ссылки Войди или Зарегистрируйся» на конференции 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-версии вам потребуется создать виртуальное окружение и установить пакет
Для просмотра ссылки Войди или Зарегистрируйся:
1
2
3
4
5
6 | git clone Для просмотра ссылки Войди или Зарегистрируйся
cd smbtakeover
python3 -m virtualenv venv
source venv/bin/activate
python3 -m pip install impacket
python3 smbtakeover.py -h |
Примеры использования Smbtakeover
Python:
BOF:
1
2
3 | bof_smbtakeover localhost check
bof_smbtakeover 10.0.0.21 stop
bof_smbtakeover localhost start |
Эти команды позволяют проверять статус, останавливать и запускать необходимые службы на целевых машинах, как локально, так и удаленно.