沈传宁谈安全:谈谈TCP/IP协议的学习

发表时间:2022-05-09 22:05

在信息安全领域从业二十年来,包括最近十年从事信息安全培训相关工作,我被问的问题最多之一,就是如何迈进攻防的领域甚至成为其中的高手。虽然我知道可能很少人真正会按这个去做,但是我还是想说三遍,基础知识、基础知识、基础知识。所谓网络攻击、渗透、破解这些都是建立在信息系统了解的基础上,如果对信息系统的运作机制非常了解,那么理解如何利用其中的不足就非常简单了。就如同一个人对锁具如何运作非常了解,真正去做开锁工作,应该不会太麻烦。当然,如果只是一个简单的入门,用过几个工具,使用现成的漏洞获得权限,这个并不难,但是这只是脚本小子的水平,基本初高中生都能干的事情,现在已经没什么技术含量了,以前所谓的技术含量只是因为没这样的工具、没工具分法渠道、没有合适的教程等,让大家觉得能做这样的事很厉害。时代不一样了,如果想在这个领域有所成就,还是得从掌握最基础的知识做起。

总而言之,信息系统是如何运作的这样基础知识,就如同武学体系中的内力,无有内力是成不了武林高手的,金庸小说中的独孤九剑,好像重招式不中内力,不过别忘记了,令狐冲真正走上绝顶高手的还是因为学了任我行的吸星大法,有了足够强的内力。这个理念我会在所有文章中反复强调,不管你认不认可,总之这就是我的方法,我认可的。

1999年底,我开始迈进信息安全领域时,其实对信息安全基本没啥概念,因为在这之前,我只是一个普通的“程序猿”,而且还是做应用开发的程序员,关注的大部分也就是表、字段、算法,业务逻辑。现在突然要干信息安全,信息安全是什么?网站怎么入侵?我哪懂这些啊,而且当时互联网上没啥资料,基本也就是一些论坛上一些不知所谓的文章,当时很火的coolfire的文章,号称很多“黑客”启蒙文章,我下载下来了,老实说,我没咋看完就不看了,就是快速看了看,你可以理解为一目十行的大概看写了啥而已,基本没看细节。真正给我启蒙的是拉我进入信息安全领域的一个朋友,当年程序员时跟我一个住一间房的同居室友,不过早我一年辞职出去创业,就是去干信息安全了。不久前终于退休了,人家已经财务自由了,人比人气死人啊。

当时到北京,他拉我过来的,到北京当然就是先蹭他家住。晚上聊天的时候,我说对安全没概念,不知道怎么起步,他跟我说,没这么复杂,我给演示一下,让你有点概念。然后他给我做了个ARP欺骗演示。当时互联网没这么发达,北京很多小区的宽带其实是局域网,小区共有一个出口,也就是用户之间是在一个局域网里面,他就对全网做ARP欺骗,让小区中其他电脑网关IP地址的MAC地址指向他自己电脑,然后做一个转发给真正的 网关,就完成中间人欺骗,这时候他就能控制全网流量,然后给我说,你看看这个在上黄色网站吧,我给断了,这个在下载吧,我给封了。从此给我打开了一扇新大门,所以后来看那些入门级讲讲猜口令的,实在没啥兴趣。当时他没给我讲任何原理,就推荐我看"TCP/IP详解"这套书,从卷一开始看。其实我也就看了卷一,卷二基本没看下去,卷三更不敢看,不过卷一感觉就足够了。就是这本号称“计算机网络领域的圣经”。

看完这本书以后,对协议稍微有了解,再去看后来的电子欺骗、拒绝服务攻击原理,就非常简单了。甚至后来做会话劫持实验,基本上我一个小时就搞定了。所以我一直认同这个观点,信息安全是建立在信息技术应用上的学科,对信息系统如何运作的都搞不清楚,不可能是个高手,当然这只是指渗透领域,那些搞管理、标准的甚至其他领域的另外说。

0.jpeg

所以,关于TCP/IP协议学习,我根本不打算写技术内容,因为再怎么写也不如看看这本经典,而且这本书虽然已经写了二十多年,但是因为TCP/IP协议基本没太大改变,所以书中所介绍的协议的知识现在也仍然有用。我只是从渗透测试的角度,给出学习应该侧重的地方。关于TCP/IP的学习。

1)OSI 七层模型与TCP/IP协议的关系

OSI模型的分层、封装、分用概念,为什么要这么设计?

TCP/IP作为OSI模型的具体实现,为什么这么变化?

2)TCP/IP各层协议的工作机制

链路层ARP、RARP的工作机制,特别是ARP的工作机制,这对理解ARP欺骗非常有帮助;

互联网络层的IP包头结构、工作机制,理解为什么IP无连接、不可靠;

互联网络层ICMP的包头结构、工作机制等;

传输层TCP包头结构,SYN等六个标记位、三次握手、四次挥手、流控、保活等机制,理解连接、可靠性根源;

传输层UDP包头结构,工作机制,理解为什么无连接、不可靠,应用场景;

应用层HTTP协议工作机制、Web是目前主流,HTTP值得好好理解,书中对这部分描述不够细致,因为当时Web应用还没这么多,所有建议加读 HTTP协议的RFC。

应用层DNS的工作机制

应用层SMTP/POP3的工作机制,相关命令等;

telnet、ftp这些应用正在逐渐减少,未来肯定会消失,这些如果有空看看就可以。

关于协议的学习,其实在这里罗列都是非常简单的事,但是希望看完书以后,对协议的掌握程度能从知其然到知其所以然。最后再扯远点,就以TCP的可靠性、连接性来看。

知其然:TCP协议是可以解决可靠性、连接性问题的,因为接收方每收到一个数据包都会给出应答,发送方接到应答后就知道数据包送达了。

知其所以然:TCP协议的应答机制具体怎么做的,应答报文怎么构建的,包头结构中ACK、确认序号是如何标记的。

当你对TCP/IP有足够了解之后,就会发现,其实网络层的很多安全问题,基本上一聊就大概能理解,至于要实现攻击,使用工具怎么构造数据包,那是技能,稍微看看文档就会。哪怕在实现攻击时,明明都按照文档教程进行操作了,为什么不成功,你都可以通过抓包看看找到原因。

抱歉,最近诸事繁杂,面临中年男人一地鸡毛的困境,很长时间都没怎么好好写东西了,想起来的确应该坚持,今天正好原定日程临时调整,空下来半天,就随手把这篇文章敲出来了。结构也没整理,可读性可能也不好,主要就是传递一个概念而已。

网安人俱乐部

交通运输信息安全中心有限公司
北京市朝阳区安华西里三区13号楼
联系电话 18410890065
CISP
DSO
CISSP
ITIL4
NISP