主頁 >  其他 > windows域環境下認證和攻擊初識

windows域環境下認證和攻擊初識

2020-09-22 13:33:20 其他

Kerberos認證原理

Kerberos是一種認證機制,目的是通過密鑰系統為客戶端/服務器應用程式提供強大的可信任的第三方認證服務:保護服務器防止錯誤的用戶使用,同時保護它的用戶使用正確的服務器,即支持雙向驗證,kerberos最初由MIT麻省理工開發,微軟從Windows 2000開始支持Kerberos認證機制,將kerberos作為域環境下的主要身份認證機制,理解kerberos是域滲透的基礎,

kerberos認證框架

kerberos機制中主要包含三個角色:Client、Server、KDC(Key Distribution Center)密鑰分發中心,Client代表用戶,用戶有自己的密碼,Server上運行的服務也有自己的密碼,KDC是受信任的三方認證中心,它擁有用戶和服務的密碼資訊,KDC服務默認會安裝在域控中,Client想要訪問Server的服務(xxx service),前提是通過KDC認證,再由KDC發放的票據決定Client是否有權限訪問Server的服務,框架圖如下:

kerberos認證術語初識

KDC(Key Distribution center):密鑰分發中心,在域環境中,KDC服務默認會安裝在域控中,

AS(Authentication Service):認證服務,驗證client的credential(身份認證資訊),發放TGT,

TGT(Ticket Granting ticket):票據授權票據,由KDC的AS發放,客戶端獲取到該票據后,以后申請其他應用的服務票據(ST)時,就不需要向KDC的AS提交身份認證資訊(credential),TGT具有一定的有效期,

TGS(Ticket Granting Service):票據授權服務,驗證TGT,發放ST,

ST(Service Ticket):服務票據,由KDC的TGS發放,是客戶端應用程式訪問Server某個服務的憑證,Server端驗證通過則完成Client與Server端信任關系的建立,

先由簡到繁地去梳理以上術語的關系,首先Client想要訪問Server的某個服務,就需要通過KDC的認證,獲取到服務票據(ST),服務會驗證服務票據(ST)來判斷Client是否通過了KDC認證,為了避免Client每次訪問Server的服務都要向KDC認證(輸入密碼),KDC設計時分成了兩個部分,一個是AS,另一個是TGS,AS接收Client的認證資訊,認證通過后給Client發放一個可重復使用的票據TGT,后續Client使用這個TGT向TGS請求ST即可,

Authenticator:驗證器,不能重復使用,與票據(時效內能重復使用)結合用來證明Client宣告的身份,防止票據被冒用,

windows域kerberos認證流程

第一步 AS認證(獲取TGT)

請求:Client 向KDC的AS發起認證請求,身份認證資訊包含了用戶密碼hash(user_hash)加密的timestamp預認證資訊pre-authentication data,以及用戶名(user)、客戶端資訊(client info)、服務名(krbtgt)等未加密資訊,

生成session key以及TGT:域控中存盤了域中所有用戶密碼hash(user_hash),KDC的AS依據用戶名查找相應的user_hash,成功解密預認證資訊,驗證客戶端通過,然后會生成一個sessionkey-TGS(后續用于加密Client與TGS通信),以及TGT(由krbtgt hash加密的sessionkey-TGS、user、client info、lifetime、timestamp等資訊),

注:krbtgt賬戶是創建域時系統自動創建的,可以認為是為了kerberos認證服務而創建的賬號,

注:TGT是KDC加密的,Client無法解密,并且具有有效期,客戶端用其向TGS請求ST,

回應:AS用user_hash加密sessionkey-TGS,與TGT一起生成REP回應發送給客戶端,客戶端解密回應成功說明資料包是KDC發送來的,并且獲得sessionkey-TGS以及TGT,sessionkey-TGS用于后續加密通信,

第二步 TGS認證(獲取ST)

通過第一步,客戶端解密AS的回應后,可以得到一個sessionkey-TGS以及TGT,

