개념정리/Network Security 개념 정리

서비스 거부공격(DoS) 이론 정리 (세미나 정리)

이우정 2022. 4. 4. 23:58
728x90

DoS 공격

구분 설명
1) TCP SYN flooding Attack TCP 연결 설정 과정 중에 3-Way Handshaking 과정에서 Half-Open 연결 시도가 가능하다는 취약점을 이용한 공격
2) SMURF Attack 직접적인 ICMP 브로드캐스트와 세가지 구성요소인 공격자, 증폭 네트워크, 공격대상 서버를 이용
3) Land Attack 공격자가 임의로 자신의 IP Address & Port를 대상 서버의 IP Address & Port와 동일하게 하여 서버에 접속하는 공격방식
4) Ping of Death 공격의 기본은 핑(Ping)을 이용하여 ICMP 패킷을 정상적인 크기(65535 bytes)보다 아주 크게 만든 것
5) Teardrop Attack 단편화 과정에 발생, 오프셋 값을 단편화 간에 중복되도록 고의적으로 수정하거나 정상적인 오프셋 값보다 더 큰 값을 더해 그 범위를 넘어서는 오버플로우를 일으켜 시스템의 기능을 마비시켜 버리는 DoS 공격기법
6) Bonk 패킷을 프래그먼트하여 전송할 대 패킷을 조작하여 결과적으로 공격대상자에게 시스템 부하를 증가시키는 공격
7) Boink Bonk를 수정한 DoS 공격도구로써 패킷 시퀀스 번호를 비정상적인 상태로 보내는 공격기술

DDoS 공격 순서

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tkdldjs35&logNo=100206811195

DDoS 구성 요소

구성요소  설명
공격자, 봇 마스터 공격을 주도하는 해커의 컴퓨터, C&C (Command & Control) 서버에 공격 명령을 전달하는 해커의 컴퓨터, 봇 마스터라고도 함
마스터, C&C 서버 공격자에게 직접 명령을 받은 시스템, 여러 대의 에이전트 (Agent)를 관리
핸들러(Handler) 프로그램 마스터 시스템의 역할을 수행하는 프로그램
에이전트(Agent)  공격 대상에 직접적인 공격을 가하는 시스템, 악성코드에 감염된 시스템
- 슬레이브 (Slave), 좀비 (Zombie)
데몬(Daemon) 프로그램 에이전트 시스템 역할을 수행하는 프로그램
표적(Victim) 공격 대상

DDoS 공격 사례

구분 설명
트리누(Trinoo) 공격 많은 호스트로부터 통합된 UDP flood 서비스거부 공격을 유발하는데 사용되는 도구
TFN 공격 - 트리누와 유사한 분산 서비스 거부 도구, 많은 소스에서 하나 or 여러 개의 목표 시스템에 DoS 공격 수행
- UDP Flood 공격 + TCP SYN Flood 공격 + ICMP echo 요청 공격 + ICMP 브로드캐스트 공격(Smurf 공격 가능)
Stacheldrant(슈타컬드라아트) 공격  - 트리누와 TFN을 참고하여 제작, 이들이 갖고 있는 특성 대부분 포함한 공격도구
- Stacheldrant의 마스터시스템 및 자동적으로 업데이트되는 에이전트 데몬 사이 통신 암호화 
TFN2K - TFN2K는 TFN의 발전된 형태로써 통신에 특정 포트가 사용되지 않고 암호화
- UDP, TCP, ICMP 복합적 사용되며 포트도 임의로 결정

최신 DDoS 공격유형 분류

문자값 대역폭 소진공격 서비스(애플리케이션) 마비공격
대표 공격
유형
UDP/ICMP Flooding, SYN Flooding HTTP GET Flooding
프로토콜 3~4계층(Network, Transport 계층)
: IP, ICMP, IGMP, UDP, TCP 등
7계층(Application 계층)
: HTTP, DNS, FTP, SMTP 등
공격대상 네트워크 인프라 웹서버, 정보보호 장비 등
Spoofing 사용/미사용 미사용
증상 - 회선대역폭고갈
- 동일 네트워크를 사용하는 모든 서비스에 접속
장애발생
- HTTP 서버 과다 접속(또는 서비스 부하)으로 인한
장애발생
- 공격대상 시스템만 피해
공격 형태 1. UDP/ICMP Traffic Flooding, UDP/ICMP Flooding, DNS Query Flooding 등

