1. SLP (Service Location Protocol) [1][2]

- 클라이언트가 사전 구성 없이 LAN에서 사용 가능한 서비스를 동적으로 검색 및 통신할 수 있도록 하는 서비스 검색 프로토콜

- 대부분 UDP를 사용하나, 긴 패킷을 전송할 경우 TCP 또한 사용가능하며, UDP와 TCP 모두 427 포트를 사용

- RFC2165에 따르면 해당 프로토콜은 LAN, 엔터프라이즈 네트워크 등 제한된 네트워크에 서비스를 제공하기 위한 것

 

1.1 DRDoS (Distributed Reflective Denial of Service)

- 기존의 DDoS 공격보다 한층 진화된 기법: 근원지 은닉, 향상된 공격 규모 및 피해

- 스푸핑한 IP를 이용하여 정상 서비스를 제공하는 서버들에 요청을 보낸 후 응답을 공격 대상이 받게 하는 것

> 해당 과정을 반복하여 대량의 트래픽을 유발하여, 서비스 거부 상태 등의 장애를 유발

> 정상 서비스를 제공하는 서버를 반사체라고 함

※ 응답과 관련한 추가 정보들이 덧붙여져 패킷의 크기가 증폭되는 것으로 판단됨

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2023-29552 [3]

 

- SLP 서버에 임의의 서비스를 등록한 후 스푸핑된 IP로 요청을 전송공격 대상이 서비스 거부 상태에 빠지게 되는 취약점

> SLP는 제한적인 네트워크를 대상으로 서비스를 제공하기 위해 사용

> 불필요하게 인터넷과 연결된 SLP 서버가 약 54,000개 이상 확인됨 [4]

 

[사진 2] 취약한 SLP 인스턴스

 

- 공격 과정은 다음과 같음

① UDP/427 Port로 서비스하는 SLP 서버 탐색

② SLP 서버에 임의의 서비스 등록

③ IP를 스푸핑하여 ②에서 등록한 서비스 요청

④ ③단계를 반복적으로 수행해 대량의 트래픽 유발

 

- 일반적인 SLP 서버의 응답 크기는 48 ~ 350 Byte

> 요청 크기를 29 Byte로 가정했을 때 약 1.6 ~ 12배 정도 응답이 증폭

 

[사진 3] 서비스 요청 패킷 크기(위) 및 서비스 응답 패킷 크기(아래) 비교 [4]

 

- 서비스 등록과 Reflective를 결합하면 트래픽의 양을 크게 증가시킬 수 있음

> 공격자는 조작된 요청을 통해 최대 2200배 이상의 증폭을 생성할 수 있음

 

[사진 4] 취약점을 악용한 공격 패킷 캡처 [4]

 

3. 대응방안

① SLP 비활성화

② SLP 서버에 대한 접근 통제 및 모니터링 강화

 

4. 참고

[1] https://en.wikipedia.org/wiki/Service_Location_Protocol
[2] https://www.rfc-editor.org/rfc/rfc2165.html
[3] https://nvd.nist.gov/vuln/detail/CVE-2023-29552
[4] https://www.bitsight.com/blog/new-high-severity-vulnerability-cve-2023-29552-discovered-service-location-protocol-slp
[5] https://securityaffairs.com/145295/hacking/slp-flaw-ddos-attacks.html
[6] https://thehackernews.com/2023/11/cisa-alerts-high-severity-slp.html?m=1
[7] https://www.cisa.gov/news-events/alerts/2023/04/25/abuse-service-location-protocol-may-lead-dos-attacks
[8] https://www.boannews.com/media/view.asp?idx=117519&page=1&kind=1

'취약점 > Denial of Service' 카테고리의 다른 글

Loop DoS (CVE-2024-2169)  (0) 2024.03.23
KeyTrap 취약점(CVE-2023-50387)  (0) 2024.02.28
HTTP/2 Rapid Reset DDoS (CVE-2023-44487)  (0) 2023.10.13
2009.07.07 DDoS  (0) 2023.07.06
Anonymous Sudan DDoS  (0) 2023.06.23

1. 대역폭 공격_DRDoS

