월간 인기 게시물

게시물 17건
   
[DoS공격] SYN Flooding
글쓴이 : 최고관리자 날짜 : 2009-11-30 (월) 20:53 조회 : 9282
글주소 :
                       

SYN Flooding 공격은 앞서 설명한 Ping Of Death 보다 약간 어려운 내용을 담고 있다.
Ping Of Death 설명시 추가로 설명했던 기본지식(네트워크, 패킷에 대한 설명)의 내용보다 좀더 어려운 내용의 개념설명까지도 이어져야만 SYN Flooding의 설명을 이어나갈 수 있다.
그렇다고 읽어볼 시도조차 할 수 없을 정도로 어려운건 아니니 역시 가벼운 마음으로 읽어보길 바란다.



SYN Flooding은 네트워크를 통해 데이터를 주고받기 위해 세워진 규약인 프로토콜의 허점을 이용해서 시도하는 DoS공격이다.
이 프로토콜이라는 것이 무엇인지 SYN Flooding의 설명전에 잠깐 짚고 넘어가도록 하자.



ㅇ 프로토콜
네트워크에 생소한 사람들은 프로토콜이라는 용어에 대하여 혼동하는 경우가 많다. 하지만 걱정하지 마시라. 이 프로토콜이라는 녀석도 알고보면 아무것도 아니기 때문이다.
프로토콜은 컴퓨터들간에 데이터를 주고받기위한 일련의 규약을 말한다. 규약이라는 말만으로는 아직 감이 잘 안올것이다.
쉽게 생각해서 하나의 언어라고 생각하는편이 이해하기 쉽다. 한국사람들이 서로의 의사를 표현하기 위하여 사용하는 규약이 무엇인가? 바로 한국어이다. 그럼 미국사람들이 서로의 의사를 표현하는 규약은? 물론 영어다.
그럼 한국인과 미국인은 서로 대화가 가능한가? 라는 질문에 대한 답은 당연히 ''''불가능하다''''이다. 왜냐면 서로 대화를 위해 알고있는 규약이 다르기 대문이다.
이뿐만이 아니다. 주위를 둘러보면 정말 여러가지 규약이 세상을 지배하고 있다. 주머니를 뒤져서 핸드폰을 꺼내보라.
0부터 9까지의 숫자와 * 버튼과 # 버튼, 그리고 통화 버튼과 종료 버튼은 모두다 가지고 있을것이다.
이것도 하나의 규약이다. 전화를 걸기 위해서는 먼저 번호를 누르고 통화버튼을 누른다는것. 모두들 알고 있지만 이것역시 하나의 규약이라는것은 간과하고 있다.
버스를 타기위해서는 돈을 내야한다는것도 규약(돈을 내지 않으면 버스에서 쫓겨날것이다.), 컴퓨터를 켜기위해서는 전원버튼을 눌러야 한다는것도 하나의 규약(마우스만 잡고있는다고 해서 컴퓨터가 켜지지는 않는다.)이다.
그럼 컴퓨터와 컴퓨터가 서로 대화를 하기위해서도 무엇인가 규약이 정해져 있어야 할것 아니가? 바로 컴퓨터간의 언어, 그것이 프로토콜이다.
그런데 사람들이 한국어도 알고 영어도 동시에 알 수 있듯이, 통신 프로토콜도 딱 한가지만 존재하는것은 아니다.
컴퓨터를 위한 여러가지 프로토콜이 존재하지만, 그중 가장 많이 사용하는 언어가 바로 TCP와 UDP라는 프로토콜이다.



