跳转至

unhide

unhide 是一个小巧的网络取证工具,能够发现那些借助rootkit,LKM及其它技术隐藏的进程和TCP / UDP端口。这个工具在Linux,UNIX类,MS-Windows等操作系统下都可以工作。

https://www.unhide-forensics.info/

https://github.com/YJesus/Unhide

工作原理:

  • 比较 /proc 和 /bin/ps 输出:
  • 比较使用 /bin/ps 获取的信息和通过遍历 procfs 获取的信息(仅针对 unhide-linux 版本):
  • 比较使用 /bin/ps 获取的信息和使用系统调用进行扫描获取的信息:
  • 完整的进程ID空间占用(PIDs暴力破解,仅适用于 unhide-linux 版本):
    • 进程ID(PID)是用于唯一标识不同进程的数字。在 Linux 中,PID 号码是有限的,因此可能存在被隐藏的进程
    • 逐一访问 /proc/pid/ 目录,其中,pid从1到到max_pid累加
    • 如果目录不存在、unhide自己、ps中能看到,则跳过;剩下的则判定为隐藏进程
  • 比较 /bin/ps 的输出与 /proc、procfs 遍历和系统调用的信息(仅适用于 unhide-linux 版本):
  • 快速比较 /proc、procfs 遍历和系统调用与 /bin/ps 的输出(仅适用于 unhide-linux 版本):
    • 这个测试相较于测试1+2+3更快,但可能会产生更多的误报。

安装

yum安装

yum install unhide
离线环境

源码编译各种报错,可以下载对应的rpm包解压使用unhide-20130526-1.el7.x86_64.rpm

$ wget https://rpmfind.net/linux/epel/7/x86_64/Packages/u/unhide-20130526-1.el7.x86_64.rpm
$ rpm2cpio unhide-20130526-1.el7.x86_64.rpm | cpio -div
$ ls usr/sbin/
unhide  unhide_rb  unhide-tcp

使用

# 运行时间较长
$ ./unhide quick >> hiden_proc.log
# 查看结果可以看到有异常的隐藏进程204336
$ cat  hiden_proc.log
Unhide 20130526
Copyright © 2013 Yago Jesus & Patrick Gouin
License GPLv3+ : GNU GPL version 3 or later
http://www.unhide-forensics.info

NOTE : This version of unhide is for systems using Linux >= 2.6 

Used options: 
[*]Searching for Hidden processes through  comparison of results of system calls, proc, dir and ps

Found HIDDEN PID: 1
        Cmdline: "<none>"
        Executable: "<no link>"
        "<none>  ... maybe a transitory process"

Found HIDDEN PID: 204327
        Cmdline: "<none>"
        Executable: "<no link>"
        "<none>  ... maybe a transitory process"

Found HIDDEN PID: 204336
        Cmdline: "y8h3fj490cl3"
        Executable: "/tmp/y8h3fj490cl3 (deleted)"
        Command: "y8h3fj490cl3"
        $USER=root
        $PWD=/tmp

# 可以看到204336这个进程存在但ls /proc/无法查看
$ ls /proc/204336/exe
lrwxrwxrwx 1 root root 0 Aug 28 22:20 /proc/204336/exe -> /tmp/y8h3fj490cl3 (deleted)
$ ll -d /proc/[1-9]*/|grep 204336
$ 
本文阅读量  次
本站总访问量  次