DNS Reflection Attack
요약 - 공격자는 다량의 DNS 패킷을 서버로 전송하여 정상적인 서비스가 불가능하도록 하는 공격
설명 - 피해자의 IP로 스푸핑하여 네임서버에 비정상 DNS 질의를 요청하고, 요청을 받은 네임서버는 DNS 응답 값을 위장한 IP로 전송하여 공격 대상의 회선 대역폭을 고갈시키는 공격 (DNS Port: 53_UDP/TCP)

- 공격 트래픽 양을 높이기 위하여 단순 DNS Query가 아닌 Zone의 모든 정보를 요청하는 “ANY” 또는 "TXT" 레코드 등를 요청하는 특징

 

NTP Reflection Attack
요약 - NTP 서버에게 비정상적인 요청패킷을 보내서 되돌아오는 응답 값을 공격 payload로 활용하는 공격 유형
설명 - 시간동기화를 위해 사용되는 NTP(Network Time Protocol) 서버를 반사서버로 악용한 공격 (NTP Port: 123_UDP)

- 피해자의 IP로 스푸핑 한 다음 확보한 서버들을 대상으로 가능한 많은 응답패킷을 만들어 내기 위해 monlist를 요청하는 명령을 전송

- monlist: 구버전의 NTP서버에서 사용하는 명령어로, 최근 접속한 최대 600개의 접속 호스트에 대한 정보를 응답 받을 수 있는 명령어 (v2.4.7 이상에서는 해당 명령어가 삭제됨)

 

CLDAP Reflection Attack
요약 - CLDAP 서버에게 비정상적인 Query를 보낸 후 되돌아오는 응답 값을 공격 패킷으로 활용하는 공격 유형
설명 - CLDAP(Connection-less Lightweight Directory Access Protocol)이란 네트워크상에서 디렉토리를 연결/검색/수정하기 위해 사용되는 프로토콜 (CLDAP Port: 389_UDP)

- CLDAP 서버를 반사서버로 악용한 공격

- CLDAP 서버가 갖고 있는 모든 Entry 및 Attribute 값을 요청하며, 서버가 갖고 있는 Node 정보가 많을수록 응답 패킷의 규모가 커짐 (증폭률 56~70배)

 

SSDP Reflection Attack
요약 - SSDP 기능을 악용하여 가능한 한 많은 데이터를요청하는 Search 명령을 보내 정상적인 서비스가 불가능하도록 하는 공격 
설명 - IoT 기기들에 널리 사용되는 SSDP(Simple Service Discovery Protocol)는 UPnP 장치를 탐색할 때 주로 사용되는 프로토콜로 네트워크상의 다른 장치를 찾거나 알리는 역할을 수행 (SSDP Port: 1900_UDP)

- 더 많은 응답 패킷을 만들어 내기 위해 ssdp:all 혹은 ssdp:rootdevice 값이 포함된 Search 명령을 요청

- IoT 기기들은 요청 받은 Search 패킷의 크기와 비교하여 훨씬 더 많은 크기의 응답 패킷을 피해자의 시스템으로 전달 (증폭률 최대 30배)

 

Memcached Reflection Attack
요약 - Memcached 서버의 기능을 악용하여 저장된 캐싱 데이터를 가능한 한 많이 요청하는 request 명령을 요청하여 정상적인 서비스가 불가능하도록 하는 공격
설명 - Memcached 서비스는 내부에서 DB부하감소 및 응답속도 증가를 위해 분산된 메모리에 데이터를 캐싱하는 서비스로 내부에서만 접근하여 사용하도록 설계되었으며, “Key”값으로 “Data”를 매핑하는 구조 (Memcached Port: 11211_UDP)

- Memcached 서버들에게 사전에 확보한 Key값에 대한 Data를 요청 (증폭률 최대 51,000배)

 

WS-Discovery Reflection Attack
요약 - 윈도우 기반 기기들에게 요청을 할 때 고의적으로 XML오류 응답 메시지를 반복적으로 유발시키는 명령을 요청하여 정상적인 서비스가 불가능하도록 하는 공격
설명 - WS-Discovery 서비스는 윈도우 기반 기계들이 네트워크 프린터 등을 자동으로 찾아서 연결 설정을 완료하는데 사용되는 서비스 (WS-Discovery Port: 3702_UDP)

