DDoS Attack

[복습]

Destination IP를 속이는 것을 DNS Spoofing
Destination MAC Address가 진짜 주소가 아니라 가짜 주소로 들어오는 것을 ARP Spoofing
Destination IP를 속이기 위해 DNS 캐시나 hosts.txt를 이용해야 함. 그런데 hosts.txt를 컨트롤하는 것은 공격자가 타깃과 같은 망에 들어와 있어야 함. 어려움
Destination MAC Address를 속이기 위해 ARP 캐시 조작을 할 수 있음

 

DDoS

Distributed Deny of Service의 약자로 DDos는 과도한 트래픽을 공격대상에게 전송하여 서비스를 불가하게 하는 공격 기법입니다. 과도한 트래픽 또는 부하를 발생시켜 정상적인 통신이 불가능하게 만드는 통신 유형입니다. 공격자가 서버를 공격해서 서비스를 제공하지 못하도록 하는 공격인데, 클라이언트 또한 서비스를 못 받아서 피해를 볼 수 있습니다.

 

통신 기본 3요소

망을 구성하는 요소로 전송매체(회선), 정보원(송수신자), 프로토콜이 있습니다. 

 

1 전송매체(회선)

  • End-to-End 연결통로
  • 각 전송 매체 별로 수용 가능한 대역폭을 보유

 

2 정보원(송수신자)

  • End-to-End
  • End-to-End 연결 중계장비
  • 각각 처리할 수 있는 최대 선능 존재
  • 최대 성능은 CPU/메모리 등 장착되는 부품에 따라 달라짐

 

3 프로토콜

  • 통신규약
  • 정상적인 통신을 위해 미리 정의된 규약에 맞 춰 데이터 송수신

 

DDos 공격 원리

전송 매체별 자신이 수용 가능한 대역폭 이상의 트래픽이 전송될 경우, 전송된 트래픽을 수용하지 못하여 정상적인 통신이 불가능해집니다.

 

회선은 1계층 취약점을 이용한 공격입니다. 서버를 공격, 리소스 공격, 프로토콜 공격이 가능합니다.

위의 그림을 보면 회선은 1G를 받을 수 있는데 공격자는 1.5G를 보내고 있습니다. 회선을 공격한다는 것은 서버로 가는 길을 공격하여 방목현상을 만드는 것입니다.

 

각 정보원이 처리가능한 성능 이상의 요청이 발생할 경우, 이를 처리하지 못하여 정상적인 통신이 불가능해집니다.

 

리소스는 7계층(애플리케이션) 취약점을 이용한 공격입니다. RAM이나 CPU가 1초에 처리할 수 있는 용량이 100만 개인데, 공격자가 1초에 500만 개를 요청하게 되면 리소스 오버헤드가 발생합니다.

 

TCP나 UDP 같은 프로토콜을 공격하는 것입니다. 프로토콜은 3,4계층 취약점을 이용한 공격입니다. 프로토콜의 허점을 이용하여 운영체제 또는 설치된 애플리케이션이 비정상적 상태에 빠지게 합니다.

 

DDos 공격 목적

특정 시스템의 취약점을 이용하여 시스템에 침투하거나 파일을 유출 또는 변조하는 행위입니다.

예를 들어,

1) '너네 사이트 파괴할거야 돈 내놔'

2) 대표가 꼴보기 싫어서 그 회사 서버 다운 시키기 등이 있습니다.

3) a학원 b학원이 있는데 두 회사가 수업 접수를 같은 날 받는다. 그럼 한쪽 경쟁사의 접수를 막기 위해 a사이트 다운시키기
4) 사회불만이 잇는 사람들이 사회성이 반영이 되는 것을 목적으로 공공기관 서버를 다운시키는 것

등이 있습니다. 

 

DoS / DDos

DoS는 Denial of Service의 약자로, 서비스 거부 공격을 의미합니다. 특정 공격 pc 또는 서버 1대에서 공격 대상 서버 1대로 과도한 트래픽을 보내는 공격입니다. 

 

