본문 바로가기

Computer/0x00 정보보안

[DOS공격] 2. SYN Flooding 시연

[DOS공격] 2. SYN Flooding 시연



유기 는 고전 필독서 중에 하나로서, 많은 사람들이 어릴적에 한번쯤 읽어보거나, 만화,영화 등으로

접하는 대표적인 작품중에 하나 입니다. 서유기 작품을 빗대어 이번 시간에는 네트워크 해킹중에서

SYN Flooding 공격 에 대해서 알아보겠습니다.


서유기에서 손오공은 여러가지 공격을 쓸 수가 있는데요.

여의봉이 길어진다거나, 요술을 부린다거나 하는 등 신통방통 한 공격으로 적을 당혹 시킵니다.


그중에서도 머리털을 뽑아서 분신술을 쓰는 공격기법이 참 인상적 이더군요.

머리털 갯수가 엄청 많으니 그것이 자신의 또 다른 분신이 태어나서 적을 공격하면... 무시무시 하겠죠?





머리털 분신술 공격 = SYN Flooding 공격





- 보통 네트워크는 서비스를 제공하는 시스템은 사용자 수가 제한되어 있습니다. SYN Flooding 

공격은 존재하지 않는 클라이언트(사용자)가 서버별로 한정되어 있는 접속 가능 공간에 접속한

것처럼 속여서 다른 사용자가 서비스를 제공받지 못하게 하는 기법 입니다.



서유기에서 손오공이 자신의 머리털을 뽑아서 '후' 하고 불면 자신의 분신을 만들어서 공격을

하듯이 한정된 사용자 수를 손오공이 머리카락 분신으로 모두 자기 분신으로 채우는 것이죠.


TCP / IP 프로토콜은 아시는 분들은 아시겠지만 '보안' 을 생각하고 나온 녀석이 아닙니다.

그래서 취약점이 존재 할 수 밖에 없으며 오래전 네트워크해킹 공격의 상당수가 아직도 

유효한 경우가 많습니다.


SYN Flooding 공격시 해커는 3-way-handshake(쓰리웨이 핸드쉐이크) 과정에서 

서버를 다운 시키기 위해 짧은 시간안에 많은 양의 SYN만 보냅니다.


그것도 출발지 주소지를 존재하지 않는 시스템의 IP주소로 위조한 패킷을 보냅니다.

위조한 패킷을 보내는 이유는 서버와 분신술 놀이를 하기 위해서 입니다.

해커는 하나지만 여기저기 숨어서 수많은 클라이언트(사용자) 인것처럼 보이게 해야 하기

때문이죠





그림에서 보시는 바와 같이 왼쪽이 클라이언트 이고 우측이 서버 입니다.


1.클라이언트는 서버에에게 '접속요청' SYN 패킷을 보냅니다.

2.서버는 받은 SYN 패킷에 대한 SYN/ACK 패킷을 각 클라이언트에게 보냅니다.


3.서버가 보낸 SYN / ACK 패킷에 대한 ACK 패킷을 서버는 받지 못합니다.

4. 서버는 세션의 연결을 기다리게 되고 공격은 결국 성공 합니다.


이렇게 되는 이유는 시스템 설계 자체가 SYN에 대한 연결을 무한정 기다리기만 하는 것이 아니라

일정 시간동안만 연결을 시도하고 기다리도록 설정 되어 있기 때문 입니다.

그러므로 SYN Floodong 공격을 Success 시키려면 서버에 설정된 대기 시간안에 

서버가 수용할 수 있는 동시 사용자 수의 한계를 넘는 연결을 시도해야 합니다.




SYN Flooding 도스공격 실습



타겟측에서 IP를 확인 합니다.





알FTP 등을 통해 서버를 열어줍니다. 알FTP의 경우 보통 5명까지 설정 되어 있습니다.





해커측에서 hping3 프로그램을 이용하여 SYN Flooding 공격을
수행 합니다.

[옵션설명]

--rand-source : 해커의 IP주소를 랜덤하게 생성
200.200.200.62 : 타겟의 IP주소
-p 21 : 21번 포트에 대해 패킷을 전송 (FTP는 portnumber 21번 이니까 21번으로 설정)
-S : TCP 패킷중 SYN만 전송한다
-flood : 시스템이 생성 가능한 만큼 빠른 속도로 패킷을 보낸다




DoS공격후에 타겟 컴퓨터에서 netstat -ano 명령어를 입력후 포트를 확인해 봅니다.

접속 제한 최대수인 '5개'의 세션을 모두 사용중임을 확인 할 수 있습니다. state 항목에 'SYN_RECEIVED'
 라고 5개 써있는 것이 바로 그것 입니다.

이상 DOS 공격중 하나인 SYN Flooding 에 대해서 알아보았습니다.


 방어법으로는, 보안패치로 대기시간을 줄이는 것입니다.

직접적인 차단은 불가능하기 때문에 예방할 수 있는 방법은 일차적으로 시스템에 패치를 하는것과 
침입탐지시스템(IDS), 침입차단시스템(IPS)를 설치하시는 것입니다.

아니면, 정형화된 형태의 공격이기 때문에 쉽게 인지가 가능해서 해당 ISP에 연락하여 IP주소대역의
접속 금지시키는 방법을 쓰시거나 방화벽이나 라루터 설정에서 해당접속을 금지시키게 함으로서 
공격을 막을 수 있습니다.


본 포스팅은 보안공부를 위해 작성하였으며 악용하면 책임은 본인에게 있다는점 을 명심하시길 바랍니다.