- 원래는 내부 네트워크망에서만 사용되지만 인터넷망에 노출될 경우에는 디도스 공격으로 악용

- WSD 사용 기기들에게 XML오류 응답 메시지를 반복적으로 유발시키는 명령을 대량 요청 (증폭률 최대 500배)

 

ARMS Reflection Attack
요약 - 취약한 Apple Mac 컴퓨터를 대상으로 원격접속 요청하여 정상적인 서비스가 불가능하도록 하는 공격
설명 - ARMS는 Apple社 기기(mac OS)들의 원격 제어 기능을 활성화 할 때 사용되는 데스크탑 원격 제어 프로토콜로 (ARMS Port: 3283_UDP/TCP)

- 확보된 기기들에게 대량의 request 패킷 요청 (증폭률 최대 35.5배)

 

CoAP Reflection Attack
요약 - 외부 노출된 IoT 기기 및 모바일 장치들을 대상으로 변조된 GET Request를 전송하여 정상적인 서비스가 불가능하도록 하는 공격
설명 - CoAP(Constrained Application Protocol)이란 IoT 기기들을 위해 사용되는 프로토콜의 일종으로서, 주로 저전력 컴퓨터들을 위해 만들어진 간단한 프로토콜 (CoAP Port: 5683_UDP)

- 확보한 기기에 CoAP GET Request를 전달 (증폭률 최대 50배)

.

Jenkins Reflection Attack
요약 - 자동 검색 프로토콜이 활성화된 상태에서 검색 요청 Packet을 받으면 요청 값에 관계없이 Jenkins 메타 데이터의 XML 결과값을 응답하는 취약점을 악용한 공격
설명 - Jenkins란 소프트웨어 개발 시 지속적으로 통합 서비스를 제공해주는 툴

- 다수의 개발자들이 하나의 프로그램을 개발할 때 발생할 수 있는 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 업로드 함으로써 지속적 통합을 지원 (Jenkins Port: 33848_UDP)

- Jenkins가 DDoS로 악용 될 수 있는 원인은 취약버전에서 Jenkins 검색을 위해 사용되는 UDP 프로토콜의 요청을 검증없이 응답하기 때문

- 확보한 Jenkins 서버들에게 자동검색 Packet을 요청 (증폭률 최대 100배)

 

SNMP Reflection Attack
요약 - SNMP(Simple Network Management Protocol) 장치들을 반사 기기로 악용한 공격
설명 - SNMP(Simple Network Management Protocol)이란 시스템이나 네트워크 관리자로 하여금 원격으로 네트워크 장비를 모니터링하고 환경설정 등의 운영을 할 수 있도록 하는 네트워크 관리 프로토콜 (SNMP Port: 161,162_UDP)

 

Chargen Reflection Attack
요약 - Chargen 프로토콜을 악용한 공격
설명 - Chargen 프로토콜은 네트워크를 통해 문자열을 생성하고 보내는 프로토콜로서, 반사공격에선 생성된 문자열을 payload로 활용함 (Chargen Port: 19_UDP)

 

SunRPC Reflection Attack
요약 - RPC(Remote Procedure Call) 프로토콜을 악용한 공격
설명 - RPC(Remote Procedure Call) 프로토콜은 원격으로 함수를 호출하여 사용할 수 있게 하는 프로토콜로 RPC mapper라는 서비스를 통해 이뤄짐 (RPC: 111_UDP)

- RPC mapper를 악용하여 RPC mapper response 패킷을 피해시스템에게 보내 대역폭을 고갈 시킴

 

SYN/ACK Reflection Attack
요약 - 대규모의 SYN/ACK 패킷을 피해대상에게 보내서 서버의 리소스를 소모시키는 공격 방식
설명 - 피해자의 IP로 스푸핑 한 후 반사서버를 향해 대규모의 SYN 패킷을 보내면 SYN 패킷에대한 응답으로 SYN/ACK 패킷이 피해서버로 반사되어 전달되는 방식

 

