AD攻防實務流程:從組態管理到帳號漏洞利用全解析

AD環境初探,從組態到攻防視角

說起大型企業網路的日常,Active Directory 這種結構,其實怎麼看都像是個中樞。嗯,不知道是不是錯覺,總覺得攻擊者也特別青睞它來做橫向移動,還有那些初期入侵的雜事。啊對了,其實不只是紅隊或者資安人員啦,有些安全測試的人也常會湊過來嘗試弄懂這些環境,到底問題藏在哪裡——唉,有時候想想,好像真的對防禦偵測能力提升有點幫助?但我偶爾會想,他們真的都弄得那麼明白嗎。

那時自己架了一個 Active Directory 的小型實驗室,就叫 jgpython.lab,名字取得有點隨便。其實邊摸索邊記錄操作方式,並沒有很嚴謹,有幾段流程後來才發現漏掉了,好像哪裡怪怪的。總之,就是那陣子開始接觸 Kerbrute、CrackMapExec 還有 Impacket 這些工具,結果一不小心就陷進去了。有些指令說穿了不難,但就是要慢慢熟起來才行。而且大家老是在講,那種用 Kerberos 協定去找使用者名稱,再透過 SMB 掃一下服務,然後把線索拼湊起來──好吧,大概很多人優先考慮的都是這種手法吧。不過偶爾覺得重複一直做同樣事情,也挺無趣。

欸,有朋友說,其實網域裡哪些缺口最容易被用來下手,每次都那麼明顯嗎?舉個例好了,如果共享資料夾權限亂開,那情報外洩的風險可就升高不少。有些狀況下你怎麼找都沒洞,但碰到條件吻合時,又忽然蹦出一堆奇怪的提權機會——奇妙。上次演練,各種爆破加列舉技巧全拿出來摸清 AD 架構,可說多半是熟悉流程、看看能不能優化,不是真的要測每一個案例啦……嗯,我好像扯遠了。

現在回頭看,其實很多技巧也不是什麼人人必須精通的大絕,只是稍微熟悉一下,以後遇到異常至少比較不慌亂。如果硬要深究,每種工具背後都有自己的局限跟適用範圍,你不親自玩一遍根本不知道原理到底是不是如傳聞那般簡單。有時候剛好逮到管理上的疏忽,也許就成了事件發生的開端之一——唉,人性真的很麻煩啊。

現實威脅下的目標與雙面啟示

如果有稍微接觸這些手法,其實啦,資安圈裡的人應該會比較容易發現Active Directory裡頭那些可能潛伏的威脅點。嗯,有備無患嘛,對於預防跟事後反應大概也能多抓住一些主意,不至於完全手足無措。有時候,攻擊者會利用Kerberos驗證機制來探索Active Directory帳號的情形,欸——這種套路在業界偶爾聽到,不算什麼新鮮事。不過我一想到Kerberos驗證就忍不住想吐槽,為什麼每次都是它出問題?唉。然後啊,如果SMB設置上有任何疏失,有些原本該保密的檔案或共享資料夾就很有可能莫名其妙被不該看的使用者給瀏覽到了。坦白說,這讓人挺煩躁的。

提一下Kerberos的Ticket Granting Ticket好了,有的人直接叫它TGT,也有人硬要搞別名——總之就是那個玩意兒。在繞過身分認證相關議題時好像它老是躺著中槍,被拿來討論各種花式入侵方式,只是真的方法多得數不清,每回都不一樣。有時候看到大家分析某個案例,我心裡還會冒出「怎麼又是TGT」這種疲憊感,但話說回來,它畢竟確實經常扮演關鍵角色。

呃,好像又離題了……拉回正軌。這份參考內容主要想讓那些負責資安的人(甭管偏進攻還是防守),可以多了解現實中Active Directory到底面臨哪些真切風險。怎麼補漏洞、怎麼護住環境?看完之後,大抵對AD環境下各種漏洞和處理對策應該都會更有概念。如果你問我,每間公司狀況其實都差異頗大,看別人踩坑經驗頂多當參考吧。有些招數別人的土壤長得快,你複製下來未必能開花,就是這樣…

