티스토리 뷰

반응형
악성코드의 감염으로 인한 피해는 작게는 컴퓨터 사용의 불편에서부터 크게는 컴퓨터 자체를 사용하지 못하게 되거나 중요한 데이터의 소실 등으로 이어질 수 있다. 그렇다면 이같은 무서운 피해를 낳는 악성코드에 감염이 됐을 경우 나타날 수 있는 증상들이 무엇인지 알아보자. 이와 함께 이를 예방할 수 있는 방법들과 예기치 못하게 악성코드에 감염됐을 경우, 어떤 방법으로 데이터를 복원할 수 있는지도 함께 알아본다.

악성코드는 Malicious Code, Malware, Malicious Program 등으로 표기하며 최근에는 Malicious 소프트웨어라는 용어를 사용하기도 한다. 악성코드는 '악의적인 목적을 위해 작성된 실행 가능한 코드'로 정의한다. 실행할 수 있는 코드는 프로그램, 매크로, 스크립트 뿐만 아니라 취약점을 이용한 데이터 형태도 포함하고 있으며, 형태에 따라서 바이러스, 웜, 트로이 목마로 분류되고 있다.

최근 안철수연구소로 신고되는 악성코드를 살펴보면 양적 증가뿐만 아니라 질적으로 악성화되고 있다. 특히, 악성코드의 양은 예년과 비교해 3∼4배를 훌쩍 뛰어 넘는 수치를 기록하고 있다. 또한 악성코드는 다양한 공격 기법과 감염 기법을 통해 해킹과 악성코드의 경계선 자체가 점점 허물어지고 있는 실정이다.
특히, 최근에 등장하는 악성코드는 기존의 분류 형태로 나누기가 어려운 경우가 많은데, 그 예가 웜의 형태로 자신을 복제하지만 감염된 시스템의 파일에 악의적인 코드를 감염시키는 경우다. 또한 웜의 형태로 자신을 복제하지만 특정 포트를 사용해 외부 시스템에 불법으로 접근하는 통합 기능을 가진 악성코드가 많이 발견되고 있어 컴퓨터 사용자들의 주의를 필요로 하고 있다.

악성코드 감염 증상과 바이러스 감염 경로

악성코드는 자기 복제와 감염 형태에 따라 크게 바이러스, 웜과 트로이 목마로 나눌 수 있다. 이같은 분류에 따라 컴퓨터에 감염되는 경로와 감염시 나타나는 피해 증상도 조금씩 차이를 보이고 있다. 또한 감염됐어도 겉으로는 감염 증상이 드러나지 않는 경우도 많으나, 사용자가 조금만 주의를 기울여서 컴퓨터를 확인한다면 악성코드 감염으로 추정되는 이상 증상을 조기에 파악할 수 있다. 그렇다면 악성코드 형태별 감염 경로와 피해 증상을 살펴보도록 하자.
일반적으로 바이러스는 자신을 복제하지 않지만 정상적인 시스템 파일 또는 사용자가 직접 작성한 파일 의 특정 부위에 바이러스 코드를 삽입하는 형태를 보인다. 바이러스 감염에 의한 파일의 변화를 (그림 1)이 잘 표현하고 있다. 이같은 바이러스는 대부분 자체적인 전파 기능이 없으므로 인터넷에서 확인되지 않은 파일을 다운로드받아 실행하거나 사용자가 기존에 바이러스에 감염된 파일을 플로피 디스켓 또는 USB 드라이버나 전자우편을 통해 다른 사용자에게 전달해 실행될 경우 감염될 수 있다.


[그림 1] 바이러스 감염 전 후 실행 흐름 변화


