HTB PivotAPI - 疯狂难度、复杂域渗透和逆向启蒙靶机
免责声明
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
笔记目录:
1、环境介绍
kali攻击机IP地址
靶机IP地址
2、信息收集
nmap四扫
-sT 指定TCP协议扫描
为方便后续操作,格式化扫描结果
-sV 探测各服务的版本
-sC 用默认脚本进行扫描
-O 操作系统扫描
从上面所知,暴露出很多有价值的信息,是一台域控制器,比如:ftp服务器暴露出可以匿名登陆和相关文件,389端口服务版本信息上暴露出两个域名信息
为便于资源访问,在域渗透的时候,要把域名写进攻击机的hosts文件中
但有可能还有的域名没有暴露出来,可以进行下一步的区域传输,但一般靶机是不会开放的,因为是重大漏洞,所以这里暂时就没有必要
-sU 指定UDP协议扫描
--script=vuln 默认漏洞脚本扫描
除了各项服务的识别,并没有识别出明确的漏洞
3、初步尝试登陆
ftp匿名登陆拿文件
-m 相当于一个快捷指令
这里密码可以为空
查看下载的文件,莫名的文件最好不要直接打开,可以先遍历一下,使用exiftool
渗透时,对于文件名,作者名都要敏感
提取敏感用户名信息
gerp:
-i 忽略大小写
-v 反向查找,不包含某某某
-E 启动扩展模式正则表达式
awk -F 用“:”分割,打印第二列
uniq 重复的删除掉
tail -n 显示结尾的n行内容
sort 排序
tee 保存起来
查看文档、文件
大多都是堆、堆栈、缓冲区溢出等资料
通过ftp的渗透,现在我们唯一能明确的就是得到了一组用户名,
试图从smb服务进行探测
验证445端口的状态
收集smb共享的信息
检测到一个SMB,同时也建立了session,但是有session是错误的,访问拒绝,认证失败
看能否列出
-N 指定空密码
从以上得知SMB再没有用户凭据的情况下无妨访问
试图从用户名进行暴力破解
在域渗透的情况下,拿到用户名,一定要想到可以暴力破解
看一下rpc能否匿名访问
-U 指定用户名
-N 密码
枚举域用户,显示拒接访问
查找域信息,同样拒绝访问
可以得知没有凭据的情况下,都是拒绝的
4、域渗透
kerbrute 是一个快速暴力破解或枚举有效的活动目录账号,是通过kerberos协议域验证方式
Mac M芯片编译
在后面追加arm64
编译运行,发现没有go命令,安装
再次编译,自动从github下生成适合M芯片的程序
枚举用户
--domain 指定域
--dc 目标
-t 线程
后面指定字典
补充到之前的用户列表中
尝试GetNPUsers.py
看一下能否获取到有效用户名的TGT,这个尝试我们要用到impacket框架中的GetNPUsers.py脚本工具
工具介绍:查询目标域,找到不需要域认证的用户,导出TGT以供破解
更新搜索数据库
搜索,并设置环境变量
-i 忽略大小写
-no-pass 不要请求密码
-dc-ip 目标
-usersfile 指定用户列表
获得到一个用户的Hash
破解Hash
试图用前面关键字筛选,因为前面一般是根类型相关的
-i 忽略大小写
hashcat 暴力破解,很快明文就破解出来了:Roper41555
用john也同样,让他自己指定类型
-w 字典
尝试进行登陆
使用ssh进行登陆
不对,但可以看到,kaorz是可以进行密码登陆的,可能kaorz没有ssh的权限账号,或者密码不对
使用kerbrute中的GetNPUsers.py脚本
域名/用户:密码
没有记录被找到,就是说kaorz不与SPN相关,
使用数据库进行登陆
用户kaorz登陆错误,就是说这个用户权限不够
尝试用bloodhound查看这个用户的攻击路径
安装bloodhound
初始化数据库
sudo neo4j restart
bloodhound-python 域信息采集器
-c 采集类型
-u 用户名
-p 密码
-d 域名
-dc 域库
-ns 目标
--zip 打包
unzip -l 不解压列出里面类容
启动数据库主程序,导入刚刚采集的数据压缩包文件
查看我们已经拿下的资产KAORZ,所知它不能控制任何其他目标
查看整个域的信息,也没有
再次查看smb共享
之前用匿名用户没有任何结果,这次用我们kaorz这组用户尝试登陆
建立了一个session会话,但还是不能访问本地变量‘priv_status',不能映射出共享信息
可能是我们应用问题,看提示不太像,试试其他的交叉验证
-shares 列出共享
通过上面,发现几个可以读的共享,便用smbclient查看,有文件就下载出来
5、敏感文件分析
查看得知是Outlook的邮件信息,尝试进行读取
使用转换器msgconvert工具,使用xdg-open打开
还有个exe的文件,先用file查看文件原数据
查看文件内容
ldd 查看是否有链接库的情况
6、逆向分析
打开文件,查看得知需要动态逆向
这里我们把文件复制到windows 下,使用Sysinternals套件
可以捕捉到系统所有系统行为,注册表、文件、网络、进程等
过滤出与我们相关的文件信息
执行文件
查看到总共有1355条,可以进行多次清空,执行,确定程序执行完了
查看创建的临时文件,批处理文件
临时文件进行捕捉,持久化,可以进行权限修改,就可以了
拒绝删除子文件和文件
查看临时文件
分析得知,整个文件就是创建一个oracle.txt之后,脚本会写入一个powershell命令到monta.ps1中,这个命令会读取oracle.txt内容,合并所有行,去掉空格,将结果内容Base64解码,并保存二进制文件restart-service.exe中,然后使用powershell脚本执行,并删除
这里我们还是修改一下,做持久化,让删除的文件不再删除,命令删除掉
文件最开始也有限制条件,只允许那3个用户,这里也修改一下,允许全部
执行我们修改过的批处理文件
综合前面情况,我们最想拿到restart-service.exe中的登陆凭据
我们再次拿到kali中分析
查看文件类型,可识别字符
因为太多,我们这里直接进行推断的过滤
-i 不区分大小写
再次使用ghidra静态逆向看一下
查看到MinGW,得知存在一个伪重定义问题,常见于一个动态链接库文件,没有正确配置pseudo-relocation,或者期望进行重新定位,但dll本身没这个消息
再次复制到windows 中进行动态逆向捕捉
进行捕获windows下API调用,函数调用,参数值、函数值的应用
如工具:Process Monitor、API Monitor
使用API Monitor
筛选敏感信息,查找到我们想要的明文信息,copy到kali中
这样通过API Monitor这个逆向工具,获得数据库连接凭据,但是通过之前邮件,我们知道数据库已经升级到MSSQL,但依旧有撞库的可能
打开之前bloodhound,查看
可以看到并没有,svc_oracle这个用户,基本判定这个凭据无效
但是根据根据上面凭据推测命名规则
根据邮件替换年份,这种推测是合理的,验证得知,我们推测是正确的
尝试通过新的svc_mssql用户和凭据进行登陆
尝试拿到系统立足点,但失败
尝试数据库,失败
猜想有可能svc_mssql就是系统用户,并非数据库用户,这时候我们应该想到之前逆向的时候bat文件中的用户,但你更应该想到mssql默认的用户密码
尝试通过默认用户sa登陆mssql数据看
搜索得知mssql的默认用户为sa
登陆成功
尝试看看是否可以激活cmdshell
可以看到是已经激活了系统shell
查看一些系统信息systeminfo
看当前用户有哪些权限
可以看到SeImpersonatePrivilege权限可以在windows10或2019上进行提权
完全值得尝试,但我们先进行域渗透的方式进行渗透,最后再进行这个
查看用户
查看svc_mssql用户的详细信息
查看内部服务是开放
mssqlproxy代理
mssqlproxy是一个工具包,旨在通过套接字重用在受限环境中通过受损的Microsoft SQL Server执行横向移动。客户端需要在SQL服务器上具有impacket和sysadmin权限。
得知我们现有sa的用户是满足条件的
将这个库克隆到本地
根据github上工具帮助视频教程,先要激活ole,然后上传动态文件
然后结束这个数据库的shell,继续根据视频走
现在需要一个连接库assembly.dll,但目前只有assembly的源码文件,需要进行编译,我们没有编译环境,就回到github看看有没有现成的
这里我们直接拿到编译文件
继续安装mssqlproxy的帮助视频走
-reciclador 指定刚刚传到靶机中的文件连接库文件
可以看到1337端口启动监听
看网络状态,是否成功
配置一下proxychains文件
先测试下,看mssqlproxy是否生效,同时可以看到日志有一个新的连接进来
这样我们就可以尝试evil-winrm shell
连接成功,查看相关信息
查看桌面上下载的文件
另一个文件是.kdbx,便可得知Keepass,这是个开源的密码管理工具,里面存的密码
用命令行访问工具kpcli,先安装
现在想让他读取credentials.kdbx数据库文件
发现需要密码,这里还要做一次破解
使用keepass2john生成这个数据库文件中间hash
使用hashcat进行破解,获得密码
现在再回到读取.kdbx文件
获得用户和密码
获取user flag
现在我们要访问DEVELOPERS组,可以发现3V4SiON-->dr.zaiuss-->superfume对下都有完全权限,
所以可以直接改密码
发现这个用户无法使用ssh登陆
所以我们再回到代理监听,进行proxychains连接
再使用dr.zaiuss用户修改superfume用户密码
再登陆superfume用户
查看文件并下载
查看下载的文件
再次进行逆向分析
dnSpy工具 .Net逆向分析终极工具
通过逆向分析,设置断点,获取新的凭据
因为实在jari家目录中获取到的文件,所以我们这里再次尝试
再查看jari的一级控制对象,修改gibdeon和stooormq密码
因为rpc是开放的,我们换另一种登陆方式
验证修改的密码是否生效,成功
查看gibdeon可以给我们哪些攻击路径
我们登陆进去查看哪条路线可能性最大
看哪个可以读LAPS,就可以拿到系统管理员权限
可知,lothbrok用户可以读取LAPS
综合可知,从lothbrok用户提权到administrator
从gibdeon用户修改lothbrok用户密码
读取LAPS工具
读取到administrator凭据
验证administrator凭据
通过之前的信息,查看到语种不一样,所以这里administrator的拼写是administrador
证明已经拿到了管理员权限
获取系统flag
查看通过哪种方法获得shell
SSH不行
WinRM也不行
使用psexec.py,是先通过SMB共享,再目标攻击机上创建一个会话,然后上传可执行文件,再启动这个会话
查找flag
渗透测试成功!!!!
补充
最开始我们看到数据库mssql的默认用户为sa有SeImpersonatePrivilege权限
尝试激活cmdshell,就是这个权限
准备工具
运行mssql_shell.py脚本
成功,现在就可以尝试上传利用文件
利用,报错,应该是系统限制了