느려진 컴퓨터, 이상한 프로그램이 설치된 것은 아닌지?(Process Explorer 사용법)

출처 : http://ehdrb930.blogspot.com/2018/05/blog-post_12.html

 PC에서 프로그램이 실행되면 프로세스가 생성되어 백그라운드에서 동작한다. 겉으로 보기에 우아한 백조가 실제 물 속에서는 발을 열심히 구르듯이 말이다.

 프로세스는 PC내에서 처리되는 작업을 의미하고, 프로세스는 리소스를 사용한다.
그리고 리소스는 PC가 처리할 수 있는 능력치를 의미하는데 쉽게 PC내에 작업인부가 100명이 준비되어 있다고 생각해보자.

① 작업1 : 문서작업 하는 일에는 인부 2명이 필요하다. 
② 작업2 : 다리 건설하는 일에는 인부 30명이 필요하다.
③ 작업3 : 집을 건설하는 일에는 인부 5명이 필요하다.

모두들 열심히 일하고 있는데 내가 전혀 모르는 작업(?)이 있을 수 있다.

⑩ 작업(??) : 낮잠자는 인부가 3명 있다.

 내가 원하지 않는 작업(낮잠)이 발생해서 100명의 노동력으로 3명 만큼의 일을 못하게 되었다. (월급루팡이닷!)

 PC도 마찬가지다.
리소스(인부)는 정해져있고, 수 많은 프로세스(작업)가 존재하는데 이상한 프로세스(낮잠)가 몰래 동작해서 PC 리소스(인부)를 갉아먹으며 성능을 떨어트리고 있을 수 있다.

그러면 내 PC안에 어떤 기생충 같은 프로그램이 숨어 있는지 분석해보자


작업관리자(Task Manager)

프로그램이 먹통되어 강제종료 할 때 Ctrl+Alt+Del 키를 누르면서 흔히 보는 창이다.
실행 중인 프로그램, 프로세스, 서비스 등 기본적인 정보를 제공한다.


작업관리자(Task Manager)만으로는 자세한 분석이 어렵다. 이상함을 감지할 수 있는 정도?
실행 프로그램이 어디 설치되었고, 어떤 라이브러리 파일을 사용하고, 바이러스 성향이 있는 것은 아닌지 등 구체적으로 알고 싶다면 아래 프로그램을 설치해보자.


더 고급화 된 작업관리자 : Process Explorer

sysinternals.com으로 접속하여 왼쪽 검색 창을 이용해 Process Explorer를 다운받자.
세계적으로 유명한 프로그램으로 안전하고 무료이니 안심하고 다운받자.


다운 받은 프로그램 procexp.exe(32/64비트)을 실행하면 화려한 프로그램을 볼 수 있다.


Process Explorer를 통해 모든 프로세스들의 세부정보를 낱낱히 파악할 수 있다.
- PID(프로세스 고유식별번호)
- Description(프로그램 설명)
- Company Name(제조사)
- CPU사용률
- 메모리점유율
- 프로그램 시그니처
- 바이러스 체크
- 바이너리 분석코드
- 기타 등등

(추천) 작업관리자(Task Manager)보다 기능성에서 우월하니 아래 사진처럼
'Replace Task Manager'를 선택하면 Ctrl+Shift+ESC 이나 Ctrl+Alt+Del 을 눌렀을 때
Process Explorer가 대신 실행되게 할 수 있다.



프로세스에 대한 간단 설명

프로그램과 프로세스를 섞어쓰다보니 혼동될까봐 정리 먼저하면

프로그램 : 흔히 프로그래밍, 코딩되었다는 것처럼 "프로그램 코드" 의미
프로세스 : 위에서 만든 프로그램이 메모리에 올라가(Load) 실행된 상태가 된 프로그램

결과적으로 비슷한 의미이니 이 글에서는 같은 단어로 보고 봐도 무방함

프로그램들은 트리형으로 구성되어 있는데 자세히 살펴보면 부모와 자식 프로세스가 연달아 있는 것을 알 수 있다. 프로그램을 실행(부모)시키면 거기서 파생되는 하위 프로그램(자식)을 실행하는 구조로써...

예1) 구글 크롬은 새 탭(자식)을 추가할 때마다 chrome.exe(부모) 하위에 새로 생성된다.

부모(chrome.exe)
 - 자식(chrome.exe)
 - 자식(chrome.exe)


예2) 윈도우 필수기능(자식)들은 실행될 때마다 svchost.exe(부모) 하위에 새로 생성된다.
      (svchost.exe는 상위 services.exe나 wininit.exe의 자식이기도 함)

부모(wininit.exe)
 - 자식(services.exe)
   - 자식(svchost.exe)
     - 자식(WmiPrvSE.exe)


복잡한 프로세스 개념을 설명했냐면 해커가 프로세스로 장난할 수 있기 때문이다.

svchost.exe가 대표적인데 예시인데... 윈도우에는 필수기능을 담아 놓은 저장소(DLL)가 있는데 실행파일(exe)형태가 아니라서 svchost.exe파일을 빌려서 자식 프로세스로서 실행되게 된다. 그리고 특징으로 위 사진처럼 wininit.exe(부모1), servcies.exe(부모2) 아래에 있다.

