网络安全技术 ·

记一次针对恶意攻击者的渗透测试


文章来源:酒仙桥六号部队

背景


最近在梳理hw期间的文档,发现期间上报的攻击者IP,心里就有了个坏心思,想连上去看看这些攻击者的机器什么样子,于是便有了这篇文章。


信息收集部分


我这边只是用nmap和 fofa简单的看了一下。目标机器开了不少端口,存在好几个web服务,服务器为Windows服务器。

这次的目标是登录目标服务器看看即可,不进行其它任何操作。

Nmap scan report for 49.233.xx.xx  Host is up (0.18s latency).  Not shown: 990 closed ports  PORT      STATE SERVICE            VERSION  80/tcp    open  http               Apache httpd  135/tcp   open  msrpc              Microsoft Windows RPC  139/tcp   open  netbios-ssn        Microsoft Windows netbios-ssn  443/tcp   open  ssl/https          Apache  445/tcp   open  microsoft-ds       Microsoft Windows Server 2008 R2 - 2012 microsoft-ds  3389/tcp  open  ssl/ms-wbt-server?  49152/tcp open  msrpc              Microsoft Windows RPC  49153/tcp open  msrpc              Microsoft Windows RPC  49154/tcp open  msrpc              Microsoft Windows RPC  49155/tcp open  msrpc              Microsoft Windows RPC  Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .  Nmap done: 1 IP address (1 host up) scanned in 118.18 seconds


开始


访问该地址的80端口,自动跳转出一个websoft9的运维页面。

我查了一下websoft9这个软件,主要用于提供软件的自动化部署,帮助客户在云服务器上简化企业级软件的安装部署。第一眼看到页面,最先看到的是网站根目录,然后下面的账号密码(不能是真的吧),然后左侧的功能栏里还有数据库管理、phpinfo功能,这,,,这是在勾引我吗?

我打算先用网页上留下的账号和密码登录下试试看,万一呢(手动滑稽~)。

进去了。。。以前看公众号实战文章的时候,很多大佬用弱口令进去了,我还酸我怎么就碰不到这样的站,看样子是自己的经验还是太少了!


写入webshell


连上数据库之后我们可以写个webshell,用mysql的日志或是into outfile的方式。我这里使用的是日志的方式,网站根目录咱们是知道的C:wwwroot。

写入后访问发现报not found,怀疑根路径有问题,所以还是通过websoft9自带的phpinfo查看DOCUMENT_ADDR确认,发现根路径为C:wwwrootwww.example.com(这个时候我才想起好好看看phpinfo,不合格啊不合格。信息收集在渗透测试中相当重要)。

重新尝试写入webshell。

看结果是成了。

蚁剑连接成功。

连接之后看下权限,system我去,好高。

看一下有没有安装杀毒软件,发现没有安装。

wmic /node:localhost /namespace:rootSecurityCenter2 path AntiVirusProduct Get DisplayName | findstr /V /B /C:displayName || echo No Antivirus installed

这几个乱码的内容是:

错误:  描述 = 无效命名空间  No Antivirus installed

命令查看目标服务器的3389端口是开着的,腾讯云的Windows主机,远程端口可不是开着嘛~。~,直到这里都好顺利啊。


尝试获取管理员密码


既然可以执行命令,权限也有了,那就抓一下管理员的密码吧。我在目标服务器上传了procdump64,将内存文件lsass.exe导出为dmp文件,但目标服务器是Windows Server 2012 R2 Datacenter Edition,在上传procdump64之前,我先在我的靶机上试了下,一样的系统,发现不行,但我还是想试试,干!

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

从蚁剑上下载dmp文件时,提示下载失败,猜测可能是网速的问题,因为我这代理太次了。这里提醒一下,如果到目标主机的网速比较慢,蚁剑连接、上传/下载文件等操作可能会失败。

直接访问该文件下载。

使用mimikatz进行解析,没有明文密码,果然失败。

关于Windows Server 2012 R2 Datacenter使用mimikatz获取明文密码,我在我的靶机上做了实验。不管是直接使用mimikatz读取还是先procdump64取出,再用mimikatz解析都读不出明文密码,但是可以尝试修改注册表。文章参考链接:

https://www.freebuf.com/sectool/96209.html。