Comparison Table:
主題內容
ccache 與 Kerberos 認證票的關聯ccache 檔案可以存儲 Kerberos 認證票,若被盜用,可能使攻擊者在不知道密碼的情況下冒充使用者登入系統。
KRB5CCNAME 環境變數的作用設定 KRB5CCNAME 可以指定 ccache 的路徑,部分服務在此情況下能省略密碼輸入步驟,增加了安全風險。
SMB 共享資源的風險未加強的 SMB 共享權限可能導致敏感資料洩露,尤其是在企業內部環境中。
防範措施與建議企業應加強對 Kerberos 請求和 SMB 權限的監控,並實施最小權限原則以降低潛在風險。
紅隊測試的重要性定期進行紅隊演練和滲透測試有助於提前識別安全漏洞,提高整體資訊安全防護能力。

現實威脅下的目標與雙面啟示

Kerbrute工具巧用:找出活人還是幽靈帳號?

有時候在研究企業內部網路安全工具,腦袋會冒出些奇怪的名字,比如 Kerbrute。嗯,這名詞一聽就跟 Kerberos 那個協定脫不了關係。據說這東西速度還挺快,而且也不算容易被偵測到。主要功能嘛,好像就是在公司裡的 Windows 環境試著查哪些帳號名稱是真的、哪些只是亂湊一通,它其實是靠那套用來驗證身分的 Kerberos 服務去做互動——你知道,就是那種公司伺服器和用戶端天天打交道的玩意兒。

講回主題,操作前得先準備好一張混合假帳號的小清單。有的人可能會偷偷塞進幾個真的,比方「Administrator」,又或者什麼「Steve.rogers」啦、「Ryan.reynold」那些,不太確定是不是大家都習慣設這類組合。唉,有時候想想,明明可以取點創意點的名稱啊,不過現實總是無聊至極。

等名單差不多了,就輪到 Kerbrute 上場,直接對目標網域丟命令。欸,其實命令列蠻長,有人第一次還會把 domain 拼錯或忘記加上 domain controller 的位址。我自己有時也常搞混這些細節,寫到一半又突然想到別事,但最後執行起來流程倒也沒啥魔法,只要盡量別參數誤植就好。

結果大致可預料,在三十多個假的帳號堆裡,只跳出了幾組被認為是真的——就那幾個:「Administrator」、「Steve.rogers」和「Ryan.reynold」。話說回來,用這種工具到底能不能百分百揪出所有真實存在的名稱,也沒人敢拍胸脯保證,大概吧。不過至少這次它就是抓到了上述那些。有些資安圈的人會說:「Kerbrute 算有點用。」但欸,有時還是要小心啦,只靠這招終究不夠。如果遇到環境設定更嚴格,也許根本沒辦法一路順風通吃…嗯,我是不是又岔題了?拉回來講重點就是:Kerbrute 不全能,但偶爾管用。

弄張名字單,然後Kerberos這樣被敲開了門

有那麼幾個帳號,嗯,好像據說是在Active Directory裡頭找得到的啦。這讓後續如果想針對性地搞點什麼操作,感覺順手多了——不過說真的,有時候也會懷疑:這些帳號到底是不是早就被別人摸過?唉,不管啦。回到正題。

事情推進到下一階段,有個叫CrackMapExec的小東西(有人習慣直接叫CME),經常在那些做SMB、Kerberos或者AD相關自動化掃描、弱密碼檢查的場景裡出現,很多滲透測試的人都會提起它。不過,每次看到這名字還是忍不住想到:為何工具總愛用這種拼字?啊扯遠了,先拉回來。

