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

用圖論的方法自動(dòng)搜索域管理員

安全 網(wǎng)站安全
AD域權(quán)限提升是滲透測(cè)試中很重要的一部分。比較常用的提升域權(quán)限是圍繞著收集你登錄系統(tǒng)的純文本身份認(rèn)證信息或令牌,這種方式主要是用Mimikatz實(shí)現(xiàn)的。通常情況是在你已獲取到的機(jī)器上發(fā)現(xiàn)域管理員的登錄信息,然后就可以直接收集域管的身份認(rèn)證信息,拿著這些去登錄主系統(tǒng)。

AD域權(quán)限提升是滲透測(cè)試中很重要的一部分。比較常用的提升域權(quán)限是圍繞著收集你登錄系統(tǒng)的純文本身份認(rèn)證信息或令牌,這種方式主要是用Mimikatz實(shí)現(xiàn)的。通常情況是在你已獲取到的機(jī)器上發(fā)現(xiàn)域管理員的登錄信息,然后就可以直接收集域管的身份認(rèn)證信息,拿著這些去登錄主系統(tǒng)。

但是,如果你處于一個(gè)更加復(fù)雜的環(huán)境,你此刻并沒(méi)有獲取到這臺(tái)機(jī)器的管理員權(quán)限,那么,域管理員信息在哪里呢?你可能需要一個(gè)個(gè)去試,使你離域管理員越來(lái)越遠(yuǎn),最后需要做大量錯(cuò)誤嘗試才能找到。

在最近的一個(gè)滲透測(cè)試中,我們一開(kāi)始只獲得了域用戶(hù)權(quán)限,而這個(gè)滲透環(huán)境是有成百上千個(gè)工作站和服務(wù)器,同時(shí)有好幾個(gè)不同的域相互管理。而我們的目的是不斷擴(kuò)大權(quán)限,可能的話(huà)最后拿到企業(yè)管理員權(quán)限。幸運(yùn)的是,我們得到了網(wǎng)絡(luò)拓?fù)鋱D;但域中的機(jī)器都嚴(yán)格的遵循最小化權(quán)限的原則,幾乎是零失誤。經(jīng)過(guò)不懈的戰(zhàn)斗之后,我們最后終于還是拿到一個(gè)服務(wù)器的管理員帳號(hào),我們先稱(chēng)之為:“Steve-Admin”。

“Steve-Admin”是這臺(tái)服務(wù)器的本地管理員,我們找出哪些用戶(hù)登錄過(guò)這些服務(wù)器。在這個(gè)時(shí)候,我們需要決定接下來(lái)我們要滲透哪些目標(biāo)。但我們登錄的用戶(hù)沒(méi)有可以得到域管權(quán)限,也無(wú)法抓去域管的登錄信息,我們只能隨機(jī)選一個(gè)賬戶(hù)。

我們發(fā)現(xiàn)這是一個(gè)有系統(tǒng)管理員權(quán)限的帳號(hào),于是我們列舉了所有登錄過(guò)這臺(tái)機(jī)器的用戶(hù),直到我們找到正確的途徑。在一個(gè)大型的網(wǎng)絡(luò)中,這個(gè)方法可能要花費(fèi)好幾天甚至好幾個(gè)禮拜。

在下面的文章中,我將會(huì)描述并展示這個(gè)自動(dòng)化的流程。

前期準(zhǔn)備

這個(gè)概念的證明依賴(lài)現(xiàn)有的工具和一群勤奮的人類(lèi),工具如下:

Schroeder (@harmj0y) 做的PowerView –https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

Justin Warner(@sixdub)到處本地管理員–http://www.sixdub.net/?p=591

Jim Truher (@jwtruher)的Dijkstra算法的PowerShell實(shí)現(xiàn)– https://jtruher3.wordpress.com/2006/10/16/dijkstra/

Emmanuel Gras 和 Lucas Bouillot負(fù)責(zé)AD控制器的路徑 – https://github.com/ANSSI-FR/AD-control-paths

