<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

windows的認證方式主要有哪些?

jf_hKIAo4na ? 來源:ShadowGlint ? 作者:ShadowGlint ? 2022-11-12 09:32 ? 次閱讀

前言

兩年前學域滲透的時候,在京東小課堂做的一期小總結,最近重新看域滲透,于是翻出來cp到blog。

1. windows的認證方式主要有哪些?

windows的認證方式主要有NTLM認證、Kerberos認證兩種。同時,Windows Access Token記錄著某用戶的SID、組ID、Session、及權限等信息,也起到了權限認證的作用。

其中,NTLM認證主要有本地認證和網絡認證兩種方式。本地登錄時,用戶的密碼存儲在%SystemRoot%system32configsam這個文件里。當用戶輸入密碼進行本地認證的過程中,所有的操作都是在本地進行的。他其實就是將用戶輸入的密碼轉換為NTLM Hash,然后與SAM中的NTLM Hash進行比較。而網絡認證則是基于一種Challenge/Response認證機制的認證模式。他的認證過程我們下邊會詳細講。

Kerberos認證用于域環境中,它是一種基于票據(Ticket)的認證方式。他的整個認證過程涉及到三方:客戶端、服務端和KDC(Key Distribution Center)。在Windows域環境中,由DC(域控)來作為KDC。

Access Token(訪問令牌)是用來描述進程或線程安全上下文的對象,令牌所包含的信息是與該用戶賬戶相關的進程或線程的身份和權限信息。當用戶登陸時,系統生成一個Access Token,然后以該用戶身份運行的的所有進程都擁有該令牌的一個拷貝。這也就解釋了A用戶創建一個進程而B用戶沒有該進程的權限。

2. NTLM的認證過程是怎樣什么?

首先是本地認證,也就是NTLM Hash的生成方式。

當用戶注銷、重啟、鎖屏后,操作系統會讓winlogon顯示登錄界面,也就是輸入框。當winlogon.exe接收輸入后,將密碼交給LSASS進程,這個進程中會存一份明文密碼,將明文密碼加密成NTLM Hash,對SAM數據庫比較認證。(winlogon.exe即Windows Logon Process,是Windows NT用戶登陸程序,用于管理用戶登錄和退出。
LSASS用于微軟Windows系統的安全機制。它用于本地安全和登陸策略。)

比如當用戶輸入密碼123456后,那么操作系統會將123456轉換為十六進制,經過Unicode轉換后,再調用MD4加密算法加密,這個加密結果的十六進制就是NTLM Hash

123456 -> hex(16進制編碼) = 313233343536
313233343536 -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

看明白本地認證的過程后,再說一下網絡認證的具體過程。

NTLM協議的認證共需要三個消息完成:協商、挑戰、認證。
協商:主要用于確認雙方協議版本、加密等級等
挑戰:服務器在收到客戶端的協商消息之后, 會讀取其中的內容,并從中選擇出自己所能接受的服務內容,加密等級,安全服務等等。并生成一個隨機數challenge, 然后生成challenge消息返回給客戶端。該消息就是挑戰/響應認證機制的主要功能體現。
認證:驗證主要是在挑戰完成后,驗證結果,是認證的最后一步。

詳細過程如下:

第一步,輸入密碼,然后LSASS會把密碼的NTLM Hash后的值先存儲到本地。

第二步,客戶端把用戶名的明文發送給服務端

第三步,服務端會生成一個16位的隨機數,即challenge,再傳回給客戶端

第四步,當客戶端收到challenge后,用在第一步中存儲的NTLM Hash對其加密,然后再將加密后的challenge發送給服務器,也就是response。

第五步,服務端在收到response后,會向DC發送針對客戶端的驗證請求。該請求主要包含以下三方面的內容:客戶端用戶名、客戶端NTLM Hash加密的Challenge、原始的Challenge。