[사진 1] 유형별 반사공격 증폭률

- 각 공격방식의 특징에따라 대응 방법이 다르다.

- 일반적으로 대응하는 방식은 다음과 같다.

 

① DDoS 대응 서비스 가입

- 한국인터넷 진흥원에서 제공하는 사이버 대피소 혹은 클린존 서비스 이용

 

② 백업 서버 구축

- 디도스 공격에따른 서비스 장애를 최소화하기 위해 백업 서버 구축

 

③ 공격 대상 노출 최소화

- 공격에 이용 및 대상이 되지않도록 주기적인 점검

 

④ 서비스 점검

- 불필요한 포트 혹은 서비스를 사용중인지 점검

 

⑤ 모니터링

- 평시 발생하는 트래픽을 인지하고, 이상 트래픽의 발생 유무 모니터링

 

- KISA DDoS 공격 대응 가이드 참고

 

KISA 인터넷 보호나라&KrCERT

KISA 인터넷 보호나라&KrCERT

www.boho.or.kr

1. DoS (Denial Of Service) 유형

공격명 설명
TCP SYN Flooding - 3-Way HandShaking의 Half-Open 연결이 가능한 것을 이용한 취약점
- 공격자는 대상 시스템에 출발지 IP를 위조해 무수한 SYN 패킷 전송
- 대상 시스템은 위조된 IP에 SYN/ACK 패킷을 전송하며, ACK 응답을 기다림
- 출발지 IP는 위조되어 정상적인 ACK 응답을 수신하지 못함
- 대상시스템은 ACK 응답을 기다리므로, 정상 서비스 제공이 불가해짐
SMURF Attack - 출발지 IP를 대상 시스템으로 위조 및 ICMP 패킷을 직접 브로드 캐스팅 주소(X.X.X.255)로 전송
- 해당 패킷을 수신한 시스템은 대상 시스템으로 ICMP 패킷 응답 
- 대상시스템은 ICMP 응답을 과다하게 수신하여, 정상 서비스 제공이 불가해짐
Land Attack - 출발지 IP와 목적지 IP를 동일하게 설정하여 전송
- 해당 요청을 처리하는 과정에서 부하 발생
Ping of Death - ping에 사용되는 ICMP 패킷의 크기를 정상 크기보다 크게 설정하여 전송하며, 해당 패킷은 네트워크를 거치면서(라우팅 되면서) 작은 조각으로 쪼개지면서 전송됨.
- 피해 시스템에서는 수신한 패킷을 재조립하는 과정에서 부하가 발생.
Tear Drop Attack - 패킷은 네트워크를 통해 전송되면서 단편화를 통해 분할되고, 수신지에서 재조립
- 패킷이 단편회 될 때 오프셋 값을 중복되도록 설정하는 등의 방식을 통해 수신지에서 재조립시 부하 유발
Bonk - 모든 패킷의 순서번호를 1로 설정하여 전송
Boink - 첫번째 패킷의 순서번호를 1, 두번째 패킷의 순서번호를 201, 세번째 패킷의 순서번호 1011 등 순서번호를 랜덤하게 전송

2. DDoS (Distributed Denial of Service) 유형

구분 공격명 설명
전통적인 공격 Trinoo - 많은 호스트로부터 UDP Flooding을 유발
TFN(Tribed Flood Network) - Trinoo의 발전된 형태
- UDP Flooding, ICMP Flooding, TCP SYN Flooding 가능
Stacheldraht - Trinoo + TFN (두 공격이 제공하는 기능 모두 가짐)
- 마스터와 에이전트 간 통신에 암호화 기능을 사용
TFN2K - TFN의 발전된 형태
- 통신에 특정 포트를 사용하지 않고, 암호화 통신
대역폭 공격 - UDP Flooding
- UDP 프로토콜 반사 공격
- ICMP Flooding
- 대량의 트래픽을 피해 시스템에 전송 하여 대역폭을 고갈 시킴
자원 소진 공격 - TCP SYN, ACK Flooding
- Smurf Attack
- 대량의 트래픽을 피해 시스템에 전송 하여 피해 시스템의 서비스 자원을 고갈 시킴
웹/DB 부하 공격 - GET Flooding
- Slowloris Attack
- RUDY Attack
- Slow read Attack
- 정상적인 세션을 맺은 후 과도한 요청을 보내어 서버에 부하를 유발 시킴

