標題:LDAP 協議相關

taibeihacker

Moderator

1 目录服务简介​

日常生活中使用的電話薄內記錄著親朋好友的姓名、電話與地址等數據,它就是telephone directory(電話目錄);計算機中的文件系統(file system)內記錄著文件的文件名、大小與日期等數據,它就是file directory(文件目錄)。
如果這些目錄內的數據能夠由系統加以整理,用戶就能夠容易且迅速地查找到所需的數據,而directory service(目錄服務)提供的服務,就是要達到此目的。
目錄服務是一個特殊的非關係型數據庫,用來保存描述性的、基於屬性的詳細信息,支持過濾功能。 這種數據庫與我們常⻅的關係型數據庫(Mysql、SQL Server、Oracle等)的區別在於目錄服務以樹狀的層次結構來存儲數據,就好像Linux/Unix 系統中的文件目錄一樣。此外,目錄服務是一個專⻔為搜索和瀏覽而優化的數據庫,有著優異的讀性能,但寫性能差,並且沒有事務處理、回滾等複雜功能,不適於存儲修改頻繁的數據。
綜上所述,目錄服務更適用於存儲如組織架構之類的信息。

2 LDAP 简介​

LDAP(Light Directory Access Portocol)是基於X.500 標準的輕量級目錄訪問協議。 LDAP 協議之前有一個X.500 DAP 協議規範,該協議十分複雜,是一個重量級的協議,後來對X.500 進行了簡化,誕生了LDAP 協議,與X.500 相比變得較為輕量,其實LDAP 協議依然複雜。
LDAP 約定了Client 與Server 之間的信息交互格式、使用的端口號、認證方式等內容。而LDAP 協議的實現,有著眾多版本,例如微軟的Active Directory 是LDAP 在Windows 上的實現,AD 實現了LDAP 所需的樹形數據庫、具體如何解析請求數據並到數據庫查詢然後返回結果等功能。再例如OpenLDAP 是可以運行在Linux 上的LDAP 協議的開源實現。而我們平常說的LDAP Server,一般指的是安裝並配置了Active Directory、OpenLDAP 這些程序的服務器。

3 LDAP 的基本模型​

每一個系統、協議都會有屬於自己的模型,LDAP 也不例外,在了解LDAP 的基本模型之前我們需要先了解幾個LDAP 的目錄樹概念:
目錄樹:在一個目錄服務系統中,整個目錄信息集可以表示為一個目錄信息樹,樹中的每個節點是一個條目。
條目:每個條目就是一條記錄,每個條目有自己的唯一可區別的名稱(DN)。
對像類:objectClass,與某個實體類型對應的一組屬性,對像類是可以繼承的,這樣父類的必須屬
性也會被繼承下來。
屬性:描述條目的某個方面的信息,一個屬性由一個屬性類型和一個或多個屬性值組成,屬性有必須屬性和非必須屬性。
LDAP 目錄以樹狀的層次結構來存儲數據,最頂層即根部稱作「基準DN」,形如dc=geekby,dc=xyz 或者ou=geekby.xyz,前一種方式更為靈活也是Windows AD 中使用的方式。在根目錄的下面有很多的文件和目錄,為了把這些大量的數據從邏輯上分開,LDAP 像其它的目錄服務協議一樣使用OU(Organization Unit),可以用來表示公司內部機構,如部⻔等,也可以用來表示設備、人員等。同時OU 還可以有子OU,用來表示更為細緻的分類。 LDAP 中每一條記錄都有一個唯一的區別於其它記錄的名字DN(Distinguished Name),其處在「葉子」位置的部分稱作RDN;如dn:cn=tom,ou=animals,dc=geekby,dc=xyz 中tom 即為RDN;RDN 在一個OU 中必須是唯一的。
因為LDAP 數據是「樹」狀的,而且這棵樹是可以無限延伸的,假設你要樹上的一條記錄,如何尋找它的位置呢?當然首先要說明是哪一棵樹(dc),然後是從樹根到那個蘋果所經過的所有「分叉」(ou),最後就是這個蘋果的名字(cn)。知道了樹(dc=geekby,dc=xyz),分叉(ou=IT,ou=Worker,ou=Pentester),蘋果(cn=abc),就可以找到我們想要的蘋果了:
1
dn:cn=abc,ou=IT,ou=Worker,ou=Pentester,dc=geekby,dc=xyz
LDAP 的功能模型中定義了一系列利用LDAP 協議的操作。它包含了三個部分:
查詢操作(Interrogation Operations):容許查詢目錄和取得數據。它包含Search Operating 和Compare Operation。
更新操作(Update Operations):容許添加(ADD)、刪除(Delete)、重命名(Rename)和改變目錄(Modify)
認證和管理操作(Authentication And Control Operations)容許客戶端在目錄中識別自己,並且能夠控制一個Session 的性質。

