
nmap

kerberos + ldap + smb 조합 -> ad서버.

그러나 http 접속이 안 된다,,,
smb도 아직 계정 정보를 모름. 그럼 이 계정 정보를 가질지도 모르는 ldap에 접속해봄. 검색해보니, 별도의 ldapsearch라는 툴이 필요함. 폰박스엔 이미 있는 듯.

ldap 익명 접속 시도해보니 쭉 나온다. 이 말은 즉슨 익명으로 사용자 계정 정보를 볼 수 있다는 뜻.
그럼 사용자 계정을 찾아서. 인증을 거칠건데, 앞에서 NMAP으로 확인했듯이 kerberos를 쓰고 있으므로 tgt를 받아야 함.
그럼 그중, TGT를 받을 수 있는 계정을 찾아보자.
계정 정보를 쉽게 보기 위해 (hacktricks 안내에 따라) 다음 툴을 설치 후 확인해본다.
https://angelica.gitbook.io/hacktricks/network-services-pentesting/pentesting-ldap
389, 636, 3268, 3269 - Pentesting LDAP | hacktricks
angelica.gitbook.io

실행해보면 28명의 유저가 발견됨.


이걸 gpt에게 맡겨 분석을 맡겼다. 원래는 이 중 비번이 같이 있는 계정을 찾아보려했는데, 그건 안 되는 것 같다.

그래서 어떻게 할지 고민하다가, 대신 tgt 익명 로그인 가능한 계정이 있는지 물어봤다.

추가 계정도 다시 검색해봄. 이번에는 312명이다.

너무 많다,, 그래서 여기서 다시 저 tgt권한 있는것만 보자 하고 해봤는데 역시나 안 뜸

여기서 여러가지 시도를 해보다가,, 한가지 방법을 찾음.



svc-가 붙은 계정이 중요한 이유는 보통 서비스 계정이기 때문이다. 서비스 계정이 보통 느슨한 경우가 많다고,,,한다,,
이제 해당 서비스 계정으로 TGT를 받아보려한다. 비밀번호를 모르지만, 만약 보안이 느슨하다면 받을 수 있을 것이다.
TGT 획득에 성공함! 이제 이 해시를 다시 원본으로 돌려보면 비밀번호를 알 수 있겠다.

해시는 이전에 배운 방식대로, john-the-ripper 툴을 활용해서 rockyou.txt로 돌려볼거임.
바로 비번이 획득되었다!

보통은 이걸 얻었으면 ssh에 접속하는데, 이번 경우에는 윈도우의 ssh인 winRM에 접속 시도를 해보자.
비번: s3rvice

유저 플래그 획득!
다음 권한 상승.
이제는 블러드하운드 툴이 필요함. 기능 사용을 위한 추가적인 툴들을 설치해주자.

그리고 바로 winRM에서 업로드!

블러드하운드를 사용하려면, 먼저 sharphound로 정보 수집이 필요함.

블러드하운드.zip이 생성됨.

확인해주자. 다운 ㄱㄱ.

실행해주자.

해당 툴의 사용법은 래드캣의 부원분의 강의를 참고했다.
+아래 자료도 참고.
https://www.xn--hy1b43d247a.com/enumeration/bloodhound
블러드하운드 | 레드팀 플레이북
www.xn--hy1b43d247a.com
기본은 id:passwd = neo4j: neo4j임.
이제 우리가 원하는 유저를 검색해서, 그룹을 확인해보자.
ad서버 상 svc-alfresco라는 계정이 어느 그룹에 속해있는지를 보여준다.
우선 난 svc-alfresco계정 권한이 있음을 표시해줌.

각 그룹이 어떤 기능을 가지는지 살펴보자.
일단 처음에 직접적으로 바로 연결되는 건 이 그룹이다.
DOMAIN USERS@HTB.LOCAL: 도메인의 일반 사용자이다.
SERVICE ACCOUNTS@HTB.LOCAL: 서비스 계정이라는 뜻. 이미 알고 있는 정보다.
그리고 그 그룹은 또 어느 그룹의 일부인지도 보자.
PRIVILEGED IT ACCOUNTS@HTB.LOCAL: 커스텀 그룹임. IT그룹 계정들을 모아둔 것 같다.
REMOTE MANAGEMENT USERS@HTB.LOCAL: 원격 관리 권한을 가지는 것 같다. winRM에 관한 이야기인가?
ACCOUNT OPERATORS@HTB.LOCAL: 계정 관리 담당 그룹. 이걸로 권한 설정이 가능하다!!!
-> 즉, 저 account 그룹의 권한을 사용하면 root권한을 획득할 수 있을 것 같다.
이 그룹이 정확히 뭘 할 수 있는지 좀 더 자세히 알아보자.