일반적으로 바이러스에 감염될 경우 바이러스의 감염 위치에 따라 다른 이상 증상이 발생할 수 있다. 시스템의 부트 섹터 감염시 며칠 전까지도 정상적으로 부팅됐던 윈도우 시스템이 정상적으로 부팅되지 않을 수 있으며 파일 자체가 감염될 경우에는 사용자가 실행한 특정 프로그램 또는 파일이 정상적으로 실행되지 않거나 사용자가 예상하지 못한 오류가 발생할 수 있다.
웜은 웜 자신을 시스템에 복제하고 다른 시스템으로 확산된다. 이같은 웜의 주된 감염 경로는 전자우편과 네트워크라고 볼 수 있다. 전자우편의 경우에는 감염된 시스템에서 전자우편 어드레스를 수집해 발신인과 수신인으로 이용해 웜을 첨부 파일로 발신한다. 웜이 첨부된 전자우편을 수신하게 될 경우는 발신인이 잘아는 사람으로 돼 있어 별다른 의심없이 첨부된 웜을 실행하게 되는 경우가 많다.
네트워크로 전파되는 웜은 크게 두 가지로 분류된다. 첫번째는 윈도우 취약점을 이용하는 경우다. 취약점이 존재하는 윈도우 시스템을 네트워크 스캐닝을 통해 찾으면 웜은 윈도우 취약점을 이용해 감염 대상이 되는 시스템에 복제된다. 그리고 두번째는 윈도우 시스템의 사용자 계정에 사용되는 암호의 취약점이다. 사용자 계정의 암호는 대부분의 사용자가 윈도우 시스템에 로그온을 편하게 하기 위해서 암호를 사용하지 않는다던가 암호를 사용하더라도 '1111' 또는 'abcd' 등 간단하거나 다른 사람들도 쉽게 유추할 수 있어 문제가 발생된다. 웜은 사용자 계정 암호의 취약점으로 인해 사용자 계정에 암호를 순차적으로 대입하는 공격 방법을 사용해 사용자 계정과 동일한 권한을 획득하게 된다.
웜은 네트워크를 통해 관리 목적 공유 폴더로 접속시 사용자 계정의 암호로 로그온해 웜을 복제한다. 웜은 지속적으로 자신을 다른 시스템으로 복제하기 위해 감염된 시스템의 자원을 대부분 사용하는데, 이 과정에서 컴퓨터 사용자는 자신이 웜에 감염됐다는 것을 인지하지 못한 채 단지 시스템이 느려지거나 네트워크가 많이 느려졌다고만 생각할 수 있다.
트로이목마는 자체적인 전파 기능이 없으므로 인터넷에서 배포된 확인되지 않는 파일 그리고 악의적인 목적을 가진 제작자가 특정 사용자들에게 전자우편을 유포해 감염되는 경향이 많다. 트로이 목마를 실행하면 사용자가 원하는 기능이 실행되거나 아니면 시스템의 오류 메시지를 표시하면서 오류가 발생하는 것으로 위장하는 경우가 많다. 그러나 이 과정에서 트로이 목마는 해당 시스템에 몰래 설치되며, 시스템의 특정 포트(Port)를 오픈해 외부에서 몰래 접속할 수 있는 환경을 만든다. 악의적인 공격자는 이렇게 오픈된 포트를 통해 감염된 시스템의 사용자 정보를 유출하거나 시스템을 원격 제어할 수 있다. 트로이 목마는 개인 정보를 유출한다는 면에서 다른 바이러스와 웜 보다 더 위험하다고 볼 수 있다. 작게는 자주 방문하는 웹 사이트의 사용자 암호가 변경돼 접속되지 않을 수 있으며, 크게는 온라인 뱅킹을 통해 사용자도 모르게 통장의 잔고 모두가 다른 계좌로 이체될 수도 있다.

백신을 이용한 악성코드 진단과 치료

이같은 다양한 악성코드에 감염됐다면 어떤 방법으로 이를 치료할 수 있을까. 물론 제일 좋은 방법은 악성코드에 감염되지 않도록 사용자가 주의해야 하는 것이다. 그러나 예기치 않게 악성코드에 감염됐다면, 백신으로 진단하고 치료하는 방법을 생각할 것이다. 그렇다면 백신을 어떤 방법으로 설정하고 컴퓨터 시스템을 검사하는 것이 좋은지 알아보자.