4 LDAP 和 AD 的关系​

Active Directory 是微軟基於LDAP 協議的一套解決方案(LDAP 服務器+ 應用), 而LDAP 是與AD 交互的協議之一。
Active Directory 解決了細粒度的權限控制「誰」以「什麼權限」訪問「什麼」。 AD 在LDAP v3 規範之上還有自定義擴展,例如,帳戶鎖定,密碼到期等。

5 利用 LDAP 收集域信息​

通常情況下,任何一名認證用戶都可以通過LDAP 來獲取大量有趣的域信息。因此,在信息收集階段,可以利用LDAP 查詢、整理域環境的相關信息。

5.1 相关工具​

adfind 可以在命令下獲取域的詳細信息,用法參考:http://www.joeware.net/freetools/tools/adfind/usage.htm
ADExplorer 是獨立的可執行軟件,無需安裝。 除了查詢域信息外,ADExplorer 還可以拍攝快照,可以快照保存在本地,並可以使用ADExplorer 打開進行操作。
ldapsearch
LDAPDomainDump 為python 開發,可以通過LDAP 收集和解析數據,並將其輸出為人類可讀的HTML 格式以及機器可讀的JSON 和CSV/TSV 格式。
1
2
3
4
5
domain_groups: 目標域的組列表
domain_users: 目標域的用戶列表
domain_computers: 目標域的計算機賬號列表
domain_policy: 域策略,例如是否需要密碼等
domain_trusts: 傳入和傳出域屬性以及是否受信任

5.2 获取域信息实例​

環境:
1
2
3
域控:192.168.66.26 (dc.company.com)
域用戶憑證:pentest\win7user:123456aB
使用工具Adfind.exe
下面列出了Adfind 的一些使用實例,主要是對工具參數進行介紹。我們可以根據需求修改命令,查詢我們所關注的任何信息。比如查詢已控憑證所屬的組、查詢特定組的成員、根據計算機名推測用戶可能有權限的計算機等。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#查詢域內所有用戶詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc u:*
#查詢域內特定用戶詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc u:test
#查詢域內特定用戶特定信息(mail)
adfind -h 10.1.26.128 -u company\test -up Geekby -sc u:test mail
#查詢域內所有用戶dn信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc u:* -dn
#查詢域內用戶數量
adfind -h 10.1.26.128 -u company\test -up Geekby -sc u:* -c
#查詢域內所有組詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc g:*
#查詢域內組名內包含“Admin”的所有組詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc g:*Admin* #查詢域內所有OU詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc o:* #查詢域內所有計算機詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc c:* #查詢域內所有站點詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc site:* #查詢域內所有子網詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc subnet:* #查詢域的信任關係
adfind -h 10.1.26.128 -u company\test -up Geekby -sc trustdmp #查詢域內spn的詳細信息
adfind -h 10.1.26.128 -u company\test -up Geekby -sc spn:*
#搜索禁用的用戶dn
adfind -h 10.1.26.128 -u company\test -up Geekby -b DC=company,DC=com -f userAccountControl:AND:=514 -dn
 
返回
上方