“小黑,据说昨天晚上你把张大胖揍了一顿啊,咋回事儿?”web
“张大胖这个家伙,看我不顺眼,竟然用什么「ARP 攻击」让我打不了游戏!你说我能不教训他么?”面试
关于 ARP 攻击事件,看这篇:一次成功的黑客欺骗攻击,没想到结局如此悲催缓存
“这。。。”小李满头黑线,弱弱的说:“不是说你晚上打游戏太晚吵到他们了么。。。”服务器
“蛤?张大胖晚上外放抖音我都没说啥,他还好意思嫌弃我?”微信
“搞了半天大家俩也是半斤八两。”小李内心这么想,但嘴上可不敢表现出来,就劝他:“那舍友之间也不能动粗啊,低头不见抬头见的,都是大学生了,仍是不要打架为好,再说了,对付他的 ARP 攻击,只用设置一个静态的 ARP 映射表就能够了,比你打他一顿都快。”网络
“真有你说的那么简单?我还觉得这东西复杂的很呢。”app
“哪儿有,ARP 攻击能够说是最基础的攻击手段了,还有很多简单的网络攻击手段,像什么「TCP-RST 攻击」,「DNS 缓存攻击」,「TCP SYN拒绝服务攻击」等等,用到的知识也都是我们计算机网络上学过的。”微服务
这句话仿佛给小黑打开了一扇崭新的大门,他一脸坏笑的看着小李:“嘿嘿,你说我用这些攻击手段让张大胖晚上看不了视频怎么样?”性能
小李内心咯噔一下,意识到本身刚刚说了不应说的话,支支吾吾的说:“这个嘛,,,从技术上说没什么问题,大家又是在一个局域网下,实施起来还会更方便。”学习
“nice~那你教教我,怎么执行你说的那些攻击手段?”
小李转念一想,教给小黑技术总比让他打人要好,因而说:“那我先教你 TCP RST 攻击 吧,不过这个手段涉及到 TCP 协议,我得知道你对 TCP 协议了解的清不清楚。”
小黑拍拍胸脯:“TCP 协议,不就是三次握手,四次分手嘛,我记得可清楚了!”
“是四次挥手。。。意思差很少吧。”
“呀,我是真的记得,「分手」只是是为了好记!不信你听我给你讲,TCP 是面向链接的可靠的运输协议,当客户进程想要经过 TCP 协议与服务端进程通讯时,就须要与服务器进行三次握手,其实就是来回发送三个数据包,具体的过程是这样的:

等到握手完毕,客户端进程和服务端进程之间就创建起了一条「虚拟管道」,经过这条管道,两个进程之间就可以互相传递消息了:

最后,若是客户端发现通讯结束,能够关闭链接时,就向服务器发送终止报文,开始「四次挥手」:

四次挥手完,客户端进程和服务端进程就会主动把这条链接关闭,通讯也就结束了。”
小李惊叹:“woc!没想到你小子居然记得这么清楚!还真是小看你了!”
“哈哈,当时咱老师不是说 TCP 三次握手啥的必考嘛,我就给记下来了,并且我以为这些协议挺有意思,因此一直没忘~”小黑得意之情溢于言表。
“那看来今天这「TCP-RST 攻击」你很容易就能理解了,像你刚刚讲到的,客户端利用标志位 SYN
请求与服务器握手,利用 FIN
标志位通知服务器断开链接,这两个是正常状况下使用的标志位。但 TCP 报文的标志位有 6 个,除了 FIN
,还有一个标志位也能够断开 TCP 链接,你还记不记得?”
“这些细节我早忘记了。。。”
小李哈哈一笑:“看来仍是有你没记住的嘛,我这儿有 TCP 报文的结构图,你看:

注意到 RST
标志位了吗?这就是 RST 攻击的关键。”
“我看看,「重置链接」?处理异常的时候用吗?”
“对的,若是客户端或者服务器认为如今发生了异常,就会向对方发送 RST 报文,一个常见的例子就是,客户端向服务器发起链接,但服务器发现本身并无正在监听该端口的进程,确定就不能进行第二次握手啊,他就会给客户端发送 RST 包,表示出现了异常。客户端收到 RST 包后,知道服务器那边出现了异常,就强制切断本身这边的链接。”
小黑恍然大悟:“也就是说,我只要假装服务器,给张大胖的电脑发送 RST 包,就能强制关闭他的 TCP 链接?”
小李点点头:“这就是 TCP-RST 攻击,若是你持续发出 RST 包,会致使张大胖的网络「卡顿」,由于他的 TCP 链接被强制中断了:

可是 RST 攻击并不能阻止全部的 TCP 链接,好比说张大胖在浏览一些简单网页的时候,阻断率就不高,由于等到 RST 包到达张大胖电脑的时候,页面内容就已经传输结束了。”
“我听明白了,那伪造 TCP 报文有什么须要注意的吗?”
“伪造 RST 包还有点门道的,最关键的两个因素是源端口和序列号,你也知道,一个 TCP 链接是由「客户端端口,客户端 IP,服务端端口,服务端 IP」这四个信息惟一肯定的,因此你首先须要知道这四个信息,不过这对你来讲不是问题,由于你和张大胖在一个局域网,你很容易就能截获张大胖和服务器之间的数据包,而后找到它们。因此麻烦在于序列号。”
“序列号?要这有什么用?”
“诶,你可别忘了 TCP 的滑动窗口!”

“啊,我想起来了,若是序列号不在滑动窗口范围内,这个数据包会被直接丢弃,即便是 RST 包也不例外,因此我还得保证序列号落在接收方的滑动窗口才行啊!可这我怎么能保证啊?”
“不能保证,因此就暴力尝试喽,反正只要有一个 RST 包的序列号在范围内,你就成功了。”
“有道理,我今天晚上就去教训教训这个张大胖,让他见识一下真正的网络攻击!”
当天晚上,其余舍友们惊奇的发现,张大胖竟然没有外放抖音了!小黑也可贵的没有玩游戏,不知道在电脑上捯饬着什么。
咱也不知道,咱也不敢问。
后台回复“加群”,带你进入高手如云交流群
推荐阅读:
Linux后台服务启动方式systemd、daemon、nohup大比拼
10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024」,便可免费获取!!
本文分享自微信公众号 - Linux云计算网络(cloud_dev)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。