본문 바로가기
IT KNOWLEDGE

[보안] DDOS란?

by BTC_양지원 2022. 8. 19.

이전 글

Log4j 보안 취약점에 대해 알아봅시다.[보기]


안녕하세요~~!

오늘은 DDOS라는 주제로 돌아온 Level-up 팀입니다

오늘 저는 출근길에 유 퀴즈를 보았어요. 화이트 해커 박찬암 님이 출연하셨더라고요!

 

IT가 발전함에 따라 보안의 중요성이 증가되고 있는데

가장 흔한 공격으로는 DDOS가 떠오르죠~!

 

DDOS란 무엇일까요?

DDoS (Distributed Denial of Service. 분산서비스거부공격)는 다수의 악의적인 사용자가 특정 사이트에 동시에 접속하여 과도한 트래픽을 일으켜 정상적인 서비스를 방해하는 크래킹(cracking)의 일종입니다. 갑자기 트래픽이 몰려 서버 부하가 발생하여 사이트를 마비시키는 사이버공격의 일종인데요.  DDos 공격 메커니즘은 아래와 같습니다.

출처 hostinggodo 블로그

 1. 먼저 다른사람의 컴퓨터시스템에 무단으로 침입하여 정보를 훔치거나 프로그램을 훼손하는 크래커(Cracker)가 다양한 방법으로 악성코드를 유포하여 사용자PC들을 감염시킵니다. 이렇게 감염된 PC들을 좀비PC라고 부르는데요.  보통 인터넷의 검증되지 않은 파일을 다운받거나 설치하는 방법으로 감염되며, 자신의 PC가 좀비피씨인지 모르는 경우가 많습니다. 감염된 PC는 이후 크래커의 명령에 따라 DDoS 공격을 실행하는 좀비PC가 됩니다.

2. 이후 크래커(Cracker)는 좀비PC들의 DDoS 공격을 제어하기 위한 c&c(Command&Control, 명령/제어)서버를 확보합니다. 

3. 크래커(Cracker)는 C&C서버를 통해 좀비PC들이 특정 시스템으로 동시 다발적인 DDoS 트래픽을 발생시키도록 명령합니다.

4. 대상 서버는 단시간에 시스템 과부화로 서비스가 마비됩니다. 

 

DoS 공격유형 1. 일반적인 DDoS 공격형태: SYN Flood


SYN Flood는 DDoS 공격 형태 중 가장 많이 사용되는 오래된 공격 형태 중 하나다. 이 형태는 정상적인 사용자가 서버를 사용할 수 없도록 서버의 리소스를 소비하기 위해, 공격자가 피해자 시스템에 TCP(SYN) 연결 요청을 연속해서 전송 할 때 발생한다. 공격방식은 서버가 SYN 연결 요청을 받으면, 클라이언트가 연결을 확인하기 위해 보내는 응답신호(ACK)를 기다리는 위해 통신을 열린 상태로 유지하지만, SYN Flood는 응답 신호를 보내지 않으므로 설정된 연결 시간이 초과될 때까지 서버의 리소스를 소비한다. 따라서 피해자 서버가 정상적인 사용자에 대한 연결이 불가능한 서비스 장애가 발생한다.

 

[대응방안]
-SYNFlood를 확인하려면 네트워크 로그를 조사하고 TCPSYNflag를 찾는다. 이를 위해 TCPdump 또는 Wireshark등의 패킷 분석 툴을 이용할 수 있다.
-TCPSYN패킷은 정상적인 것이며 악의적인 활동을 나타내는 것은 아니다. 그러나 짧은 기간동안 많은 수의 SYN패킷이 발생할 경우에는 DDoS공격으로 볼 수 있다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)가 서버에 전달되기 전에 공격을 완화할 수 있도록 네트워크 서비스 공급자에게 요청한다.
-SYN Flood 공격의 피해를 최소화하려면 방화벽 및 프록시 서버와 같은 모든 주변 장치에서 ‘TCP 연결 유지’ 및 ‘최대 연결’ 규칙을 정의한다.
-방화벽 장비의 ‘SYN쿠키’ 기능을 사용하여 SYNFlood의 영향을 완화 할 수 있다. SYN쿠키를 사용하면 트래픽이 서버에 전달되기 전에 방화벽이 클라이언트와 서버 간의 TCP 연결을 확인한다. 공격자가 연결에 대한 최종 승인을 보내지 않으면 방화벽은 연결을 끊는다.

