티스토리 뷰

CTF/root me

Windows - LDAP User KerbeRoastable

Noctis41 2024. 8. 25. 16:37

해당 문제는 root me의 LDAP User KerbeRoastable 문제에 대한 풀이입니다.


 

LDAP란 무엇인가?

LDAP(경량 디렉터리 액세스 프로토콜, Lightweight Directory Access Protocol)는 네트워크 상에서 디렉터리 서비스를 질의하고 수정할 수 있게 하는 표준 프로토콜입니다. 주로 조직 내의 사용자, 그룹, 장치, 권한 등의 정보를 저장하고 관리하는 데 사용됩니다. LDAP는 계층 구조로 된 디렉터리 정보를 처리하며, 각 엔트리(예: 사용자, 그룹 등)는 고유한 DN(Distinguished Name)을 가진다.

  • DN(Distinguished Name): LDAP의 각 엔트리를 고유하게 식별하는 이름이다.
  • DC(Domain Component): 도메인 구성 요소입니다. 도메인 이름의 각 부분을 나타낸다. 
  • CN(Common Name): 공통 이름입니다. 주로 사용자의 이름이나 서비스 이름 등을 나타낸다.
  • OU(Organizational Unit): 조직 단위입니다. 조직 내의 부서나 팀 등을 나타내며, 계층 구조를 형성할 수 있다.

Kerberoasting이란 무엇인가?

Kerberoasting은 Active Directory 환경에서 Kerberos 인증 시스템의 취약점을 악용하는 공격 기법이다.

공격자는 도메인 서비스 계정에 할당된 Kerberos 티켓을 덤프한 후 이를 오프라인에서 크랙하여 해당 계정의 비밀번호를 알아낼 수 있다. Kerberos는 네트워크 인증 프로토콜로, 도메인에 가입된 사용자와 서비스를 안전하게 인증합니다.

  • Service Principal Name(SPN): Kerberos 인증에서 사용되는 서비스의 고유 식별자입니다. Kerberoasting의 대상이 되는 계정은 SPN을 가지고 있으며, 이 SPN을 통해 Kerberos 티켓을 발급받을 수 있습니다.

해당 문제는 json파일 내에 있는 이메일을 찾는 문제이기 때문에 문제에서 쓰라한 ldap2json 툴은 안쓰고 파이썬으로 코드를 짜면서 진행했다.

data가 딕셔너리(dict) 형식으로 되어 있고

그 첫 번째 키가 DC=local인 것으로 보아 JSON 파일은 LDAP 디렉터리의 계층 구조를 나타내고 있을 가능성이 크다.

이 경우, 최상위 딕셔너리의 각 키는 도메인 컴포넌트나 조직 단위(OU) 등을 나타내며 그 아래에 사용자나 그룹 등의 정보가 계층적으로 존재할 수 있다. 이 정보들을 기반으로 코드를 수정해보면 아래와 같이 수정할 수 있다.

현재 JSON 파일의 구조를 보면 최상위 키는 DC=local이고 그 아래에 DC=ROOTME라는 또 다른 키가 포함된 딕셔너리가 있다. 이 딕셔너리 안에는 objectClass, distinguishedName, instanceType, whenCreated, whenChanged 등의 키가 포함되어 있는 것을 알 수 있다.

이제 DC=ROOTME 아래의 구조를 좀 더 깊이 탐색해 사용자 정보를 찾으면 최종적으로 이메일을 알 수 있을 거 같다.

이제 정보를 어느정도 알았으면 구체적으로 사용자에 대한 정보를 알아야한다.

이메일이 나온것을 알 수 있다.

'CTF > root me' 카테고리의 다른 글

Command & Control - level 5  (0) 2024.08.30
Windows - NTDS Secret extraction  (0) 2024.08.26
Docker layers  (0) 2024.08.15
Capture this  (0) 2024.08.12
Oh My Grub  (0) 2024.08.07