防火墙ALG技术之TFTP协议穿墙术

VSole2021-09-09 08:00:00

TFTP协议简介

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

TFTP是一个传输文件的简单协议,基于UDP协议而实现,但也不能确定有些TFTP协议是基于其他传输协议完成的。此协议设计之初是进行小文件传输的,一次发送数据块不能超过512字节(注:关于一些高级功能,RFC 1783阐述了块大小谈判、RFC 1784阐述了超时谈判和传送大小谈判,但是目前大多数TFTP服务器都还不支持),这也是服务器必须把文件切成小块反复传输的原因。服务器向客户端发送一个数据块,再接收到客户端发回的应答数据包前什么都不做,直到收到客户端确定数据块已经收到的应答后,它才发送下一个数据块,这种方式使得数据传输效率不高,但确保数据传输流程足够简单,同时能保证传输出错时,数据重传很方便,同时客户端也不用考虑数据块不按次序抵达时,如何将数据块进行正确组装。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重传最后一个未被确认的数据包(类似于TCP超时重传机制)。通信双方互为数据的发出者与接收者,一方发出数据接收应答、另一方发出应答接收数据。

TFTP报文类型

TFTP协议定义了6种类型的报文,类型的区分由数据包前两个字节的Opcode字段进行区分,具体如下:

读请求包:Read Request,简写为RRQ,从TFTP服务器获取数据的请求,Opcode字段值为1;

写请求包:Write Request,简写为WRQ,向TFTP服务器写数据的请求,Opcode字段值为2;

数据包:Data,简写为DATA,TFTP传输的文件数据,Opcode字段值为3;

确认包:Acknowledgement,简写为ACK,对收到的传输文件数据的确认,Opcode字段值为4;

差错包:Error,简写为ERROR,错误消息,Opcode字段值为5;

选项确认包:Option Acknowledgement,简写为OACK,用于确认收到的TFTP选项(后来协议才加上的,当客户端的RRQ和WRQ包带option字段时,服务器响应OACK),Opcode字段值为6。

TFTP端口分配

TFTP客户端发送RRQ和WRQ报文的时候,缺省目的端口号为69;而DATA、ACK和ERROR报文不使用69端口,使用是1024~65535的随机端口。

TFTP报文分析

为了更清楚地理解TFTP连接过程,下面通过抓取连接过程报文进行逐一分析(抓包文件见附件,如果附图不清楚可打开源文件)。如图1-1所示:包1-4为是文本模式上传文件、包5-8是以二进制模式上传文件、包9-11是以文本模式下载文件、包12-14是以二进制模式下载文件,下面以包1-4为例进行细节描述。

  • 包1:客户端(52066端口)向服务器(69端口)发送符合TFTP请求格式的WriteRequest包,该UDP包的源端口由客户端随机选择,而目标端口则是服务端的69;
  • 包2:收到上述请求包后服务器(62878端口)向客户端(52066端口),发送Acknowledgement包,对于写文件请求包,服务端发送的ACK包block为0;
  • 包3:客户端(52066端口)向服务器(62878端口)发送Data数据,由于客户端发送的Data数据长度小于512字节,服务器便认为这个包为客户端发送的最后一个包(last)、这次Write Request请求已完成;
  • 包4:服务器(62878端口)接收数据并写文件,然后向客户端(52066端口)发送Acknowledgement包,并且ACK包block为1。

图1-1 TFTP文本模式上传文件

TFTP工作流程

作为精简版FTP协议,TFTP协议还是非常简单的,当然为了便于理解和记忆,也会通过一组流程图对其工作过程进行梳理总结,如图1-2所示。

图1-2 TFTP协议工作流程

通过上面的学习,我们清楚地看到TFTP协议也是属于多通道协议,即控制通道与数据通道使用不同的连接。当TFTP流量经过防火墙时,控制通道建立连接成功之后,若无TFTP ALG功能,则防火墙无法识别后续TFTP协议的数据连接会话被拦截,数据传输将出现问题。下面就看看TFTP协议究竟是如何穿越防火墙的吧。

TFTP协议穿越SNAT