?백신을 최신 엔진으로 업데이트하도록 하자
최근 악성코드는 하루에도 적게는 수십 건에서 많게는 수백 건에 이르는 신종 악성코드가 등장하고 있다. 이같은 많은 악성코드의 등장으로 인해 안철수연구소 역시 하루에도 서너번씩 신종 악성코드를 진단하고 치료할 수 있는 최신 엔진을 업데이트하고 있다. 그러므로 컴퓨터를 부팅했다면 제일 먼저 최신 엔진이 적용됐는지 확인해보고, 적용되지 않았다면 스마트업데이트 또는 홈페이지를 통해 최신 엔진을 적용하도록 하자.

?백신의 실시간 감시 기능을 활성화한다
백신을 최신 엔진으로 업데이트했다고 악성코드로부터의 감염 위험에서 안심할 수 있는 것은 아니다. 물론 최신 엔진으로 업데이트돼 있으므로 악성코드를 진단하고 치료할 수는 있으나 감염된 이후에 진단과 치료를 하는 것은 어떻게 보면 소 잃고 외양간 고치는 격이다. 그러므로 최신 엔진 업데이트와 함께 '실시간 감시 기능'을 활성화시켜 놓도록 하는 것이 중요하다. 여기서 말하는 실시간 감시 기능이란 시스템 부팅된 뒤 백신이 시스템을 지속적으로 감시하면서 사용자가 악성코드를 실행하거나 외부에서 악성코드가 사용자 모르게 유입될 경우에 이를 실시간으로 진단해 치료할 수 있는 기능을 말한다.

?일주일에 한번은 시스템의 모든 파일을 검사한다
특정 악성코드는 컴퓨터 시스템에 감염만 되고 활동하지 않는 경우가 있다. 이같은 경우는 감염된 시스템의 사용자가 특정 작업을 한다거나 감염된 컴퓨터의 환경이 특정 시점으로 변경돼야 실행되는 잠복 기간을 가지는 특징이 있다. 그러므로 일주일에 한번 정도는 사용하는 시스템의 모든 파일을 최신 엔진으로 검사해 예상치 못한 악성코드의 실행을 예방할 수 있도록 하자.

악성코드 감염시 나타나는 현상

모든 악성코드를 최신 엔진으로 업데이트된 백신으로 치료할 수 있다면 컴퓨터 사용자들은 아무 걱정없이 편안하게 컴퓨터를 사용할 것이다. 그러나 하루에도 악성코드는 수십, 수백 건이 발생하고 있다. 그러므로 최신 엔진 업데이트가 아무리 빨리 이뤄진다고 하더라도 피해를 입는 컴퓨터 사용자가 발생하기 마련이다. 그렇지만 다음 몇 가지 사항만 확인한다면 사용하는 컴퓨터에 악성코드 감염됐는지 의심해 볼 수 있다. 그리고 악성코드에 감염됐다면 직접 응급 조치해 감염에 따른 피해를 최소화할 수 있을 것이다. 그럼 이같은 응급 조치 방법은 어떤 것이 있는지 알아본다.
악성코드 역시 다른 시각에서 본다면 윈도우 시스템에서 실행할 수 있도록 만들어진 윈도우 프로그램이다. 다만 정상적인 프로그램과 달리 악성코드는 감염된 시스템에서 악의적인 기능을 수행한다는 것이다. 이같은 관점에서 본다면 악성코드 역시 윈도우 시스템 내에서 프로세스(Process)를 생성하고 다른 윈도우 프로그램과 동일한 과정으로 실행된다. 그러므로 악성코드 역시 실행 중인 프로세스를 강제 종료하고 해당 파일을 삭제한다면 손쉽게 악성코드 감염의 피해를 해결할 수 있다. 그렇다면 어떻게 악성코드로 의심되는 프로세스를 확인하고 강제 종료할 수 있을까. 악성코드는 일반적인 몇 가지 특징을 가지고 있는데 이런 것을 알고 있다면 조금 더 쉽게 악성코드로 의심되는 프로세스를 파악할 수 있다.
대부분의 악성코드는 감염된 시스템의 사용자들이 감염됐다는 것을 쉽게 알아차리지 못하도록 하기 위해 몇 가지 속임수를 쓰고 있다. 이같은 악성코드의 속임수는 여러 종류가 있는데, 일반적으로 다음과 같다.