DDoS 공격유형 2. 일반적인 DDoS 공격형태: UDP Flood


UDP Flood는 SYN Flood 와 매우 유사하다. 공격자가 봇넷을 사용하여 공격 대상 서버로 상당히 크고 많은 양의 트래픽을 전송한다. TCP Flood 와의 차이점은 상대적으로 훨씬 빠르며 서버 리소스를 소모하지 않고, 서버의 네트워크 환경에서 사용 가능한 모든 대역폭을 소비하여 정상적인 사용자에 대한 접근을 막는다는 점이다.

이 공격은 네트워크 포트 중 UDP 패킷(예: 50555 포트)을 수신하는 서버가 해당 포트를 오픈하고 수신 대기하는 응용 프로그램이 작동하기 때문이다. 만약 해당 포트에서 수신 대기중인 것이 없으면 ICMP Destination Unreachable 패킷을 사용하여 UDP 패킷을 보낸 요청자에게 회신한다. 공격하는 동안 크고 많은 수의 UDP 패킷이 전송되며 대부분의 서버에서 응답하기에 빠르게 모든 사용 가능한 공격 대상 대역폭을 잠식한다.


[대응방안]
-UDP Flood 를 확인하기 위해 네트워크 로그를 조사하고 많은 수의 원본 IP 주소에서 오는 불규칙한 네트워크 포트의 통신 요청을 통해 공격 UDP 패킷을 찾는다. 인터넷의 많은 정상적인 서비스가 UDP를 사용하며 일반적인 UDP포트는 53(DNS),88(Kerberos), 137/138/445(Windows)및 161(SNMP)이다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)가 서버에 전달되기 전에 공격을 완화할 수 있도록 네트워크 서비스 공급자에게 요청한다.
-UDP Flood 공격의 피해를 최소화하려면 방화벽과 같은 주변 네트워크 장치에 대한 보안 규칙을 정의하여 필요한 포트에서만 인바운드 트래픽을 허용한다.

 

DDoS 공격유형 3. 일반적인 DDoS 공격형태: ICMP Flood


ICMP Flood는 공격자가 봇넷을 사용하여 사용 가능한 모든 대역폭을 소비하고 정상적인 사용자의 접근을 막기 위해 많은 수의 ICMP 패킷을 공격 대상 서버로 전송하는 형태이다. 이 공격은 대량의 ICMP 트래픽을 공격 대상 네트워크의 사용 가능한 모든 대역폭을 잠식할 수 있는 충분한 ICMP 요청 및 응답 트래픽 발생이 가능해야 한다. 이 공격의 예로 ‘ping’ 명령으로 주로 네트워크 두 지점 간 연결을 테스트하는데 사용된다. 그러나 명령과 매개변수를 이용하여 ping의 크기와 요청 주기를 조정할 수 있어 처리 가능한 공격 대상 네트워크 대역폭을 모두 소진 시킬 수 있다.

 

[대응방안]
-ICMPFlood를 확인하기 위해 많은 사용자로부터 요청되는 인바운드 ICMP트래픽을 네트워크 로그에서 조사한다. 로그를 조사하는데 사용하는 도구에 따라 ICMP를 확인할 수 있다.(예:Wireshark) ICMP는 TCP및 UDP와 같은 네트워크 포트를 사용하지 않는다. 네트워크 프로토콜을 번호 값으로 표하는 도구를 사용하는 경우 ICMP프로토콜은 숫자 ‘1’로 구분한다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)가 서버에 전달되기 전에 공격을 완화할 수 있도록 네트워크 서비스 공급자에게 요청한다.
-ICMP Flood 공격의 피해를 최소화하려면 라우터와 같은 네트워크 경계 장치에 ICMP 트래픽의 임계치를 설정한다. 또한, 주변 라우터에서 ICMP 요청에 대한 초당 패킷 허용 임계 값을 설정한다. 인바운드 ICMP 트래픽 양이 임계 값을 초과하면 초과 트래픽은 일정 시간까지 무시된다. 초당 패킷 수 임계 값은 ICMP 트래픽으로 네트워크가 오버런 되는 것을 효과적으로 방지한다.

DDoS 공격유형 4. 일반적인 DDoS 공격형태: HTTP Flood

