国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

Linux操作系統下隱藏文件的新方法

發布時間:  2012/8/11 9:13:21
 一. 概述

目前通用的隱藏文件方法還是hooksys_getdents64系統調用, 大致流程就是先調用原始的sys_getdents64系統調用,然后在在buf中做過濾。修改sys_call_table是比較原始的rk技術了,碰到好點的管理員, 基本上gdb一下vmlinux就能檢測出來。 如何想做到更加隱蔽的話,就要尋找新的技術。 inline hook也是目前比較流行的做法,不容易檢測。本文通過講解一種利用inline hook內核中某函數, 來達到隱藏文件的方法。

二. 剖析sys_getdnts64系統調用

想隱藏文件, 還是要從sys_dents64系統調用下手。 去看下它在內核中是如何實現的。

代碼在linux-2.6.26/fs/readdir.c中:


asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64
__user * dirent, unsigned int count)
    {
    struct file * file;
    struct linux_dirent64 __user * lastdirent;
    struct getdents_callback64 buf;
    int error;

    error = -EFAULT;
    if (!access_ok(VERIFY_WRITE, dirent, count))
    goto out;

    error = -EBADF;
    file = fget(fd);
    if (!file)
    goto out;

    buf.current_dir = dirent;
    buf.previous = NULL;
    buf.count = count;
    buf.error = 0;

    error = vfs_readdir(file, filldir64, &buf);
    if (error < 0)
    goto out_putf;
    error = buf.error;
    lastdirent = buf.previous;
    if (lastdirent) {
    typeof(lastdirent->d_off) d_off = file->f_pos;
    error = -EFAULT;
    if (__put_user(d_off, &lastdirent->d_off))
    goto out_putf;
    error = count - buf.count;
    }

    out_putf:
    fput(file);
    out:
    return error;
    }


 

首先調用access_ok來驗證是下用戶空間的dirent地址是否越界,是否可寫。 接著根據fd,利用fget找到對應的file結構。 接著出現了一個填充buf數據結構的操作,先不管它是干什么的,接著往下看。

vfs_readdir(file, filldir64, &buf);

函數最終還是調用vfs層的vfs_readdir來獲取文件列表的。 到這,我們可以是否通過hookvfs_readdir來達到隱藏文件的效果呢。 繼續跟蹤vfs_readdir看看這個想法是否可行。

 

源代碼在同一文件中:


int vfs_readdir(struct file *file, filldir_t filler, void *buf)
    {
    struct inode *inode = file->f_path.dentry->d_inode;
    int res = -ENOTDIR;
    if (!file->f_op || !file->f_op->readdir)
    goto out;

    res = security_file_permission(file, MAY_READ);
    if (res)
    goto out;

    res = mutex_lock_killable(&inode->i_mutex);
    if (res)
    goto out;

    res = -ENOENT;
    if (!IS_DEADDIR(inode)) {
    res = file->f_op->readdir(file, buf, filler);
    file_accessed(file);
    }
    mutex_unlock(&inode->i_mutex);
    out:
    return res;
    }
EXPORT_SYMBOL(vfs_readdir);


 

它有3個參數,第一個是通過fget得到的file結構指針, 第2個通過結合上下文可得知,這是一個回調函數用來填充第3個參數開始的用戶空間的指針。 接著看看它具體是怎么實現的。

通過security_file_permission()驗證后, 在用mutex_lock_killable()對inode結構加了鎖。然后調用ile->f_op->readdir(file, buf, filler);通過進一步的底層函數來對buf進行填充。這個buf就是用戶空間strcut dirent64結構的開始地址。

所以到這里我們可以斷定通過hook vfs_readdir函數對buf做過濾還是可以完成隱藏文件的功能。而且vfs_readdir的地址是導出的, 這樣就不用復雜的方法找它的地址了。

但是還有沒有更進一步的方法呢? 前面不是提到過有個filldir64函數嗎, 它用來填充buf結構的。也許通過hook它來做更隱蔽的隱藏文件方法。 繼續跟蹤filldir64,看看它是怎么實現的。


