오랜만에 포스팅을 합니다. iPhone의 발매 이후 무척 높아진 스마트폰과 UC 연동에 관심이 많아지면서 저절로 제가 바쁜 한 해를 보내고 있습니다. 시간이 나면, iPhone과 Cisco UC / WebEx에 대해 좀더 자세하게 쓰도록 하겠습니다만 이번에는 VoIP 보안 관련 글을 정리하겠습니다. ^^

시작하며
얼마전 인터넷 진흥원에서 별정사업자를 위한 VoIP 보안에 대한 대책 회의가 있었습니다. VoIP 장비 제조사들끼리 모여서 신문에 개제된 소규모 별정사업자의 피해를 사례로 들면서 대책을 마련하는 자리였습니다. 이번 기회에 1-2년 전 부터 발생된 이 과대 과금 문제를 짚고 넘어 가고자 합니다. 

공격 패턴
1년 전 몇몇 영세 기업에서 이런 공격을 당했던 사례가 있어 패킷이랑 CDR (Call Detail Record)을 분석했던 적이 있습니다. 공격 패턴은 SIP 이나 H.323 게이트웨이를 타겟으로 합니다. SIP Invite 패킷이나 H.323 Setup 메세지를 생성하여 무작위로 인터넷에 발송합니다. 기본적인 보안 설정이 되어 있지 않은 게이트웨이 장비는 모든 통화 요청에 대해 처리하는 것이 기본이므로, 특정 게이트웨이가 SIP 100 Trying 이나 H.323 Call Progress 메세지로 응답하는순간 Voice Gateway 장비임을 공격자가 인지하게 됩니다. 이 때부터, 다이얼 플랜 정보를 찾기 위해 착신번호를 무작위로 송출합니다. 예를 들면, 9001.T로 보내면 대부분의 게이트웨이는 호 처리를 수행합니다. 따라서, 연결이 되면, 과금이 시작됩니다. 일반적으로 착신번호가 개인집이나 핸드폰이라면 바로 끝어버리지만, IVR 이나 ARS 서버와 연결이 되면, 전화를 끊지 않기 때문에 과대 과금이 발생하게 되는 것입니다. 실제 패킷의 양으로 보아서는 자동 공격 시스템에 의해 무작위 생성되는 듯합니다. 모 기업은 하루동안에 몇천만원의 과금이 발생했던 적이 있습니다.


 

 

위 그림은 일반적으로 IP Telephony를 구축한 기업의 구성도입니다. 기본적으로 위와 같이 구성되어 있는 대부분의 기업에서는 사설 IP 및 방화벽을 사용하여 인터넷을 연결하기 때문에 공격에 피해가 발생하지 않습니다. 인터넷을 통해 기업 내부의 IP Teleohoy 자원에 접근할 수 있는 방법은 원칙적으로 존재하지 않습니다. 

문제는 항상 관리의 소홀에서 기인합니다. 공격 당한 기업들은 영세하여 한명의 관리자가 모든 IT 자원을 관리합니다. 따라서, 방화벽을 통해 내부 자원에 접근할 수 있는 백도어를 방하벽에 마련해 두곤합니다. 이것이 이번 과대 과금 문제의 시발점입니다. 백도어를 Static IP Mapping으로 CUCM과 Vice Gateway에 연동되도록 하였으므로 무작위 Invite및 H.323 패킷에 노출될 수 밖에 없었습니다.

