16
TCP/IP 프로토콜과 네트워크 스캐닝 도구를 이용한 공격 대응 기획연재

TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

TCP/IP 프로토콜과 네트워크

스캐닝 도구를 이용한 공격∙ 응

기획연재

Page 2: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

MMoonntthhllyy 사이버 시큐리티2

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

1. 서 론

이번 회는 연재 마지막으로 앞서 살펴본 스캐닝, 스니핑과 함께 TCP/IP 취약성을 이용하는 공격 중 스푸

핑(Spoofing) 공격 기법에 해서 알아보겠다. 일반적으로 TCP/IP 네트워크 환경에서는 IP의 주소나

ARP 주소를 사용하여 기본적으로 상 를 인증하는 취약성을 가지고 있기 때문에 내가 아닌 남으로 위장

하는 것이 수월하고 현재까지도 문제점으로 지적되고 있다. 또한, 현재 인터넷 환경에서의 공격기법 중 가

장 큰 파괴력을 가진 공격의 하나로서 서비스거부 공격을 들 수 있다. 서비스거부(Denial of Service) 공

격이란 인터넷상의 특정 서비스 혹은 서비스를 제공하는 시스템에 해서 정당한 사용자들의 이용을 어

렵게 만드는 공격의 하나이다. 이러한 서비스거부 공격은 분산된 네트워크 환경의 여러 시스템들을 이용

하여 하나의 목표물을 공격하는 분산서비스거부(Distributed DoS) 공격으로도 변형되어 현재 큰 문제를

야기하고 있다. 이번 회에서는 실제 스푸핑 및 서비스거부 공격도구를 분석하여 그 공격 및 응방안에

해서 알아보겠다.

2. 스푸핑(Spoofing) 공격

가. IP 스푸핑 공격

TCP/IP 프로토콜의 결함에 해서는 이미 1985년에 로버트 모리스의 논문‘A Weakness in the 4.2

BSD UNIX TCP/IP Software’에 언급되었고 1995년 유명한 해커 케빈 미트닉이 이 이론을 실제화 하여

해킹을 시도하다가 체포된 사건이 있었다. 이 사건 이후로 케빈 미트닉이 사용한 해킹기술은 IP Spoofing

TCP/IP 프로토콜 취약성을 이용한 공격∙방어

1 TCP/IP 프로토콜과 네트워크 스캐닝 도구를 이용한 공격∙방어

2. 패킷 모니터링 도구(스니퍼)를 이용한 공격∙방어

3 TCP/IP 인증관련 공격∙방어

고려 학교 정보보호 학원 손태식(박사과정) [email protected]

� TCP/IP 프로토콜과 네트워크 스캐닝 도구를 이용한 공격∙ 응

� 패킷모니터링도구(스니퍼)를이용한공격∙ 응

� TCP/IP 인증관련 공격∙ 응

TCP/IP 프로토콜 취약성을 이용한 공격∙방어

기획연재

고려 학교 정보보호 학원 손태식(박사과정), [email protected]

Page 3: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 3

� TCP/IP 인증관련 공격∙ 응

� 위 그림에서 A는 C로 자신의 IP주소를 위장하여 SYN을 보내 접속 요청을 한다. 요청에 한 응답으로 C가 A에

한 ACK와 함께 자신의 SYN을 전송하지만 A가 이에 해 ACK를 보내지 않으면 C는 자신이 보낸 ACK에 한 A

의 응답을 기다리게 된다. 이 과정을 연속적으로 반복하면(예를 들어 SunOs의 경우, 약 8개 정도의 SYN패킷을

80초 정도 간격으로 보낸다.) C는 외부의 접속요청에 응답할 수 없는 오버플로우 상태가 된다.

� 이후, A는 B로 정상적인 접속을 시도하여 순서제어번호의 변화를 패킷 모니터링을 이용하여 관측한다.

공격과정 �

이라는 용어로 불리게 되며 현재까지 TCP/IP 약점을 이용한 여러 가지의 공격기법이 지속적으로 나오고

있다. IP Spoofing이란 IP를 속여서 공격하는 기법을 의미한다. 현재 알려진 TCP/IP 프로토콜의 약점을

이용한 IP Spoofing 공격은 다음과 같이 알려져 있다.

� 순서제어번호 추측(Sequence Number Guessing)

� 반(Half)접속 시도 공격(SYN Flooding)

� 접속가로채기(Connection Hijacking)

� RST를 이용한 접속 끊기(Connection Killing by RST)

� FIN을 이용한 접속 끊기(Connection Killing by FIN)

� SYN/RST패킷 생성공격(SYN/RST Generation)

� 네트워크 데몬 정지(Killing the INETD)

� TCP 윈도우 위장(TCP Window Spoofing)

그러나 일반적으로 IP Spoofing이란 케빈 미트닉이 사용한 방법을 의미하며 순서제어번호추측 공격,

반(Half)접속 시도 공격 등을 주로 사용한다.

[그림1]Half Connection 시도 공격

Page 4: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

MMoonntthhllyy 사이버 시큐리티4

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

� 순서제어번호의 변화를 관찰하여 추측한 순서제어번호를 이용하여 A는 자신의 IP주소를 C로 가장한 후 B에 접속

요청(SYN)을 보낸다.(순서제어번호의 변화는, 예를 들어 4.4 BSD에서 OS부팅시 1로 세트되고 0.5초마다

64,000씩 증가한다. 또한, 새로운 TCP 접속이 만들어질 때마다 64,000씩 증가한다.)