Justin Warner (@sixdub)負(fù)責(zé)域節(jié)點(diǎn)的分析 – http://www.sixdub.net/?p=285

圖論

想象一下,我們不是在考慮從”Steve-Admin”賬戶(hù)一步步提升到企業(yè)管理員的路徑,而是在思考一條從華盛頓的西雅圖到俄勒岡的波特蘭的路。對(duì)人類(lèi)而言,看著地圖就能很容易看出5號(hào)州際公路就是我們需要的。但是,對(duì)電腦來(lái)說(shuō),必須通過(guò)數(shù)學(xué)計(jì)算來(lái)計(jì)算出西雅圖到波特蘭的路徑(類(lèi)比于“Steve-Admin”賬戶(hù)到企業(yè)管理員的路徑,前提是這條路徑存在)。

PowerView可以把我們給的大多數(shù)的數(shù)據(jù)轉(zhuǎn)化成從“Steve-Admin”到企業(yè)管理員的路徑。其余部分來(lái)自18世紀(jì)的歐拉提出的一個(gè)數(shù)學(xué)的分支–圖論。歐拉就是通過(guò)圖論證明了柯尼斯堡七橋問(wèn)題是無(wú)解的。這個(gè)方法包括:

頂點(diǎn)——頂點(diǎn)(或者節(jié)點(diǎn))代表一個(gè)系統(tǒng)中的單個(gè)元素,你可以理解成地圖上的城市。

邊界——邊界用來(lái)連接節(jié)點(diǎn),可以是有向的,也可以是無(wú)向的。

路徑——路徑是一組邊界和節(jié)點(diǎn)的集合,節(jié)點(diǎn)間要相互連接

鄰接——共享同一個(gè)邊的節(jié)點(diǎn)互稱(chēng)為鄰接。

圖形設(shè)計(jì)

針對(duì)這個(gè)問(wèn)題提出來(lái)的想法的證明目的只有一個(gè) —— 自動(dòng)化的找出攻陷域管理員的最短路徑。 當(dāng)然,這個(gè)圖的設(shè)計(jì)可能并不適合其他的問(wèn)題。

這個(gè)圖最開(kāi)始的時(shí)候我先設(shè)計(jì)成一個(gè)非常簡(jiǎn)單的并且可能充滿(mǎn)錯(cuò)誤,隨著不斷的添加機(jī)器,最終設(shè)計(jì)成:

每一個(gè)用戶(hù)和機(jī)器都是一個(gè)節(jié)點(diǎn)

所有邊都是無(wú)權(quán)重的有向線

從用戶(hù)到機(jī)器的有向邊代表本地管理員權(quán)限

從機(jī)器到用戶(hù)的有向邊代表登錄過(guò)該機(jī)器的用戶(hù)

想象一個(gè)只有兩臺(tái)電腦和兩個(gè)用戶(hù)組成的非?;A(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu)。其中,”Administrator”用戶(hù)有兩臺(tái)機(jī)器的管理員權(quán)限。其中一臺(tái)機(jī)器有一個(gè)用戶(hù)“mnelson”用戶(hù)登錄。用可視化表示,如下圖:

用圖論的方法自動(dòng)搜索域管理員

 

上圖中每個(gè)用戶(hù)和電腦都是一個(gè)節(jié)點(diǎn)。橘色的線表示Administrator賬戶(hù)擁有兩臺(tái)電腦的系統(tǒng)管理員權(quán)限。藍(lán)色的線表示“mnelson”用戶(hù)登錄過(guò)HR-WS-002。在這個(gè)設(shè)計(jì)中,邊的方向意味著源節(jié)點(diǎn)可以攻陷目標(biāo)節(jié)點(diǎn) —— Administrator可能攻陷電腦HR-WS-002,HR-WS-002可能攻陷mnleson用戶(hù)。

圖的構(gòu)建

