0X00前言
前几天在看某个安全会议的PPT,发现里面提了一个漏洞我不怎么了解,但是很有趣,于是就打算通过shodan复现一下。这个漏洞需要对方是windows主机且开启了3389,结果试了一波,没有一台成功,估计是漏洞比较老吧(14年的)。好不容易找到一台开了3389的目标,结果没复现成功,但是通过思考分析还是打开了通往主机的大门。
0X01实战过程记录
首先我原本复现的漏洞,是早些时候网络上的黑阔用来日另外一批黑阔的肉鸡控制器所用的,就是所谓的黑吃黑。我找了一台开了3389的目标机器,通过网络上公布的漏洞细节进行复现,结果发现不行,应该是修复了,或者是我的姿势不对。但是我并没有打算放弃,我想:既然这服务器是用来管理肉鸡的,黑客们必定在上面留了许多后门,于是我就想到了shift后门,之前我也有做过笔记,如果你不了解可以点这里。于是,我就按了5下shift键,然后cmd就奇迹般的出现了,运气真好。
通过shift调用出的cmd是system权限,我们来查看一下上面有哪些用户,并添加账户,命令执行后会返回一串意大利文,google翻译一下
当然,如果你添加账户的密码设置的太简单,会显示命令执行失败。当我们添加完账户后,将账户添加进administrators组。
查看是否我们成功将用户添加进administrators管理组
尝试登录,会发现出现如下错误
我想可能是我们没有将用户添加到远程桌面管理组里,使用net localgroup看一下总共有哪些用户组,因为这台主机的语言使用的是意大利语言,所以远程桌面管理组可能不是我们平常所见到的Remote Desktop Users。
大概意思就是”发生系统错误 1312。指定的登录会话不存在。可能已被终止。没关系,既然net localgroup命令用不了,我们可以直接查看一下administrator所在的用户组,因为administrator允许远程登录。我们使用net user administrator命令来查看administrator所在的用户组。
使用net localgroup “Utenti desktop remoto” 用户名 /add命令即可将用户添加到远程桌面管理组,之后就能顺利进入主机。
0X02另类思路
其实本来到这里已经结束了。但是在没拿下之前,我让表哥试试能不能拿下,后来我们几乎在同一时间拿下。但是,表哥是通过远程桌面会话劫持(RDP hijacking )来进入主机的。我去,这是啥骚操作,赶紧google一下,发现这篇文章写的不错RDP hijacking(有墙)。
大家都知道,在windows中如果你知道另一个已登录用户的密码,就可以通过认证后切换成该用户。
test成功切换成administrator用户
劫持方法一:创建服务
实际测试截图
这里有个演示视频(墙):All Windows TS Session Hijacking (2012 R2 Demo)
劫持方法二:直接利用query和tscon命令
来看一下query命令用法
tscon命令用法
下面结合query和tscon命令达到会话劫持目的
query user查询所有已登录的用户会话信息
tscon 会话ID切换到目标会话状态
回车之后可直接切换成目标用户登录系统。
0X03留木马后门
第一种方法:替换粘滞键程序
这个我之前刚好有分析实践过,也写过防护方案,具体看这篇:通过shift快捷键运行后门
第二种方法:替换讲述人程序
根据老外的文章,把讲述人程序替换cmd.exe也是可以的,然而我测试时失败了。
老外还给出了直接修改注册表项的命令,然而我两个试了都不管用(win03上测试的),这里还是贴出来吧,谁要是知道告诉我一下。
将sethc.exe替换成cmd.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /t REG_SZ /v Debugger /d “C:\windows\system32\cmd.exe” /f
将utilman.exe替换成cmd.exe
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe" /t REG_SZ /v Debugger /d “C:\windows\system32\cmd.exe” /f
0X04防御方案
监控系统进程活动,开启日志记录,当有新;
禁止使用sethc.exe和utilman.exe快捷键使用;
异常服务创建和异常计划任务创建是应有日志记录;
通过组策略来限制sethc.exe和utilman.exe所有者的访问执行权限;
不要将开启RDP(Remote Desktop Protocol)/RDS(Relational Database Service)服务的主机暴露在公网上;
0X05总结
这次的的渗透经历,总的来说还是学到不少,突破点就是利用前人种的马。所以说思路很重要,还是要多多看其他人的文章。另外,英语还是挺重要的,有的东西可以多看看外文。