네트워크/네트워크 보안

SYN Flooding

비니화이팅 2018. 1. 26. 12:16

* SYN Flooding

-> 원리

- 3way handshake취약점을 이용하여 Backlog Queue가 초과하도록 만드는 공격이다.

1. Attacker가 SYN 패킷을 보낸 후 SYN+ACK 패킷이 돌아와도 ACK 패킷을 보내지 않아 Victim이 SYN Received 상태로 ACK 패킷을 계속 기다리는 상태로 만든다. (Backlog에 빠지도록 만든다.)

2. 이런식으로 계속 SYN 패킷을 보내어 Victim의 Backlog Queue를 초과하도록 만든다.


-> 대응책

1. Backlog Queue크기를 늘려준다.

2. System 보안 패치를 한다.

3. SYN Cookie를 이용한다.

4. IDS, IPS에서 정형화된 SYN Flooding 패킷을 탐지한다.


-> SYN Cookie

- 클라이언트로 부터 SYN 패킷을 받으면 인증 정보가 담긴 SYN Cookie를 시퀀스 넘버값에 넣고 세션을 닫아버리고, 클라이언트가 SYN Cookie가 포함된 값으로 ACK을 보내면 세션을 열고 통신을 한다.



[실습]

- 실습을 위해 다음과 같은 토폴로지를 구성한다.


- R3에서 텔넷 서비스를 설정해준다.


- 텔넷 서비스에 접속해보면 잘 되는 것을 확인할 수 있다.


- 다음과 같이 htpin3의 옵션을 확인한다.


- R2와 R3구간에서 Packet Capture을 Start해놓는다.


- Syn Flooding 공격을 진행한다.


- 패킷을 확인해본다.

- 다음과 같이 SYN, ACK패킷이 돌아오는 것을 봐서 아직 Backlog Queue가 가득차지 않은 상태를 확인할 수 있다.


- 어느 시점 부터 Backlog Queue가 가득차서 SYN, ACK패킷이 돌아오지 않는다.


- 이 상태에서 Telnet 서비스에 접속을 시도하면 접속이 되지 않는다.