과대 과금 공격 방지 대책
이제 원인을 알았다면, 해결책을 찾아 보도록 하겠습니다. 아래 열거하는 사항 중 하나만 되어도 해결이 되지만, 필요한 수준의 보안 세팅을 하면 됩니다.

  • 방화벽의 백도어 제거
    기본적으로 방화벽에 백도어가 존재하여서는 않되지만, 영세 사업자나 기업의 경우 관리적 이유로 필요할 수 밖에 없습니다. 그렇다면, Static IP Mapping을 하더라도 특정한 프로토콜만 통과하도록 설정합니다. 예를 들면, Voice Gateway에 접근하기 위한 텔넷만 개방하기위해 TCP 23만 허용하도록 하는 조치입니다. IP Telephony 망을 완전 고립시키는 것이 기본입니다. 이미 대부분의 기업에서는 시행하고 있습니다.

  • Voice Gateway를 MGCP Gateway로 변경 설정
    이러한 공격 유형의 핵심은 Peer-to-Peer 프로토콜을 사용하는 H.323이나 SIP 게이트웨이로 구성했기 때문입니다. 그래서, H.323 Setup 이나 SIP Invite에 대해 기본적으로 처리하게 되어 발생한 것입니다. 이 공격은 IP PBX나 IP Phone을 겨냥한 공격이 아니며, 실제로도 공격할 수 없습니다. IP Phone은 등록되어 있는 IP PBX로만 호를 발생시킬 수 있으며, IP PBX는 Peering이 되어 있는 상대방 하고만 통화가 가능하므로 원척적으로 공격을 봉쇄할 수 있습니다. MGCP는 Master / Slave 구조의 프로토콜로써 인텔리전트한 기능이 모두 IP PBX로 이관되기 때문에 이런 문제를 해결할 수 있습니다. 그러나, 특정 서비스를 위해 H.323이나 SIP를 고집해야 한다면, 어쩔 수 없습니다.

  • Dummy Prefix 설정
    IP가 노출되더라도, 번호체계가 맞지 않으면, 호를 진행할 수 없습니다. 따라서, 기업의 보이스 게이트웨이는 특정 IP PBX하고만 시그널링을 주고 받는 것이 일반적입니다. IP PBX와 Voice Gateway간에 짧은 난수열을 생성함으로써 번호 체계가 외부에 노출되지 않을 수 있습니다. 두 장비간에만 통용이 되는 난수열을 만드는 것으로 ##153 또는 87610 이런 난수열을 포함하도록 하는 것입니다. 특히 국제호에 적용하는 것은 필수적일 듯합니다.

  • Ethernet Interface에 대한 ACL 설정
    Voice Gateway는 통신 대역이 한정되어 있습니다. 사용자가 연동된 서브넷 또는 IP Phone만 사용하는 서브넷일 것입니다. 이러한 기업 내부 IP 대역에서만 패킷을 받아드리도록 게이트웨이를 설정해야 합니다.  

전체적으로 방지 대책에 대해 살펴보았습니다. 실제 백도어 제거와 Dummy Prefix만을 사용하여도 외부로 부터 공격을 받을 일은 거의 없을 것입니다. 그렇다면, 내부 공격자로 부터의 공격에 대해 생각해 보겠습니다. 실제 발견된 사례는 아직 없으며, 과대 과금 공격은 외부에서 부터 이루어집니다. 그러나 가능성을 배제할 수 없으므로 고려해 보도록 하겠습니다.

위 그림처럼 공격자가 내부있다고 가정하고, 공격자가 IP PBX와 Voice Gateway의 주소를 알수 있다고 가정하겠습니다. IP PBX를 향한 공격자의 SIP Invite및 H.323 Setup 메세지는 폐기될 것입니다. IP PBX에 등록되지 않은 장비로 부터의 통화요청은 기본적으로 거절하도록 되어 있습니다. H.323 또는 SIP 게이트웨이 장비의 경우 공격을 받을 소지가 있습니다. 이럴 경우의 해결 방법은 다음과 같습니다.

  • MGCP 게이트웨이로 설정
  • IP PBX와 게이트웨이간 Dummy Prefix 설정
  • IDS 나 IPS를 통해 다량 호 발생 장비 감지
  • ASA와 같은 방화벽장비를 이용하여 Voice Gateway 및 IP PBX에 대한 접근차단
    가장 확실한 방법이긴 하지만, 돈이 든다는 단점이 있습니다.

SIP Trunks for PSTN Access
요즘 SIP Trunk를 통해 ISP와 연동을 많이 하고 있습니다. 요즘 과대 과금 사건이 신문에 나서 걱정하시는 분들이 계시지 않을까합니다. 그러나, 위의 보안 대책에서 보듯이 특별한 대책이 필요한 것이 아닌 기본적인 보안 설정만으로도 충분합니다만, SIP Trunk로 ISP와 연결할 때는 반드시 CUBE (CIsco Unified Border Element)를 사용하셔야 합니다. CUBE는 SBC로써 기본적인 NAT Traveral 및 Topoly Hiding 기능을 수행합니다. ISP에나 외부에는 CUBE의 IP 만 보여지고 나머지 내부 IP Telephony 자원은 감추어집니다. 이미 ISP는 SBC를 통해 모든 VoIP 자원을 보호하고 있습니다. 또한, CUBE는 세부적인 보안 설정이 가능합니다.

 