在注册表中新建UseLogonCredential的DWORD项,值为1,下面是cmd中的命令。

reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetControlSecurityProvidersWDigest" /v UseLogonCredential /d 1 /t REG_DWORD /f

我试了一下,是可以的。

还有个问题就是,如果修改了注册表,注册表需要重新载入,我查了下,但并没有找到合适的方式。网上有重载explorer.exe进程的,但是我实验失败了,注册表没有更新成功(我需要的部分,其它部分有没有更新我不能肯定),而且使用这种方式会关闭已打开的窗口,下面是命令

更新注册表最好的方式是重启系统。

尝试添加新用户


那就试试新建用户吧,直接用新用户登录。但是蚁剑net user命令和systeminfo命令都没有回显,这没有回显我也不知道成没成功啊?想着先把命令先输入进去,看看能不能成功。执行完添加用户的命令尝试远程登录,失败!

最开始以为是蚁剑的问题,换上最近比较火的“哥斯拉”试试,也不行,看样子不是工具的问题,是我的问题。

那咋办哟。试试udf提权这种方式(突发奇想),虽然我是system权限了(捂脸哭),用mysql的sys_exec()或者sys_eval()试试。

mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的libplugin文件夹下,他没有这个文件夹,给他新建上,udf.dll文件在sqlmap中有,sqlmap里的udf.dll是经过编码的,需要先解码,解码的工具就在sqlmap/extra/cloak/cloak.py,命令:

 
python .cloak.py -d -i D:toolsqlmapdataudfmysqlwindows64lib_mysqludf_sys.dll_

解码完了就会在32或64下生成dll文件。

先看下mysql的版本信息,看是使用哪个位数的dll文件,这个位数不是操作系统的位数,是mysql软件的位数,也要看下mysql的目录位置(phpinfo中也有)。

尝试上传。

上传成功,创建函数试一下,命令(为什么不直接用蚁剑的数据库功能执行语句,因为连不上!哭泣!):

 
create function sys_exec returns string soname "lib_mysqludf_sys.dll";

尝试创建用户。

我在靶机(win7,phpstudy)上测试,虽然返回NULL,但是用户是正常添加了的。那这个用户添加上了吗?远程连一下试试看!失败了。后面又试了sys_eval(),虽然可以执行echo命令,但net命令依然是失效的。

py net1的绝杀


看样子net命令是用不了了,目标系统中文件是有的,然后在看目标系统有没有net命令的时候看到目录下有个net1.exe。想起之前看的乌云安全的文章,链接:https://mp.weixin.qq.com/s/XLa41N0d4TsOMllgo5QEvQ。文章中遇到的情况跟我很相似,Windows Server 2012 的系统、无法使用net、system权限,但作者比我还要麻烦一些。那我也试一下看看。

成了!

net与net1命令关系参考链接:

 
https://blog.51cto.com/xxcmd/1151515    http://www.safebase.cn/article-124482-1.html


总结


本次渗透其实并不复杂,较为简单,文章深度有限。我看了下这台主机,不太像安全人员使用的主机,倒有点像沦陷的“肉鸡”。不过话说回来,咱们hw期间有不少人使用自己买的云主机进行扫描等行为,有些上面还搭着靶机。个人觉得最好还是挂个代理什么的,安全人员也得安全一点。

这次测试纯属运气,一个弱口令解决了太多的问题,web方面的直接略过了,我也深深感受到了弱口令的危害。websoft9官方早已经认识到了这个问题,其在2月15日发布了一则新闻,就是说的弱密码的问题,参考链接:https://www.websoft9.com/news/passwordneedmodify。


最后一个问题


我在登录上目标服务器后,发现执行net命令也没有回显,这是为什么呢?(admln用户是后面新建的)

我查了下禁用net、systeminfo命令的方式,找到下面两种:

  • doskey net =  @

  • 如果是Path环境变量删除了“%SystemRoot%system32;”,则报'net'不是内部命令。

他使用的应该是第一种,不排除使用的我不知道的其它方式,如果doskey net = (空),那么net功能的作用就恢复了(我没有在目标服务器上试)。如果真的是第一种的话,我是不是可以直接在蚁剑的虚拟终端中尝试使用doskey呢?

参与评论