최근,

파트장으로서 파트원 개개인 별 정보보안기사 실기 까지 최종 패스를 목표로 개인의 실력을 가늠할 겸 철저히 주관식 문제를 만들어 보았었다.

해당 문제들에 대한 풀이를 작성해 보고자 한다.

  1. Denial of Service(이하 DoS) 에 대해서 간략히 설명하고, DoS 의 공격 종류 대표적 6가지를 간단하게 설명하시오.

우선 DoS란 DoS 뒤에 Attack을 붙여 DoS 공격 등으로 많이 이야기 한다.

말 그대로 서비스의 거부. 정상적인 서비스 제공을 방해하는 공격 또는 행위를 의미.

  • 여기서 서비스는 주로 여러분이 컴퓨터의 설치된 어플리케이션을 통해. 또는 브라우저를 통해 이용하는 네트워크 기반으로 제작된 어떤 컨텐츠를 이용하는 모든 것을 포함한다.

내가 늘 강의 때 "DoS" 를 설명하는 이유는 다음과 같은 이유에서이다.

  1. "기본 또는 표준(여기서는 DoS가 되겠다.)"을 이해해야 응용이 되는 공격 행위를 이해하기 쉽다.

DoS를 이해하고 D(istributed)DoS, Dr(eflect)DoS 등을 이해하는 것은 쉬우나 아무것도 모르는 상태에서 DDoS, DrDoS만 접하고 이해하고자 한다면 당연히 어려울 수 밖에 없다.

IT 중 정보보호 분야를 업으로 살아가지만, 늘 어려운 점은 그거다.

  • IT를 함에 있어서 새로운 공부를 하기 위해 "A"라는 용어를 이해하기 위해서 "B"라는 용어를 이해해야 하고, "B"를 다시 이해하기 위해서 "C"를 이해해야 하는 용어의 끝없는 이어짐....
  • 그 점이 IT에 있어서 가장 힘든 점이 아닐까 한다.(물론 어디든 다 고만고만하겠지..)
  • 아울러 많은 단축용어들이 그 원문의 뜻을 해석해보면 이해해 도움이 되는 것도 많다.

각설하고 DoS란 제공되는 어떠한 서비스를 정상적으로 이용하지 못하도록 하는 공격 또는 행위를 말한다면, 기본적으로 "정보보호개론"등의 도서에 포함되는 DoS 는 다음 6가지를 대표적 행위로 설명들 한다.(전부가 아니라 대부분 설명할 때...물론 더 있다.)

  1. ARP Spoofing

  2. Ping Of Death

  3. SMURF

  4. LAND Attack

  5. TCP Syn Flooding

  6. Tear Drop

위 6가지는 다른 응용된 요즘의 공격들을 이해하기에 앞서 필수적으로 학습하고 이해하는 것이 필요하다고 판단된다.

금일 자료에서는 해당 내용에 대해서 각 세부적으로 Packet Dump 된 내용들을 본다던지 하는 등을 하지는 않을 것이다.

사실 위의 6가지를 이해함에 있어서도 OSI  7 Layer를 어느정도 이해하는 부분은 필요하다. 그 점은 위에서 언급했던 것과 같이 "A"를 이해하기 위해 "B"를 이해해야 하는 그런.......

가. ARP Spoofing

  • ARP는 Address Resolution Protocol의 약자(주소, 해결, 프로토콜?)
  • resolve
    (이미지 출처 : 네이버 영어사전 검색 결과)
  • 여기에서 ARP 는 OSI 2 layer와 3 layer의 내용을 이해해야 한다.
  • ARP 는 같은 네트워크 영역의 다른 대상과 통신을 하기 위해 필요로 하는 정보를 파악하기 위한 프로토콜이며, "IP"는 알고 있으나, 실질적인 통신을 위한 주소 "MAC"를 얻어내기 위한 행위이다.
  • Spoofing은 직접 공격에 해당되며, (간접 공격은 Sniffing)
  • spoof의미
    (이미지 출처 : 네이버 영어사전 검색 결과)
  • 정리하자면 그렇다. ARP의 IP -> MAC을 얻고자 하는 과정에서 "MAC"주소를 조작하여
  • "A" : 공격 대상(Victim)
  • "B" : 공격자(Attacker)
  • "C" : 통신 대상
  • 의 과정에서 "A" 가 "C"와 통신을 하고자 할 때, "B"가 중간에서
    "A"와"C"의 "MAC"주소를 서로에게 조작 / 전달하여 실질적으로 "A"는 "B"와 "C"도 "B"와 통신을 하게 되는 형태를 의미한다.
  • 그렇게 함으로써 "B"는 "A"와 "C"의 통신 내용을 가로채거나 내용을 조작하여 원하는 데이터를 얻는다.

