世界上没有一个人能代替另一个人。 收藏本站
登陆 / 注册 搜索

阅读: 7.6K   回复: 2

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

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

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

管理员 五周年纪念
 一般情况下,一个TCP连接的建立需要经过三次握手的过程,即:7 y8 S: ~8 G+ D/ N  I

- k! z. ~: e4 ^- h  1、 建立发起者向目标计算机发送一个TCP SYN报文;
; O# X5 G2 N7 ]' t- Y  2、目标计算机收到这个SYN报文后,在内存中创建TCP连接控制块(TCB),然后向发起者回送一个TCP ACK报文,等待发起者的回应;* v$ M, I0 {- `- o4 Y. J
  3、 发起者收到TCP ACK报文后,再回应一个ACK报文,这样TCP连接就建立起来了。- O1 P! k! f0 n1 {9 A2 }) K
( C0 C' T+ g! x+ y0 ]' T+ Z% c& V
网络攻击手段原理分享 180433564.png
& y5 [+ Q4 L8 N) v; _7 a. v
7 t! u) D; b' _
  利用这个过程,一些恶意的攻击者可以进行所谓的TCP SYN拒绝服务攻击:, B4 N) b  r+ V" h; n
5 s# D& O: k$ {. B
  1、 攻击者向目标计算机发送一个TCP SYN报文;