[차이점]

Dos -> 1:1 공격, 공격자 1, 타깃 1
DDoS -> n:1 공격, 공격자 n, 타깃 1

 

DDoS는 Distributed Denial of Service의 약자로, 분산 서비스 거부 공격을 의미합니다. 서버와 차단 장비의 성능이 높아짐에 따라 DoS와 같은 1:1 공격은 더 큰 효과를 낼 수 없게 되었습니다. 그래서 공격 성능을 증대시키기 위해 만들어졌습니다. n:1 공격을 실행하여 다수의 컴퓨터가 1대의 서버를 공격합니다. 

 

DDos 대역폭 공격

대용량의 트래픽 전송으로 인한 네트워크 회선 대역폭 고갈을 목적으로 합니다. 이때 사용하는 주요 프로토콜은 UDP나 ICMP를 사용합니다. 큰 크기의 패킷과 위조된 IP를 사용합니다. 

 

 

실습은 단편화 공격과 SYN Flooding 공격 두 가지를 해볼 예정.

SYN Flooding Attack

SYN Flooding 공격은 10초 내에 패킷 50여만 개의 SYN 전송하여 Web Server의 HTTP 서비스를 지연 또는 정지시킵니다. 

 

(Kali 실습)

[명령어 입력]

# hping3 --rand-source 192.168.10.20 –p 80 –S --flood

 

이 공격은 SYN 패킷이 엄청 많이 나갔습니다. 보면 송신지 ip가 다 다릅니다. Port Scan과 이 공격의 차이 Port Scan은 포트 번호가 계속 바뀝니다. 1번? 2번? 이렇게 물어보는 것이고, 이 공격은 같은 포트를 다른 IP로 물어봅니다.

 

공격인지 아닌지 확인하려면 평소 우리 사이트 접속자가 얼마나 되는지를 알아야 합니다. 정말 여러 사용자가 접속하는 것일 수도 있고, 공격자가 보내는 것일 수도 있습니다. 


SYN Flooding 공격은 10초 내에 패킷 50여만 개의 SYN을 전송합니다. 공격자가 IP를 속여가며 공격합니다. SYN을 보내면 서버에서는 SYN/ACK를 보내는데 공격자의 IP는 실제 존재하지 않는 IP입니다. 이것들은 가짜 IP이기 때문에 ACK가 오지 않습니다. 서버들은 50만 개의 애들이랑 세션을 유지시켜 놓고 ACK가 오기만을 기다리는데, 그래서 오버헤드가 발생해서 서버가 다운되게 됩니다. 이 공격은 수신지 주소를 계속 바꿔서 대답을 할 수 없게 하는 것이 특징입니다. 

 

Fragmentation Flooding Attack(단편화 공격)

네트워크 기기가 전송할 수 있는 최대전송단위 MTU이상의 크기의 패킷을 전송 시, 패킷이 분할되는 단편화의 특징을 이용한 공격 유형입니다.

 

(Kali 실습)

[명령어 입력]

# hping3 --icmp --rand-source 192.168.10.20 –d 2000 --flood

 

단시간에 ping을 많이 보내는 공격으로, 대용량 패킷을 보내서 단편화를 해서 보내면 서버는 재조립하다가 너무 많아서 서버가 다운되는 현상입니다. 이때 많은 용량의 데이터를 보내는 것입니다. 

 

ping 받고 재조립하고, 핑받고 재조립하고 반복되다가 과부하가 됩니다. 즉, 단편화 공격이 들어옴을 알 수 있습니다.

byte 부분에는 공격의 시그니처를 볼 수 있는데, 이 시그니처를 보고 판단하는 경우도 있습니다.(58 58 58 58 58...)

[마무리]

시스템 공격은 권한탈취와 원하는 파일을 갈취/유출이 목적(정보유출)이지만, 네트워크 공격은 파기 목적으로 공격합니다.