穿越SNAT主要用于TFTP服务器部署在公网场景,客户端需要通过SNAT转换后访问外部服务器。如图2-1所示,展示了TFTP穿越防火墙SNAT时的工作流程,此时需要开启TFTP ALG功能才可以完成穿墙。

图2-1 TFTP穿越SNAT流程图

防火墙设备上配置了私网地址192.168.12.2到公网地址106.120.22.2/TFTP服务的映射,实现IP地址的转换,以支持私网客户端对公网服务器的访问。组网中,若没有开启ALG功能,防火墙在将收到后续数据协商报文(如Acknowledgement包)时会将其识别为非法流量进行拦截、也就不会根据控制连接会话将数据连接的目的IP(106.120.22.2)进行SNAT还原为私网地址(192.168.12.2),从而导致私网客户端访问公网TFTP服务器失败。如图2-2-(a)和图2-2-(b)所示,整个通信过程包括以下几个阶段(包1-5):

  • 192.168.12.2:49679→106.120.12.2:69,私网客户端访问公网服务器的69端口请求下载文件;
  • 106.120.22.2:2049→106.120.12.2:69,经过防火墙SNAT转换后,公网服务器收到RRQ信息;
  • 106.120.12.2:58470→106.120.22.2:2049,公网服务器响应,另起端口返回数据;
  • 防火墙利用TFTP ACL ALG技术,安全策略检查放行公网服务器响应包;
  • 106.120.12.2:58470→192.168.12.2:49679,防火墙利用TFTP NAT ALG技术完成SNAT还原;
  • 数据到达私网客户端,返回ACK消息,数据传输成功。
  • 包6-9为私网客户端访问公网服务器的69端口请求上传文件(WRQ)的过程,与请求下载文件(RRQ)类似,不再赘述。

图2-2-(a) TFTP穿越SNAT-Client

图2-2-(b) TFTP穿越SNAT-Server

TFTP协议穿越DNAT

穿越DNAT主要用于TFTP服务器部署在私网场景,客户端需要通过DNAT转换后访问内部服务器。如图3-1所示,展示了TFTP穿越防火墙DNAT时的工作流程,此时需要开启TFTP ALG功能才可以完成穿墙。

图3-1 TFTP穿越DNAT流程图

防火墙设备上配置了私网地址192.168.12.2/UDP私网端口69到公网地址106.120.22.2/UDP公网端口6900的映射,实现IP地址的转换,以支持公网客户端对私网服务器的访问。组网中,若没有开启ALG功能,防火墙在将收到后续数据协商报文(如Acknowledgement包)时不会根据控制连接会话将数据连接的源IP(192.168.12.2)进行DNAT还原为公网地址(106.120.22.2)、也就会将其识别为非法流量进行拦截,从而导致私网客户端访问公网TFTP服务器失败。如图3-2-(a)和图3-2-(b)所示,整个通信过程包括以下几个阶段(包1-4):

  • 106.120.12.2:49758→106.120.22.2:6900,公网客户端访问公网服务器6900端口(私网服务器69端口映射为公网服务器6900端口)请求上传文件;
  • 106.120.12.2:49758→192.168.12.2:69,经过防火墙DNAT转换后,私网服务器收到WRQ信息;
  • 192.168.12.2:61107→106.120.22.2:49758,私网服务器另起端口进行响应(OACK);
  • 106.120.22.2:61107→106.120.12.2:49758,防火墙利用TFTP NAT ALG技术完成DNAT还原;
  • 防火墙利用TFTP ACL ALG技术,安全策略检查放行服务器的响应包;
  • 数据到达公网客户端,开始数据传输;私网服务器接收完毕后返回ACK确认消息,完成数据传输。
  • 包6-9为公网客户端访问私网服务器的69端口请求下载文件(RRQ)的过程,与请求上传文件(WRQ)类似,不再赘述。

图3-2-(a) TFTP穿越DNAT-Client

图3-2-(b) TFTP穿越DNAT-Server

附件—TFTP协议穿墙抓包

· 01_无NAT时TFTP穿墙.pcap

·  02_SNAT时TFTP穿墙-Client.pcap

·  03_SNAT时TFTP穿墙-Server.pcap

· 04_DNAT时TFTP穿墙-Client.pcap

