Process Explorer는 이름이 의미하는 것처럼 윈도우의 탐색기처럼 PC에서 실행되고 있는 프로세스들을 탐색하는 도구이다.
윈도우에서 현재 내 PC에서 실행 중인 프로세스를 확인하는 방법은 Ctrl-Alt-del 키를 눌러 작업관리자 창을 띄워 '프로세스' 탭을
선택하면 된다. 윈도우에서 기본적으로 제공하는 작업관리자는 현재 실행중인 프로세스들과 프로세스 소유자, CPU 점유율, 그리고 점유 메모리
용량을 보여준다. 윈도우에서 여러 개의 작업도중 동작이 비정상적으로 멈출 때 강제적으로 프로세스를 끝낼 때 자주 사용하는 도구이다.
하지만 PC 바이러스나 웜 또는 백도어 프로그램들의 경우, 작업관리자의 프로세스 목록에 나타나지 않도록 위장하고 있는 경우가 다 반사이고
어떤 경우에는 작업관리자 자체를 뛰우지 않도록 방해하므로 내 PC에서 실행되고 있는 유해 프로그램의 실행 프로세스를 확인할 방법이 없다. 이 때
필요한 것이 바로 Process Explorer 도구이다.
Process Explorer는 작업관리자와 같이 프로세스를 보여주지만 파일탐색기처럼 트리구조로 모 프로세스와 자식 프로세스관계를
보여줌으로써 쉽게 프로세스들 간의 연관관계를 확인할 수 있고 각 프로세스별로 아이콘을 보여줌으로써 프로세스 파일명이 어떤 프로그램에 의해
실행되고 있는 프로세스인지를 쉽게 확인할 수 있도록 해 준다. 또한 프로세스에 대한 description을 표시해 주어 작업관리자에서 단순히
프로세스 실행파일명만 보여주어 어떤 프로그램인지를 확인할 수 없었던 불편함을 해소해 준다. Pocess Explorer 창을 통해 각
프로세스를 선택하고 선택한 프로세스를 정지시키거나 해당 프로세스의 속성을 확인할 수 있다. 특히 프로세스를 두번 클릭하면 해당 프로세스에 대한
자세한 정보를 보여주는 창이 뜨며 선택한 프로세스의 파일명 및 경로, 성능, 성능 그래프, thread, TCP/IP 연결현황, 보안,
환경변수, 그리고 해당 프로세스 실행파일 내에 포함되어 있는 문자열을 보여준다. 이러한 프로세스 정보를 가지고 실행 중이 프로세스가 악성
프로세스인지 정상적인 프로세스인지 판단할 수 있게된다.
1) 제일먼저 'procexp.exe'파일을 두번 클릭하여 실행한다. 그러면 아래와 같은 기본 프로그램 창이 실행된다.
위 화면에서 보듯이 현재 실행되고 있는 모든 프로세스를 표시하여 주며 모 프로세스와 자식 프로세스간에는 트리구조로 그 상관관계를 보여준다.
2) 메뉴의 'View'에서 'Show lower pane'을 선택하여 아래 창에 선택한 프로세스와 연관된 파일과 프로세스들을 표시할 수
있도록 한다. 아래의 그림처럼 각 프로세스를 마우스로 선택하면 아래 창에 선택한 프로세스와 관련된 파일 및 DLL 그리고 프로세스들을 표시하여
준다.
아래 창까지 띄운 상태에서 현재 실행되고 있는 프로세스들과 description을 확인하면서 description이 없는 프로세스나
Company Name이 없는 프로세스들을 주의깊게 찾아본다. 또한 CPU Load를 많이 유발하고 있는 프로세스가 있는 지 확인한다.
일반적으로 description이나 Company Name이 없는 프로세스들은 악성프로그램일 확률이 매우 높다.
3) 의심스러운 프로세스를 두번 클릭하여 자세한 정보를 확인한다. (아래 프로세스는 악성프로세스가 아니며 예제로 사용한 것이므로 오해하지
마시길)
'Image'탭에서는 프로세스의 실행 파일명, 폴더 경로, 현 디렉토리 정보를 보여준다. 이를 통해 현재 프로세스의 실행파일이 어디에
위치하고 있는 지를 확인할 수 있다. 선택한 프로세스가 악성 프로세스로 판단되는 경우에 해당 경로의 있는 프로세스 실행 파일을 삭제하여
주면된다.
'performance' 탭에서는 선택한 프로세스가 점유중인 CPU %와 메모리 사용량 그리고 I/O Byte현황을 그래프로 보여준다.
'Thread' 탭에서는 선택한 프로세스가 실행되면서 부가적으로 실행되는 프로세스나 프로그램 실행 시 다이나믹하게 연결하는 동적
라이브러리를 보여주고 그 Thread ID를 보여준다.
'TCP/IP' 탭은 선택한 프로세스가 open하고 있는 네트워크 소켓상태를
보여준다. 웜과 같은 악성 프로세스들의 경우에는 많은 TCP/IP 소켓이 보여지게 된다. 웜의 특성 상 인터넷 상의 있는 호스트들로 무작위로
자신을 전파할려고 하기 때문에 많은 연결시도들이 보여진다. 대표적인 연결은 25포트 메일이나 1433포트의 MS SQL그리고 80포트의 Web
연결을 들 수 있다. 백도어 프로세스의 경우에는 내가 설정하지도 않은 Port를 open한 상태로 대기상태로 있는 것이 보여지며 봇의 경우에는
원격지의 1024이상의 알려지지 않은 포트로 connect되어 있는 상태를 확인할 수 있다.
'String' 탭에서는 선택한 프로세스 실행파일 내에서 발견되는 문자열들을
보여준다. 이 문자열들을 통해 선택한 실행파일이 정상적인 파일인지 아니면 악성 파일인지 어느정도 구분을 할 수 있게된다. 문자열을 점검하면서
외부로 연결하기위한 외부서버 정보나 파일명 그리고 action 관련 문자열이 존재한다면 악성파일로 의심하여야 한다.
4) 프로세스 분석을 통해 악성프로세스로 확인되면 아래와 같이 문제의 프로세스를
선택한 후 오른쪽 마우스버튼을 클릭하여 "Kill Process" 를 선택하여 정지시킨 후 프로세스 속성에서 확인한 실행 파일
위치로 파일 탐색기를 통해 이동하여 문제의 파일을 삭제한다.