MenuIcon

Owl-Networks Archive

LoginIcon

autorun.inf 를 악용하는 악성코드 종합 대책 #3/4

| 분류: 컴퓨터 사용 경험 | 최초 작성: 2010-09-26 00:59:26 |



< 읽기 전에 >

1. 이 글은 필자가 집필하여 발행한 전자책 "계정 및 정보보호를 위한 가이드 북(제8판)" 의 제6장 부분 중 관련 부분을 재편집한 것입니다. 모두 4개의 게시물로 구성되어 있습니다.

2. 이 글은 과거 필자가 등록한 다음 게시물의 내용을 포함합니다.

281. [[LINK::281]]
294. [[LINK::294]]
317. [[LINK::317]]

3. 원래 이 분야에 전문적인 지식이 없는 일반인을 대상으로 하여 작성된 글이기 때문에, 핵심 내용에 비해 설명이 깁니다. 이 점 참고하시기 바랍니다.



3. 구체적인 대처법들


일단 결론부터 말씀드리고 시작하도록 하겠습니다. 윈도우 비스타 이후의 윈도우즈에서는, UAC(사용자 계정 컨트롤)의 지원으로 인하여 시스템 보안이 더욱 철저해졌고, 결정적으로 자동 실행 기능의 동작 방식 자체가 변경되었기 때문에 편하신 대로 자동 실행 기능을 사용하셔도 무방합니다(물론 사용하지 않는 것이 좀 더 보안상으로는 유리합니다). 그러나 윈도우즈 XP 및 그 이하의 윈도우즈에서는 궁극적으로 자동 실행 기능을 사용하지 않는 것이 최선의 선택입니다. 자세한 이유는 뒤에서 설명하기로 하고, 일단 자동 실행 기능을 끄는 방법을 먼저 알려드리도록 하겠습니다.


(1) 자동 실행 기능이 동작하지 않도록 설정하기


위에서 말씀드린 바와 같이, 이 기능이 제대로 동작하도록 하기 위해서는 위에서 말씀드린 바 있는 마이크로소프트 패치가 적용되어야만 합니다. 윈도우즈 2000 및 XP의 경우에는 업데이트 967715가, 윈도우 비스타의 경우에는 업데이트 950582가 설치되어야만 합니다. 단, 윈도우 비스타의 경우 서비스팩 2를 적용한 경우 이미 패치가 이루어져 있으므로 별도로 패치하지 않아도 됩니다. 패치가 끝난 후 시스템을 다시 부팅하고 아래의 절차를 진행합니다.

마이크로소프트 기술 문서 KB967715

* 기술 문서 페이지 : http://support.microsoft.com/kb/967715

* 위 기술 문서 페이지를 통하여 Kb967715 핫픽스를 다운로드 받을 수 있습니다. 만약 이 핫픽스를 적용하지 않았다면, 위 링크를 통하여 핫픽스를 다운로드 받으시기 바랍니다.



윈도우즈 XP Professional, 윈도우 비스타, 윈도우 7의 경우

① [시작] - [실행] - gpedit.msc 를 실행합니다. 윈도우 비스타 및 윈도우 7에서는 시작 버튼을 누른 후 나타나는 검색/실행 창에 gpedit.msc 를 입력합니다. 윈도우즈 정책 편집기가 실행됩니다.

② 자신의 윈도우즈 환경에 따라 다음의 위치로 이동합니다.

* 윈도우즈 XP : [컴퓨터 구성] → [관리 템플릿] → [시스템]
* 윈도우 비스타 및 윈도우 7 : [컴퓨터 구성] → [관리 템플릿] → [Windows 구성 요소] → [자동 실행 정책]

③ 세부 항목 중 [자동 실행 사용 안 함]을 더블클릭합니다.

④ 설정을 [사용(E)] 로 바꾼 후, 그 아래의 대상을 "모든 드라이브" 로 설정하고, [확인] 또는 [적용(A)] 을 클릭합니다.

⑤ 정책 편집기를 끄고 컴퓨터를 다시 시작합니다.

pic_04.png


그림. 자동 실행 사용 안 함 설정 화면. 이 화면은 윈도우 비스타의 화면이지만, 윈도우즈 XP나 윈도우 7에서도 기본적인 설정 항목은 동일합니다.


윈도우즈 XP 홈 에디션의 경우