ㅇ TCP 프로토콜, UDP 프로토콜
TCP 프로토콜은 앞서 말한대로 컴퓨터가 사용하는 대화 방법중 하나이다. 어디서 많이 들어보지 않았는가?
이 TCP 프로토콜은 인터넷을 하기위한 기본 프로토콜로 이 글을 읽고있는 독자들의 컴퓨터에는 분명히 이 프로토콜이 설치되어 있을 것이다.
TCP 프로토콜의 특징은 연결지향형 프로토콜이라는 것이다.
쉽게말해 통신을 하려는 다른 컴퓨터와 반드시 먼저 열결을 해서 데이터를 보내며, 데이터가 잘 보내어 졌는지 잘못보내어 졌는지등을 확인한다.
이에반해 UDP 프로토콜은 연결이 되건 안되건 데이터가 잘가건 안가건 그냥 데이터를 보내고 끝내는 방식이다.
그렇기 때문에 주고받는 데이터가 중요한 데이터라면 일반적으로 TCP 프로토콜을 사용하며, 데이터의 신뢰성보다 신속한 전송이 중요하다면 UDP 프로토콜을 사용하게 된다.



그럼 이제 SYN Flooding에 대한 설명을 이어가겠다.
SYN Flooding은 앞서 설명한 TCP프로토콜의 허점을 이용한 DoS공격 방식으로 TCP를 이용한 연결시 반드시 먼저 서로간의 연결을 확립한다는 것을 노린다.
이 서로간의 연결을 확립하는 절차는

① 내 컴퓨터가 연결하려는 컴퓨터로 [SYN] 신호를 보내게되고,

② 연결하려는 컴퓨터는 내 컴퓨터로 [SYN, ACK]신호를 보내게되며,

③ 다시 내 컴퓨터가 서버로 [ACK] 신호를 보내게된다.
이런 절차를 ''''Threeway handshake'''' 부르며 이 절차가 완전히 끝나야만 내 컴퓨터와 연결하려는 컴퓨터간에 데이터의 이동을 시작될 수 있다.
그런데 SYN Flooding 공격은 내 컴퓨터에서 공격대상인 컴퓨터로 [SYN] 신호를 보내는 ①번 과정만을 진행하며, [FIN] 신호를 보내는 ③번 과정을 생략함으로서 공격대상인 컴퓨터가 [ACK]신호를 계속 기다리게끔 하는것을 말한다.
대부분의 이런 공격의 목표가 되는 서버는 시스템의 동시 사용자수에 일정한 제한이 있다. 설정에 따라 이 사용자 수를 변경할 수 있지만, 그렇다고 사용자 수를 무한대로 해 놓을 수는 없다.
SYN Flooding 공격은 이처럼 서버의 동시사용자 수를 초과하는 접속을 시도함으로서 타 사용자가 해당 서버를 정상적으로 이용하는것을 방해하게 된다.

또한 일반적으로 서버가 [ACK] 신호를 기다리는 상태에서 일정시간동안 지나면 다시 정상적으로 돌아오게 끔 설정(Time Out)이 되어 있으므로 한번의 SYN Flooding 공격으로는 큰 효과를 기대할 수 없고, 이때문에 여러번의 SYN Flooding 공격을 시도하여 공격대상인 컴퓨터의 동작를 방해하게 된다. 


패킵캡쳐...

19:04:22.656372 IP 61.185.29.84.26717 > 116.125.28.46.80: S 3473553731:3473553731(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.656422 IP 61.185.29.84.26716 > 116.125.28.46.80: S 4091907318:4091907318(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.656424 IP 61.185.29.84.26720 > 116.125.28.46.80: S 3885308204:3885308204(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.656472 IP 61.185.29.84.26721 > 116.125.28.46.80: S 2545402999:2545402999(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.665755 IP 124.135.22.163.2159 > 116.125.28.46.80: S 3432161933:3432161933(0) win 16384 <mss 1444,nop,nop,sackOK>
19:04:22.665764 IP 124.135.22.163.2159 > 116.125.28.46.80: S 3432161933:3432161933(0) win 16384 <mss 1444,nop,nop,sackOK>
19:04:22.669598 IP 61.185.29.84.27282 > 116.125.28.46.80: S 2989026701:2989026701(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.677384 IP 61.185.29.84.27283 > 116.125.28.46.80: S 368524627:368524627(0) win 65535 <mss 1460,nop,nop,sackOK>
19:04:22.689313 IP 61.185.29.84.27284 > 116.125.28.46.80: S 4251032178:4251032178(0) win 65535 <mss 1460,nop,nop

이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.