如何在 Linux/Unix/Windows 中發現隱藏的程序和埠
unhide
是一個小巧的網路取證工具,能夠發現那些藉助 rootkit、LKM 及其它技術隱藏的程序和 TCP/UDP 埠。這個工具在 Linux、UNIX 類、MS-Windows 等作業系統下都可以工作。根據其 man 頁面的說明:
Unhide 通過下述三項技術來發現隱藏的程序。
這篇文章描述瞭如何安裝 unhide 並搜尋隱藏的程序和 TCP/UDP 埠。
如何安裝 unhide
首先建議你在只讀介質上執行這個工具。如果使用的是 Ubuntu 或者 Debian 發行版,輸入下述的 apt-get/apt 命令以安裝 Unhide:
12 | $sudo apt-get install unhide |
一切順利的話你的命令列會輸出以下內容:
1234567891011121314151617181920 | [sudo]password forvivek:Reading packagelists...DoneBuilding dependency tree Reading state information...DoneSuggested packages:rkhunterThe following NEWpackages will be installed:unhide0upgraded,1newly installed,0toremove |
如何在 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 倉庫):
12 | $sudo yum install unhide |
在 Fedora 上則使用以下 dnf 命令:
12 | $sudo dnf install unhide |
如何在 Arch 上安裝 unhide
鍵入以下 pacman 命令安裝:
12 | $sudo pacman-Sunhide |
如何在 FreeBSD 上安裝 unhide
可以通過以下的命令使用 port 來安裝 unhide:
123 | # cd /usr/ports/security/unhide/# make install clean |
或者可以通過二進位制檔案安裝 hide,使用 pkg 命令安裝:
12 | # pkg install unhide |
如何使用 unhide 工具?
unhide 的語法是:
12 | unhide[options]test_list |
test_list
引數可以是以下測試列表中的一個或者多個標準測試:
- brute
- proc
- procall
- procfs
- quick
- reverse
- sys
或基本測試:
- checkbrute
- checkchdir
- checkgetaffinity
- checkgetparam
- checkgetpgid
- checkgetprio
- checkRRgetinterval
- checkgetsched
- checkgetsid
- checkkill
- checknoprocps
- checkopendir
- checkproc
- checkquick
- checkreaddir
- checkreverse
- checksysinfo
- checksysinfo2
- checksysinfo3
你可以通過以下示例命令使用 unhide
:
1234 | # unhide proc# unhide sys# unhide quick |
示例輸出:
12345678910 | Unhide20130526Copyright©2013Yago Jesus&Patrick GouinLicense GPLv3+:GNU GPL version3orlaterhttp://www.unhide-forensics.infoNOTE:Thisversion of unhide isforsystems using Linux>=2.6Used options:[*]Searching forHidden processes through comparison of results of system calls,proc,dir andps |
如何使用 unhide-tcp 工具辨明 TCP/UDP 埠的身份
以下是來自 man 頁面的介紹:
unhide-tcp
取證工具通過對所有可用的 TCP/IP 埠進行暴力求解的方式,辨別所有正在監聽,卻沒有列入 /bin/netstat 或者 /bin/ss 命令輸出的 TCP/IP 埠身份。注一:對於 FreeBSD、OpenBSD系統,一般使用 netstat 命令取代在這些作業系統上不存在的 iproute2,此外,sockstat 命令也用於替代 fuser。
注二:如果作業系統不支援 iproute2 命令,在使用
unhide
時需要在命令上加上-n
或者-s
選項。
12 | # unhide-tcp |
示例輸出:
1234567 | Unhide20100201http://www.security-projects.com/?UnhideStarting TCP checkingStarting UDP checking |
上述操作中,沒有發現隱藏的埠。
但在下述示例中,我展示了一些有趣的事。
12 | # unhide-tcp |
示例輸出:
1234567891011 | Unhide20100201http://www.security-projects.com/?UnhideStarting TCP checkingFound Hidden port that notappears innetstat:1048Found Hidden port that notappears innetstat:1049Found Hidden port that notappears innetstat:1050Starting UDP checking |
可以看到 netstat -tulpn
和 ss
命令確實沒有反映出這三個隱藏的埠:
1234 | # netstat -tulpn | grep 1048# ss -lp# ss -l | grep 1048 |
通過下述的 man 命令可以更多地瞭解 unhide
:
123 | $man unhide$man unhide-tcp |
Windows 使用者如何安裝使用 unhide
你可以通過這個頁面獲取 Windows 版本的 unhide。