정보보호/Windows

[Tool]Autoruns

JSwill 2007. 7. 31. 22:56

Title: Removing Unknown Malware using Autoruns

필자가 좋아하는 사이트 중 하나는 Sysinternals.com 이다. 이 사이트는 작지만 유용하며 강력한 공개 프로그램을 개발해서 제공하고 있다. 물론 이들 프로그램보다 기능이 강화된 프로그램은 Winternals.com 에서 상용으로 판매하고 있다.

오늘 소개하는 프로그램 역시 Sysinternals.com에서 개발, 배포하는 프로그램으로 알수 없는 백도어나 알수 없는 악성 프로그램을 제거할 때 꼭 필요한 Autoruns이라는 프로그램이다. 필자가 예전에 올린 안티 스파이웨어에 대한 벤치(I , II , III )에서 언급했듯 시스템에 백도어나 악성 프로그램이 깔렸다고 해서 큰 문제가 되는 것은 아니다.

그 이유는 간단하다. 하드 디스크에 백도어 프로그램이나 악성 프로그램이 있다고 해도 이들 악성 프로그램을 자동으로 실행해주는 코드가 없다면 무용지물이기 때문이다. 따라서 필자는 자동 실행 코드를 제거하는 방법으로 알 수 없는 ActiveX 제거하기 , BHO와 도구 막대를 관리할 수 있는 유용한 유틸리티 , 불필요한 프로그램의 자동 실행 막기 와 같은 팁을 작성했다.

불필요한 프로그램의 자동 실행 막기 에서 언급한 것처럼 프로그램을 자동으로 실행하는 방법은 상당히 많으며 알 수 없는 악성 프로그램이 설치된 경우 이러한 레지스트리를 모두 조사해서 제거하는 것은 어지간한 실력이 아니면 상당히 힘들다. 따라서 이번 팁에서는 Autorun이라는 프로그램을 이용해서 알 수 없는 악성 프로그램이나 백도어를 제거하는 방법을 설명하겠다.


목 차

  1. 준비물
  2. 프로그램 등록
  3. 악성 프로그램이 깔린 경우의 일반적인 증상
  4. Autoruns을 이용한 악성 프로그램 제거
  5. 맺음말
  6. 링크
  7. 부록

IV. Autoruns을 이용한 악성 프로그램 제거
악성 프로그램을 제거하려면 시스템 기동에 필수적인 프로세스를 제외한 모든 프로세스를 종료해야 한다. XP의 작업 관리자의 경우 이름이 없는 프로세스는 출력하지 못하므로 가급적 Sysinternals.com 사의
Process Explorer 과 같은 3사의 고급 작업 관리자를 사용하는 것이 좋다. 아울러 컴퓨터가 정상적으로 동작할 때의 상태를 Autoruns의 File/Save As 메뉴를 이용해서 백업해 두는 것도 문제를 해결하는 좋은 방법 중 하나이다.

Ctrl-Shift-Esc를 눌러 작업 관리자를 기동한다.

부록 1필수 프로세스를 참고해서 필수 프로세스를 제외한 모든 프로세스를 종료한다. 물론 작업 관리자와 사용자가 필요에의해 띄운 프로세스(예: totalcmd.exe, cmd.exe, autoruns.exe등)는 남겨두어야 한다.

클릭: 그림 확대

작업 관리자파일/새 작업 메뉴를 클릭한 후 Autoruns.exe를 입력하고 확인을 클릭해서 Autoruns을 기동한다.

클릭: 그림 확대

Options/Verify Code Signatures가 체크되어 있는지 확인한다. 체크되어 있지 않은 경우 반드시 체크한다.

Options/Hide signed Microsoft Entries를 체크한다. 이 항목을 체크하지 않은 경우 엉뚱한 한목을 삭제할 수 있으므로 반드시 체크한다.

F5 키를 눌러서 목록을 다시 갱신한다.

클릭: 그림 확대

File/Save As 메뉴를 클릭해서 현재 상태를 파일로 저장한다.

부록 2Autoruns의 탭 설명에따라 불필요한 항목을 제거한다. 항목을 제거할 때에는 제거하는 항목의 파일명을 파일관리자로 변경하거나 특정 폴더에 백업한 후 제거하는 것이 좋다. 삭제는 시스템을 다시 시작해도 문제가 없는 경우 삭제한다. 한가지 주의할 것은 이 단계에서는 드라이버 탭의 불필요한 항목은 삭제하지 않아야 한다.

불필요한 항목을 모두 삭제했으면 User/Username을 클릭한 후 8단계를 반복한다.

모든 사용자에대해 8~9 단계를 반복한다.

시스템을 다시 기동한다. 불필요한 항목을 제거해도 위에서 설명한 증상이 그대로 반복된다면 드라이버에서도 의삼가는 항목을 삭제한 후 시스템을 다시 기동한다.


VII. 부록
부록 1: 필수 프로세스 정보

csrss.exe Client/Server Run-time SubSystem
콘솔창, 쓰리드의 생성 및 삭제, 16 비트 가상 MS-DOS 환경을 관리한다.
lsass.exe Local Security Authentication Server
사용자 로그온의 타당성을 검증하며 Winlogon 서비스를 위해 사용자 인증을 담당할 프로세스를 생성한다. Msgina.dll 과 같은 인증 패키지를 사용해서 인증을 수행한다. 인증이 성공적이면 사용 접근 토큰을 발생하며, 사용자 접근 토큰은 초기 쉘을 실행하는데 사용된다. 사용자가 시작하는 다른 프로세스는 이 토큰을 상속한다.
services.exe 서비스 관리자
이 프로세스는 시스템 서비스의 시작, 중지 및 시스템 서비스와의 상호 작용을 담당하는 서비스 제어 관리자이다.
smss.exe Session Manager SubSystem
사용자 세션의 시작을 담당하는 세션 관리자 하위 시스템이다. 이 프로세스는 시스템 쓰레드로부터 시작되며 Winlogon 및 Win32(Csrss.exe) 프로세스의 시작과 시스템 변수 설정을 비롯한 다양한 작업을 수행한다. Smss.exe는 이러한 프로세스를 시작한 후 Winlogon이나 Csrss가 종료되기를 기다린다. Winlogon이나 Csrss가 정상적으로 종료되면 시스템을 종료하며 예기치 않은 일이 발생하면 Smss.exe는 시스템이 응답을 중지한다(Hang).
System 대부분의 시스템 커널 모드 스레드가 System 프로세스로 실행된다.
System Idle Process 각 프로세서에서 실행되는 단일 스레드로 시스템이 다른 스레드를 처리하지 않을 때의 프로세서 시간을 나타내는 일만 한다. 일반적으로 작업 관리자에서 이 프로세스가 프로세서 시간의 대부분을 차지한다.
svchost.exe DLL로 실행되는 다른 프로세스의 호스트 역할을 하는 프로세스로서 이 프로세스 항목은 하나 이상 표시될 수 있으며, 보통 4~6개가 실행된다. Svchost.exe에대한 보다 자세한 사항은 Svchost.exe는 무엇일까?를 참조하며, Svchost.exe를 통해 기동되는 서비스는 Svchost.exe를 기동하는 서비스 찾기를 참조하기 바란다.
winlogon.exe Windows Logon
사용자 로그온과 로그오프를 관리하며, Windows XP의 액티베이션 코드를 검사한다.

위에서 설명한 프로세스는 시스템 기동에 필요한 최소한의 프로세스로서 각 프로세스의 종속 관계는 다음 그림과 같다.

클릭: 그림 확대

파란.com에서 배포하는 스파이웨어라는 글에서 알 수 있듯이 대부분의 악성 프로그램은 csrs.exescvhost.exe처럼 시스템 프로세스와 비슷한 이름을 사용한다. 심지어는 csrss.exe처럼 동일한 이름을 사용하는 경우도 있다. 따라서 다음 기준에따라 프로세스를 종료해야 한다.

이름이 다른 경우: 예: csrs.exe, scvhost.exe

이름이 같은 경우: System32 폴더에서 기동된 것인지를 확인한 후 System32 폴더에서 기동한 것이 아니라면 모두 종료.

부록 2: Autoruns의 탭 설명

클릭: 그림 확대 Everything
다른 탭에서 확인할 수 있는 모든 자동 실행 코드가 나타난다. 그러나 여기서 작업하는 것보다는 각각의 탭에서 확인하고 작업하는 것이 좋다.
클릭: 그림 확대 Logon
쉘이 실행하는 프로그램이 등록되어 있다. 일반적으로 Run 레지스트리(HKLM,HKCU)시작 프로그램 폴더(모든 사용자, 로그인한 사용자)에 등록되어 있는 항목이 표시된다. 보통 XP를 처음 설치한 경우에는 아무런 항목이 나타나지 않는다. 따라서 자신이 설치한 프로그램이 아니거나 모르는 프로그램이라면 삭제하는 것이 좋다.

그림에서 알 수 있듯이 필자의 경우 Total Commander, DK Note, nDiary만 시작 프로그램 폴더에 등록되어 있다. 필자는 Run 레지스트리를 사용하지 않는다. 그 이유는 시작 폴더의 경우 바로 확인이 기능하지만 Run 레지스트리의 경우 일시적으로나마 프로그램의 실행을 숨길 수 있기때문이다.

클릭: 그림 확대 Explorer
이 항목에는 쉘 확장, BHO, 탐색기 도구 막대, 쉘 가로채기등이 표시된다. XP를 처음 설치한 경우 HyperTerminal Icon Ext디스플레이 패닝 CPL 확장이 등록되어 있다. 따라서 이 두개의 확장과 자신이 설치한 확장이 아니거나 모르는 확장이라면 삭제하는 것이 좋다.

그림에서 알 수 있듯이 필자의 경우 UnlockerShellExtensionVPCHostCopyHook가 등록되어 있다. UnlockerShellExtension을 이전에 팁으로 소개한 Unlocker가 등록한 쉘 확장이며, VPCHostCopyHook는 필자가 설치한 Virtual PC에서 클립보드를 공유하기위해 설치된 확장이다.

클릭: 그림 확대 Internet Explorer
인터넷 탐색기의 BHO도구 막대, 각종 확장이 표시된다. 이 항목 역시 XP를 처음 설치한 경우에는 아무것도 등록되어 있지않다. 따라서 자신이 설치한 BHO나 확장이 아니라면 모두 삭제한다.

그림에서 알 수 있지만 필자의 경우에도 아무런 확장이나 BHO도 등록되어 있지않다.

클릭: 그림 확대 Scheduled Tasks
작업 예약 목록이 나타난다. XP를 처음 설치한 경우 어떠한 작업도 등록되어 있지않다. 따라서 자신이 직접 등록한 작업 목록이 아니라면 모두 삭제하는 것이 좋다.

필자의 경우 Prefetch 최적화에서 사용한 필자의 팁이 등록되어 있다.

클릭: 그림 확대 Services
시스템 부팅시 자동적으로 시작할 수 있는 모든 서비스가 나타난다. 일반적으로 XP를 처음 설치한 경우 어떠한 서비스도 등록되어 있지 않은 것이 정상이다. 따라서 자신이 직접 설치한 서비스가 아니거나 모르는 서비스라면 삭제하는 것이 좋다. 그러나 서비스의 경우 시스템의 원할한 동작을 위해 설치된 것들이 많으므로 반드시 해당 서비스가 어떤한 서비스인지 확인하고 삭제하는 것이 좋다.

그림에서 알 수 있지만 필자의 경우에도 어떠한 서비스도 등록되어 있지않다.

클릭: 그림 확대 Drivers
사용 안 함으로 설정되지 않은 모든 커널 모드 드라이버가 표시된다. XP를 처음 설치한 경우에는 오디오 카드 드라이버, 비디오 카드 드라이버, 넷트웍 카드 드라이버, Direct paraller Link Driver, SafeDisc driver 정도가 등록되어있다. 따라서 각각의 드라이버중 자신이 설치하지 않은 드라이버나 알 수 없는 드라이버는 삭제해도 된다. 그러나 드라이버의 경우 시스템을 기동하는데 있어서 필수적인 경우가 많으므로 확신이 없는한 삭제하지 않는 것이 좋다.

필자의 경우 다음과 같은 드라이버가 설치되어 있다.

