rootkit通常會隱藏程序,隱藏檔案和網路連線。這裡主要記錄幾種對隱藏程序的檢測方法
一. 隱藏程序的方法
1.1 使用者級rootkit 通過ld_preload來hook libc庫,從而過濾/proc/pid目錄
1.2 核心級rootkit 通過hook系統呼叫getdents/getdents64或者hook 檔案file_operation的iterate
1.3 核心級rootkit把task_struct 從相關鍊錶摘除(init_task,pidlist)
二 檢測程序的方法
2.1 前兩種隱藏檢測方法
因為程序還在核心鍊錶中,可以通過pid找到task_struct .
第一步:讀/proc/pid目錄,收集系統所有程序
第二步: 給0到pid_max程序傳送任意訊號,訊號傳送成功,表示程序存在,從而收集系統所有程序
for(pid=0;pid第三步:對比第一步和第二步收集程序的差異,即可確認隱藏程序(要排除已經退出的程序)
2.2 第三種隱藏方法的檢測
因為在鍊錶中找不到,所以不能通過pid找到task_struct.這裡可以基於task_strcut的特徵,在記憶體中查詢task_struct結構體
直接上**:
/*通過pid獲取task_struct檢測程序是否存在,也可以讀/proc/確認 */
static struct task_struct *get_task(pid_t nr)
return task;
}/*這裡假設隱藏程序使用cfs排程,其他排程類也可採用類似方法比較 */
static int scan_task(struct page *page)
start++;
} return 0;
}static void scan_memory(void) }
}
效果:
把firefox程序3126從核心鍊錶中摘除,從/proc/看不到
ls: cannot access '/proc/3126': no such file or directory
載入記憶體掃瞄模組:
[ 2452.997816] we get hide task firefox,pid=3126
可以看到能夠找到被隱藏的程序.
通過task_struct的特徵值來掃瞄記憶體時,一定要選取不能輕易篡改的值,否則很容易被木馬對抗.
學習筆記(三) 使用K近鄰演算法檢測Rootkit
rootkit是一種特殊的惡意軟體,它的功能是在安裝目標上隱藏自身以及指定的檔案,程序和網路鏈結等資訊。1.資料蒐集 kdd 99 tcp連線內容特徵包括hot num faild logins logged in num compromised root shell su attempted nu...
電感檢測 幾種常用的電流檢測方式
rt1720 是一款最高輸入電壓可達 80v 輸出電壓可達 60v 的熱插拔控制器,它的作用是防止系統受到過高電壓和負電壓的攻擊,同時還能防範過電流可能導致的問題,它的一種應用電路大致如下圖所示 為了檢測負載電流的大小,rsns 被串接在電路中的 vcc 和 sns 之間,流過它的電流會在其兩端形成...
目標檢測之指尖檢測 指尖檢測的新方法幾種
指尖檢測根據應用可以分為單指尖檢測和多指尖檢測。下面是我在工作中想到的方法,希望對你有用或提供點兒靈感。單指尖檢測新方法 重心距離法 找到手的區域,我一般用膚色檢測 計算手的區域的重心 在手的區域的邊緣點集中尋找距離重心最遠的點,該點即為指尖候選位置 判斷找到的點是否為指尖。判據 候選點到重心的距離...