?윈도우 폴더 또는 윈도우 시스템 폴더에 파일을 생성한다.
윈도우 폴더는 윈도우 95/98/ME/XP는 C:Windows이고 윈도우 NT/2000은 C:WinNT 폴더를 나타낸다. 그리고 윈도우 시스템 폴더는 윈도우 95/98/ME는 C:WindowsSystem, 윈도우 NT/2000은 C:WinNTSystem32, 윈도우 XP는 C:WindowsSystem32 폴더를 나타낸다. 해당 폴더는 윈도우 시스템이 구동될 때와 윈도우 시스템에 설치하는 프로그램을 실행하기 위한 파일이 존재하므로 많은 폴더와 파일이 존재한다. 그러므로 악성코드 제작자는 해당 폴더를 이용함으로써 컴퓨터 사용자가 해당 폴더에서 악성코드로 의심되는 파일을 찾아내기 어렵도록 한다.

?윈도우 시스템에서 사용되는 정상적인 파일명으로 보이도록 한다.
악성코드에서 사용하는 파일명은 윈도우 시스템에서 사용되는 정상 파일명 또는 일반적인 프로그램들에서 사용하는 정상 파일명으로 위장하는 경우가 많다. 예를 들면 svchost.exe 파일은 윈도우 시스템에서 사용하는 정상 파일명이다. 그런데 svchost.exe 파일과 유사하게 svchos1.exe로 된 파일이 있다면 의심스러운 파일로 생각해 볼 수 있다. 이같은 경우와 같이 얼핏 봐서는 정상 파일명으로 보일 수 있으나 자세히 보면 정상 파일명과 철자가 틀린 경우처럼 사용자들에게 정상 파일명과 유사하게 보이는 속임수를 쓰고 있다.

?정상 파일명을 가지고 있으나 다른 폴더에 존재한다.
svchost.exe 파일은 윈도우 NT/2000/XP에서 존재하며 윈도우 시스템 폴더(C:WinNTSystem32 또는 C:WindowsSystem32)에 존재하는 윈도우 시스템 관련 파일이다. 그러나 이 파일이 윈도우 폴더(C:WinNT 또는 C:Windows)에 있다면 정상적인 위치가 아니므로 충분히 수상한 파일로 의심해야 한다. 이와 같이 정상 파일명을 가지고 있더라도 정상적인 폴더에 있는 것이 아니라 다른 폴더에 위치해 사용자가 프로세스명 또는 파일명만을 보고서는 악성코드로 의심하지 못한다.

프로세스 확인 후 수동 조치

이같은 악성코드의 일반적인 특성을 바탕으로 악성코드의 프로세스를 강제 종료할 수 있는 방법을 알아보도록 하자. 프로세스를 확인하고 강제 종료할 수 있는 방법은 윈도우 시스템에 있는 기능을 활용할 수 있으며 잘 알려진 공개용 소프트웨어를 활용할 수도 있다. 우선 윈도우 시스템에 존재하는 기능을 통해 할 수 있는 방법을 알아보자. 그러나 한가지 주의할 점은 윈도우 시스템에서 사용하는 정상적인 프로세스를 강제로 종료할 경우에는 윈도우 시스템에 알 수 없는 오류가 발생할 수도 있으므로 주의한다.
윈도우 시스템의 작업 관리자를 이용하는 방법은 다음과 같다. 윈도우 작업 관리자는 윈도우 NT/2000/XP에 포함돼 있으며 현재 실행 중인 프로그램과 프로세스의 목록을 확인할 수 있다. 그리고 개별적인 프로그램과 프로세스를 강제 종료할 수 있다.
윈도우 NT/2000/XP 시스템에서 시작을 클릭한 후 실행에서 taskmgr.exe를 입력한다(화면 1). 이 방법 외에 키보드에 있는 [Ctrl]+[Shift]+[Esc] 특수 키의 조합으로도 실행할 수 있다.


