我想让自己强大起来,因为至少我已经有幸和想要保护的人相遇了。 收藏本站
登陆 / 注册 搜索

阅读: 5.9K   回复: 2

[# 网络基础] 网络攻击手段原理分享

小执念 古黑浩劫论坛大牛 2015-11-24 07:16 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
 一般情况下,一个TCP连接的建立需要经过三次握手的过程,即:7 k! K1 E9 t' e* v+ s2 [, c

5 W6 t9 F/ k3 U3 g$ c  1、 建立发起者向目标计算机发送一个TCP SYN报文;' X+ N/ U' p  |" ~1 ?( b
  2、目标计算机收到这个SYN报文后,在内存中创建TCP连接控制块(TCB),然后向发起者回送一个TCP ACK报文,等待发起者的回应;. N& ?/ J& t8 h9 D( y
  3、 发起者收到TCP ACK报文后,再回应一个ACK报文,这样TCP连接就建立起来了。
5 p' O3 Y" y7 d" H/ l( f2 d) K. ~
网络攻击手段原理分享 180433564.png
7 y+ w* M8 e8 {0 b

8 B: D  Z5 o# x; R  利用这个过程,一些恶意的攻击者可以进行所谓的TCP SYN拒绝服务攻击:
; |- [" s" C3 L% H% R
# o7 q- B  m( E/ f) }2 q0 q  1、 攻击者向目标计算机发送一个TCP SYN报文;! V/ h4 e$ e: F, R" ?  p
  2、目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;
3 f- O1 H& M4 h  m  3、而发起者则不向目标计算机回应ACK报文,这样导致目标计算机一致处于等待状态。
# o! D. b# `" w: j# c
  K- J2 G6 I* A1 B4 A9 ~( U  可以看出,目标计算机如果接收到大量的TCP SYN报文,而没有收到发起者的第三次ACK回应,会一直等待,处于这样尴尬状态的半连接如果很多,则会把目标计算机的资源(TCB控制结构,TCB,一般情况下是有限的)耗尽,而不能响应正常的TCP连接请求。4 Y6 C7 i+ @0 h- }# b
+ G0 W1 W- [) h
  1.2 ICMP洪水6 m" s7 f! C3 T5 @& s9 k, u

% c3 a  a7 F$ G7 X+ l! v1 e1 M( \  正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
$ N% w% a* l% C) @2 ~5 |
/ R: X& e& [' I+ h$ S0 D  1.3 UDP洪水
% ]! e0 y4 Z8 l1 B1 J
4 w# A- p4 y" [! ?) k' F- R3 E0 D) x, W  原理与ICMP洪水类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。
6 L  T5 D$ ]7 @8 O/ f
: U+ i( \+ ?; M4 n$ [& x3 d9 n  1.4 端口扫描
7 V, e8 o8 J$ Q1 ~
% X* r8 |2 R7 y% L  S  根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候,做这样的处理:
) r8 W6 R7 X( V) N. Z  L0 A+ K0 {% J
  1、 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB);' t8 [0 H6 l" r1 s% ]. L. U. f
  2、 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。
7 m0 d- C2 j; W. Z% W
3 }$ R+ w$ ]8 K  相应地,如果IP协议栈收到一个UDP报文,做如下处理:3 \& c; M- s$ b9 |6 \/ A: p' T

; v2 K7 _$ w& [, N; X6 T  1、如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外);0 |! i' x  w2 p. x4 k) B3 ]
  2、如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达。9 b6 ]: q* s2 B3 L3 |4 e9 U3 ~
& [" Y3 T5 X0 W: O8 w
  利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:! V4 ?4 z- s% |; Q. Q* r
  1、发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);
3 g5 `+ r# w6 a4 G0 K' r6 v9 I  2、如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;; M  B  R+ a6 Q, h7 C/ g! \: C
  3、相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。2 Z9 l' K$ u8 T5 ]; e

' m; Y- z$ d/ \$ ^* v# ~6 E5 E; [  这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。
; D$ o7 J$ H6 g3 ]6 M- u9 k/ \, V+ S1 b
  1.5 分片IP报文攻击
& z( i$ q, g& ^) C( |% q
8 }  {' v4 r  N% m) m7 L, B  为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。
- J# q1 q9 j0 E' z' g7 M+ n+ A$ j& p, e9 f) O
  目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。5 q4 j5 B- n9 U: S- H

2 y5 u5 M; O1 y- N7 D7 e  1.6 SYN比特和FIN比特同时设置
9 s( R" B# s' P* w' ]: l
& ~* O2 f! I! _2 d: g  在TCP报文的报头中,有几个标志字段:5 [1 U5 ^2 ~: K; r; K( G

3 K2 v- F. G6 g8 _1 J( ^  1、 SYN:连接建立标志,TCP SYN报文就是把这个标志设置为1,来请求建立连接;! G; o4 g* b8 x/ g7 O9 y3 C
  2、 ACK:回应标志,在一个TCP连接中,除了第一个报文(TCP SYN)外,所有报文都设置该字段,作为对上一个报文的相应;
9 q* v0 w$ Q$ f6 f) I, z: O  3、 FIN: 结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接;
; b& c  k, G& {/ y  4、 RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文;
3 T! a  m0 b+ `1 x" t5 L# w  5、 PSH:通知协议栈尽快把TCP数据提交给上层程序处理。0 k; g6 _' [4 {+ |" \( Q

9 v% j% H7 s& u+ F  正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。: _. _& l2 l+ g' }+ ^
5 E+ ^$ T; W. v$ s" r+ I( ]5 o
  1.7 没有设置任何标志的TCP报文攻击# m% r5 ~7 V* ^; m% J

9 w  L) U! o3 h9 _1 {; X6 a  正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。6 V0 u9 C; w  b( a
, I0 ~; U  n: y. n8 G+ Z; }# T" Q
  1.8 设置了FIN标志却没有设置ACK标志的TCP报文攻击
7 ^8 U4 {5 O+ ]. D6 D, Y
' g$ D/ F4 O* e; @  正常情况下,ACK标志在除了第一个报文(SYN报文)外,所有的报文都设置,包括TCP连接拆除报文(FIN标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了FIN标志却没有设置ACK标志的TCP报文,这样可能导致目标计算机崩溃。
* ]# B$ z/ l; m' g6 |
2 Q. _1 f- l, i3 D( b; V! Q7 R


微雨黄昏 「出类拔萃」 2018-5-1 07:24 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

睡觉 不可能的 这辈子不可能睡觉的 你看烟有没有 酒又没有 友女又没有 又不懂去哪玩 只能每天像个神经病一样玩手机
一起一伏 「龙战于野」 2018-5-3 07:19 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

佩服佩服!#j325:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-1-28 10:33 , Processed in 0.032333 second(s), 21 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表