min8282

[공통과정] 네트워크 해킹/DoS(Denial of Service) 본문

K-Shield.Jr

[공통과정] 네트워크 해킹/DoS(Denial of Service)

min8282 2024. 7. 14. 03:23

DoS(Denial of Service)란?

시스템을 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격으로 공격자는 외부 네트워크에서 공격을 수행한다.

DoS 공격 예시

1. TCP SYN Flooding

  • SYN 요청을 지속적으로 보내는 네트워크 계층 공격
  • 반개방(half-open) 공격이라고 불리며, TCP의 3-Way HandShake를 이용한 공격
  • 네트워크에서 서비스를 제공하는 시스템은 동시 사용자 수가 한정되어 해당 공격을 통해 서버 자원을 소모시킴

2. TCP Connection Flooding

  • TCP의 세션을 이용한 공격
  • 한 개의 IP가 다양한 포트로 SYN 패킷을 전송
  • 클라이언트는 서버와 3-Way HandShake를 통해 세션을 연결하게 됨
  • 세션 연결이 가득 차면 더 이상 연결 불가능

TCP SYN Flooding과 TCP Connection Flooding의 차이점)

TCP SYN Flooding의 경우 여러 개의 IP가 계속 SYN 요청을 보내고, TCP Connection Flooding은 한 개의 IP에서 여러 포트로 SYN 패킷을 전송한다. 즉, 공격자가 IP를 하나를 사용 하면 TCP Connection, 여러 개을 사용하면 TCP SYN.

 

3. DNS Query Flooding

  • DNS Query 요청 패킷을 대량으로 서버에 전송하여 DNS의 정상적인 서비스 방해
  • 대량의 Query를 발생시켜 서버가 더 이상 DNS 응답을 하지 못하도록 함

DNS Query Flooding

4. Slow HTTP Headers Dos(Slowloris)

  • HTTP Header 정보를 비정상적으로 조작하여 웹 서버가 온전한 Header 정보가 올 때까지 기다리도록 함
  • HTTP 에선 헤더의 끝을 /r/n 문자로 구분하게 되는 데 공격자는 마지막 개행 문자를 보내지 않음
  • 일명 Slowloris 공격이라고 부름
    • 예시 명령어 : Slowhttptest -c 4000 -u http://<타겟주소>

정상 패킷의 경우 끝 부분이 0d0a0d0a로 끝나고, 공격 패킷의 경우 끝 부분이 0d0a로 끝난다. 즉, 개행문자가 두 번 적용되어야 정상적이지만, Slowloris 공격을 진행하면 마지막 개행 문자를 보내지 않기 때문에 HTTP 헤더의 끝 부분에서 개행문자의 개수를 보고 정상 패킷인지 아닌지 파악할 수 있다.

 


DDoS(Distributed DoS)란?

분산 서비스 거부 공격은 여러 대의 공격자를 분산적으로 배치해 동시에 DoS 공격을 실시하는 것이다. 악성 코드를 이용하여 일반 사용자의 PC를 감염시켜 좀비 PC로 만든 다음 C&C(명령 제어) 서버의 제어를 통해 특정 시간에 동시에 수행한다. DoS와 마찬가지로 공격자는 외부 네트워크에서 공격을 수행한다.

간단하게 사용자 PC를 감염시켜 좀비 PC로 만듦 -> 공격자 PC가 아닌 좀비 PC가 공격을 수행