既然有一兩組已經能夠確認的帳號資訊,大致流程就是照著走下去嘛。有人決定拿CrackMapExec來瞧一瞧網域控制器那邊SMB服務狀況究竟如何,其實命令本身沒啥玄妙,就是把目標IP丟進去(欸,通常是一串十多位數字開頭),然後空白帳號配上空白密碼直接試探一下,看系統有沒有給點反應。

掃完之後倒是有東西回報,看起來那台Windows伺服器DC-Controller的SMB端口一直敞開著;更妙的是,用Guest身份居然也能混進去。至於SMB簽章部分,好像已經啟動,但是細節老實講,不見得大家都真正在意啦。有趣的是,那個jgpython.lab\突然跳出來一行,不知道是不是有什麼特殊含義,也許只是個小插曲,我自己還特地記了一下。

如果要說重點,大致意思就是網域主機上的SMB服務目前確實連得上,而且訪客權限看起來並沒有被嚴格封死。不過嘛,這其實也只是初步觀察而已,要評估它可利用到什麼程度還得慢慢摸索——或許哪天真的會用得到吧。

弄張名字單,然後Kerberos這樣被敲開了門

CrackMapExec掃描DC,有簽名卻給客人留條縫?

有些系統真的讓人很無語,反正你就算沒註冊帳號,也能隨意點進來晃晃,資料全都攤在陽光下。唉,其實這種狀況滿常見的啦,很多人肯定心裡會咕噥:「啊,那安全怎麼辦?」嗯,我自己也是偶爾會想太多。不過在這一塊,好像SMB簽章還是一直開著,所以那種靠NTLM轉發去搞鬼的攻擊方式目前看來應該沒什麼戲唱──至少我現在查到的是這樣。

然後又聽人提到一招叫「Pass-the-Ticket」,有時候縮寫PTT,不知道為什麼每次看到我都會想到網路上的那個PTT(欸,離題了)。總之,它其實是Kerberos體系底下的一種攻擊手法。大致意思就是:假如有人莫名其妙撿到一張合法Kerberos TGT票券,就直接拿它去冒充別人登入,不用再煩密碼什麼的。細節嘛……坦白說,我自己有時候也分不清楚那些技術小眉角,但歸納起來,就是票據偷出來再利用吧。

講回steve.rogers──嗯,他本身還活得好好的,所以就有人動歪腦筋,打算用Impacket工具試著把他的Kerberos TGT挖出來。有趣的是,他們討論過程只給了一條指令範例,結果到底怎樣…完全沒交代,就丟了句:
impacket-getTGT jgpython.lab/steve.rogers:Password123 -dc-ip 10.80.80.2
流程大概長這樣啦:先檢查賬號沒鎖,再想法子用命令列拉取Kerberos憑證。而究竟能不能成功假冒、操作有沒有被擋住?呃,目前只能靠後續更多測試才知曉囉──總之步驟就是照著上面那套走,大概吧。

SMB漏洞裡的機會和無聲入侵

有時候,嗯,像 steve.rogers.ccache 這樣的檔案就會被留在系統裡。你說這種 .ccache 跟 Kerberos 認證票有什麼關聯?其實還真有點關係。聽人說,在某些情況下,只要手上拿得到那個東西——就是那份 ccache,即使根本不知道 Steve.rogers 的密碼,好像也能冒充他登入系統或完成認證。我是不是太疑神疑鬼?但網路上真的有人講。

細節很多啦,其實我每次研究都覺得腦袋快打結了。反正大概是把 ccache 的路徑指定給 KRB5CCNAME 這個變數,例如 export KRB5CCNAME=steve.rogers.ccache,然後咦,有些服務似乎就真的讓你直接跳過輸入密碼這一步。有夠方便,也挺可怕的……剛剛想到晚餐還沒買欸,但先不管這個。

