從WebShell到域控實戰詳解


出品|MS08067實驗室(www.ms08067.com)

滲透環境
  首先介紹此次滲透的環境:假設我們現在已經滲透了一台服務器PAVMSEF21,該服務器內網IP為10.51.0.21。掃描后發現內網網絡結構大概如圖所示,其中PAVMSEF21是連接外網和內網的關鍵節點,內網其他服務器均不能直接連接。

我們的滲透目標是通過一個普通的WebShell權限一步步地獲得域管權限,從而掌控整個內網。

一. 提升權限

  上傳免殺的Payload到機器名為PAVMSEF21、IP為10.51.0.21的服務器上,然后在“中國菜刀”或者WebShell下運行,如圖所示。

  獲得Meterpreter Shell后要做的第一件事情就是提權。通常,在滲透過程中很有可能只獲得了一個系統的Guest或User權限。低的權限級別將使我們受到很多的限制,所以必須將訪問權限從Guset提升到User,再到Administrator,最后到SYSTEM級別。
  我們先嘗試利用本地溢出漏洞提權,即使用本地漏洞的利用程序(Local Exploit)提升權限。也就是說,通過運行一些現成的、能造成溢出漏洞的Exploit,把用戶從User組或其他系統用戶組提升到Administrator組(或root)。
  此時,我們獲取的權限是一個普通域用戶權限,如圖所示。

  首先利用本地溢出漏洞提權,發現服務器補丁打得很全,嘗試利用MS1505、MS15078等,都以失敗告終,如圖所示。

  再嘗試繞過Windows賬戶控制(UAC),我們現在具有一個普通域用戶的權限。利用Bypass UAC模塊提權,又以失敗告終,如果成功會返回一個新的Meterpreter Shell,如圖所示。

  使用Bypass UAC模塊進行提權時,系統當前用戶必須在管理員組,而且用戶賬戶控制程序UAC設置為默認,即“僅在程序試圖更改我的計算機時通知我”,而且Bypass UAC模塊運行時會因為在目標機上創建多個文件而被殺毒軟件識別。我們沒能繞過UAC,可能是這兩個原因。
  其實提權沒有成功也不要緊,我們還是可以以此服務器為跳板,攻擊其他服務器的。

二. 信息收集

  我們此時雖然提權不成功,但還是可以進行域滲透測試的。有了內網的第一台機器的權限后,收集信息是很關鍵的一步,也是內網滲透中不可或缺的一部分。
  首先要查看當前機器的網絡環境,收集域里的相關信息,包括所有的用戶、所有的計算機,以及相關關鍵組的信息,下面列出了常用的命令及其作用,如圖所示。

net user /domain:查看域用戶。
net view /domain:查看有幾個域。
net view /domain:XXX:查看域內的主機。
net group /domain:查看域里面的組。
net group “domain computers” /domain:查看域內所有的主機名。
net group “domain admins” /domain:查看域管理員。
net group “domain controllers” /domain:查看域控制器。
net group “enterprise admins” /domain:查看企業管理組。
nettime/domain:查看時間服務器。

  通過收集以上信息,我們可以分析出很多重要的線索,例如內網是怎么划分的,各機器名的命名規則,根據機器名嘗試找出重要人物的計算機,以及目標機是否為多層域結構,關鍵是要探測出域管理員的名字和域服務器的名字等信息。

三. 獲取一台服務器的權限

  我們的目標是域服務器,此時有兩種情況:當前服務器可以直接攻擊域服務器和不可以直接攻擊域服務器。不可以直接攻擊又分為兩種情況:如果是權限不夠就需要提升權限;如果是不能連接到域服務器,則需要攻擊內網中某個可以連接到域服務器的服務器,然后以此為跳板再攻擊域服務器。
  現在因為權限問題不可以直接攻擊域服務器,整理下思路,可以采取以下方法繼續滲透。