나.  Ping of Death

  • 죽음의 Ping???
  • 이 공격은 간단하다. 전형적인 과부하 발생 DoS 공격인데 Ping(ICMP를 이용, OSI 3 layer)을 발생시키는데, 해당 Ping에 데이터의 크기를 "크게"만들어 전송하여 정상적인 서비스를 제공하지 못하도록 하는 공격을 말한다.
  • Ping은 윈도우 / 유닉스 / 리눅스 같은 OS에서 기본적으로 명령어가 동일한 명령어 중 하나이다.(대부분 비슷하나 조금씩 다를 수 있다.)
  • 일반적으로 OSI 3 layer의 값을 통해 해당 Host의 Alive, Dead 상태를 파악하기 위한 용도로 많이 사용한다.(하지만 절대적인 것은 아니다.)
  • 이때 Ping은 윈도우에서는  "l"옵션, 리눅스에서는 "s"옵션을 통해 데이터의 기본 크기를 조작하여 사용할 수 있다.
  • Ping은 하나의 크기가 대략적으로 65000byte(2^16, 이 값은 앞으로도 많이 보여질 값의 크기이다.) 정도로 최대 설정이 가능한데, 이는 일반적인 1500 "MTU(한번에 전송가능한 최대 패킷 사이즈)"를 생각하면 65000일 경우 기본적으로 65,000 / 1500을 계산하면 약 43.X가 나오는데 올림 계산하여 한번의 명령으로 44개의 패킷이 발생된다. 물론 그에 대한 응답 또한 44개가 정상적으로 회신되어져 와야 한다.
  • 이 처럼 Tool을 이용하여서든, 혹은 bat명령어를 통해 ping의 정상적인 옵션을 이용하던 Ping의 크기를 늘려 과다한 패킷을 발생시킬 수 있다. 이러한 공격을 Ping of Death라고 한다.
  • 세부적으로 학습 시에는 Packet Dump등을 통해 OS를 추정한다거나, TTL을 이해한다거나 하는 요소를 세부적으로 설명할 예정.

다. SMURF

이 공격은 최근의 공격들을 보았을 때 무조건 * 100 이해해야 함이 옳다고 본다.

갑자기 왠 파란 꼬꼬마를 여기서 언급하느냐 라고 할 수 있는데, 최근 발생한 Memcached DrDoS 라던지, 각종 Amplified(증폭) 공격과 관련해서는 이 개념을 이해하면 훨씬 쉽게 접근(?) 할 수 있다고 판단된다.

여기서 Amplified

  • 증폭.png
    (이미지 출처 : 네이버 영어사전 검색 결과)

SMURF 공격 자체는 사실 같은 Broadcast 영역으로 한정된다. 하지만 이 또한 응용을 통해 전세계 공인IP로 연결된 모든 곳에는 "정상적인 통신 요청 방법"을 악용할 수 있는 형태로 응용되어져 있다.

SMURF 공격은

  • ICMP Request를 발생시킬 때, "출발지 주소= 요청자 주소"를 "Victim IP"로 조작하여 패킷을 발생시키며, 이 Request 패킷의 목적지는 "Broadcast 주소"이다.
  • 그로 인해 Class로 가정할 때, 최대 254개(0에서 255까지 "256"개의 IP 중 "0" Network Address, "255" Broadcast Address를 제외한 254개의 IP가 ICMP Request로 부터 응답할 수 있다.
  • 위의 "나" 항목에서 Ping of Death를 생각해보자.
  • 정상 명령어를 이용하여 입력한 Ping을 크기 수정을 통해 SMURF 공격을 발생시켰다면?
  • 단순 계산만 하더라도 65,000 / 1500 = 44개 라고 가정
  • 44 * 254 = 11,176개. bat등으로 혹은 단순 손으로 생성해낸다고 해도......규모가 큰 네트워크 환경일수록 서브넷을 업무별 용도별 등으로 분리해야 하는 경우는 이러한 무분별한 Broadcast 발생에 의한 네트워크 부하 증가도 고려대상이다.
  • 여튼 SMURF란 요청하지 않은 응답을 수신하며 그를 처리하다 서비스 거부에 빠지게 되는 공격을 말한다.

라. LAND Attack

  • LAND는 사전적 의미를 보면 명사와 동사로 구분된다.(영알못이라 그냥 네이버 어학사전 투척한다.)
  • 랜드.png(이미지 출처 : 네이버 영어사전 검색 결과)
  • 이 공격에서는 동사의 의미로 사용된 것으로 추정된다.
  • 자 이 공격은 간단하다. 우선 이 공격 또한 "주소"가 조작된 패킷이 유입되어 서비스 거부에 빠지게 되는 공격인데, "출발지 주소"와 "목적지 주소"를 "Victim" 주소로 하여 조작하여 패킷을 발생시키고, 이 패킷을 받은 Victim은 서비스 거부에 빠지게 되었었다.(현재는 단순 LAND IP 공격은 통하지 않는 다는 것.)
  • 하지만 늘 응용 공격을 생각할 필요가 있다. (정상적인 NTP 요청을 참고.)

마. TCP Syn Flooding

제일 설명이 길어질지도 모르는 공격 종류이다. 초기에 나는 이 공격을 단순히 Syn Flag가 활성화된 TCP 패킷이 과다로 유입되는 공격인줄로만 알았다. (물론 일부는 맞다.) 하지만 이를 완벽히 이해하기 위해서는 지겹게 들었던 3Way Handshaking을 반드시 이해해야 하고, 더불어 나아가서는 서버의 TCP 세션 정보(특히나 HTTP)의 저장 방법에 대한 내용도 이해할 필요가 있다.

  • 나중에 상세히 다시 분석하겠지만 우선 3Way Handshaking, TCP 방식의 통신을 하기 위해서 반드시 거쳐야 할 "세션 수립" 과정
  • 어떠한 TCP 데이터라도 이 과정을 거치지 않고 바로 TCP 통신에 대한 정보를 요청하거나 전달할 수는 없다.
  • 데이터를 상호 송수신 하기 위한 선행 과정이 3way Handshaking 이다.
  • 3Way와 공격의 개념은 다음과 같다.

1) 통신 요청자는 Syn Flag만 활성화된 TCP 패킷을 보낸다.

