自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

傳遞哈希攻擊的原理介紹

安全 網(wǎng)站安全
在滲透測(cè)試期間,為了提高審核員對(duì)信息系統(tǒng)的權(quán)限,很多人都會(huì)選擇橫向移動(dòng)方法。

[[346684]]

 在滲透測(cè)試期間,為了提高審核員對(duì)信息系統(tǒng)的權(quán)限,很多人都會(huì)選擇橫向移動(dòng)方法。在這種情況下,稱(chēng)為Pass The Hash(傳遞哈希)的技術(shù)被廣泛應(yīng)用,使審核員成為計(jì)算機(jī)上的管理員。

 

NTLM協(xié)議

NTLM協(xié)議是在Microsoft環(huán)境中使用的一種身份驗(yàn)證協(xié)議,特別是,它允許用戶(hù)向服務(wù)器證明自己是誰(shuí),以便使用該服務(wù)器提供的服務(wù)。

注意:在本文中,術(shù)語(yǔ)“服務(wù)器”是在客戶(hù)端/服務(wù)器意義上使用的,“服務(wù)器”很可能是一個(gè)工作站。

 

 

有兩種可能的情況:

 

1. 用戶(hù)使用服務(wù)器的本地帳戶(hù)的憑據(jù),在這種情況下,服務(wù)器在其本地?cái)?shù)據(jù)庫(kù)中便含有用戶(hù)的秘密,將能夠?qū)τ脩?hù)進(jìn)行身份驗(yàn)證。

2. 在Active Directory環(huán)境中,用戶(hù)在身份驗(yàn)證期間使用域帳戶(hù),在這種情況下,服務(wù)器必須要求域控制器驗(yàn)證用戶(hù)提供的信息。

在這兩種情況下,身份驗(yàn)證都是從客戶(hù)端和服務(wù)器之間的挑戰(zhàn)/響應(yīng)階段開(kāi)始的。

挑戰(zhàn)/響應(yīng)

使用挑戰(zhàn)/響應(yīng)原則,以便服務(wù)器驗(yàn)證用戶(hù)是否知道他正在驗(yàn)證的帳戶(hù)的秘密,而不需要通過(guò)網(wǎng)絡(luò)傳遞密碼。這被稱(chēng)為零知識(shí)證明。整個(gè)過(guò)程分3步:

1.協(xié)商:客戶(hù)端告訴服務(wù)器它想要對(duì)其進(jìn)行身份驗(yàn)證(NEGOTIATE_MESSAGE)。

2.挑戰(zhàn):服務(wù)器向客戶(hù)端發(fā)送一個(gè)挑戰(zhàn)。這只不過(guò)是一個(gè)64位的隨機(jī)值,隨每個(gè)身份驗(yàn)證請(qǐng)求而變化(CHALLENGE_MESSAGE)。

3.響應(yīng):客戶(hù)端使用其密碼的哈希版本作為密鑰加密先前接收到的挑戰(zhàn),并將此加密版本連同其用戶(hù)名和域(AUTHENTICATE_MESSAGE)返回給服務(wù)器。

 

 

你可以看到用戶(hù)管理員試圖連接到計(jì)算機(jī)LKAPP01.lion.king。

 

NTLM交換框頂部是紅色的,底部是服務(wù)器響應(yīng)CHALLENGE_MESSAGE中包含的信息。在這些交換之后,服務(wù)器擁有兩件東西:

 

1. 發(fā)送給客戶(hù)端的挑戰(zhàn);

2. 客戶(hù)端的響應(yīng)被自身的秘密加密了。

要完成身份驗(yàn)證,服務(wù)器只需檢查客戶(hù)端發(fā)送的響應(yīng)的有效性。但在那之前,讓我們來(lái)檢查一下客戶(hù)的秘密。

身份驗(yàn)證的秘密