윈도우즈 XP 홈 에디션에는 정책 편집기(gpedit.msc)가 존재하지 않습니다. 따라서 자동 실행 기능을 중단시키기 위해 정책 편집기를 사용할 수 없습니다. 이 경우 다음의 절차에 따라 레지스트리를 직접 수정하여 이를 중단시킬 수 있습니다. 단, 레지스트리는 잘못 수정되면 시스템에 치명적인 영향을 미칠 수 있으므로, 주의하여 수정하여 주시기 바랍니다. 또한, 레지스트리 편집기는 별도의 저장 버튼이 없으며, 수정과 동시에 저장되어 반영됩니다.

만약 직접 레지스트리를 수정하는 것이 자신이 없다면, 다음 레지스트리 설정 파일을 다운로드 받아 압축을 푼 후, NotUseAutoRunXP.reg 파일을 더블클릭 하시면 시스템에 적용이 됩니다. 이 파일은 아래에 설명하고 있는 절차를 한 번에 처리해 줍니다.

다운로드 (크기: 329Byte)


① [시작] - [실행] - regedit 를 실행하여 레지스트리 에디터를 실행합니다.

② 레지스트리에서 다음의 항목을 찾아갑니다.

HKEY_CURRENT_USER → SOFTWARE → Microsoft → Windows → CurrentVersion → policies → Explorer

③ 오른쪽 패널에서 NoDriveTypeAutoRun 을 마우스 오른쪽 단추를 클릭한 다음 수정을 클릭합니다.

④ 값 데이터 상자에 0xFF (또는 16진수를 체크한 후 FF)를 입력합니다.

⑤ 확인을 클릭한 다음 레지스트리 편집기를 종료합니다.

⑥ 컴퓨터를 다시 시작합니다.



(2) 윈도우즈 XP 등에서 권장되는 추가 조치

일단, 이 방법은 과거 마이크로소프트의 공식 패치가 발표되기 전, 자동 실행 기능이 동작하지 않도록 하기 위하여 임시방편으로 이용되었던 방법입니다. 개인적으로 마이크로소프트가 KB967715 등을 내놓아 이 방법이 더 이상 필요하지 않을 것이라 예상했었습니다만, KB967715 등의 핫픽스가 가지고 있는 문제점 때문에, 좀 더 확실한 안전을 위해서는 이 방법을 계속적으로 사용하는 것이 좋을 것 같습니다.

일단 방법부터 보시고 나서 그 이유를 설명드리도록 하겠습니다. 다만 이 작업은 레지스트리를 직접 수정하는 작업이므로, 주의를 기울여 작업을 진행하여 주시기 바랍니다.

만약 직접 레지스트리를 수정하는 것이 자신이 없다면, 다음 레지스트리 설정 파일을 다운로드 받아 압축을 푼 후, AutoRunDoesNotExistXP.reg 파일을 더블클릭 하시면 시스템에 적용이 됩니다. 이 파일은 아래에 설명하고 있는 절차를 한 번에 처리해 줍니다.

다운로드 (크기: 346Byte)


① [시작] - [실행] - regedit 를 실행하여 레지스트리 에디터를 실행합니다.

② 레지스트리에서 다음의 항목을 찾아갑니다.

HKEY_LOCAL_MACHINE → SOFTWARE → Microsoft → Windows NT → CurrentVersion → IniFileMapping

③ IniFileMapping을 마우스로 선택한 후 마우스 오른쪽 버튼을 눌러 “새로 만들기” 이하의 “키”를 선택합니다.

pic_05.png


그림. 레지스트리에 새 키를 만들기 위한 방법. 바로 위 키에 마우스 오른쪽 버튼을 클릭한 후 “새로 만들기” 기능을 사용합니다.

④ 하단에 새 키 이름을 입력할 수 있게 되는데, 키의 이름을 autorun.inf 라고 입력합니다.

⑤ 새로 만든 키 autorun.inf를 선택한 후, 오른쪽 패널의 (기본값)을 더블클릭하면 새 값을 입력할 수 있습니다. 여기에 다음과 같이 입력합니다.

@SYS:DoesNotExist

※ @SYS: 뒤의 문자열은 꼭 DoesNotExist가 아니어도 됩니다. 예를 들면 AntiAutoRun처럼 임의의 다른 문자열이어도 됩니다. 다만 내 컴퓨터에 “없을 법한” 이름으로 만들어 주세요.

⑥ 레지스트리 에디터를 종료하고, 시스템을 다시 시작합니다.




일단 내가 무엇을 하고 있는지는 알아야 할 것 같으므로, 설명은 조금 자세하게 하겠습니다.

