Metasploit
一、Metasploit简介
Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具因此安全工作人员常用Metasploit工具来检测系统的安全性。
Metasploit Framework(MSF)在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发、测试和使用恶意代码这个环境为渗透测试、shellcode编写和漏洞研究提供了一个可靠平台。
Metasploit核心中绝大部分由Ruby实现,一小部分由汇编和C语言实现。
二、Metasploit文件结构
路径:/usr/share/metasploit-framework/
-
config:MSF环境配置信息,数据库配置信息
-
data:后渗透模块的一些工具及payload第三方小工具集合,用户字典等数据信息
-
documentation:用户说明文档及开发文档
external:MSF的一些基础扩展模块 -
lib:基础类和第三方模块类
-
modules:MSF系统工具模块
-
plugins:第三方插件接口
-
scripts:MSF的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行
-
tools:额外的小工具和第三方脚本工具
-
msfconsole:MSF基本命令行,集成了名种功能
-
msfd:MSF服务,非持久性服务
-
msfdb:MSF数据库
-
msfupdate:MSF更新模块,可以用来更新MSF模块
-
msfrpc:MSF的服务端,非持久性的rpc服务
-
msfrpcd:持久性的MSF本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。
三、Metasploit模块
1.exploits(渗透攻击/漏洞利用模块)
渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
渗透攻击模块是Metasploit框架中最核心的功能组件。
1.1 流程
- 扫描目标机系统,寻找可用漏洞
- 选择并配置一个渗透攻击(漏洞利用)模块(exploits)
- 选择并配置一个攻击载荷模块(payloads)
- 选择一种编码技术(encoders),用来绕过杀毒软件的查杀
- 执行渗透攻击
- 后渗透阶段的操作
2.payloads(攻击载荷模块)
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。
攻击载荷模块从最简单的添加用户账号、提供命令行Shell,到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。
3.auxiliary(辅助模块)
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、探指纹识别等相关功能以辅助渗透测试。
3.1 与exploits模块的区别:
exploits模块一般需要和payloads模块联合使用,通过exploits模块渗透成功后执行payloads模块中的代码。
auxiliary模块不需要和payloads模块联合使用。
4.nops(空指令模块)
空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86CPU体系架构平台上的操作码是0x90。
在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。
Metasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
5.encoders(编码器模块)
编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。
6.post(后渗透攻击模块)
后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板攻击等。
7.evasion(规避模块)
规避模块主要用于规避Windows Defender防火墙、Windows应用程序控制策略(applocker)等的检查。
8.meterpreter
四、常用命令
1.Terminal终端下的常用命令
msfdb init //msf数据库初始化msfdb delete //删除msf数据库并停止使用msfdb start //启动msf数据库msfdb stop //停止msf数据库apt install metasploit framework //msf更新msfvenom //多平台攻击载荷生成器msf-nasm_shell //将汇编指令转换成为对应的16进制机器码msfconsole //打开msf终端
2.msf终端下的常用命令
db_status //查看msf数据库连接状态db_nmap //调用nmap扫描,并将扫描结果存入数据库search //搜索含有关键字的模块use //选择使用一个模块show payload //显示该模块支持的payloadshow options //显示该模块需要设置的参数info //查看详细信息set //使用模块后,设置模块所需要的参数的值(对应使用unset取消设置的值)back //返回上级状态exploit/run //两个命令都表示运行攻击模块sessions//查看当前连接的会话
3.meterpreter常用命令
pwd //打印当前工作目录sysinfo //查看系统信息getuid //获取当前权限的用户idps //查看当前目标机上运行的进程列表和pidgetsystem //获取system权限screenshot //截取目标主机当前屏幕hashdump //获取用户名与hash口令shellshell //获取目标主机upload //上传一个文件download //下载一个文件execute //执行目标系统中的文件(-f指定文件,-i执行可交互模式,-H隐
藏窗口)clearev //清除日志background //将meterpreter放入后台(使用sessions-i重新连接到会话
五、其他
关于reverse_tcp与bind_tcp
采用reverse的方法一般较为安全,因为是目标机主动连接攻击机,所以一般不会被防火墙发现。
而采用bind的方法,攻击机主动连接目标机(即需要在目标机上打开端口)时很容易被安全软件和防火墙发现。

浙公网安备 33010602011771号