防火墙ALG技术之TFTP协议穿墙术
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多家客户实现了业务的安全合规运行,已成为最受客户信赖的工控安全领军企业。同时,作为中国工控安全国家队,积极推动产业集群建设构建生态圈发展,牵头和参与工控安全领域国家、行业标准制定和重大活动网络安全保障工作,致力于为国家关键信息基础设施保驾护航。
威努特始终以“专注工控,捍卫安全”为使命,致力于为我国关键信息基础设施网络空间安全保驾护航!