第六步,當DC接到過來的這三個值的以后,會根據用戶名到DC的賬號數據庫(ntds.dit)里面找到該用戶名對應的NTLM Hash,然后把這個hash拿出來和傳過來的challenge值進行比較,相同則認證成功,反之,則失敗。

上邊說的是NTLM v1認證方式,NTLM v2和v1最顯著的區別就是Challenge與加密算法不同,共同點就是加密的key都是NTLM Hash。

NTLM v1的Challenge有8位,NTLM v2的Challenge為16位。NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

3. 針對NTLM的姿勢主要有哪些?

當我們通過dump hash拿到了NTLM Hash后,我通常首先嘗試能不能直接在線破解。常用的破解網站:

https://www.objectif-securite.ch/en/ophcrack.php/
http://www.cmd5.com/
https://www.somd5.com/

如果不能破解,那可以嘗試Pass The Hash(hash傳遞)。

哈希傳遞就是使用用戶名對應的NTLM Hash將服務器給出的Chanllenge加密,生成一個Response,來完成認證。Pass The Hash能夠完成一個不需要輸入密碼的NTLM協議認證流程,所以不算是一個漏洞,算是一個技巧。

常用的pth的工具主要有:mimikatz(首選)、wmiexec/psexec、exploit/windows/smb/psexec_psh、powershell invoke系列小腳本、impacket/psexec.py。

當然,pth也是有利用條件的。如果目標機器安裝了KB2871997,那我們就不能pth了。那我們還有另一個姿勢:Pass The Key。對于8.1/2012r2,安裝補丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NTLM Hash。在mimikatz抓hash時,可以一并抓到。其實,mimikatz中的pth本身就是ptk了。
命令:

mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c"

除這些外,還有很多其他姿勢,比如打了補丁有administrator帳號扔可pth、當開啟Restricted Admin Mode后,win8.1和server12 R2默認支持pth、啟用WDigest劫持winlogon仙人跳等。

4. Kerberos認證中主要有哪些知識點需要注意?

首先解釋一些名詞:

KDC: Key Distribution Center,密鑰分發中心,負責管理票據、認證票據、分發票據,但是KDC不是一個獨立的服務,它由AS和TGS組成。

AS: Authentication Service,驗證服務,為client生成TGT的服務

TGS: Ticket Granting Service,票據授予服務,為client生成某個服務的ticket

TGT: Ticket Granting Ticket,入場券,通過入場券能夠獲得票據,是一種臨時憑證的存在。

Ticket:票據,是網絡中各對象之間互相訪問的憑證

AD: Account Database,存儲所有client的白名單,只有存在于白名單的client才能順利申請到TGT。

DC: Domain Controller,域控

KRBTGT: 每個域控制器都有一個krbtgt賬戶,是KDC的服務賬戶,用來創建TGS加密的密鑰。

Kerberos提供了一個集中式的認證方式,在整個認證過程中總共要涉及到三方:客戶端,服務端和KDC, 在Windows域環境中,KDC的角色由DC來擔任,Kerberos是一種基于票據的認證方式,票據(Ticket)是用來安全的在認證服務器和用戶請求的服務之間傳遞用戶的身份,同時也會傳遞一些附加信息,用來保證使用Ticket的用戶必須是Ticket中指定的用戶,Ticket一旦生成,在生存時間內可以被Client多次使用來申請同一個Server的服務。這里就存在一個票據竊取問題。

說下kerberos的大致工作流程,域中的客戶端要想訪問同域中的某個服務器資源時,需要首先購買該服務端認可的票據(Ticket),也就是說,客戶端在訪問服務器之前需要預先買好票,等待服務驗票之后才能入場,但是這張票不能直接購買,還需要一張認購權證(TGT),也就是說客戶端在買票之前需要預先獲得一張認購權證,這張認購權證和進入服務器的入場券均由KDC發售。引用網絡上一張思路很清晰的圖。

9c048cc4-6221-11ed-8abf-dac502259ad0.png

