Windows权限维持-netsh

  • A+
所属分类:安全文章

Windows权限维持-netsh


介绍


netsh是windows下自带的一个网络配置管理的命令行工具,它有一个add helper的参数,用来添加dll,作用大概就是add helper一个dll文件后,netsh下次运行时就会加载这个dll文件,这种机制可以用来做权限维持。


测试


简单的先用msfvenom生成一个执行命令的dll文件,用来弹出计算器:


msfvenom -a x64 -p windows/x64/exec cmd="calc.exe" -i 6 -f dll -o calctest.dll


使用netsh add helper dll命令进行添加:


Windows权限维持-netsh


添加后会在注册表的

HKLMSOFTWAREMicrosoftNetSh下多出一项,名称就是dll的文件名,值就是dll文件所在位置,一般放system32下,所以需要administrator权限。


Windows权限维持-netsh


执行netsh add helper命令和直接注册表添加效果一样,添加后运行netsh命令dll会被加载,触发命令执行:


Windows权限维持-netsh


改进


上面问题在于执行netsh会触发dll执行命令,但是netsh命令没有正常运行,效果就是没有反应:


Windows权限维持-netsh


原因在于netsh涉及到的dll文件都必须实现一个叫InitHelperDll的方法,看名字大概就是要先init初始化。这里使用已经有的两个目标,一个是结合c运行命令,一个是结合powershell。


 C


参考地址:

https://github.com/outflanknl/NetshHelperBeacon


下载导入VS中,用CS生成C的代码,进行替换,生成的dll运行时会顺便弹出计算器,代码在51行,注释掉就可以:


Windows权限维持-netsh


运行netsh命令可触发dll执行,这里需要运行netsh进入,如果运行类似于像netsh add /?这种命令没有进入的话,不会触发:


Windows权限维持-netsh


注意上线的process,是通过netsh.exe上线的,所以如果目标端netsh退出的话,shell就会掉,退出后,就没响应了:


Windows权限维持-netsh


Powershell


地址:

https://github.com/rtcrowley/Offensive-Netsh-Helper


用CS生成powershell命令,替换上面项目中的命令,方法和C的一样:


Windows权限维持-netsh


测试中,上线的process是powershell.exe,关闭netsh后,目标不会掉线。


总结


netsh默认不会自启动,可以结合注册表、服务或定时任务等来添加自启动,C依赖于netsh.exe进程,需要隐藏到后台执行,Powershell依赖powershell.exe相对更稳定。


netsh用来配置网络,所以会涉及到网络配置的一些软件,会调用netsh命令,例如一些vpn客户端。

本文始发于微信公众号(aFa攻防实验室):Windows权限维持-netsh

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: