본문 바로가기

벌새::Computer & IT

Sysinternals Process Explorer 도구를 이용하여 필요없는 프로세스 찾는 방법

네이버(Naver) 지식인을 보다보면 이런 질문을 상당히 많이 볼 수 있습니다.

필요없는 프로세스를 알려주세요.
지워도 되는 프로세스를 알려주세요.
감염된 프로세스를 알려주세요.
 
이런 질문과 함께 공통적으로 제시하는 스크린 샷이 바로 윈도우에서 제공하는 "Windows 작업 관리자"입니다.
먼저 해당 질문들을 보면서 느끼는 점은 어떤 컴퓨터 천재도 프로세스(Process) 명칭을 보고 불필요한 프로세스인지, 감염된 프로세스인지를 명확하게 확인해 줄 수 없으며, 정작 이 프로세스를 삭제하라고 하여도 질문자가 과연 앞으로 해당 프로세스가 더 이상 동작하지 않도록 삭제할 능력이 있는지도 의문입니다.

그렇다면 초보자가 자신의 컴퓨터에서 동작하는 프로세스에 대한 더 정확한 정보를 확인할 수 있는 방법이 무엇인지 마이크로소프트(Microsoft)에서 제공하는 Sysinternals Process Explorer 도구를 이용하여 알아보도록 하겠습니다.


해당 툴은 마이크로소프트 개발자가 무료로 제공(무설치판)하는 것으로 실제 보안업체에서도 이용되는 유용한 프로그램으로 알고 있습니다.

위에서 제시한 작업 관리자의 프로세스를 살펴보면 실제 악성코드로 인해 생성된 프로세스의 경우 제작자가 이름을 짓기 나름이며, 정상적인 프로세스에 삽입(Injection)되어 외관상 감염 여부를 알 수가 없습니다. 또한 svchost.exe 프로세스와 같이 동일한 이름을 가진 경우도 존재할 수 있다는 점도 유념해야 합니다.
프로그램을 실행하면 위와 같이 Windows 작업 관리자에서 볼 수 없었던 각 프로세스의 파일 경로, 버전 등 다양한 정보를 확인할 수 있습니다.

기본적으로 자신이 확인할 프로세스의 경로를 확인하고 해당 프로세스를 종료한 상태에서 파일을 삭제 처리를 할 경우 더 이상 해당 프로세스는 동작하지 않는다고 이해를 하시면 됩니다.

이제 위에서 동일한 프로세스 이름으로 다수의 프로세스가 생성되었던 svchost.exe 프로세스의 정보를 확인하는 방법을 알아보겠습니다.

먼저 기억할 부분은 모든 프로세스는 PID(Process Identifier ; 프로세스 식별자)를 할당 받습니다.
Windows 작업 관리자에서는 PID 정보까지는 확인할 수 있으므로 자신이 확인할 svchost.exe 프로세스의 PID와 Process Explorer에서 제시하는 PID 정보를 확인하여 해당 프로세스의 기능을 확인할 수 있습니다.

일반적으로 svchost.exe 프로세스는 컴퓨터에서 동작하는 서비스 등록 관련 정보를 담고 있습니다. 수많은 서비스 항목으로 인하여 실제 정상적인 컴퓨터에서도 svchost.exe 프로세스가 4~5개 또는 그 이상 생성될 가능성이 있으며, 사용자가 설치하는 프로그램으로 인하여 서비스에 등록되는 추가적인 정보 또는 프로세스가 포함(추가)될 수 있습니다.
사용자가 특정 프로세스의 더 자세한 정보를 확인하기 위해서는 위와 같이 특정 프로세스를 선택하고 Lower Pane 단추를 클릭하여 해당 프로세스와 관련된 dll 등록 파일 정보를 확인할 수 있습니다.

만약 악성코드로 인하여 특정 프로세스 내부에 삽입된 dll 파일이 존재할 경우 해당 항목에서 확인을 할 수 있는 장점이 있습니다.
이번에는 특정 프로세스를 실제 종료하거나 정상적인 프로세스 내부에 삽입된 특정 값을 제거하는 방법은 해당 프로세스의 핸들러(Handle) 단추를 클릭하여 정보를 확인하여 제거하실 수 있습니다.

이 방법은 전문적인 일정 지식을 가지지 않은 상태에서 시도시 윈도우 시스템을 불안정하게 할 수 있으므로 주의하셔야 합니다. 또한 악성코드가 자기 보호 기능이나 Process Explorer 프로그램 자체를 실행하지 못하게 방해하는 동작을 할 수 있으므로 이런 방법이 만능은 아니라는 점도 유념하셔야 할 것 같습니다.

지식인에서 일반적인 초보자가 질문을 할 경우 단순히 작업 관리자를 이용하여 질문하는 것은 전혀 원하는 답을 얻을 수 없을 뿐더러, 문제의 프로세스를 지적하여도 단순히 수동적으로 1회성 종료로 만족하는 행동은 효과적인 컴퓨터 관리 방법은 아닐 것입니다.