Voice Gateway와 WAN Router의 기능이 ISR 라우터에서 동시에 이루어지는 구조
영세 사업자나 기업에서 가장 일반적으로 사용될 수 있는 구조입니다. ISR 라우터가 PSTN 연동점도 가지면서 WAN Router의 기능도 수행하는 것입니다. 이런 경우 대부분 인트라넷 안에 위치하거나, IP Sec과 같은 프로토콜을 통해 안전한 WAN 통신 구조를 확보하기에 문제 발생의 소지가 적습니다만, 그렇지 못한 경우 문제가 발생할 확률이 매우 높습니다. 위에 열거한 다양한 방법을 동시에 취해야 합니다. 
 

시스코 Gateway에서 PSTN으로 가는 호에 대한 Dummy Prefix 설정하기
간단하게 Dummy Prefix를 설정하는 부분을 간단하게 정리하겠습니다. 기본적으로 IP로 들어오는 호가 PSTN을 통해 호가 발생되는 구조가 대부분이기 때문에 가장 간단하게 설정하는 것은 아래와 같습니다.

dial-peer voice 10 pots
description ## Call to Foreign##
 destination-pattern ##88.T
 

dial-peer 설정에서 destination-pattern을 ##88.T로 설정하면 PSTN으로 호를 송출할 때 ##88은 자동으로 제거되고 호가 PSTN으로 전송됩니다. 이런 ##88이라는 난수열은 쉽게 확인하기 어렵습니다.

 

시스코 Gateway에서 VoIP로 가는 호에 대한 Dummy Prefix 설정하기
이는 다소 복잡합니다.  아래처럼 ##88로 시작되는 호에 대해서만 dial-peer가 적용되어 ##88을 제거하고 001로 시작하는 호를 ISP로 전송하는 것입니다.

voice translation-rule 10
rule 1 /^##88001/ /001/
!
voice translation-profile ToForeign
translate called 10
!
dial-peer voice 10 voip
description ## Call to Foreign##
translation-profile outgoing ToForeign
destination-pattern ##88001.T
 

마치며
지금까지 과대 과금과 같은 공격에 대한 방어 대책을 살펴보았습니다. 이외에도 몇가지 방법이 더 있을 듯합니다. 혹시 적용하셨거나 생각나시면, 댓글 달아 주시기 바랍니다. 이 번글을 통해 모든 UC 엔지니어가 보이스 게이트웨이 설치시 가장 기본적인 보안 정책을 장비 설치시에 수립하길 기대합니다.

------------------------------------
라인하트 (linecard@naver.com)

Posted by 라인하트

댓글을 달아 주세요

  1. Favicon of http://www.nexpert.net BlogIcon 허클베리 핀 2009.12.16 22:30 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 이런글은 모든엔지니어가 숙지하고 꼭 잊지말고 적용해야 합니다. 기본적인 보안을 꼭 적용해서 나중에 눈탱이 맞는 ^^ 일이 없어야 합니다.

  2. kangjaekyu 2009.12.17 01:41 신고  댓글주소  수정/삭제  댓글쓰기

    잘 보았습니다...
    예전 Legacy PBX에서 DISA Port를 통해 한달간 4000만원 이상의 불법 호가 발생 한 경우를 본적이 있습니다... 정말 눈탱이 맞는거죠...

    • Favicon of http://www.nexpert.net BlogIcon 허클베리 핀 2009.12.17 12:24 신고  댓글주소  수정/삭제

      한동안 주춤하다가 또다시 올라오는 VoIP 이슈네요. 라인하트님의 글만 봤어도 눈탱이 맞는 일은 없을텐데요.. DISA와 같은 경우는 PIN넘버와 같이 인증과 연계를 해야 합니다. 그렇지 않으면 ㅎㅎ 눈탱이 맞는 거죠.

  3. 람찬 2010.03.12 15:50 신고  댓글주소  수정/삭제  댓글쓰기

    잘 봤습니다.
    좋은 내용 감사합니다.

  4. nlaw 2010.10.02 00:00 신고  댓글주소  수정/삭제  댓글쓰기

    잘봤습니다.



티스토리 툴바