学习Windows下Kernel相关

学习内核漏洞利用部分第一个漏洞:360安全卫士本地提权漏洞

漏洞成因是360对注册表操作单独做了一个底层的实现,然而这个实现并没有检测调用者的权限,导致任意用户可以随意修改注册表的任意条目,从而完成利用

利用程序分析

利用程序的功能是在远程开端口,可以远程连接上去。连接上之后是登录界面,此时按SHIFT五下会跳出cmd窗口

做成这样并不是为了花里胡哨的,而是漏洞面导致的

流程

首先调用

1
2
RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\App Paths\360safe.exe", &phkResult);
RegQueryValueExA(phkResult, "Path", 0, &Type, &Data, &cbData);

能得到目标机器中360安全卫士的路径,根据该路径可以找到目标动态链接库

然后用LoadLibraryA函数将该链接库导入,并用GetProcAddress函数得到其中的漏洞函数:

1
2
3
4
5
6
InitRegEngine
BRegDeleteKey
BRegOpenKey
BregCloseKey
BRegSetValueEx
BRegCreateKey

根据利用程序,其之后对注册表创建了一些键值

利用BregOpenKey打开SYSTEM\CurrentControlSet\Control\Terminal Server键,BRegSetValueEx设置fDenyTSConnections为0,这一步是为了打开远程协助功能

利用BregOpenKey打开SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp键,BRegSetValueEx设置PortNumber为3389

利用BregOpenKey打开SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp键,BRegSetValueEx设置

PortNumber为3389,这两步是修改远程桌面连接的端口为3389

利用BregOpenKey打开SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution键,BRegCreateKey创建sethc.exe键,BRegSetValueEx设置Debuggercmd.exe,这样就能在五次SHIFT的时候打开cmd.exe

总结

该漏洞很没意思,但是学习到了一些注册表项的用法,也算是有点价值