Information Technology

[해킹 공격 기법] 서비스 거부 공격(DoS, Denial Of Service) 기법 정리

coinAA 2021. 9. 24.

 

목차

     

    서비스 거부 공격(Denial-Of-Service attack, DoS attack)이란?

    DoS Attack는 Denial-Of-Service attack의 약자로 DoS attack 또는 디오에스 공격/도스 공격(DoS attack)이라고 불려진다.
    시스템을 악의적으로 공격해 해당 시스템의 리소스(정보 시스템의 데이터나 자원을 적절한 대기 시간 내에 사용하는 것)를 시스템에 과도한 부하를 일으켜 정보 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다.

    DoS 공격은 크게 소프트웨어의 취약점을 이용한 공격과 flooding 유형의 공격으로 구분할 수 있다.

     

    취약점 공격형

    Boink, Bonk, TearDrop 공격

    프로토콜은 목적에 따라 차이는 있지만 신뢰성 있는 연결을 제공하려고 하며, 신뢰성 있는 연결은 패킷의 순서가 올바르게 되어 있는가?, 중간에 손실된 패킷은 없는가? 등을 확인하는 기능을 기본으로 제공한다.
    프로토콜은 신뢰도를 확보하기 위해 신뢰성이 확보되지 않는 데이터 전송에 대해 반복적으로 재 요청하거나 수정을 요청하게 되는데 이러한 방식을 이용하여 프로토콜의 오류 제어 로직을 악용해 시스템 자원을 고갈시키는 방식이다.

    TCP 패킷 안에는 각 패킷이 데이터의 어느 부분을 포함하는지 표시하기 위하여 시퀀스 넘버(순서 번호)가 기록되어 있는데, 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 하여 시퀀스 넘버를 속이는 공격이다.

    Teardrop 공격 시 패킷의  패킷의 배치와 시퀀스 넘버

     

    Boink, Bonk, TearDrop 공격 대응 방안

    Boink, Bonk, TearDrop 공격에 의한 취약점은 패치를 통해 제거되는데 시스템의 과부하가 걸리거나 계속 반복되는 패킷은 차단하도록 설정하여야 한다.

     

    랜드 공격(Land Attack)

    패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소의 값을 똑같이 만들어서 공격 대상에게 보내는 공격 기법이며 조작된 IP 주소의 값은 공격 대상의 IP 주소이다.

     

    랜드 공격(Land Attack) 대응 방안

    라우터나 패킷 필터링 도구를 이용하여 자신의 시스템 주소와 동일한 소스 주소를 가진 외부 패킷을 필터 하거나 침입 차단 시스템에서 소스 IP/PORT와 목적지 IP/PORT가 동일하면 차단하도록 설정한다.

     

    자원 고갈 공격형

    죽음의 핑(ping of death) 공격

    시스템을 파괴하는 데 가장 흔히 쓰인 초기의 DoS 공격이고 네트워크에서 패킷을 전송하기 적당한 크기로 잘라서
    보내는 특성을 이용한 공격 기법이다.

    네트워크의 연결 상태를 점검하는 ping 명령을 보낼 때 패킷을 최대한 길게(최대 65,500바이트) 보내면 수백수천 개의 패킷으로 잘게 쪼개져 보내지고 공격 대상 시스템은 대량의 작은 패킷을 수신하면 공격 대상은 조각화된 패킷을 모두 처리해야 하므로 정상적인 ping처리보다 많은 부하가 걸리게 되어 네트워크가 마비된다.

     

    죽음의 핑(ping of death) 공격 대응 방안

    죽음의 핑 공격(ping of death) 공격을 막으려면 ping이 내부 네트워크에 들어오지 못하도록 방화벽(Firewall)에서 ping이 사용하는 프로토콜인 ICMP(Internet Control Messaging Protocol)를 차단하거나 보통의 ICMP 패킷은 분할하지 않기 때문에 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하는 방식을 사용하기도 한다.

     

    SYN 플러딩(SYN Flooding) 공격

    TCP의 연결 과정인 3-웨이 핸드 셰이킹(3-way Handshaking)의 문제점인 Half-Open 연결 시도가 가능하다는 취약점을 이용한 공격 기법이다.

    네트워크에서 서비스를 제공하는 시스템에 걸려있는 사용자 수 제한을 이용한 공격이며, 존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 제공받지 못하게 한다. 

    예를 들자면 공격자가 다수의 syn 신호를 공격 대상자에게 전송하면 공격 대상자는 syn/ack 신호를 공격자에게 전달하게 되는데 이때 공격자가 ack 신호를 반송하지 않으면 공격 대상자의 시스템은 일정 시간 동안 신호를 기다리게 된다.

     

    SYN 플러딩(SYN Flooding) 공격 대응 방안

    공격 대응책은 SYN Received의 대기 시간을 줄이는 침입 방지 시스템(IPS)과 같은 보안 시스템으로도 공격
    을 쉽게 차단할 수 있고 Syn_Cookie는 서버에서 클라이언트로 보내는 SYN+ACK 패킷에 임의로 생성되는 시퀀스 넘버 대신 서버에서 암호화 기술을 이용해 인증 정보가 담긴 시퀀스 넘버를 생성하여 클라이언트에 보낸다.
    클라이언트로부터 SYN 패킷을 받더라도 Syn_Cookie만 보내 놓고 세션을 닫아버려 세션을 열로 기다릴 필요가 없으므로 SYN Flooding 공격은 통하지 않는다.

     

    HTTP GET 플러딩(HTTP GET Flooding) 공격

    공격 대상 시스템에 TCP 3-웨이 핸드 셰이킹 과정으로 정상 접속한 뒤 HTTP의 GET 메소드로 특정 페이지를 무한대로 실행하여 대량의 HTTP GET 요청을 발생시켜 해당 게시물이 존재하는 웹서버의 자원을 소진시키는 공격이다.

    공격 패킷을 수신하는 웹 서버는 정상적인 TCP 세션과 정상으로 보이는 HTTP GET을 지속적으로 요청하므로 시스템에 과부하가 걸린다.

     

    HTTP GET 플러딩(HTTP GET Flooding) 공격 대응 방안

    시스템의 리소스 임계치를 설정하고 비정상적 트래픽을 유발하는 IP를 차단하는 정책을 설정한다.

     

    HTTP Cache Control 공격

    HTTP 1.1 버전의 CC(Cache-Control) 헤더 옵션은 자주 변경되는 데이터에 새로운 HTTP 요청 및 응답을 요구하기 위해 캐시(Cache) 기능을 사용하지 않을 수 있다.
    서비스 거부 공격에 이 옵션을 사용하면 웹 서버가 캐시를 사용하지 않고 응답해야 하므로 웹 서비스의 부하가 증가한다.

    쉽게 말하자면 사용자는 웹서버에 파일을 요청할 때 수신받은 웹에 변경사항이 없으면 response 304(NOT MODIFY)로 응답하여 변경된 것이 없으니 사용자의 Temp폴더(임시 인터넷 파일)에 수신받았던 파일을 다시 띄우라고 한다. 이는 서버에 부하를 줄이기 위해서인데 캐시 컨트롤을 no-store(저장하지 않음)로 지정하여 Temp폴더에 아무것도 없으니 다시 전송해달라고 요청을 하여 변경사항이 없는 웹을 다시 수신받게 되는데 서버의 경우 revalidation(갱신)을 계속하게 되어 부하가 발생하게 되는 원리이다.

     

    동적  HTTP 리퀘스트  플러딩  공격(Dynamic HTTP Request Flooding Attack)

    Dynamic HTTP Request Flooding Attack은 웹 방화벽으로 특징적인 HTTP 요청 패턴을 방어하는 차단 기법을 우회하기 위해 지속적으로 요청 페이지를 변경하여 웹 페이지를 요청하는 공격 기법인데 서버에서 패턴을 캐치하지 못하도록 다양한 웹 페이지에 대해 동적으로 요청하는 페이지를 변경하여 서버에 요청하는 공격 방법이다.

     

    슬로  HTTP 헤더 DoS(슬로로리스) 공격(슬로 HTTP Header DoS Attack)

    서버로 전달할 HTTP 메시지의 헤더 정보를 비정상적으로 조작하여 웹 서버가 헤더 정보를 완전히 수신할 때까지 강제로 연결을 유지하는 공격으로 시스템 자원을 소비시켜 다른 클라이언트의 정상적인 서비스를 방해한다. 
    이 공격 방법은 HTTP 헤더와 바디를 구분하는 구분자들을 변조하게 되고, 변조된 HTTP 데이터로 인해 서버는 데이터가 모두 수신될 때까지 기다리도록 만드는 방법이다.

     

    슬로  HTTP POST 공격(슬로 HTTP POST Attack)

    공격자가 소량의 데이터를 느린 속도로 전송하여 웹 서버와의 연결을 장시간 유지하여 서버의 자원을 잠식, 정상 사용자의 접속을 받을 수 없게 하는 공격이다. 변조하는 정보는 헤더의 Content-Length 필드에 매우 큰 값을 입력함으로써 서버에서 Content가 모두 들어올 때까지 계속 연결을 유지시킴으로써 다른 사용자의 요청을 처리하지 못하여 리소스를 낭비하도록 만다는 것이다.
    HTTP의 Body 데이터를 띄엄띄엄한 시간 간격으로 전송함으로써 최대한 장시간 연결을 유지하도록 한다.

     

    스머프  공격

    ICMP 프로토콜과 다이렉트 브로드캐스트를 이용한 공격 방법이다. ICMP 패킷과 네트워크에 존재하는 임의의 시스템으로 패킷을 확장해 서비스 거부 공격을 수행하는 것으로, 네트워크 공격에 많이 사용한다.

     ping을 이용해 클라이언트가 서버에게 전송하고 응답받는 방법을 브로드캐스트와 접목하였고 기본적인 브로드캐스트는 기본적으로 라우터를 넘어서지 못하는데 Source IP를 임의의 IP로 작성하고 Destination IP에 브로드캐스트 IP인 255.255.255.255를 기입하면 Source IP에 적힌 네트워크로 ping이 브로드캐스팅 됨으로써 라우터를 통과될 수 있게 된다. 이렇게 브로드캐스트로 전달받은 ping을 서버 IP로 변경해 놓은 시작 IP주소로 ICMP Reply를 전달하게 됨으로써 서버의 리소스를 소모하게 만드는 공격 방법이다.

    스머프 공격은 다이렉트 브로드캐스트를 악용하는 것으로 공격 방법은 간단하다.

     

    다이렉트  브로드캐스트(Direct Broadcast)
    기본적인 브로드캐스트는 목적지 IP 주소인 255.255.255.255를 가지고 네트워크의 임의의 시스템에 패킷을 보내는 것으로, 네트워크 계층 장비인 라우터를 넘어가지 못하는데 라우터를 넘어가서 브로드캐스트를 해야 하는 특별한 경우에는 네트워크 부분에 정상 IP를 적고 해당 네트워크에 있는 클라이언트의 IP 주소 부분에 브로드캐스트 주소를 채워서 원격지 네트워크에 브로드캐스트를 하는데 이를 다이렉트 브로드캐스트라고 한다.

     

    메일  폭탄  공격

    메일 폭탄(Mail Bomb)은 스팸 메일과 같은 종류 메일이 폭주하여 디스크 공간을 가득 채우면 받아야 할 메일을 받을 수 없으므로 스팸 메일을 서비스 거부 공격으로 분류한다.

     

    분산 서비스 거부 공격

    분산 서비스 거부 공격 DDoS (Distributed Denial of Service)

    공격자가 중간 시스템에 공격을 명령하고 중간 시스템에서 관리하는 각 PC들이 서버에게 로드를 가하는 공격 방법이다. 공격자는 중간 시스템과 공격자를 악성 코드를 이용해 좀비 PC로 만들고 해당 좀비 PC를 이용하여 공격을 가하는 기법이기에 공격자 입장에서는 정확한 공격자를 찾기 어렵다는 장점이 있다. 악성 프로그램이 퍼져나갈수록 좀비 PC가 증가하고 서버 즉, 공격 대상 또한 피해가 커지게 되는 공격 기법이다.

     

    분산 서비스 거부 공격의 기본 구성

    • 공격자(Attacker)
      • 공격을 주도하는 해커 컴퓨터
    • 마스터(Master)
      • 공격자에게 직접 명령을 받는 시스템으로 여러 대의 에이전트를 관리
    • 핸들러(Handler) 프로그램
      • 마스터 시스템의 역할을 수행하는 프로그램
    • 에이전트(Agent)
      • 직접 공격을 가하는 시스템
    • 데몬(Daemon) 프로그램
      • 에이전트 시스템의 역할을 수행하는 프로그램

    댓글