� B는 수신된 SYN 패킷이 C에서 온 것으로 인식, C에게 ACK와 새로운 SYN를 보내지만 이미 C는 외부와 통신 불

능상태이므로 응답을 할 수 없게 된다.(만일 C가 A보다 먼저 응답하여 RST을 보내게 되면 A의 공격은 실패한다.)

� A는 자신의 IP 주소를 C 주소로 위장하여 추측된 순서제어번호를 이용해 B가 C로 보낸 SYN/ ACK에 한 ACK를

B에 보낸다.

� 결국 A와 B 불법적 접속이 이루어지고, B와 C는 연결되어 있는 것으로 착각한다.

� 이후 rsh을 이용하여 echo ‘+ +’>/.rhosts과 같은 데이터를 보내면 된다.

� 위에서 살펴본 IP 스푸핑이 성공하려면 B의 초기 순서 번호(ISN)를 정확히 추측해야만 했다. 그러면 B의 초기 순

서 번호를 어떻게 추측할 수 있을까? TCP 3-way 핸드셰이크의 핵심은 초기 순서 번호를 추측할 수 없게 만드는

데 있다. 그러나 여러 벤더에서 만든 TCP 스택에서는 이 순서 번호를 추측할 수 있도록 만들어 놓았다. 일부 벤더

가 만든 TCP 스택에서는 순서 번호를 규칙적인 방법으로 증가시켰다. 어떤 TCP 스택에서는 connect() 호출을 받

을 때마다, 즉 SYN 패킷을 받을 때마다 순서 번호를 64,000씩 증가 시켰다. 또한 어떤 TCP 스택에서는 일정시간

마다 순서 번호를 규칙적으로 증가시켰다. 그래서 공격 프로그램은 공격 상 서버에 여러 번 연결을 시도해 본

다음, 초기 순서 번호가 증가하는 규칙을 찾아낸다. 그리고 그 규칙에 의해서 다음번 초기 순서 번호가 어떤 번호

가 될지를 추측한 다음 IP 스푸핑 공격을 수행한다. 리눅스 2.x 버전은 이 초기 순서 번호를 랜덤하게 생성해 내기

때문에 IP 스푸핑 공격에 안전하다고 할 수 있다.

나. ARP Spoofing

ARP(Address Resolution Protocol)는 IP주소를 하드웨어 주소로 변환할 때 사용하는 프로토콜이다. 호

스트 A가 호스트 B로부터 ARP 패킷을 받으면, 호스트 A는 그 정보를 ARP 캐시에 저장해 놓는다. 왜냐하

면 매번 호스트 B의 하드웨어 주소를 요청하면 네트워크 역폭의 낭비가 심하기 때문이다. 그래서 호스

트 A는 ARP캐시를 관리하고 필요할 때마다 그 캐시 정보를 갱신한다. 호스트에서는 ARP 응답으로 받은

내용을 ARP 캐시에 저장한다. 그런데 부분의 운 체제에서는 ARP 요청을 보내지 않았더라도 ARP 응

답을 받았을 경우 그 응답내용을 캐시에 저장한다. 이 때 ARP 응답 패킷이 올바른 것인지에 한 검사는

전혀 하지 않는다.(사실상 검사를 하는 것이 불가능하다.) 그래서 공격자는 다른 호스트의 ARP 캐시에 실

제와는 다른 정보를 넣을 수 있다.

예를 통해 ARP 스푸핑에 해 알아보자. 호스트1의 MAC 주소가 01:01:01:01:01:01이고, IP 주소가

192.168.0.1이라고 하자. 그리고 호스트2의 MAC 주소가 02:02:02:02:02:02이고, IP 주소가

192.168.0.2라고 하자. 그리고 공격자의 MAC 주소가 03:03:03:03:03:03이고, IP 주소가 192.168.0.3이

라고 하자. 공격자는 호스트1에게‘IP 주소 192.168.0.2에 해당하는 MAC주소는 03:03:03:03:03:03이

Page 5: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 5

� TCP/IP 인증관련 공격∙ 응

다’라는 메시지를 보낸다. 그리고 공격자는 호스트2에게‘IP주소 192.168.0.1에 해당하는 MAC주소는

03:03:03:03:03:03이다’라는 메시지를 보낸다. 이 경우에는 호스트1에서 호스트2에게 패킷을 보낼 때는

그 패킷을 호스트3이 받을 것이다. 또한 호스트2에서 호스트1로 패킷을 보낼 때도 그 패킷을 호스트3으

로 보낼 것이다. 즉 호스트3은 호스트1과 호스트2가 서로 통신하는 내용을 모니터링 할 수 있다. 공격자

는 이 방법을 이용하여 스위칭 네트워크 환경에서도 스니핑을 할 수 있다.

아래의 [그림2]에서는 스푸핑 도구 중 ettercap을 사용하여 ARP 스푸핑을 수행한 결과이다. 공격자의 IP

는 163.152.155.237이고, 두 공격 타겟 163.152.155.1과 163.152.155.238의 MAC 주소가 같은 MAC

주소로 변경되었음을 알 수 있다.

다. DNS Spoofing

ARP 스푸핑을 사용하면 스위칭 환경에서 다른 컴퓨터의 트래픽을 스니핑할 수 있다. 스위칭 환경에서 다

른 컴퓨터의 트래픽을 스니핑하는데 사용할 수 있는 또 다른 방법이 바로 DNS(Domain Name Service) 스

