LDAP(Lightweight Directory Access Protocol)은 네트워크 상에서 directory 서비스 내 데이터에 접근하고 관리할 수 있도록 하기 위한 프로토콜이다. 클라이언트와 서버 구조로 통신하며, 이를 테스트하기 위해 간단한 ldap 서버를 구축하였다.

서버는 MacOS 환경에서 OpenLDAP을 사용하여 구축하였다. 구축 과정은 아래 링크를 참고하여 진행할 수 있다.

 

5분 안에 구축하는 LDAP

Microsoft 에서 개발한 AD(Active Directory)는 디렉토리 서비스 공급자이며 윈도우OS 에서 디렉터리 안에 내용을 쉽게 검색 할 수 있도록 한다. 이런 공급자들이 쉽게 통신을 하기 위한 프로토콜이 LDAP(Li

co-de.tistory.com

 

서버 구축 후에는 아래 명령어를 이용하여 ldap 서비스를 구동할 수 있다.

$ sudo /usr/libexec/slapd -h ldap://localhost -d 50

 

테스트를 위한 클라이언트 프로그램으로는 ‘ldapsearch’를 이용하였으며, 이 때 사용한 명령어는 다음과 같다.

$ ldapsearch -x -D "uid=user1,ou=group-01,dc=test,dc=com" -H ldap://localhost -b "ou=group-01,dc=test,dc=com" -w asdf

명령어 구성 시 실제 접속에 필요한 도메인 정보 등은 무시한 채 임의의 데이터를 사용했다. 이는 현재 진행하는 작업이 서비스 접속 성공이 아닌 서비스 식별이기 때문에 이 부분에 초점을 맞추기 위함이다. 따라서 인증 실패 응답이 올 경우에도 해당 포트에서 서비스가 제공되고 있는 것으로 판단하였다. 실제로 포트가 열려있으며, 해당 포트에서 ldap 서비스가 제공 중일 경우 아래와 같이 인증 실패 응답을 확인할 수 있다.

ldap_bind: Invalid credentials (49)

만약 해당 포트에서 ldap이 서비스되고 있지 않을 경우에는 아래와 같은 응답을 확인할 수 있다.

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

이러한 과정을 네트워크 패킷 레벨에서 확인하면 다음과 같다.

서버에서 ldap이 서비스되고 있을 때에는 TCP 3-way handshake 후 LDAP 형태로 메시지를 교환한다. 그러나 ldap이 서비스되고 있지 않을 때에는 ldapsearch의 TCP SYN 패킷 이후 ICMP 형태로 Destination unreachable 응답이 오는 것을 확인할 수 있다.

ldap 서비스 중일 때
ldap 서비스 중이 아닐 때

 

'Penetration testing' 카테고리의 다른 글

서비스 식별: PostgreSQL (5432)  (0) 2023.09.01
서비스 식별: Submissions (587)  (0) 2023.09.01
서비스 식별: SMTPS (465)  (0) 2023.09.01
서비스 식별: HTTPS (443)  (0) 2023.09.01

+ Recent posts