— 使用Meterpreter目前擁有的權限添加內網路由,進行弱口令掃描。
— 使用PowerShell對內網進行掃描(要求目標機是Windows 7以上的服務器)。
— 架設Socks4a,然后Socks會自動進行內網掃描。
— 利用當前權限進行內網IPC$滲透。
— 其他方法。
  通過上面的分析,我們先選擇最簡單的方法,在net view的機器名里選擇一個和我們機器名相似的服務器來試試,不出意外的話,成功率很高,如圖所示。

  下面再給讀者溫習下經典的IPC$入侵。
  IPC$入侵,即通過使用Windows系統中默認啟動的IPC$共享獲得計算機控制權的入侵,在內網中極其常見。
  假設現在有一台IPC$主機:127.0.0.25,輸入以下命令。

D:>net use \127.0.0.25\ipc$      #連接127.0.0.25的IPC$共享
D:>copy srv.exe \127.0.0.25\ipc$      #復制srv.exe上去
D:>net time \127.0.0.25         #查時間
D:>at\127.0.0.25 10:50 srv.exe  #用at命令在10點50分啟動srv.exe(注意這里設置的時間要比主機時間快)

  上述命令中的at就是讓計算機在指定的時間做指定事情的命令(例如運行程序)。
這里把免殺的Payload上傳到PAVMSEP131服務器,然后利用at命令啟動Payload,反彈回Meterpreter Shell,具體操作如圖所示。

將木馬復制到目標服務器

查看系統時間

使用at命令啟動木馬

  接着返回handler監聽,可以看到反彈成功了,我們獲得了PAVMSEP131服務器的Meterpreter Shell,如圖所示。

我們先看看PAVMSEP131服務器的信息和現在的權限,如圖所示。

  可以看到沒有SYSTEM權限,說明既可以用Mimikatz等工具,也可以用run post/windows/gather/hashdump來抓Hash。
  我們在用Mimikatz抓Hash之前要注意一點:如果服務器安裝的是64位操作系統,要把Mimikatz進程遷移到一個64位的程序進程中,才能查看64位系統的密碼明文,32位系統沒有這個限制。
  這里使用Mimikatz抓Hash,具體操作如圖所示。

接着查看抓到的域用戶的權限,如圖所示。

四. PowerShell尋找域管在線服務器

  Windows PowerShell是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用.NET Framework的強大功能。PowerShell還允許將幾個命令組合起來放到文件里執行,實現文件級的重用,也就是說有腳本的性質。
  將Hunter模塊上傳到主機名為PAVMSEP131,IP為10.51.0.131的服務器中,然后輸入Invoke-UserHunter,如圖所示。
  具體命令如下所示。

