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

發表於2018-01-30

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

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

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

絕大多數的 Rootkit 工具或者惡意軟體藉助核心來實現程式隱藏,這些程式只在核心內部可見。你可以使用 unhide 或者諸如 rkhunter 等工具,掃描 rootkit 程式 、後門程式以及一些可能存在的本地漏洞

這篇文章描述瞭如何安裝 unhide 並搜尋隱藏的程式和 TCP/UDP 埠。

如何安裝 unhide

首先建議你在只讀介質上執行這個工具。如果使用的是 Ubuntu 或者 Debian 發行版,輸入下述的 apt-get/apt 命令以安裝 Unhide:

一切順利的話你的命令列會輸出以下內容:

如何在 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 倉庫):

在 Fedora 上則使用以下 dnf 命令:

如何在 Arch 上安裝 unhide

鍵入以下 pacman 命令安裝:

如何在 FreeBSD 上安裝 unhide

可以通過以下的命令使用 port 來安裝 unhide:

或者可以通過二進位制檔案安裝 hide,使用 pkg 命令安裝:

如何使用 unhide 工具?

unhide 的語法是:

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

示例輸出:

如何使用 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 選項。

示例輸出:

上述操作中,沒有發現隱藏的埠。

但在下述示例中,我展示了一些有趣的事。

示例輸出:

可以看到 netstat -tulpnss 命令確實沒有反映出這三個隱藏的埠:

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

Windows 使用者如何安裝使用 unhide

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

 

相關文章