·  05_DNAT时TFTP穿墙-Server.pcap

下载方式

北京威努特技术有限公司(简称:威努特)成立于2014年,专注于工控安全领域,以自主研发的全系列工控安全产品为基础,为电力、轨道交通、石油石化、市政、烟草、智能制造、军工等国家重要行业用户提供全生命周期纵深防御解决方案和专业化的安全服务。凭借持续的研发创新能力和丰富的实战经验入选全球六家荣获国际自动化协会ISASecure认证企业之一和亚太地区唯一全球网络安全联盟(GCA)创始成员。

威努特秉承首创的工业网络“白环境” 技术理念,迄今为国内及“一带一路”沿线国家的2000多家客户实现了业务的安全合规运行,已成为最受客户信赖的工控安全领军企业。同时,作为中国工控安全国家队,积极推动产业集群建设构建生态圈发展,牵头和参与工控安全领域国家、行业标准制定和重大活动网络安全保障工作,致力于为国家关键信息基础设施保驾护航。

威努特始终以“专注工控,捍卫安全”为使命,致力于为我国关键信息基础设施网络空间安全保驾护航!

防火墙tftp
本作品采用《CC 协议》,转载必须注明作者和本文链接
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
时光飞逝,转眼间2021年已过大半,我们的“防火墙ALG技术”系列文章也已经更新到了第四期,之前推送的《防火墙ALG技术之安全策略》 《防火墙ALG技术之FTP协议穿墙术》 《防火墙ALG技术之TFTP协议穿墙术》 可点击链接进行阅读。本期介绍DNS协议穿越防火墙NAT,浅谈个人理解与认知。
1月12日,在数字世界的“疫情”防控体系——山石网科StoneOS 5.5R9线上发布会上,山石网科发布防火墙软件版本StoneOS 5.5R9,以近300个功能特性全面升级,赋能企业可持续安全运营。
今天分享一篇文章,涉及Redis未授权、SSRF漏洞、宽字节注入、JSONP劫持、CORS、CRLF注入等技能,并详细讲述了其原理和漏洞利用等。能够回连且权限够的话,写crontab利用计划任务执行命令反弹shell?图片加载与下载:通过URL地址加载或下载图片?禁用不需要的协议。禁止30x跳转Java和PHP的SSRF区别PHP支持的协议:
SYN FLOOD攻击是在TCP三次握手过程中产生的。攻击者通过发送大量伪造的带有SYN标志位的TCP报文,与目标主机建立了很多虚假的半开连接,在服务器返回SYN+ACK数据包后,攻击者不对其做出响应,也就是不返回ACK数据包给服务器,这样服务器就会一直等待直到超时。这种攻击方式会使目标服务器连接资源耗尽、链路堵塞,从而达到拒绝服务的目的。
烟草行业不仅是国家税收 的重要来源,而且可为烟农、烟草职工提供大量的就业岗位,其业务系统的安全稳定运行具有十分重要的意义。 近年来,国家烟草专卖局作为行业主管单位,按照中央网信办、工业和信息化部、公安等国家相关部门要求,结合行业实际情况,相继下发了一系列网络安全建设指导文件,包括《中共国家烟草专卖局党组关于印发烟草行业问责工作实施办法(试行)的通知》、《烟草行业网络安全问题整改工作指南》等。 要求
常见端口渗透总结
2022-01-16 22:32:17
这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。基于Linux系统,配置方面很简单。在nfs配置中,有不做任何限制的,有限制用户,有限制IP,以及在版本2.x中我们还可以使用证书来验证用户。当然不同的限制可以采用的攻击方式也不一样;就目前而言网上关于nfs的攻击还是比较少的!但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
100 个网络基础知识普及,看完成半个网络高手!
IP Spoofing也叫IP欺骗,其原理是攻击者机器A利用软件构造一个虚假不存在的IP地址,并以此不存在地址为源IP地址向受害者机器B发送SYN报文,请求建立TCP/IP连接。目标机器B接收到这个SYN报文后,会将收到的SYN报文中的源IP地址提取出来,并将此IP作为目的IP,回复一个ACK/SYN确认报文给B,并等待接收来自B的确认报文。
VSole
网络安全专家