請求:用戶想訪問Aservice服務,于是向TGS請求訪問Aservice的ST,首先客戶端會生成驗證器Authenticator,內容包含user、client info、lifetime、timestamp資訊,并且用sessionkey-TGS加密,客戶端將驗證器、Aservice資訊、TGT發送給TGS請求ST,

生成session key以及ST:TGS收到請求,利用krbtgt hash解密TGT,獲取到sessionkey-TGS,user、client info等資訊,然后利用sessionkey-TGS解密驗證器,校驗驗證器和TGT中的user資訊,如果一致,則說明該請求符合TGT中宣告的用戶,該用戶是通過AS認證的,然后TGS會為用戶user和服務Aservice之間生成新的session key sessionkey-Aservice,并用sessionkey-TGS加密sessionkey-Aservice,再生成一個ST,內容包含user、client info、lifetime、timestamp、sessionkey-Aservice,ST用Aservice的service_hash加密,

注:驗證器Authenticator只能使用一次,是為了防止TGT被冒用,kerberos設計之初,產生票據的概念就是為了避免重復的常規密碼驗證,因為票據在有效期內可以重復使用,為了避免冒用,設計出session key以及Authenticator,session key只有真正的客戶端、服務知道,利用session key加密驗證器,服務就可以解密對比驗證器以及票據中宣告的用戶、客戶端資訊是否一致,一致說明票據來自可信客戶端,

回應:TGS將sessionkey-TGS加密后的sessionkey-Aservice以及service_hash加密的ST回應給客戶端,

第三步 服務認證

通過第二步,Client獲取到sessionkey-Aservice以及ST,接下來Client利用sessionkey-Aservice加密Authenticator,連同ST去請求Server的Aservice,Aservice 利用自己的service_hash解密ST,獲得sessionkey-Aservice,再解密Authenticator驗證Client宣告的user資訊,通過認證后Aservice還需要用sessionkey-Aservice加密一段資訊回傳給Client,Client利用sessionkey-Aservice解密成功說明Aservice用自己service_hash成功解密出了sessionkey-Aservice,是可信服務端,

至此,kerberos認證流程完成,Client可訪問Aservice提供的服務,

NTLM認證

NTLM認證采用質詢/應答(Challenge/Response)的訊息交換模式,NTLM既可用于域環境下的身份認證,也可以用于沒有域的作業組環境,主要有本地認證和網路認證兩種方式,

本地認證:

用戶登陸windows時,windows首先會呼叫winlogon.exe行程接收用戶輸入的密碼,之后密碼會被傳遞給lsass.exe行程,行程會先在記憶體中存盤一份明文密碼,并將密碼加密為NTLM hash,與本地SAM資料庫中用戶的NTLM hash對比,一致則登陸成功,

網路認證:

如下為NTLM域環境中網路認證流程,

第一步:首先用戶輸入正確用戶密碼登陸到客戶端主機,用戶想要訪問某個服務器的服務,客戶端先發送一個包含用戶名明文的資料包給服務器,發起認證請求,

第二步:服務器生成一個亂數,稱為Challenge,回傳給客戶端,

第三步:客戶端接收到Challenge后,用密碼hash加密,生成Response,發送給服務,

第四步:服務將Response、用戶名、Challenge發送給域控驗證,域控使用本地資料庫(NTDS.dit)中保存的對應用戶的NTLM hash對Challenge進行加密,得到的結果與Response進行對比,一致則認證成功,然后將認證結果回傳給服務端,

相關攻擊基礎

windows下的用戶密碼hash

windows系統下的用戶密碼hash通常指的是Security Account Manager中保存的用戶密碼hash,也就是SAM檔案中的hash,mimikatz讀取出已登錄用戶的NTLM hash都是同一個hash,域控中NTDS.dit的hash,如下密碼均為Aa123456,都是NTLM hash值,(以下操作均需以管理員權限執行)

SAM中的hash

先匯出sam,mimikatz讀取(本地用戶ate/Aa123456),

5772dd0660cae779cab1b684c20f0eed

mimikatz讀取,

9ede533b2c30e5ac4870580144ac6b6e

mimikatz從記憶體dump出的hash

如下,cmd運行mimikatz.exe,在mimikatz會話中執行privilege::debug和sekurlsa::logonpasswords,