2. TCP Traffic Flooding, SYN Flooding,
SYN + ACK Flooding

3. IP Flooding, Land Attack, Tear Drop,
HTTP Continuation 등
1. HTTP Traffic Flooding, GET Flooding, CC Attack 등

2. HTTP Header/Option Spoofing, Slowloris, Pyloris 등

3. TCP Traffic Flooding, TCP Session, SYN Flooding,
TCP Slow Read 등

4. Other L7 Service Flooding, Hash DoS, Hulk DoS,
FTP/SMTP Attack 등

HTTP Header/Option을 이용한 대표적인 공격기법
- 이러한 데이터 전송하는 좀비 PC가 많을 경우, 서버가 정상 서비스 제공 불가능

종류 공격원리
Slow HTTP POST DoS
(RUDY, R-U-Dead Yet)
- HTTP POST 지시자로 대량의 데이터를 장시간에 걸쳐 분할 전송
- POST 데이터가 모두 수신하지 않았다고 판단하여 연결 장시간 유지
Slow HTTP Header DoS
(Slowloris)
- 웹서버 HTTP 헤더부분을 비정상적으로 조작하여 헤더 구분 불가하도록 설정
- 헤더 정보가 모두 전달되지 않은 것으로 판단하여 연결 장시간 유지
Slow HTTP Read DoS - 웹서버와 TCP 연결 시, TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후 HTTP 데이터 송신
- 서버가 정상 상태로 회복될 때까지 대기상태에 빠짐

DRDoS (Distributed Reflection DoS)

- 분산 반사 서비스 거부 공격

한국인터넷진흥원

(1) 공격자 : 송시지 IP를 공격대상의 IP로 위조한 후 대량의 SYN 패킷을 반사서버로 전송

(2) 반사 서버 : SYN 패킷을 받은 장비는 위조된 출발지 IP로 정상적인 SYN + ACK 패킷 전송

(3) 공격대상 : 다수의 응답을 반사서버로 부터 받음

구분  설명
TCP - TCP 3way-handshake 취약점, 위조된 주소의 SYN 요청을 반사서버로 전달
- 공격대상 : SYN + ACK 응답
ICMP - ICMP 프로토콜의 Echo Request, Echo Response 이용, 위조된 주소의 Echo Request를 반사서버로 전달
- 공격대상 : Echo Response 응답
(broad cast 대신 반사서버를 사용)
UDP - UDP 프로토콜 서비스 제공 서버를 반사서버로 이용
- 공격대상 : UDP 응답
- DNS, NTP, SNMP, CHARGEN 서비스

공격 방식

- 반사 (Reflection), 증폭 (Amplification)

- 출발지 IP를 공격대상 IP로 위조, 취약한 서비스 서버에 대규모 메시지 전송

- 서버는 요청에 대한 응답을 공격대상에게 반사

- 반사된 응답 메시지가 대량의 트래픽으로 증폭되어 전송

 

UDP 서비스를 이용한 DRDoS 공격 유형

구분 설명
DNS 증폭 DRDoS 공격 - 반사 서버 : DNS 서버
- 공격 대상 : 많은 양의 레코드 정보를 요구하는 DNS 질의타입(ANY, TXT 등)을 요청
NTP 증폭 DRDoS 공격 - 반사 서버 : NTP 서버
- 공격 대상 : 최근 접속한 클라이언트 목록(monlist 명령)을 요청
SNMP 증폭 DRDoS 공격 - SNMP agent 에 MIB와 같은 정보를 대량 요청(GetBulkRequest)
CHARGEN 증폭 DRDoS 공격 - CHARGEN서버에 접속 시 대량의 문자열을 전송

 

일반 DoS와의 차이점

- 공격 근원지 파악 힘듦 (출발지 IP 변조, 수많은 반사서버를 경유)

- 좀비 PC 공격 트래픽 효율 증가

(반사서버가 SYN+ACK 패킷에 대한 응답이 없을 때 일정횟수 재전송을 수행하여 패킷이 증폭되어 전송)

 