static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,
    u64 ino, unsigned int d_type)
    {
    struct linux_dirent64 __user *dirent;
    struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf;
    int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, sizeof(u64));

    buf->error = -EINVAL;
    if (reclen > buf->count)
    return -EINVAL;
    dirent = buf->previous;
    if (dirent) {
    if (__put_user(offset, &dirent->d_off))
    goto efault;
    }
    dirent = buf->current_dir;
    if (__put_user(ino, &dirent->d_ino))
    goto efault;
    if (__put_user(0, &dirent->d_off))
    goto efault;
    if (__put_user(reclen, &dirent->d_reclen))
    goto efault;
    if (__put_user(d_type, &dirent->d_type))
    goto efault;
    if (copy_to_user(dirent->d_name, name, namlen))
    goto efault;
    if (__put_user(0, dirent->d_name + namlen))
    goto efault;
    buf->previous = dirent;
    dirent = (void __user *)dirent + reclen;
    buf->current_dir = dirent;
    buf->count -= reclen;
    return 0;
    efault:
    buf->error = -EFAULT;
    return -EFAULT;
    }


 

先把參數buf轉換成struct getdents_callback64的結構指針。


struct getdents_callback64 {
    struct linux_dirent64 __user * current_dir;
    struct linux_dirent64 __user * previous;
    int count;
    int error;
    };

 

current_dir始終指向當前的struct dirent64結構,filldir64每次只填充一個dirent64結構。

它是被file->f_op->readdir循環調用的。 通過代碼可以看出是把dirent64結構的相關項拷貝到用戶空間的dirent64結構中, 然后更新相應的指針。

所以通過分析filldir64代碼, 可以判定通過判斷參數name,看它是否是我們想隱藏的文件,是的話,return 0就好了。

三. 擴展

通過分析sys_getdents64代碼的實現,我們可以了解到通過hook內核函數的方法,來完成rootkit的功能是很簡單和方便的。 關鍵你能了解它的實現邏輯。 對linux平臺來說,閱讀內核源代碼是開發rootkit的根本。 如何hook? 最簡單的就是修改函數的前幾個字節,jmp到我們的新函數中去, 在新函數完成類似函數的功能。 根本不必在跳回原函數了, 有了內核源代碼在手,原函數怎么實現,我們就怎么copy過去給它在實現一次。 所在linux實現rk也有很方便的一點,就是它的內核源代碼是公開的, 好好閱讀源代碼吧, 你會有更多的收獲。


