RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

스위치 계층(L2)은 건축물의 기둥에 해당하는 부분으로 입구경비와 외관 등을 완벽하게 지키더라도 기둥이 무너지면 아무런 의미가 없는 것처럼, 스위치에 연결된 각종 호스트 및 서버의 안정적인 운영을 위해 스위치 계층의 보안은 고려해야 한다. 단 스위치 계층의 특성상 해당 네트워크에 연결돼야만 공격이 가능하므로, 물리적 보안과 관리적 보안의 중요성도 잊지 말아야 할 것이다.


VLAN 공격

VLAN(Virtual LAN)은 스위치의 물리적인 네트워크를 네트워크 관리자가 필요에 따라 좀 더 작은 논리적인 네트워크로 분리하는 것을 의미한다. 1대의 물리적인 스위치를 논리적으로 분리한다는 것은 포트기반, 프로토콜 기반, 서브넷 기반으로 분리할 수 있으며, 벤더에 따라 지원하는 기준은 상이하다. <그림 1>은 포트 기반 VLAN을 구성한 예로, VLAN 1과 VLAN 2의 호스트간에는 통신이 되지 않는다.

VLAN으로 분리한 구성에도 필요상 모든 VLAN이 교집합처럼 공통적으로 액세스가 가능해야 할 포트가 요구될 때도 있다. <그림 1>에서 만약 모든 호스트가 인터넷을 접속해야 하며, 인터넷망과 연결된 라우터가 1대라면 라우터는 어느 포트에 연결을 해야 할까?



<그림1> 정상적인 MAC 테이블 동작



VLAN 1과 VLAN 2가 동시에 액세스할 수 있는 포트가 필요하다. 이러한 포트를 트렁크(Trunk) 포트라고 하며, 트렁크 포트는 여러 개의 VLAN을 중복할 수 있다. 트렁크 설정은 IEEE 802.1Q 또는 시스코의 ISL(Inter-Switch Link) 방식으로 패킷을 변조하는데, 기술적인 용어로는 태깅(tagging)한다고 하며, ISL의 경우 시스코에서만 사용되는 고유한 방식이다. 801.1Q 태깅은 정상적인 패킷 내에 801.1Q 태그 정보가 삽입되게 된다.

보안 위협

① 베이직 VLAN 호핑 공격

이 공격은 네트워크 공격의 일종으로, 정상적인 경우 서로 다른 VLAN 내의 호스트간에는 통신을 하지 못하므로 공격자 역시 통신이 불가능하지만 공격자는 가능하도록 한다. 공격자 자신이 스위치처럼 위장하고, 변조된 ISL 혹은 802.1Q의 패킷을 스위치로 전송해 스위치와 트렁크 포트로 연결됨으로써 VLAN과 관계없이 모든 네트워크로 접속할 수 있다.

공격이 성공한 이유는 공격자와 연결된 스위치에서 트렁크 포트 설정이 관리자가 설정하는 방법 이외에 스위치가 자동적으로 설정하는 DTP 기능이 자동(AUTO)으로 설정되어 공격자가 요청한 트렁크 설정에 스위치가 트렁크 포트로 설정한 것이다.

대부분의 스위치의 DTP기능이 자동으로 초기설정돼 있으며, 이것은 어떤 트렁크 포트의 설정 요청에도 트렁크 포트를 허용한다는 기능이므로 주의해야 한다.

② 더블 인캡슐레이티드 VLAN 호핑 공격

간단히 정리하면, 공격자는 원하는 VLAN으로 접속하기 위한 트렁크 포트가 되기 위해 802.1Q의 패킷 변조를 2번하여 스위치를 공격하는 것이다. 스위치는 첫 802.1Q를 한 번 사용하고 다시 다른 스위치에서 두 번째 802.1Q를 사용하는 방식으로 802.1Q 패킷 변조가 2번이 되었음에도 불구하고, 스위치에서는 한 번만을 해석한다는 기능적인 취약점을 이용해 호핑(hopping)의 의미대로 깡총깡총 VLAN을 넘어다닌다.



<그림3> 더블 인캡슐레이티드 VLAN 호핑 공격 사례



<그림 3>은 공격자가 첫 번째 스위치와 두 번째 스위치에서 802.1Q 정보를 사용함으로써, 공격 대상으로의 접근이 가능하다. 이써리얼(Ethereal)이라는 패킷 스니핑 툴을 이용해 패킷을 정보를 분석해 보면 801.1Q 패킷변조가 2번 되어 있는 것을 확인할 수 있다.

보호 대책

우선 항상 모든 트렁크 포트에 대해서 일관적인 VLAN ID를 사용해야 한다. 즉 VLAN 구성 혹은 장비 설정시 즉흥적인 VLAN ID 할당이 아닌, 정책적이고 분류된 VLAN을 할당한다. 그 다음 사용하지 않는 포트는 꺼 놓은 후 사용하지 않는 VLAN으로 모두 포함시킨다. 여기에서 VLAN 1의 VLAN ID는 사용하지 않는다.

VLAN을 지원하는 장비들의 초기 설정은 모든 포트가 VLAN 1으로 설정돼, 구매 후 별다른 VLAN 설정을 하지 않으면 모든 포트가 VLAN 1에 포함되어 있으므로 일반 스위치와 동일하게 사용할 수 있다.

또한 벤더나 모델 구분 없이 모두 VLAN 1으로 초기설정돼 있으므로, VLAN을 지원하는 A사 제품과 B사 제품 구매 후에도 별다른 설정이 없으면 두 스위치끼리 트래픽이 전송된다. 만약 벤더마다 VLAN 초기설정이 각각 다르다면, 장비 설정을 변경하기 전에는 스위치간 트래픽 전송이 불가능한 사태를 예방하기 위함이다.

마지막으로 일반 호스트(사용자)가 접속하는 포트들은 모두 논-트렁킹(DTP Off)으로 설정해야 한다. 일반 호스트와 연결된 포트가 트렁크 포트로 사용될 일은 극히 희박하므로, 트렁크 포트 변경될 수 없도록 한다.


DHCP 고갈

DHCP(Dynamic Host Configuration Protocol)란 호스트 등의 IP설정 시 사용자가 고정적으로 IP를 할당하지 않고 DHCP 서버에서 제공하는 IP, 서브넷 마스크, 게이트웨이와 DNS 등의 정보를 자동으로 할당받을 수 있는 기능이다. 이것은 수많은 호스트가 존재하는 네트워크 구성에서 관리자의 IP 관리의 효율성을 가져다 줄 수 있는 기능이지만 보안관점에서는 불합리한 점들이 있다.

보안 위협

DHCP 고갈(starvation) 공격은 위조된 MAC 주소로 포함해 DHCP 리퀘스트(request) 패킷을 브로드캐스트한다. 만약 리퀘스트가 충분히 많다면 공격자는 DHCP의 할당 가능한 모든 주소들을 소비시킬 수 있으며, 이것은 SYN 플루드(flood)와 같은 간단한 자원 고갈(resource starvation) 공격이라고 할 수 있다.

이후 공격자는 DHCP 서버로 위장해 사용자들에게 DHCP 주소를 할당하지만, 할당하는 주소에는 잘못된 DNS, 게이트웨이 등의 정보를 포함하고 있으므로 사용자는 위조된 주소 정보로 데이터를 전송한다. 정상적인 네트워크 경로가 아닌 공격자에게 트래픽 전송으로 인한 여러 가지 문제점이 발생한다.

보안 대책

각 포트에서의 사용할 수 있는 MAC 주소를 제한함으로써 CAM 플루딩 공격을 방지하기 위한 방법과 마찬가지로 DHCP 고갈의 대책으로 사용할 수 있으나, 위장된 DHCP 서버를 통한 공격은 차단하지 못한다. 위장된 DHCP 서버를 이용한 공격을 차단하기 위해 RFC 3118의 ‘Authentication for DHCP Messages’에서 DHCP 메시지의 인증 방법을 이용하기도 했지만, 마침내 DHCP 옵션 82에서 근본적인 대책을 마련했다. DHCP 고갈 공격 가능성을 최소화하기 위해서는 네트워크 내의 안전한 네트워트 지역내에 여러 대의 DHCP 서버를 구성하는 것도 고려해 볼만 하다.


사설 VLAN 공격

사설(Private) VLAN의 핵심적인 기능은 같은 IP 서브넷 상의 시스템간 통신을 제한하기 위해 사용한다. 사설 VLAN에 포함된 포트들의 설정은 네트워크 구성을 고려해 트래픽 전송여부에 따라 결정된다.