HTTP Flood는 공격자가 공격 대상 웹사이트에 대한 지속적인 많은 양의 HTTP GET 요청을 통해 웹서버의 리소스를 소진하게 하여 정상적인 사용자가 이용할 수 없도록 한다. 이 경우 공격자 요청에 대해 웹서버가 응답을 시도하지만 공격자는 응답을 처리하지 않고 대기 시킨다. 그 결과 웹서버는 응답 확인을 위하여 일정 시간동안 각 연결에 대한 고정된 리소스를 배정하여 연결 대기를 유지한다. 공격자는 웹서버에 많은 HTTP GET 요청을 하고 응답을 회신하지 않아 공격을 받은 웹서버는 모든 통신 리소스를 소모하여 정상 사용자의 웹사이트 서비스가 불가능하게 된다.


[대응방안]
-HTTPGETFlood를 확인하기 위해 대상 포트가 80이고 TCP프로토콜을 사용하는 대량의 요청을 네트워크 로그에서 조사한다. 로그를 조사하는데 사용하는 도구는 TCPdump 및 Wireshark를 추천한다.
-공격이 확인된 경우 DDoS 방어 서비스를 제공하는 전문업체를 이용한다.
-정상적인 웹서비스 요청수단이 이용되기 때문에 이 공격을 차단하기 위한 사전 예방대책을 세우기 어렵다. 공격의 출발지 IP 주소는 대규모 봇넷의 일부분이므로 모든 출발지 IP 주소를 차단하는 것은 효율적이지 않으며 정상 사용자가 포함될 수 있다.
-웹방화벽(WAF)을 사용하여 공격에 대한 피해를 최소화할 수 있다.

DDoS 공격유형 5. 반사 DDoS 공격형태: SYN+ACK 반사 공격


SYN+ACK Flood는 DRDoS의 형태를 지닌 공격방식으로서, 공격자가 피해자의 IP를 도용한 후 반사체로 악용될 서버에 SYN 패킷을 보내고 해당 응답인 SYN/ACK 패킷을 피해자에게 전송하게 하는 공격이다. 피해자는 SYN/ACK패킷을 대량으로 전송 받게 되면 해당 패킷을 처리하기 위해 리소스를 소모하게 되고, 그 과정에서 서버의 부하가 발생되어 정상 사용자들이 접속할 수 없게 된다. DRDoS의 형태를 보이기 때문에 반사체 서버들은 상대방(피해자)이 응답을 주지 않으면 패킷이 정상적으로 전달되지 못한 것으로 판단하여 재 전송하기 때문에 공격의 효과가 더 커지게 된다.


[대응방안]
-SYN/ACKFlood를 확인하려면 네트워크 로그를 조사하고 TCPACKflag를 찾는다. 이 과정에서 TCPdump 또는 Wireshark 등의 패킷 분석 툴을 이용할 수 있다.
-TCPSYN/ACK 패킷은 3wayhandshaking과정에서 수신 받는 패킷으로서 그 자체로선 정상 패킷이지만 짧은 시간 안에 급격하게 증가한다면 DDoS 공격으로 의심할 수 있다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)가 서버에 전달되기 전에 공격을 완화할 수 있도록 네트워크 서비스 공급자에게 요청한다.
-SYN/ACK Flood 공격의 피해를 최소화하려면 방화벽 및 프록시 서버와 같은 모든 주변 장치에서 목적지 IP 기반 SYN/ACK 패킷 임계치를 설정하여 차단한다.

DDoS 공격유형 6. 반사 DDoS 공격형태: NTP 반사 및 증폭 공격


NTP(Network Time Protocol) 반사 공격은 공격자가 정상적인 NTP 서버의 트래픽을 사용하여 공격하는 형태이다. NTP는 네트워크로 연결된 컴퓨터의 시간을 동기화하는데 사용되며 UDP 123 포트를 통해 실행된다. 공격자는 공격 대상의 IP 주소로 도용하고 NTP 서버가 많은 양의 응답 트래픽(고정된 패킷 크기)을 공격 대상 서버에게 보내도록 요청한다. NTP 서버의 응답이 공격자가 보낸 요청보다 크기가 큰 증폭기술이 활용되어 공격 효율성을 크게 높일 수 있다. 공격자는 다수의 인터넷에 공개된 NTP 서버에 monlist 요청을 하면 서버는 monlist 요청에 대한 응답을 일제히 공격 대상으로 전송하고 공격 대상은 네트워크 대역폭을 모두 소진하여 정상적인 사용자에 대한 서비스 장애가 발생한다.