5. 域滲透中針對Kerberos的姿勢主要有哪些?

說完認證過程后,就要說下經常用的兩種票據:白銀票據和黃金票據了。

銀票

白銀票據的特點是:不需要與KDC進行交互、需要目標服務的NTLM Hash。因此當擁有Server Hash時,我們就可以偽造一個不經過KDC認證的一個Ticket。
利用:
kerberos::golden /domain:<域名> /sid:<域SID> /target:<服務器主機名> /service:<服務類型> /rc4: /user:<用戶名> /ptt

由于白銀票據需要目標服務器的Hash,所以沒辦法生成對應域內 所有服務器的票據,也不能通過TGT申請。因此只能針對服務器 上的某些服務去偽造。如cifs服務用于Windows主機間的文件共享,用其他如LDAP等服務則無法訪問server的文件系統。

這里還有最最重要的各種約束委派沒有說。。待我徹底搞懂在另寫一篇

金票

與白銀票據相比,黃金票據的特點是需要與DC通信、需要krbtgt用戶的hash,也就是需要拿下域控。

利用:

lsadump::dcsync /domain:域名 /user:krbtgt
kerberos::golden /domain:<域名> /sid:<域SID> /rc4: /user:<任意用戶名> /ptt

拿到黃金票據后,就可以偽造黃金票據,然后就能獲取任何Kerberos服務權限,登錄任意域內任意一臺主機。mimikatz導出域內所有主機的票據,命令是sekurlsa::tickets /export,或者dump NTDS.dit也可以。

那最后就要說下拿域控的姿勢了。

最常用的毫無疑問是ms14068。主要利用工具是goldenPac.py或者kekeo/PyKEK。利用方式網上很多文章,這里不詳細說。

6. Windows Access Token主要知識點淺談

Windows Access Token(訪問令牌)有兩種,一種是Delegation token(授權令牌),主要用于交互會話登錄(例如本地用戶直接登錄、遠程桌面登錄),另一種是Impersonation token(模擬令牌),主要用于非交互登錄(利用net use訪問共享文件夾)。

每個進程創建時都會根據登錄會話權限由LSA(Local Security Authority)分配一個Token。如果CreaetProcess時自己指定了 Token, LSA會用該Token, 否則就用父進程Token的一份拷貝。

當用戶注銷后,系統將會使授權令牌切換為模擬令牌,不會將令牌清除,只有在重啟機器后才會清除。

一般通過incognito.exe或者msf中的incognito模塊來竊取令牌(Metasploit中的incognito,是從windows平臺下的incognito移植過來的),從而獲得令牌對應的權限,比如已獲得admin權限,然后通過竊取令牌然后令牌假冒來獲得system權限。

除此之外,推薦看一下3gstudent大佬的Windows-Token九種權限的利用一文。個人感覺到了內網滲透的后期,想要更好的理解、利用相關漏洞,還是需要對win32有一定的熟悉,否則會一直浮于表面,并不能做的很深入。

最后附上自己總結的Windows認證的思維導圖。

9c1892aa-6221-11ed-8abf-dac502259ad0.jpg

9c4b5474-6221-11ed-8abf-dac502259ad0.jpg








審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    3

    文章

    3467

    瀏覽量

    87373
  • SAM
    SAM
    +關注

    關注

    0

    文章

    109

    瀏覽量

    33392
  • SID
    SID
    +關注

    關注

    0

    文章

    14

    瀏覽量

    2981

原文標題:Windows認證及抓密碼總結

