Metasploit后渗透技巧[2]

初次接触msf最令人兴奋的莫过于跳板功能,通过msf添加路由功能,可以直接使用msf对本来不能访问的内网进行连接(建立访问连接是渗透的第一步),一旦建立连接那么就是想干什么都可以真是强大无比。

11.PNG

使用meterpreter的autoroute功能,即可完成该操作。首先使用get_local_subnets脚本获得受控系统本地子网,然后使用autoroute脚本添加路由。这样操作后就会看到添加的路由表,网关是session 3即payload程序。如果我在msf指定某个模块的ip地址是192.168.244.*,则会通过session3 网关进行转发,访问到目标ip.

跟建立网络连接的还有一个经常使用的,就是网络映射功能,meterpreter中有一个getgui脚本(我的bt下脚本存放路径/opt/metasploit/msf3/scripts/meterpreter里面有很多写好的脚本,如下图所示)

12.PNG

在《metasploit渗透测试指南》上说,getgui可以将远程的3389映射到本地的指定端口,功能,这就是一个网络映射过程。

13.PNG

看其使用方法,很简单,这里我不添加用户名和密码,直接建立连接。运行run getgui -e -f 8080

14.png

执行后建立了连接

15.PNG

可以建立连接,转发成功了。

但是在渗透测试中需求,总是在变化的,以前也有过需求,将内网的某个端口映射出来,进行连接,是否也可以做到?带着这个问题,我看了一下getgui的实现代码。

16.PNG

我没有学过ruby,但是看了这样代码,很容易明白,刚才执行的run getgui -e -f 8080时,则含有-f则frwrd变量设置为true。并且保存-f后面的端口到变量lport中,而下面当frwrd为true,则会调用portfwd add -L 0.0.0.0 -l #{lport} -p 3389 -r 127.0.0.1 将远程3389(相对于payload即是127.0.0.1)映射到本地的指定的端口。

可见建立网络映射只需要这条命令即可。搜索该命令所在文件:

17.PNG

发现是在/opt/metasploit/msf3/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb中定义的。

18.PNG

应该是该命令的具体实现。从参数中很容易看出来。各个参数的含义。

19.PNG

可以看到支持很多命令add、delete、list等。

因此,照猫画虎。如果我想将远程主机的10081端口映射到本地的10081端口,那怎么实现?

只需要一句话

client.run_cmd(“portfwd add -L 0.0.0.0 -l 10081 -p 10081 -r 127.0.0.1”)

在/opt/metasploit/msf3/scripts/meterpreter目录下创建changeport.rb

20.PNG

运行一下创建的脚本

21.PNG

看一下端口状态:

22.PNG

映射已经成功。

从刚才portfwd的命令可以知道,其支持add、delete、list命令,因此继续丰富自己的脚本,可以实现这样一个功能,添加端口映射、删除端口映射、查看端口映射。照猫画虎可以写出如下脚本

放入到/opt/metasploit/msf3/scripts/meterpreter下

使用方法演示

23.PNG

可以显示帮助信息,建立映射,显示映射,删除映射。当然鸟语写的不好,只有自己能看懂。

后来蓦然回首,才发现当初的自己是多么的2,原来meterpreter本身就有这个portfwd功能,可以直接使用,我真是脱裤子放屁了。完全实现了add、list与delete。

总结

本文主要学习,使用lcx做端口转发,将两个内网机器(目标机器和msf)建立连接,同时使用msfpayload进行作为跳板,可以进行继续渗透。最后是简单实现端口映射,了解基本的mterpreter脚本编程。

备注:

本文主要是以windows下payload为例,其实msf支持很多种脚本建立连接。

相关文章链接:《Metasploit后渗透技巧[1]

[via@buchedan]