iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

【故事】

血獵犬給了O1一條路。這一天,他要走上去。

那條路從一個雜役開始,經過四個人,通到那個家族的門。O1 站在第一個人,管鑰匙的——面前,然後遇到了第一個問題:

這個管鑰匙的,不認得他。

他手上有雜役的身分。可是管鑰匙的不會因為「你是個雜役」就替你開門。他需要的是管鑰匙的所信任的那個人的身分。

而那個身分,不在他身上。


O1退回去,重新看那條路。

他發現自己想錯了。他一直以為「順著關係走上去」的意思,是他從雜役變成管鑰匙的、再變成下一個人,像爬階梯一樣,一階一階換身分。

不是。

他不需要變成那些人。他需要的是,讓每一道門,以為來的是它認得的人。

門不會看臉。門這種東西,從來不看站在它面前的是誰。門只認一樣東西:印。

拿著它認得的那個印,門就開。它不會抬頭確認那個印是不是真的長在你身上。


O1 蹲下來,開始想:那個管鑰匙的認得誰的印?

他回到那個雜役待過的地方翻找。雜役地位低,但雜役每天要進出很多房間,而每一次進出,都會在門框上留下一點痕跡——那些痕跡裡,藏著雜役用過的印的影子。

他找了很久,在門框的一道縫裡,找到一片很淡的影。

那不是印本身。是印蓋下去之後留下的殘影,像蓋章蓋在紙上,紙的背面會透出一點痕跡。影很淡,但夠了。

他把那片影拓下來,拿到管鑰匙的門前。

他沒有假裝自己是誰。他只是把那片影亮出去。

門開了。

門沒有問他是誰。門只看到一個它認得的影,然後它就開了。


這一招O1一連用了幾次。

管鑰匙的門前,一片影。跑過腿的那個人門前,另一片影——那片影他是從管鑰匙的房間裡找到的,因為跑過腿的人,以前替管鑰匙的做過事,留過印。

一片影帶他到下一片影。每一個人的房間裡,都藏著通往下一個人的影。

這正是血獵犬圖上那些線的真正意思——不是「這些人互相認識」,是「這些人的印,在彼此的房間裡留過影」。

O1 一路拓影、一路叩門,走得越來越順。他甚至有點恍惚,這件事太安靜了。沒有破口術式的火光,沒有撞門的巨響。他只是一次又一次,把一片別人的影亮在門前,然後門就開了。

這座城最堅固的地方,是靠信任守的。而信任,是這座城裡最好偷的東西。


走到那個留著舊鑰匙的老僕門前,他停了一下。

那個老僕特別重要。血獵犬在他身上標了一個很粗的記號——因為那個老僕,因為一個很久以前的舊約定,手裡還留著一把通到那個家族內院的鑰匙。

那個約定,那個家族早就忘了。但系統還記得。系統從來不會忘記它承諾過的信任,哪怕承諾的對象已經沒有人記得。

O1 從前一個人的房間裡,拓到了老僕的影。

他站在老僕門前,把影亮出去。

門開了。而門後面,那把通往內院的舊鑰匙,就掛在牆上。


他拿到那把鑰匙的時候,天快亮了。

他坐在老僕的房間裡,看著手上那把舊鑰匙,忽然想起一件事。

他想起自己在公會的最後那幾年。他其實也是一把「被系統忘記的鑰匙」,他做過很多事,有過很多貢獻,那些貢獻理應在某個地方留下一點什麼。可是沒有人記得了。派令官不記得,公會不記得。

他一直以為,被忘記,就等於不存在。

可是這個老僕教了他另一件事:系統忘記你,不代表那個信任消失了。它只是躺在那裡,等一個知道怎麼用它的人。

那個老僕不知道自己手裡的鑰匙有多重要。是 O1,是那隻狗,讓那把被遺忘的鑰匙重新變得有意義。

他坐在那裡,想了很久一件事,他自己身上,是不是也有一把這樣的鑰匙?一個被所有人忘記、包括他自己都快忘記,但其實一直都在的東西?


