컴퓨터 바이러스

(컴퓨터바이러스에서 넘어옴)

1 개요

컴퓨터 바이러스(Computer Virus)는 스스로를 복제하여 악의적 목적을 수행하는 악성 소프트웨어를 말한다. 이들은 트로이 목마, 스파이웨어 등과 다르게 스스로를 복제하여 감염시킬 수 있는게 특징이다. 주로 '바이러스'라는 약어로 많이 쓰인다.

2 역사

컴퓨터 바이러스의 역사는 1970년대의 크리퍼 바이러스가 그 시초라 볼 수 있다. 그러나 크리퍼 바이러스는 엄밀히 구분하자면 현대의 의 개념에 더 가깝다. 이후 1985년 미국에서 컴퓨터를 악의적으로 파괴하는 프로그램이 점차 알려지기 시작하였고[1] 1986년에는 파키스탄에서 브레인 바이러스가 유행하였다.[2] 그러나 이 시절의 바이러스는 현재의 '복제' 개념이 아닌 '이동'인 원시적 형태였다.

2.1 최초의 바이러스

Rich_Skrenta.jpg
엘크 클로너의 개발자
리처드 '리치' 스크렌타

'이동'이 아니라 진짜 '복제' 개념이 들어간 최초의 바이러스는 '엘크 클로너(Elk Cloner)'라는 프로그램이다. 이는 1982년 경에 만들어졌는데, 놀랍게도 이를 만든이는 당시 15세였던 리처드 '리치' 스크렌타라는 소년이었다.[3] 이 Elk Cloner는 Apple II 시스템에만 감염되었으며 부팅용 플로피 디스크에 감염되는 일종의 부트 섹터 바이러스였다. Elk Cloner는 부팅 된 이후 메모리에 남아있다가 만약 감염되지 않은 새로운 디스크가 컴퓨터에 들어오면 자신을 해당 디스크에 감염시켰다. 이런 식으로 Elk Cloner는 디스크에서 디스크를 통해 감염되는 프로그램이었다. Elk Cloner는 특별히 파괴적인 활동을 벌이지는 않았으며, 감염된 컴퓨터는(정확히는 플로피 디스크) 감염된 뒤 50번째로 부팅하면 다음과 같은 짧은 시를 출력했다.

Elk Cloner: The program with a personality
엘크 복제자 : 자아를 가진 프로그램’

It will get on all your disks
‘그것은 너의 모든 디스크를 취하며’

It will infiltrate your chips
‘그것은 네 칩 속을 드나들지 ’

Yes, it's Cloner!
‘그래, 그것은 복제자!

It will stick to you like glue
‘그것은 끈끈이처럼 너에게 들러붙고’

It will modify RAM too
‘그것은 너의 램 또한 휘저어 놓지’

Send in the Cloner!
‘복제자를 들여보내라!’

내용을 보자면 시라고 하기엔 약간 무섭긴 하다. 컴퓨터를 잘 모르는 이가 보기엔 마치 컴퓨터가 진짜 자아를 가져서 이런 메시지를 출력하는 것으로 여길지도 모르니. 한편 이 Elk Cloner는 실질적으로 별다른 피해를 주는 것은 없었고[4], 이 Elk cloner가 퍼져나간 범위도 개발자인 스크렌타의 주변인물 정도였기 때문에 이것에 대한 백신이 개발된 적은 없다고 한다. Elk Cloner에 대한 분석

3 바이러스는 왜 탄생했는가?

그렇다면 악의적 컴퓨터 바이러스가 세상에 퍼지게 된 경위는 무엇일까. 그 경위에는 여러 가지 설들이 있다. 대표적으로 자신의 능력을 과시하기 위해 만들었다는 설, 경쟁사 등에 타격을 주기 위한 상업적 목적으로 만들었다는 설, 소프트웨어의 유통 경로 등을 추적하기 위해 만들었다는 설 등이 대두된다. 그러나 이는 은밀하게 유포되는 바이러스의 특성상 정확하게 구분짓기는 어렵고 복합적이고 전반적인 경위로 보아야 할 것이다.

4 구분 및 종류

바이러스는 크게 부트 영역을 감염시키는 부트(boot) 바이러스, 그리고 본래 숙주 프로그램에 감염되었다가 그 기능을 수행하는 숙주 바이러스로 구분된다. 바이러스는 만들어진 목적과 의도에 따라 그 종류가 크게 세분화되지만, 대표적으로 감염된 뒤 바로 기능을 수행하는 바이러스, 일정 기간의 잠복기를 거쳐 수행되는 바이러스, 공격자가 프로그래밍한 특정 일자에 실행되는 바이러스가 있다.

일단 종류 자체는 악성 '소프트웨어'이므로 생물학 분야의 바이러스와는 달리 컴퓨터를 물리적으로 파괴하지는 않는다. 다만 하드웨어를 오작동시켜서 간접적으로 물리적 손상을 입히는 사례는 있다.

4.1 나무위키에 작성된 바이러스 목록(발생 연도순)

