在成功的滲透測試中,取得初步的系統存取權限僅是攻擊鏈的開端。真正的挑戰在於如何將此立足點轉化為通往核心資產的路徑。此階段涉及一系列精密的後滲透攻擊(Post-Exploitation)技術,其核心目標是提升權限、在網路中橫向移動,並最終達成預設的測試目標。本篇文章將聚焦於此關鍵轉折點,從利用 PowerShell 獲取反向 Shell,到運用網域管理員憑證升級為高權限使用者,展示攻擊者如何逐步擴大其控制範圍。此外,為了模擬更真實的企業防禦架構,我們將建構 pfSense 防火牆以實現網路分段,為後續跨網段的深度滲透奠定技術基礎,完整呈現從單點突破到全面控制的攻擊路徑。
偵測與發動攻擊:企業網路滲透實戰(續)與後續展望
玄貓認為,在成功的滲透測試中,獲取初步的shell僅是起點。如何維持存取、提升權限、橫向移動並最終達成目標,需要更精密的策略和工具運用。本節將繼續展示如何利用PowerShell獲取反向shell,並透過impacket-psexec利用網域管理員憑證獲取更高的權限shell。同時,玄貓也將對本章內容進行總結,並展望下一章的深入探索。
1. PowerShell反向Shell與環境準備:
1.1. 禁用Windows Defender即時保護:
- 為了讓PowerShell反向shell在當前環境中成功運行,我們必須在Windows 10 VM上禁用即時保護。
- 前往「病毒與威脅防護設定」中,關閉「即時保護」。
1.2. 設定Kali Linux監聽器:
- 禁用即時保護後,我們將使用以下命令設定一個新的監聽器:
nc -nvlp 4242
- 運行命令後,您將看到監聽器在埠4242上等待連接。
1.3. 執行PowerShell反向Shell:
- 之後,我們將在Windows 10工作站上執行之前準備好的PowerShell命令。
- 反向shell連接後,我們將在Kali Linux監聽器上獲得輸出,表示成功獲得了一個反向PowerShell shell。
2. 利用網域管理員憑證獲取高權限Shell:
2.1. 使用impacket-psexec:
- 透過PowerShell載荷,我們現在已經成功獲得了一個反向shell。
- 接下來,我們將使用
impacket-psexec來發動攻擊,以獲取一個新的shell。 - 我們將使用本章第一部分中生成的網域管理員帳戶:
lab.da和Password123。 - 首先,執行以下命令:
impacket-psexec labcorp.local/lab.da:'Password123'@172.16.0.2
- 執行上述命令後,您將獲得一個高權限的shell。
2.2. 關於RDP的考量:
- 讀到這裡,您可能會想,既然我們已經有了憑證,為什麼不直接使用遠端桌面協議(RDP)連接到Windows主機,然後從那裡進行攻擊呢?
- 玄貓認為,您的想法完全正確。您可以使用這些憑證RDP到Windows主機。然而,您必須謹慎行事。無論我們如何巧妙地隱藏足跡,總會有跡可循。如果您開始使用RDP會話,它們可能會變得相當「嘈雜」,而且您幾乎肯定會遇到您破解憑證的原始使用者,因為他們也會登入系統。因此,使用更隱蔽的工具如
impacket-psexec通常是更優的選擇。
########## 3.2. 下一章展望:
- 在下一章中,我們將進一步深入網路,最終管理實體I/O。
4. 第十一章:深入探索
4.1. 概述:
- 在閱讀完上一章後,我們現在已經獲得了立足點/shell,但接下來該怎麼辦?
- 下一步是弄清楚我們身在何處以及我們擁有什麼存取權限。這個過程包括收集盡可能多的數據、收集憑證、映射網路連接、利用代理執行內部網路掃描以及定位可橫向移動的主機。
- 這是我們必須在系統內部導航的階段。這可以透過各種提示來完成,這些提示將揭示低層級系統的事實,這些事實對於深入到實際的I/O是必要的。
4.2. 本章目標:
- 在本章中,我們將設定一個防火牆,這將允許我們在實驗室網路中創建分段。
- 這通常是使用者在首次存取網路後會卡住的地方,並提出諸如「我現在該怎麼辦?」、「我需要採取哪些步驟才能獲得管理員存取權限?」、「我下一步該怎麼做?」等問題。本章將協助您回答這些問題。
- 我們將使用Empire來創建一個控制和命令(C2)伺服器,它將允許我們捕獲憑證、定位易受攻擊的服務並獲得提升的存取權限。
- 之後,我們將使用埠轉發、SSH隧道和代理鏈(proxychains)來更深入地進入網路,並最終入侵工業過程。
4.3. 本章結構:
- 本章將涵蓋以下主題:
- 配置防火牆
- 我有一個shell,然後呢?
- 提升權限
- 橫向移動
4.4. 技術要求:
- 本章所需工具將在下一部分列出。
此圖示:PowerShell反向Shell與高權限Shell獲取流程
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
participant "滲透測試者 (玄貓)" as pentester
participant "Kali Linux VM" as kali_vm
participant "Windows 10 Workstation" as win10_ws
participant "Windows Server 2019 DC" as dc_server
box "PowerShell反向Shell與環境準備"
pentester -> win10_ws : 禁用 Windows Defender 即時保護
win10_ws --> pentester : 即時保護已禁用
pentester -> kali_vm : 執行 nc -nvlp 4242
kali_vm --> pentester : 監聽器在埠 4242 上啟動
pentester -> win10_ws : 執行 PowerShell 反向 Shell 命令
win10_ws -> kali_vm : 連接到監聽器
kali_vm --> pentester : 成功獲得 PowerShell 反向 Shell
end box
box "利用網域管理員憑證獲取高權限Shell"
pentester -> kali_vm : 執行 impacket-psexec labcorp.local/lab.da:'Password123'@172.16.0.2
kali_vm -> dc_server : 使用 lab.da 憑證執行 psexec
dc_server --> kali_vm : 成功建立高權限 shell
kali_vm --> pentester : 顯示 impacket-psexec shell
end box
box "本章總結與下一章展望"
pentester -> pentester : 總結本章內容 (AD, DNS, DHCP, 檔案共享, 枚舉, 毒化, 獲取 shell)
pentester -> pentester : 強調持續學習與技能擴展的重要性
pentester -> pentester : 展望下一章 (深入網路, 實體 I/O 管理, 防火牆配置, Empire C2, 權限提升, 橫向移動, 隧道技術)
end box
@enduml看圖說話:
此圖示詳細描繪了玄貓在企業網路滲透測試中,從獲取PowerShell反向Shell到利用網域管理員憑證獲取高權限Shell的關鍵步驟,並對本章進行了總結與展望。在PowerShell反向Shell與環境準備階段,玄貓首先在Windows 10工作站上禁用了Windows Defender的即時保護,這是為了確保PowerShell載荷能夠順利執行。隨後,在Kali Linux上設定了netcat監聽器,並在工作站上執行了預先準備好的PowerShell反向Shell命令,成功建立了與Kali Linux的連接,獲得了初步的遠端控制權。接著,在利用網域管理員憑證獲取高權限Shell階段,玄貓利用之前獲取的網域管理員帳戶lab.da的憑證,透過impacket-psexec工具,成功在網域控制器上執行命令並獲取了高權限的shell。最後,本章總結與下一章展望部分,玄貓回顧了本章所涵蓋的廣泛內容,強調了持續學習和技能擴展的重要性,並為讀者預告了下一章將更深入地探索網路、進行權限提升、橫向移動以及利用隧道技術等進階滲透測試技巧。整個流程展現了從低權限存取到高權限控制的進階滲透測試路徑。
深入探索:防火牆配置與進階滲透工具準備
玄貓認為,在滲透測試的進階階段,理解並突破網路分段是至關重要的。本章將引導您配置一個pfSense防火牆,以模擬真實世界中的網路分段,這將是我們深入網路並最終控制實體I/O的關鍵一步。同時,我們也將確保Kali Linux虛擬機上安裝了必要的進階滲透工具。
1. 技術要求與工具準備:
1.1. pfSense防火牆:
- 您將需要一個pfSense防火牆,您可以從其官方網站下載。
1.2. Kali Linux VM工具:
- 您的Kali Linux VM應安裝以下工具:
- Empire:一個強大的後滲透框架。
- mimikatz:用於從記憶體中提取憑證。
- Proxychains:用於透過代理鏈路由流量,以隱藏來源IP或繞過網路限制。您可以透過
sudo apt install proxychains安裝。 - Freerdp2:一個RDP客戶端,用於遠端桌面連接。您可以透過
sudo apt install freerdp2-x11 freerdp2-shadow-x11安裝。
2. 設定防火牆:
2.1. 為什麼現在才安裝防火牆?
- 玄貓認為,您可能會問為什麼我們在每個章節中都在實驗室中安裝或設定新的東西。為什麼我們不早點在書中安裝這個呢?
- 這不是一個壞主意,因為我們本可以花本書的前半部分來安裝實驗所需的一切。
- 然而,玄貓認為,培養不斷構建和拆除實驗室的習慣至關重要。這促進了靈活性,這是滲透測試的一個重要方面。透過這種方式,我們強化了適應性。
- 工業防火牆的知名製造商包括Fortinet、Checkpoint、Palo Alto、Belden和Moxa等。每個供應商都有優點、缺點、方法和功能列表,玄貓將留給您進一步研究。
- 在安裝防火牆並在整個參與過程中面對它們時,您必須非常靈活。一方面,玄貓見過沒有安裝防火牆的網路,另一方面,玄貓見過具有微細分和多層任務劃分的網路,這意味著在企業網路中建立連接需要多方協調。
- 我們將在實驗室中建立受控的網路分段。在本節中,我們將安裝和配置最新版本的pfSense(社群版)防火牆。
2.2. pfSense安裝與配置:
- 前往pfSense的官方網站獲取最新版本。在撰寫本文時,版本為2.5.1。
- 獲取ISO後,請務必將其儲存到您的資料儲存區並創建一個新的虛擬機。
- 對於配置,玄貓建議使用以下參數。網路適配器是最重要的部分。防火牆將設定為第4層,以便連接第5層:企業網路和第3層:操作網路。
2.3. 虛擬機啟動與EULA:
- 設定完成後啟動VM,並等待它完成初始引導過程。
- 「最終使用者許可協議」(EULA)將會出現。繼續點擊接受。
2.4. 安裝pfSense:
- 接受協議後,您將有三個選擇。選擇「安裝」並開始安裝pfSense。
- 之後,您可以根據您的地區更改鍵盤映射語言。玄貓建議使用標準的美國預設設定。
2.5. 磁碟分區:
- 鍵盤映射後,我們可以選擇如何分區磁碟。玄貓建議使用「自動(UFS)BIOS」方法。
2.6. 最終調整與重啟:
- 安裝程式完成後,您有機會進入終端並在重新啟動之前進行一些防火牆調整。玄貓建議您選擇不更改任何內容。
- 您現在可以重新啟動機器或直接進入shell。玄貓養成了一個習慣,即重置系統,這樣任何殘留的修改在下次重新啟動之前都不會完全提交。選擇重新啟動以繼續。
2.7. 控制台菜單與Web UI存取:
- 重新啟動完成後,控制台將提供一系列選項。您應該還會看到一個由DHCP分配的WAN IP以及一個預設的LAN IP位址。
- 我們將打開瀏覽器並使用預設的LAN IP位址透過Web UI設定防火牆。
- 前往您的LAN IP位址。在玄貓的範例中是
192.168.3.1。使用使用者名稱admin和密碼pfsense登入防火牆。
此圖示:pfSense防火牆安裝與配置流程
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
participant "滲透測試者 (玄貓)" as pentester
participant "pfSense ISO" as pfsense_iso
participant "虛擬機管理程式" as vm_manager
participant "pfSense VM" as pfsense_vm
participant "瀏覽器 (Kali Linux)" as browser
box "pfSense安裝準備"
pentester -> pfsense_iso : 下載最新版 pfSense ISO
pentester -> vm_manager : 創建新的虛擬機
pentester -> vm_manager : 配置虛擬機參數 (特別是網路適配器)
vm_manager -> pfsense_vm : 啟動 pfSense VM
end box
box "pfSense安裝引導"
pfsense_vm -> pentester : 顯示 EULA
pentester -> pfsense_vm : 接受 EULA
pfsense_vm -> pentester : 顯示安裝選項
pentester -> pfsense_vm : 選擇 "安裝 pfSense"
pfsense_vm -> pentester : 選擇鍵盤映射語言 (例如: US Default)
pfsense_vm -> pentester : 選擇磁碟分區方式 (例如: Auto (UFS) BIOS)
pfsense_vm -> pentester : 等待安裝完成
pfsense_vm -> pentester : 詢問是否進行最終調整
pentester -> pfsense_vm : 選擇不更改
pfsense_vm -> pentester : 選擇 "重新啟動"
end box
box "pfSense初始配置"
pfsense_vm -> pentester : 顯示控制台菜單 (包含 WAN/LAN IP)
pentester -> browser : 打開瀏覽器
pentester -> browser : 輸入 LAN IP (例如: 192.168.3.1)
browser -> pfsense_vm : 嘗試連接 Web UI
pfsense_vm -> browser : 顯示登入介面
pentester -> browser : 輸入預設憑證 (admin/pfsense)
browser -> pfsense_vm : 提交登入資訊
pfsense_vm --> pentester : 成功登入 pfSense Web UI
end box
@enduml看圖說話:
此圖示詳細描繪了玄貓安裝與配置pfSense防火牆的整個流程,這是為了在實驗室環境中建立網路分段的關鍵一步。首先是pfSense安裝準備階段,玄貓下載了pfSense ISO,並在虛擬機管理程式中創建了一個新的虛擬機,特別強調了網路適配器的配置,以模擬企業網路的層級結構。接著進入pfSense安裝引導階段,玄貓按照安裝精靈的指示,接受EULA,選擇安裝選項、鍵盤映射、磁碟分區方式,並在安裝完成後選擇重新啟動。最後是pfSense初始配置階段,pfSense VM重新啟動後,在控制台顯示了WAN/LAN IP資訊。玄貓隨後透過Kali Linux上的瀏覽器,使用預設的LAN IP和憑證(admin/pfsense)成功登入pfSense的Web UI。整個流程展示了如何從零開始建立一個功能齊全的防火牆,為後續更深入的網路滲透測試和橫向移動提供了基礎設施。
解構這項從初步滲透到深度橫移的進階攻擊路徑可以發現,真正的挑戰並非在於獲取單一的shell,而在於將這個初始立足點轉化為全局控制權的系統性能力。這不僅是技術的堆疊,更是攻擊者從「工匠」走向「戰略家」的思維躍升。
本章節演示了從PowerShell反向Shell到利用impacket-psexec提升權限的過程,這突顯了在多種工具間權衡隱匿性與效率的決策品質——例如,放棄「嘈雜」的RDP而選擇更隱蔽的命令行介面。然而,真正的成長瓶頸往往出現在「我有一個shell,然後呢?」的迷茫階段。為此,主動架設pfSense防火牆以模擬網路分段,正是將挑戰內化為成長機會的關鍵實踐,迫使測試者從單點突破的線性思維,轉向對網路拓樸與信任關係的系統性思考。
展望未來,隨著企業網路防禦縱深日益複雜,單純的漏洞利用價值將遞減。掌握如Empire等C2框架進行指揮控制、利用Proxychains進行隧道穿透,將成為滲透測試者突破網路分段、實現橫向移動的核心競爭力。這種「攻防一體」、自我設限再尋求突破的學習模式,預示著未來頂尖資安人才的養成趨勢。
玄貓認為,能否熟練地在受限環境中完成權限提升與橫向移動,並將其內化為一套可重複的攻擊哲學,正是區分資深與初階滲透測試者的核心指標,也是專業價值實現的關鍵所在。