위와 같은 전문 프로세스 관리 프로그램을 이용하여 더 자세한 정보를 통해 질문을 하고 얻은 정보를 바탕으로 자신이 해결할 수 있는 기본적인 컴퓨터 관리 능력을 기르는 것도 좋은 방법이 아닐까 생각됩니다.
  • 저도 실제로 본적은 없지만 자기 보호 기능이 가동되는 보안 제품처럼 일부 악성코드는 Lower Pane에서 Dll 정보가 안보인다 하더군요. 아마 해당 정보를 감추고 접근을 막는 것이 자기보호 기능과 관련이 있나봅니다.

    • 그래서 감춘 것을 보는 프로그램들도 나오는거겠죠.^^

    • 그런 경우에는 자기 라이브러리를 감추어봤자 지가 executable로 떡하니 Upper Pane에들어나 있으니 의미 없는 짓 아닐까요 ? 그냥 그 녀석 삭제해버리면 끝인데 ..... 솔직히 인젝션된 경우가 문제로 보이는데 이 경우는 라이브러리(.dll) 수준에서 자기 보호는 곤란하겟죠 ....그냥 알몸을 내보여야지 ㅋㅋㅋ

    • 오오 숨겨진 부분을 볼 수 있는 프로그램도 있었나 보군요. 프로그램 이름이라도 알 수 있을까요? PE에서 보여주는 정보만으로도 숨이차는 저인지라 전문적인 것이면 좀 곤란합니다만 ^^;;

    • 제가 아는 수준이 물여우님과 크게 다를게 있겠습니까?

      보통 숨겨진 파일 단위나 레지스트리 단위는 IceSword 등으로 볼 수 있습니다.

      또한 PE 제품과 같은 프로그램들 중에 일부 필터값으로 인해 모든 정보를 제공하지 않고 스킵하는 부분도 있는 것으로 압니다. 옵션을 한 번 살펴보는 것도 요령이 아닐까 생각합니다.

  • 잘보고갑니다.

  • 역시!! 센스있으십니다!!!
    저 같은 초보자에게는 꼭 필요한 프로그램이에요 ㅠㅠ

    좋은 정보 감사히 받아가겠습니다. ^^

  • 아이스소드를 비롯한 루트킷이나 시스템 분석 프로그램들은 PE에서 안보이던 프로세스 library 정보도 다 보이는군요;;

    대충 안다 싶지만 기본적인 부분도 모를 때가 많은 것 같습니다.

    • 찾아보면 무료로 분석하는 툴이 참 많은 것 같습니다.^^

      특히 저런 프로그램은 보이지 않는 파일이나 레지를 보여줘서 프로그램 삭제 후에 여전히 남아있는 것들을 추가적으로 삭제하는데 많은 도움이 되는 것 같습니다.

  • 좋은 글 감사합니다. 오픈캐스트 '파워유저로 가는 지름길' 156호에 링크 걸었어요.. *^^*

  • 겐니 2009.07.12 21:01 댓글주소 수정/삭제 댓글쓰기

    언제나 좋은정보에대해 감사합니다.

  • 지나가는행인 2010.11.06 19:30 댓글주소 수정/삭제 댓글쓰기

    오오 이거 중요한 일이군요!!! 덕분에 좋은정보 알아가네요
    필요없는 프로세스 지울일만 남았군요!!! 감사해요~

  • 지식답변 2011.04.13 23:21 댓글주소 수정/삭제 댓글쓰기

    지식 답변 보고 왔는데요. 어떻게 하라는 건지 이해가 되지 않는 제가 문제인 걸까요?ㅠㅠ 프로그램까지는 다운 받고 눌러보긴 했는데 여기서 무엇을 삭제해야 하나요?

  • 지식답변 2011.04.13 23:29 댓글주소 수정/삭제 댓글쓰기

    svchost.exe 마우스를 가져 가니 저 위의 그림 처럼 서비스에 한개만 뜨는 게 아니라 서비스에20개쯤 뜨는 건 뭔가요? 지식 전무한 사람이 보기엔 외계어 같아요. ㅠㅠ

    • 안녕하세요.

      윈도우 작업 관리자를 열어보시면 기본값으로 PID는 표시되지 않습니다.

      하지만 작업 관리자 메뉴 중 [보기 - 열선택] 항목을 열어보시면 PID 항목이 있으며 해당 항목을 체크하시면 각 프로세스에 대한 PID 값을 확인할 수 있습니다.

  • 지식답변 2011.04.13 23:49 댓글주소 수정/삭제 댓글쓰기

    그렇다면 그리드제거 프로그램을 돌렸더니 자식이 종료되었다고 나온 건 그 종료된 프로그램이 악성 프로그램이란 뜻인까요? 그리드 제거 프로그램 돌릴때 마다 매번 pid 544 pid756의 자식 프로세스가 종료되었다고 나옵니다. 너무 개인적 Q&A 용도로 만들어 버린 것 같아 너무 죄송하네요. ^^;;;;;

    • 말씀하시는 자식 프로세스는 그런 뜻이 아닙니다.

      자식 프로세스라는 것은 예를 들어, A라는 프로세스가 생성되고 해당 프로세스의 하위에 B라는 프로세스가 함께 동작하는 경우 B 프로세스는 A 프로세스의 자식 프로세스입니다.

      그런 의미이지 악성 여부는 실제 해당 프로세스가 무슨 파일이냐에 따라 다릅니다.

    • 그리고 아마 그리드 제거 프로그램 돌릴 때 그런 메시지가 나오는 것은 제거되어야 할 그리드 프로그램이 프로세스를 부모 프로세스 하위에 자식 프로세스를 함께 가지고 있기 때문에 그런 안내 메시지가 나오는 것 같습니다.

      즉, 부모 프로세스(A)를 종료할 때 자식 프로세스(B)가 있으면 함께 종료한다는 의미로 해석하시면 됩니다.

  • 아나 2011.07.01 00:19 댓글주소 수정/삭제 댓글쓰기

    아니컴퓨터가강종되는데

  • 잘 읽고 갑니다.제 티스토리에 비밀글로 가져가도 될까요?

  • 죄송... 저 공부좀 하게요.