[화면 1] 강제 종료시 파일명 입력


윈도우 작업 관리자가 실행되면 상단에 있는 프로세스를 클릭한다 프로세스를 클릭한 후 현재 실행되고 있는 프로세스 중 의심되는 프로세스가 있는지 확인하다. 만약 의심되는 프로세스가 있다면 해당 프로세스를 클릭한 후 프로세스 끝내기를 클릭해 해당 프로세스를 강제 종료시킨다(화면 2).

[화면 2] 윈도우 작업 관리자에게 프로세스 강제 종료


의심되는 프로세스를 강제 종료할 때 다음과 같은 작업 관리자 경고가 발생 할 수 있다. 이는 일반적인 윈도우 시스템의 경고 메시지임으로 참고하도록 하자(화면 3).


[화면 3] 작업 관리자 경고 메시지


?공개용 소프트웨어를 활용한 의심되는 프로세스 확인
현재 실행 중인 프로세스를 확인할 수 있는 공개용 소프트웨어도 많이 있다. 그 중에서 Sysinternals (www.sysinternals.com)에서 공개용으로 배포하는 프로세스 익스플로러(Process Explorer)를 활용해보자. 프로세스 익스플로러는 윈도우의 시스템 관리자에 비해 더 많은 정보를 사용자에게 보여준다는 것이 장점이다. 윈도우 9X 사용자들은 윈도우 9X용 프로세스 익스플로러를 사용하도록 하자.
프로세스 익스플로러를 실행한 후 의심되는 프로세스가 있는지 확인한다. 만약 의심되는 프로세스가 존재한다면 해당 프로세스를 마우스로 클릭해 하일라이트하도록 한다. 그리고 오른쪽 마우스 버튼을 클릭해 나타나는 메뉴 중에서 Kill Process를 클릭해 프로세스를 강제 종료시킨다(화면 4). 메뉴 중에서 Properties를 클릭하면 해당 프로세스의 실행 파일 경로 등에 대한 상세한 정보를 볼 수 있다(화면 5).


[화면 4] 프로세스 익스플로러 실행 후 프로세스 종료



[화면 5] 해당 프로세스의 실행 파일 경로의 정보 확인


?공개용 소프트웨어를 활용한 의심되는 프로세스 확인
프로세스 익스플로러를 이용해 의심되는 프로세스를 확인할 수 있으나 네트워크 트래픽 발생으로 인해 인터넷이 느려졌다고 느껴지는 경우에는 프로세스 익스플로러만으로는 감염 증상을 확인하기 어렵다. 그러므로 특정 프로세스가 유발하는 네트워크 트래픽이나 사용하고 있는 포트를 확인해 시스템의 네트워크 상태를 파악해야 한다. 네트워크 상태를 확인하기 위해 Sysinternals(www.sysinternals.com)의 Tcpview를 사용한다. Tcpview는 윈도우 버전에 상관없이 사용할 수 있으며 현재 사용중인 포트가 어떤 것이 있는지 그리고 네트워크 트래픽 상태에 따라 다양한 색상으로 표시함으로 사용자가 확인하기 쉽다.
우선 Tcpview를 실행한 후 현재 네트워크에서 특정 포트를 사용하는 의심되는 프로세스 또는 과다한 네트워크 세션 연결을 시도하는 프로세스가 있는지 확인한다(화면 6). 의심되는 프로세스가 있다면 해당 프로세스를 클릭해 하일라이트한 후 마우스 오른쪽 버튼을 클릭해 나타나는 메뉴들 중에서 End Process를 클릭해 의심되는 프로세스를 강제 종료한다. 나타나는 메뉴들 중에서 Process Properties를 클릭하면 해당 프로세스의 실행 파일 경로와 관련한 상세한 정보를 확인할 수 있다(화면 7). @


[화면 6] Tcpview 실행후 의심되는 프로세스 강제 종료



[화면 7] 해당 프로세스의 실행 파일 경로에 대한 상세한 정보

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함