시스코의 경우 아이솔레이티드(isolated) 포트는 오직 프로미스큐어스(promiscuous) 포트와 통신이 가능하지만, 아이솔레이티드 포트간에는 통신이 차단된다. 공격자가 아이솔레이티드에 속해 있다면, 다른 아이솔레이티드 포트에 속해 있는 호트스를 공격하기 위해서는 사설 VLAN에 의해 차단되지 않아야 하므로, 사설 VLAN의 보안정책을 위배하는 공격을 시도한다.

보안 위협

공격자는 공격 대상 호스트에게 접근하려고 하지만, 사설 VLAN 정책에 서로 다른 아이솔레이티드 포트에 위치하고 있으므로 불가능하다.



<그림4> 사설 VLAN 공격 사례



공격자는 패킷을 위조해 라우터의 MAC 주소를 목적지로 하고 IP 주소는 공격 대상 주소로 하는 변조된 패킷을 전송한다(목적지 MAC:목적지 주소=C:2). 위조된 패킷을 수신한 스위치는 목적지 MAC 주소가 라우터이고, 라우터는 프로미스큐어스 포트에 연결돼 있으므로 스위치는 라우터로 공격자가 전송한 패킷을 전달한다(사설 VLAN의 정책에 위배되지 않음). 즉 스위치는 MAC 주소만을 보고 라우터로 전송한 것이다.

패킷을 수신한 라우터는 IP 주소가 라우터 자신이 아닌 공격대상 호스트의 IP이므로, 목적지를 공격대상 호스트의 정상적인 MAC 주소로 변경(목적지 MAC:목적지 주소=C:2 → B:2 로 변경)해 스위치로 재 전송한다. 즉 라우터는 IP만을 보고 재 전송한 것이다.

스위치는 라우터가 재전송한 패킷의 목적지의 MAC 주소가 공격 대상의 MAC 주소이므로 공격대상으로 전달한다. 결국 공격자는 스위치→라우터→스위치→공격 대상의 경로로 사설 VLAN 정책이 무의미하도록 통신을 하고 있다.

보안 대책

공격이 가능한 이유는 공격자의 위조된 패킷이 라우터로 접속이 가능했기 때문이므로, 라우터의 인터페이스에 ACL(Access Control List)을 설정해 차단해야 한다. ACL은 스위치와 연결된 인터페이스로 유입되는 IP 프로토콜 중 출발지, 목적지가 모두 내부 네트워크인 트래픽을 차단하도록 설정한다. 출발지와 목적지가 내부 네트워크인 트래픽은 라우터까지 전송되지 않고 스위치에서 전송할 수 있으므로, 라우터까지 도달할 필요가 없기 때문이다. 이러한 ACL 설정으로 공격자의 위조된 패킷이 스위치에서 라우터에 도달할 경우 차단된다.


스위치 액세스

장비 관리, 설정과 모니터링 등을 위해 스위치에는 IP를 할당하며 텔넷, http 등의 접속으로 직접 장비로 접속할 수 있다. 불법적인 접속을 차단하기 위해 계정 및 패스워드 인증으로 권한에 따라 모니터링 혹은 설정 변경이 가능하다. 물론 벤더마다 상이하지만, 공통적인 것은 인증절차를 제공하고 있다는 것이다. 보통 장비 구매 후 운영 네트워크에 설치할 때, 다음과 같은 과오를 자주 범한다.

  • 패스워드를 설정하지 않는다.
  • 패스워드는 간단한 것을 사용한다.
  • 장비 초기 설정된 패스워드를 그대로 사용한다.
  • 사용에 아무런 문제가 없으므로 초기 설정으로 그대로 사용한다.
  • 장비 설정시 정상적으로 동작하면 더 이상의 설정은 하지 않으며, 제공 기능들에 대해 고민하지 않는다.



보안 위협

공격자는 스위치의 IP정보, 벤더 및 장비명, 벤더별 장비의 초기 패스워드 정보 등을 쉽게 파악할 수 있으므로, 위와 같은 스위치 운영환경에서는 쉽게 장비로 로그인할 수 있다. 공격자가 장비로 직접 접속할 수 있다는 것은 매우 위험한 일이다.

그 순간부터 공격자는 전지전능한 신이 되어 장비 설정 변경, 운영 펌웨어 삭제, 설정 내용 삭제, 설정 내용 백업, 특정 포트의 셧다운과 인에이블(enable) 반복, 리부팅 등 무수한 일을 할 수 있다. 장비에서 제공하는 모든 기능들을 검토하고 실습할 것이다.

보안 대책

레이어 2 계층의 스위치는 백본 스위치처럼 고성능의 고가의 장비가 아니므로 소홀한 경향이 현실인 것만은 분명하다. 그러나 스위치의 보안강화는 스위치와 연결된 모든 호스트 및 서버들의 정상적인 운영을 위한 기초가 되므로 다음과 같은 보안대책으로 안전한 스위치 운영의 토대를 마련해 보자.

  • 스위치의 패스워드는 중요 서버의 부트(root) 패스워드와 같은 수준으로 설정한다.
  • 패스워드 인증 이외에 계정입력 기능이 제공되면 활용하도록 한다.
  • 장비의 초기설정 계정 및 패스워드는 반드시 삭제 혹은 변경한다.
  • ACL을 활용한 접근제어를 설정한다. 관리자의 호스트 주소, 혹은 네트워크 대역만이 접속할 수 있도록 한다.
  • SNMP(Single Network Management Protocol) 기능을 사용하지 않을 경우 삭제하고, NMS(Network Management System)를 통한 관리를 하고자 할 경우 SNMP 커뮤니티를 패스워드 정책에 준하는 수준으로 변경한다. 공격자는 SNMP 커뮤니티만을 파악함으로써 90% 이상의 하드웨어 정보와 운영정보를 얻을 수 있다.
  • SSH, SSL 등 암호화된 프로토콜을 이용한 장비접속을 구현한다. 물론 장비의 지원여부를 확인해야 한다. 일반적인 텔넷 혹은 http의 경우 네트워크 스니핑으로 패스워드 등의 주요 정보가 노출될 수 있다.
  • 장비의 로깅 기능을 활용한다. 로그서버로의 전송을 설정하고 주기적인 로그분석으로 운영상태 점검 및 침해사고 대응의 기초자료로 활용한다.

스위치 계층(L2)의 공격은 장비 공격과 트래픽 흐름을 변경하는 네트워크 공격으로 크게 분류할 수 있다. 장비공격은 스위치의 허술한 보안설정, 관리정책과 동작원리 등의 취약점을 이용한 공격이며, 네트워크 공격은 스위치 계층의 통신원리를 이용해 불법적으로 트래픽 흐름을 변조하는 공격이다. 이번 호에는 네트워크 공격에 해당되는 MAC 플루딩, ARP 스푸핑, 스패닝 트리 공격의 원리와 위협, 대책을 살펴본다.


MAC 플루딩

스위치의 지능적인 기능 중의 하나인 MAC 정보의 저장은 허브와 같은 공유된 이더넷 방식의 문제점을 해결하고 고성능을 제공하는 획기적인 기능이었지만, 스위치 역시 하드웨어이므로 저장할 수 있는 물리적 공간의 제약으로 저장 가능한 최대 MAC 주소가 제한된다. MAC 플루딩(Flooding) 공격은 이러한 점을 이용해 스니핑이 가능하도록 하는 공격 방법이다. 우선 정상적인 MAC 테이블의 동작을 살펴보자.



<그림1> 정상적인 MAC 테이블 동작



<그림 1>을 보면 현재 스위치에 저장된 MAC 정보는 포트 1과 3에 MAC A, C를 파악하고 있다. MAC A가 B와 통신하기 위해서 데이터를 전송하면, 스위치는 MAC B에 대한 저장된 정보가 없으므로, 플루딩을 실시한다. 플루딩이란 스위치가 MAC B에 대한 정보가 없어 허브의 동작과 동일하게 포트에 연결된 모든 호스트로 데이터들을 전송하는 것을 말한다. 스위치와 연결된 모든 호스트들은 MAC A가 전송한 데이터를 수신하며, 자신의 MAC 주소가 아닌 호스트들은 데이터를 폐기하지만, MAC B 호스트는 MAC A로 데이터를 전송한다. MAC B가 MAC A로 데이터를 전송하면, 스위치는 MAC B가 포트 2번에 연결되어 있음을 파악하고 MAC정보와 포트정보를 저장한다. 다시 MAC A가 MAC B와 통신을 할 경우 스위치는 저장된 MAC 정보를 이용해 플루딩하지 않고 바로 포트 2를 통해 MAC B로 전송하므로 MAC C에는 데이터가 전송되지 않는다.

개요

