1. 程式人生 > >如何在 Linux/Unix/Windows 中發現隱藏的程序和埠

如何在 Linux/Unix/Windows 中發現隱藏的程序和埠

unhide 是一個小巧的網路取證工具,能夠發現那些藉助 rootkit、LKM 及其它技術隱藏的程序和 TCP/UDP 埠。這個工具在 Linux、UNIX 類、MS-Windows 等作業系統下都可以工作。根據其 man 頁面的說明:

Unhide 通過下述三項技術來發現隱藏的程序。

  1. 程序相關的技術,包括將 /proc 目錄與 /bin/ps 命令的輸出進行比較。
  2. 系統相關的技術,包括將 /bin/ps 命令的輸出結果同從系統呼叫方面得到的資訊進行比較。
  3. 窮舉法相關的技術,包括對所有的程序 ID 進行暴力求解,該技術僅限於在基於 Linux2.6 核心的系統中使用。

這篇文章描述瞭如何安裝 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
and0notupgraded.Need toget46.6kB of archives.After thisoperation,136kB of additional disk space will be used.Get:1http://in.archive.ubuntu.com/ubuntu artful/universe amd64 unhide amd64 20130526-1 [46.6 kB]Fetched46.6kB in0s(49.0kB/s)Selecting previously unselected packageunhide.(Reading database...205367files anddirectories currently installed.)Preparing tounpack.../unhide_20130526-1_amd64.deb...Unpacking unhide(20130526-1)...Setting up unhide(20130526-1)...Processing triggers forman-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.x7.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 引數可以是以下測試列表中的一個或者多個標準測試:

  1. brute
  2. proc
  3. procall
  4. procfs
  5. quick
  6. reverse
  7. sys

或基本測試:

  1. checkbrute
  2. checkchdir
  3. checkgetaffinity
  4. checkgetparam
  5. checkgetpgid
  6. checkgetprio
  7. checkRRgetinterval
  8. checkgetsched
  9. checkgetsid
  10. checkkill
  11. checknoprocps
  12. checkopendir
  13. checkproc
  14. checkquick
  15. checkreaddir
  16. checkreverse
  17. checksysinfo
  18. checksysinfo2
  19. 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 -tulpnss 命令確實沒有反映出這三個隱藏的埠:

1234 # netstat -tulpn | grep 1048# ss -lp# ss -l | grep 1048

通過下述的 man 命令可以更多地瞭解 unhide

123 $man unhide$man unhide-tcp

Windows 使用者如何安裝使用 unhide

你可以通過這個頁面獲取 Windows 版本的 unhide。