0x01:先說說一般程序隱藏程序的常見方式,這裡就直接引用大佬的辣
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)
0x02:程序摘鏈隱藏與恢復
前面兩種實現的方式都是比較普遍的做法,第二種方式筆者前幾篇文章也有介紹過,有興趣的可以參考一下,這裡主要講一講第三中隱藏方法,顧名思義也就是說linux核心通過鍊錶來維護所有的程序和對應的pid號,知道這點,就知道怎麼去下手了,首先我們需要看看兩個結構體,task_struct 和 pid 兩個結構體,這裡主要貼出我們用的部分,其他的可以參見核心原始碼 include/linux/sched.h;
//我這裡參照的是5.2的核心**,和低版本還是有區別的
struct sched_info sched_info;
struct list_head tasks;
/* pid/pid hash table linkage. */
struct pid *thread_pid;
struct hlist_node pid_links[pidtype_max]
;struct list_head thread_group;
struct list_head thread_node;
直接上**了:
#include
#include
/*摘鏈隱藏**,只需要修改想要隱藏pid號就可以了*/
void
hide_process
(void
)/*還原鍊錶,ps -aux仍然可以檢視程序資訊*/
static
intrestore_process
(struct task_struct *task)
static
int __init test_init
(void
)static
void __exit test_exit
(void
)module_init
(test_init)
;module_exit
(test_exit)
;module_license
("gpl");
module_author
("curtis li"
);
參考兩位大佬的文章: linux程序隱藏
1.系統命令替換,通過stat檢視檔案狀態修改,md5sum檢視hash是否匹配,如果要修復,將正常檔案複製回來即可。2.hook系統呼叫,在呼叫鏈中修改惡意庫,造成惡意呼叫實現隱藏。查詢此類 通過sysdig proc.name ps檢視ps的呼叫 找到惡意的動態庫即可。也可以檢視環境變數ld p...
Linux程序隱藏問題 顯示隱藏程序
阿里云云監控到有兩台redis伺服器cpu被某程序消耗400 cpu資源 系統檢視top 情況並未找到高消耗程序x7但cpu100 ni netstat 查詢到了一些異常請求,初步判斷出元件被提權入侵了 嘗試查詢異常程序x7關聯的檔案,排查還在 etc hosts發現增加了如下異常對映,檢視相關異常...
linux 隱藏程序 crux實現
本文在不修改ps或top命令的任何 與採用將程序號置0的方法的前提下,實現隱藏程序,本程式在crux 2.2上實現 1 原理 linux中,可以通過 proc檔案系統訪問到許多核心的內部資訊。proc檔案系統最初的設計也是用於方便地訪問程序相關的資訊,因此命名為proc。現在這個檔案系統已用於反映系...