autorun.inf 를 악용하는 악성코드 종합 대책 #1/4
| 분류: 컴퓨터 사용 경험 | 최초 작성: 2010-09-26 00:12:28 |
< 읽기 전에 >
1. 이 글은 필자가 집필하여 발행한 전자책 "계정 및 정보보호를 위한 가이드 북(제8판)" 의 제6장 부분 중 관련 부분을 재편집한 것입니다. 모두 4개의 게시물로 구성되어 있습니다.
2. 이 글은 과거 필자가 등록한 다음 게시물의 내용을 포함합니다.
281. [[LINK::281]]
294. [[LINK::294]]
317. [[LINK::317]]
3. 원래 이 분야에 전문적인 지식이 없는 일반인을 대상으로 하여 작성된 글이기 때문에, 핵심 내용에 비해 설명이 깁니다. 이 점 참고하시기 바랍니다.
1. 서설 - 자동 실행 기능 알기ActiveX와 함께, 최근까지 악성코드 유포의 일등공신이자 대표적인 악의 축으로 지탄받고 있는 녀석이 바로 자동 실행(오토런, autorun.inf)입니다. 저 역시 이 녀석 때문에, USB 디스크건 SD 디스크건 이동식 하드 디스크건, 어디 바깥 컴퓨터에 한번 꽂았다 가져오면 처참한 몰골이 되어 돌아오는 사태를 여러 번 겪어왔습니다. 지금도 생각해 보면 이가 갈리는 경우가 여러 번이군요.
일단 맞서야 하는 적이 어떤 녀석인지를 먼저 알아야겠지요. 본격적인 내용에 들어가기에 앞서, 도대체 자동 실행 기능이라는 게 무엇이고, 어떤 방식으로 동작하는지를 먼저 알아보도록 하겠습니다. 이 부분에 대해서 자세히 아시는 분은 바로 다음 게시물로 넘어가셔도 무방합니다.
(1) 자동 실행 기능의 존재 이유이렇게 가정을 해 볼까요. 만약 당신이 어떤 CD 타이틀 프로그램의 제작자라고 해봅시다. 백과사전 같은 것이면 딱 좋겠군요. 이 프로그램을 실행하기 위해서는 일단 CD에서 프로그램을 컴퓨터에 설치를 해야 합니다. 그런데, CD를 구입한 사람이 컴퓨터를 전혀 모르는 사람일 경우 문제가 심각해집니다. 컴퓨터 켜고 끌 줄밖에 모르는 사람에게, “윈도우 탐색기를 실행해서 CD를 넣은 드라이브를 클릭한 후 그 드라이브 안에 있는 SETUP.EXE를 실행하세요. 그리고 설치가 되면 바탕 화면에 있는 백과사전 아이콘을 클릭하세요.” 라고 설명을 한다고 생각해 봅시다. CD타이틀 판매 실적은 바닥을 향하여 끝없이 추락할 게 뻔합니다.
어떻게 하면 좋을까요? 가능하면 컴맹도 사용할 수 있을 정도로 간단해야 합니다. 그냥 CD를 CD롬에 넣기만 하면 실행될 수 있게 하면 최상이겠네요. CD만 넣으면 자동으로 설치 프로그램이 실행되고, 또한 설치가 되어 있다면 자동으로 백과사전이 실행되도록 만들면 될 것 같습니다. 아하.
바로 이럴 때 쓰라는 용도로 만들어진 것이 자동 실행 기능입니다. 구체적으로는 이렇게 하면 되겠네요. 설치와 실행을 담당하는 런처[실행기, launcher] 프로그램을 하나 만들고, 그 프로그램은 백과사전이 설치되어 있지 않다면 백과사전 설치 프로그램을 실행하고, 백과사전이 설치되어 있다면 백과사전 프로그램을 실행하는 기능을 하도록 만드는 것입니다. 그리고 CD가 삽입되면 이 런처 프로그램을 자동으로 실행하도록 자동 실행 기능을 이용하여 설정해 두는 거죠. 그러면 이 백과사전 CD를 산 사람은 아무 생각 없이 그냥 컴퓨터를 켜고, 부팅이 다 끝나면 이 CD를 단순히 CD 드라이브에 넣기만 하면 됩니다. 자동으로 설치 프로그램이 실행되고, 설치가 끝나면 자동으로 백과사전이 실행될 겁니다. 다음에는? 다시 CD가 읽혀지면 이미 백과사전은 설치가 되어 있으므로 자동으로 백과사전이 실행되겠죠. 컴퓨터를 전혀 알지 못하더라도, 이 백과사전 CD 타이틀을 아주 편리하게 이용할 수 있는 것입니다. 어떤가요? 아주 좋은 기능이지 않나요? 이것이 바로 자동 실행 기능의 존재 이유입니다.
(2) 윈도우즈 시스템에서 자동 실행 기능의 동작 원리이번에는 윈도우즈가 구체적으로 이 자동 실행을 구현하는 과정을 살펴보도록 합시다.
윈도우즈는 디스크를 처음 읽을 때에, 해당 디스크의 루트 폴더에 autorun.inf 라는 파일이 있는지를 확인합니다. 그리고 만약 autorun.inf 파일이 있다면 이를 읽어들입니다. 이 파일 안에는 (당연히도) 디스크가 인식되면 어떤 파일을 실행하라는 지시 정보가 저장되어 있습니다. 다음 그림은 Caesar 3이라는 옛날 게임의 자동 실행 설정 파일을 그대로 옮겨온 것입니다. 이 설정대로라면 이 CD가 읽혀지면, 자동으로 autorun.exe 라는 파일이 실행될 것입니다(open=autorun.exe 열에 의해).
그림. Caesar 3 CD 에 포함된 autorun.inf 파일의 일부. open= 뒤에 지정되어 있는 파일을 자동으로 실행하게 된다.
그리고 윈도우즈는 디스크를 읽으면서, 이 자동 실행 정보를 그 디스크의 고유 번호와 함께 레지스트리(윈도우즈의 각종 설정을 저장하는 곳입니다.)의 특정한 영역에 저장해두고, 다음에 이 디스크가 삽입되었을 때 이 곳의 정보를 이용하여 자동으로 해당 프로그램을 실행하게 됩니다. 즉, 다음에 다시 이 디스크가 이 컴퓨터에서 실행될 때에는, autorun.inf 파일은 읽지 않고 레지스트리에서 바로 데이터를 가져온다는 이야기가 되겠네요. 아래는 위에서 본 CD를 읽어들인 후의 레지스트리의 모습입니다. 이 CD에 관한 정보가 레지스트리에 등록되어 있음을 확인할 수 있습니다.
그림. 앞의 그림에서 예시한 Caesar 3 CD를 읽어들인 후. autorun.inf 파일의 설정이 레지스트리에 입력되어 있다. 다음에 이 CD가 다시 삽입되면 윈도우즈는 autorun.inf 파일을 CD에서 읽는 대신, 이 설정을 참조하여 자동 실행을 수행한다.
[이 “레지스트리에 저장”하는 부분은, 차후 다시 autorun.inf 파일을 읽지 않도록 하여 처리 속도를 향상시키려는 (CD롬 등에서 파일을 읽는 데 소요되는 시간은 하드 디스크 등에 비해서 상당히 느립니다.) 이유가 있는 것으로 생각됩니다. 초창기의 autorun.inf 파일이 재기록 불가능한 디스크에 이용되었기 때문에 이 파일이 수정되거나 삭제될 가능성이 없다는 점도 주요한 고려요소가 되었겠지요. 그러나 이 기능은 후일 상당한 보안상 문제로서 자리잡게 됩니다. 자세한 내용은 바로 뒤에서 다시 살펴봅니다.]
(3) 자동 실행 잔혹사 - 왜 문제가 되는가?지금까지의 내용으로 보면 참 좋은 기능인데, 도대체 왜 이 좋은 기능이 이렇게 악의 축의 반열에 오르게 된 것일까요? 필자의 기억으로는, 이 기능이 본격적으로 문제가 되기 시작한 것은 윈도우즈 XP가 등장하고도 한참이나 지난 이후, 구체적으로는 2006~2007년 이후였던 것 같습니다. 자동 실행 기능 자체는 윈도우즈 95 시절부터 있었던 것인데, 왜 이제야 이런 기능이 문제가 되기 시작했던 것일까요?
악성 코드들이 이 기능을 악용하는 방법은, 모두가 아시다시피 각종 디스크 드라이브의 루트 폴더에 자신이 자동으로 실행될 수 있도록 하는 autorun.inf 파일을 생성하는 것입니다. 따라서, 이 기능을 악용하기 위해서는 하나의 전제가 필요합니다 - 디스크 드라이브의 루트 폴더에 autorun.inf 파일의 임의적인 기록이 가능할 것.
위에서 설명한 바 있듯, 컴퓨터에 익숙하지 않은 사용자들이 CD타이틀에 접근하기 용이하도록 한 것이 자동 실행 기능의 시작이었기 때문에, 초기의 자동 실행 기능은 그 사용 영역이 CD-ROM에 한정되었습니다. 그러나 CD-ROM은 재기록 불가능한 매체이기 때문에, 이미 CD-ROM에 저장되어 있는 자동 실행 설정 파일(autorun.inf)를 사후에 수정할 방법이 없습니다. 결국 이 기능을 악성코드 제작자들이 악용하고 싶어도 방법이 없었던 것입니다. 그래도 일부 악용 사례는 있었습니다. 악의적인 목적을 가진 이들이 와레즈(Warez) 등에 게임 등을 배포하면서, 게임 CD타이틀의 이미지(.ISO 파일)를 변조하여 CD 이미지 안에 악성코드를 저장한 후, 그 CD 안에 존재하던 autorun.inf 파일을 변조하여 이 디스크가 읽히면 악성코드가 먼저 실행되도록 조작한 사례였죠. 그러나 이 시기에는 이러한 사례가 와레즈 등 정당하지 못한 경로로 얻은 데이터로 인한 피해 사례로만 인식되었을 뿐, 자동 실행 기능 자체에 대한 문제제기는 없었습니다.
본격적인 문제의 근원은 윈도우즈 XP 서비스팩 2에서 시작됩니다. 윈도우즈 XP 서비스팩 2는, 이 자동 실행 기능을 CD-ROM/DVD-ROM 타이틀 이외에, 일반 하드 디스크 등 다른 재기록 가능한 모든 이동식 매체에 사용 가능하도록 기능을 확장합니다. 이렇게 되고 나자, autorun.inf 파일은 CD-ROM/DVD-ROM 이외에 하드 디스크, USB 디스크, SD 카드 등 모든 종류의 재기록 가능 매체에서 동작이 가능해지게 되었고, 그에 따라 이런 디스크에 autorun.inf 파일을 기록하거나, 이미 기록되어 있는 파일의 내용을 변조할 수도 있게 되었습니다. 문제의 씨앗이 뿌려진 것이지요.
참고로, 2011년 2월 정기 패치로 제공된 KB971029 패치를 적용하면, 이러한 윈도우즈 XP 서비스팩 2 이후의 적용 대상 확대 조치가 거의 무효화됩니다. "이 업데이트는 자동 재생의 자동 실행 항목을 사용할 수 없게 설정하고 CD 및 DVD 드라이브에서 채워진 항목만 표시합니다. 결과적으로 USB 미디어에는 자동 실행 기능이 작동되지 않습니다." 이 패치는 윈도우즈 XP/2003, 윈도우 비스타/2008 버전에 대하여 제공되었으며, 윈도우 7에 대해서는 제공되지 않았습니다. 거의 모든 일반적인 경우에 대하여, 이 패치의 사용은 적극 추천됩니다. 더 자세한 설명은 KB971029 에 관한 마이크로소프트 Knowledge Base 의 설명을 참조하시기 바랍니다. (링크 : http://support.microsoft.com/kb/971029)
그럼에도 불구하고, 처음에는 이 기능을 악용하는 사례가 별로 없었습니다. 아직 재기록 가능한 이동식 디스크들이 활발하게 이용되는 시기가 아니었기 때문입니다. 그러나 어느 순간 폭발적으로 대중화된 USB 디스크는, 일반 대중들이 플로피 디스켓을 영원히 폐기처분하도록 만들었지만, 또한 악성코드 제작자들에게는 무한한 악성코드 유포의 가능성을 제공하게 되었습니다. USB에 악성코드를 저장한 후, 이 악성코드를 자동으로 실행하도록 autorun.inf 파일을 작성해 두면 되는 것입니다. 아무것도 모르는 컴퓨터 사용자는 이 USB 드라이브를 자신의 컴퓨터에 꽂을 것이고, 그 순간 자동 실행 기능이 동작하여 악성 코드가 실행되겠죠.
그리고 일단 실행이 되면, 실행된 컴퓨터의 모든 드라이브의 루트 폴더에 악성코드 본체와 autorun.inf 파일을 심어놓고, 혹시 다른 USB 디스크나 이동식 하드 디스크, 디지털카메라, MP3 플레이어 등이 USB에 연결되지 않는지도 확인하여 이런 녀석들이 감지되면 그 디스크들의 루트 폴더에도 자신과 함께 autorun.inf 파일을 만들어둡니다. 그 결과, 컴퓨터를 켤 때마다 항상 악성코드 본체가 실행될 수 있을 뿐만 아니라, 이 디스크에 연결되는 각종 디스크들이 다른 컴퓨터에 연결될 때에 자기 자신이 증식/확산될 수 있는 것이지요. 구태여 윈도우즈의 보안 허점을 어렵게 찾아다니지 않아도 되는, 아주 편안한 통로가 만들어진 셈입니다.
이런 autorun.inf 악용 악성코드들의 특성상, 불특정 다수가 컴퓨터를 이용하는 시설 - 예를 들면 학교 전산실이라던가, PC방이라던가 - 에서는 거의 재앙에 가까운 결과를 연출하게 됩니다. 부주의한 누군가가 악성코드에 감염된 USB 디스크를 한 번이라도 컴퓨터에 꽂았다 하면 그 이후 그 컴퓨터를 사용하는 다른 수백, 수천 명의 USB 디스크에 이 악성코드가 감염되어 무차별적으로 확산되기 때문입니다. 그 결과, 지난 몇 년 동안 - 그리고 지금도 - 이 기능은 악성코드가 자신을 퍼뜨리는 데에 아주 유용한(?) 도구로 이용되고 있는 것입니다.
다음 게시물에서 계속됩니다.