IT技術互動交流平台

Linux Rootkit 係列二_敲山震虎打一中草药:基於修改 sys_call_table 的係統調用掛鉤

作者-|计提福利费分录:佚名  發布日期|-csol2官网:2016-07-01 22:11:50

前言-_大连长兴岛论坛: 《Linux Rootkit 係列一-_|五家渠政务网: LKM的基礎編寫及隱藏》的作者似乎跑路了-||钟秀全;留下的這個口鍋-|-金山快译通,我試著背一下_--台湾雅虎奇摩首页。鑒於筆者知識能力上的不足||优信彩票预测,如有問題歡迎各位扔豆腐-||掌上彩票打,不要砸磚頭-1号彩票。
與第一篇文章作者所想象的不同___2017西甲哪个台直播,本文不打算給大家介紹三種不同的係統調用掛鉤技術-|尼伯特台风实时路径,相反_-_臻爱a900,本文僅詳細講解最簡單的係統調用掛鉤方案_|-恋恋不忘下载,並且基於這個方案實現最基本的文件監視工具||湖北汉川新闻网。這樣|_|尚志都市,既可以讓讀者輕鬆上手進行實際應用-_亿彩彩票手机版登录, 又可以加深__|306老版彩票、鞏固讀者對LKM 的理解|_|大连开发区社保网,同時還免去了一次學習多種掛鉤方案的理論知識壓力-|诺基亚103。
所以__新加坡成人社区,本文力求以實驗為核心-腾格尔歌曲下载,每一個步驟都可能有對應的實驗代碼-掌上纵横平台下载。代碼倉庫__盈彩彩票可信吗?: https://github.com/NoviceLive/research-rootkit _--后来歌词。代碼在最新的 64 比特 Arch 與Kali 上麵測試正常__山东单独二胎什么时候放开。
測試建議_nba2k online 外挂: 不要在物理機測試_7k77k小游戏!不要在物理機測試_-洛阳bbs绿色营地!不要在物理機測試_|-永盛国际APP!
如果讀者使用 tmux 或者類似的工具_|易彩票投注是传销吗?,則可以垂直分割你的終端窗口__项目投资计划书范文, 一個窗口開一個 sudo dmesg -C && dmesg -w-莆田恒心电脑学校,用於查看日誌-_|铁路安全管理条例; 另一個窗口用來做其他操作|_|云顶怎么赚钱,比如構建|-该隐打卡修斯、加載內核模塊-|-历届北京市委书记。 不用tmux 也沒關係--注册彩金不限ip,開兩個終端_|掌字开头的体彩软件,各占半個屏幕_|-致命弯道5 豆瓣。
第一部分||-随心聊:基於修改 sys_call_table 的係統調用掛鉤
在係統調用掛鉤技術中|炫舞答题每日更新,最簡單|-_18151期七星彩开奖结果、最流行的方案是修改sys_call_table-109彩票安卓版, 成員類型為函數指針的一維數組_|银河彩票wwwa18cc。
asmlinkage const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = {
 /*
  * Smells like a compiler bug -- it doesn't work
  * when the & below is removed.
  */
 [0 ... __NR_syscall_max] = &sys_ni_syscall,
#include
};
要修改它_--198彩票官方网,首先得拿到它在內存裏的位置-至尊APP。 然後|-_亿人娱乐平台用户登录,由於sys_call_table所在的內存是有寫保護的_|众赢国际骗局揭秘, 所以我們需要先去掉寫保護-038彩票官方版6分的,再做修改-长虹手机客服电话。
1. 獲得 sys_call_table 的內存地址
在綜合考量了幾種可選的獲取方案之後-|-腾讯客服网站,筆者決定采用從內核起始地址開始暴力搜索內存空間的方案--_劳动最光荣是谁说的。 (但是這種方案有可能被欺騙 __|提手旁上下。)
其他可能的方案有__至尊彩平台下载安装,一-_掌上彩票吧,從/boot/System.map 中讀取__038彩票信誉好不好,感興趣的讀者可以查閱 Hooking the Linux System CallTable-||易盈彩票网上登录, 這篇文章便是使用這種方案來獲取sys_call_table的地址的__288彩票平台。
二-|-钱永真,從使用了sys_call_table的某些未導出函數的機器碼裏麵進行特征搜索-|北京466耳鼻喉专家, 感興趣的讀者可以查閱Kernel-LandRootkits_|军刺电视剧, 作者花了幾張 slides 闡述了如何從導出的函數中獲取使用了sys_call_table的未導出函數--|保定二手摩托车58, 進而搜索那個未導出函數的機器碼_-_金华职业技术学院信息工程学院, 得到sys_call_table的地址-|_名书;等等||小腻腻博客。
值得指出的是_||天津洗浴, 感興趣的讀者在測試這些本文未涉及的方案時--注册趣步安全吗,如果遇到了疑惑或者困難_-尊龙娱乐官网,也可以與筆者聯係_-_农牧场盗匪、交流_-_镇江京江晚报。
直接看代碼-_|赵明禄。
unsigned long **
get_sys_call_table(void)
{
  unsigned long **entry = (unsigned long **)PAGE_OFFSET;
  for (;(unsigned long)entry 1) {
    if (entry[__NR_close] == (unsigned long *)sys_close) {
        return entry;
      }
  }
  return NULL;
}
PAGE_OFFSET是內核內存空間的起始地址|_好看的丧尸片。 因為sys_close是導出函數(需要指出的是_--078彩票苹果, sys_open -_-234彩官网、 sys_read 等並不是導出的)|_|105彩票105彩票v10,我們可以直接得到他的地址|-冰恋小龙女;因為係統調用號 (也就是sys_call_table這個一維數組的索引) 在同一ABI (x86跟 x64 不是同一 ABI)上具有高度的後向兼容性-||11选5投注官网,更重要的是--10秒猜大小的彩票,我們可以直接使用這個索引(代碼中的 __NR_close )|-长春客运站订票电话!
從內核內存的起始地址開始_-|覃奀垚, 逐一嚐試每一個指針大小的內存_cfq币购物券怎么用:把它當成是sys_call_table的地址|_|观赏鱼之家网站zadull, 用某個係統調用的編號(也就是索引)訪問數組中的成員--2元中国福利彩票怎么买,如果訪問得到的值剛好是是這個係統調用號所對應的係統調用的地址_-|乡宁房屋出租,那麼我們就認為當前嚐試的這塊指針大小的內存就是我們要找的sys_call_table的地址_|-新品上市流程。
實驗效果如圖|-乒乓球桌价格 优个网。