3. DRDoS (Distributed Reflection Denial of Service) 유형

공격명 설명
DNS Reflection Attack - 출발지 IP를 대상 시스템으로 위장하여, 다수의 DNS 서버에 ANY, TXT 레코드 요청.
- ANY 레코드 : 도메인에 대한 모든 레코드 질의 시 사용.
- TXT 레코드 : 도메인과 관련해 저장해야 할 임의의 문자를 나타냄.
- 두 레코드 모두 요청에 비해 응답이 크기 때문에 공격에 주로 사용됨.
NTP Reflection Attack - 출발지 IP를 대상 시스템으로 위장하여, 다수의 NTP 서버에 monlist 요청.
- monlist : 최근에 접속한 최대 600개의 호스트 정보를 요청

 

* 해당 방식 외에도 다양한 방식이 존재하며, 구분한 기준 역시 상대적인 것임.

1. DoS (Denial of Service)

- 정당한 사용자가 서비스를 사용하는 것을 방해하는 행위.

- 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 단일 공격자가 단일 시스템을 대상으로 공격 진행.

 

2. DDoS (Distributed Denial of Service)

- DoS와 마찬가지로 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 취약한 서버에 악성코드를 배포해 좀비 PC로 이루어진 봇넷을 형성한 후 공격.

- 다수의 분산 좀비 PC를 이용해 단일 시스템에 공격 진행.

[캡쳐 1] DDoS 공격 (https://jwprogramming.tistory.com/181)

구성 요소 설명
공격자, 봇 마스터 - 공격을 주도하는 공격자의 PC
- C&C 서버에 명령을 전달하는 역할
마스터, C&C 서버 - 공격자로부터 명령을 전달받음
- 다수의 에이전트 관리
핸들러 프로그램 - 마스터 시스템의 역할을 수행하는 프로그램
에이전트 - 악성코드에 감염된 시스템으로, 대상 시스템에 직접적인 공격 수행
- 봇, 좀비PC 등으로도 불리며, 이들이 형성한 네트워크를 봇넷이라 함
데몬 프로그램 - 에이전트 시스템 역할을 수행
표적 - 공격의 대상이되는 피해 시스템

3. DRDoS (Distributed Reflection Denial of Service)

- 대상 시스템의 처리 범위를 초과하는 과도한 트래픽을 전송해 부하를 유발하여 정상 서비스를 제공하지 못하도록 함.

- 악성코드를 배보하고 봇넷을 형성하는 등의 과정없이 프로토콜의 구조적 취약점을 이용한 공격.

- 해당 프로토콜의 구조적 취약점을 이용해 정상적인 서비스를 제공하는 시스템을 반사체로 이용해 공격 진행.

[캡쳐 2] DRDoS (https://infosec-ledger.tistory.com/24)

구성 요소 설명
공격자 - 공격을 주도하는 공격자의 PC
반사 서버 - 정상적인 서비스를 제공하나, 프로토콜 구조상 취약점으로 인해 공격에 악용되는 서버
피해자 - 공격의 대상이되는 피해 시스템
일반 DDoS와의 차이점 - 10~500배 이상 트래픽 증폭
  반사 서버의 양과 공격의 규모는 비례

- 공격 패킷이 전송되는 경로의 다양성
  공격이 직접적으로 공격대상으로 향하는 것이 아니라 네트워크에 연결된 무수한 반사 서버로 전송

- 반사 서버의 단계적 사용 및 확산
  반사 서버의 양과 공격의 규모는 비례

- 공격이 발생한 최초의 IP에 대해 역추적이 어려움.
  Src IP를 공격 대상 IP로 위조 및 수 많은 반사 서버를 경유하므로, 근원지 역추적이 거의 불가능

 

+ Recent posts