我們說(shuō)過(guò),客戶(hù)端使用一個(gè)哈希版本的密碼作為密鑰,原因如下:為了避免在服務(wù)器上以明文形式存儲(chǔ)用戶(hù)密碼,它是存儲(chǔ)的密碼的哈希值?,F(xiàn)在,此哈希是NT哈希,它不過(guò)是MD4函數(shù)的結(jié)果,不含鹽值。

 

  1. NThash = MD4(password

 

綜上所述,當(dāng)客戶(hù)端進(jìn)行身份驗(yàn)證時(shí),它使用其密碼的MD4指紋來(lái)加密挑戰(zhàn)。然后,讓我們看看接收到此響應(yīng)后服務(wù)器端會(huì)發(fā)生什么。

 

身份驗(yàn)證

如前所述,有兩種不同的身份驗(yàn)證情況。首先,用于身份驗(yàn)證的帳戶(hù)是一個(gè)本地帳戶(hù),因此服務(wù)器知道這個(gè)帳戶(hù),并擁有該帳戶(hù)的秘密副本。第二種是使用域帳戶(hù),在這種情況下服務(wù)器不知道這個(gè)帳戶(hù)或它的秘密,它必須將身份驗(yàn)證委托給域控制器。

本地帳戶(hù)

在使用本地帳戶(hù)進(jìn)行身份驗(yàn)證的情況下,服務(wù)器將使用用戶(hù)的密鑰(更確切地說(shuō)是用戶(hù)秘密的MD4哈希) 對(duì)發(fā)送給客戶(hù)端的挑戰(zhàn)進(jìn)行加密。然后,它將檢查其操作的結(jié)果是否等于客戶(hù)端的響應(yīng),從而證明用戶(hù)擁有正確的秘密。如果沒(méi)有,則用戶(hù)使用的密鑰不是正確的,因?yàn)樘魬?zhàn)的加密沒(méi)有給出預(yù)期的密鑰。

為了執(zhí)行此操作,服務(wù)器需要存儲(chǔ)本地用戶(hù)及其密碼的哈希。這個(gè)數(shù)據(jù)庫(kù)的名稱(chēng)是SAM(安全帳戶(hù)管理器)??梢栽谧?cè)表中找到SAM,特別是使用regedit工具時(shí),但只能作為系統(tǒng)訪(fǎng)問(wèn)。不過(guò),還可以使用psexec打開(kāi):

 

  1. psexec.exe -i -s regedit.exe 

 

副本也位于C:\Windows\System32\SAM的磁盤(pán)上,因此,它包含本地用戶(hù)列表及其哈希密碼,以及本地組列表。更準(zhǔn)確地說(shuō),它包含了哈希的加密版本。但是,由于解密它們所需的所有信息也在注冊(cè)表(SAM和SYSTEM)中,所以我們可以肯定地說(shuō)哈希存儲(chǔ)在其中。如果你想了解解密機(jī)制是如何工作的,你可以查看secretsdump.py代碼或Mimikatz代碼。

 

可以備份SAM和SYSTEM數(shù)據(jù)庫(kù),以提取用戶(hù)的哈希密碼數(shù)據(jù)庫(kù)。

首先,我們將兩個(gè)數(shù)據(jù)庫(kù)保存在一個(gè)文件中。

 

  1. reg.exe save hklm\sam save.save 
  2. reg.exe save hklm\system system.save 

然后,我們可以使用secretsdump.py來(lái)提取這些哈希。

  1. secretsdump.py -sam sam.save -system system.save LOCAL 

以上就是整個(gè)驗(yàn)證過(guò)程。

 

由于服務(wù)器發(fā)送了挑戰(zhàn)(1),并且客戶(hù)端使用其秘密的哈希值對(duì)該挑戰(zhàn)進(jìn)行加密,然后使用其用戶(hù)名(2)將其發(fā)送回服務(wù)器,因此服務(wù)器將在其SAM中查找用戶(hù)密碼的哈希值數(shù)據(jù)庫(kù)(3)。收到挑戰(zhàn)后,它還將加密先前使用此哈希(4)發(fā)送的挑戰(zhàn),并將其結(jié)果與用戶(hù)返回的挑戰(zhàn)進(jìn)行比較。如果相同(5),則說(shuō)明用戶(hù)已通過(guò)身份驗(yàn)證!否則,用戶(hù)沒(méi)有提供正確的秘密。

 