원리는 간단합니다. 윈도우즈가 레지스트리를 사용하기 전, 모든 설정을 .INI 파일로 관리하던 시절이 있었습니다. (애초에 레지스트리라는 녀석이 등장한 이유가, 그 엄청나게 많은 설정들을 수많은 별도의 .INI 파일들로 관리를 하려니 너무나 불편하고 복잡했기 때문입니다.) 그러나 레지스트리를 이용하는 현재의 윈도우즈에는 그 시절 .INI 파일들이 존재할 리가 없겠지요. 따라서 “그 시절”의 프로그램들을 현재의 윈도우즈에서 실행하려 하면 윈도우즈의 중요 설정들을 프로그램이 읽을 수가 없기 때문에 오류가 발생할 것입니다. (“그 시절”의 프로그램을 실행할 일이 있을까 싶긴 합니다.) 그런 프로그램들과의 호환성을 유지하기 위해서, 윈도우즈는 특정한 설정 파일들의 설정 내용을 프로그램들이 요구하는 경우, 레지스트리의 특정 영역에 저장된 설정 내용을 그 파일의 설정 내용 대신 전달해주는 기능을 가지고 있습니다.

지금 우리가 사용한 것이 바로 그, 호환성을 유지하기 위해 설정하는 부분입니다. 우리는 지금 그 부분에 autorun.inf 파일을 등록시켰는데, 그 결과 autorun.inf 파일은 “과거에 설정 파일로 사용된 적이 있지만 지금은 사용하지 않는” 파일이 되어버렸습니다. 이 설정에는 윈도우즈 자신도 구속되기 때문에, 탐색기 등에서 autorun.inf 파일을 읽게 되더라도, 윈도우즈에서 중간에 이 읽기 작업을 중단시키고 레지스트리에 등록된 특정한 값 - 그러나 사실은 존재하지 않으므로 그냥 텅 빈 값 - 을 대신 돌려주게 되는 것입니다. 그 결과 autorun.inf 파일은 무용지물이 되어버리겠지요.

이 방법이 (현재, 특히 윈도우즈 XP에서) 갖는 의미는, 마이크로소프트 KB967715 등 패치에도 불구하고 해결되지 않는 하나의 문제점을 원천봉쇄한다는 것입니다. 무슨 이야기일까요?

앞에서 한번 설명한 적이 있습니다만, 윈도우즈는 한 번이라도 컴퓨터에 연결된 적이 있는 디스크들의 정보를 레지스트리에 저장하고 있습니다. 그 저장되는 정보에 autorun.inf 의 정보가 포함된다는 이야기도 했었지요. 그렇다면, 자동 실행 기능을 사용하지 않도록 설정을 하였다면, (제 생각에는) autorun.inf 의 자동 실행 관련 정보들은 레지스트리에 저장이 되지 않는 것이 합리적이라고 생각합니다. 그러나 현실은 그렇지가 않습니다.

pic_06.png


그림. 자동 실행을 끈 상태에서도 위와 같이 자동 실행 관련 데이터는 저장되고 있습니다.


위 그림에서 보는 바와 같이 자동 실행 기능이 꺼져 있어도 자동 실행 관련 정보는 계속 저장이 되고 있습니다. 이것이 무엇이 문제가 되나 싶을 수도 있습니다만, 윈도우즈 XP에서는 (관리자 권한을 가진 계정이라면) 어떤 프로그램이라도 레지스트리를 자유롭게 수정할 수 있기 때문에, 악성코드(가 아니더라도 다른 프로그램)에 의해 레지스트리의 자동 실행 허용 관련 설정이 (사용자가 모르는 사이) 변조될 가능성이 크기 때문에, 사용자가 전혀 인식하지 못하는 사이에 악성코드가 침투할 수 있는 가능성이 열려 있습니다. 최근의 몇몇 악성 코드들이 수정하는 레지스트리 영역 중에 이 자동 실행 허용 설정 영역이 들어가 있다는 점은 시사하는 바가 큽니다. 한 번 뚫리면 끝인 셈이죠.

윈도우 비스타나 윈도우 7의 경우는 사용자 계정 컨트롤(UAC)에 의해 관리자 권한이 사용자의 허용이 있어야 주어지기 때문에, 어떤 프로그램이라도 레지스트리를 수정하기 위해서는 사용자의 확인이 필요합니다. 따라서 사용자가 모르는 사이에 설정이 풀려 버리는 상황은 여간해서는 발생하지 않을 것입니다. 그러나 윈도우즈 XP의 경우는 이 부분이 미비하기 때문에, 아예 관련 정보를 저장하지 않을 뿐만 아니라, 윈도우즈의 자동 실행 설정 관련 레지스트리를 아예 무시하고 동작하는 이 방법을 보조적으로 사용하는 것이 더 효과적이라는 것입니다.