ati2mag ATI Radeon 비디오 드라이버
hcmon VMWare의 USB 드라이버
npkcrypt 키보드 해킹 방지 프로그램의 드라이버. 지워도 추가되고, 서비스로도 등록된다. 해킹 방지 프로그램이 아니라 거의 스파이웨어 수준이다.
scsk4 부실한 설명 때문에 하이재킹 프로그램처럼 보이지만 SoftCamp에서 개발한 보안 드라이버이다. 이 드라이버 역시 삭제해도 은행을 접속하면 다시 추가된다.
VMnetBridge VMWare에서 Network Bridge를 지원하는 드라이버이다.
VMnetuserif VMWare 프로그램이 가상 네트웍을 사용할 수있도록하는 드라이버.
vmx86 VMWare의 가상화 드라이버. VMWare에서 핵심 적인 드라이버이다.
VPCAppSv Virture PC용 응용 프로그램 서비스를 제공하는 드라이버.
vstor2 VMWare의 가상 저장 매체 드라이버.

클릭: 그림 확대 Boot Execute
부트 프로세스가 진행되는 초기에 실행되는 프로그램이 표시된다. XP를 처음 설치한 경우에는 어떠한 프로그램도 나타나지 않는다. 따라서 자신이 직접 설치한 프로그램이 아니거나 모르는 프로그램인 경우에는 가급적 삭제하는 것이 좋다.

필자의 경우 PDBoot.exe가 등록되어 있는데 이 프로그램은 PerfectDisk가 설치한 프로그램으로 부팅시 조각 모음을 수행하는데 사용된다.

클릭: 그림 확대 Image Hijacks
이미지 파일 실행 옵션과 명령 프롬프트 자동 실행. XP를 처음 설치한 경우 아무것도 등록되어 있지 않다. 따라서 등록된 것이 있다면 모두 지우는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우에도 아무것도 등록되어 있지 않다.

클릭: 그림 확대 AppInit
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs에 등록되어 있는 DLL을 표시한다. AppInit_DLLs에 등록되어 있는 DLL은 현재 로그온 세션에서 실행중인 모든 Windows 기반 응용 프로그램에의해 읽혀진다. XP를 처음 설치한 경우에는 아무 것도 등록되어 있지 않다. 따라서 자신이 설치한 것이 아니거나 모르는 것이라면 모두 삭제하는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우에도 아무것도 등록되어 있지 않다.

클릭: 그림 확대 Known DLLs
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs에 등록되어 있는 DLL을 출력한다. KnownDLLs 레지스트리 키의 DLL들은 시스템이 시작될 때 메모리로 읽혀진다. XP를 처음 설치한 경우에는 아무것도 등록되어 있지 않다. 따라서 자신이 설치하지 않는 DLL이거나 모르는 DLL이라면 삭제하는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우에도 아무것도 등록되어 있지 않다.

클릭: 그림 확대 Winlogon
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify에 등록되어 있는 DLL을 표시한다. Notify에 등록된 DLL은 Winlogon이 시작될 때 Winlogon이 레지스트리를 검사해서 메모리로 읽혀지게된다. XP를 처음 설치한 경우에는 아무것도 등록되어 있지 않으며 따라서 자신이 설치하지 않는 DLL이거나 모르는 DLL이라면 삭제하는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우는 ATI Exernal Event Utility가 등록되어 있는 것을 알 수 있다. 이 DLL은 필자가 사용하는 그래픽 카드가 ATI Radeon 9200 SE이기때문에 설치된 것이다.

클릭: 그림 확대 Winsock Providers
Winsock 서비스 제공자를 포함한 등록된 Winsock 프로토콜을 표시한다. 악성 프로그램은 종종 자신을 Winsock 서비스 제공자로 등록하는 경우가 많다. 그 이유는 Winsock 서비스 제공자로 등록하는 경우 제거할 수 있는 방법이 많지 않기때문이다. Autoruns은 이들을 제거할 수 있지만 사용 안 함으로 설정할 수는 없다. Winsock Providers 역시 XP를 처음 설치하면 아무것도 등록되어 있지 않다. 따라서 확실한 것이 아니라면 가급적 삭제하는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우에도 아무것도 등록되어 있지 않다.

클릭: 그림 확대 Printer Monitor
프린터 스풀 서비스로 읽혀진 DLL을 표시한다. 악성 프로그램은 실행 코드를 심기위해 이 기능을 사용하기도 한다. Printer Monitor 역시 XP를 처음 설치하면 아무것도 등록되어 있지 않다. 따라서 확실한 것이 아니라면 가급적 삭제하는 것이 좋다.

그림을 보면 알 수 있지만 필자의 경우에도 아무것도 등록되어 있지 않다

style="LINE-HEIGHT: 30%">