푸핑이다. DNS 스푸핑 기능을 제공하는 도구는 앞서 살펴본 Dsniff에 포함되어 있다. DNS란 도메인의 이

름을 숫자로 된 IP 주소로 변환하기 위한 프로토콜이다. DNS는 UDP 또는 TCP 53번 포트를 사용한다. 클

라이언트가 자신이 속한 네트워크의 도메인 서버에게 특정한 도메인 이름(예: yahoo.co.kr)을 요청하면 도

메인 네임 서버는 그 도메인 이름에 해당하는 IP 주소를 클라이언트에게 알려준다. 만약 DNS 서버가 클라

이언트가 요청한 주소 값을 가지고 있지 않은 경우에는 자신보다 상위에 있는 DNS 서버에게 해당 정보를

요청한다. 이때 DNS 스푸핑이 가능한 이유는 정상 DNS 서버의 응답 전에 DNS 스푸핑 공격을 하려는 공

격자가 신 비정상적인 DNS 서버의 응답을 클라이언트에게 보냄으로써 가능하다. 즉, 다음의 [그림3]에

서 DNS 서버는 7번째 과정에서 클라이언트 요청에 한 값을 보내지만, 공격자는 이전에 클라이언트에게

잘못된 DNS 요청 값을 보냄으로써 공격이 가능하게 된다.

[그림2] ettercap를 통해 ARP 스푸핑을 실행한 결과 확인

Page 6: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

MMoonntthhllyy 사이버 시큐리티6

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

� 클라이언트 네임 서버에게“yahoo.com”의 IP주소를 물어본다.

� 네임 서버보다 클라이언트와 가까이 있는 공격자는 이 요청을 먼저 스니핑한다.

� 공격자는 가짜 주소를 클라이언트에게 보낸다.

� 이제 네임 서버도 그 요청을 받는다.

� 네임 서버는 진짜 주소를 클라이언트에게 보낸다.

� 클라이언트는 공격자가 보낸 응답을 받고 가짜 주소로 접속한다.

� 진짜 네임 서버가 보낸 응답을 클라이언트가 받겠지만 이미 접속이 끝난 후이기 때문에 클라이언트는 그 정보를

버린다.

즉 공격자가 가짜 응답을 DNS 서버보다 클라이언트에게 먼저 보낼 수 있다면 클라이언트는 그 정보를

그 로 믿게 된다. 게다가 UDP 패킷은 위조(스푸핑)하기가 매우 쉽다. 그래서 DNS 스푸핑 공격이 일어

날 수 있는 것이다. 결국 공격자는 클라이언트에게 잘못된 주소를 제공할 수 있다. 그러면 클라이언트는

아무런 의심 없이 잘못된 주소로 접속할 것이다. 이러한 DNS 스푸핑 공격은 공격이 비교적 간단한데 비

해서 공격이 주는 효과가 매우 큰 공격이라고 할 수 있다. 그러면 공격자가 어떤 방식으로 공격을 하는지

그림을 통해 알아보자. [그림4]에 DNS 스푸핑 공격의 시나리오가 나와 있다.

[그림4]의 시나리오는 다음과 같다.

[그림3]DNS 서버와 클라이언트의 요청 및 응답 관계

[그림4]DNS 스푸핑 공격

Page 7: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 7

� TCP/IP 인증관련 공격∙ 응

3. 스푸핑 공격 응방안

가. Ingress/Egress Filtering

외부에서 들어오는 패킷이 내부 네트워크의 주소를 가지고 있는지 필터링한다. 즉, 외부의 공격자가 내부

자인척 스푸핑하는 것을 방지한다. 내부 네트워크로부터 외부로 나가는 패킷이 내부의 주소가 아닌 다른

주소를 가지고 나가는지를 필터링 한다. 즉, 내부의 사용자가 다른 네트워크를 공격하려고 스푸핑하는 것

을 방지한다.

나. 소스 라우팅 옵션을 사용하지 않는다.

소스 라우팅에 의한 스푸핑 공격을 막기 위해서 라우터에서 소스 라우팅 옵션을 제거한다.

다. rhost를 사용하지 않는다.

잘못된 신뢰관계에 의한 스푸핑 공격을 막기 위해 r 계열의 명령을 사용하지 않거나, 내부 네트워크 사

용자에게만 최소화하여 허용한다. ARP 스푸핑 공격을 막기 위해 리눅스 커널 2.4.x에서는 요청하지 않

은 ARP 응답이 왔을 경우 캐시에 저장하지 않는 방법을 사용했다. 그렇지만 리눅스 커널 2.4.x에서는

ARP요청(Request)을 받을 경우 그 요청의 출발지 주소를 캐시에 저장한다는 보안 문제점이 있다.

SOLARIS의 경우 캐시에 항목이 없는 ARP 응답을 캐시에 저장하지 않는다. 그렇지만 공격자는 먼저

ICMP_ECHO_REQUEST를 SOLARIS호스트로 보내서 ARP항목을 캐시에 만든 다음 앞에서 했던 것과

같은 스푸핑된 ARP 응답 패킷을 보내는 방식으로 ARP 스푸핑을 수행한다.

4. DoS/DDoS 공격

DoS 공격은 상 방 서버가 해당 서비스를 하지 못하도록 방해하는 공격이다. 공격의 종류에는 특정 프로

그램의 취약점을 이용한 공격, 네트워크 특성상 발생하는 취약점 공격, 무차별 폭탄 공격 등이 있으며 상