域帳戶(hù)

當(dāng)使用域帳戶(hù)進(jìn)行身份驗(yàn)證時(shí),用戶(hù)的NT哈希不再存儲(chǔ)在服務(wù)器上,而是存儲(chǔ)在域控制器上。用戶(hù)希望對(duì)其進(jìn)行身份驗(yàn)證的服務(wù)器接收其挑戰(zhàn)的答案,但無(wú)法檢查該答案是否有效。它將把這個(gè)任務(wù)委托給域控制器。

為此,它將使用Netlogon服務(wù),該服務(wù)能夠與域控制器建立安全連接。此安全連接稱(chēng)為安全通道,之所以可以進(jìn)行這種安全連接,是因?yàn)榉?wù)器知道自己的密碼,而域控制器也知道服務(wù)器密碼的哈希值,他們可以安全地交換會(huì)話(huà)密鑰并安全地進(jìn)行通信。

我不會(huì)詳細(xì)介紹,但是想法是服務(wù)器將以NETLOGON_NETWORK_INFO的結(jié)構(gòu)將不同的元素發(fā)送到域控制器:

1. 客戶(hù)端的用戶(hù)名(Identity);

2. 先前發(fā)送給客戶(hù)端的挑戰(zhàn)(LmChallenge);

3. 客戶(hù)端發(fā)送的對(duì)挑戰(zhàn)的響應(yīng)(NtChallengeResponse)。

域控制器將在其數(shù)據(jù)庫(kù)中查找用戶(hù)的NT哈希,對(duì)于域控制器,它不在SAM中,因?yàn)樗且粋€(gè)試圖進(jìn)行身份驗(yàn)證的域帳戶(hù)。這次它位于一個(gè)名為NTDS.DIT的文件中,該文件是所有域用戶(hù)的數(shù)據(jù)庫(kù)。檢索NT哈希后,它將使用該哈希和挑戰(zhàn)計(jì)算預(yù)期的響應(yīng),并將此結(jié)果與客戶(hù)的響應(yīng)進(jìn)行比較。

然后,一條消息將被發(fā)送到服務(wù)器(NETLOGON_VALIDATION_SAM_INFO4),指示客戶(hù)端是否經(jīng)過(guò)身份驗(yàn)證,它還將發(fā)送一組關(guān)于用戶(hù)的信息。這與使用Kerberos身份驗(yàn)證時(shí)在PAC中發(fā)現(xiàn)的信息相同。

以下就是一個(gè)域控制器的驗(yàn)證過(guò)程:

 

 

與以前一樣,服務(wù)器發(fā)送挑戰(zhàn)(1),客戶(hù)端使用其秘密的哈希值對(duì)該挑戰(zhàn)進(jìn)行加密,并將其連同用戶(hù)名和域名一起發(fā)送回服務(wù)器(2)。這次服務(wù)器將使用Netlogon服務(wù)(3)在安全通道中將此信息發(fā)送到域控制器。掌握了這些信息后,域控制器還將使用在其N(xiāo)TDS.DIT數(shù)據(jù)庫(kù)(4)中找到的用戶(hù)哈希來(lái)對(duì)挑戰(zhàn)進(jìn)行加密,然后將其結(jié)果與用戶(hù)返回的結(jié)果進(jìn)行比較。如果相同(5),則對(duì)用戶(hù)進(jìn)行身份驗(yàn)證。否則,用戶(hù)未提供正確的秘密。在這兩種情況下,域控制器都將信息發(fā)送到服務(wù)器(6)。

 

NT哈希的安全隱患

