external:扩展文件,比如zsh的命令行自动补全,里面有一个source文件夹
data:放一些exploits要用的二进制文件,字典,配置等等,一般是上传到目标主机上执行或者在本地的一些辅助文件,里面有一个meterpreter文件放的是留后门时用到的文件。
scripts:独立脚本,可以学习里面的套路,自动化脚本。
tools:开发辅助参考等等
plugins:和其他工具的联动接口,rpc等等
auxiliary:可以理解打点的时候用的辅助模块,端口扫描,指纹识别,漏洞验证,登录密码爆破等等
encoders:编码混淆
exploits:漏洞利用,先按照操作系统分类,里面再是各种应用协议分类
payloads:一共有三个不同的payload:Singles,Stagers和Stages。
post:后渗透模块
class.instance_variables.map{|v|v.to_s[1..-1]}
class.methods.map &:to_s
<https://rapid7.github.io/metasploit-framework/api/>
<https://www.rubydoc.info/github/rapid7/metasploit-framework>
pry调试
函数 | 描述 |
---|---|
print_line | 打印普通信息 |
print_good | 向终端输出绿色信息,成功,好消息 |
print_error,print_bad | 向终端输出红色信息,失败,坏消息 |
print_warning | 向终端输出黄色信息,警告 |
print_status | 向终端输出黄色信息,状态 |
print_blank_line | 打印空行 |
print_line("---")
print_good("successful")
print_error("error")
print_warning("warning")
print_status("status")
print_blank_line
meterpreter > sysinfo
Computer : WIN-A18RNMNL9C2
OS : Windows 2008 R2 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : zh_CN
Domain : KALI-TEAM
Logged On Users : 2
Meterpreter : x86/windows
函数 | 描述 |
---|---|
session.platform | 获取目标操作系统平台,返回windows或其他操作系统平台等等 |
session.type | 获取session的类型。返回meterpreter或其他session类型等等 |
session.tunnel_to_s | 隧道 |
session.arch | 获取目标平台架构,x86或者x64,常量(ARCH_X64,ARCH_X86) |
http://session.info/ | 获取主机名和用户名 |
session.run_cmd | 相当于在msf控制台敲命令 |
session.session_host | 获取目标连接通信IP地址 |
session.session_port | 获取目标连接通信端口 |
session.session_type | 类型 |
session.payload_uuid | payload的UUID,在调用API的时候要用到 |
session.exploit_uuid | exploit的UUID,在调用API的时候要用到 |
session.uuid | UUID,在调用API的时候要用到 |
session.lookup_error(5) | Windows的错误常量 |
session.exploit_datastore | exploit选项 |
print_good(session.platform.to_s)
print_good(session.type.to_s)
print_good(session.tunnel_to_s.to_s)
print_good(session.arch.to_s)
print_good(session.info.to_s)
print_good(session.session_host.to_s)
print_good(session.session_port.to_s)
print_good(session.session_type.to_s)
print_good(session.lookup_error(5).to_s)
print_good(session.exploit_datastore['payload'].to_s)
函数 | 描述 |
---|---|
interfaces | 获取网卡信息 |
each_interface | 枚举网卡 |
arp_table | arp表对象 |
get_routes | 获取路由信息 |
remove_route | 移除路由 |
netstat | netstat |
each_route | 枚举路由 |
add_route | 添加路由 |
routes | routes表 |
get_netstat | get_netstat |
get_proxy_config | 获取代理配置 |
get_arp_table | 获取ARP表 |
[#<Rex::Post::Meterpreter::Extensions::Stdapi::Net::Interface:0x0000562efff8bbd0 @index=10, @mac_addr="\\\\x00\\\\f)Rr\\\\xD0", @mac_name="Intel(R) PRO/1000 MT Network Connection", @mtu=1500, @flags=nil, @addrs=["fe80::4c6f:11ed:581f:c274", "192.168.76.132"], @netmasks=["ffff:ffff:ffff:ffff::", "255.255.255.0"], @scopes=["\\\\n\\\\x00\\\\x00\\\\x00"]>
[#<Rex::Post::Meterpreter::Extensions::Stdapi::Net::Arp:0x00007f3d38463030 @ip_addr="224.0.0.22", @mac_addr="00:00:00:00:00:00", @interface="1">
[#<Rex::Post::Meterpreter::Extensions::Stdapi::Net::Route:0x00007f3d385a0b28 @subnet="0.0.0.0", @netmask="0.0.0.0", @gateway="192.168.76.2", @interface="10", @metric=266>
[#<Rex::Post::Meterpreter::Extensions::Stdapi::Net::Netstat:0x0000562f00520168 @local_addr="::", @remote_addr="::", @local_port=54538, @remote_port=0, @protocol="udp6", @state="", @uid=0, @inode=0, @pid_name="1344/dns.exe", @local_addr_str=":::54538", @remote_addr_str=":::*">
print_good(session.net.config.interfaces[0].mac_name.to_s)
session.net.config.each_interface do |interface|
print_good(interface.addrs.to_s)
end
print_good(session.net.config.arp_table[0].ip_addr.to_s)
print_good(session.net.config.get_routes[0].gateway.to_s)
print_good(session.net.config.netstat[0].pid_name.to_s)
print_good(session.net.config.get_proxy_config.to_s)
session.net.config.add_route(subnet, netmask, gateway) # Add route
模块名称 | 描述 |
---|---|
session.core.use | 加载扩展插件 |
session.core.migrate | 迁移进程 |
session.core.load_library | 加载DLL |
session.core.machine_id | 机器ID |
session.core.get_loaded_extension_commands('stdapi') | 获取已加载扩展命令 |
session.core.secure | secure |
session.core.transport_sleep | 传输休眠 |
session.core.transport_add | 添加传输 |
session.core.transport_change | reverse_tcp, reverse_http, bind_tcp |
session.core.set_transport_timeouts | 设置传输超时 |
session.core.transport_remove | 移除传输 |
session.core.transport_next | 关闭当前传输,切换到下一个传输 |
session.core.transport_prev | 关闭当前传输,切换到上一个传输 |
session.core.transport_list | 列出传输 |
session.core.create_named_pipe_pivot | 创建命名管道 |
session.core.use("extapi")
lib/msf/core/post/windows/registry.rb
Msf::Post::Windows::Registry
根键 | |
---|---|
HKEY_CLASSES_ROOT | 用于存储一些文档类型,类,类的关联属性 |
HKEY_CURRENT_CONFIG | 用户存储有关本地计算机系统的当前硬件配置文件信息 |
HKEY_CURRENT_USER | 用于存储当前用户配置项 |
HKEY_PERFORMANCE_DATA | 用于存储当前用户对计算机的配置项 |
HKEY_LOCAL_MACHINE | 用于存储当前用户物理状态 |
HKEY_USERS | 用于存储新用户的默认配置项 |
HKEY_DYN_DATA | 一个特别的根键 |
模块名称 | 描述 |
---|---|
registry_hive_lookup | 通过缩写注册根键 |
registry_createkey | 创建键 |
registry_deletekey | 删除键 |
registry_enumkeys | 枚举键 |
print_good("#{registry_createkey(hkey+'X')}")
print_good("#{registry_deletekey(hkey+'X')}")
print_good(registry_enumkeys('HKEY_CURRENT_USER\\\\\\\\Software').to_s)
模块名称 | 描述 |
---|---|
registry_getvaldata | 获取值数据 |
registry_deleteval | 删除值 |