[대응방안]
-NTP 반사 및 증폭 공격을 확인하기 위해 출발지 중 UDP123포트와 특정 패킷 크기를 가진 트래픽을 네트워크 로그에서 조사한다.
-공격이 확인된 경우 공격에 사용된 정보(IP주소, 패킷 크기 등)를 네트워크 서비스 공급자(ISP, IDC 등)에게 제공하여 필터링 조치를 요청한다.
-인바운드 공격에 대한 해결과 함께 NTP서버가 다른 사용자를 공격하는데 사용되지 않도록 다음과 같은 예방 조치를 취한다.
-NTP 서버를 2.4.7이상으로 업그레이드하여 monlist 명령을 완전히 제거하거나 OpenNTPD와 같이 monlist 명령을 활용하지 않는 NTP 버전을 이용한다.
-서버를 업그레이드 할 수 없는 경우 ntp.conf 파일에 ‘disablemonitor’을 추가하고 NTP프로세스를 재시작하여 monlist 쿼리 기능을 비활성화한다.
- NTP 서버에 대한 무단 트래픽을 제한하는 방화벽 규칙을 적용한다.

DDoS 공격유형 7. 반사 DDoS 공격형태: DNS 반사 및 증폭 공격


DNS(Domain Name System) 반사 공격은 공격자가 DNS 시스템을 악용하여 많은 양의 트래픽을 전송하는 형태의 공격이다. DNS 시스템은 일반 인터넷 사용자가 입력한 문자 기반의 도메인 주소를 IP 주소로 변환해 주는 역할을 한다. DNS 반사 공격은 공격자가 피해자의 IP 주소로 도용하여 DNS 조회 요청을 공용 DNS 서버에 보내는 절차를 이용한다. 공용 DNS 서버는 요청에 대한 응답을 피해자에게 보내며 이때 응답 크기는 공격자가 DNS 조회 요청에 지정한 옵션에 따라 달라진다. 최대 증폭을 얻기 위해, 공격자는 요청에 ‘ANY’라는 옵션을 사용할 수 있으며, 이것은 DNS 영역에 대한 모든 정보를 반환한다. 공격자가 피해자 IP 주소로 도용하여 다수의 공용 DNS 서버에 DNS 조회 요청을 전송하면 증폭된 응답은 공격 대상에게 전송되어 결국 사용 가능한 피해자 대역폭을 모두 소진하게 된다.


[대응방안]
-DNS 반사 및 증폭 공격을 확인하기 위해 DNS 쿼리 요청이 없는 인바운드 DNS 쿼리 응답을 네트워크 로그에서 조사한다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)에게 문의하여 공격 패킷이 서버에 전달되기 전에 필터링 될 수 있도록 요청한다.
-DNS 서비스에서는 DNS 개발사(BIND, Microsoft 등)에서 제공한 지침에 따라 DNS 재귀 기능을 사용하지 않도록 한다.
-공용 DNS서버가 공격에 악용될 수 있는지 확인 및 테스트 하는 사이트 등을 활용한다.


DDoS 공격유형 8. 반사 DDoS 공격형태: CLDAP 반사 및 증폭 공격


CLDAP(Connection-less Lightweight Directory Access Protocol) 반사 공격은 공격자가 공격대상 IP 주소로 도용하고 LDAP 서버로 CLDAP 요청을 보내는 형태의 공격이다. CLDAP은 공유 인터넷 디렉토리를 연결/검색/수정하는데사용되며 UDP 389 포트를 사용한다. 공격자가 도용된 IP 주소로 CLDAP 쿼리를 여러 LDAP 서버로 전송할 때 CLDAP 반사 공격이 발생하며, LDAP 서버는 요청에 대한 응답 데이터를 도용된 피해자 IP 주소로 보낸다. 피해자는 대량의 LDAP/CLDAP 데이터를 동시에 처리 할 수 없기 때문에 정상적인 서비스가 불가능하다. UDP LDAP 프로토콜은 52배에서 70배까지 증폭이 가능한 증폭기술을 사용하여 공격 효율성을 높인다.


[대응방안]
-출발지에서 UDP 389 포트를 사용하는 요청을 네트워크 로그에서 조사한다.
-공격이 확인된 경우 네트워크 서비스 공급자(ISP, IDC 등)에게 문의하여 공격 패킷이 서버에 전달되기 전에 필터링 될 수 있도록 요청한다.
-LDAP 서버를 운영하는 경우 방화벽 규칙을 설정해 공격에 악용되지 않도록 예방 조치한다.