방 서버 및 시스템을 중지시키거나 마비시키는 공격 등이 있다. 또한 분산 환경에서 발생할 수 있는

DoS 공격들을 DDoS(Distributed DoS)라고 일컫는다. 이러한 DDoS 공격은 분산 환경에서의 서비스 거

부 공격으로서 1999년 여름부터 두되기 시작한 공격 기법이다. DDoS 공격은 보통 Remote 공격을 통

해 일반적인 취약점이 존재하는 서버를 공략한다. 서버를 장악한 후에는 DDoS 공격 프로그램을 설치한

다. 이때 사용되는 DDoS 공격 프로그램은 trinoo, tfn2k, stacheldraht 등이 있다. 공격자가 공격지시를 명

령하면 마스터 서버는 명령을 받고 그 하위 단계의 데몬들에게 명령하여 여러 서버가 동시에 타겟 서버를

일제히 공격한다.

Page 8: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

가. DoS 공격 기법 분석

(1) SYN Flooding 공격

Syn Flooding 공격은 TCP 연결 설정 과정 중에 3-Way Handshaking 과정에서 Half-Open 연결 시도가

가능하다는 취약성을 이용한 공격으로 이 수법으로 공격당한 시스템은 외부로부터 접속 요청을 더 이상

받아들일 수가 없게 되어 정상적인 서비스를 제공할 수 없게 된다. 이 공격은 윈도우시스템뿐만 아니라

인터넷에 연결되어 TCP 기반의 서비스를 제공하는 모든 시스템들에 해 피해를 줄 수 있으며, 피해는

시스템에 따라 다르다. 그러나 이 문제에 한 완벽한 해결책은 없으며 단지 향을 감소시키는 방법들만

이 알려져 있다. SYN Flooding 공격은 TCP 프로토콜의 연결설정 절차의 설계상의 취약성으로 인해 발생

되는 것으로서 이에 한 완전한 해결책은 마련되지 않았으며, 공격의 가능성을 줄이거나 피해를 최소화

하기 위한 방법 또는 패치들만 제공되고 있을 뿐이다.

(2) Teardrop 공격

Teardrop 공격은 헤더가 조작된 일련의 IP 패킷조각들을 전송함으로써 공격이 이루어진다. 이 공격은 윈도

우NT 뿐만 아니라 이전의 Linux 시스템들에게도 효과가 있다. 이 수법으로 공격당한 시스템은 네트워크

연결이 끊어지거나 일명‘죽음의 푸른 화면(Blue Screen of Death)’이라 불리는 오류 화면을 표시하면서

중단된다. 시스템이 정지될 경우, 사용자는 시스템을 재부팅하여야 하며, 이 경우 시스템에 직접적인 피해

는 없으나 시스템이 정지될 때 저장하지 못한 데이터 등을 잃게 된다. 이 공격이 성공할 수 있는 원인은 윈

도우 및 Linux 시스템의 IP 패킷 재조합 코드의 버그에 있다. 소스코드가 공개되어 있는 Linux를 통해 구체

적으로 문제점을 이해해 보기로 하자. 데이터를 전송할 때 상위 레벨의 프로토콜 처리부에서 전달된 데이터

가 단일 IP 패킷에 모두 수용될 수 없는 경우, 이 데이터는 여러 개의 IP 패킷 조각들에 나뉘어 전달된다.

ip_glue() 함수는 모든 패킷조각이 수신된 후에 이들 패킷조각을 하나의 IP 데이터그램으로 조합하는 일을

하는데 이를 위해 다음과 같은 루틴을 수행한다.

위의 코드에서는 미리 할당해 놓은 버퍼(skb)가 넘치지 않도록 하기 위해 각 패킷조각에 해 그 길이가

너무 크지 않은지를 검사한다. 그러나 각 패킷조각의 길이가 너무 작지 않은지, 즉, 0보다 작지 않은지는

검사하지 않는다. 이것으로 인해 문제가 발생되는 이유는 변수의 타입과 이 변수를 넘겨받은 함수의 변수

타입이 서로 다르기 때문이다. 즉, ‘fp->len’은 부호가 있는 정수로 선언된 반면 이를 넘겨받은

MMoonntthhllyy 사이버 시큐리티8

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

fp = qp->fragments;

while (fp != NULL){if (count+fp->len > skb->len)

{/* handle error condition */....}

memcpy((ptr + fp->offset), fp->ptr, fp->len);

count += fp->len;fp = fp->next;}

Page 9: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 9

� TCP/IP 인증관련 공격∙ 응

‘memcp()’함수는 이 값을 부호가 없는 정수로 이용하기 때문이다. 다시 말해 만약‘fp->len’이 음수로

설정된 경우‘memcpy()’함수는 너무 많은 내용을 복사하여 버퍼의 끝을 넘쳐버릴 수 있는 것이다.

Teardrop 공격에서는‘fp->len’값이 음수가 되도록 하기 위해 서로 중첩되도록 헤더 값을 조작한 두

개의 패킷조각을 이용한다. 하지만, 현재 부분의 시스템에서는 IP 패킷의 재조합시 0보다 작은 패킷에

한 처리 루틴이 포함되어 있어 이러한 teardrop 공격에 해서 방어하고 있다.

(3) Jolt/Sping 공격

이 공격수법은 표준에 규정된 길이 이상으로 큰 IP 패킷을 전송하는데, 윈도우 시스템뿐만 아니라

