Security Watch아일랜드 하핑: 미끼를 활용하는 침투 방식

Jesper M. Johansson

보안이 취약한 연결 고리를 통해 네트워크에 침투한 다음 해당 네트워크에 속한 여러 시스템들을 돌아다니는 기법, 소위 아일랜드 하핑(island hopping)은 여러 해 전부터 사용되어온 침투 방식입니다. 이 기법은 새로운 차원으로 계속 발전하고 있습니다. 오늘날처럼 시스템 보안에 민감한 IT 환경에서는 사람이 가장 약한 연결 고리이며 악의적 사용자들은 바로 이 점을 악용할 방법을 찾고 있습니다. 피싱을 비롯한 여타 사회 공학적 침투 기법을 생각해보면 쉽게 이해할 수 있을 것입니다.

인적 요소와 기술적 요소를 결합한 이 침투 방식은 네트워크에 치명적 손실을 입힐 수 있습니다.

인적 요소를 활용한 실제 사례 가운데 제가 자주 예로 드는 것은 Secure Network Technologies의 Steve Stasiukonis가 어느 고객의 의뢰로 침투 테스트를 진행하면서 선보인 방법입니다. 그는 이 고객사의 주차장에 트로이 목마 프로그램이 설치된 USB 플래시 드라이브를 여기저기 뿌려 놓았습니다. 아침에 출근한 직원들은 주차장에 뿌려진 공짜 드라이브를 보고 아주 좋아했습니다. 직원들은 열심히 USB 드라이브를 주워서 맨 처음 눈에 띈 컴퓨터에 꽂았습니다. 바로 자신의 업무용 컴퓨터에 말입니다.

일부 현명한 직원들은 이 USB 드라이브를 보고도 무시하고 그냥 지나쳤을 수도 있지만, 단 한 명의 직원이라도 이 드라이브를 주워서 자기 시스템에 꽂았다면 네트워크 전체에 접근할 수 있는 침입로가 뚫리게 됩니다. 물론 Stasiukonis는 이 방법을 테스트 목적으로 사용했지만, 실제 범죄자들도 대기업 네트워크에 침투하기 위해 이 방법을 사용했습니다.

USB 플래시 드라이브는 현재 널리 사용되고 있습니다. 거의 모든 컨퍼런스 행사장에서 업체들이 USB 플래시 드라이브를 마치 사탕처럼 나눠주는 모습을 쉽게 볼 수 있습니다. 그러한 드라이브들은 용량이 크지 않겠지만 네트워크 전체를 장악하는 데 그리 큰 용량은 필요 없습니다. 전체 2부로 기획된 이 기사를 통해, 저는 이와 같은 종류의 침투 기법을 분석하고 그 위험을 줄이는 방법을 소개하고자 합니다. 먼저 이번 호에서는 USB 플래시 드라이브로 정확히 어떤 일을 수행할 수 있는지, 그리고 그것을 통제할 수 있는 방법은 무엇인지 설명하겠습니다. 그리고 다음 달 TechNet Magazine에서는 공격의 확산 범위를 네트워크의 일부 시스템으로 제한하는 방법을 소개할 예정입니다.

이 공격 방식의 기술적 측면은 실제로는 매우 간단합니다. 감염된 USB 플래시 드라이브를 컴퓨터 한 대에 꽂는 것만으로 모든 것이 시작됩니다. 그리고 그 이후의 사태는 USB 드라이브에 무엇이 들어 있는가, 그리고 사용자가 얼마나 어수룩한가에 따라 달라집니다.

문제의 발단

주변에 아무도 없는 상태로 연단에 노트북 한 대가 놓여 있다고 합시다. 연사는 프레젠테이션 시작 전에 좋은 분위기를 조성하기 위해 청중들과 담소를 나누느라 분주한 상태입니다. 노트북에는 잠금 장치가 되어 있지만 그것은 그리 장애가 되지 않습니다. 공격자는 연단에 올라가 마치 연사가 돌아오기를 기다리는 것처럼 잠시 서성입니다. 그 연단은 너저분한 것들이 가려지게 만들어졌기 때문에 USB 포트와 공격자의 손은 주변의 시선에 노출되지 않습니다. 일단 USB 플래시 드라이브를 컴퓨터에 꽂자, 불과 몇 초 만에 공격이 완료됩니다.