MAC 플루딩 공격은 한 포트에서 수 천 개의 호스트가 스위치와 연결되어 있는 것으로 보이지만 실제는 변조된 MAC 정보를 공격 호스트에서 발생시키는 것이다. macof라는 유명한 공격 툴은 약 130여줄의 C로 짜여진 프로그램으로 분당 15만5천개의 MAC 주소를 발생할 수 있다. 짧은 시간 대량의 위장된 MAC 주소를 특정 포트에서 발생시키면, 스위치는 발생된 MAC 주소를 내부에 저장하게 되는데 스위치의 하드웨어 공간 제약으로 인해 최대 저장할 수 있는 MAC 주소 공간이 위조된 MAC 주소로 채워지게 된다.

공격이 진행되고 있는 상태에서 스위치와 연결된 정상적인 호스트가 통신할 때, 스위치의 MAC 정보에는 이미 공격자의 위조된 MAC 주소만이 존재한다. 이때 풀루딩이 가동된다. 플루딩 동작으로 데이터가 모든 호스트에 전달되므로, 공격자는 자신의 호스트에서 스니퍼를 이용한 스니핑이 가능하다.

보안 위협

스위치화된 이더넷 환경에서 불가능한 스니퍼를 이용한 스니핑이 가능하게 한다. 스니핑이 가능하다는 의미는 결국 스니핑으로 통한 주요 정보 유출이 가능하므로 허브 구성의 패킷 스니핑(Packet Sniffing)의 보안위협과 동일하게 된다.

보안 대책

MAC 플루딩 공격은 특정 호스트가 대량의 변조된 MAC 주소를 생성하므로 이를 차단하면 가능하다. 즉 각 포트마다 사용하는 MAC 주소를 스위치에 설정하거나, 포트마다 수용할 수 있는 최대 MAC 주소의 개수를 제한하는 것이다.

스위치가 인식할 수 없는 MAC 주소를 감지하게 되면 해당 MAC 주소를 차단하거나, 포트를 사용하지 못하도록 하는데, 이러한 기능은 네트워크 장비 벤더와 장비 모델에 따라 지원여부를 확인해야 한다. 일례로 시스코 경우는 포트 보안(Port Security)이라는 기능이며, 해당장비와 자세한 기술정보는 <표 1>과 같다.

<표1> 시스코 포트 보안
지원장비
Cat 29XX, 4K, 5K, and 6K in CatOS 5.2; 29/3500XL in 11.2(8)SA; 2950 in 12.0(5.2)WC(1); 3550 in 12.1(4)EA1
기술정보
Http://cisco.com/univercd/cc/td/doc/product/lan/cat5000/rel_5_4/
config/sec_port.htm



ARP 스푸핑

ARP 스푸핑(spoofing)은 MAC 플루딩처럼 스위치를 직접적으로 공격하는 유형이 아니라, 트래픽의 흐름을 변경하는 트래픽 흐름 변경(traffic redirection) 형태의 공격이다. 일반적으로 네트워크 내의 호스트 A가 C와 통신을 하고자 할 때, 호스트 A는 네트워크 상에 ARP 요청(request)을 브로드캐스트(broadcast)하고 ARP 리퀘스트를 수신한 네트워크상의 모든 호스트 중 해당 호스트 C가 자신의 MAC 주소를 포함해 ARP 회신(reply)을 A로 전송한다.

스위치화된 네트워크 환경에서도 ARP 요청은 네트워크로 브로드캐스트된다.

공격자의 호스트가 B라고 하면, 공격자 역시 ARP 요청 정보를 수신하고, 호스트 A로 변조된 ARP 회신을 전송하되, 자신의 MAC 주소로 변조돼 있다.

변조된 ARP 회신 응답을 수신한 호스트 A는 자신이 파악한 C의 MAC 주소로 통신을 하지만, 실제로 A가 알고 있는 MAC 주소는 C의 MAC 주소가 아닌 공격자가 변조해서 전송한 공격자 호스트 B의 MAC 주소이므로, 실제 통신은 공격자 호스트다. 이러한 공격이 트래픽 흐름 변경을 이용한 공격이다.

개요

ARP 스푸핑 공격은 스위치로의 직접적인 공격이 아닌 트래픽의 흐름을 변경하는 트래픽 흐름 변경 공격이라고 언급했다.

과연 공격자가 트래픽 흐름 변경 기능으로 무엇을 할 수 있을까? 공격자는 위조된 ARP 회신 패킷을 전송함으로써 네트워크에 존재하는 호스트의 ARP 테이블에 공격자의 MAC 주소를 모두 성공적으로 업데이트했지만, 이것만으로는 완벽한 공격의 성공이라고 보기는 어렵다.

비록 MAC 주소의 변조로 공격자의 호스트로 트래픽이 전달되더라도 공격자가 통신하는 응답을 정상적으로 제공해야만 공격자가 있음을 알지 못하고 계속 통신을 할 것이다. 비정상적인 통신 응답이 발생하면 접속을 중지하든지 혹은 원인 파악을 위해 노력하므로, 공격자는 더 이상의 정보를 얻을 수 없다.



<그림> ARP 스푸핑 공격



<그림 2>는 공격자가 ARP 스푸핑을 이용해 호스트의 서버 접속, 인터넷 접속이 공격자를 경유하고 있음을 보여준다. 공격자는 서버로 접속하는 프로토콜(텔넷과 같은)과 인터넷 접속에 사용하는 프로토콜(웹 서비스와 같은)을 호스트에게 정상적인 응답을 전달해야만 가능하다.

그러므로 ARP 스푸핑 공격과 함께 공격자는 호스트가 통신하고자 하는 프로토콜(웹, ftp, 텔넷, 이메일 등)을 정상적으로 이용할 수 있도록 일종의 서비스 제공 기능을 갖춰야 한다. 일부 알려진 툴들은 이러한 서비스들을 놀라울 정도로 제공한다. <그림 3>은 arpspoof라는 툴을 이용해 10.5.1.109의 ARP정보가 변조됨을 알 수 있다. 공격자는 계속 arpspoof 공격을 진행하면서, 정상적인 사용자가 이용할 프로토콜에 대해 서비스를 제공함으로써 패스워드 정보 등 불법적으로 정보를 수집해야 할 것이다.

패스워드 전문 스니핑 툴 중에 dsniff라는 툴이 있는데, 30여가지 이상의 표준 프로토콜 혹은 애플리케이션 프로토콜을 선택적으로 이용할 수 있다. 이를 나열하면 FTP, 텔넷, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, 넵스터(Napster), PostgreSQL, 미팅 메이커(Meeting Maker), 시트릭스 ICA, 시만텍 피씨애니웨어, NAI 스니퍼, 마이크로소프트 SMB, 오라클 SQL쪻Net, 사이베이스 et Microsoft SQL 등이다.

<그림 4>는 dsniff를 이용해 웹서비스(http)의 계정 및 패스워드를 파악한 예이다. 공격자는 dnsspoof를 이용해 dsniff가 설치된 호스트로 DNS정보를 변조할 수 있다. 분명 www.amazon.com의 DNS 조회결과는 15.1.1.25가 아닐 것이다. 심지어 dniff는 SSL과 SSH 세션까지도 가로챈 뒤 거짓 인증서 정보를 제공할 수도 있다. 또한 dsniff는 Arpspoof, Dnsspoof, Dsniff, Filesnarf, Macof, Mailsnarf, Msgsnarf, Tcpkill, Tcpnice, Urlsnarf, Webspy, Sshmitm, Webmitm 등의 툴들이 구성요소로 포함되어 있어 다양한 공격도 가능하다.

보안 위협

누차 강조하지만 ARP 스푸핑은 스위치로의 직접적인 공격이 아니라 트래픽 흐름을 변경하는 트래픽 흐름 변경 공격 유형이다. 따라서 단순하게 ARP 스푸핑 공격만을 이용하기보다는 여러 가지 툴들을 이용해 조합된 공격을 하는 것이 특징이다.

MAC 플루딩 공격보다 좀 더 지능적이며, 모든 트래픽이 공격자의 호스트로 전송되므로 트래픽 분석을 통한 주요 정보 유출 가능성이 존재하는 스니핑의 전형적인 보안 위협과 동일하다.

보안 대책

우선 존알람(ZoneAlarm) 등과 같은 개인방화벽 제품(상용/프리웨어 포함)들을 이용해 공격을 탐지할 수 있다. 물론 제품에 따라서 기능 지원 차이가 있으므로 확인해 보는 것도 좋다. 스니핑의 필수조건인 프로미스큐어스 모드(promiscuous mode)의 네트워크 카드를 탐지하는 전용 툴을 사용하는 것도 시도해 볼 만 하다.

ARP 와치(Watch)도 ARPspoof 공격의 보안대책으로 매우 효과적이다. arpwatch라는 툴은 호스트들의 ARP 정보를 모니터링하고 있으며, 중복되는 경우 탐지해 알람 등의 방법으로 관리자에게 알려주게 된다. 하지만 무엇보다 장비의 보안설정을 강화하는 것이야말로 핵심이다.