TCP/IP 프로토콜을 지원하는 많은 종류의 시스템들이 이 공격에 의해 실제 피해를 입을 수 있는 것으로

밝혀졌다. 시스템이 정지될 경우, 사용자는 시스템을 재부팅하여야 하며, 이 경우, 시스템에 직접적인 피

해는 없으나 시스템이 정지될 때 저장하지 못한 데이터 등을 잃게 된다. RFC-791에 따르면 헤더를 포함

한 IP 패킷의 최 길이는 65,535(즉, 2^16 - 1)까지로 제한되어 있다. 따라서 실제로 많은 시스템의 IP

패킷을 처리하는 코드들이 이 같은 최 길이를 가정하여 구현되어 있다. 또한 부분의 시스템이 이 같은

규정 길이보다 큰 패킷을 전송할 수 없도록 구현되어 있다. 그러나 특히 윈도우 시스템을 포함한 일부 시

스템들에서는 이 같은 제한이 구현되지 않았기 때문에 실제로는 규정된 길이 이상의 IP 패킷을 전송할 수

있다. 이 경우, 최 길이를 가정하여 구현된 시스템들은 IP 패킷 처리 코드의 버퍼가 오버플로우되어 결

과적으로 시스템의 재부팅, 중단 등을 포함한 여러 가지 증상의 시스템 문제가 발생할 수 있다. IP의 하위

계층에서 처리할 수 있는 최 길이(MTU)를 초과하는 IP 패킷들은 여러 개의 패킷조각들로 분할되어 전

송되고, 수신측에서 다시 하나의 IP 패킷으로 재조합하도록 구현되어 있다. 이를 이용하여 규정된 길이 이

상으로 큰 IP 패킷으로 재조합되도록 조작된 패킷조각들을 이용하여 전송하는 방법을 사용하면 거의 모

든 시스템을 이용하여 규정된 길이 이상의 IP 패킷을 전송할 수 있다.

통상적으로 공격은 가장 손쉽게 IP 패킷을 전송할 수 있는 ping 프로그램을 이용하여 수행되는 데, ping 프

로그램은 실제 ICMP ECHO 요청 패킷을 상 방에게 전송한다. 통상적으로 IP 패킷의 헤더는 특별한 옵

션을 사용하지 않았을 경우에 20바이트가 사용되며, ICMP ECHO 요청 패킷은 8바이트의 자체 헤더를 사

용하므로 실제 데이터 길이의 최 값은 65535 - 20 - 8 = 65507바이트가 된다. ping 패킷의 최 길이

를 제한하지 않는 시스템에서는 다음과 같은 간단한 명령으로 공격을 수행할 수 있다.

그 외에도 다양한 유닉스 시스템에서 패킷조각들을 이용하여 공격할 수 있는 프로그램들이 공개되어 있

으며, 심지어 공격자의 주소를 위장할 수 있는 공격용 프로그램도 공개되어 있다. 현재 부분의 시스템에

서는 IP 패킷의 재조합시 IP 패킷의 최 크기인 65,535를 넘어서는 패킷에 한 처리 루틴이 포함되어

있어 이러한 jolt 공격에 해서 방어하고 있다.

ping -l 65510 victim.host.ip.address

Page 10: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

(4) Winnuke 공격

이 공격수법은 단순히 Out-of-Band 데이터를 전송하는데, 이 수법으로 공격당한 시스템은 시스템이 완

전히 정지되거나 Blue Screen의 경고화면이 표시되면서 동작중인 응용프로그램이 중단되기도 한다. 윈

도우NT 워크스테이션과 서버 3.51 및 4.0 버전의 경우, TCPIP.SYS 모듈에서 Stop 0x0000000A를 발

생시키며 중단된다. 원래 OOB 데이터는 연결이 설정된 스트림에서 일반적인 데이터에 비해 높은 우선권

을 부여받아 전송되는 데이터로서 보통 예외적인 상황이 발생하 음을 통보하기 위해 사용된다. 이때

TCP/IP 헤더의 URGENT 비트를 OOB 데이터임을 표시한다. OOB 데이터의 전송과 수신은 다음과 같이

이루어진다. 우선 발신 측에서는 send 호출의 MSG_OOB 플래그를 지정하여 OOB 데이터를 전송한다.

다음으로 수신측에서는 recv 호출의 MSG_OOB 플래그를 지정하여 OOB 데이터를 읽어 들일 수 있다.

일반적인 read 호출은 OOB 데이터를 읽어 들이지 않는다. 이때 수신측에서는 수신된 데이터를 반드시

순차적으로 읽어 들일 필요가 없기 때문에 OOB 데이터가 다른 데이터에 비해 우선권을 부여받을 수 있

는 것이다.

윈도우 시스템들이 OOB 데이터를 적절히 처리하도록 구현되지 못해 실제로 OOB 데이터를 받는 경우, 시

스템이 정지해버리게 된다. 윈도우 시스템은 URGENT POINTER를 이용해 주어진 세그먼트의 어느 부

분에서 OOB 데이터가 종료되는지를 확인하는데 이때 URGENT POINTER가 프레임의 끝을 가리키고

있는데 정상적인 데이터가 곧이어 따라오지 않는 경우 이를 적절히 처리하지 못하는 것이다. 이를 이용해

단순히 OOB 데이터를 전송하는 것만으로도 윈도우 시스템을 정지시킬 수 있다. 이 공격수법은 접근을 허