在這些交換中從來(lái)不使用明文密碼,而是使用名為NT哈希的哈希密碼,它是明文密碼的簡(jiǎn)單哈希。

仔細(xì)想想,竊取明文密碼或竊取哈希值是完全相同的。因?yàn)樗怯脕?lái)響應(yīng)挑戰(zhàn)/響應(yīng)的哈希,所以擁有該哈??梢詫?duì)服務(wù)器進(jìn)行身份驗(yàn)證。因此,將密碼以明文顯示根本沒(méi)用。

可以這么說(shuō),在大多數(shù)情況下,使用NT哈希與使用明文密碼是一樣的。

傳遞哈希

如果攻擊者知道一臺(tái)計(jì)算機(jī)的本地管理員的NT哈希,那么他可以使用這個(gè)哈希輕松地對(duì)該計(jì)算機(jī)進(jìn)行身份驗(yàn)證。類(lèi)似地,如果他擁有主機(jī)上本地管理組成員的域用戶(hù)的NT哈希,他也可以作為本地管理員向該主機(jī)進(jìn)行身份驗(yàn)證。

本地管理員

現(xiàn)在,讓我們看看它在實(shí)際環(huán)境中是如何工作的:一名新員工來(lái)到公司,公司為他/她提供了一個(gè)工作站。IT部門(mén)沒(méi)有足夠的時(shí)間為每個(gè)員工從頭安裝和配置Windows系統(tǒng)。因此,先設(shè)置一個(gè)安裝和配置Windows系統(tǒng)的版本,以滿(mǎn)足一個(gè)新員工的所有基本需求和要求。然后,這個(gè)稱(chēng)為master的基本版本保存在某處,并且該版本的副本提供給每個(gè)新手。

這意味著,本地管理員帳戶(hù)在所有使用相同主服務(wù)器初始化的工作站中是相同的。如果其中一臺(tái)主機(jī)被破壞,并且攻擊者從工作站的本地管理員帳戶(hù)提取NT哈希,因?yàn)樗衅渌ぷ髡径季哂邢嗤墓芾韱T帳戶(hù)和相同的密碼,那么它們也將具有相同的NT哈希。然后,攻擊者可以使用在受損主機(jī)上找到的哈希,并在所有其他主機(jī)上重播該哈希,以便在這些主機(jī)上進(jìn)行身份驗(yàn)證,以上的整個(gè)過(guò)程就叫做傳遞哈希。

 

例如,我們發(fā)現(xiàn)用戶(hù)管理員的NT哈希是20cc650a5ac276a1cfc22fbc23beada1。我們可以在另一臺(tái)計(jì)算機(jī)上重播它,并希望這臺(tái)計(jì)算機(jī)以同樣的方式配置。以下示例使用來(lái)自Impacket套件的psexec.py工具:

 

沒(méi)錯(cuò),這個(gè)哈希也可以在新主機(jī)上使用,而且我們?cè)谒厦嬗幸粋€(gè)管理員shell。

 

特權(quán)域帳戶(hù)

還有另一種使用傳遞哈希技術(shù)的方法,假設(shè)對(duì)于遠(yuǎn)程公園管理,在Active Directory中有一個(gè)“HelpDesk”組。為了使該組的成員能夠管理用戶(hù)的工作站,將該組添加到每個(gè)主機(jī)的本地“Administrators”組中。此時(shí),這個(gè)本地組包含在計(jì)算機(jī)上具有管理權(quán)限的所有對(duì)象中。

你可以使用以下命令列出它們:

 

  1. # Machine française 
  2. net localgroup Administrateurs 
  3. # ~Reste du monde 
  4. net localgroup Administrators 

結(jié)果將是這樣的:

  1. Nom alias       Administrateur 
  2. Commentaire     Les membres du groupe Administrateurs disposent d'un accès complet et illimité à l'ordinateur et au domaine 
  3.  
  4. Membres 
  5.  
  6. ------------------------- 
  7. Administrateur 
  8. ADSEC\Admins du domaine 
  9. ADSEC\HelpDesk 

 

