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
$
本站总访问量 次