找到圖的節(jié)點(diǎn)并不簡(jiǎn)單,因?yàn)槲覀冃枰衙恳粋€(gè)用戶(hù)和電腦處理成節(jié)點(diǎn),最簡(jiǎn)單的處理方法是使用兩個(gè)PowerView命令集Get-NetUser和 Get-NetComputer:

用圖論的方法自動(dòng)搜索域管理員

 

這個(gè)圖的可視化可能是下面這個(gè)樣子:

用圖論的方法自動(dòng)搜索域管理員

 

在計(jì)算Dijkstra算法前,我們先給這幾個(gè)節(jié)點(diǎn)定義以下的屬性:

名字 —— 節(jié)點(diǎn)的名字。例如:‘mnelson’ 或者 ‘HR-WS-002’

邊界 —— 節(jié)點(diǎn)的邊界數(shù)組。初始值為 $null

距離 —— 從源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的跳數(shù)。初始設(shè)置為無(wú)限遠(yuǎn)。注意這是一個(gè)未加權(quán)圖。

已訪問(wèn) —— 到該節(jié)點(diǎn)的最短距離是否已經(jīng)確定。初始化設(shè)置為 $False

前驅(qū) —— 路徑中源頂點(diǎn)到該頂點(diǎn)的第一個(gè)節(jié)點(diǎn)的名字。初始化為$False

用圖論的方法自動(dòng)搜索域管理員

 

接下來(lái)我們?cè)俅斡肞owerView命令集,不過(guò)這次我們用Get-NetSession 。這個(gè)命令集可以在我們?cè)L問(wèn)了的一臺(tái)電腦后返回sessions信息,這可以讓我們知道哪些賬戶(hù)在這臺(tái)電腦上有留下會(huì)話(huà)信息,并且知道這些賬戶(hù)是屬于哪些機(jī)器上的,而這些都不需要很高的權(quán)限。通過(guò)這些信息,我們可以擴(kuò)大我們的圖,豐富我們的圖。接下來(lái),我們有了每臺(tái)電腦的登錄信息,逐個(gè)遞歸得列舉每臺(tái)機(jī)器的用戶(hù)信息。這些信息又能繼續(xù)豐富我們圖的邊和節(jié)點(diǎn)。

用圖論的方法自動(dòng)搜索域管理員

 

在我們的測(cè)試環(huán)境中完成得到以下圖結(jié)構(gòu):

用圖論的方法自動(dòng)搜索域管理員

 

如上圖,user –> computer代表的是管理權(quán)限,computer -> user則代表的是已登錄用戶(hù)。

很明顯,“Administrator”賬戶(hù)是三臺(tái)電腦的管理員,’mnelson’用戶(hù)可以管理OPS-WS-002電腦。用戶(hù)’jwarner’可以管理IT-STV-002。

HR-WS-002有一個(gè)用戶(hù)登錄:mnelson。OPS-WS-002有一個(gè)用戶(hù):jwarner。IT-SRV-002有三個(gè)登錄用戶(hù):rwinchester,,jfrank,和 Administrator。用戶(hù)jdimmock既不是管理者也不是登錄者。

現(xiàn)在我們就開(kāi)始用我們已擁有的信息找到最短的路徑。

回到之前我們提到的那個(gè)案例。從‘Steve-Admin’開(kāi)始,我們可以得到很多電腦和目標(biāo)用戶(hù),但是這些用戶(hù)里面并沒(méi)有能立即找到域管理員的。為了不必要花費(fèi)好幾天去一個(gè)個(gè)分析(更糟糕的是如果我們用試錯(cuò)法將會(huì)花費(fèi)更大代價(jià)),我們使用一種算法計(jì)算出最短的路徑。

Dijkstra算法

越深入的學(xué)習(xí)Dijkstra算法,我就越覺(jué)得這個(gè)算法是那么迷人。Dijkstra算法可以在我們提供的節(jié)點(diǎn)中算出圖中每個(gè)節(jié)點(diǎn)間的最短的路徑,而這些只需要做n次循環(huán)計(jì)算,這個(gè)n表示頂點(diǎn)的數(shù)量。以下是Dijkstra算法的工作流程:

1. 選取一個(gè)源節(jié)點(diǎn),把距離值設(shè)置成0,與其他的節(jié)點(diǎn)距離值先假設(shè)為無(wú)窮遠(yuǎn)。

2. 選取最近距離的未訪問(wèn)節(jié)點(diǎn),把它標(biāo)記為當(dāng)前節(jié)點(diǎn)。

3. 比較當(dāng)前節(jié)點(diǎn)的所有邊。比較所有與當(dāng)前節(jié)點(diǎn)相鄰的節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的距離,把距離值加1,比較計(jì)算出來(lái)的距離值和當(dāng)前值,如果小于則更新這個(gè)距離值,并且把相鄰節(jié)點(diǎn)的值更新到當(dāng)前節(jié)點(diǎn)中來(lái)。

4. 回到第二步,知道所有節(jié)點(diǎn)遍歷。

算法完成后,從每一個(gè)節(jié)點(diǎn)距離的值就可以知道這個(gè)節(jié)點(diǎn)是否可以到達(dá)源節(jié)點(diǎn),需要多少跳才能到達(dá),都可以知道。此外,找到這條最小路徑的流程如下:

1. 把目標(biāo)節(jié)點(diǎn)的名字添加到我們的路徑數(shù)組中。

2. 把最近距離節(jié)點(diǎn)添加到數(shù)組中,并且找到他的上一跳。把上一跳添加進(jìn)數(shù)組。

3. 循環(huán)執(zhí)行這兩步,知道沒(méi)有上一跳。這個(gè)時(shí)候,我們就到達(dá)源節(jié)點(diǎn)了

用圖論的方法自動(dòng)搜索域管理員

 

結(jié)論

這里介紹的一些方法都很淺顯,通過(guò)圖論技術(shù)(或者其他的數(shù)學(xué)技術(shù))來(lái)進(jìn)行AD攻擊和防護(hù)其實(shí)還有很多令人心奮的手法:比如這篇文章(https://cr0n1c.wordpress.com/2016/01/27/using-sccm-to-violate-best-practices/)。例如,通過(guò)反轉(zhuǎn)圖中的邊的方向并且使用管理權(quán)限獲得更多的用戶(hù)信息,我們甚至可以用Administrator用戶(hù)作為源節(jié)點(diǎn)進(jìn)行算法計(jì)算,通過(guò)迭代AD中的用戶(hù),就可以算出Administrator賬戶(hù)。

大家可以從這里得到驗(yàn)證的腳本:https://github.com/andyrobbins/PowerPath

責(zé)任編輯:藍(lán)雨淚 來(lái)源: FreeBuf
相關(guān)推薦

2018-04-04 15:03:14

2017-09-18 15:50:39

Windows 10Windows管理員賬戶(hù)

2011-07-13 14:49:28

2014-05-05 16:54:31

IT管理員自動(dòng)部署策略

2020-03-08 11:43:13

管理員多因素身份驗(yàn)證網(wǎng)絡(luò)安全

2021-04-01 06:13:50

Ansible系統(tǒng)運(yùn)維

2011-02-16 14:36:58

VMwareXenServer

2012-07-23 17:10:28

運(yùn)維終端管理

2013-05-24 10:33:01

服務(wù)器宕機(jī)系統(tǒng)管理員

2013-12-06 13:57:23

管理員SysinternalWindows工具

2011-11-11 18:55:21

2012-08-01 10:33:35

2019-12-10 09:42:58

開(kāi)源自動(dòng)化容器

2009-03-24 09:13:41

Windows 7使用技巧微軟

2012-10-08 09:51:33

PowerShell IT管理員Windows Ser

2013-04-08 10:47:33

郵件服務(wù)器管理電子郵件

2012-08-01 11:30:10

WindowsGNOME工具

2024-02-18 13:46:33

微軟Windows

2011-03-16 16:46:47

2013-06-21 09:00:48

網(wǎng)絡(luò)管理員應(yīng)用監(jiān)控
點(diǎn)贊
收藏

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