[英]Ripping out the hidden kernel module by reading kernel memory directly?
是否可以通過直接讀取內核內存來找到隱藏的內核模塊?
通過隱藏我的意思是從內核模塊列表中刪除自己的LKM。
如果是這樣,我應該期待什么樣的結構,或者我應該讀什么文件?
在@Eugene之后,我找到了一種直接讀取內核內存以找到所謂的不那么聰明的隱藏模塊的方法:只需從procfs透視圖和sysfs透視圖中比較模塊:
static int detect_hidden_mod_init(void)
{
char *procfs_modules[MAX_MODULE_SIZE];
char *sysfs_modules[MAX_MODULE_SIZE];
int proc_module_index = 0, sys_module_index = 0;
struct module *mod;
struct list_head *p;
// get modules from procfs perspective
list_for_each(p, &__this_module.list){
mod = list_entry(p, struct module, list);
procfs_modules[proc_module_index++] = mod->name;
}
// get modules from sysfs perspective
struct kobject *kobj;
struct kset *kset = __this_module.mkobj.kobj.kset;
list_for_each(p, &kset->list) {
kobj = container_of(p, struct kobject, entry);
sysfs_modules[sys_module_index++] = kobj->k_name;
}
//compare the procfs_modules and sysfs_modules
...
}
實際上,它可以檢測大多數當前模塊隱藏的rootkit,但正如Eugene所說,“一個聰明的rootkit也可能試圖隱藏這些數據”。 所以這不是一個完美的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.