Pathfinder Walkthrough Video!😄
我在 0x00
开篇中有说过,在慢慢学习,和记录的过程当中,一个渗透测试学习者应该形成自己的学习思路,和测试工作流程。
这是第五篇博文,我个人的学习思路初步已经形成,那就是
nmap
一下HackTheBox
的目标机器,查看开放端口- 对照 Ports and Services,查询不熟悉的服务类型
- 大致上明白这个机器是用来做什么练习的,比如这个
Pathfinder
,是关于Kerberos
和ActiveDirectory
的 - 如果这个主题自己还不是很熟悉,那么就先找很多的资料看一下, 比如搜一下
pentest kerberos exploits
- 如果这个主题比较熟悉,那么直接切入,尝试获取控制权
大多数情况下,都是不熟悉的主题,因为我是个菜鸟😜!
我尽可能晚地去寻求 Walkthrough
的帮助,因为第一,这就像看电影,而 Walkthrough
就像是剧透,很扫兴;第二,形成了这样的习惯,之后不免会沦为工具党,对往后的发展也不好。因此,不到万不得已,我不会去看 Walkthrough
(前篇那个 Rotten Potato
的漏洞那真是没办法,怎么也找不到解决方案)。给自己定个大原则,总有好处的 😀
至于工作流程,现在说还太早。
Help Desk
对于 Kerberos
我一无所知,所以一下是我在尝试 Pathfinder
之前阅读的资料。
How does Kerberos Work?
Kerberos Exploits
Kerberos Exploitation Cheetsheet
Get to Know Kerberos Video
AD Series-part-I
AD Series-part-II
AD Pentest Methodology
如果大家和我一样对于 Kerberos
不太熟悉,那就请一定看完这些资料,很有帮助。我找的资料一定是英文的,毕竟这些都是别人的技术。有人说我读着累不累,不好意思我是英语系毕业,专八,所以哈哈哈哈,小小骄傲一下😄 除此之外就像我说的,我是个菜鸟,也永远是菜鸟的心态。
好了,现在准备接手 Pathfinder
。
Recon
Nmap
# Nmap 7.80 scan initiated Wed Apr 22 07:55:30 2020 as: nmap -sC -sV -p53,88,135,139,445,593,47001,49668,49673,49698 -oN nmap/nmap.txt 10.10.10.30
Nmap scan report for 10.10.10.30
Host is up (0.64s latency).
PORT STATE SERVICE VERSION
53/tcp open domain?
| fingerprint-strings:
| DNSVersionBindReqTCP:
| version
|_ bind
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2020-04-22 18:58:35Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49668/tcp open msrpc Microsoft Windows RPC
49673/tcp open msrpc Microsoft Windows RPC
49698/tcp open msrpc Microsoft Windows RPC
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.80%I=7%D=4/22%Time=5EA030C0%P=x86_64-pc-linux-gnu%r(DNSV
SF:ersionBindReqTCP,20,"\0\x1e\0\x06\x81\x04\0\x01\0\0\0\0\0\0\x07version\
SF:x04bind\0\0\x10\0\x03");
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: 7h02m51s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled and required
| smb2-time:
| date: 2020-04-22T18:59:39
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Apr 22 07:57:13 2020 -- 1 IP address (1 host up) scanned in 102.11 seconds
smb
,kerberos
,可以确定这是一个 active directory
相关的问题。
在上述阅读资料中,就有解决这个问题的方法。
Enumeration
Bloodhound-python
搜一下 bloodhound-python site:github.com
,按照提示安装。
笔者用
python3.8
安装之后,运行时会报digestmod
相关的错误,建议用python2
。或者也可以尝试3.7
等其他版本。
因为我们有一个登录信息了,sandra
:Password1234!
(移步 0x03
篇文章或者视频查看),所以可以直接跳到这一步。Bloodhound
可以把整个 DC (Domain Controller)
的信息,包括用户,组,内网的设备,以 json
的方式保存。
关于 Kerberos 和 Active Directory,可以单独开一篇文章记录一下整个原理,期待一下。
neo4j and bloodhound
apt install neo4j bloodhound
安装完之后先运行 neo4j
- neo4j start console
。
如果看到
no such file or directory
的错误,就手动创建一下run
和log
目录 -mkdir -p /usr/share/neo4j/run; mkdir -p /usr/share/neo4j/run
根据提示到浏览器访问 http://localhost:7474
,默认密码是 neo4j
,连接服务器之后会提示更改初始密码。
现在可以直接在命令行运行 bloodhound
,输入用户名密码登录。
将之前 bloodhound-python
拉取的几个 json
文件,逐一拖入 bloodhound
进行分析。
选择 Queries
。
这里我并不知道该如何选择,我挨个点了一遍,有一些请求会显示一个 Administrator
,点击之后看 Node Info
,看到了一连串的 False
,感觉没有什么能利用的空间。
点到 Find Principals with DCSync Rights
的时候,出现了另一个登录的用户(绿色标识登录到 DC
的用户)- svc_bes
。
点开这个用户查看一下 Node Info
。发现 ASREP Roastable
是 True
。
- 线索:有一个用户的
ASREP Roastable
是True
- 思路:在阅读过程中,诸如
kerberoasting
是一个很常见的攻击方式 - 搜索一下
asrep roasting
确认这是一个可以利用的账户。
该如何利用呢?答案大家可以到 之前提到过的这篇文章中找。
Impacket GetNPUsers.py
TGT hash
包含用户密码,获取到之后直接用 JTR
或者 hashcat
破解即可。
获得了 svc_bes
的登录密码。
- 线索:有两个登录信息
- 思路:能不能直接登录到目标机器上
- 操作:回看
nmap
结果,没有发现有什么可登录的端口。
Foothold
More Enumeration
重新 nmap
一下全部端口,查找登录服务。
结果一直报错,换成 unicornscan
试一下。
还是不行。再用 masscan
。
rate
不能太高,不然连之前的 88
端口都扫不到。
做了一些搜索,发现 5985
这个端口是用来远程管理的。
搜一下 pentest winrm
第一个出现的是 evil-winrm
。
先登录到 sandra
的账号看一下。
这个用户的几个目录都是空的。
我用 services
命令获取到 sandra
对于哪些服务有操作权限。
最后一个服务是 WinDefend
,好像是防火墙。
查看一下防火墙的运行状态。
权限不足。看一下进程。
这是刚才那个 sandra
有权限的进程。尝试杀掉。
权限不足。
扩展
不清楚用户信息让我很恼火,这篇文章又让事情进了一步。
可以得到指定用户的相关信息。但是还是没有权限的相关信息。
列出缓存的 ticket
,ticket
信息是相当重要的,也是信息泄露的一种。
最后我再回到 bloodhound
,仔细看了一下视图,原来视图上就会显示用户对于 DC
的权限 😂
好,找到了就好。
登录到 svc_bes
之后,可以在他的桌面找到该用户的 flag
。
Privilege Escalation
扩展阅读
当然先要看一下这个GetChangesAll
权限的意义
AD Related Vulnerable Permissions
Abusing AD Permissions
简单说这个权限和 DCSync
相关,搜索一下 pentest dcsync attack
,这篇文章里面就有我要的下一步操作。
Impacket secretsdump.py
扩展
这里补充一点,NTDS.dit
文件在 C:\Windows\NTDS\
目录,该文件包含 password hash
。
这是 secretsdump
的用法,还得加上一个 -dc-ip
。
原来 secretsdump.py
就是获取的 NTDS.dit
文件的内容。
至此,admin
的 hash
已经拿到了。
Lateral Movement
搜索 pentest login to windows with admin hash
,都是 PTH pass the hash
。这篇文章有我要找的答案。
Impacket psexec.py
原来这里导出的是 NTLM hash
。
这就是上面所说的包含 password hash
的文件。
在桌面上,可以找到 admin
的 flag
。
I'm in...
整个过程,详见顶部视频 😀
More
crackmapexec
找到了服务器上的 smb
目录,因为有 sandra
的密码,除了 ADMIN$
和 C$
,其余每个都可以登录查看。
有一个 GPP
相关的信息泄露,在之前阅读的 这篇文章中 可以找到。当 DC
管理员进行工作组权限相关操作的时候,敏感信息会被保存到 SYSVOL
当中,而 SYSVOL
是任何人都可以访问的。sandra
就访问到了 SYSVOL
中的内容,如果有敏感信息,就泄露了。
可惜这里并没有有用的信息。