文章出處:【微信號:菜鳥學安全,微信公眾號:菜鳥學安全】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基帶測試主要有哪些?

    基帶測試主要有哪些? 基帶不像射頻測試,很繁瑣,除了電源、功耗測量還有哪些呢?
    發表于 05-13 20:54

    AD8221是什么?AD8221主要有哪些應用領域?

    AD8221是什么?它有什么作用?AD8221主要有哪些特點?AD8221主要有哪些應用領域?基于AD8221的交流耦合儀用放大器該怎么去設計?
    發表于 04-14 06:05

    單片機主要有哪些系列?

    單片機主要有哪些系列?它們分別有什么不同?以及主要應用于哪些領域?
    發表于 07-16 07:19

    定時器的功能主要有哪幾種方式

    STM32F429單片機的定時器主要分為哪幾類?定時器的功能主要有哪幾種方式?
    發表于 08-12 07:39

    電源變頻驅動主要有哪兩種驅動方式

      將變頻器的主電路連接到電源線后,要控制電動機的運行,必須將外圍連接的控制電路連接到相應的端子,并將變頻器的啟動模式參數設置為外部操作模式。電源變頻驅動主要有哪2種驅動方式?原理如何  變頻器控制
    發表于 09-03 06:45

    常見的變頻方式主要有哪幾種

    目前,常見的變頻方式主要有交流變頻和直流變頻兩種。1.交流變頻交流變頻器主要由AC-DC變換器(整流、濾波電路)、三相逆變器(inverter電路)、脈沖寬度調制電路(PWM電路)構成,如圖1-1
    發表于 09-03 07:21

    變頻器主要有兩個作用

    預備知識:《電力電子技術》、《自動控制原理》變頻器(Inverter,原意為逆變器)是應用變頻技術與微電子技術,通過改變電機工作電源頻率方式(變頻)來控制交流電動機(不可驅動單相電機)的電力控制設備。變頻器主要有兩個作用:調速作用和節能作用。
    發表于 09-03 06:13

    PLC的編程主要有哪些步驟

    PLC的編程方法是什么?PLC的編程主要有哪些步驟?
    發表于 10-14 07:19

    常采用的供配電方式主要有哪幾種呢

    常采用的供配電方式主要有哪幾種呢?各有什么具體的要求呢?
    發表于 10-22 07:14

    物聯網設備聯入網絡的方式主要有哪些

    文章目錄1. WIFI模塊2. NodeMCU聯網3. 總結物聯網應用首先要能聯網,統一管理,否則各個節點各自為政就失去了物聯網的優勢。物聯網設備聯入網絡的方式主要有:(1) 設備直接連接到路由器
    發表于 11-01 07:49

    SPWM信號主要有3種生成方式

    描述目前,SPWM信號主要有3種生成方式:1)使用比較器、振蕩器等模擬電路產生三角波和方波進行比較,產生SPWM波,但是此種方法電路復雜,受元器件精度影響大,且不易控制;2)利用專用SPWM集成芯片
    發表于 11-15 08:01

    FPGA實現網口通信主要有哪幾種方式

    PHY是什么意思?FPGA實現網口通信主要有哪幾種方式?
    發表于 02-22 07:57

    掌上電腦主要有哪些功能

    掌上電腦主要有哪些功能 掌上電腦除了用來管理個人信息(
    發表于 12-21 17:15 ?2680次閱讀

    電源變頻驅動主要有哪2種驅動方式?原理如何

      將變頻器的主電路連接到電源線后,要控制電動機的運行,必須將外圍連接的控制電路連接到相應的端子,并將變頻器的啟動模式參數設置為外部操作模式。電源變頻驅動主要有哪2種驅動方式?原理如何  變頻器控制
    發表于 10-22 16:51 ?6次下載
    電源變頻驅動<b class='flag-5'>主要有</b>哪2種驅動<b class='flag-5'>方式</b>?原理如何

    電源變頻驅動主要有哪2種驅動方式?

    電源變頻驅動主要有哪2種驅動方式? 電源變頻驅動是一種通過調節電源輸出頻率的方法來控制電機的轉速和運行模式。它適用于各種需要控制電機轉速和降低能耗的應用,如工業生產線、空調系統、通風系統、泵站
    的頭像 發表于 11-16 14:47 ?327次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>