5 a5 f( ~$ V8 P- v& v7 H; L$ |  2、目标计算机收到这个报文后,建立TCP连接控制结构(TCB),并回应一个ACK,等待发起者的回应;( ^' r  R6 i/ ~8 n/ E, H5 l3 a7 d
  3、而发起者则不向目标计算机回应ACK报文,这样导致目标计算机一致处于等待状态。
- b; a; y% R6 H; H. I9 R
8 e4 f) Z4 F3 N% h3 k9 |  可以看出,目标计算机如果接收到大量的TCP SYN报文,而没有收到发起者的第三次ACK回应,会一直等待,处于这样尴尬状态的半连接如果很多,则会把目标计算机的资源(TCB控制结构,TCB,一般情况下是有限的)耗尽,而不能响应正常的TCP连接请求。% y" G4 |) F6 n+ Z! |: j  j

' d/ L* x# D" q) {/ ^, e  1.2 ICMP洪水; B! u0 Y/ ^7 g) i) x7 R
4 t* j1 ^6 `8 Q( s
  正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMP ECHO),接收计算机接收到ICMP ECHO后,会回应一个ICMP ECHO Reply报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。2 {; [# f# A$ ~/ x( Q! `$ u

6 G' _& u+ V: G2 n! k  1.3 UDP洪水
6 W& E, g/ s' A# b, ]
# f  X( }5 A7 V: ~  原理与ICMP洪水类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。
0 U5 W- l# Q2 w/ {9 q' @% }: O7 F6 Z/ `
0 O+ `, K3 y! Y0 X; }1 y- H9 [  1.4 端口扫描/ l6 {) z9 g7 c8 F2 d9 O$ D
+ c0 T6 l0 p, r) t# Q+ @
  根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCP SYN)的时候,做这样的处理:
  N' |  w4 ?" v; m2 m6 o( }; ?) J! [3 {
  1、 如果请求的TCP端口是开放的,则回应一个TCP ACK报文,并建立TCP连接控制结构(TCB);
* M/ N( n- y6 E4 x- i& e  2、 如果请求的TCP端口没有开放,则回应一个TCP RST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。+ |" I9 N! e; A( D5 @1 N+ C! L% t

0 P" f% K( n+ f& I+ H4 T4 [8 r+ N" t  相应地,如果IP协议栈收到一个UDP报文,做如下处理:
: Y) D2 S1 e$ `, S
  u8 Z0 H. n; e  1、如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外);& [7 Q% Y" s! n4 g  i5 C( M
  2、如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达。
: E5 Z! Z8 {7 u1 u+ o8 I6 _9 l0 I) [4 V0 {" t  v$ m& ~
  利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TCP或UDP端口是开放的,过程如下:: g- i7 j, \) u: d
  1、发出端口号从0开始依次递增的TCP SYN或UDP报文(端口号是一个16比特的数字,这样最大为65535,数量很有限);* o- L. z# a1 i9 e+ l4 `+ u
  2、如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;. W7 y, j5 P2 R& U- x
  3、相反,如果收到了针对这个TCP SYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。
2 Y4 x9 T) U" y& G  H. ~: H) e' i- r2 `0 C
  这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。
6 f6 A- X6 t/ n0 z: I0 Z7 H$ J6 Q: q5 r% F  o( [' [8 o
  1.5 分片IP报文攻击  @2 ~4 Q: W4 e0 M' v* q( V
, q/ x8 ~/ v8 q5 N' R& j
  为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。# ~, M4 ~$ w( s6 [7 u. g
8 t# Y' H. F- m6 t) J/ G
  目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文,这个过程会消耗掉一部分内存,以及一些IP协议栈的数据结构。如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时),如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。
" ]# @4 h1 }9 [
: x' v: L+ X- T: M: Q7 d- U2 j  1.6 SYN比特和FIN比特同时设置0 K7 s8 L/ [: n1 E: a9 J1 l. i

! o% K( T5 k8 X4 Z- W" T2 p6 h  在TCP报文的报头中,有几个标志字段:" \9 F+ Z, e2 {3 b
+ G* @: ], ?  V# ^/ ~' J& f
  1、 SYN:连接建立标志,TCP SYN报文就是把这个标志设置为1,来请求建立连接;9 @6 \3 c, U4 r5 I* K  v
  2、 ACK:回应标志,在一个TCP连接中,除了第一个报文(TCP SYN)外,所有报文都设置该字段,作为对上一个报文的相应;
* F( K( E1 s+ |6 M  3、 FIN: 结束标志,当一台计算机接收到一个设置了FIN标志的TCP报文后,会拆除这个TCP连接;2 I1 V9 ^4 i; p; I- ~" Z: b
  4、 RST:复位标志,当IP协议栈接收到一个目标端口不存在的TCP报文的时候,会回应一个RST标志设置的报文;& j+ \; l1 C' a2 n' o
  5、 PSH:通知协议栈尽快把TCP数据提交给上层程序处理。6 C3 ?; f4 f) f0 V4 }. I3 e6 e

$ F8 W- N) H6 E5 T" l  正常情况下,SYN标志(连接请求标志)和FIN标志(连接拆除标志)是不能同时出现在一个TCP报文中的。而且RFC也没有规定IP协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送SYN和FIN同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
2 O5 v! F5 E/ K. E6 B1 g- {  y8 F  Z
  1.7 没有设置任何标志的TCP报文攻击
0 {! i* u0 N! ?' P7 f' N2 P+ @' G! d
- }: D% D: E' h  l3 s8 R  正常情况下,任何TCP报文都会设置SYN,FIN,ACK,RST,PSH五个标志中的至少一个标志,第一个TCP报文(TCP连接请求报文)设置SYN标志,后续报文都设置ACK标志。有的协议栈基于这样的假设,没有针对不设置任何标志的TCP报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
* L! {2 o- b( x/ h6 }2 W" \7 G; B/ E8 A1 g5 y8 j
  1.8 设置了FIN标志却没有设置ACK标志的TCP报文攻击
. W# M$ X+ r$ x/ ^$ ~
! ^+ M& N% O* j  n) F3 s" r+ ~  正常情况下,ACK标志在除了第一个报文(SYN报文)外,所有的报文都设置,包括TCP连接拆除报文(FIN标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了FIN标志却没有设置ACK标志的TCP报文,这样可能导致目标计算机崩溃。. }1 ^/ Y" Q! K2 W, Q7 U) a
7 I3 y. x8 O# Q  o8 I  @4 C
上一篇
下一篇
帖子热度 7597 ℃
哇!小执念被楼主看上了奖励 2 个 金币.

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

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

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

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

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

本版积分规则

快速回复 返回列表