용하는 모든 포트들에 해 공격이 가능하나, 특히 윈도우 시스템의 일부인 NetBIOS 포트(139번 포트)

가 공격에 가장 많이 이용되고 있다. 현재의 윈도우 2000 이상 시스템에서는 이미 이러한 공격에 한 처

리가 포함되어 있어 큰 위험이 되지는 않는다.

(5) Targa - 종합적인 DoS 공격 도구

위에서 설명된 것과 같은 여러 종류의 서비스 거부 공격을 실행하는 공격 도구로서 Mixter에 의해 만들어

졌다. 즉, Mixter는 이미 나와 있는 여러 DoS 공격 소스들을 사용하여 통합된 공격도구를 만든 것이다.

targa에서 지원하는 공격 기법은 bonk, jolt, land, nestea, newtear, syndrop, teardrop, winnuke 등이 있

다. targa는 앞서 분석된 여러 DoS 공격과 그 외 몇몇 DoS 공격 기법을 포함하여 11가지의 공격을 실행한

다. 이중 부분의 공격은 응방안이 나와 있다고는 하지만, 역시 반복적인 연속 공격을 수행하는 경우에

는 시스템의 속도 저하 등의 targa를 이용한 피해가 유발 될 수 있다.

나. DDoS 공격 기법

(1) Trinoo

Trinoo는 UDP flood 서비스 거부 공격을 이용하는 DDoS 프로그램이다. 공격시에는 위의 공격 절차 로

몇 개의 서버들(Master)과 많은 수의 클라이언트들(데몬)로 이루어진다. 마스터에 접속하여 서비스 거부

MMoonntthhllyy 사이버 시큐리티10

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

Page 11: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 11

� TCP/IP 인증관련 공격∙ 응

공격을 수행하라고 명령을 내리면 마스터는 특정한 시간 동안 데몬들과의 통신을 통해 타겟 서버를 공격

하게 된다.

▶ 공격자가 마스터 서버에게 TCP 27665번 포트를 통해 공격명령을 내린다. 이때 패스워드를 요구한다.

▶ 명령을 받은 마스터 서버는 데몬들에게 UDP 27444번 포트를 통해 명령한다.

▶ 이때 명령을 받은 데몬은‘*HELLO*’라는 문자열을 포함하는 UDP 패킷을 마스터 서버의 31335번 포

트에 보내어 응답한다.

▶ 마스터 서버는 실행 가능하다고 확인된 모든 데몬들에게 브로드캐스트 주소로 요청을 보낼 것을 명령

할 수 있다. 브로드캐스트를 수신한 데몬들은‘PONG’이라는 문자열을 포함하는 UDP 패킷을 마스터

서버에 보내어 응답한다.

(2) TFN

TFN은 UDP flood 공격, TCP SYN flood 공격, ICMP echo 요청 공격, ICMP 브로드캐스트 공격(smurf

공격)을 할 수 있는 막강한 기능을 가지고 있다. Trinoo와 마찬가지로 공격자가 클라이언트(마스터) 프

로그램으로 일련의 TFN Server들(Deamon)에게 공격 명령을 보냄으로써 작업이 이루어진다. TFN 마

스터는 ID 필드와 패킷의 위치인수를 가진 16Bit 바이너리 값의 ICMP echo reply 패킷을 사용하여 데몬

과 통신을 한다고 한다. 또, 공격자가 제공한 데몬들의 IP 주소목록을 숨기기 위해 암호화를 사용하기도

한다.

(3) Stacheldraht(슈탁셀드라트)

전작인 trinoo나 TFN처럼 stacheldraht도 client(handler)와 데몬 프로그램으로 구성된다. 하지만,

Stacheldraht는 DDoS 공격 프로그램의 약점을 보완하여 개발되었다. 그 예를 하나 들자면, 공격 시스템

으로부터 마스터 시스템의 연결에서 암호문이 아닌 평문으로 오가는 데이터들이 TCP 세션 하이재킹

공격절차 �

Page 12: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

(session hijacking)이나 RST sniffing 등, 일반적으로 알려진 TCP기반 취약점을 극복하게 되었다. 이는

공격 시스템에서 마스터 시스템으로의 통신을 위해 기존 telnet에 비슷한 형식의 암호화 통신 프로그램

을 추가하 기 때문이다.

(4) TFN2K

TFN2K는 Targa의 진보된 프로그램으로도 볼 수 있다. 프로그램의 제작 역시 Targa를 제작한 Mixter에

의해 만들어졌고 Targa가 기본적으로 제공하는 DoS 공격 외에 추가로 5개의 공격이 더 가능하다.

TFN2K에서 제공하는 공격은 change IP antispoof-level, change packet size, bind root shell, UDP

flood, TCP/SYN flood, ICMP/PING flood, ICMP/Smurf flood, MIX flood, TARGA3 flood 등이 있다.

TFN2k는 분산모드로 작동하기 때문에 클라이언트 모듈과 서버 모듈로 구분되어 있다. 클라이언트 모듈

은 서버 모듈을 제어하는 모듈로서 서버에게 어제 어떤 공격을 누구에게 할 것인지를 지시한다.

tfn2k를 실행하기 위해서는 위의 [그림5]와 같이 tfn2k 인스톨시의 패스워드를 입력해야 만 한다.

MMoonntthhllyy 사이버 시큐리티12

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

[그림5] tfn2k를 실행한 후의 모습

[그림6] tfn 데몬에서 발생하는 공격 패킷을 탐지한 화면