a351cc718815fca940ca2670213baca4

testdomain\test1密碼Aa123456的hash,

域控中NTDS.dit的hash

如下,testdomain\test1密碼Aa123456的hash,域中先利用ntdsutil匯出NTDS.dit,SYSTEM和SECURITY檔案,

匯出檔案的位置,

利用NTDSDumpEx查看,如下,

PTH

通過前面的內容,可以看到kerberos、NTLM認證程序的關鍵,首先就是基于用戶密碼hash的加密,所以在域滲透中,無法破解用戶密碼hash的情況下,也可以直接利用hash來完成認證,達到攻擊的目的,這就是hash傳遞攻擊(Pass The Hash),如下,192.168.39.100為域控的地址,192.168.39.133為登陸過域管理賬號的終端,獲取到了域管理的hash,在192.168.39.133模擬pth來接管域控,

攻擊成功后獲取到一個shell,雖然是本機的,但可以操控域控,如下:

SPN

SPN 是指服務主體名稱(Service Principal Names),就是一個具體的服務在域里的唯一識別符號,服務要使用kerberos認證,就需要正確配置SPN,服務可以使用別名或者主機名稱向域注冊SPN,注冊完成后,可在域控使用ADSI編輯器連接到LDAP目錄,查看服務的SPN,

SPN分為兩種,一種是注冊在機器賬戶上的,一種是注冊在域用戶賬戶中的,當服務的權限為Local System或Network Service,則SPN注冊在機器帳戶下,當服務的權限為一個域用戶,則SPN注冊在域用戶帳戶下,

比如,域控機器(也是一個機器賬戶)里的DNS服務(用ADSI編輯器連接LDAP查看),

0efa404903ffcb4f4fe0b97151ae71ca

域用戶可向域控LDAP目錄查詢SPN資訊,從而獲取到域內安裝了哪些服務,

4d0b29f6f5be5982be090a529a71fc4e

抓包可以看到是通過LDAP協議查詢獲得SPN資訊,

4561bc7f8aa4d08c929afe8452331f97

通過SPN查詢的方式發現域內的服務相比埠掃描更為隱蔽,但是也有缺陷,可能漏掉一些未注冊的服務,

黃金票據和白銀票據

黃金票據

黃金票據(Golden Ticket)是可換取任意服務票據(ST)的票據授權票據(TGT),前面kerberos認證原理提到TGT是由域控krbtgt的密碼Hash加密的,所以偽造金票的前提是控制了域控,

偽造金票需要域名、域sid、krbtgt的密碼hash,如下在域控獲取krbtgt hash,

在mimikatz.log中找到其NTLM hash,

用普通用戶偽造金票并訪問域控,獲取域sid,注意不包含最后-xxxx,

/user指定偽造用戶名,/domain指定域,/sid指定sid,/krbtgt指定krbtgt hash,/ptt直接將票據匯入記憶體,

成功之后可訪問域控C盤,注意要用主機名(如下WIN-xxxxx)而不是IP,

白銀票據

白銀票據(Silver Tickets)是指偽造的服務票據(ST),只能用來訪問特定的服務,通過kerberos的認證原理得知ST是由TGS頒發的,使用了服務的密碼hash加密,所以在偽造銀票的時候需要知道服務的密碼hash,下面通過創建LDAP銀票訪問域控LDAP服務來演示銀票的偽造和利用,

域控的LDAP服務是由網路服務賬戶運行的,其對應sid是S-1-5-20,域控上通過mimikatz獲取hash,執行mimikatz.exe log privilege::debug sekurlsa::logonpasswords exit,

197cd5a9fd0f50c758c4cacafc008930

普通用戶偽造銀票并匯入記憶體獲取權限,可取到域控krbtgt hash,/target指定服務主機名,/rc4指定服務密碼的hash,/service指定服務,如下,


文章摘抄自 西部陸戰隊 酒仙橋六號部隊

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/104973.html

標籤:其他

上一篇:機器翻譯

下一篇:一個關于可視化卷積神經網路的過濾器的問題。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more