他沒有推開內院的門。

離天亮還有一點時間,他大可以走完最後這一步。但他沒有。

他把那把舊鑰匙握在手裡,退了出來,走出王城,走回自己的石室。

因為他想乾乾淨淨地,在一個完整的白天,清醒地,走完最後那一步。

不是在一個熬了整夜、快要天亮的恍惚裡。

他這幾個月太常在恍惚裡做決定了。這一次,他想清醒著贏。


他在王城那一頁的最後,寫下一行:

「門不看臉,門只看影。
而這座城最堅固的地方,剛好是它最好騙的地方。」

寫完他闔上冊子。

明天,或者說今天晚一點,他要去推開那道內院的門。

第三次進王城,他終於,看得懂它了。


【解咒筆記】橫向移動:門不看臉,只看影

Day 16 用 BloodHound 看見了路。這一篇走完它——AD 攻擊真正的手起刀落,都在這一段。

〇、真正在客戶環境裡打 AD 的機會,其實不多

拿 DC 當目標、一路橫向到底,那是紅隊演練的範疇。一般滲透測試很少直接以整座網域為目標——AD 太核心,客戶通常不會讓你在正式環境裡這樣搞。自己這些年,真正在客戶端碰 AD 的次數,一隻手數得完,而且幾乎都是紅隊案。

所以對多數人來說,AD 的主戰場是靶機和考試:OffSec 的 PG Practice、Lab,或考試那組。而且很多靶機是單機收尾,真正「整個 AD 環境」的靶機不算多。

核心觀念一句話:

在 AD 裡,你很少「變成」某個人。你更常做的,是拿著那個人的『證明』,讓系統以為你是他。

系統驗證身分,靠的不是「你本人」,是你能不能出示正確的憑證。而憑證,是可以被偷、被傳遞、被偽造的。這就是故事裡那句「門不看臉,只看影」。

一、憑證的幾種「影」

先分清楚會撿到的東西是什麼形態,因為用法完全不同:

形態 是什麼 怎麼用
明文密碼 最直接 直接登入
NTLM 雜湊 密碼的「影」——不是密碼,但系統認它 Pass-the-Hash
Kerberos 票證 一張「通行證」 Pass-the-Ticket
可破解的雜湊 服務帳號的加密憑證 Kerberoasting

重點:你常常不需要知道密碼。 你只要那個「影」,雜湊或票證——就能讓門開。故事裡「拓下印的殘影」就是這個:你沒有印本身,你有它留下的影,而門只認影。

二、憑證從哪裡挖:這通常是第一步

拿到一台機器的存取後,第一件事是搜刮憑證。機器的記憶體、登錄檔、快取裡,藏著登入過這台機器的人的憑證。

  • mimikatz:最有名的憑證搜刮工具。從 LSASS 記憶體裡挖出明文密碼、雜湊、票證。我最常用這個
  • secretsdump(Impacket):從遠端 dump 出雜湊。我常拿它當偷吃步——不用真的登進那台機器,直接在 Kali 上對著目標跑,手上有一組憑證就能挖。想省事的時候先試這個
  • lsassy / nanodump:比較隱蔽的 LSASS 存取方式

故事裡「每個人的房間裡都藏著通往下一個人的影」講的就是這件事:你拿下的每一台機器,記憶體裡都可能有別人的憑證。 那個「別人」如果權限比你高,你就往上走了一階。

「哪個高權限帳號登入在哪台機器」是黃金情報(Day 16 的會話列舉),那台機器的記憶體裡,就躺著那個高權限帳號的影。

三、Pass-the-Hash:門只認雜湊

Windows 的一個古老設計:驗證身分時,很多情況下系統比對的是密碼的 NTLM 雜湊,不是密碼本身。

所以如果挖到某個帳號的 NTLM 雜湊,你不用破解它,直接拿雜湊去登入。

crackmapexec smb 172.16.5.0/24 -u Administrator -H <NTLM雜湊>
impacket-psexec -hashes :<NTLM雜湊> Administrator@目標

(crackmapexec 後來改名 NetExec,舊指令有時跑不動我才換新版。)

這就是故事裡「一片影帶你到下一片影」,在 A 機器挖到管理員的雜湊,拿去開 B 機器的門。

四、Kerberoasting:把「影」拿回家慢慢烤

AD 裡有些帳號是給「服務」用的。有一個設計是:任何一個網域使用者,都可以跟系統要一張「用來存取某個服務」的票證,而那張票是用該服務帳號的密碼雜湊加密的。

所以,,用最低權限的帳號,去要一張票,帶回家慢慢暴力破解它的加密,就能還原出服務帳號的密碼。

impacket-GetUserSPNs -request domain/user:password
# 然後 hashcat 離線爆破

故事裡「拿走一張符,回家慢慢烤」就是它。可怕在於:不需要任何特殊權限,一個最低階帳號就能發動。 前提只是那個服務帳號設了爆得開的爛密碼——而這種帳號的密碼常常很多年沒改。

AS-REP Roasting 是近親:某些帳號若設了「不需預先驗證」,你連密碼都不用就能要到可破解的票。

五、把整條路串起來(先講清楚:這是教科書版)

下面這條是完整的教科書路徑。它很正統,但不見得每次都走完整條,靶機常常是第 1 步進去、第 2 步就直接挖到 hash,中間全跳過。:

  1. 立足點:一個低權限網域帳號(過路人給的鑰匙)
  2. BloodHound 畫出路徑(血獵犬的圖)
  3. 進到機器後先搜刮憑證(secretsdump / mimikatz)——很多時候這一步就直接給你下一片影了
  4. 如果沒有,再看有沒有可以 Kerberoast 的服務帳號、或其他橫向的路
  5. 用挖到的雜湊 Pass-the-Hash 到下一台
  6. 重複,直到某一步挖到的憑證,屬於一個能碰到 DC 的帳號
  7. 拿下 DC——明天的事

實務上第 3 步的命中率很高,所以,常常是「進去 → secretsdump → 直接拿到往上的憑證」,Kerberoast 反而不是我的起手式。每個人的順序會依打過的環境長出不同的偏好,這很正常。

六、給防守方與委託的話

寫報告的時候,客戶問的是「那我怎麼辦」,所以防禦面要講清楚:

  • Pass-the-Hash 的根源是憑證留在記憶體 → 減少高權限帳號到處登入、用 LAPS 讓本機管理員密碼各不相同、Credential Guard
  • Kerberoasting 的根源是服務帳號爛密碼 → 用 gMSA(受管理服務帳號,密碼超長自動輪換)、服務帳號強密碼
  • 偵測:這些攻擊在日誌裡有特徵(異常票證請求、LSASS 存取),SIEM 抓得到

做滲透測試,價值不在「我打進去了」,而是「告訴客戶這條路怎麼堵」。 報告裡每一個攻擊步驟,都要對應一個修補建議——寫太簡單客戶還會追問細節。 這一點 Day 28 完整談。

七、一個誠實的提醒

這一篇的工具(mimikatz 尤其)在真實環境裡動靜很大,防毒和 EDR 幾乎都認得。

  • 練習和考試環境通常沒有 EDR,可以放手用
  • 真實紅隊演練要處理規避,那是另一個很深的主題
  • 一般滲透測試若範圍含 AD,通常會事先跟客戶講好「會模擬這些手法」,在受控情況下執行

技術是同一套,但在哪裡、用多兇,是授權和環境決定的。(又一次回到 Day 14。)


【工會箴言】

門不看臉,門只看影。
一座城最堅固的地方,如果是靠信任守的——那也是它最好騙的地方。



上一篇
Day 16|血獵犬
下一篇
Day 18|長夜前夕
系列文
《再叩一次》—一個中年轉職叩門者的 OSCP 三十夜 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言