Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 進階隱藏技術深度解析:檔案、行程與模組隱藏原理與實作

編輯:Linux 教學

本文深入分析 Linux 環境下檔案、行程及核心模組的進階隱藏技術,涵蓋 LKM(可載入核心模組)程式設計、記憶體映像直接修改系統呼叫、/proc 虛擬檔案系統隱藏行程 三大核心技術。這些技術廣泛應用於後門程式與安全檢測工具,部分仍處討論階段。

核心背景知識

1.1 中斷控制與系統呼叫

x86 支援 256 種中斷,Linux 用 0x80 中斷向量實現系統呼叫。所有系統呼叫經唯一入口 system_call 進入核心,透過系統呼叫表 sys_call_table 以呼叫號索引對應函數位址(如 sys_call_table[NR_fork] 指向 sys_fork())。

1.2 LKM(可載入核心模組)技術

模組為核心一部分但未編譯進核心,運行時動態插入/移除。模組程式設計即核心程式設計,可使用核心導出資源(如 Linux 2.4.18 前導出 sys_call_table 位址,可直接修改系統呼叫入口)。模組必須包含初始化 init_module() 與清理 cleanup_module() 函數(2.3.13 後可重命名)。

1.3 記憶體映像 /dev/kmem

字元裝置,主記憶體映像。核心不導出 sys_call_table 或禁止載入模組時,可透過修改 /dev/kmem 實現系統呼叫竄改,達到隱藏目的。

1.4 /proc 虛擬檔案系統

以檔案系統介面輸出系統運行狀態,僅存在記憶體中。ps 等指令透過讀取 /proc 獲取行程資訊。

技術實作分析

2.1 隱藏檔案 - 竄改 sys_getdents

查詢檔案資訊的系統呼叫為 sys_getdents(較新核心為 sys_getdents64,原理相同)。修改流程:

  1. 呼叫原版 sys_getdents 取得 dirent 結構陣列
  2. 遍歷陣列,移除特定檔名相關項目
  3. 返回過濾後結果,應用程式即無法看見該檔案

2.2 隱藏模組 - 竄改 sys_query_module

查詢模組資訊呼叫為 sys_query_module。當 which=QM_MODULES 時返回所有已載入模組名稱。修改邏輯:呼叫原版 → 若 which!=QM_MODULES 直接返回 → 從緩衝區起始處掃描,發現特定名稱則用後續項目向前覆蓋 → 重複至結束 → 正常返回。

2.3 隱藏行程 - 利用 /proc 特徵判斷

Linux 無直接查詢行程的系統呼叫,ps 等透過 /proc 實現。/proc 擁有特殊裝置號(主 0、次 1)與索引節點號 PROC_ROOT_INO (1)。判斷檔案屬於 /proc 的條件:

dinode->i_ino == PROC_ROOT_INO && !MAJOR(dinode->i_dev) && MINOR(dinode->i_dev) == 1

在 hacked_getdents 中加入此判斷,若屬 /proc 且檔名需隱藏(行程 PID 目錄),則從結果移除。

2.4 系統呼叫替換的兩種關鍵方法

場景方法
核心導出 sys_call_table 且支援動態模組(<2.4.18)直接修改 sys_call_table[SYS_getdents] 指向新函數,模組卸載時恢復
核心不導出 sys_call_table(≥2.4.18)透過 /dev/kmem 掃描記憶體:讀取 IDTR → 取得 IDT 第 0x80 項(system_call 位址) → 掃描 system_call 機器碼尋找 call *sys_call_table(,%eax,4) 指令(機器碼 0xff 0x14 0x85) → 計算 sys_call_table 位址 → 讀寫 /dev/kmem 修改表項

2.5 持久化與隱蔽啟動技巧

  • 將啟動碼做成腳本放入 rc3.d 等運行等級目錄,檔名改為可隱藏名稱
  • 修改啟動腳本植入載入碼,行程/模組啟動後立即恢復腳本原狀
  • 處理 SIGHUP 訊號(關機時發送),在訊號處理函數中重新植入啟動碼,下次開機自動載入,管理員檢查腳本無異常

結語

本文系統闡述 Linux 進階隱藏技術原理與實作,涉及技術不僅適用安全領域,對核心程式設計、系統監控等亦有重要參考價值。Linux 開放特性使獲取 root 權限後可深度修改系統,防範首次入侵至關重要。

Copyright © Windows教程網 All Rights Reserved