本文出自:億恩科技【www.czbl888.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    国产精品久久久久久久久久久新郎_91久久精品国产_国内精品久久久久久_欧美激情第一页在线观看_国产欧美日韩丝袜精品一区_日韩精品成人一区二区在线观看_国产精品v片在线观看不卡_91精品国产综合久久香蕉最新版 _国产精品亚洲激情_色综合男人天堂
    国产九九热视频| 男人搞女人网站| 国产一级特黄a大片免费| 97碰在线视频| 国产精品一二三在线观看| 亚洲天堂av一区二区| 九九热在线免费| 久久久久久三级| 男女视频一区二区三区| 白嫩少妇丰满一区二区| 国产超级av在线| 99色精品视频| 久久久久久久久久福利| 男人操女人免费| 亚洲一二三区av| www.xxx亚洲| 国产三级日本三级在线播放| 密臀av一区二区三区| 五月婷婷丁香综合网| 天天色综合社区| 色婷婷.com| 午夜av中文字幕| 熟妇熟女乱妇乱女网站| 中国黄色录像片| 97碰在线视频| 欧美色图另类小说| 不要播放器的av网站| 日韩av手机版| 三级黄色片播放| 黄色特一级视频| 国产精品333| 五月婷婷狠狠操| 又色又爽又黄视频| 欧美精品久久96人妻无码| 精品无码av无码免费专区| 国产高清av在线播放| 亚洲成熟丰满熟妇高潮xxxxx| 任你操这里只有精品| 亚洲小视频网站| 可以免费看的黄色网址| 日本a视频在线观看| 成年人网站大全| 伊人色在线视频| 欧美日韩激情四射| 波多野结衣家庭教师在线| 污污视频网站免费观看| 三级黄色片免费看| 亚洲熟妇无码一区二区三区导航| 欧美 国产 日本| 精品久久久99| 国产成人在线小视频| 116极品美女午夜一级| 中文字幕中文在线| av免费看网址| 亚洲18在线看污www麻豆| 国产成人艳妇aa视频在线| 国产一区亚洲二区三区| 色姑娘综合天天| av免费观看网| 亚洲第一天堂久久| 国产女大学生av| 一级片免费在线观看视频| 日韩免费一级视频| 青青草原播放器| 久久国产乱子伦免费精品| 亚洲成人动漫在线| 欧美日韩在线成人| 日韩极品视频在线观看| 亚洲综合欧美在线| 成年人午夜视频在线观看| 色综合手机在线| 日本a在线免费观看| 国产精品视频黄色| 日本xxxxxxxxxx75| 手机在线国产视频| 黄色免费观看视频网站| 成人短视频在线看| www.色偷偷.com| 性欧美大战久久久久久久| 久久精品一卡二卡| 欧美国产日韩在线播放| 和岳每晚弄的高潮嗷嗷叫视频| 国产精品自在自线| 成人一区二区三| 男女啪啪免费视频网站| 欧美精品一区二区性色a+v| 日本久久精品一区二区| 日日碰狠狠添天天爽超碰97| 性生活免费观看视频| 在线能看的av网站| 精品久久久久久久无码| 一女被多男玩喷潮视频| 69精品丰满人妻无码视频a片| 爱豆国产剧免费观看大全剧苏畅 | av免费观看大全| 91欧美一区二区三区| 热久久精品国产| 黄色免费视频大全| 成人av在线不卡| 特级黄色录像片| 午夜视频在线网站| 乌克兰美女av| 国产精品国产亚洲精品看不卡| 欧美v在线观看| 欧美人成在线观看| 欧美做受777cos| 大地资源第二页在线观看高清版| 蜜臀视频一区二区三区| 国内外成人激情视频| 欧美丰满熟妇bbbbbb百度| 欧美视频免费看欧美视频| 欧美高清中文字幕| 免费高清一区二区三区| av一区二区三区免费观看| 国产免费xxx| 国产午夜精品视频一区二区三区| 最新黄色av网站| 中国一级黄色录像| 日本一本草久p| 九九久久九九久久| 国产精品无码免费专区午夜| 91网站在线观看免费| 91.com在线| 久久亚洲中文字幕无码| 欧美,日韩,国产在线| 男人天堂1024| 能在线观看的av网站| 天天爱天天操天天干| 色多多视频在线播放| 永久免费的av网站| 黄色a级三级三级三级| 久久国产精品免费观看| 激情五月婷婷六月| 免费在线观看亚洲视频| 久久精品视频91| 中文av一区二区三区| 久久久九九九热| 欧美一级中文字幕| 欧美亚洲日本一区二区三区| 18岁网站在线观看| 男女污污的视频| 超碰成人在线免费观看| 又大又硬又爽免费视频| 妺妺窝人体色www在线小说| 看欧美ab黄色大片视频免费 | 色中文字幕在线观看| 国内精品国产三级国产99| 国产乱子伦精品无码专区| 丁香花在线影院观看在线播放| 欧美色图色综合| 美女在线视频一区二区 | 成人免费毛片在线观看| 久久久久久香蕉| 亚洲一区二区三区四区精品| 黄色一级片黄色| 熟女少妇精品一区二区| 五月六月丁香婷婷| 国产真人做爰毛片视频直播| 韩国日本美国免费毛片| 免费成人进口网站| 欧美极品欧美精品欧美| 黄大色黄女片18第一次| 丁香色欲久久久久久综合网| aa免费在线观看| 国产精品美女在线播放| 日本毛片在线免费观看| 肉色超薄丝袜脚交| 国产中文字幕视频在线观看| 天天干天天av| www插插插无码视频网站| 亚洲欧美自拍另类日韩| 日韩一级性生活片| 日本黄色福利视频| 91视频 -- 69xx| 波多野结衣三级在线| 免费在线观看毛片网站| 亚洲天堂第一区| 亚洲36d大奶网| 国产午夜福利100集发布| www.偷拍.com| 久久人妻精品白浆国产| 99久久99久久精品| 无需播放器的av| 免费观看国产精品视频| 亚洲成人手机在线观看| 久久精品视频91| 日韩av在线播放不卡| 天堂av手机在线| 少妇高清精品毛片在线视频| www.黄色网址.com| 亚洲天堂国产视频| 日本黄网站免费| 亚洲国产精品成人天堂| 一级黄色片播放| 亚洲精品视频三区| 噼里啪啦国语在线观看免费版高清版| 日韩日韩日韩日韩日韩| 8x8x华人在线| 三级黄色片免费看| 久热在线视频观看|