powershell.exe -exec bypass -Command "&{Import-Module .\powerview.ps1;Invoke-UserHunter}"`

  可以看到域管理員當前在線登錄的機器主機名為PAVMSXD30,IP為10.51.0.30,此時需要入侵此服務器,然后將其遷移到域管理登錄所在的進程,這樣便擁有了域管理的權限。

五. 獲取域管權限

  利用獲取到的HASH,我們成功地獲取到主機名PAVMSXD30,IP為10.51.0.30的服務器權限,接下來就可以滲透域控了。
  首先利用getsystem命令提升權限,如圖所示。

  可以看到我們現在的UID是sonicwall,從前面獲取的域管理員賬號信息中已知sonicwall是域管理員。

  然后利用ps命令找到域管理所在的進程,把Meterpreter Shell進程遷移到此進程中,成功后就獲得了域管理權限,如圖所示。

  這里除了遷移進程外,也可以使用Metasploit中的竊取令牌功能,同樣能獲得獲得域管理權限。
  接着查看主域控IP,這里使用net time命令,一般來說時間服務器都是域服務器,如圖所示。

  可以看到域服務器的主機名為PAVMSAD64,IP地址為10.51.0.63。
  現在我們可以使用經典的IPC$入侵來反彈一個Meterpreter Shell,具體操作如圖所示。

  提示at命令已經被棄用,現在使用schtasks添加計划任務,因為目標機的系統是Windows 2012。因為現在已經在域管理員權限下面了,所以要給域控添加一個管理員賬戶,如圖所示。

  利用如下命令確認賬戶是否添加成功,如圖所示。

  可以看到我們已經成功添加了管理員賬戶。

六. 登錄域控制器

  現在域控的權限也終於到手了。接下來就要登陸域控,然后抓域控的Hash。
  整理下思路,常見的登錄域控的方式有以下幾種。
1.利用IPC上傳AT&Schtasks遠程執行命令。
2.利用端口轉發或者Socks登錄域控遠程桌面。
3.登錄對方內網的一台電腦使用pstools工具包中的PsExec來反彈Shell。
4.使用Metasploit下的psexec, psexec_psh;Impacket psexec;pth-winexe;Empire Invoke-Psexec等PsExec類工具反彈shell。
5.使用Metasploit下的smb_login來反彈Meterpreter。
6.使用WMI(Windows Management Instrumentation)來進行攻擊。
7.使用PsRemoting posershel遠程執行命令。其他一些方法。
  這里采用最常見也是效果最好的,Metasploit下的PsExec來反彈Meterpreter,使用時注意以下這兩點,如圖所示。
    — MSF中的PsExec模塊。
    — cuestom模塊,建議使用類似Veil之類的工具來生成免殺的Payload。
  這里采用最常見也是效果最好的方式——Metasploit下的PsExec來反彈Meterpreter,使用時注意以下兩點,如圖所示。

— MSF中的PsExec模塊。
— cuestom模塊,建議使用類似Veil之類的工具生成免殺的Payload。
  可以看到已經反彈成功了,然后先遷移進程,查看域控的系統信息和sessions控制圖,如圖所示。

  思路:可以看到現階段控制的session共有5個。session1為WebShell反彈,session2利用ipc$入侵,滲透session4是為了獲取域管在線服務器,session5為域。整個滲透過程一環套一環,環環相扣。
  有了域控的權限,接着來抓Hash,常用方法有以下幾種。
— 使用Metasploit自帶的dumphash或者smart_hashdump模塊導出用戶的Hash。
— 利用PowerShell的相應模塊導出Hash。
— 使用WCE、Mimikatz等工具。
— 其他方法。
  這里使用了Metasploit自帶的dumphash模塊。需要注意:要想使用此模塊導出Hash,必須要有SYSTEM的權限才行,具體操作如圖所示。

七. SMB爆破內網

  有了域控的密碼,接下來只要快速在內網擴大控制權限就好,具體操作如下所示。
— 利用當前獲取到的域控賬戶密碼,對整個域控IP段進行掃描。
— 使用SMB下的smb_login模塊。
— 端口轉發或者Socks代理進內網。
  我們先在Metasploit添加路由,然后使用smb_login模塊或者psexec_scanner模塊進行爆破,具體操作如圖所示。

  可以看出,我們獲取了大量內網服務器的密碼,下面就可以暢游內網了。可以使用Meterpreter的端口轉發,也可以使用Metasploit下的Socks4a模塊或者第三方軟件。
  這里簡單地使用Meterpreter的端口轉發即可,如圖所示。

八. 清理日志

  清理日志主要有以下幾個步驟,如圖所示。
— 刪除之前添加的域管理賬號。
— 刪除所有在滲透過程中使用過的工具。
— 刪除應用程序、系統和安全日志。
— 關閉所有的Meterpreter連接。



轉載請聯系作者並注明出處!

Ms08067安全實驗室專注於網絡安全知識的普及和培訓。團隊已出版《Web安全攻防:滲透測試實戰指南》,《內網安全攻防:滲透測試實戰指南》,《Python安全攻防:滲透測試實戰指南》,《Java代碼安全審計(入門篇)》等書籍。
團隊公眾號定期分享關於CTF靶場、內網滲透、APT方面技術干貨,從零開始、以實戰落地為主,致力於做一個實用的干貨分享型公眾號。
官方網站:https://www.ms08067.com/

掃描下方二維碼加入實驗室VIP社區
加入后邀請加入內部VIP群,內部微信群永久有效!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM