拿到meterpreter的后渗透提权-新建管理员开启远程桌面

拿到meterpreter的后渗透提权-新建管理员开启远程桌面

在前一篇文章中已经通过ms17_010渗透成功,因为选择的payload是 windows/x64/meterpreter/reverse_tcp,所以弹回了一个meterpreter会话。我们需要进一步提升权限,此时便属于后渗透阶段了。


什么是 meterpreter ?

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。

最后,Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。其中,攻击者与目标设备中Meterpreter的通信是通过Stager套接字实现的meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。

Meterpreter技术优势。Metasploit提供了各个主流平台的Meterpreter版本,包括Windows、Linux,同时支持x86、x64平台,另外,Meterpreter还提供了基于PHP和Java语言的实现。Meterpreter的工作模式是纯内存的,好处是启动隐藏,很难被杀毒软件监测到。不需要访问目标主机磁盘,所以也没什么入侵的痕迹。除上述外,Meterpreter还支持Ruby脚本形式的扩展。所以Ruby语言还很有必要。


先接着上一篇文章的末尾将整个后渗透阶段的过程复现一遍。

对目标主机进行屏幕截取。

screenshot

可以通过截图简单观察目标主机当前情况。

sysinfo

获取靶机的系统信息

getuid

获得当前的权限

hashdump

使用“hashdump”命令可以从系统提取用户名和密码hashes。使用hashdump命令可以获取目标主机的SAM文件,获取目标主机的账号密码hash信息,剩下的可以用爆破软件算出明文密码,微软一般用LM,NTML和NTLMv2形式的哈希表存储密码。若想运行这个命令需要有注册表和SAM [Security Account Manager]的系统的权限,如果你是作为一个普通的用户登陆的话,需要提升权限

数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::

像这些得到的哈希值,要想得到明文,最快的办法就是拿去百度或者google。简单常见的密码可以直接查到。

其中的LM哈希(aad3b435b51404eeaad3b435b51404ee)跟NTLM哈希(31d6cfe0d16ae931b73c59d7e0c089c0)对应的是一个空密码。

run vnc

会弹出窗口,在此窗口中就是对方现在打开的桌面情况,在这里,可以对远程机器进行操控。但这个有一定概率可能成功,所以也可以试试。


我们新打开一个终端,对靶机进行一次端口扫描。

发现靶机并未开放3389端口,而且用rdesktop也无法连接,说明靶机并未开启远程桌面。

ps

查看目标机器进程,找出域控账户运行的进程ID

 

load incognito

由于目前我们的身份是system的权限,为了方便渗透,需进行身份令牌的窃取,拿到administrator的token。

扮演一个帐户从一个特定进程偷取令牌。为此,我们需要“incognito”扩展,使用“steal_token+PID”这个例子中我们使用的是steal_token 1148,其中由前面执行ps后得到的信息可知,PID为1148权限为administrator,所以我们在执行命令后虽然提示错误信息,但是它仍会被成功在后台执行,所以在运行steal_token后核实UID,我们的权限就变为了administrator了。

help

每加载一个模块或者拓展,都可以通过help来查看命令或参数的详细信息。以刚才的incognito为例,就是通过help来查看的,是经常用到的一条命令。

steal_token pid

盗窃给定进行的可用令牌并进行令牌假冒。先用ps查看有哪些pid是属于administrator的,再盗取这个pid即可。

我们 steal_token 1148

此时查看我们的身份便是administrator了。


run getgui -e

开启目标主机远程桌面

此时靶机远程桌面被打开。

我们尝试就登录administrator,但是由于administrator没有设置密码,即是空密码,所以会出现上图的错误提示。因为目前我们已经拿到了administrator的token,所以可以直接新建一个管理员账户。

shell

获取目标主机的远程命令行shell,如果出错,考虑是目标主机限制了cmd.exe的访问权,可以使用migrate注入到管理员用户进程中再尝试。

通过其 shell 来关闭防火墙

netsh adcfirewall set allprofiles state off

在shell下新建管理员账户,这里以zgao为例,密码为123456

net user zgao 123456 /add && net localgroup administrators zgao /add

此时我们再新建终端输入rdesktop 192.168.1.111(靶机ip)

如果其他账户也在线的话,就会出现这种情况。

如果点是,其他账户就会被退出,其中有30秒等待对方确认的时间,若其他账户未操作,则默认退出,我们新建的账户便可以进入系统了。(所以最好在别人不在时,进行该操作!会直接被发现)

我们已经拿到了远程桌面,渗透基本上完成了。

clearev

完成攻击操作之后,千万别忘了“打扫战场”。我们的所有操作都会被记录在目标系统的日志文件之中,因此我们需要在完成攻击之后使用命令“clearev”命令来清除事件日志执行“clearev”命令,将清除事件日志。这个命令没有任何选项或参数。

如果要删除这个新建的账户,先关闭远程桌面,在shell下执行

net user zgao /del

关于meterpreter的其他命令详解,我会在接下来的文章中写到。

zgao

如果有什么技术上的问题,可以加我的qq 1761321396 一起交流。