因此,我們擁有ADSEC \ HelpDesk域組,該域組是主機(jī)的本地管理員組的成員。如果攻擊者從該組中的一個(gè)成員那里竊取了NT哈希,則他可以使用管理員列表中的ADSEC \ HelpDesk在所有主機(jī)上進(jìn)行身份驗(yàn)證。

 

與本地帳戶(hù)相比,其優(yōu)勢(shì)在于,無(wú)論使用什么主機(jī)來(lái)設(shè)置計(jì)算機(jī),GPO都會(huì)將該組添加到主機(jī)的配置中。該帳戶(hù)具有更廣泛的管理權(quán)限的可能性更大,而與操作系統(tǒng)和計(jì)算機(jī)設(shè)置過(guò)程無(wú)關(guān)。

因此,當(dāng)請(qǐng)求身份驗(yàn)證時(shí),服務(wù)器會(huì)將身份驗(yàn)證委派給域控制器,如果身份驗(yàn)證成功,則域控制器將向服務(wù)器發(fā)送有關(guān)用戶(hù)的信息,例如用戶(hù)名,用戶(hù)所屬的組列表,密碼到期日期等。

然后,服務(wù)器將知道該用戶(hù)是HelpDesk組的一部分,并向該用戶(hù)授予管理員訪(fǎng)問(wèn)權(quán)限。

另一個(gè)示例:我們發(fā)現(xiàn)用戶(hù)jsnow的NT哈希為89db9cd74150fc8d8559c3c19768ca3f。此帳戶(hù)是HelpDesk組的一部分,該組是所有用戶(hù)工作站的本地管理員,讓我們?cè)诹硪慌_(tái)主機(jī)上使用他的哈希。

 

 

同樣,身份驗(yàn)證成功了,我們成為了目標(biāo)設(shè)備的管理員。

 

自動(dòng)化

既然我們已經(jīng)了解了NTLM身份驗(yàn)證的工作方式,以及為什么可以使用NT哈希對(duì)其他主機(jī)進(jìn)行身份驗(yàn)證,那么通過(guò)并行化任務(wù)來(lái)自動(dòng)對(duì)不同目標(biāo)進(jìn)行身份驗(yàn)證以獲取盡可能多的信息將是非常有用的。

在此,我建議使用CrackMapExec工具。

 

  1. # Compte local d'administration 
  2. crackmapexec smb --local-auth -u Administrateur -H 20cc650a5ac276a1cfc22fbc23beada1 10.10.0.1 -x whoami 
  3.  
  4. # Compte de domaine 
  5. crackmapexec smb -u jsnow -H 89db9cd74150fc8d8559c3c19768ca3f -d adsec.local  10.10.0.1 -x whoami 

以下就是以simba用戶(hù)為管理員的示例說(shuō)明:

 

傳遞哈希是在一些計(jì)算機(jī)上執(zhí)行,然后計(jì)算機(jī)隨后遭到破壞。已經(jīng)向CrackMapExec傳遞了一個(gè)參數(shù),來(lái)列出當(dāng)前登錄到這些計(jì)算機(jī)上的用戶(hù)。

 

擁有連接的用戶(hù)列表很好,但是擁有他們的密碼或NT哈希會(huì)更好!為此,我開(kāi)發(fā)了lsassy,——遠(yuǎn)程提取lsass秘密的工具。

 

 

我們從連接的用戶(hù)中檢索所有NT哈希,由于我們已經(jīng)是這些計(jì)算機(jī)的管理員,所以不會(huì)顯示來(lái)自計(jì)算機(jī)帳戶(hù)的文件。

 

傳遞哈希限制

傳遞哈希值是一項(xiàng)在服務(wù)器上啟用NTLM身份驗(yàn)證時(shí)始終有效的技術(shù),默認(rèn)情況下,該技術(shù)是有效的。但是,Windows中有一些機(jī)制可以限制或可能限制管理任務(wù)。