SVCHOST.exe
svchosts.exe
svcHost.exe

 그런데 이렇게 유사 이름으로 프로그램을 만들어 두면 사용자는 이상한 점을 알아차리기 쉽지 않다. 심지어 이상한 것을 알아차리고 제거하려해도 잘못 제거하면 시스템에 문제가 생길까봐 쉽게 제거도 못하는 상황이 생긴다.

 프로세스 개념을 알고 있다면 부모 프로세스가 어떤건지 확인하여 문제가 있는 녀석인지 아닌지를 손쉽게 파악할 수 있다.


Process Explorer를 사용해 의심스러운 파일 찾기

 해커들은 시스템에 침입한 후 나중에 다시 들어올 뒷구멍(백도어)를 만들어둔다. 보통 프로그램으로 만들어 실행시켜두는데, 프로세스는 해커가 재 침입하려는 신호를 보일 때까지 백그라운드에서 조용히 대기한다.

googleChrome.exe (정상프로그램 : chrome.exe)
windowsystem.exe  (이딴건 없음)
taskmanager.exe    (정상프로그램 : taskmgr.exe)

 위에서도 얘기했지만 그럴싸한 이름으로(즉흥적으로 내가 썼음ㅋ) 프로세스 이름을 교묘히 숨기고 프로그램을 실행시킨다. 참고로 해킹용 악성프로그램 뿐만 아니라 서핑하다가 우연히 깔리는 광고, 영세업체 백신프로그램 등도 아래 방법으로 찾아서 삭제하면 된다.


그러면 본격적으로 Process Explorer를 이용해봅시다.

우선 ① Description, Company Name, ② 부모/자식프로세스, ③ 세부검사 해보면 어느 정도 유추가 가능하다.


① Description, Company Name(프로그램 설명, 제조사)
 - 설명이 비어있거나 들어보지 못한 제조사로 남아 있다면 의심
 - 대형 업체에서 만든 프로그램이 아니면 대체로 설명란이 비워있으니 의심

② 부모/자식프로세스
 - 위에서 이미 얘기했지만 부모 프로세스가 제대로 갖춰진 것인지 비교확인
 - 부모/자식관계 프로세스를 모른다면 웹 검색으로 쉽게 찾을 수 있다.

③ 세부검사(바이러스 체크, 파일 속성보기, 온라인 검색)
 - 프로그램 자체에서도 검색 기능을 도와주는데, 검색하려는 파일을 마우스 우클릭하고
  Check VirusTotal / Properties / Search Online 을 누르면 된다.



#1 Check VirusTotal
 VirusTotal(https://www.virustotal.com/ko/)은 PC바이러스 체크사이트로 유명한데 바이러스 의심파일을 전세계 유명 바이러스 백신들을 통해 점검하고, 그 결과를 알려준다.



전세계 69개의 백신프로그램으로 의심파일을 점검한 결과 모두 안전하다고 판단된 화면.

VirusTotal을 매번 접속하는게 귀찮은데 'Check VirusTotal'을 사용하면
오른쪽 가장 끝 열의 0/69 (69개 업체 점검결과 바이러스 의심건 0) 처럼 빠르게 체크가능


#2 Properties
프로그램 이진화된 실행코드를 문자열(string)으로 변환해서 보여준다.
리버싱된 프로그램 코드를 문자열로 보여주는데, 일부 악성프로그램은 이렇게 strings 안에 악성 코드의 지시내용이 담겨 있기도 한다.

(예시) 악성프로그램(dropper)
- 해커가 올려둔 다른 프로그램 다운 링크로 몰래 접속되도록 유도
- 여기서는 http://192.168.92.1:7080/down/cftmon.exe 를 다운받는 코드가 숨겨져 있음


원래는 코드 분석을 제대로 하려면 복잡한데, 이 정도 string만 제공되어도 간단한 분석이 가능하고 직관적이라고 괜찮은 것 같다.

 더 정확히 하려면 리버싱(리버스 엔지니어링)도 공부하고, 관련프로그램인 Ollydbg 등을 사용할 줄 알아야하는데 너무 복잡하니 자세한 것은 인터넷 서핑을 해보자.
(사실 나도 기초적인 것만 함, 이거 진짜 어려움)

#3 Search Online
말 그대로 온라인(구글) 검색결과를 보여주는데,
영문 프로그램이라 그런지 구글 영어버전으로 검색결과가 나와서 매우 불편하다. -_-;;
한글판 구글 또는 네이버 검색을 다시 해야하는 점이 귀찮다.


정리하며

위 설명은 사실 디지털포렌식에서 사용하는 방법 중 하나다.
해커가 공격한 흔적을 조사할 때 가장 기초적으로 사용하는 방법인데 꼭 해킹이 아니더라도 일상에서도 유용하게 써먹을 수 있는 좋은 소재라서 정리할 겸 써봤다.

PC를 몇 년 이상 오래 사용했다면 당연히 PC가 느려지긴 하지만 위에서 이야기한 것처럼 필요없는 프로세스들 때문에 PC속도가 느려지는 가능성이 제일 크다고 본다.

악성프로그램이 아닌 정상프로그램도 용도를 다해 쓸 일이 없으면 꼬박꼬박 삭제해주자.
이런 프로그램이 대기하면서 우리 PC의 리소스(인부)를 야금야금 먹고 있으니...



댓글