如何在 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 内核的系统中使用。

绝大多数的 Rootkit 工具或者恶意软件借助内核来实现进程隐藏,这些进程只在内核内部可见。你可以使用 unhide 或者诸如 rkhunter 等工具,扫描 rootkit 程序 、后门程序以及一些可能存在的本地漏洞

这篇文章描述了如何安装 unhide 并搜索隐藏的进程和 TCP/UDP 端口。

如何安装 unhide

首先建议你在只读介质上运行这个工具。如果使用的是 Ubuntu 或者 Debian 发行版,输入下述的 apt-get/apt 命令以安装 Unhide:

1

2

$ sudo apt-get install unhide

一切顺利的话你的命令行会输出以下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

[sudo] password for vivek:

Reading package lists... Done

Building dependency tree

Reading state information... Done

Suggested packages:

rkhunter

The following NEW packages will be installed:

unhide

0 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 仓库):

1

2

$ sudo yum install unhide

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

1

2

$ sudo dnf install unhide

如何在 Arch 上安装 unhide

键入以下 pacman 命令安装:

1

2

$ sudo pacman -S unhide

如何在 FreeBSD 上安装 unhide

可以通过以下的命令使用 port 来安装 unhide:

1

2

3

# cd /usr/ports/security/unhide/

# make install clean

或者可以通过二进制文件安装 hide,使用 pkg 命令安装:

1

2

# pkg install unhide

如何使用 unhide 工具?

unhide 的语法是:

1

2

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

1

2

3

4

# unhide proc

# unhide sys

# unhide quick

示例输出:

1

2

3

4

5

6

7

8

9

10

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

如何使用 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 选项。

1

2

# unhide-tcp

示例输出:

1

2

3

4

5

6

7

Unhide 20100201

http://www.security-projects.com/?Unhide

Starting TCP checking

Starting UDP checking

上述操作中,没有发现隐藏的端口。

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

1

2

# unhide-tcp

示例输出:

1

2

3

4

5

6

7

8

9

10

11

Unhide 20100201

http://www.security-projects.com/?Unhide

Starting TCP checking

Found Hidden port that not appears in netstat: 1048

Found Hidden port that not appears in netstat: 1049

Found Hidden port that not appears in netstat: 1050

Starting UDP checking

可以看到 netstat -tulpn 和 ss 命令确实没有反映出这三个隐藏的端口:

1

2

3

4

# netstat -tulpn | grep 1048

# ss -lp

# ss -l | grep 1048

通过下述的 man 命令可以更多地了解 unhide

1

2

3

$ man unhide

$ man unhide-tcp

Windows 用户如何安装使用 unhide

你可以通过这个页面获取 Windows 版本的 unhide。

原文地址:https://www.cnblogs.com/bigben0123/p/8436158.html

时间: 2024-11-02 22:53:20

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口的相关文章

如何在 Linux/Unix/Mac 下清除 DNS 查询缓存

我在Linux下使用拨号连接上网,频繁的拨号断线造成DNS的问题.我如何在Linux/Unix发行版下使用shell命令清除DNS缓存? 在MS-Windows下,你可以使用ipconfig命令来清除dns缓存.然而,Linux和Unix提供了不同的方法来清除缓存.Linux可以运行 nscd 或者 BIND 或者 dnsmasq 作为名称服务缓存守护进程.大型或者工作组服务器可能使用BIND或者dnsmasq作为专用缓存服务器来加速查询. 如何: 清除 nscd dns 缓存 Nscd 会缓存

如何在Linux命令行中剪裁图像

涉及到在Linux中转换或编辑图像文件时,ImageMagick毫无疑问是最为熟知的一体化软件之一.它包含了一整套命令行工具,用以显示.转换,或复制超过200中类型的光栅或矢量图像文件,所有这一切都在命令行下完成.ImageMagick可以用于多样化的图像编辑工作,如转换文件格式,添加特殊效果,添加文本,以及改变图像(调整大小.旋转.翻转.剪裁). 如果你想要剪裁映像以去除空白,你可以使用ImageMagick自带的两个命令行工具.如果你还没有安装ImageMagick,请参照本指南来安装. 在

Linux与Windows中的UTC时间

Linux与Windows中的UTC时间 先介绍几个术语 UTC 协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps Universel Cordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时. GMT 格林威治标准时间(中国大陆翻译:格林尼治平均时间或格林尼治标准时间,台.港.澳翻译:格林威治标准时间:英语:Greenwich Mean Time,GMT)是指位

Linux启动kettle及linux和windows中kettle往hdfs中写数据(3)

在xmanager中的xshell运行进入图形化界面 1 sh spoon.sh 新建一个job 1.往hdfs中写数据 1)linux中kettle往hdfs中写数据 双击hadoop copy files 运行此job 查看数据: 1)windows中kettle往hdfs中写数据 Windows中往power服务器中hdfs写数据 日志: 2016/07/28 16:21:14 - Version checker - OK 2016/07/28 16:21:57 - 数据整合工具-作业设计

linux和windows中环境变量设置常用命令

Linux和Windows下查看环境变量方法 一.查看所有环境变量的名称和值: Linux下:export Windows下:set 二.根据名称查该环境变量的值: Linux下:echo $环境变量名 如:echo $ORACLE_HOME Windows下:set环境变量名 如:set $ORACLE_HOME 三.设置环境变量: Linux下:export环境变量名=值 如:$export ORACLE_HOME=/home/oracle/product/10.2.0 Windows下:s

如何在Linux命令行中创建以及展示演示稿

你在准备一场演讲的时候,脑海可能会先被图文并茂.形象华丽的演示图稿所占据.诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用.然而,并非所有的演讲都需要TED Talk的质量.更多时候,演讲稿只为传达特定的信息. 而这个,使用文本信息足以完成.在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图片搜索(Google Image)上寻找好看的图片. 在Linux的世界里,有几个不同的方式供你选择来做演讲.比如带有大量多媒体展示.视觉冲击效果极佳的Impress.js,专为L

Linux/UNIX脚本中 $0,$1,$2的含义

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2. STDIN就是标准输入,默认从键盘读取信息: STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西: STDERR是标准的错误信息,默认也会显示在终端上. 由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息, 就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR. $#: 命令行参数的个数 $0:script 的名字 $?: shell

善用Linux与Windows中的筛选功能及其他有用功能

cmd中的检索目录结构是用 tree命令,检索本目录中这一级别的所有文件是dir,要是文件很多时需要用到检索功能 dir | find "abc" #####主要find之后要加双引号 netstat -ano | find "1521" #####这里可以方便查找监听此端口号的网络连接啥的 在Linux中检索当前目录使用ll或者ls,检索进程使用ps,这里可以使用筛选功能grep 主要之后是不用双引号的 ps -ef | grep weblogic ###查找we

如何在Linux Mint Cinnamon中安装MATE桌面

Linux Mint有两个版本,Cinnamon版本更漂亮,消耗资源也高,Mate版本资源需求较低,如果你安装了Cinnamon版本,想切换到mate版本又不想重装系统的话,来看看这篇经验吧. 打开菜单-->系统管理-->软件管理器 在搜索框中输入 mint-meta-mate,出现如图所示搜索结果,双击进去点击安装,输入权限密码,等待安装完成. (这里如果是命令行,可以执行sudo apt-get update 和sudo apt-get install mint-meta-mate) 安装