가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있습니다.
안녕하세요 Retain0입니다.이번 시간에 배워볼 것은 DOS 공격들이 무엇인지 그리고 우리에게 어떤 영향을 미치게 하는지 배워보도록 하겠습니다.
DOS란?
- Denial of Service의 줄임말로 시스템의 과부하나 오류를 일으켜서 모든 또는 일부의 서비스들을 무기적으로 중단시킬 수 있는 공격 유형을 말합니다.
오늘 실습해볼 DOS Attack의 종류는
① UDP Flood② SYN Flood
③ ACK Flood
④ FIN Flood
⑤ ICMP Flood
입니다. 여기서Flood란?
- 범람 또는 넘치다,로 해석되며 공격자는 대상자에게 작업 가능한 범위 이상으로 데이터를 보내 가용성(Availability) 을 침해해버리는 공격 방식
실습을 해보기 전에 알아두어야 할 것이 있습니다. 우리가 통신을 하기 위해 해당 서버와의 티키타카 하는 과정을 알아야 실습을 이해하기 좀 수월해집니다.
TCP 3 way handshake 이라고도하며 통신을 끊기 위한 과정은 4 way handshake 라고 생각하시면 됩니다.
우리는 네트워크라는 공간 안에서 통신 시 주로 TCP 통신을 많이 합니다.
이유는 TCP 신뢰성 기반 즉 연결 지향형 프로토콜이기 때문입니다. 반대로 UDP 프로토콜은 TCP에 비해 속도는 빠르지만 비 신뢰성 기반, 비 연결형 프로토콜이기에 송수신의 여부에 대한 책임을 지지 않습니다. 그렇기에 주로 영상, Voip 같은 빠른 속도를 요구하는 곳에 주로 사용됩니다.
(1) Client는 통신을 하기 위해 요청응답(SYN)을 보내면서 " 나 데이터 보내도 돼? "라는 식으로 Server에 요청을 합니다.
(2) Server는 SYN 을 잘 받았다는 정상 응답(ACK) 과 너도 나의 응답에 답하라(SYN) 신호를 보냄으로써 Server는 SYN-RCV(Received) 즉 상대방 응답을 기다리는 중이라는 상태로 변경해둡니다. " 응 보내봐 "
(3) Client는 SYN + ACK 을 받고 연결 확립이 되었다는 상태인 Established로 변경하고 요청 잘 받았다는 신호로 정상 응답(ACK) 을 다시 보내줌으로써 서로 간에 Established(연결 확립) 가 됨으로써 통신합니다.
TCP 기반 통신과정을 봤으니 이제 실습으로 들어가 볼까요?
① UDP Flood Attack
--udp | udp 사용 |
-p | 포트번호 |
--flood | flood 공격 수행 |
--rand-source | 출발지의 ip주소 랜덤으로 지정 |
hping3를 사용하여 공격 직후 사용자 pc의 트래픽 화면이다 사진 2를 보다시피 정상적인 트래픽을 보여주다가 급상승하는 것을 확인할 수가 있습니다.
UDP 포트 통해 임의의 출발지에서 192.168.0.112(대상 사용자)를 공격한 패킷을 확인할 수가 있다. UDP 응답으로 ICMP의 상태 메시지 중 하나인 "Destination Unreachable"를 보내고 있는 것을 확인할 수있습니다.
해당 linux web server의 경우 이 정도 패킷 용량으로는 수용할 수 있을 정도지만 공격전과 후의 웹서핑 속도는 차이가 나는 것을 확인할 수가 있습니다.
◆ 대응 방안
- 방화벽에서 ACL(Access Control List)를 통해 해당 프로토콜을 차단
② SYN Flood Attack
-p | 포트번호 |
-S | SYN 패킷 |
-i u(숫자) | 응답을 기다리는 시간 |
--flood | Flood공격 |
공격직후 사용자의 pc에서 네트워크 상태정보를 확인한 결과 무한대기중인것을 확인할수가있습니다.
또한 네트워크 사용기록을 보시면 트래픽이 상승세를 타고 있는것을 확인하실수가 있습니다.
사진 4를 보시면 SYN 패킷을 22번 포트로 다량 전송하는 것을 볼 수 있음, 즉 공격자는 SYN 신호를 사용자에게 전송하게 되면 -> 사용자는 ACK/SYN 신호를 공격자에게 전달하게 되는데 이때 공격자는 정상 응답 신호인 ACK 신호를 보내주지 않으면 공격 대상자는 기다릴 수밖에 없게됩니다.
※ hpin3 명령어 중 --rand-source를 사용 안 해 출발지 주소가 그대로 확인됨
◆ 대응 방안
- 방화벽을 통해 SYN 요청에 대한 임계치(Packet per second)를 설정
- 라우터에서 " watch mode "를 통해 일정 시간 동안 Established 되지 않으면 라우터에서 SYN 패킷을 차단하도록 설정
③ ACK Flood Attack
-p | 포트번호 |
-A | ACK 패킷 |
--flood | Flood 공격 |
--rand-source | 출발지의 ip주소 랜덤으로 지정 |
사진 2를 보시면 임의의 출발지 주소로부터 ACK 패킷을 22번 포트로 다량 전송을 하고 그에 따른 RST 패킷(연결 끊음) 을 통해 응답하고 있는 모습
◆ 대응 방안
- 방화벽의 Inbound , Outbound 모두 ACL(Access Control List)를 통해 해당 아이피 또는 프로토콜을 차단 시킬 수 있음 만일 출발지 주소가 랜덤으로 해서 오는 경우 ISP 업체와 협력해서 IP를 추적해야 함
- 각 트래픽별 임계치 설정을 통해 과도한 연결에 대해 차단
④ FIN Flood Attack
-p | 포트번호 |
-F | FIN 패킷 |
--flood | Flood공격 |
--rand-source | 출발지의 ip주소 랜덤으로 지정 |
사진 2 를 보다시피 임의의 출발지 주소로부터 FIN 패킷을 22번 포트로 다량 전송하여 그에 따른 ICMP 상태 메시지인 "Destination Unreachable"를 보내고 있는 것을 확인할수있습니다.
◆ 대응 방안
- 트래픽의 임계치를 설정하여 비정상적으로 많은 트래픽을 유발하는 출발지 ip에 대해 차단해야 함
⑤ ICMP Flood Attack
-p | 포트번호 |
-1 | ICMP 패킷 |
--flood | Flood 공격 |
--rand-source | 출발지의 ip주소 랜덤으로 지정 |
사진 2 를 보시면 공격 직후 사용자 pc에서 확인된 과도한 트래픽 발생된 것을 볼 수가 있다. 물론 다운이 될 정도로 이 정도 linux 서버가 그리 약하진 않지만 아무래도 속도가 저하가 되어 눈에 띌 정도로 느린 속도를 확인할수 있습니다.
사진 3 을 보다시피 임의의 출발지 주소에서 대량의 ICMP 프로토콜을 보내는 것을 확인할 수가 있다. ICMP Flood 경우 -> "Smurf Attack" 과 유사하다.
Smurf Attack 이란?
- Direct Broadcast를 악용한 것으로 공격자는 사용자의 ip 주소를 출발지로 바꿔서 Broadcast에 ICMP echo Request 메시지를 날리면 ICMP echo Reply는 사용자 ip로 향하는 과정을 반복하여 다운시키는 공격
◆ 대응 방안
- 방화벽의 Inbound , Outbound 모두 ACL(Access Control List)를 통해 ICMP를 차단, 출발지 주소가 랜덤으로 전송될 경우 ISP 업체와 협력해서 추적
이 밖에도
① Land Attack
- 출발지 주소 = 도착지 주소동일하게 만들어 보내는 공격
② Ping of Death
- Ipv4에서 패킷 최대의 크기는 65.535Byte이다.패킷 크기를 과도하게 늘려전송하게 되면 목적지에 도달하는 동안 분할(Fragment) 되어 전송되는데 분할(fragment) 된 수많은 패킷을 받은 서버는 전부 처리할 수가 없어 과부하가 걸리는 공격
③ Wordpress DOS
- 취약점 코드인 CVE-2018-6389이며,하나의 요청으로 브라우저를 통해 워드프레스 사이트에 접근 시 다량의 JS/CSS 파일을 여러 개 로드가 가능하다는 점을 악용한 것, 또한 Wordpress 내의 관리자 페이지와 wp-login.php 페이지에서도 인증 없이 동작하는 공격
④ Teardrop Attack
- 패킷을 정상적으로 보낼 때 IP 단편 화가 발생하고 수신자는 단편화된 데이터를 재조립을 통해 복구하는데 이때 정확한 재조립을 위해 -> 정확한 Offset 값을 더해야 한다. 하지만 공격자는 Offset 값을 임의로 조작하여 정상적으로 조립될 수 없도록 하여 시스템에 문제를 일으킬 수가 있는 공격
⑤ Inconsistent Fragmentation Attack
(1) Bonk
- 패킷이 단편화되어 전송될 때 전송되는 순서 번호(Sequence Number)를 모두 1번으로 조작하여 전송하는 공격
(2) Boink
- 기존의 Bonk 공격을 수정한 DOS Attack으로 위와 다르게 전송되는 순서 번호(Sequence Number)를 무작위로 바꿔서 보내는 공격
오늘은 Flood Attack에 대해 배워보았는데요. 최근에는 각 서버들이 수용하는 패킷 범람을 수용할 수 있는 성능이 되지만, 좀비 PC 들을 가지고 여러 대가 한 서버를 대상을 공격을 수행한다면 효과는 몇 배로 강력해지겠죠??.
오늘은 여기까지만 해보도록하겠습니다. 감사합니다.
'IT Security > HACKABLE' 카테고리의 다른 글
[Two Greedy] ARP Spoofing (0) | 2020.04.04 |
---|---|
[Two Greedy] ARP & DNS Spoofing (Ettercap) (0) | 2020.04.03 |
[Two Greedy] TCP 통신 간 DOS Attack (0) | 2020.04.02 |
[Two Greedy] HTTP Flood & CVE-2018-6389 (0) | 2020.04.01 |
[Two Greedy] HTTP Flood Attack (0) | 2020.03.31 |