當然啦,不一定所有系統都吃這一套,我聽到也只是部分人的經驗而已,不算鐵律。說不定還有什麼怪方法能用,可目前大家比較常傳的大致上就差不多是如此吧。唉,資訊安全真的讓人頭疼。

SMB漏洞裡的機會和無聲入侵

TGT怎麼來?Impacket一行指令偷溜帳戶權杖

一開始其實沒什麼信心啦,誰曉得呢?反正就先看SMB有沒有敞開。腦袋亂成一團,還差點忘了怎麼下指令──嗯,我是查詢了一下對方網路裡可用的共享資源吧,那個參數說真的我都快記不住,大概就是打一串管理員帳號配上目標IP這種老把戲。按下去之後螢幕跳出來幾行資料,像「公司文件」、還有那種叫系統資料夾的鬼東西,另外又蹦出個跟登入腳本有關的小玩意。

看到那個什麼公司文件就突然莫名在意起來,不知道是不是直覺告訴我裡頭搞不好藏著敏感料──咳,總之我就順手連進去試試嘛。滑到一半差點被旁邊手機訊息打斷,不過很快又回神,把注意力放回主題。然後隨便敲了目錄顯示命令翻了一輪,看見幾份一看就不太可能給外人瞄的文檔,比如說什麼敏感報告、薪資表這類鳥事,有些甚至直接寫著明細檔名(呵,也許只是測試環境啦,但也不能確定)。

結果好奇心作祟,我索性從那些檔案裡扯下一份小東西來做測試。名字普通到爆炸,但就是想看看到底能不能下載成功──流程簡單得讓人想睡,只是等個一兩分鐘而已,那網速也沒多厲害。如果換成大檔案要傳?拜託,大概會慢到忍不住分神去倒杯水了。

喔對,接著我腦子一抽,又跑回同個資料夾位置丟了支執行檔進去,其實純粹想看看權限到底寬鬆成啥樣。這步驟根本無聊透頂,就是丟進去而已,只要權限沒死鎖基本都能塞得進。講白了和日常貼圖或傳訊息差不了多少,只是技術門檻稍高罷了。如果那台機器是在正式生產線上,恐怕就不是這副景象──他們防護應該會嚴密很多,有時候想動點手腳還真懶得浪費力氣。

唉,其實每次遠端碰那些分享資源時總覺得怪怪的,你以為某一步肯定掛掉,它偏偏輕鬆繞過;問哪段最重要?也難說啊,每條細節都暗藏玄機。不過話又說回來,每次操作現場狀態都變化萬千,很多時候只能硬著頭皮臨時修正路線──所以呢,到頭來哪一步照劇本演完?哈哈,大多時候都是邊走邊猜啦!

偷吃步:ccache、Pass-the-Ticket與不問密碼的通行證遊戲

有時候,攻擊者會做一些很無聊但又讓人覺得煩的事,比如直接從Kali那邊丟檔案上來、用get或put這種命令搞事。唉,其實聽久了也不稀奇啦——只是說,這背後代表他們能悄悄塞後門程式進去,或者在系統裡面留下什麼莫名其妙的小東西用來維持存活。嗯,我記得紅隊測試好像也常見有人玩這套。

然後,欸…對,本來想講安全議題本身。Kerberos帳號名稱枚舉、找SMB服務、還有抓Kerberos票證這些流程,在紅隊圈子裡根本老掉牙——大家都在玩這招。有時候聊天還會聽人講,透過那些方法,好像真的能摸出哪些使用者帳號存在喔,也許還能翻到某些敏感資料夾的內部共享資訊;甚至一不小心就橫向滲透到別台AD主機。啊,不過企業要是想減低風險,大概就是緊盯Kerberos請求,有哪裡怪就趕快查,再把SMB權限收緊一點——最小權限原則嘛,但話說回來,現實通常比理論複雜太多。有些地方看似嚴格,但漏洞總藏在那些你懶得細看的角落裡……大致就是醬吧。

