서비스 거부공격(DoS) 이론 정리 (세미나 정리)
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 공격 순서
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을 중복되게 하거나 공간을 두어 수신측에 재조합이 안되어 다운되게 하는 공격
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 필드를 설정하여 응답
Slow HTTP Read DoS 공격
요청에 대한 응답을 느리게 (Slow) Read 하여 서비스 거부 공격 수행
- 공격자가 Window 크기를 0으로 조작하여 "Zero Window PAkcet"을 전송
- 서버가 수신측 상태 확인을 위해 Probe 패킷 전송까지 일정시간 대기함
- 이에 대해 응답 메시지를 전송하지 못하고 연결을 지속적으로 유지
- 웹 서버의 연결 자원 (가용량: 웹 서버로 접속할 수 있는 최대 클라이언트 수)이 모두 소진되어 정상적인 요청을 받을 수 없는 상태가 된다.
Hash DoS 공격
- hash : 문자열을 특정한 함수로 처리하여 얻은 값으로 데이터 위치를 파악
- hash collision 해시 충돌 : 서로 다른 키 값이 같은 인덱스 값으로 매핑
- 웹서버는 클라이언트 HTTP 요청을 통해 전달되는 파라미터를 효율적으로 저장하고 검색하기 위해 해시테이블을 자료구조로 사용
- 공격자가 POST 방식으로 조작된 파라미터를 웹서버로 전달, 다수의 해시 충돌 발생을 유도한다. 해시 테이블 접근 시간을 층가시킨다.