
LDAP 기반의 Active Directory 사용자 및 그룹 열거 도구
ad-ldap-enum은 Active Directory에서 사용자/컴퓨터 및 그룹 멤버십을 수집하기 위해 개발된 Python 스크립트입니다. 대규모 Active Directory 환경에서는 NBTEnum과 같은 도구가 충분히 빠르지 않았습니다. 도메인 컨트롤러에 LDAP 쿼리를 실행함으로써 ad-ldap-enum은 특정 Active Directory 속성을 대상으로 삼아 그룹 멤버십을 신속하게 구성할 수 있습니다.
Domain_Group_Membership.csvExtended_Domain_User_Information.csvExtended_Domain_Computer_Information.csv-x/--excel 옵션 사용 시 단일 Excel 통합 문서이 도구는 Windows와 Linux에서 Python 3.10+로 빌드 및 테스트되었습니다. LDAP 연결 및 쿼리를 위해 msldap Python 패키지를 사용합니다. uv를 사용하여 ad-ldap-enum을 명령줄 도구로 설치하려면:
uv tool install git+https://github.com/CroweCybersecurity/ad-ldap-enum
설치 후, ad-ldap-enum을 실행하려면:
ad-ldap-enum --help
uv 대신 전통적인 pip를 사용하여 요구 사항을 설치/업그레이드할 수도 있습니다:
git clone https://github.com/CroweCybersecurity/ad-ldap-enum && cd ./ad-ldap-enum
python -m pip install -r 'requirements.txt'
usage: ad-ldap-enum [-h] (-n | -u USERNAME | -dn DISTINGUISHED_NAME) [-k] [-p PASSWORD] [-P] [--ccache CCACHE_FILE]
[--kirbi KIRBI_FILE] [--method {ldap,ldaps}] [--channel-binding {none,tls-server-end-point,tls-unique}]
[-t TIMEOUT] [-ql QUERY_LIMIT] [--debug] [--legacy]
[-x] [-o FILENAME_PREPEND] [--delay DELAY] [--jitter JITTER] [--page-size PAGE_SIZE]
-l LDAP_SERVER [--port PORT] -d DOMAIN [-a ALT_DOMAIN] [-e] [-4] [-6]
Active Directory LDAP 열거자
선택적 인수:
-h, --help 도움말 메시지를 표시하고 종료
-n, --null 익명/널 인증 사용
-u USERNAME, --username USERNAME
인증에 사용할 사용자 이름
-dn DISTINGUISHED_NAME, --distinguished_name DISTINGUISHED_NAME
단순 바인드 인증을 위한 고유 이름
-k, --kerberos Kerberos 인증 사용
-p PASSWORD, --password PASSWORD
비밀번호, "LM:NT" 해시, AES-128 키(32 hex), 또는 AES-256 키(64 hex)
-P, --prompt 비밀번호 입력 요청
--ccache CCACHE_FILE Kerberos 자격 증명 캐시 파일 경로(.ccache)
--kirbi KIRBI_FILE Kerberos 티켓 파일 경로(.kirbi)
--method {ldap,ldaps}
연결 방법: ldap(포트 389) 또는 ldaps(포트 636)
--channel-binding {none,tls-server-end-point,tls-unique}
보안 연결을 위한 채널 바인딩(기본값: tls-server-end-point)
-t TIMEOUT, --timeout TIMEOUT
연결 제한 시간(초, 기본값: 10)
-ql QUERY_LIMIT, --query_limit QUERY_LIMIT
쿼리 제한 시간(초, 기본값: 30)
--debug 디버그 로깅 활성화(msldap 내부 작업 세부 정보 표시)
--legacy 레거시 TSV 형식 사용(속성 수 감소)
-x, --excel 모든 워크시트가 포함된 Excel 파일 출력
-o FILENAME_PREPEND, --prepend FILENAME_PREPEND
출력 파일 이름에 추가할 문자열(기본값: ad-ldap-enum_)
OPSEC 매개변수:
--delay DELAY LDAP 쿼리 사이의 지연 시간(초, 기본값: 0.0)
--jitter JITTER 지연에 대한 임의 지터 비율(0.0~1.0, 예: 0.3 = ±30%)
--page-size PAGE_SIZE
LDAP 페이지 크기(기본값: 1000)
서버 매개변수:
-l LDAP_SERVER, --server LDAP_SERVER
LDAP 서버 FQDN 또는 IP 주소
--port PORT 사용자 지정 TCP 포트
-d DOMAIN, --domain DOMAIN
도메인 이름(Base DN으로도 사용됨)
-a ALT_DOMAIN, --alt-domain ALT_DOMAIN
LDAP 검색을 위한 대체 Base DN
-e, --nested 중첩 그룹 확장
-4, --inet IPv4만 사용
-6, --inet6 IPv6만 사용
빠른 예제:
# 인라인 비밀번호를 사용한 NTLM
ad-ldap-enum domain.tld/username:[email protected]
# 비밀번호 프롬프트를 사용한 NTLM(비밀번호 생략, -no-pass 사용하지 않음)
ad-ldap-enum domain.tld/[email protected] -p 'Password123!'
# 비밀번호를 사용한 Kerberos
ad-ldap-enum domain.tld/username:[email protected] -k
# NT 해시를 사용한 Kerberos(LM:NT)
ad-ldap-enum domain.tld/[email protected] -k -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
# LDAPS + 채널 바인딩
ad-ldap-enum domain.tld/username:[email protected] --method ldaps --channel-binding tls-server-end-point
-k, -hashes, -aesKey를 통한 비밀번호, NT 해시, AES-128, AES-256 키 인증--delay 매개변수--jitter 매개변수--page-size 매개변수