이러한 시나리오는 몇 가지 변화된 형태로 실행될 수 있습니다. 예를 들어 제가 매주 세계 여러 지역을 돌아다니며 프레젠테이션을 진행하던 때를 돌이켜보면 거의 매번, 프레젠테이션이 끝난 후 슬라이드 복사를 요청하는 분들이 있었습니다. 그러면 저는 항상 명함을 건네면서, 전자 메일로 메시지를 주시면 답신에 슬라이드를 첨부해서 보내드리겠노라고 답했습니다. 모든 분들이 USB 플래시 드라이브를 내밀면서 복사를 요청했는데도 왜 저는 굳이 그런 방법을 택했을까요? 그것은 제가 USB Hacksaw와 Switchblade 같은 침투 도구들을 알고 있기 때문입니다. 이에 관해 잘 모르시는 분들은 wiki.hak5.org의 내용을 참고하시기 바랍니다.

기본적으로 이 도구들을 이용하면 무방비 상태로 방치된 USB 포트를 누구나 쉽게 악용할 수 있습니다. 예를 들어 Switchblade를 이용하면 다음과 같은 정보를 수집할 수 있습니다.

  • 시스템 정보
  • 모든 네트워크 서비스
  • 수신 대기 중인 모든 포트의 목록
  • 컴퓨터에 있는 모든 Microsoft 제품 키
  • 로컬 암호 데이터베이스
  • 컴퓨터에서 사용하는 모든 무선 네트워크 암호
  • 현재 로그온한 사용자가 컴퓨터에 저장해 둔 모든 네트워크 암호
  • Internet Explorer®, 메신저, Firefox 및 전자 메일 암호
  • 모든 서비스 계정 암호가 일반 텍스트 형태로 들어 있는 LSA(로컬 보안 기관) 암호
  • 설치된 패치 목록
  • 최근 탐색 내역

이 모든 정보가 약 45초 만에 플래시 드라이브의 로그 파일에 수집됩니다.

Hacksaw는 여기서 약간 수정된 형태로서, 모든 USB 플래시 드라이브 삽입 이벤트를 모니터링하는 트로이 목마 프로그램을 컴퓨터에 설치합니다. 그러면 이 프로그램은 이후 그 컴퓨터에 삽입되는 모든 플래시 드라이브의 모든 문서를 공격자에게 전자 메일로 발송합니다.

이상 제가 설명한 도구들은 플래시 드라이브에 프로그램을 담아 다닐 수 있게 해주는 U3(u3.com)라는 기술을 사용합니다. 간단히 말해, U3 지원 플래시 드라이브는 자신의 정체를 속입니다. 이 드라이브는 자신이 플래시 드라이브와 CD가 연결되어 있는 USB 허브라고 OS에게 알립니다. Windows Vista® 이전의 Windows® 버전에서는 기본적으로, CD의 autorun.inf 파일에 지정되어 있는 프로그램을 자동으로 실행합니다. U3 지원 USB 플래시 드라이브는 자신의 정체를 속여 OS로 하여금 U3 시작 관리자라 부르는 어떤 프로그램을 자동 실행하게 만듭니다. 그러면 U3 시작 관리자는 프로그램을 시작하거나 메뉴를 표시하거나 또는 사용자가 직접 컴퓨터로 할 수 있는 작업과 비슷한 모든 작업을 수행할 수 있습니다.

공격 도구가 하는 일은 이 시작 관리자를 공격 코드로 교체하는 것뿐입니다. Windows XP 시스템에서는 플래시 드라이브를 꽂는 즉시 공격 도구가 자동으로 실행됩니다. Windows Vista에서는 이 자동 실행 여부가 다른 방식으로 결정됩니다. 자동 실행은 CD의 경우와 동일하게 이동식 장치에서도 작동됩니다. 이것은 장치를 꽂으면 어떤 동작이 이루어진다는 것을 의미합니다. 기본적으로 그림 1과 같은 자동 실행 대화 상자가 표시됩니다.

그림 1 그림이 있는 이동식 드라이브를 삽입한 경우 나타나는 기본 자동 실행 대화 상자

그림 1** 그림이 있는 이동식 드라이브를 삽입한 경우 나타나는 기본 자동 실행 대화 상자 **

그림 1의 대화 상자에는 '그림에 대해 항상 다음 수행'이라는 옵션이 있습니다. 이 자동 실행 옵션은 그림 2와 같이 제어판에서도 구성할 수 있습니다.

그림 2 Windows Vista의 자동 실행 구성

그림 2** Windows Vista의 자동 실행 구성 **(더 크게 보려면 이미지를 클릭하십시오.)