2. 關閉寫保護
寫保護指的是寫入隻讀內存時出錯-赢彩彩票开奖apk。 這個特性可以通過CR0寄存器控製|__自由们7 42官方下载:開啟或者關閉_-|职工娱乐活动, 隻需要修改一個比特-_短号怎么查长号,也就是從 0 開始數的第 16個比特||阳光的爱情生活。
看代碼_|黑香米产地。我們可以使用read_cr0 /write_cr0 來讀取 /寫入 CR0 寄存器__7k7k7k,免去我們自己寫內聯彙編的麻煩_苏拉病毒。
函數原型|小米1锤子rom下载。
static inline unsigned long read_cr0(void);
static inline void write_cr0(unsigned long x);
關閉寫保護的源代碼-初二期中考试总结:將CR0 寄存器從 0開始數的第 16 個比特置為 0--智胜彩票网。
void
disable_write_protection(void)
{
  unsigned long cr0 = read_cr0();
  clear_bit(16, &cr0);
  write_cr0(cr0);
}
開啟寫保護的源代碼||苗族的服饰特点:將CR0 寄存器從 0開始數的第 16 個比特置為 1_|gmod是什么。
void
enable_write_protection(void)
{
  unsigned long cr0 = read_cr0();
  set_bit(16, &cr0);
  write_cr0(cr0);
}
在設置或者清除某個比特_|-给学生的毕业赠言,我們使用了set_bit與clear_bit|-_2019香港青蛙彩票。 它們是 Linux 內核提供給內核模塊使用的編程接口|||易旺彩票网犯不犯法,簡單易懂_-蘑菇街2013新款冬装,同時還免去了我們自己寫那種很難讀的位運算的痛苦_|永诚彩票。
函數原型--|至尊彩app是官方的吗。
static __always_inline void
set_bit(long nr, volatile unsigned long *addr);
static __always_inline void
clear_bit(long nr, volatile unsigned long *addr);
實驗結果截圖|_|西安舞厅。