여기에 목록을 추가하거나 악성코드 관련 문서를 새로 작성했을 때 [[분류:악성코드]] 로 분류해주시기 바랍니다.

5 증상

다음 증상이 지속적, 또는 갑자기 발생하면 바이러스 감염을 의심해볼 수 있다.

  • 컴퓨터가 평소와 달리 심하게 느려지는 경우
  • 아예 부팅이 되지 않는 경우
  • 특정 응용 프로그램의 실행이 평소보다 더디게 진행되는 경우
  • 평소와 다르게 잔렉, 블루스크린 등이 자주 발생하는 경우
  • 특정 파일 등의 정보(크기, 이름 등)가 지속적으로 변하는 경우
  • 기타 평소 발생하지 않은 의심스러운 증상이 발생하는 경우
  • 이상한 파일(예: wosfawr.exe, iliawtzg.exe[8] 등)이 생성된 경우

6 예방 및 치료책

바이러스를 예방하기 위해선 여타 다른 악성코드들과 다를 것 없이, 우선 안티 바이러스(백신) 소프트웨어를 활성화하고, 항상 주기적으로 업데이트하며 윈도 보안 업데이트를 설치해야만 한다. 또한 의심스러운 사이트나 프로그램 등은 실행 전 충분한 경계가 요구된다. 대부분의 안티 바이러스 소프트웨어[9]는 이러한 바이러스들을 감지하고 치료할 수 있는 능력을 가지고 있다. 또는 웹사이트 등의 경우 바이러스 토탈 등으로 검사하는 것도 좋다.

하지만 요즘 백신도 잡아내지 못하는 바이러스도 종종 등장하고 있는데, 시스템 파일 중 하나로 위장하고 원래 시스템 파일은 먹통으로 만드는 바이러스도 있다. 시스템 파일은 삭제하기도 힘들고 잘못 건들면 컴퓨터를 먹통으로 만들기도 하니 치료에 주의해야 한다.

7 다른 악성코드들과의 구분?

악성코드 문서와 같이, 트로이 목마스파이웨어 등은 스스로를 복제할 수 없다. 그러나 통상적으로 칭하는 컴퓨터 바이러스는 스스로를 복제하여 다른 파일들을 감염시킨다. 그러나 과의 차이점은 다음 표와 같다.

특징바이러스
자기복제가능가능
독립실행불가능가능
전파불가능가능
파일감염가능불가능

8 바이러스 분석의 종류

컴퓨터 바이러스 분석은 크게 다음과 같은 두 가지 방법으로 나눌 수 있다.

  • 정적 분석: 바이러스로 의심되는 대상을 실행하지 않고 분석을 하는 방식이다. 일반적으로 바이러스가 실행할수 있는 모든 코드 및 실행 경로들을 분석할 수 있지만, 실제 실행과 관련된 정보가 제한된다. 대표적으로 간접 호출 (Indirect Call) 경우 호출 대상이 여러 개 가능할 경우이다. 이를 위해 심볼릭 실행 (Symbolic Execution) 방식이 존재하나 너무 느리다는 단점이 있다.
  • 동적 분석: 바이러스로 의심되는 대상을 가상 환경 등에서 실행하여 생성 레지스트리, 파일 실행, 파일 및 프로세스, 시스템 콜 호출 등 행위를 분석한다. 정적 분석과 다르게 실제 실행과 관련된 정보를 얻을 수 있지만, 실행 경로에 포함되는 코드들만 분석이 가능하기 때문에 정보가 제한된다.

9 관련 문서

  1. 그래도 최초의 바이러스는 어느정도 좋은 의도로 만들어졌다. 함부로 크랙버전을 만들어 무단배포 하는 사람들을 골탕먹일려는 것...
  2. 한국에서도 1988년 브레인 바이러스가 알려지기 시작했다.
  3. 이 소년은 이제는 어른이 된 지금도 컴퓨터 프로그래머로 활동중이며 'blekko'라는 검색엔진 개발을 주도하기도 했다.
  4. 굳이 따지자면 사용자들에게 공포감을 들게 하는 정도.
  5. 마우스 커서을 바꿔주는 프로그램이지만 사실 악성코드다. 일단 아무린 경고나 안내없이 용자 컴퓨터의 고유 정보를 수집해서 서버로 보내는 짓을 하기 때문 자세한 설명은 황목 참조
  6. 제작자가 해당 프로그램의 기능을 제대로 공지했으므로 악의성을 가진 다른 악성코드와는 의도가 다르지만, 어쨌거나 사용자의 동의 없이 멋대로 사용자 권한을 조작한다는 점에서 악성코드라고 볼 수 있다. 백신에서도 악성코드로 진단한다.
  7. DNS변경 악성코드 때문에 멀쩡한 웹서버 소프트웨어가 악성코드 취급 받는 경우
  8. csrss.exe을 위장하기 위해 csrss.exe iliawtzg.exe이렇게 적는 경우가 있다
  9. 단, 허위백신에 주의
  10. 트로이 목마, 바이러스, 스파이웨어 등을 통칭하는 개념이다. 해당 문서 참조.