현재까지 백신은 웜, 바이러스, 트로이목마로 대표되는 악성코드에 대비하기 위한 가장 효과적인 프로그램이지만 이미 알려진 악성코드만 진단/치료(삭제) 할 수 있기 때문에 신종에 대해서는 무력하다는 한계를 갖고 있다. 따라서 최근 폭발적으로 증가하는 악성코드는 백신이 아무리 빨리 업데이트되어도 백신이 업데이트 되기 전에 피해자가 발생할 수도 있다.
그러나 최근 악성코드의 대부분이 웜, 트로이목마로 바이러스와 달리 독립적인 파일로 실행되는 경우가 많아서 백신이 나오기 전에 사용자가 해당 파일의 실행을 중지시키고 삭제하면 백신 없이도 치료 할 수 있는데, 본 글에서는 이런 방법을 설명하고자 한다.
악성코드 확인 일반적인 수동 조치법은 실행 중인 프로세스 중에서 악성코드를 찾아 프로세스를 중지하고 해당 파일을 삭제하는 것이지만, 일반적인 사용자가 사용 중인 프로세스 중 악성코드를 확인하는 방법은 그리 쉽지 않다.
물론, 가장 손쉬운 방법은 안철수연구소에서 제공하는 안리포트 프로그램(Ahnreport.exe)을 이용해 정보를 수집, 리포트 결과를 도출하여 안철수연구소에 검토를 의뢰하는 것이다. 하지만, 이런 방법은 분석 결과를 받는데 시간이 걸리므로 직접 자신의 컴퓨터를 확인하는 능력을 키우는 것이 필요하다.
* 참고
안리포트 사용법과 프로세스를 확인 하는 방법은 다음과 같다.
-
이상 네트워크 패킷 발생시 조치 방안 프로세스 확인 및 종료 실행 중인 프로세스 중에 수상한 파일을 찾는 것은 평소에 실행 중인 프로세스를 확인했다면 비교적 쉽게 확인 할 수 있다.
프로세스를 확인하기 전에는 반드시 가능한 모든 프로그램을 종료 시키고 해야 하며 여러 프로그램이 실행 중이면 다수의 프로세스로 수상한 프로세스를 찾기 힘들어 진다.
프로세스를 확인하는 방법은 크게 Windows 작업 관리자와 프로세스 뷰어가 있다.
(1) Windows 작업 관리자
윈도우 NT/2000 이상 사용자는 [Ctrl]+[Alt]+[Del] 키를 눌러 [작업관리자]를 선택하거나 [Ctrl]+[Shift]+[Esc]키로 'Windows 작업 관리자'를 실행할 수 있다.
작업 관리자의 '프로세스' 탭으로 현재 실행 중인 프로세스 목록을 확인 할 수 있다. '이미지 이름'을 선택하고 '프로세스 끝내기(E)'를 선택하면 해당 프로세스가 종료된다
[그림1] 현재 실행 중인 프로세스들 해당 프로세스를 끝내려 할 때 '작업 관리자 경고'가 뜰 수 있다.
[그림2] 작업 관리자 경고 단, [그림3]과 같이 프로세스를 종료할 수 없는 경우도 존재한다. 이때는 해당 프로세스가 중요한 파일이거나 다른 파일과 같이 실행 중이기 때문이다. 이 경우는 안전모드로 시작해 지우거나 파일 이름을 변경하는 방법을 사용 할 수 있다.
[그림3] 프로세스 종료 불가 메시지 (2) 프로세스 뷰어
프로세스 뷰어는 여러 종료가 있는데 여기서는 프리웨어인 'Process Explorer'에 대해 알아보겠다.
'Process Explorer'은
http://www.sysinternals.com에서 다운로드 할 수 있으며 윈도우 작업 관리자보다 더 상세한 프로세스 관련 정보를 보여준다. 이외에도 많은 셰어웨어나 상용 프로세스 뷰어가 있다.
[그림4] Process Explorer 실행 화면 수동 조치법 악성코드가 파악되면 레지스트리에서 자동 실행 키를 찾아 삭제하거나 해당 파일을 삭제하는 것으로 치료가 대부분 가능하다. 하지만, 실행 중인 파일은 삭제할 수 없으므로 해당 프로세스의 종료가 필요하다. 프로세스를 종료할 때 시스템에 문제가 발생할 수 있으므로 실행 중인 프로그램 중 종료 가능한 프로그램은 모두 종료한다.
(1) 프로세스 종료 후 삭제
가장 쉬운 방법은 현재 실행 중인 프로세스를 'Windows 작업 관리자'나 프로세스 뷰어를 통해 중지 시킨 후 해당 파일을 삭제하는 것이다. 단,
Win32/Sober.worm.C와 같은 웜은 몇 개의 프로세스가 웜 프로세스를 서로 감시해 하나의 프로세스가 강제 종료되면 다시 재실행 하는 방법으로 프로세스 종료를 방해하는 형태도 존재한다.
(2) 파일 이름을 변경하고 재 부팅 후 삭제
프로세스가 강제로 종료되지 않을 때 일반적으로 파일 이름 바꾸기는 가능하다. 탐색기로 해당 프로세스를 찾아 이름을 바꾼 후 재부팅 하면 일반적으로 웜이 실행 되지 않는다. 하지만, 일부 악성코드는 파일 이름을 변경도 되지 않는 경우가 존재한다.
(3) 안전 모드 부팅 후 삭제
프로세스도 종료되지 않고 파일 이름 변경도 되지 않는 경우 안전 모드 부팅 후 해당 파일을 삭제할 수 있다. 일반적으로 안전 모드로 부팅 하려면 윈도우 시작 시 [F8]키를 누르고 있으면 윈도우 시작 모드를 선택 할 수 있는데 이때 [안전모드]를 선택하면 된다.
보통 안전 모드로 부팅 시 평소 부팅 시간 보다 더 오래 걸린다. 최근 악성 IRCBot이 증가하면서 이상 네트워크 트래픽이 과다하게 발생해 CPU 점유율을 거의 다 차지해 윈도우 실행이 힘들어 웜을 제거 하기 힘든 경우도 있다. 이때도 안전 모드로 부팅하면 대부분 해결되지만 가급적 네트워크 선을 뽑고 제거 작업을 하는 게 좋다.
주의할 사항 이 작업을 수행할 때 아래와 같은 경우가 발생할 경우에는 다음과 같이 조치한다.
(1) 레지스트리 에디터나 Windows 작업 관리자가 실행 안 되는 경우
사용자가 자신을 제거하지 못하게 하기 위해 레지스트리 에디터(regedit.exe)나 Windows 작업 관리자(taskmgr.exe)가 실행되면 강제 종료시키는 경우가 있다. 이 경우 이들 프로그램의 파일 이름을 변경해 주면 실행 가능하다.
예를 들어 regedit.exe는 rrr.exe, taskmgr.exe는 ttt.exe로 파일이름을 바꾼 후 실행해 본다.
(2) 프로세스를 찾을 수 없는 경우
악성코드 종류에 따라 프로세스를 찾을 수 없는 경우가 있다. 이 경우 서비스로 올라와 있는 경우가 많다.
서비스는 윈도우 2000의 경우 [내컴퓨터] → 마우스 오른쪽 버튼->[관리(G)] → [서비스 및 응용 프로그램] → [서비스]에서 확인 할 수 있다(그림5 참조).
[그림5] 실행 중인 서비스 확인 * 수작업 조치 예 - Win32/Netsky.worm.17424 그럼 실제 웜을 예로 들어 수작업으로 삭제하는 방법을 살펴보자.
Win32/Netsky.worm.17424 는 윈도우 폴더에 winlogon.exe 파일을 만들고 윈도우 시작 시 자동 실행된다. 치료를 위해서 윈도우 폴더의 winlogon.exe 파일만 삭제하면 된다.
① 탐색기로 윈도우 폴더(보통 C:Windows 혹은 C:WinNT)로 이동해 winlogon.exe 파일을 삭제하려 했지만 에러 메시지만 출력된다. 이는 웜 파일이 실행 중이기 때문이다.
[그림6] 삭제를 시도하지만 실패 ② 윈도우 작업 관리자로 실행 중인 winlogon.exe를 중지시키려고 확인했지만 winlogon.exe 파일이 2개가 있어 어느 파일인지 알 수 없다. 윈도우 시스템 폴더(일반적으로 C:WindowsSystem, C:WinNTSystem32, C:WindowsSystem32)의 winlogon.exe 파일은 정상 파일이다. 이외에도 svchost.exe 파일로 위장해 실행되는 웜들도 다수 존재한다.
[그림7] 윈도우 작업 관리자로 본 화면 ③ 'Process Explorer'로 실행 중인 프로세스를 확인하면 파일 경로도 나오는데 웜 파일인 'C:WINNTwinlogon.exe'이 실행 중임을 확인했다.
[그림8] Process Explorer로 찾은 웜 프로세스 ④ 해당 프로세스를 강제 종료시킨다. 프로세스를 선택하고 오른쪽 마우스 버튼을 누르면 여러 메뉴가 나오는데 이중 'Kill Process'를 선택하면 된다.
[그림9] 웜 프로세스 종료 ⑤ 사용자에게 확인을 받는다. '예(Yes)'를 눌러주면 프로세스가 종료된다.
[그림10] 프로세스 강제 종료 확인 창 ⑥프로세스가 종료되었음을 확인 할 수 있다.
[그림11] 웜 프로세스 종료 확인 ⑦ 탐색기로 윈도우 폴더의 winlogon.exe 파일을 삭제하면 웜 치료는 종료된다.
⑧필요하다면 웜이 만든 레지스트리 내용도 찾아 삭제한다. 레지스트리는 중요한 정보가 많이 저장되며 잘못 수정하면 시스템에 문제가 발생할 수 있으므로 익숙하기 전까지 함부로 고치지 않는 것이 좋다.
수작업 조치의 필요성 백신 업체는 악성코드가 발견되면 가급적 빨리 업데이트 된 백신을 제공하려 하지만 여전히 몇 시간에서 몇 일의 간격이 존재한다. 업데이트 전 사용자의 피해를 최소화 하기 위해서는 사용자가 기본적인 프로세스 종료와 같은 응급 조치 방법을 알아두는 게 중요하다.