Page 13: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

위의 [그림 6]은 tfn 데몬에서 발생하는 공격패킷을 미리 실행해 놓은 tcpdump 도구로 캡춰한 모습이

다. 위 그림을 보면 소스의 IP 주소는 스푸핑되어 임의로 발생하여 특정 목표를 공격함을 알 수 있다.

5. DoS/DDoS 공격 응방안

가. DoS 공격 응 방안

서비스거부공격에 한 윈도우시스템의 응방안으로는 윈도우의 개발사인 마이크로소프트사에서 윈도

우시스템에 관련된 문제점들이 발표되는 경우, 즉시 이를 해결하기 위한 패치를 개발하여 제공하고 있다.

그러나 마이크로소프트사는 관련된 문제점을 해결하기 위해 수정된 부분들이 시스템의 나머지 부분들에

어떠한 향을 미치는 가에 하여 완전히 검증되지 않은 것이기 때문에 해당되는 문제점으로 인해 직접

적으로 위협을 당하고 있지 않다면 다음 버전의 정식 서비스 패키지가 제공될 때까지 기다릴 것을 권고하

고 있다.

SYN 패킷을 이용한 DoS 공격의 경우, SYN 패킷의 근원지 주소가 위조된 것이므로 공격의 근원을 알아

내는 것은 어려우며 패킷이 공격 상 서버에 도착한 뒤에 근원을 알아내는 것은 불가능하다. 또한 네트워

크는 패킷을 목적지 주소만을 이용하여 전달하므로 근원을 검증하는 유일한 방법은 입력 소스 필터링을

이용하는 것뿐이다. 현재의 IPv4에서는 IP 스푸핑을 제거하는 것이 불가능하므로 이 문제를 이용한 DoS

공격에 해서는 완벽한 해결책이 없는 상태이다. 그러나 엄격한 네트워크 트래픽 관리를 통하여 네트워

크로 유입되거나 이로부터 유출되는 IP 스푸핑 패킷을 감소시킬 수는 있다. 현재로서의 스푸핑된 IP 주소

를 가지고 있는 DoS 공격에 한 최상의 해결책은 외부 접속용 인터페이스로의 유입을 제한하는 필터링

라우터(입력 필터라고 부름)를 설치하여 근원이 내부 네크워크인 모든 패킷의 유입을 금지시키는 것이

다. 이에 더하여, 근원이 내부 네트워크가 아닌 모든 패킷의 유출을 금지시켜 관리하의 사이트로부터 IP

스푸핑을 통한 DoS 공격이 발생되는 것을 방지할 수 있다. 그러나 이러한 방법도 외부 공격자가 다른 임

의의 외부 주소를 이용하거나, 내부의 공격자가 내부의 주소를 이용하여 공격하는 것에 해서는 방어하

지 못한다.

나. DDoS 공격 응 방안

(1) 일반적인 응방안

Stacheldraht의 경우 통신을 위해서 ICMP_echo Reply 패킷을 사용하므로, ICMP 패킷 전체를 라우터에서

막지 않는 한 이들의 통신을 차단하는 것은 거의 불가능하다고 할 수 있다. 따라서 ICMP패킷 전체를 막을

수 없는 경우에는 ping프로그램을 이용하여 평소의 ICMP ECHO나 ICMP ECHO REPLY패킷과 다른 이

www.ncsc.go.kr 13

� TCP/IP 인증관련 공격∙ 응

Page 14: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

MMoonntthhllyy 사이버 시큐리티14

기획연재 TCP/IP 프로토콜 취약성을 이용한 공격∙방어

상한 점이 있는지는 잘 관찰해 보아야 한다. 하지만 규모인 네트워크의 경우는 사실상 불가능한 이론적

인 방법에 불과할 것이다. 즉, DDoS 공격에 이용당하지 않기 위한 사실상 유일한 방법은 해킹 당하지 않는

것뿐이다. 또한 해킹 당하더라도 주기적인 점검과 모니터링을 통하여 침입자가 심어놓은 불법적인 프로

그램들을 제거하는 것만이 유일한 책이다. 또, 네트워크 스캔 도구나 모니터링 도구를 이용하여 자신의

네트워크 내에 공격 데몬이나 마스터가 깔려져 있는지 탐지할 수 있다. DDoS 공격용 프로그램이 설치된

부분의 시스템들은 보안이 허술한 경우가 많은데, 운 체제나 응용프로그램의 주기적인 패치를 비롯한

기본적인 보안관리에 신경을 써야만 한다.

(2) 라우터의 egress/ingress 필터링 기능

egress는 외부 인터넷으로부터 들어오는 패킷을 의미하며, ingress는 내부네트웍에서 외부로 나가는 패

킷을 말한다. egress 필터링이란 지정한 IP(도메인)로부터의 패킷만이 라우터를 통과하게끔 패킷 필터링

을 하는 것이며, 지정되지 않은 IP로부터의 패킷은 모두 Drop된다.

(3) Cisco 라우터에서의 Unicast RPF를 이용한 차단

Cisco라우터에서 제공하는 Unicast Reverse Path Forwarding기능은 Source IP주소가 스푸핑된 DoS공

격을 하는 것을 막아주는데 사용될 수 있다.(RPF기능의 사용을 위해서는 라우터에서 CEF<Cisco

Express Forwarding> 스위칭이 Enable로 되어야 한다.) Unicast RPF는 라우터로 패킷이 들어올 때 패킷