이렇듯 다양한 DDoS 공격이 시도되고 발생할 때는 신속한 대응을 통해 피해를 최소화하는 것이 무엇보다 중요하다. KISA는 DDoS 공격 피해 최소화를 위해 아래와 같이 14가지의 대응전략을 제시했다.


DDoS 공격 피해 최소화 위한 대응전략 14가지


1. 네트워크 서비스 제공 업체에서 제공하는 DDoS 방어 서비스를 알고 있어야 한다. DDoS 공격의 경우, 네트워크 서비스 제공 업체에서 조치하는 것이 대응이 빠르다.
2. DDoS 공격에 대한 방어서비스를 계약하는 것을 고려한다.
3. DDoS 공격이 발생하면 네트워크 서비스 제공 업체에 공격 IP 주소를 제공한다.
4. 허용된 트래픽과 거부된 트래픽에 대한 방화벽 로그를 확인하여 DDoS 공격 발생 위치를 확인한다.
5. 방화벽 및 프록시 서버와 같은 주변 장치에서 'TCP keepalive 및 '최대 연결'을 설정하여 SYN Flood 공격을 예방한다.
6. 네트워크 서비스 제공 업체에서 포트 및 패킷 크기 필터링이 가능한지 확인하여 설정한다.
7. 공개 웹사이트의 기본 트래픽 패턴(볼륨 및 유형)을 파악하고, 이상 패턴이 발생하는지 정기적으로 확인한다.
8. 네트워크/보안 장비의 패치는 적절한 테스트 및 검증을 거친 후 적용한다.
9. 예약된 IP 주소(0/8), 루프백(127/8), 사설(RFC 1918 블록 10/8, 172.16/12 및 192.168/16), 할당되지 않은 DHCP 클라이언트(169.254.0/16), 멀티캐스트(224.0.0/4) 및 RFC 5735 에 나열된 다른 주소에서 출발되는 인바운드 트래픽을 차단하도록 방화벽을 구성한다. 이 구성은 네트워크 서비스 제공 업체에도 요청되어야 한다.
10. 비즈니스 목적에 필요한 프로세스와 네트워크 대역폭을 파악하고, 서버에 설정을 반영한다.
11. 비즈니스 목적과 보안 정책을 고려하여 방화벽 설정을 한다.
12. 이상 징후 발생 시 즉시 인지할 수 있도록 방화벽 및 침입 탐지 서비스를 구성한다.
13. DDoS 공격으로 네트워크 서비스 장애가 발생할 것을 대비하여, 대체 연결 수단을 준비한다.
14. 중소기업 대상으로 DDoS 공격 대응 서비스를 무료로 제공하고 있는 [DDoS 사이버대피소] 이용을 고려한다.

DDoS 공격에 관련된 OSI 모델의 네트워크 연결 레이어 7개

레이어 7 – 애플리케이션
애플리케이션 레이어가 맨 위에 있고 최종 사용자와 가장 가깝습니다. 사람들이 컴퓨터 및 디바이스와 상호 작용하고 네트워크가 애플리케이션과 연결되는 곳입니다.
레이어 6 – 프레젠테이션
프레젠테이션 레이어에서 데이터 암호화 및 복호화가 이루어지고 보안 전송을 가능하게 합니다.
레이어 5 - 세션
세션 레이어는 디바이스, 컴퓨터, 서버가 통신할 수 있도록 하고 포트와 세션을 제어합니다.
레이어 4 – 전송
전송 레이어에서 데이터는 TCP/IP라고도 하는 IP(인터넷 프로토콜)을 기반으로 구축된 TCP(Transmission Control Protocol)를 통해 전달됩니다.
레이어 3 - 네트워크
네트워크 레이어는 목적지에 도달하기 위해 데이터가 사용할 물리적 경로를 결정합니다.
레이어 2 – 데이터 링크
데이터 링크 계층은 네트워크 개체 간에 데이터를 전송하는 방법을 제공합니다. 또한 물리적 레이어에서 발생할 수 있는 오류를 탐지하고 수정합니다.
레이어 1 – 물리적
첫 번째 계층인 동시에 가장 낮은 레이어인 레이어 1은 네트워크 노드를 연결하는 물리적 데이터 링크를 통해 로우(raw) 비트가 전송되는 물리적 계층입니다.

댓글