만족
[정보보안] 네트워크 공격: DoS 본문
[정보보안] 네트워크 공격: DoS
기타 CS 이론/IT Security Satisfaction 2021. 10. 16. 18:35DoS (Denial of Service)
서비스 거부 공격, 즉 서버가 정상적인 서비스를 하지 못하도록 하는 공격을 말한다.
DoS: Ping of Death
ICMP 프로토콜(패킷을 보낸 후 수신자가 다시 송신자에게 특정 메시지를 보낼 수 있다)을 활용해
네트워크가 정상적으로 작동하는지 확인하는 ping 유틸리티가 있다.
Ping of Death 공격은 ICMP 프로토콜을 악용하여 수신자에게 최대 크기의 데이터를 전송하면
수신자의 네트워크에서는 해당 데이터를 모두 적절한 크기의 패킷으로 나누어 처리해야 하므로 부하가 커진다.
따라서 수신자는 정상적인 네트워크 서비스를 사용할 수 없게 된다.
현재 대부분의 대형 IT회사들은 아예 ICMP프로토콜을 막아버리거나, 일정 크기를 넘어설 경우 무시하고 있다.
DoS: SYN Flood
TCP/IP에서 연결 확립을 위해 3-way handshaking을 사용한다.
이 때 SYN신호를 받은 측은 SYN Received상태가 되는데, 포트 하나를 연결 준비를 위해 사용한다.
SYN Flood는 가짜 송신자를 여러 개 만들어서 수신자에게 SYN 신호를 많이 보내 공격한다.
포트 갯수는 무한하지 않으므로, 결국에는 모든 포트가 사용중인 상태가 되어 새로운 사용자와 연결할 수 없는 상태에 빠진다.
방어 방법으로는 먼저 SYN Received 상태로 대기하는 시간을 줄일 수 있다.
아파치 기본 설정에서는 SYN Received 상태에서 최대 300초를 대기하므로 이를 줄인다.
또한 이 공격은 SYN신호를 무더기로 보내는 공격이므로 SYN 신호가 갑자기 많이 수신되면 차단하는 침입 탐지 시스템을 사용할 수도 있다.
DoS: Bonk
패킷의 시퀀스 번호(수신자가 순서에 맞게 패킷을 재조합할 때 사용하는 번호)를 계속해서 1번으로 보내는 방법.
수신자는 다음 시퀀스 번호의 패킷을 받지 못했으므로 계속해서 다음 패킷을 요구한다.
DoS: Boink
Bonk의 변형으로, 일정 갯수까지는 정상적인 패킷과 시퀀스 번호를 보내다가,
N번째 패킷에서 계속 동일한 시퀀스 번호의 패킷을 보낸다.
DoS: Teardrop
패킷에 대해 중첩과 빈 공간을 만들어 더 복잡하게 조작하는 방법이다.
이 경우 수신받은 패킷의 총 크기는 올바르지만, 중첩과 빈 공간을 발생시켜
수신자가 패킷의 오류를 검출해내는 데 오래 걸리게 만든다.
이는 시스템이 패킷의 크기가 너무 큰지에 대해서는 검사하지만,
너무 작지는 않은지에 대해서는 검사하지 않는다는 점을 악용한다.
1번 패킷이 0~100, 2번 패킷이 70~80이라면,
1번 패킷이 저장될 때 offset= 0, end= 100이 되어 길이가 100이 되고
2번 패킷이 저장될 때 offset=100 (70+(100-70); 현재 패킷의 시작위치+ 중첩이 발생한 길이), end= 80이 되어
길이를 계산할 때 end-offset= -20이 되는데, 길이는 unsigned타입이라 어마어마하게 큰 길이만큼 메모리를 확보하게 되어 오버플로가 발생한다.
정상적으로는 패킷의 길이(end-offset)가 양수가 될 경우(완전히 중첩되지 않는 경우)이다.
DoS: Land
패킷 송신 시 목적지와 발신지를 모두 목적지로 설정하는 방법이다.
이렇게 되면 패킷이 네트워크 내에서 빙글빙글 돌게 된다.
목적지와 발신지 주소만 검사하면 되기 때문에 방어하기 쉽다.
DoS: Smurf
공격 대상의 브로드캐스트 IP를 목적지로, 발신주소를 공격 대상의 IP로 하여 ICMP패킷을 무한정 보낸다.
그러면 네트워크 내에 속한 모든 시스템이 공격 대상자에게 ICMP Reply를 보내 과부하가 걸린다.
이는 라우터에서 브로드캐스트 주소로 데이터를 받을 때 외부 네트워크 데이터는 무시하는 방법으로 방어할 수 있다.
DoS: DDoS(Distributed Denial of Service)
분산 서비스 공격으로 많이 알려진 공격.
공격자가 직접 공격하지 않고, 자신의 명령을 따르는 에이전트들을 악성코드를 배포하여 확보한다.
공격 개시 전에는 아무런 활동도 하지 않기 때문에 에이전트들이 감염 사실을 알기 어렵고,
공격이 시작되면 공격자는 명령만 내리고(또는 정해진 시간에 일제히 공격) 공격은 에이전트들이 직접 하기 때문에
공격자를 특정하기가 어렵고 피해가 크다.
'기타 CS 이론 > IT Security' 카테고리의 다른 글
[정보보안] 인터넷 정보보안: HTTP 기본 개념과 웹 해킹 공격 (0) | 2021.10.16 |
---|---|
[정보보안] 네트워크 보안 시스템: 방화벽, 침입 탐지와 침입 감지 시스템 (0) | 2021.10.16 |
[정보보안] 무선 네트워크 보안 (0) | 2021.10.16 |
[정보보안] 네트워크 공격: 스니핑, 스푸핑, 세션 하이재킹 (0) | 2021.10.16 |
[정보보안] 네트워크 보안을 위한 기초 개념 (0) | 2021.10.16 |