의 Input Interface로의 Reverse Path Route가 존재하는지를 확인한다. 이는 패킷이 소스 IP주소로부터

Input Interface로의 Route Path를 가지고 있는지를 CEF에서 주는 라우팅 정보(FIB, Flow Information

Base)를 이용하여 확인하는 것이다. 만일 Source IP주소가 Spoofing된 것이라면 Source IP로부터 라우

터에 들어오는 Input Interface로의 Reverse Path Route가 존재하지 않을 것이다. 그리하여 RPF는

Reverse Path Route가 존재하면 패킷을 통과시키고, Reverse Path Route가 존재하지 않으면 그 Packet

을 Source IP Address가 Spoofing된 패킷으로 보아 폐기시킨다.

(4) 라우터에서 RFC 1918 지정 IP에서 들어오는 패킷을 모두 막는다.

RFC 1918에서 지정한 IP라는 것은 DHCP 등의 내부의 가상 IP를 사용할 때 쓰이는 IP로서, 이러한 IP를

Source IP Address로 하여 라우터를 통해서 외부로부터 패킷이 들어올 일은 전혀 없다. 이 IP를 Source

IP로 들어오는 패킷이 있다면 그것은 Source IP Spoofing된 DDoS공격 패킷뿐이다.

Page 15: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

www.ncsc.go.kr 15

� TCP/IP 인증관련 공격∙ 응

6. 결 론

인터넷 환경은 점점 유무선 통합 네트워크로의 발전과 새로운 IPv6의 전환으로 그 적용 한계의 끝이 보이

지 않을 만큼 진화하고 있다. 하지만 이런 물리적 환경의 변화와는 달리 기본적으로 인터넷의 기반이 되는

TCP/IP 프로토콜은 개발 초기에 보안성에 한 고려가 적었기 때문에 현재는 물론이거니와 앞으로도 계

속하여 많은 문제를 야기할 것이다. 3회에 걸쳐 본 기고에서는 현재 존재하는 TCP/IP의 보안 취약성에

한 문제와 관련된 공격 도구들을 알아보았다. 분석된 내용들은 이미 알려져 있는 내용들일 수 있으나 정보

보호의 문제는 항상 복잡하고 어려운 문제 속에 있는 것이 아니라 그 기본적이고 근본적인 문제들을 간과

함으로써 항상 발생하고 있다. 그러므로 앞으로 다가오는 BcN, USN, IPv6로 표되는 네트워크 환경의

보다 안전한 네트워크 환경을 위해 다시 한 번 TCP/IP를 근간으로 하는 문제점들을 진단해보는 것이 필

요하다고 여겨진다.

Page 16: TCP/IP 프로토콜과네트워크 스캐닝도구를이용한공격 대응 · tcp/ip 인증관련공격∙대응 위그림에서a는c로자신의ip주소를위장하여syn을보내접속요청을한다

MMoonntthhllyy 사이버 시큐리티 기고문 공모MMoonntthhllyy 사이버 시큐리티 기고문 공모

국가사이버안전센터는 건전한 사이버문화를 선도하고 향후 유비쿼터스 등 정보화 사회에서의 정보보호

에 한 중요성을 제고하고자 정보보호 관련 국내외 제도 및 정책에 관한 제언, 웜∙바이러스 분석, 신종

해킹 및 응방법 등 사이버공간의 안전과 관련된 각종 기고문 및 분석보고서를 공모하오니 정보보호에

관심 있는 많은 분들의 적극적인 참여를 바랍니다.

1. 응모 주제 분야

가. 정보보호 제도 및 정책 관련 기고

� 국내 정보보호 정책에 관한 제언

� 국내외 정보보호 관련 제도비교 및 향후 발전방향

� 해외 유사기관과의 비교를 통한 국가사이버안전센터의 발전방향 제시

나. 웜∙바이러스, 해킹 및 취약성 분석보고서

� 신종 웜∙바이러스 분석보고서 � 신종 해킹, 취약점 및 응방법 � 중요한 피해사례 및 피해현황

다. 기타 국가안보 차원의 사이버위협 관련 분석자료 등

2. 제출 형식 및 작성 방법

� 제출 형식은 자유 형식으로 작성하시되 발행되는‘Monthly 사이버시큐리티’를 참고하여 작성하여

주시기 바랍니다. ※ 홈페이지(www.ncsc.go.kr) → 분석보고서 → 동향분석보고서란 참조

� 제출한 분석보고서는 다른 곳에 발표가 되지 않은 독창성을 지녀야 합니다.

� 각종 인용자료 및 참고문헌을 밝혀주시고 자세한 설명은 각주를 이용하시기 바랍니다.

� 정책제언은 A4기준 5~10P 이내, 분석보고서는 15P 내외로 작성하여 주시고 1인당 응모편수는

제한이 없습니다.

3. 제출 방법 및 기타 사항

� 제출방법 : E-mail([email protected])

� 제출된 기고문 및 보고서는 반환하지 않으며 당선작은 소정의 원고료를 지급하고‘Monthly 사이버

시큐리티’책자에 게재됩니다.

� 당선된 자료를 추후에 다른 곳에 인용시는 반드시‘Monthly 사이버시큐리티’○월호를 명시하여

주시기 바랍니다.

� 기타 문의사항은 국가사이버안전센터로 문의 바랍니다.

(E-mail : [email protected], 전화 : 02-557-0181)

MMoonntthhllyy 사이버 시큐리티16