测试
简单的先用msfvenom生成一个执行命令的dll文件,用来弹出计算器:
msfvenom -a x64 -p windows/x64/exec cmd="calc.exe" -i 6 -f dll -o calctest.dll
使用netsh add helper dll命令进行添加:
添加后会在注册表的
HKLMSOFTWAREMicrosoftNetSh下多出一项,名称就是dll的文件名,值就是dll文件所在位置,一般放system32下,所以需要administrator权限。
执行netsh add helper命令和直接注册表添加效果一样,添加后运行netsh命令dll会被加载,触发命令执行:
改进
上面问题在于执行netsh会触发dll执行命令,但是netsh命令没有正常运行,效果就是没有反应:
原因在于netsh涉及到的dll文件都必须实现一个叫InitHelperDll的方法,看名字大概就是要先init初始化。这里使用已经有的两个目标,一个是结合c运行命令,一个是结合powershell。
C
参考地址:
https://github.com/outflanknl/NetshHelperBeacon
下载导入VS中,用CS生成C的代码,进行替换,生成的dll运行时会顺便弹出计算器,代码在51行,注释掉就可以:
运行netsh命令可触发dll执行,这里需要运行netsh进入,如果运行类似于像netsh add /?这种命令没有进入的话,不会触发:
注意上线的process,是通过netsh.exe上线的,所以如果目标端netsh退出的话,shell就会掉,退出后,就没响应了:
Powershell
地址:
https://github.com/rtcrowley/Offensive-Netsh-Helper
用CS生成powershell命令,替换上面项目中的命令,方法和C的一样:
测试中,上线的process是powershell.exe,关闭netsh后,目标不会掉线。
总结
netsh默认不会自启动,可以结合注册表、服务或定时任务等来添加自启动,C依赖于netsh.exe进程,需要隐藏到后台执行,Powershell依赖powershell.exe相对更稳定。
netsh用来配置网络,所以会涉及到网络配置的一些软件,会调用netsh命令,例如一些vpn客户端。
本文始发于微信公众号(aFa攻防实验室):Windows权限维持-netsh
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论