在Windows上,使用訪(fǎng)問(wèn)令牌執(zhí)行權(quán)限管理,從而可以知道誰(shuí)有權(quán)做什么。“Administrators”組的成員有兩個(gè)令牌。一個(gè)具有標(biāo)準(zhǔn)用戶(hù)權(quán)限,另一個(gè)具有管理員權(quán)限。默認(rèn)情況下,當(dāng)管理員執(zhí)行任務(wù)時(shí),它是在標(biāo)準(zhǔn)的、有限的上下文中執(zhí)行的。另一方面,如果需要管理任務(wù),那么Windows將顯示這個(gè)稱(chēng)為UAC(用戶(hù)帳戶(hù)控制)的眾所周知的窗口。

 

 

可以看到出現(xiàn)用戶(hù)警告:應(yīng)用程序請(qǐng)求管理權(quán)限。

 

那么遠(yuǎn)程執(zhí)行的管理任務(wù)是什么呢?有兩種可能。

1. 屬于主機(jī)“Administrators”組成員的域帳戶(hù)都可以請(qǐng)求它們,在這種情況下,不會(huì)為此帳戶(hù)激活UAC,他可以執(zhí)行其管理任務(wù)。

2. 是由主機(jī)的“Administrators”組成員的本地帳戶(hù)請(qǐng)求的,在這種情況下,UAC在某些情況下是啟用的,但不是一直啟用。

為了理解第二種情況,讓我們看一下兩個(gè)注冊(cè)表項(xiàng),這兩個(gè)注冊(cè)表項(xiàng)有時(shí)是未知的,但是當(dāng)使用本地管理帳戶(hù)進(jìn)行NTLM身份驗(yàn)證后嘗試執(zhí)行管理任務(wù)時(shí),有兩個(gè)注冊(cè)表項(xiàng)(LocalAccountTokenFilterPolicy,F(xiàn)ilterAdministratorToken)扮演了關(guān)鍵角色。

下表總結(jié)了這兩個(gè)注冊(cè)表項(xiàng)的每種組合,每種組合都可以通過(guò)主機(jī)的身份驗(yàn)證。

 

 

總結(jié)

 

如今,NTLM身份驗(yàn)證仍在公司中廣泛使用。以我的經(jīng)驗(yàn),我從未見(jiàn)過(guò)能夠在整個(gè)網(wǎng)絡(luò)上禁用NTLM的環(huán)境。這意味著,傳遞哈希的攻擊仍然非常有效。

該技術(shù)是NTLM協(xié)議固有的,但是可以通過(guò)避免在所有工作站上使用相同的本地管理密碼來(lái)緩解。微軟的LAPS 解決方案是其中一種解決方案,它可以通過(guò)確保所有工作站上的密碼(也包括NT哈希)都不同。

本文翻譯自:https://en.hackndo.com/pass-the-hash/如若轉(zhuǎn)載,請(qǐng)注明原文地址。

 

責(zé)任編輯:姜華 來(lái)源: 嘶吼網(wǎng)
相關(guān)推薦

2010-09-26 17:13:31

2017-06-01 10:44:29

2010-05-21 14:53:33

2017-12-11 10:40:14

2020-04-26 09:17:08

哈希傳遞身份驗(yàn)證攻擊

2010-10-09 08:50:16

2013-05-16 10:42:20

2014-04-15 11:22:24

2010-09-26 17:21:07

2021-09-03 07:23:59

哈希洪水攻擊黑客DDoS

2016-09-20 23:44:43

2018-08-22 09:15:31

2017-10-12 15:41:45

2019-05-30 10:15:30

2011-12-30 15:20:29

2010-07-16 11:53:20

2016-10-21 00:03:36

2010-03-11 11:07:37

Python函數(shù)參數(shù)

2009-09-15 16:32:00

2010-07-22 11:18:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)