偷吃步:ccache、Pass-the-Ticket與不問密碼的通行證遊戲

smbclient悄悄進房間,挖出那些共享文件櫃裡的秘密檔案

有些組織在處理Active Directory時,唉,老是因為設定沒那麼嚴謹,最後一不小心就踩到NIST、ISO 27001這類國際標準的紅線。其實講實話,大家嘴上說要跟著標準走,可是現實咧?嗯,很難啦。有時候聽到CIS控制裡面,也一直重複強調帳號驗證得細膩到極致,然後什麼SMB簽章、Kerberos監控這種好像很艱澀的機制,他們也都強調要上手才行。至於是不是真的每個人都弄得懂,我自己有點懷疑。反正大方向大家都差不多啦,就是不停提醒存取權限你一定要顧好,不然隨時出問題。

欸對,有時候會岔題一下——前陣子還看到某單位去請紅隊或做滲透測試,感覺有點像讓外人進來瞧瞧家門窗是不是偷工減料。有些人會建議偶爾來一次,其實挺有用,可以提前發現潛在問題,也能算是在合規審查上多一層保障吧。不過說真的啦,再怎麼檢查安全,其實和完全100%達到法規要求,好像還是隔著那層玻璃。唉,大概只能說提升一點安全性而已,但想要絕對無瑕疵,好累。

回過頭來聊攻擊方法好了,有關Active Directory被盯上的招數真的不少喔——比如猜帳號密碼、翻找SMB分享空間,又或者直接針對Kerberos票據下手,每一步都是壞人慢慢往上升權限的機會。這些技倆聽起來很專業(我也常被搞混),但很多紅隊演練或資安顧問公司其實都愛用。他們通常說:拿這些東西評估你的環境底蘊還挺行,不過,要不要每家企業都全盤照搬,每次仔細看下來情況真的是各式各樣。所以如果有人問「怎樣知道自家網路到底扛得住嗎?」我只能苦笑說,大概只剩靠不同角度測試,一步一步修補那些你沒發現的破洞吧。人生哪有那麼完美啊?

結語:攻防輪迴下該學會什麼教訓

有時候真的很煩,假如你安全措施沒弄好,攻擊者就會像貓走路那樣悄悄的、慢慢摸索出哪些帳號是活的。嗯,你不小心設定比較鬆懈的SMB分享,他們大概還能直接看到一些本來外人根本無緣得見的資料。這種狀況不是聽說而已,我自己偶爾也聽身邊同事抱怨——啊對,有黑客會利用Kerberos票據繞過驗證這種戲碼,奇怪的是不少案例就是這麼發生,好像也沒什麼驚喜感了。有些公司每次出包才在開會要強化驗證政策,然後口口聲聲說要限制誰可以用SMB……唉,但講歸講,很多時候風險還是在那邊等著。

欸、講到Kerberos的監控跟日誌記錄,其實現在大家都知道重要,可是老實說,不少公司根本沒做到位,就是那種「有做但超敷衍」的境界啦。不過現在看起來,有些團隊終於開始重視起來了。他們偶爾安排紅隊演練或者是滲透測試,就是模擬比較貼近現場狀況的那些攻擊流程——呃,我覺得這方法多少蠻有效吧,畢竟如果漏洞一直沒被翻出來,也就一直補不起來啊。有點想岔題去吐槽某些標準流程超級冗長,但算了還是拉回主題。

如果真能多花點功夫去理解那些常見手法,例如什麼Kerberoasting啦、橫向移動啊、票據盜用之類……其實再加上像SMB列舉,理論上防守方應該更快察覺異狀,也許有機會在事情發展成災難之前先踩剎車。不過話又說回來,要完全杜絕所有威脅好像永遠只存在於理論裡,好累喔,到底怎麼可能全都顧到?每次一堆細節彷彿永遠記不住全部,只能盡力吧,大概如此。

Related to this topic:

Comments