3. 修改 sys_call_table
一維數組賦值-|平顶山市一中珍珠班,當之無愧最簡單的方案_|_5iwwe。當然|_|2019年四不像,我們需要先把真正的值保存好-_|北京哪有鸡,以備後麵之需__-镜花水月两样情。
disable_write_protection();
real_open = (void *)sys_call_table[__NR_open];
sys_call_table[__NR_open] = (unsigned long*)fake_open;

real_unlink = (void *)sys_call_table[__NR_unlink];
sys_call_table[__NR_unlink] = (unsigned long*)fake_unlink;
real_unlinkat = (void *)sys_call_table[__NR_unlinkat];
sys_call_table[__NR_unlinkat] = (unsigned long*)fake_unlinkat;
enable_write_protection();
4. 恢複
disable_write_protection();
sys_call_table[__NR_open] = (unsigned long*)real_open;
sys_call_table[__NR_unlink] = (unsigned long*)real_unlink;
sys_call_table[__NR_unlinkat] = (unsigned long*)real_unlinkat;
enable_write_protection();
第二部分__若禾:基於係統調用掛鉤的初級文件監視
監視文件的創建與刪除___veor moda。 我們掛鉤sys_open,sys_unlink,sys_unlinkat這三個函數-__小明的储蓄罐, 並且在我們的鉤子函數把操作到的文件名打印出來-_求身份证号码,然後把控製交給真正的係統調用處理|--新密五个人火了照片。
1. sys_open 的鉤子函數-|-72街返利网: fake_open
考慮到在係統運行時---洪荒重生录,對文件的讀寫操作從未中斷-|阿发祥,這裏隻打印了進行創建操作的文件名-243彩票,準確地說是_-长春市房地产报,sys_open 的 flags中包含 O_CREAT ___我们结婚了泰民停拍。
asmlinkage long
fake_open(const char __user *filename, int flags, umode_t mode)
{
  if ((flags & O_CREAT) && strcmp(filename, "/dev/null") != 0) {
    printk(KERN_ALERT "open: %s ", filename);
  }
  return real_open(filename, flags, mode);
}
注__-178国际娱乐12:這裏的strcmp也是內核提供的_-长治文明小博客。
2. sys_unlink 與 sys_unlinkat 的鉤子函數-__杨幂不雅视频种子下载: fake_unlink 與 fake_unlinkat
簡單處理||长春万达电影院影讯,直接打印路徑名_--长春艺术实验中学。
asmlinkage long
fake_unlink(const char __user *pathname)
{
  printk(KERN_ALERT "unlink: %s ", pathname);
  return real_unlink(pathname);
}
asmlinkage long
fake_unlinkat(int dfd, const char __user * pathname, int flag)
{
  printk(KERN_ALERT "unlinkat: %s ", pathname);
  return real_unlinkat(dfd, pathname, flag);
}
3. 測試我們的文件監視工具
初級的文件監視就到這了__优信彩票相同的软件,以後我們在做進一步的改進與完善|||上海闹市裸拍女下载。
效果見下圖||花萝卜网。

第三部分|_l乐蜂网:參考資料與延伸閱讀
1. 參考資料
Linux Cross Reference
The Linux KernelAPI
How the Linux kernel handles a systemcall
CR0
2. 延伸閱讀
Hooking the Linux System CallTable
Kernel-LandRootkits
 

延伸閱讀||众发娱乐平台合法吗?:

Tag標簽__台风妮妲登陆广东: 係統  
  • 專題推薦

  • 李華明iOS-Cocos2d遊戲開發專題
  • 本教程為 李華明 編著的iOS-Cocos2d遊戲開發係列教程_-|小型玉米深加工项目:教程涵蓋關於i...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統-369彩票注册、資料備份-|清东陵门票、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
重庆时时彩500万彩票旺旺彩票盛源彩票众赢彩票UC彩票

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!