0x04-HackTheBox-Pathfinder

Pathfinder Walkthrough Video! 😀

博客原文地址

我在 0x00 开篇中有说过,在慢慢学习,和记录的过程当中,一个渗透测试学习者应该形成自己的学习思路,和测试工作流程。

这是第五篇博文,我个人的学习思路初步已经形成,那就是

  • nmap 一下 HackTheBox 的目标机器,查看开放端口
  • 对照 Ports and Services,查询不熟悉的服务类型
  • 大致上明白这个机器是用来做什么练习的,比如这个 Pathfinder,是关于 KerberosActiveDirectory
  • 如果这个主题自己还不是很熟悉,那么就先找很多的资料看一下, 比如搜一下 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

smbkerberos,可以确定这是一个 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 的错误,就手动创建一下 runlog 目录 - 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 RoastableTrue
附上 Node Info Guide,解释了每一项的意思
在这里插入图片描述

  • 线索:有一个用户的 ASREP RoastableTrue
  • 思路:在阅读过程中,诸如 kerberoasting 是一个很常见的攻击方式
  • 搜索一下 asrep roasting
在这里插入图片描述

确认这是一个可以利用的账户。

扩展阅读
What is 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 有权限的进程。尝试杀掉。
在这里插入图片描述

权限不足。

扩展

不清楚用户信息让我很恼火,这篇文章又让事情进了一步。

在这里插入图片描述

可以得到指定用户的相关信息。但是还是没有权限的相关信息。

在这里插入图片描述

列出缓存的 ticketticket 信息是相当重要的,也是信息泄露的一种。

最后我再回到 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 文件的内容。

至此,adminhash 已经拿到了。

Lateral Movement

搜索 pentest login to windows with admin hash,都是 PTH pass the hash这篇文章有我要找的答案。

Impacket psexec.py

在这里插入图片描述

原来这里导出的是 NTLM hash

在这里插入图片描述

这就是上面所说的包含 password hash 的文件。

在桌面上,可以找到 adminflag

I'm in...

整个过程,详见顶部视频 😀

More

crackmapexec 找到了服务器上的 smb 目录,因为有 sandra 的密码,除了 ADMIN$C$,其余每个都可以登录查看。

在这里插入图片描述

有一个 GPP 相关的信息泄露,在之前阅读的 这篇文章中 可以找到。当 DC 管理员进行工作组权限相关操作的时候,敏感信息会被保存到 SYSVOL 当中,而 SYSVOL 是任何人都可以访问的。sandra 就访问到了 SYSVOL 中的内容,如果有敏感信息,就泄露了。
在这里插入图片描述

可惜这里并没有有用的信息。

推荐阅读更多精彩内容

  • Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。“所感兴趣的端口表格...
    令狐冲233阅读 1,514评论 0 4
  • Nmap 能够快速找到活动的主机和与该主机相关联的服务。Nmap 的功能还可以通过结合 Nmap 脚本引擎(通常缩...
    三月行者阅读 1,742评论 5 36
  • Help Desk 经过第一篇文章,我思考了一下,已经存在太多的 walkthrough,不应该再去写一样的文章,...
    darkie阅读 65评论 0 0
  • 这篇文章介绍了Mobile BI(移动商务智能)使用过程中涉及的各种身份认证的方式,主要目的是对这些方式的原理进行...
    雨_树阅读 697评论 1 2
  • 基本命令 扫描单一的一个主机:# nmap 192.168.1.1 扫描多个主机:# nmap 192.168.1...
    windbsy阅读 856评论 0 0