이 자동 실행 구성은 '소프트웨어 및 게임'의 경우 특히 흥미롭습니다. 당연히, 그것은 실행할 일부 프로그램이 명시된 autorun.inf 파일이 이동식 드라이브에 있음을 의미합니다. 그림 2의 '소프트웨어 및 게임'과 관련된 설정들은 다음과 같은 레지스트리 키에 저장됩니다.

Hive:    HKEY_CURRENT_USER
Key:    \Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\
UserChosenExecuteHandlers\AutorunINFLegacyArrival 
Value: (Default)
Data:
MSAutoRun – automatically executes the program specified in the autorun.inf file
   
MSPromptEachTime – prompts the user, using strings specified in the autorun.inf file, if available

이 설정들은 시스템 관리자가 아니어도 변경할 수 있으므로 사용자는 원하는 대로 자유롭게 설정할 수 있으며, 따라서 주차장에서 습득한 드라이브에 어떤 악성 소프트웨어가 있든 자동으로 실행하도록 설정할 수도 있습니다. 실제로 자동 실행 대화 상자에서 해당 확인란에 표시하는 것만으로 사용자가 위험에 노출될 수 있습니다.

네트워크의 자동 실행 관리

관리자가 네트워크 전역의 자동 실행을 관리할 수 있는 방법은 몇 가지가 있습니다. 첫째, 자동 실행이 작동할 드라이브 유형을 제어하는 NoDriveTypeAutoRun 설정을 수정하면 사용자가 이동식 미디어와 CD에 자동 실행이 작동하도록 설정하는 것을 막을 수 있습니다. Windows XP의 기본 NoDriveTypeAutoRun 설정은 0x95입니다. 즉, 알 수 없는 드라이브 유형과 네트워크 드라이브, 이동식 장치 등에는 자동 실행이 작동하지 않게 되어 있습니다. Windows XP SP2에서부터는 NoDriveTypeAutoRun의 기본 설정이 0x91로 구성됩니다. 따라서 이동식 저장 장치에 자동 실행이 작동합니다. 그룹 정책을 이용할 경우, 사용자 구성\관리 템플릿\Windows 구성 요소\자동 실행 정책에 NoDriveTypeAutoRun 설정을 관리할 수 있는 설정이 있습니다. "Turn off AutoPlay setting and select CD-ROM and Removable Drives(자동 실행 설정을 끄고 CD-ROM 및 이동식 드라이브 선택)" 설정을 활성화하면 두 유형의 드라이브에 대해 자동 실행이 작동하지 않게 됩니다.

그러나 그 결과, 사용자는 그림 1과 같은 자동 실행 대화 상자를 볼 수 없게 됩니다. 실제로 사용자가 드라이브를 꽂았을 때 아무 일도 일어나지 않습니다. 하지만 드라이브에 있는 필요 정보에 어떻게 액세스해야 하는지 잘 모르는 사용자에게는 혼란을 유발할 수 있기 때문에 이 방법은 그리 이상적인 해결책이 아닙니다.

여러분은 자동으로 실행될 수 있는 콘텐츠 유형을 통제할 수 있기를 원할 것입니다. Windows Vista에서는 그것이 어느 정도 가능합니다. 이 운영 체제에서는 자동 실행 소프트웨어를 두 가지 수준으로 나누어 통제할 수 있기 때문입니다. 그림 3의 그룹 정책에 있는 또 하나의 컨트롤을 이용하면 autorun.inf 파일을 사용하는 소프트웨어의 자동 실행은 막으면서 그 나머지 자동 실행 동작은 그대로 둘 수 있습니다.

그림 3 그룹 정책을 통한 autorun.inf 파일 비활성화

그림 3** 그룹 정책을 통한 autorun.inf 파일 비활성화 **(더 크게 보려면 이미지를 클릭하십시오.)

자동 실행이 결정되는 방식은 다소 복잡합니다. 아마도 순서도를 통해 설명하는 것이 가장 쉬운 방법일 것입니다. 그림 4는 이동식 미디어에 있는 파일의 자동 실행 여부가 결정되는 과정을 보여주고 있습니다.

그림 4 자동 실행 순서도

그림 4** 자동 실행 순서도 **(더 크게 보려면 이미지를 클릭하십시오.)

또 다른 발단들

물론, 이것들은 USB 플래시 드라이브로 컴퓨터를 위험에 빠뜨리는 데 사용되는 방법 중 일부에 불과합니다. 현재 로그온한 사용자의 Windows NT® 암호 해시를 수집하는 도구 등을 비롯하여 온갖 종류의 도구들이 이 시나리오에 동원될 수 있습니다(microsoft.com/technet/community/columns/secmgmt/sm1005.mspx 참고).

