slide-image

FIRE TRUCK~~~~

댄스마파리피플~~~~

 

 

하아ㅏ 이번에는 DOS Attack인데

막막하다

예시를 봐야할 거 같은데, 그러면 교과서를 봐야하고..........일단 해보ㅈㅏ

 

DoS는 Denial-of-Service Attack으로 서비스 거부 공격을 뜻한다.

어떤 서비스의 제공을 방해하거나 완전히 차단하여 가용성(Availability)을 손상시키려는 시도이다. 따라서 해당 서비스에 관한 불가결한 자원(네트워크 bandwidth, 시스템 자원, 응용프로그램 자원 등)을 소진시키려고 시도한다. 

 

이 DoS가 발전하면 DDoS가 되는데...distributed DoS의 줄임말이다. 사실 발전이라기 보다 여러 대의 host(bot일 가능성 큼)를 이용하여 DoS를 하는 것이다. Flooding Attack이 해당되는데, 특정 서버로 연결된 네트워크 링크의 용량을 넘는 트래픽을 발생시켜 네트워크를 사용 불가능하도록 만드는 것이다. 따라서 인터넷 bandwidth가 커져서 DDoS의 bandwidth도 역시 커지고 있다. 

 

만약 소진시키려는 자원이 네트워크 bandwidth일 경우에는 서버와 인터넷을 연결하는 네트워크 링크의 용량과 연관이 있는데, 대체로 서버에서 ISP로 연결한다. (그래서?)

그러나 정상적인 경우에도, 외부에서 용량을 초과하는 트래픽이 들어올 수 있으므로 일부 패킷을 버리는 것이 TCP/IP의 네트워크 링크의 정상적인 행동이다. 하지만 DDoS 공격은 목표 서버로 가는 대부분의 트래픽이 악의적이어서 거의 모든 합법적 트래픽을 막아버린다.

 

소진시키려는 자원이 시스템 자원이라면 네트워크 처리 소프트웨어를 과로시키거나 crash시킨다. 네트워크 처리 소프트웨어를 과로시키기 위해서 꼭 트래픽이 많을 필요는 없는데, SYN spoofing은 서버의 TCP connection table을 공격하는 것으로 ~~~이다. 또한 poison packet은 네트워크 처리 소프트웨어의 버그를 건드리도록 설계된 패킷인데, 이것을 이용해 네트워크 처리 소프트웨어를 crash 시킬수도 있다.

 

소진시키려는 자원이 응용소프트웨어 자원일 경우, 응용 프로그램에 부단을 주는 request를 남발할 수 있다. DB가 달려있는 웹 서버일 경우 복잡한 DB 쿼리를 발생시키는 등...

또한 응용 프로그램 자체 버그를 이용하여 crash시킬 수도 있다.

 

공격에 사용된 시스템 수가 한 두대일 경우 주로 버그를 이용하여 공격하고 여러 대일 경우 많은 양의 트래픽이 필요한 floodin이나 DDoS일 가능성이 많다.

 

Classic DoS attacks는 Flooding attack으로 Ping flooding은 ICMP echo request를 엄청 보내는 것으로 한 대의 host로도 공격이 가능하다. 하지만 그러면 attack source가 드러나고 response가 다시 source로 돌아가므로 문제점이 생긴다.

 

source address spoofing은 패킷의 source를 조작하는 것으로 raw socket interface를 이용하거나 custom device driver을 이용한다. 만약 앞의 핑 플러딩일 경우 ICMP 에코 리퀘스트 패킷의 source를 모두 랜덤하게 spoofing한다. 따라서 response는 공격자가 아니라 랜덤 호스트로 가므로 버려지거나 반환되거나 할 것이다.

 

SYN Spoofinf에서 SYN은 Three-way handshake에서의 SYN이다. 3핸드쉐이크는 TCP connection을 설립할 때에 사용하는 방식인데, 클라이언트가 SYN을 보내면(x) 서버에서 SYN,ACK(y,x+1)을 주고, 클라이언트는 또 ACK(y+1)을 주는 것이다. 씬 플러딩은 여기서 SYN connection request패킷의 source를 spoofing하는 것이다. 이로 인해서 SYN-ACK packet이 엉뚱한 곳으로 가게되고, 이를 받는 host가 있다면 RST(reset)을 보내서 session을 종료하고, 없다면 SYN-ACK를 계속 시도한다. connection에 대한 정보가 유지되어야 하기 때문이다. 그래서 계속 서버가 일을 하게 되고, 자원이 고갈되게 된다.

 

이런 플러딩 어택은 어떤 종류의 네트워크 패킷이든 가능하지만, 너무 이상한 패킷은 IDS에서 탐지되고 걸러질 수 있다. 가장 흔한 DDoS 공격에서의 플러딩은 아까 말했던 ICMP ping flooding 이다. 이 외에도 많이 쓰이는 것은 UDP 플러딩이나 TCP SYN 플러딩 등이 있다. 

 

DDoS 어택은 봇넷을 이용해서 여러 host가 트래픽을 한 목표에 집중시키는 것이라고 했는데 2015년 기준 DDoS 공격 40%는 '고용된' 봇넷이라고 한다...

 

마지막으로 Application-based bandwidth attacks은 공격에 쓰인 노력보다 더 큰 자원을 소비하게 만드는 방식으로 응용프로그램을 공격하는 것이다. SIP flood은 VoIP(voice over IP)에 사용되는 SIP(Session Initiation protocol)을 플러딩 하는것이고, HTTP flood는 큰 파일을 다운로드 하도록 요구하는 등의 공격이다. Slowloris는 multiple connection과 함께 매우 긴 HTTP 헤더를 요청하는 공격이다.