특히 이 설정은 UAC(사용자 계정 컨트롤, User Accounts Control) 등의 보안 장치가 미비하여 악성코드의 침입을 더 쉽게 허용할 수밖에 없는 윈도우즈 XP를 사용하고 있는 사용자들에게 추천하는 방법입니다. 이 방법을 적용하면, 위에서 설명한 바 있는 MountPoints2 레지스트리에 더 이상 자동 실행 정보 자체가 저장되지 않게 됩니다. (자동 실행 기능을 윈도우즈에서 끄더라도, MountPoints2 레지스트리에는 내 컴퓨터에서 읽혀진 적이 있는 디스크의 정보가 모두 기록되고 있습니다.)


(3) 이동식 디스크에 autorun.inf를 미리 생성하는 방법의 유용성 문제


요즘도 많이 사용되는 방법이라고 생각됩니다만, 악성코드가 autorun.inf 파일을 사용하는 것을 막기 위해 각 드라이브의 루트 폴더에 내용 없는 autorun.inf 파일을 생성하여 시스템 및 읽기 속성을 걸어두는 방법이 있습니다. 악성코드가 자신이 이용하기 위하여 autorun.inf 파일을 생성하려고 해도 이미 존재하는 시스템 속성의 autorun.inf 파일로 인하여 파일 생성에 실패하게 되기 때문에, 외부에서 많이 사용하게 되는 USB 디스크 등에 autorun.inf 파일이 복사되는 것을 예방하기 위해 많이 사용되던 방법입니다.

그러나 이 방법으로는 악성코드 자체가 드라이브에 복사되는 것을 막을 수는 없고, 다만 자동으로 실행되는 것만을 방지해 줄 뿐입니다. (물론 이것만으로도 효과를 볼 수는 있지요. 사용자가 스스로 악성코드를 실행하는 사태가 벌어지지 않는다면.) 게다가, 최근의 악성코드들은 강제로 시스템 속성 등을 해제한 후 이를 삭제하고 자신의 autorun.inf 파일을 새로 만들어 넣기 때문에 이 방법은 이미 효용성을 상실하였습니다.

그래서, 파일이 아닌 autorun.inf 라는 이름을 갖는 폴더를 만들고, 이 폴더에 시스템 및 읽기 속성을 주는 방법이 각광을 받아왔습니다. 폴더와 같은 이름을 갖는 파일을 만들 수 없는데다, 폴더는 파일과 같이 간단하게 지울 수 없기 때문에 위 방법보다는 훨씬 안전합니다. 그러나, 이 방법 역시 오랫동안 사용되어 왔기 때문에 이 방법 역시 다소 불안합니다. 폴더의 경우도 비어 있다면 간단한 내부 명령만으로도 삭제가 가능하기 때문입니다. 그래서 autorun.inf 폴더 안에 또 다른 폴더를 만들어 두거나, 몇 개의 파일을 복사해 두는 방법으로 일반적인 디렉토리 삭제 명령을 이용하여 한 번에 삭제할 수 없도록 만들어두기도 합니다.

pic_07.png

그림. 위와 같이 폴더를 이용하여 autorun.inf 파일을 만들지 못하도록 조치를 취하기도 합니다.

때로는, 아예 autorun.inf 라는 폴더를 만들어서 그 내부에 파일이나 폴더 몇 개를 생성해둔 후, autorun.inf 폴더의 접근 및 수정 권한을 모두 박탈해버리는 방법을 사용하기도 합니다. 이렇게 만들어진 폴더는 디스크 자체를 포맷하지 않는 한 누구도 (심지어 사용자조차도!) 삭제할 수 없게 되어버리기 때문에(당연히, 접근도 할 수 없습니다.) 웬만한 악성코드는 이를 건드리지 못하게 됩니다. 뭐, 지혜롭게 사용하면 상당히 유용할 수 있겠습니다만, 이 방법은 소극적으로 내 USB 디스크를 통하여 내 컴퓨터에 악성 코드가 전파되거나, 다른 컴퓨터에 악성 코드를 옮기는 것만을 방지할 뿐입니다. 이 점을 명심하고 사용하시기 바랍니다.


다음 게시물에서 계속됩니다.

☞ 태그: autorun, NoDriveTypeAutoRun, MountPoints2, autorun.inf, 자동실행, 악성코드, KB967715,

☞ 트랙백 접수 모듈이 설치되지 않았습니다.

☞ 덧글이 없고, 트랙백이 없습니다.

덧글을 남기시려면 여기를 클릭하십시오.
[489] < [387] [386] [372] [366] [361] ... [360] ... [359] [358] [357] [355] [352] > [19]

(C) 2000-2023, Owl-Networks. Powered by Perl. 이 페이지는 HTML 5 표준에 따라 작성되었습니다.