이는 네트워크장비에서 제공하는 보안기능을 활용하면 된다. 물론 장비 벤더, 모델마다 기능지원 여부 등이 상이하므로 확인해 봐야 한다.

시스코의 경우 개인 가상랜(private VLAN) 기능을 이용하여 arpspoof에 대한 대책을 세울 수 있다. 개인 가상랜은 동일한 가상랜 내에서 포트 단위로 분리할 수 있는 기능으로, promiscuous/ isolated/ community의 포트 속성을 정의함으로써 트래픽 이동에 대한 제한이 가능하다.


스패닝 트리

스패닝 트리(Spanning Tree)는 레이어 2 계층에서 네트워크 무장애 운영을 위한 스위치의 리던던트 구성시 트래픽 전송의 물리적인 복수경로로 인한 트래픽의 루핑(looping) 현상을 막기 위한 기능으로, STP는 스패닝 트리 프로토콜의 약자다.



<그림5> 스패닝 트리 공격 사례



<그림 5>의 경우, 호스트 A와 B간 통신을 하는 구간이 다중으로 구성되어 있으나, STP에 의해 4번과 3번 스위치의 연결을 논리적으로 차단함으로써 트래픽 전송은 Aa 1a 2a 3a B의 경로로 전달된다. STP를 구현하는 환경에서는 스위치가 부팅하면, 루핑을 방지하기 위한 일련의 과정이 시작된다. 스위치는 루트 스위치라는 루트 브리지가 발견되면, 자신과 연결된 이중화 경로를 모두 차단하고 오직 루트 스위치와 연결된 경로만으로 트래픽을 전송함으로써, 트래픽 경로를 결정하게 된다.

루트 스위치를 경유한 트래픽 전송 경로가 선정되므로 루트 스위치를 잘못 설정하면 최적의 경로가 설정되지 못할 수도 있다. STP는 BPDU(Bridge Port Data Unit) 메시지라는 것을 상호 교환함으로써 STP의 모든 과정을 진행하고 판단한다.

개요

<그림 5>를 살펴보면 STP 구동을 1번 스위치가 루트가 되어 2번 스위치와 트래픽을 송수신하고 있다. 이때 공격자는 변조된 BPDU 메시지를 전송하여 강제로 스패닝 트리의 계산을 다시 하도록 함으로써 자신이 루트가 된다.

공격자가 루트가 됨으로써 트래픽 전송 경로는 1번-공격자-2번 스위치의 전송경로로 변경되며, 이때 공격자의 호스트는 브리지 역할을 수행하거나, 허브와 같은 장비를 이용하여 트래픽을 정상적으로 전달한다.

즉 트래픽 흐름을 끊기지 않게 한다는 것이다. 공격자는 자신의 호스트에 스니퍼 등의 스니핑 툴을 설치하여 불법적인 정보수집이 가능하다.

또한 일종의 DoS(Denial of Service) 공격 형태가 될 수 있다. 만약 1번과 2번 스위치 구간이 기가비트의 물리적인 대역을 통해 대량의 트래픽이 전송되고 있었는데, 공격자를 경유한 전송경로의 변경으로 기가비트 대역폭 대신 공격자를 경유한 10M 대역폭 구간으로 트래픽이 전송된다면 대역폭 부족으로 인한 패킷유실 및 공격자의 트래픽 전송이 저성능으로 네트워크의 성능 저하를 초래한다.

보안 대책

스패닝 트리 공격이 가능한 이유는 공격자가 BPDU 메시지를 스위치로 전송해 자신이 루트 스위치가 됨으로써, 전송경로가 변경되어 가능했다. 그렇다면 불법적으로 BPDU 메시지를 수용하지 않으면 공격은 불가능할 것이다. 각 네트워크 장비벤더에서는 BPDU 메시지의 전송으로 인한 문제점을 제거하기 위해서 여러 가지 기능을 제공하므로 기능들을 확인해야 한다.

시스코의 경우 스위치에 BPDU 가드 기능을 이용해 불필요한 스위치에 BPUD 메시지를 수용하지 않도록 하거나, 루트 가드(Root Guard) 기능을 이용해 BPDU 메시지로 인해 불필요한 스위치가 루트가 되지 않도록 설정하는 방법이 있다.

스패닝 트리는 중규모 이상의 네트워크에서 레이어 2 계층의 리던던트 구성을 하는 경우가 있으므로 네트워크 관리자는 스패닝 트리를 이용하는 장비의 보안기능을 검토, 적용해야 할 것이다.


오늘날 인터넷이 없는 생활은 상상하기도 어려운 일이다. 인터넷의 근간이 되는 TCP/IP 통신은 라우터, 스위치, 허브 등 TCP/IP 기반에서 동작하는 네트워크 장비들의 물리적 구성으로 이뤄져 있다. 이 가운데 각종 애플리케이션 서버, 3계층 동작의 라우터와 백본 스위치 등에 대한 보안 투자는 활발히 이뤄지는 반면, 2계층의 보안은 상대적으로 미비한 수준이다.


인터넷을 접속하고자 하는 사용자의 컴퓨터는 랜(LAN) 케이블을 통해 허브나 스위치로 연결되어 있으며, 허브나 스위치는 라우터와 연결되어 라우터가 제공하는 네트워크 경로에 따라 외부 네트워크와 연결된다. 이 때 스위치는 어떤 네트워크에도 설치되어 있고 쉽게 볼 수 있는 장비이기 때문인지, 스위치에 대한 보안은 큰 고민을 하지 않는 게 현실이다.

각종 애플리케이션 서버, 3계층 동작의 라우터와 백본 스위치 등에 대한 보안 투자는 활발히 이뤄지는 반면, 2계층의 보안은 상대적으로 미비한 수준이다. 서버, 라우터 등의 보안은 철저하지만 서버가 연결된 2계층의 침해가 발생한다면 서버가 100% 정상적으로 동작되더라도 서비스 장애는 발생할 것이다. 보안은 균형적으로 이뤄져야 한다.


2계층의 보안

OSI-7 레이어 모델은 통신하는 상호간의 정보가 없음에도 서로 다른 계층간에 동작할 수 있도록 설계됐다. <그림 1>은 호스트 A와 호스트 B간의 OSI-7 레이어 모델을 도식화한 것이다. 각 계층은 인캡슐레이션(encapsulation)과 디-인캡슐레이션(de-encapsulation)을 통해 상호 통신하게 된다.



<그림1> 호스트 A와 호스트 B간 OSI-7 레이어 모델



만약 2계층인 데이터 링크 계층의 침해가 발생할 때 그 영향으로 상위 계층으로 확산되어 상호 데이터 전송의 문제가 발생되는 ‘도미노 효과(Domino Effect)’ 현상이 발생한다. <그림 2>와 같이 2계층의 공격은 네트워크의 운영 및 응용프로그램 장애로 확대되므로 침해 영향을 최소화하기 위한 보안정책을 고민해야 한다.



<그림2> 도미노 효과



2계층의 공격은 장비 공격과 트래픽 흐름을 변경(traffic redirection)하는 네트워크 공격으로 크게 분류할 수 있는데, 장비공격은 스위치의 허술한 보안설정, 관리정책과 동작원리 등의 취약점을 이용한 공격이며, 네트워크 공격은 2계층의 통신원리를 이용해 불법적으로 트래픽 흐름을 변조하는 공격이다.


2계층 통신 원리

랜 환경의 호스트들은 두개의 주소를 가지고 있다. 하나는 MAC(Media Access Control) 주소로 네트워크 내의 각 노드를 구별할 수 있는 고유한 인식표로 생각할 수 있으며 네트워크 카드 내에 저장되어 있어, 호스트로부터 데이터를 전송하는 단위인 프레임으로 변화할 때 이더넷 프로토콜에 의해 사용되고, 다른 주소인 IP 주소는 애플리케이션에 의해 사용된다.

2계층에서 특정 호스트로 데이터를 전송할 경우 IP 주소를 사용하기보다 MAC 주소를 포함하고 있는 이더넷 헤더를 이용하므로, IP 주소를 네트워크 카드의 하드웨어 주소인 MAC 주소로 파악하는 과정이 필요하다. 데이터를 전송하는 호스트는 내부에 저장된 일종의 테이블에서 수신할 호스트의 MAC 주소 검색이 시작되며, 만약 해당 정보가 존재하지 않을 경우, 수신할 호스트의 정보를 네트워크 상에 브로드캐스트(broadcast)하게 된다. 이때 내부에 저장된 정보를 ARP 캐시라고 정의하며, 브로드캐스트된 정보를 ARP 리퀘스트라고 정의한다.

