unhide是一個(gè)小巧的網(wǎng)絡(luò)取證工具,能夠發(fā)現(xiàn)那些借助 rootkit、LKM 及其它技術(shù)隱藏的進(jìn)程和 TCP/UDP 端口。這個(gè)工具在 Linux、UNIX 類、MS-Windows 等操作系統(tǒng)下都可以工作。根據(jù)其 man 頁面的說明:
Unhide 通過下述三項(xiàng)技術(shù)來發(fā)現(xiàn)隱藏的進(jìn)程。
1、進(jìn)程相關(guān)的技術(shù),包括將 /proc 目錄與 /bin/ps 命令的輸出進(jìn)行比較。
2、系統(tǒng)相關(guān)的技術(shù),包括將 /bin/ps 命令的輸出結(jié)果同從系統(tǒng)調(diào)用方面得到的信息進(jìn)行比較。
3、窮舉法相關(guān)的技術(shù),包括對(duì)所有的進(jìn)程 ID 進(jìn)行暴力求解,該技術(shù)僅限于在基于 Linux2.6 內(nèi)核的系統(tǒng)中使用。
絕大多數(shù)的 Rootkit 工具或者惡意軟件借助內(nèi)核來實(shí)現(xiàn)進(jìn)程隱藏,這些進(jìn)程只在內(nèi)核內(nèi)部可見。你可以使用 unhide 或者諸如 rkhunter 等工具,掃描 rootkit 程序 、后門程序以及一些可能存在的本地漏洞。
如何在 Linux/Unix/Windows 中發(fā)現(xiàn)隱藏的進(jìn)程和端口
這篇文章描述了如何安裝 unhide 并搜索隱藏的進(jìn)程和 TCP/UDP 端口。
如何安裝 unhide
首先建議你在只讀介質(zhì)上運(yùn)行這個(gè)工具。如果使用的是 Ubuntu 或者 Debian 發(fā)行版,輸入下述的 apt-get/apt 命令以安裝 Unhide:
$ sudo apt-get install unhide
一切順利的話你的命令行會(huì)輸出以下內(nèi)容:
[sudo] password for vivek: Reading package lists...DoneBuilding dependency tree Reading state information... DoneSuggested packages: rkhunterThe following NEW packages will be installed: unhide0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 46.6 kB of archives.After this operation, 136 kB of additional disk space will be used.Get:1 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 unhide amd64 20130526-1 [46.6 kB]Fetched 46.6 kB in 0s (49.0 kB/s)Selecting previously unselected package unhide.(Reading database ... 205367 files and directories currently installed.)Preparing to unpack .../unhide_20130526-1_amd64.deb ...Unpacking unhide (20130526-1) ...Setting up unhide (20130526-1) ...Processing triggers for man-db (2.7.6.1-2) ...
如何在 RHEL/CentOS/Oracle/Scientific/Fedora 上安裝 unhide
輸入下列 yum Type the following yum command (first turn on EPLE repo on a CentOS/RHEL version 6.x or version 7.x):
輸入以下的 yum 命令(CentOS/RHEL 6.x 或 7.x 上首先打開 EPEL 倉庫):
$ sudo yum install unhide
在 Fedora 上則使用以下 dnf 命令:
$ sudo dnf install unhide
如何在 Arch 上安裝 unhide
鍵入以下 pacman 命令安裝:
$ sudo pacman -S unhide
如何在 FreeBSD 上安裝 unhide
可以通過以下的命令使用 port 來安裝 unhide:
# cd /usr/ports/security/unhide/# make install clean
或者可以通過二進(jìn)制文件安裝 hide,使用 pkg 命令安裝:
# pkg install unhide
如何使用 unhide 工具?
unhide 的語法是:
unhide [options] test_list
test_list 參數(shù)可以是以下測(cè)試列表中的一個(gè)或者多個(gè)標(biāo)準(zhǔn)測(cè)試:
brute
proc
procall
procfs
quick
reverse
sys
或基本測(cè)試:
checkbrute
checkchdir
checkgetaffinity
checkgetparam
checkgetpgid
checkgetprio
checkRRgetinterval
checkgetsched
checkgetsid
checkkill
checknoprocps
checkopendir
checkproc
checkquick
checkreaddir
checkreverse
checksysinfo
checksysinfo2
checksysinfo3
你可以通過以下示例命令使用 unhide:
# unhide proc# unhide sys# unhide quick
示例輸出:
Unhide 20130526Copyright © 2013 Yago Jesus & Patrick GouinLicense GPLv3+ : GNU GPL version 3 or laterhttp://www.unhide-forensics.infoNOTE : 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
如何使用 unhide-tcp 工具辨明 TCP/UDP 端口的身份
以下是來自 man 頁面的介紹:
unhide-tcp 取證工具通過對(duì)所有可用的 TCP/IP 端口進(jìn)行暴力求解的方式,辨別所有正在監(jiān)聽,卻沒有列入 /bin/netstat 或者 /bin/ss 命令輸出的 TCP/IP 端口身份。
注一:對(duì)于 FreeBSD、OpenBSD系統(tǒng),一般使用 netstat 命令取代在這些操作系統(tǒng)上不存在的 iproute2,此外,sockstat 命令也用于替代 fuser。
注二:如果操作系統(tǒng)不支持 iproute2 命令,在使用 unhide 時(shí)需要在命令上加上 -n或者 -s 選項(xiàng)。
# unhide-tcp
示例輸出:
Unhide 20100201http://www.security-projects.com/?UnhideStarting TCP checkingStarting UDP checking
上述操作中,沒有發(fā)現(xiàn)隱藏的端口。
但在下述示例中,我展示了一些有趣的事。
# unhide-tcp
示例輸出:
Unhide 20100201http://www.security-projects.com/?UnhideStarting TCP checkingFound Hidden port that not appears in netstat: 1048Found Hidden port that not appears in netstat: 1049Found Hidden port that not appears in netstat: 1050Starting UDP checking
可以看到 netstat -tulpn 和 ss 命令確實(shí)沒有反映出這三個(gè)隱藏的端口:
# netstat -tulpn | grep 1048# ss -lp# ss -l | grep 1048
通過下述的 man 命令可以更多地了解 unhide:
$ man unhide$ man unhide-tcp
Windows 用戶如何安裝使用 unhide
你可以通過這個(gè)頁面獲取 Windows 版本的 unhide。