Giter Club home page Giter Club logo

hide_proc's Introduction

使用热补丁技术(livepatch)实现进程的隐藏。 测试环境是ubuntu 20.04 kernel v5.4。
本研究项目,仅用于研究和演示目的,禁止用于非法目的。 使用前,请认真阅读相关法律,如《中华人民共和国网络安全法》等相关法律,由使用不当引起的后果与本作者无关。

要求:
   1. 隐藏多个进程
   2. 根据程序的全路经或者进程的comm隐藏
   3. bypass 通用检测工具
   4. bypass 通用取证


隐藏的内容:
  进程的隐藏:
   1. /proc 目录下不显示隐藏进程pid目录及子目录 (已实现)
   2. 进程的fork/execv等信息不通过 cn_proc 发送 (已实现)
   3. 进程的fork/execv等信息不通过 audit 发送 (已实现)
   4. 不能使用trace相关工具查看到该进程的相关信息(实现, puzzle kprobe)
   5. kernel 版本大于5.0.1, 不能使用fanotify查看到相关信息
   6. Check syscalls about other proccess.
    
  内核模块的隐藏:
   1. /proc/module 文件中不显示该内核模块 (已实现)
   2. /proc/kallsyms 中不显示该内核模块中的符号 (已实现)
   3. /sys/module 目录下不显示该内核模块  (已实现)
   4. /sys/kernel/livepatch/ 目录下不显示该内核模块 (已实现)
   5. 不能通过 /sys/kernel/tracing/enabled_functions 查看到相关信息 (已实现)
   6. /proc/sys/kernel/tainted 文件不能显示该内核模块相关信息 (已实现)
   7. 内核的日志信息中 不显示该内核模块信息 (已实现)
  

使用SM4算法增加加密壳,增加只执行一次的功能, 增加反分析功能:
   1. 实现一个load壳,直接调用init_module系统调用加载ko模块, 不使用命令insmod或者modprobe。
   2. 使用SM4对ko模块进行加密处理。
   3. load的main函数执行前进行简单的反动态分析。 
     (1)禁止产生core文件。
     (2)判断自己是否是被跟踪状态,如果是,则杀掉父进程,直接(安全)删除
      (3) 判断父进程是否是bash/sudo/pid==1,否则杀掉父进程,直接(安全)删除。
     (4)然后使用ptrace PTRACE_TRACEME, 反运行中调式。
   4. 程序执行完成, 删除自己。
  
   
对抗使用内核模块检测该模块(可选):
   禁止加载ko: 可设置modules_disabled为1, 通过参数force_modules_disabled=1设置 
   禁止关机/重启/kdump: 通过参数force_reboot_disabled=1设置 


icmp隐通道使用例子:
   icmp echo: ping命令携带不同的参数可以触发不同的行为。
             1. ping -s [7|18|29|40|51] 或者 ping -p 2A  触发机器重启
             2. ping -s [2|17|32|47] 或者 ping -p 24  触发机器关机
             3. ping -s [6|30|54] 或者 ping -p 01 创建文件 /tmp/xxx 
             4. ping -s [3|28|53] 或者 ping -p 02 删除文件 /tmp/xxx 


使用示例:
sudo ./load key  ['hidden_base_exe=0 hidden_proc_name="hidden_comm","hidden_comm1" ']


TODO:
    1. 双层加壳,增加静态分析难度。
    

hide_proc's People

Contributors

z789 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.