ARP 리퀘스트를 전송하는 호스트는 자신의 정보를 포함해 전달했으므로, 네트워크 내의 ARP 정보를 수신한 해당 호스트는 자신의 MAC 주소를 전송한 호스트로 알려주어 결국 데이터를 전송하는 호스트는 수신할 호스트의 MAC 주소를 파악하게 되어 통신하게 된다. 이렇게 IP 주소를 MAC 주소로의 변환하는 과정을 ARP라고 정의한다. <그림 3>은 ARP의 예이다.



<그림3> ARP 사례



패킷 스니핑

이더넷 환경은 공유된 이더넷(Shared Ethernet)과 스위치화된 이더넷(Switched Ethernet) 두 가지로 크게 구분될 수 있으며, 환경에 따라 스니핑 가능성은 차이가 있다. 패킷 스니핑을 위한 필수적인 요구사항은 네트워크 카드의 프로미스큐어스 모드(promiscuous mode)이다.

일반적으로 인터페이스 카드는 수신한 패킷들이 자신을 목적지로 하는 트래픽이 아닐 경우 폐기하지만, 프로미스큐어스 모드는 패킷 정보를 모두 수용하므로 네트워크 상의 모든 패킷을 수신할 수 있으므로, 사용 목적에 따라 악용될 가능성도 있다.

  • 공유된 이더넷 : 동일한 버스(bus)로 연결된 모든 호스트는 대역폭을 공유하게 된다. 이러한 경우 두 호스트간 데이터를 전송할 때, 해당 호스트뿐만 아니라 연결된 모든 호스트들에게도 데이터가 전송되는 문제점이 있다.

  • 스위치 환경 이더넷 : 허브 대신 스위치로 구성되어 있으므로 스위치 환경 이더넷이라 불린다. 스위치는 연결된 호스트들의 MAC 주소 정보와 해당 MAC 주소가 어떤 물리적인 포트에 위치하고 있는지 파악하고 있다. 이러한 스위치의 지능적인 기능으로 호스트간 통신을 할 때, 공유 이더넷 방식과는 달리 스위치가 목적지의 MAC 주소 정보를 검색해 물리적으로 연결된 포트로만 데이터를 전송하므로, 연결된 모든 호스트들에게 데이터를 전송하지 않는다.


    패킷 스니핑의 보안 위협

    보안상 패킷 스니핑의 문제점은 공격자가 네트워크 상의 데이터를 수집하여, 분석할 수 있다는 것이다. 자주 이용하는 프로토콜 중 텔넷, SNMP, POP, FTP, IMAP, NNTP 등은 데이터의 내용이 평문(clear text)이므로 계정, 패스워드 등의 주요 정보가 유출될 위험이 매우 크다. 근래 의사소통 및 업무용으로 활성화된 IM(Instance Messenger) 역시 통신하는 내용이 평문으로 전송되므로 개인정보의 유출의 위협이 존재한다.

    유닉스 계열의 스니핑 툴은 Tcp dump, Ethereal, Dsniff, Snort, Sniffit와 Trinux 등과 윈도 계열의 스니핑 툴인 Ethereal, Windump, Network Associates Sniffer, EtherPeek, Analyzer 등 무수히 많은 툴들이 존재하며, 툴들의 지능화로 디코드(decode) 기능이 보강되어 전문적인 사전지식 없이도 수집된 데이터들을 쉽게 분석, 파악할 수 있다. 디코드 기능이란 스니퍼의 각 패킷단위로 수집한 내용을 조합해 완전한 데이터로 복원하는 기능이다. 예를 들어 텔넷의 패스워드가 abc라고 가정하면 스니퍼를 이용하여 볼 수 있는 내용은 a, b와 c 각각 보이지만, 디코드 기능을 이용하면 abc를 모두 조합시켜 보여준다. 이것은 수집된 수많은 패킷들을 사용자가 하나하나 찾아서 조합하는 과정을 툴이 자동적으로 해결해 준다는 편이성을 제공한다.


    패킷 스니핑의 보안 대책

    첫 번째, 공유된 이더넷 환경인 허브(HUB)를 사용하는 구성에서는 반드시 스위치 장비로 교환해야 한다. 네트워크 규모 및 운영 특성에 맞게 소호형의 저가형 스위치부터 대용량, 고성능의 고가형 스위치까지 매우 다양하므로 적절히 선택할 수 있다. 스위치의 교환으로 스니퍼만을 이용한 단순한 스니핑의 위협에서 해방될 수 있다.

    두 번째, 스위치화된 이더넷 환경이라도 안전하지는 않다. 왜냐하면 스위치를 공격해 스니핑이 가능하도록 하는 MAC 플루딩, ARP 스푸핑 등의 공격 방법들이 있다. 네트워크 관리자는 프로미스큐어스 모드로 운영되는 네트워크 카드가 존재하는지, 혹은 공격 여부에 대해 주기적인 파악이 필요하다.

  • 핑 방법 : 의심되는 호스트로 핑 리퀘스트를 전송한다. 정상적인 호스트라면 MAC 주소가 해당하지 않으므로 응답이 없어야 하지만, 프로미스큐어스 모드의 공격 호스트는 MAC 주소의 비교로 패킷을 폐기하지 않으므로 응답을 전송한다. 하지만 이 방법은 오래된 방법이고, 근래에는 신뢰할 수 없는 방법이다.

  • ARP 방법 : 호스트는 ARP 정보를 캐시(임시저장)한다. 논-브로드캐스트(non-broadcast) ARP를 전송하면, 프로미스큐어스 모드의 공격 호스트는 ARP 주소를 캐시하고, 다시 IP와 함께 핑 패킷을 브로드캐스트하는데, 이때의 MAC 주소는 전과 다르다. 오직 공격자의 호스트만이 스니핑된 ARP 정보를 통하여 정상적인 MAC 주소로 응답을 줄 것이다.

  • 로컬 호스트의 검사: 만약 특정 호스트가 공격으로 인해 프로미스큐어스 모드로 운영될 가능성도 존재한다. ifconfig 명령을 통해 확인할 수 있다. 프로미스큐어스 모드로 동작하고 있다면 ‘RUNNING PROMISC’라는 문구를 확인할 수 있다.

    지연 방법 : 이 방법은 매우 단순한 원리로 대부분의 스니퍼는 파싱(parsing)을 하고 있다는 점에 착안해 네트워크 상에 대용량의 데이터를 전송하고 의심되는 호스트로 데이터 전송전과 전송하는 동안 핑 체크를 한다. 만약 호스트가 프로미스큐어스 모드라면, 대용량의 데이터를 파싱해야 하므로 부하가 증가하여 핑 패킷에 대한 응답시간이 늦어질 것이다. 단 이 방법은 네트워크로 인한 지연시간 등 환경적인 요소가 많으므로, 결과에 대한 폴스 포지티브(false-positive) 가능성도 존재한다.

    세 번째, 스니핑 탐지 전용 툴을 활용해야 한다. ARP 와치(MAC 주소와 IP 주소를 비교, 모니터링하고 있으며, 중복되는 경우 탐지하여 알람 등을 출력), Anitsniff(스니퍼 탐지 툴), CPM(Check promiscuous mode), Neped(네트워크 상에 패킷 스니퍼의 동작을 탐지) 등 스니핑 탐지 전문 툴을 활용함으로써 불법적인 공격자를 탐지할 수 있으며, 효과적인 방법이라 할 수 있다.

    네 번째, IDS를 활용하라. 스니핑 뿐만 아니라 여러 가지 공격에 대한 효과적인 보안대책이다. IDS는 침입탐지시스템으로 스니핑 공격유형 뿐만 아니라 다수의 공격에 대해서도 탐지할 수 있다. 대부분 상용과 비상용 제품이 있다.

    다섯 번째, 장비의 보안설정을 강화해야 한다. 각 네트워크 장비 벤더마다 제공하는 보안기능의 활성화 및 정확한 설정으로 공격의 가능성을 최소화할 수 있다.

    여섯 번째, 스니핑의 위협이 언제나 존재하고 있음을 상기하고, 주요 장비 혹은 시스템 접속시 SSL, SSH 등의 암호화 프로토콜을 이용함으로써, 공격자가 스니핑으로 데이터를 수집하더라도 암호화된 내용만을 볼 수 있으므로, 정보유출의 가능성을 줄 일 수 있다.

    마지막으로, 가장 중요한 점은 스위치화된 환경의 필수적인 패킷 스니핑 조건은 내부로의 물리적인 연결이 선행되어야 하는 점이다. 공격자는 반드시 랜 케이블로 해당 네트워크로 연결되어야 하므로 물리적 공간의 출입통제 및 네트워크의 관리적 보안이 근본적인 보안대책이 될 수 있다.


    기존 무선랜의 구성 방식은 보안이 매우 취약하다는 사실을 구체적인 공격 유형별 분석을 통해 설명했다. 이번 에는 기존 무선랜의 취약한 보안을 강화하기 위해 도입된 IEEE 802.1x 규격에 대해 살펴보고 또한 IEEE 802.1x를 도입했을 때 가능한 공격들을 알아보자. <편집자>

    기존의 WEP 암호화 방식은 취약한 보안으로 인해 기업환경에서는 거의 사용이 불가능해진 상태이다. 따라서 이러한 표준 기반의 무선랜 규격의 취약점을 보완하기 위해 여러 가지 노력들이 이뤄졌는데 그 중 대표적인 방법들은 다음과 같다.

    · WEP 암호화 키 길이의 증가(40비트에서 104비트)
    · 검증된 보안 방식의 도입(IPSec을 이용한 VPN)
    · IEEE 802.1x 규격의 무선랜 적용


    WEP 암호화 키 길이의 증가로 인한 무선랜 보안

    WEP 암호화 키 길이의 증가는 실질적으로 보안의 강화를 구현하지 못했다. 단순한 암호화 키 길이의 증가는 WEP 알고리즘 자체의 보안에는 큰 영향을 미치지 못하기 때문이다. 즉, WEP 암호화 키 길이가 증가하더라도 WEP 키를 복구하는 공격에 소요되는 시간은 암호화 키 길이에 비례하여 104비트 길이의 경우라도 현실적인 시간 내에 공격이 가능하기 때문이다.

    또한 검증된 보안 방식의 도입은 무선랜 환경에 적합하지 않아 사용이 어렵게 되었다. 기존 IPSec을 이용한 VPN의 경우 AP의 역할이 단순한 허브(Hub)로 제한되어 클라이언트와 VPN 콘센트레이터(Concentrator)간 단대단(End-to-End) 암호화 통신을 하게 된다. 그러나 이러한 구성에는 몇 가지 취약점이 발견되는데 이러한 취약점들은 다음과 같다.

    1) 데이터 링크 계층에서의 보안 취약점을 네트워크 계층에서 보완함으로 인해 여전히 데이터 링크 계층에서의 보안 취약점이 존재

      - IPSec으로 암호화되지 않는 패킷들은 모두 공격자에게 공개되어 있다.
      - 기존 MAC 스푸핑(Spoofing), 가상랜 홉핑(Hopping), ARP 포지셔닝(Poisoning) 등 데이터·링크 계층에서의 공격들은 방어하기가 어렵다.



    2) AP라는 개체는 공격자에게 완전히 개방된 존재이므로 AP에 대한 접속이나 공격 및 AP를 경유한 클라이언트에 대한 공격 방어 방법 부재

      - AP에 대한 접근 제어 기능이 없으므로 물리적 접속(Association)은 언제나 가능하다.
      - 일부 AP에서만 제공하는 클라이언트간 직접 통신 금지(Inter-Client Communication Blocking) 기능이 없을 경우 AP단에서 각 클라이언트에 대한 직접적인 공격이 가능하다.
      - AP에 대해 DoS 공격 등 다양한 공격이 가능하며 공격자가 AP에 대한 관리 권한을 획득하게 되면 해당 AP를 공격자가 제어할 수도 있다.



    3) AP간 로밍(Roaming)이나 접속 제한, 권한 제한 등을 위해 별도의 접근 제어기(Access Controller)가 필요

    <그림1> VPN 기반 접근 제어기를 사용할 경우 네트워크 구성도




    또한 이러한 접근 제어기와 VPN 콘센트레이터가 혼합된 경우 게이트웨이 형태를 유지하게 되어 성능상 제한 사항이 발생한다. 즉, 모든 무선랜 트래픽이 하나의 게이트웨이를 통해 전송되므로 병목 현상이 발생할 수 있다. 더군다나 현재 출시되고 있는 IEEE 802.11a 혹은 IEEE 802.11g 규격의 무선랜인 경우 IEEE 802.11b 규격의 제품들에 비해 약 5배 정도 향상된 성능을 보이므로 병목 현상이 심화될 수 있다.

    이러한 병목 현상을 극복하기 위해서는 게이트웨이의 수를 늘리고 필요한 경우 L4 스위치와 같은 로드 밸런싱 장비가 필요해 무선랜 설치에 보안 장비에 대한 투자가 무선랜 구축보다 더 많이 필요한 형태가 된다. 기업 네트워크 환경에서는 상당한 부담이 아닐 수 없다.

    <그림2> 무선랜 보안 방식의 발전 방향



    IEEE 802.1x를 이용한 무선랜 보안

    IEEE 802.1x 규격의 무선랜에 대한 적용은 위 방법들에 비해 현실적이고도 강력한 보안을 제공할 수 있는 방법이다. 이미 표준화 단체에서 IEEE 802.1x를 도입하기로 결정돼 현재 IEEE 802.11 TGi에서는 IEEE 802.1x 적용을 드래프트에 포함시켰으며 Wi-Fi(Wireless Fidelity)에서도 WPA(Wi-Fi Protected Access) 규격에 IEEE 802.1x 적용을 포함한 상태이다. 또한 IETF 역시 래디우스를 무선랜에 적용하는 IEEE 802.1x 규격에 적용할 수 있는 표준 RFC 문서를 발표함으로써 IEEE 802.1x가 최선의 선택임을 증명하고 있다.

    원래 IEEE 802.1x가 개발된 목적은 무선랜이 아니지만 무선랜에서도 적용이 가능한 형태로 변화하고 있다. 무선랜은 기존 802.3 미디어와 달리 쉐어드 미디엄(Shared Medium)이면서도 포인트 투 포인트(Point-to-Point) 형식의 연결을 취하고 있다. 즉, 물리적으로는 같은 전송 매체를 사용하지만 AP와 클라이언트간 연합(Association)을 통해 가상의 포트 개념을 사용하고 있다. 마치 유선상에서 스위치의 포트와도 같은 개념이 될 수 있다.

    따라서 각 클라이언트 별 연합에 대해 포트 상태를 IEEE 802.1x에서 정의하고 있는 인증(Controlled) 상태와 비 인증(Uncontrolled) 상태로 정의하게 되면 AP에 대한 접근 제어가 가능해 진다.

    <그림3> IEEE 802.1x 구성 요소



    IEEE 802.1x 규격에서는 크게 세 종류의 개체를 정의하고 있다. 첫 번째는 요구자(Supplicant)이며, 두 번째는 인증자(Authenticator), 그리고 세 번째는 인증 서버(Authentication Server)다. 요구자(Supplicant)는 인증자로부터 인증 요청을 받았을 때 사용자의 식별 정보(User Credential)를 전달하는 개체다.

    인증자는 요구자에게 인증을 요구하고 전달 받은 사용자 식별 정보를 이용해 인증 서버에게 인증 서비스를 요청하는 개체다. 인증자는 또한 해당 사용자의 접속 포트 상태를 관리하며 인증 서버의 인증 결과에 따라 포트를 인증 상태 혹은 비 인증 상태로 설정하게 된다.

    인증 서버는 인증자로부터 사용자에 대한 인증 요청을 받아서 인증 서비스를 제공하는 개체로서 사용자의 식별 정보를 미리 가지고 있어야 한다. 인증 서버는 논리적으로는 인증자와 역할이 분리되어 있지만 물리적으로도 반드시 인증자와 분리될 필요는 없다. IEEE 802.1x 규격에서는 요구자, 인증자, 그리고 인증 서버간의 전체적인 인증 메커니즘을 규정하고 있으며 요구자와 인증자 사이에서는 확장 가능한 인증 프로토콜(Extensible Authentication Protocol, 이하 EAP)을 MAC 계층에서 사용하도록 규정하고 있다.

    EAP가 MAC 계층에서 전달되기 때문에 이러한 프로토콜을 EAPoL(EAP over LAN)이라고 부른다. 무선랜인 경우 EAPoW(EAP over Wireless)라고도 불리는 경우가 있지만 무선랜인 경우라고 할 지라도 실제로 패킷은 이더넷 패킷으로 전달되므로 유선과 동일하다고 하겠다. 인증자와 인증 서버간 통신프로토콜은 별도로 규정하고 있지는 않지만 부가조건(Annex)을 통해서 래디우스(Remote Authentication Dial In User Service) 프로토콜에 대한 기본적인 참조 모델을 제시하고 있다.

    <그림4> IEEE 802.1x 구성 요소



    이에 따라 현재 대부분의 인증자 벤더들은 래디우스 프로토콜을 기반으로 제조하고 있으며 IETF에서는 래디우스를 IEEE 802.1x에 적용하기 위한 표준 가이드라인을 RFC3580으로 제시했다. 현재 표준안에서 제시하는 형태는 EAP에서는 EAP-MD5와 EAP-TLS 등이 있으며 드래프트 상으로 EAP-TTLS와 PEAP 등이 있다. 그러면 이제 각각의 프로토콜이 적용된 형태와 공격 유형에 대해 알아보자.

    IEEE 802.1x with EAP-MD5

    EAP-MD5는 CHAP(Challenge Handshake Authentication Protocol)을 EAP 상에서 구현한 것으로서 일반적인 프로토콜 흐름은 다음과 같다.

    <그림5> EAP-MD5 프로토콜 흐름도



    EAP-MD5는 서버에서 난수 형태의 시도(Challenge)를 보내면 클라이언트에서 사용자 패스워드와 MD5 해쉬 함수를 이용하여 응답(Response)을 보내게 된다. 서버는 자신이 만든 시도와 서버에 저장된 사용자 패스워드를 가지고 응답을 만들어서 클라이언트가 전송한 응답값과 비교하여 일치하면 인증 성공을 보내고 일치하지 않으면 인증 실패를 보내게 된다.

    EAP-MD5는 동적 암호화 키를 생성할 수 없으므로 WEP 암호화를 하지 않거나 하더라도 스테이틱(Static) WEP 키를 사용해서 암호화를 해야만 한다. 따라서 IEEE 802.1x 규격이 적용되지 않은 상태에서의 공격과 같은 형태의 도청 공격은 모두 가능하다.
    그럼 IEEE 802.1x가 적용되고 EAP-MD5를 적용할 경우에 대한 공격 유형들을 알아보자.

    공격 유형 1. Off-Line Brute-Force Attack

    최초의 ‘EAP-Request/Identity’ 메시지에 대한 응답인 ‘EAP-Response/Identity’ 메시지는 사용자의 ID를 전송한다. 따라서 공격자는 무선 구간의 스니핑을 통해 사용자의 ID와 서버의 시도, 그리고 클라이언트의 응답의 세 가지 항목(Triplet)을 수집하게 된다.

    여기서 사용자 A의 ID를 IDA라고 하고 서버의 시도를 CHN, 그리고 이에 대한 클라이언트의 응답을 RESPN이라고 가정한다. 그러면 EAP-MD5 프로토콜에 따라 RESPN은 다음과 같이 생성되었다고 가정할 수 있다.
    RESPN = HashMD5(EAP Identifier||PWA||CHN)

    여기서 EAP 아이덴티파이어(Identifier)는 EAP 패킷의 아이덴티피어 필드 값으로서 EAP 패킷 형식의 일부이므로 무선 구간의 스니핑을 통해 공격자가 쉽게 알 수 있다. PWA는 사용자 A의 비밀번호라고 정의한다. 따라서 현재 공격자가 알 수 없는 값은 PWA인 것이다.

    만약 공격자가 PWA이라는 값을 추측해서 RESPN이라는 값을 계산했을 경우 RESPN과 RESPN이 일치하면 PWA과 PWA는 일치할 것이다.

    이러한 속성은 해쉬(Hash)MD5 함수의 속성과 관련이 있다. 일반적으로 암호학적인 해쉬 함수인 경우 단방향 함수(One-way Function), 독자성(Uniqueness) 등을 만족해야 하는데 MD5 해쉬 알고리즘의 경우 이러한 부분을 대부분 만족하고 있다. 따라서 RESPN과 RESPN의 값이 일치할 때 PWA와 PWA의 값이 일치하지 않는 경우는 확률적으로 0에 가깝다고 봐도 무방할 것이다.

    현재 MD크랙(Crack)과 같은 MD5 알고리즘 브루트-포스 어택(Brute-Force Attack) 툴의 경우 8자리 숫자 패스워드의 경우 1분 이내 크래킹이 가능하며 영문자 소문자와 숫자가 섞여 있는 경우 8자리 이하의 패스워드의 경우 약 1주 정도가 소요된다. 따라서 EAP-MD5를 사용할 경우 사용자 패스워드는 엄격한 룰을 적용하여 영문자 대소문자와 숫자를 섞어서 12자리 이상으로 하되 적어도 1개월 미만의 주기로 패스워드를 변경하도록 해야만 한다.

    공격 유형 2. 중간자 공격 및 의인화 공격

    EAP-MD5를 이용한 인증 프로토콜이 가지는 한계중의 하나는 양방향 인증을 제공하지 않는다는 점이다. 즉, 서버는 사용자를 인증하지만 사용자는 서버를 인증할 수 없다. 따라서 이 점을 이용하면 여러 가지 형태의 공격이 가능해 지는데 대표적인 것이 중간자 공격(MitM attack)과 의인화(Impersonation) 공격이다.

    중간자 공격은 사용자와 인증 서버간 트래픽을 중간에서 가로채는 방식으로 굳이 사용자의 패스워드를 알지 못해도 적용 가능한 공격 방법이다.

    중간자 공격은 사용자의 트래픽을 가로채는 방식이므로 어느 지점에서 가로챌 수 있을 지에 대한 검토가 필요하다. 지난 회에서 언급했지만 오픈 인증(Open Authentication) 모드일 때 동일한 ESSID를 사용할 경우 사용자는 전파 환경이 더 나은 AP로 접속하게 된다. 따라서 로그(Rogue) AP를 이용해 중간자 공격을 시도할 수 있다.

    사용자는 공격자의 AP를 자신이 접속해야 할 AP로 생각하고 접속하여 ID와 EAP-MD5 프로토콜에 따른 인증 절차를 진행하게 된다. 공격자는 자신이 설치한 AP로부터 전송되는 데이터를 실제 사용자가 접속해야만 하는 AP로 접속하여 전송하기만 하면 된다. 최종적으로 실제 AP로부터 인증 성공 메시지를 받고 망에 대한 접근을 허락 받으면 공격자는 사용자에게 인증 실패 메시지만 전달하면 된다. 이러한 방식으로 사용자의 ID와 패스워드를 모르는 상태에서도 망에 대해 접근을 시도할 수 있다.

    그러나 이러한 방식은 무선에서는 큰 효과가 없을 수도 있다. 우선 사용자와 공격자 간 무선 환경의 차이가 커야 하며 또한 공격자가 망에 대한 접근 권한을 얻었더라도 실제로 사용자가 인증 실패 후 재시도를 하는 경우가 많으므로 이에 대한 재시도 방지 대책이 있어야 하기 때문이다.

    의인화 공격은 MitM 공격에 비해 현실적으로 가능성이 더 높은 공격 방법이다. MitM 공격과 비슷한 형태로 구성이 되지만 차이점은 사용자로부터 데이터만 수집하고 실제 ID와 패스워드를 공격한다는 점이 차이가 있다.

    일반적으로 브르트-포스(Brute-Force) 공격을 하기 위해 데이터를 수집하면 충분한 길이의 시도를 생성하므로 실제 MD5 알고리즘을 연산하기 위한 연산양이 증가할 수 있다. 그러나 의인화 공격을 이용하면 공격자는 자신이 원하는 길이와 원하는 값을 시도로 전달할 수 있으며 또한 EAP 아이덴티파이어 역시 일정한 값으로 전달할 수 있다. 따라서 부르크 포스 공격을 훨씬 원활하게 진행할 수 있다.

    <그림6> 중간자 공격



    공격 유형 3. 재반복 공격

    공격자는 무선 구간에서의 스니핑을 통해 사용자 ID와 EAP 아이덴티파이어, 서버로부터의 시도와 사용자의 응답으로 이루어진 리스트를 만들어 낼 수 있다. 이러한 리스트가 만들어지면 공격자는 AP에 접속하여 사용자 ID를 ‘EAP-Response/Identity’ 메시지를 통해 전송하여 서버가 ‘EAP-Request/MD5-Challenge’ 값을 전송하도록 해 만약 자신의 리스트에 해당하는 값이 있으면 그 값에 해당하는 응답을 보내어 망에 대한 접근 권한을 획득할 수 있다.

    이러한 재반복 공격이 가능한 것은 일반적인 시도-응답 프로토콜에서는 재반복 공격을 방어할 수 있는 메커니즘이 필요한데 EAP-MD5 에서는 이러한 재반복 방어 알고리즘이 없기 때문이다.


    IEEE 802.1x with EAP-TLS

    이상과 같이 IEEE 802.1x를 적용하더라도 EAP-MD5 인증 알고리즘을 적용할 경우 여러 가지 유형의 공격들이 가능해 진다. 따라서 EAP-MD5는 사실상 무선랜 환경에서 사용자 인증용으로 사용하기 어려운 프로토콜이며 실제로 마이크로소프트 역시 자사의 ‘와이어리스 제로 컨피규레이션(Wireless Zero Configuration)’ 서비스에서 EAP-MD5 인증은 더 이상 제공하지 않는다.

    따라서 IEEE 802.1x를 이용하여 보다 강력한 보안을 무선랜 환경에서 구축하기 위해서는 양방향 인증과 다이내믹 WEP 혹은 TKIP를 이용할 수 있도록 새로운 암호화 키를 생성할 수 있는 인증 알고리즘이 필요하게 된다. 이러한 조건들을 만족하는 인증 알고리즘이 EAP-TLS이다.

    EAP-TLS는 TLS(Transport Layer Security) 프로토콜을 EAP 상에서 구현한 알고리즘으로 공개키 기반 인증서를 이용하여 선택적으로 양방향 인증을 수행하며 인증 후 TLS 레코드 레이어(Record Layer)에서 사용하는 암호화 키 생성 알고리즘을 이용하여 PMK(Pairwise Master Key)를 생성하여 WEP 키 혹은 TKIP의 PTK를 생성하는데 사용한다. 따라서 EAP-TLS의 경우 구축할 때 양방향 인증을 반드시 적용하면 보안적인 측면에서 위에서 설명했던 취약점들을 모두 극복하고 있다.

    그러나 EAP-TLS 역시 몇 가지 단점을 보이고 있는데 첫째는 관리상의 어려움이고 둘째는 인증서 확인 절차상의 문제점이다. EAP-TLS는 공개키 인증서 기반의 인증을 수행하는데 서버는 물론이고 각 사용자들도 개인키 정보와 공개키 인증서를 가지고 있어야 한다. 또한 사용자가 서버 인증서를 확인하기 위해서 서버 인증서를 발급한 루트 CA 인증서를 가지고 있어야 한다. 이러한 정보들은 온라인으로 쉽게 전달될 수 있는 형태가 아니라 오프라인으로 신원 확인 후 인증서 발급 절차를 거쳐야 하는 등 상당한 관리상의 부담을 초래한다.

    물론 기존에 공개키 기반 구조가 갖추어져 있는 기업이라면 기존 사용중인 인증서를 그대로 이용하여 EAP-TLS 기반의 무선랜 보안 구조를 구축할 수 있다. 그러나 이러한 공개키 기반 구조가 없다고 하면 관리자가 모든 사용자에게 일일이 인증서를 다 발급해야 하므로 큰 부담이 아닐 수 없다.

    인증서 확인 절차 상의 문제점은 TLS를 EAP에 적용하다 보니 발생하는 문제점이다. 기존 TLS의 경우 레이어 4에서 적용되므로 사용자가 서버의 인증서를 확인하기 위해 상위 인증서 발급 기관으로 확인할 수 있는 방법이 있었으나 무선랜에서 IEEE 802.1x와 EAP-TLS를 적용하게 되면 레이어 2에서 확인해야 하므로 온라인으로 상위 인증기관으로 접속할 수 있는 방법이 없다. 따라서 사용자가 서버를 인증하고자 하는 경우 미리 저장된 상위 인증 기관의 공개키 인증서를 이용할 수밖에 없다.


    IEEE 802.1x with EAP-TTLS

    EAP-TLS의 문제점들을 해결하기 위해 EAP-TTLS(EAP -Tunneled TLS)와 PEAP(Protected EAP)라는 새로운 프로토콜들이 제안되어 현재 인터넷 드래프트로 IETF에서 진행 중에 있다.

    EAP-TTLS와 PEAP는 TLS 알고리즘을 이용하여 선택적으로 서버에 대한 인증을 수행하고 TLS 핸드쉐이크(Handshake) 과정 후에 생성되는 세션키를 이용하여 암호화 터널을 만든 다음 이러한 터널 내부에서 새로운 인증 알고리즘을 적용하여 사용자에 대한 인증을 하는 방식이다. EAP-TTLS의 경우 터널 내부에서 사용 가능한 인증 알고리즘들은 EAP와 CHAP, MSCHAP 등이 있으며 PEAP의 경우 EAP만을 사용 가능하도록 하고 있다. 현재 EAP-TTLS는 드래프트 버전 3까지 발표되었으며 PEAP의 경우 드래프트 버전 7을 통해 PEAP v2까지 발표되어 있다. 마이크로소프트사의 경우 PEAP에 대해 별도의 드래프트 규격을 발표하여 PEAP v0의 형태로 발표되어 있다. 따라서 현재 윈도 XP나 윈도 2000 등에서 제공되는 보호된 EAP(PEAP)의 경우 PEAP v0을 의미한다.

    EAP-TTLS나 PEAP와 같은 형태의 프로토콜들을 일반적으로 터널 인증 알고리즘이라고 부르는데 이러한 인증 알고리즘의 경우 두 단계로 인증이 나뉘어 진다. 첫 번째는 서버 인증을 포함한 터널 생성 단계이고 두 번째는 터널 내부에서 사용자 인증을 진행하는 단계이다. 이러한 터널인증 알고리즘들은 터널 생성 시 암호화 세션 키를 생성할 수 있으므로 무선랜에 적용될 경우 다이내믹 WEP이나 TKIP를 위한 PMK를 생성할 수 있는 기능을 동시에 제공한다. 터널 인증 알고리즘들은 EAP-TLS에 비해 여러 가지 장점들을 제공하는데 일반적으로 터널 내부에서는 패스워드 기반의 인증 프로토콜을 적용하더라도 기존 패스워드 기반의 인증 프로토콜의 보안 취약점들을 극복하고 있다. 이는 터널 내부의 트래픽은 이미 암호화되어 있어 스니핑이나 재반복 공격 등을 방어하고 있기 때문이다.

    따라서 서버 인증은 공개키 인증서 기반으로 수행하더라도 각 사용자들은 자신의 인증 정보를 개인키와 공개키 인증서가 아니라 ID와 패스워드 기반으로 유지할 수 있다. 이로 인해 기존 EAP-TLS가 가지는 관리상의 어려움은 상당 부분 해소된다고 볼 수 있다. 다만 EAP-TTLS나 PEAP 역시 양방향 인증은 옵션이므로 구축 시 반드시 양방향 인증을 수행하도록 구성을 설정해야만 한다. 또한 터널을 생성하는 서버와 터널 내부에서 사용자를 인증하는 서버는 다를 수 있으므로 이 때 각 서버가 반드시 동일한 보안 도메인(Secure Domain) 내에 존재하거나 혹은 VPN 등 보호된 네트워크를 통해 통신할 수 있도록 설정돼야 한다.


    안전한 무선랜 보안 ‘IEEE 802.1x 적용 필수’

    지금까지 살펴본 바로는 무선랜을 안전하게 구축하기 위해서는 IEEE 802.1x 규격의 완전한 적용이 필수적일 뿐만 아니라 내부 인증 알고리즘을 반드시 다이내믹 WEP 알고리즘이나 TKIP 알고리즘을 적용가능 한 인증 알고리즘을 사용해야한다. 또한 인증 알고리즘 적용 시 반드시 양방향 인증을 수행해야 함을 알 수 있다.

    현재 가장 널리 사용되고 있는 EAP-TTLS나 PEAP 등의 알고리즘을 사용할 때 관리상의 어려움이나 설치 상의 문제, 인프라의 부족 등을 이유로 서버 인증을 생략하는 경우가 많은데 이것은 보안 기반 구조를 설치하고도 여전히 취약점을 안고 있는 비효율적인 시스템이라 할 수 있다.

    최근에 출시되는 인증 서버들은 하드웨어 일체형에 서버 인증을 위한 인증서 발급 및 관리 시스템이 내장되어 있어 관리자가 손쉽게 양방향 인증을 구현할 수 있도록 하고 있으며 요구자 소프트웨어 역시 인증서 관리 기능이 포함된 제품들이 있어 설치를 쉽게 진행할 수 있도록 하고 있다.

    이상과 같이 무선랜 구축 시 능동적으로 망에 대한 침투와 도청 등을 막고 사용자에 대한 인증 및 관리 기능을 강화할 수 있는 IEEE 802.1x 규격의 적용에 대해 알아보았다

  • 2006/09/08 15:55 2006/09/08 15:55
    이 글에는 트랙백을 보낼 수 없습니다
    웅쓰:웅자의 상상플러스
    웅자의 상상플러스
    전체 (379)
    게임 (5)
    영화 (2)
    기타 (23)
    맛집 (5)
    영어 (2)
    대수학 (3)
    형태소 (5)
    Hacking (9)
    Linux (112)
    HTML (48)
    Application_developing (48)
    Web_developing (102)
    Window (11)
    «   2024/04   »
      1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30        
    1. 2016/01 (1)
    2. 2015/12 (3)
    3. 2015/10 (3)
    4. 2015/03 (2)
    5. 2015/01 (4)