대응 방법

1) IP 위조 패킷 ISP가 직접 차단

2) icmp 필요없는 시스템은 이를 차단

3) DNS서버가 악용되지 않도록 하기 위해 점검할 사항

- 공개용이 아닌 내부 사용자용 DNS(Resolving)이라면 서버 설정으로 내부 사용자 주소만 재귀 쿼리 (Recursive Query) 가능하도록 제한

- 서버방화벽 또는 네트워크 보안 장비로 특정 Byte 이상의 DNS 질의에 대한 응답 차단

& 동일 IP에 대해 단위 초당 요청 개수 제한 설정

4) NTP 증폭 DRDoS에 경우 monlist 명령 해제

- monlist : ntp 서버에 최근 접속한 클라이언트 정보 전송해주는 명령어


TearDrop Attack

https://jeongchul.tistory.com/198

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kiminkyu11&logNo=40166441446

- 데이터의 송수신과정에서 데이터의 송신 한계를 넘으면 MTU (1500byte)로 조각을 나누어 fragment number를 붙여 송신하고 수신측에는 fragment number로 재조합하여 분석한다. 

- fragment 내의 나누어진 byte 정보인 fragmentation offset을 위조하여 offset을 중복되게 하거나 공간을 두어 수신측에 재조합이 안되어 다운되게 하는 공격

https://jeongchul.tistory.com/198

 

bonk boink

https://cafe.naver.com/boanproject/book1782302/3267?referrerAllArticles=true 

 

보안 프로젝트 : 네이버 카페

 

cafe.naver.com


TCP Flow Control

 

 

- TCP 흐름 제어 : 연결된 상호간에 수신 가능한 양만큼만 데이터를 전송하는 제어방식을 의미

즉, 수신측의 수신 버퍼에 충분한 여유 공간이 없다고 말하면 송신측은 여유 공간 생겼다고 알려줄 때까지 대기함 (지속적으로 확인하는 작업 수행)

- Window 필드 : 수신측에서 수신 가능한 여유 공간의 크기를 담아서 송신측에게 전달하는 헤더 필드

(나 이만큼 가능하다!)

- Zero Window Packet : 수신측의 수신 버퍼에 여유공간이 0이다. Window 필드를 0으로 설정한 해당 패킷을 전송

- Zero Window PRobe PAcket : Zero window packet을 받은 송신측이 일정 시간 대기후 (Timer) 수신측 상태를 확인하기 위해 해당 패킷을 전송 = keep alive packet (일정 시간 IDLE 타임(아무런 송수신 없이 지속되는 시간)이 지속될 경우 TCP 연결 상태를 확인하기 위해 상대방에게 보내는 패킷)

(probe : 검사)

if not window 여유 :

    zero window packet 

else :

    window update packet : 수신측이 여유공간이 생겨서 해당 공간의 크기만큼 window 필드를 설정하여 응답 

client는 receiver로 server는 sender로

 

Slow HTTP Read DoS 공격

 

요청에 대한 응답을 느리게 (Slow) Read 하여 서비스 거부 공격 수행

 

- 공격자가 Window 크기를 0으로 조작하여 "Zero Window PAkcet"을 전송

- 서버가 수신측 상태 확인을 위해 Probe 패킷 전송까지 일정시간 대기함

- 이에 대해 응답 메시지를 전송하지 못하고 연결을 지속적으로 유지

- 웹 서버의 연결 자원 (가용량: 웹 서버로 접속할 수 있는 최대 클라이언트 수)이 모두 소진되어 정상적인 요청을 받을 수 없는 상태가 된다.


Hash DoS 공격

- hash : 문자열을 특정한 함수로 처리하여 얻은 값으로 데이터 위치를 파악

- hash collision 해시 충돌 : 서로 다른 키 값이 같은 인덱스 값으로 매핑

- 웹서버는 클라이언트 HTTP 요청을 통해 전달되는 파라미터를 효율적으로 저장하고 검색하기 위해 해시테이블을 자료구조로 사용

- 공격자가 POST 방식으로 조작된 파라미터를 웹서버로 전달, 다수의 해시 충돌 발생을 유도한다. 해시 테이블 접근 시간을 층가시킨다. 

 

728x90