사실 많은 USB 컨트롤러들이 DMA(직접 메모리 액세스) 장치입니다. 즉, 운영 체제를 우회하여 컴퓨터의 메모리를 직접 읽고 쓸 수 있는 것입니다. 운영 체제를 우회하게 되면 운영 체제의 보안 통제도 피할 수 있어 하드웨어를 마음대로 완벽하게 액세스할 수 있게 됩니다. 즉, 운영 체제의 장치 통제력이 완전히 무력화되는 것입니다. 현재 이러한 기법을 사용하는 해킹 도구를 알고 있지는 않지만 없다고 단정하기는 매우 어렵습니다.

사용자와 이동식 장치를 조합해서 악용하는 또 다른 방법은 구미가 당기는 옵션을 제시하는 것입니다. 예를 들어 그림 5와 같은 대화 상자가 표시되었을 때 클릭할 사용자들이 얼마나 많겠습니까? 전부는 아니라도 꽤 많은 사람들이 클릭할 것입니다. 요점은, 무시하기에는 너무 구미가 당기는 대화 상자를 꾸며내는 것은 아주 간단한 일이라는 사실입니다.

그림 5 사용자 유인

그림 5** 사용자 유인 **

장치 차단

Windows Vista에서부터 그룹 정책에는 장치 설치를 제어하는 일련의 정책들이 제공됩니다(그림 6 참고). 그림에서와 같이 관리자는 이동식 장치임이 드라이버에 명시된 모든 새로운 이동식 장치에서 설치 작업이 실행되는 것을 차단할 수 있습니다. 그러나 드라이버에서 자신이 이동식 장치가 아니라고 할 경우, 이 정책은 효과가 없습니다. 그러므로 드라이버를 조작하면 이 정책을 피해갈 수 있습니다.

그림 6 Windows Vista 장치 설치 정책

그림 6** Windows Vista 장치 설치 정책 **(더 크게 보려면 이미지를 클릭하십시오.)

더욱 세밀한 통제를 위해, 특정 장치 설치 클래스에 대해 작동하는 정책을 활용할 수 있습니다. 그러나 이를 위해서는 차단하고자 하는 특정 장치 클래스의 GUID를 알아야 하므로 관리하기 매우 어렵게 됩니다.

최소 권한이 야기하는 문제

DMA 시나리오를 잠시 논외로 한다면 앞서 논의한 공격의 성공, 그리고 그 대응책의 성공 여부는 컴퓨터 사용자의 권한에 달려 있습니다. 일반 사용자라면 공격이 야기할 수 있는 피해 규모는 제한적입니다. 사용자의 데이터를 비롯하여 그 사용자가 액세스할 수 있는 모든 것을 훔쳐갈 수는 있겠지만, 네트워크에 큰 피해를 주지는 않을 것입니다.

그러나 이용당하는 사용자가 관리자라면 결과는 엄청나게 악화될 수 있습니다. 최악의 경우 해당 사용자가 도메인 관리자라면 네트워크 전체를 장악당할 것이 자명합니다. 예를 들어 공격자는 사용자의 암호 해시를 메모리에서 추출할 수 있습니다. 시스템에서는 로그온 시 LSA 프로세스 공간에 해시를 임시 저장하므로, 이것을 활용하면 사용자를 가장하여 아무 제지 없이 네트워크 리소스에 액세스할 수 있습니다. 관리자 권한을 가진 공격자는 이 해시 정보를 추출하여 모든 네트워크 리소스에 액세스할 수 있는 것입니다. 달리 말해, 이용 당하는 사용자가 도메인 관리자라면 도메인 전체가 위험에 빠진 것입니다.

따라서 의존 관계 문제가 자연스럽게 제기됩니다. 지금까지는 워크스테이션을 대상으로 하는 특정 공격을 간략히 설명했습니다. 그러나 그것이 네트워크 전체 규모에서 초래할 결과에 대해서는 설명하지 않았습니다. 다음 호 칼럼에서는 의존 관계의 개념을 다루면서 그것이 환경 전체에 어떤 의미를 갖는지, 특히 그 의존 관계를 확고히 강화하는 방법은 무엇인지 설명하겠습니다.

Jesper M. Johansson은 소프트웨어 보안 문제 분야의 보안 엔지니어이며 TechNet Magazine의 객원 편집자로서, MIS 분야 박사 학위를 취득했고 컴퓨터 보안 분야에서 20년 이상의 경력을 보유하고 있습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..