즉 계정 생성, 그룹 배치정도는 가능하지만 루트로 권한 수정은 어려워보임,,
어떻게 관리자 권한까지 상승할 수 있을지는, 추가 쿼리를 던져 찾아보자.

Shortest Paths to Domain Admins from Owned Principals: 내가 Owned로 표시한 계정에서 Domain Admins까지 가는 가장 짧은 경로
Shortest Path from Owned Principals: 내가 Owned로 표시한 계정에서 갈 수 있는 짧은 경로들
Shortest Paths to High Value Targets: 관리자만 보는 게 아니라, 중요한 대상 전체를 봄.
Find Shortest Paths to Domain Admins: 이것도 관리자까지 가는 경로를 찾는 쿼리인데, 시작점이 네 Owned 계정으로 고정된 게 아닐 수 있음.
일단 맨 위에 걸 해보자.

지피티 설명으로는 다음과 같다.
내가 먹은 일반 유저
→ Service Accounts 그룹 소속
→ Privileged IT Accounts 그룹 소속
→ FOREST.HTB.LOCAL 서버에 PowerShell 원격 접속 가능
→ 그 서버에 Domain Admin 계정 세션이 있음
→ 그래서 Domain Admin까지 이어질 “가능성 있는 경로”로 표시됨
뭔가 정보가 부족하다,,
Shortest Path to High Value Targets을 해보자.

엄~청 복잡하다,,
일단 목표부터 찾아보자. 우린 admin을 원하는데, 보면 뭔가 admin표시가 된 계정이 많음. 그리고 그 계정들은 모두 htb.local에 연결이 되어있다. 그럼 일단 목표를 얘 htb.local 로 설정!


그럼 저기로 가려면 또 어디를 거쳐야 할까?

보면 admin계정 연결을 빼면 저 2개 정도가 보이는데, 저 다이아몬드 표시가 거슬린다.
검색해보니 저 다이아몬드 표시는 "High Value Target 표시. 이건 공격 방법이나 권한 관계가 아님." 이라고 한다.
그럼 저 exchange를 봐야할 것 같다..
저 사이 간선을 보면 WriteDacl이라 적혀있음. 무슨 뜻인지 검색해보자.
-> WriteDacl = 대상 객체의 권한 목록(DACL)을 수정할 수 있는 권한
여기서 손쉽게 우리 svc 유저 -> 저 exchange노드까지 가는 경로를 볼 수 있는 방법이 있다고 한다.
아래 과정을 따라가자.



이렇게 하고 경로 찾기 클릭!

최종 경로: 현재 유저 < SERVICE ACCOUNTS 그룹 멤버 < PRIVILEGED IT ACCOUNTS 그룹 멤버 < PRIVILEGED IT ACCOUNTS 그룹 < ACCOUNT OPERATORS 그룹 멤버 => GenericAll 권한 가짐: GenericAll = 대상 AD 객체에 대한 거의 모든 제어 권한 -> 최종 목적지 도달!
저 그룹은 그냥 그룹 자체라 별도의 설명이나 명령어는 필요없을 것 같고, 저 권한 2개에 대해서는 어떻게 할지는 그냥 help클릭하면 뜬다.


이제 저기 설명에 나온 걸 그대로 따라해서, 권한 상승까지 이어가보자.
번역본 설명에 따르면 이렇다.
우선 1. 새 계정 만들기

2. Exchange Windows Permissions 그룹에 계정 배치하기

3. 원격 winRM도 접속 가능하도록 하기

여기까진 WriteDacl권한을 사용해 한 거고, 이 다음은 GenericAll권한을 활용하면 된다.
이전에 다운받아둔 요 파일도 업로드 해준다. PowerShell로 AD 권한을 조작하도록 도와주는 툴이다.

1) 스크립트 안의 함수들 다 불러오기
2) john 계정의 비번 -> 안전한 문자열로 만들기
3) john 계정 인증 객체 만들기
4) john에게 DCSync 권한 주기


여러 계정들에 대한 해시가 뜨지만, 여기서 중요한 건 관리자 권한의 해시다.

맨위에 나오는 NTML해시를 사용

접속 성공!
이제 루트 플래그 획득하고 끝~

