Meterpreter初探
Meterpreter
Meterpreter号称“黑客瑞士军刀”,Meterpreter是Metasploit框架中的一个杀手锏,通常作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后能够返回一个我们控制通道,例如利用远程过程带哦用RPC服务的一个漏洞,当漏洞被触发后,我们选择Meterpreter作为攻击载荷,就能够获得目标系统上的一个Meterpreter Shell连接。Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更加深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。
认识 Meterpreter
获得Meterpreter会话
攻陷目标操作系统系统后就可以进入Meterpreter会话
根据《首次系统渗透Win_xp》的内容成功进入xp系统,随即出现meterpreter命令交互界面
获得目标系统的Meterpreter会话后,可以利用基本的Meterpreter命令完成更多的骚操作。(help帮助信息不要完了使用哦)
截屏:screenshot
命令 screenshot 可以获取活动用户的当前屏幕界面的图片并保存在本地指定的目录
如上图,我们成功的获得了桌面图像信息,由此可以获得更多的重要信息。(由于是靶机,所以比较干净,如果是正常的工作机,我们就会看见用户的安全软件安装了哪些?桌面上的信息等等……)
平台信息:sysinfo
命令 sysyinfo,可以帮助我们获取操作系统平台的详细信息
如上图,是我们sysinfo命令获取的平台信息,包括如下信息:
- 完整的计算机名
- 操作系统的版本
- 系统架构体系
- 工作组名
……
获取键盘记录
我们可以使用 ps 命令来捕获目标主机正在运行的任务进程:
我们看见了目标主机系统的PID:1684的explorer.exe进程,该进程是控制系统的GUI的哦!
执行 migrate 命令将会话迁移至explorer.exe进程空间中,然后调用keylog_recorder模块(使用Ctrl+C终止),在另一个终端里可以看见键盘的记录
在实验的时候出了小小的意外,所以没有出现记录内容。
获取摄像头信息
meterpreter > webcam_list #查看查看摄像头信息
meterpreter > webcam_snap #获取摄像头摄制的图像
摄像头的图像信息被保存在 /root/IykcCaUp.jpeg
挖掘用户名和密码
提取密码哈希值
Windows系统存储哈希值的方式一般是LM、NTLM或者NTLMv2。
在明文密码输入后系统会将密码转为哈希值;由于哈希值的长度限制,将密码切分为7个字符一组的哈希值;
以password123456密码为例,哈希值会以 【{passwor}{d123456}】每个花括号是一组哈希值共两组,所以攻击者只要破解7个字符一组的密码,而不是原始的14个字符,而NTLM存储方式和密码长度无关,密码将作为整体哈希值存储。
获取密码和哈希值*
use priv 命令:意味着运行在特权账号上。
post/windows/gether/hashdump模块:获取系统所有的用户名和密码哈希值
获取安全账户的账号管理器SAM数据库,我们需要运行在System权限下(use priv),以求绕过注册表的限制,获得受保护的用户和密码的SAM存储。
- 哈希值解析:
- 以 aad3b435 开头的哈希值是一个空的或不存在的哈希值(空字串的占位符)。
- 传递哈希值:
用哈希值传递技术,用psexec模块就可以实现,
权限提升
meterpreter会话中我们可以通过 net user 命令创建Windows系统下的普通用户账号。
如果是以受限的用户账号渗透登录,将会被限制执行一些命令。
-
在Win端cmd执行以下命令:
C:\ > net user mirror 926498 /add
命令执行后,我们就在win端创建了一个 mirror 用户。
建立Meterpreter会话
- 创建一个Meterpreter攻击载荷的程序——payload.exe;复制到XP靶机中,在bob用户下执行。
- 本地创建程序接收目标靶机的会话
handler模块创建“监听”后,等待目标靶机的mterpreter会话
- Mterpreter会话连接
我们在靶机环境下启动msfvenom.exe程序,启动后,终端就会建立Merterpreter会话
我们执行攻击载荷的系统环境是一个普通用户,所以我们开始执行提权了!
提权第一步
- 查看当前用户的权限和名称:getuid
meterpreter > getuid #查看当前会话的对方的用户权限和名
ps:meterpreter控制台中,输入background可以跳转到MSF终端里,Meterpreter会话仍在运行,然后输入sessions -i [会话ID]返回Meterpreter控制台。
- 升级权限 System
输入 use priv 命令加载priv扩展,以便访问某些特权模块位置。
输入 getsystem 命令尝试将权限提升至本地系统权限或者管理员权限。
输出 getuid 命令检查当前获得的权限等级。
令牌伪造
我们将会获取目标系统的一个Kerberos令牌,将其用在身份认证的环节,假冒当初创建这个令牌的用户。
比方说:我们建立了一个Meterpreter的控制台会话后,管理员用户登录过这个机器,在该用户登入这台机器的时候,一个kerberos令牌将会发送到服务器上,并在随后的一段时间之内一直有效;可以依靠这个令牌完成入侵系统,通过Meterpreter假冒为管理员的角色,而不需要破解密码。
我们利用 ps 命令列举当前系统的应用程序
- 使用 steal_token 命令和PID参数盗取用户的令牌
成功的盗取了用户的身份令牌,现在Meterpreter是以该用户的身份令牌进行运行的。
另外,我们可以使用 incofnito模块list_token -u 命令列举出系统上可以利用的所有令牌。
meterpreter > use incofnito # 加载incofnito模块
meterpreter > list_token -u # 列举处系统是所有可利用令牌
- 权限提升的奥秘可以单独研究哦!
跳板攻击
跳板攻击,允许从Meterpreter终端攻击网络中的其他系统;比方说,入侵一台系统后,就可以利用该主机作为跳板攻击同一个内网中的其他主机(内网扩展)。
入侵一个系统并在内部获得Metrpreter会话,可以通过这个系统建立路由去侵入其他主机
- 入侵WinXP主机
按照之前的两种方法:
- 利用MS08_067漏洞
- 主机上传攻击载荷程序(Payload.exe程序)
- 使用外部脚本:get_local_subnets
使用get_local_subnets脚本获得目标主机的子网信息 ==>
local subnet:192.168.2.0 / 255.255.255.0
- 路由信息
Routing Table(route print)告诉我们,路由信息,子网端和掩码以及通过session 4会话进行路由。
待补充
Meterpreter脚本
通过 run 脚本名字 命令,我们就可以在Meterpreter控制终端中运行扩展脚本。
run screen_unlock 命令允许得到并操作远程桌面。
迁移进程
如果目标的主机上没有开启我们需要利用的软件或者关闭了我们利用的漏洞建立会话的程序进程,就会导致我们的Meterpreter会话断开;为了避免这个问题,我们可以使用 迁移进程的后渗透攻击模块,将Meterpreter会话迁移到内存空间中其他稳定、不会被关闭的服务器进程中,以维持稳定的系统控制连接。
迁移后,我们发现,程序被迁移到了进程 2068 的程序中(该进程是系统的记事本)
关闭杀毒软件
- 使用 killav 关闭掉杀毒软件
获取系统密码哈希值
- 使用run hashdump命令获取哈希值
查看目标主机的流量
- run packetrecorder -i 1
获取系统信息
- run scraper
控制持久化
Meterpreter的persistence脚本允许注入Meterpreeter代理,以确保系统重启之后,Meterpreter会话还可以连接,如果是反弹连接方式,可以设置攻击机的时间间隔,如果是绑定方式,可以设置在指定时间绑定开放端口。
向后渗透攻击模块转变
Shell升级为Meterpreter会话
命令: sessions -u
Raligun组件操作WIndowsAPI
我们可以通过Metasploit附加组件——Raligun,直接与Windows系统API进行交互。
【全文只是对Meterpreter的控制做了非常简单的介绍】