티스토리 뷰
해당 문제는 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 |