2) 서비스 제공자는 Syn에 대한 응답으로 Syn과 Ack에 대한 응답을 보낸다.

3) 통신 요청자는 Ack로 응답을 함으로써 상호간 TCP 세션 수립이 완성되며 데이터를 송수신 할 수 있다.

여기서 공격은 2번 항목에서 부터 이해를 요구하게 된다. Listen 중인 TCP Port라면 Syn+Ack으로 응답을 주게끔 되어 있다. 하지만 닫혀진 포트로 Syn 패킷이 유입되었다면, RST 패킷이 응답되어져 가 세션이 끊기게 되어있다.

  • 공격의 경우 Attacker는 Syn Flag 패킷만 과다로 보내는 데, 정상적으로 Listen 중인 Port로 요청이 유입될 때, 기존 서버는 해당 요청 정보를 바로 저장한다.(Backlog Queue라는 개념이 있다.)
  • 서버는 이 요청 정보를 Syn 만으로 저장하다보니 이후에 3Way가 이루어졌던, 이루어지지 않았던 정보를 저장하는 공간이 가득차버려 더이상 정상적인 요청을 대응할 수 없게 되는 것이다.(TCP의 구조 특성 상 패킷이 유입되었을 때 다음 패킷이 유입되기까지 대기 하는 시간이 있다.)
  • 이러한 점을 노려 Syn 만 과다로 발생 시키고, 최종적으로 Ack를 발생시키거나, 세션의 단절을 알리거나 하지 않는 행위로 Victim이 서비스를 정상적으로 제공할 수 없는 상태로 빠뜨리는 것이다.

바. Tear Drop

우선 "Tear"와 "Drop"의 사전적 의미를 보자.

  • 티어드랍.png
    (이미지 출처 : 네이버 영어사전 검색 결과)
  • 드랍.png
    (이미지 출처 : 네이버 영어사전 검색 결과)
  • 찢어버린다니...;
  • 구멍을 뚫고 떨어지다. 라는 의미로 이해해보자. 가 아니라 이건 그냥 톱니 바퀴를 연상해보자
  • 데이터가 전송될 때 앞에서 MTU에 의해서 패킷 하나가 전송할 수 있는 단위가 한정적이다. 라는 걸 언급하였다. 그렇다면 우리가 컴퓨터에서 사용되는 GB 급의 파일들은 어떻게 전송되는 것일까?
  • 물론, 네트워크로 전송될 때는 분할되어 잘개 잘개 쪼개어져서 전송된다. 그것을 다시 합쳐서 하나로 만드는 것.
  • 이때 이 잘개 잘개 쪼개진 애들이 하나로 합쳐지기 위해서는 "순서번호" 라는 것과 "데이터의 시작과 끝" 위치가 중요한데, 톱니바퀴는 그 톱니 아귀아귀 마다 "딱 딱" 맞춰져야만 돌아간다. 넘쳐도, 모자라도 정상적으로 돌아가지 않게 된다.
  • 데이터 전송 또한 마찬가지이다. "원래의 데이터가 분할되어 전송되고, 다시 수신자가 그 데이터를 원래의 데이터로 합쳐 원본 파일로 만들어내기 위해서는" 전송 된 데이터의 앞, 뒤 연결고리가 맞아떨어져야 한다.(정확하게)
  • 조작을 통해 Offset이라는 것을 수신자가 정상적으로 재 조합 하지 못하도록 하는 공격이 Tear Drop이다.
  • 결국 한줄로 요약하자면, 분할 전송된 데이터를 재조합하지 못하도록 조작된 패킷을 전송.

이렇게..DoS 의 기본적인 6가지 개념을 간단하게(?) 설명해 보았다.

여기 이 아주 오래된 개념 조차도 단어의 연결고리는 무한대에 가깝게 이어질 것이다...T_T

앞으로 주기적으로 포스팅을 할 예정이고, 기존의 네이버 블로그는 완전히 접었다.

오글거리는 자조적인 멘트 적으려다 여기서 이만.

파이썬도 공부해야되는데...

#DoS #DDoS #DrDoS #ARP #Spoofing #Ping of Death #SMURF #LAND Attack #TCP Syn Flooding #Tear Drop #MAC #Memcached #Amplified #Broadcast #backlog Queue #3way Handshaking #Listen Port

+ Recent posts