1. 개요
Computer Virus악성코드(Malware)의 감염 방식 중 하나로, 생물학적 바이러스가 다른 세포 속에 들어가 그 세포를 악성세포로 만들듯이, 컴퓨터 바이러스는 정상적인 프로그램과 코드를 악성코드로 만들며 스스로를 복제하여 컴퓨터 소프트웨어 전체에 전파된다. 주로 바이러스라는 약어로 많이 쓰인다.
가장 대표적인 악성코드였기에 악성코드를 의미하는 유의어로도 사용되었다. 그러나 최근에는 컴퓨터 바이러스 - 트로이 목마 - 웜이 모두 혼합된 신종 악성코드들이 많아져 바이러스와 웜을 칼같이 구분하지 않는다.
바이러스의 단순한 시스템 파괴행위는 상대에게 손해가 될지언정 유포자에게는 이득이 하나도 없다. 이후 PC를 인질로 잡고 돈을 뜯어내어 유포자가 이득을 얻는 랜섬웨어가 등장했다.
2. 역사
컴퓨터 바이러스의 역사는 1970년대의 크리퍼 바이러스가 그 시초라 볼 수 있다. 그러나 크리퍼 바이러스는 컴퓨터 파괴 목적보다는 자기복제의 개념에 더 가까웠으며, 엄밀히 구분하자면 현대의 웜의 개념에 더 가깝다. 또한, 크리퍼가 만들어질 당시에는 이러한 프로그램을 바이러스라 부르지는 않았다. 이러한 프로그램에 바이러스라는 이름이 붙은 것은 미국의 SF작가인 데이비드 제롤드의 소설 할리가 하나였을 때(When Harlie was One)에서 “다른 컴퓨터에 계속 자신을 복제, 감염된 컴퓨터의 운영체제에 영향을 미쳐 점차 시스템을 마비시키는 장치를 한 과학자가 제작해 배포한다”는 개념을 바이러스로 소개하면서부터였다. 이후 1985년 미국에서 컴퓨터를 악의적으로 파괴하는 프로그램이 점차 알려지기 시작하였고[1] 1986년에는 파키스탄에서 브레인 바이러스가 유행하였다.[2] 그러나 이 시절의 바이러스는 현재의 복제 개념이 아닌 이동인 원시적 형태였다.2.1. 최초의 바이러스
엘크 클로너의 개발자 리처드 '리치' 스크렌타 |
초다의 시연 영상
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에 대한 분석
2.2. 탄생 원인
악의적 컴퓨터 바이러스가 세상에 퍼지게 된 경위에는 여러 가지 설들이 있다. 대표적으로 자신의 능력을 과시하기 위해 만들었다는 설[5] , 경쟁사 등에 타격을 주기 위한 상업적 목적으로 만들었다는 설, 소프트웨어의 유통 경로 등을 추적하기 위해 만들었다는 설 등이 대두된다. 그러나 이는 은밀하게 유포되는 바이러스의 특성상 정확하게 구분 짓기는 어렵고 복합적이고 전반적인 경위로 보아야 할 것이다.3. 종류
바이러스는 크게 부트 영역을 감염시키는 부트(boot) 바이러스, 그리고 본래 숙주 프로그램에 감염되었다가 그 기능을 수행하는 숙주 바이러스로 구분된다. 후기에는 이 두 가지를 합친 복합 감염 바이러스도 등장했다. 바이러스는 만들어진 목적과 의도에 따라 그 종류가 크게 세분화되지만, 대표적으로 감염된 뒤 바로 기능을 수행하는 바이러스, 일정 기간의 잠복기를 거쳐 수행되는 바이러스, 공격자가 프로그래밍한 특정 일자에 실행되는 바이러스가 있다.일단 종류 자체는 악성 소프트웨어이므로 생물학 분야의 바이러스와는 달리 컴퓨터를 물리적으로 파괴하지는 않는다. 다만 하드웨어를 오작동시켜서 간접적으로 물리적 손상을 입히는 사례는 있다.
바이러스 진단명은 백신이 자체적으로 정하는데 널리 알려진 이름은 쓰지만 구체적으로 국제표준 같은 건 없기 때문에 조금씩 다르다. 이름 뒤에 숫자가 붙는 경우, 이 숫자는 일반적으로 바이러스 코드의 크기로(바이트 단위) 이 크기가 달라지면 변종으로 판정한다. 예를 들면 1992년에 발견되었던 나타스(Natas)라는 바이러스는 Natas.4740, Natas.4744, Natas.4774, Natas.4988이라는 4가지 변종이 존재한다.
ActiveX 그 자체는 바이러스가 아니지만, 해당 플랫폼을 기반으로 작동하면서 안 취약점을 파고드는 바이러스나 스파이웨어가 너무나 많은 데다, 마찬가지로 ActiveX 기반 한국제 보안 프로그램(nProtect 등)들의 무겁기만 무겁고 실제 성능은 영 믿을만하지 못한 것까지 겹쳐서 해당 플랫폼 그 자체가 바이러스라고 비난하거나 마이크로소프트가 바이러스 플랫폼을 만들었다는 우스갯소리가 진지하게 통한 적도 있었을 만큼 여러모로 문제가 많아서 결국 마이크로소프트에서도 정식 지원을 중단한 상태이다.
마이크로소프트 오피스는 VBA라고 해서 비주얼 베이식 언어로 고급 기능을 가진 매크로를 제작할 수 있는데, 이것도 악성 코드의 표적이 되었다. VBA를 이용한 스크립트로 문서 파일을 열기만 해도 컴퓨터를 파괴하거나 이상행동을 일으키는 종류의 바이러스들이 나타나게 된 것. 이것들은 '매크로 바이러스'라고 부른다. 99년에 대란을 일으킨 멜리사 바이러스가 이 매크로 바이러스의 대표주자. 매크로 바이러스는 2000년대에 기승을 부려 이후 마이크로소프트는 아예 문서에 VBA 매크로가 포함되어 있음을 알려주는 경고창을 만들고 VBA 기능을 옵션에서 켜야만 사용할 수 있게 만들었다.
3.1. 나무위키에 작성된 바이러스 문서 목록 (발생연도 순)
여기에 목록을 추가하거나 관련 문서를 새로 작성할 때, [[분류:컴퓨터 바이러스]] 로 분류해주시기 바랍니다. 자기복제 능력이 없는 트로이 목마나 웜에 대해서는 각각 트로이 목마(악성코드)와 웜(악성코드) 문서로. |
역대 컴퓨터 바이러스 |
1980년대 |
크리퍼 바이러스, 브레인 바이러스, 13일의 금요일 바이러스, 비엔나 바이러스, 스톤드 바이러스, 폭포 바이러스, 다크 어벤저 바이러스, LBC 바이러스 |
1990년대 |
조쉬 바이러스, DIR-II 바이러스, 미켈란젤로 바이러스, 카지노 바이러스, 안젤리나 바이러스, CIH 바이러스 |
2000년대 |
러브 바이러스, X97M.Barisada.H, 파리떼 바이러스, 킨타마 바이러스, Whboy 바이러스, 스턱스넷, 바이럿, 레긴, 2090 바이러스, GENO 바이러스, gogo2me |
기타 |
오토런 바이러스, 랜섬웨어 |
- 크리퍼 바이러스 (1971)
- 브레인 바이러스 (1986)
- 13일의 금요일 바이러스 (1987)
- 비엔나 바이러스 (1987)
- 스톤드 바이러스 (1987)
- 폭포 바이러스 (1987)
- 벌꿀 바이러스 (1989)
- 다크 어벤저 바이러스 (1989)
- LBC 바이러스 (1989)
- 조쉬 바이러스 (1990)
- DIR-II 바이러스 (1991)
- 미켈란젤로 바이러스 (1991)
- 카지노 바이러스 (1991)
- Winvir 바이러스 (1992)
- 에스파시오 바이러스 (1993)
- 나타스 바이러스 (1994)
- 안젤리나 바이러스 (1994)
- 세발 바이러스 (1995)
- 레드코드 바이러스 (1998)
- CIH 바이러스 (1998)
- 멜리사 바이러스 (1999)
- 러브 바이러스 (2000)
- X97M.Barisada.H (2000)
- 파리떼 바이러스 (2002)
- 킨타마 바이러스 (2004)
- Mydoom (2004)
- Whboy 바이러스 (2006)
- 스턱스넷 (2006)
- 바이럿 (2007)
- 레긴 (2008)
- 2090 바이러스 (2009)
- GENO 바이러스 (2009)
- gogo2me (2009)
- 오토런 바이러스
- 페트야
- Fast Pc Prof
- Altruistic
4. 대책
보안 프로그램 문서 참고.4.1. 예방
- 의심되는 사이트 회피
- 네트워크 침입 탐지 및 보호 시스템: 네트워크를 통해 들어오는 신호들 중 비정상적인 신호들을 걸러낸다. 디도스 방어는 여기서 이루어진다.
- 방화벽: 컴퓨터 내부로 침입하는 시도를 차단한다.
- 혹시 모르게 깔렸을 수 있는 잡다한 임시 파일들을 주기적으로 삭제하기. 이런데 악성코드가 섞여서 들어온다.
- 정보 공유: 바이러스 토탈 같은 보안 데이터베이스를 통해 최근 유행하는 바이러스를 찾아보기.
- 보안 프로그램의 업데이트: 바이러스를 예방하기 위해선 여타 다른 악성코드들과 다를 것 없이, 우선 안티 바이러스(백신) 소프트웨어를 활성화하고, 항상 주기적으로 업데이트하며 윈도우 보안 업데이트를 설치해야만 한다. 또한 의심스러운 사이트나 프로그램 등은 실행 전 충분한 경계가 요구된다. 대부분의 안티 바이러스 소프트웨어[6]는 이러한 바이러스들을 감지하고 치료할 수 있는 능력을 가지고 있다.
- 광고 차단: 광고 서버가 해킹당하거나 악성 사이트에 실수로 접속하는 등의 이유로 악성코드가 유입되는 경우가 많은데, 광고 차단 프로그램을 사용하면 이를 어느 정도 막을 수 있다.
4.2. 감염 후
4.2.1. 증상 발견
다음 증상이 지속적, 또는 갑자기 발생하면 바이러스 감염을 의심해 볼 수 있다.- 컴퓨터가 평소와 달리 느려지는 경우
- 아예 부팅이 되지 않는 경우
- 블루스크린 등이 자주 발생하는 경우
- 특정 파일 등의 정보(크기, 이름 등)가 지속적으로 변하는 경우[7]
- 기타 평소 발생하지 않은 의심스러운 증상이 발생하는 경우
- 이상한 파일(예: wosfawr.exe, iliawtzg.exe[8] 등)이 생성된 경우[9]
그리고 몇몇 바이러스들은 증상이 심해지거나 본격적인 증상이 발동되면, 제작자의 메세지나 장난성 그래픽 효과가 튀어나오기도 한다. 이는 바이러스 제작자가 스스로를 과시하기 위한 용도, 혹은 모종의 메세지를 주기 위해서일 가능성이 크다. MS-DOS 시절에는 보통 이런 그래픽 효과를 ANSI 아트로 그렸다.
4.2.2. 안티바이러스의 바이러스 분석 방식
컴퓨터 바이러스 분석은 크게 다음과 같은 두 가지 방법으로 나눌 수 있다.- 정적 분석: 바이러스로 의심되는 대상을 실행하지 않고 분석을 하는 방식이다. 일반적으로 바이러스가 실행할 수 있는 모든 코드 및 실행 경로들을 분석할 수 있지만, 실제 실행과 관련된 정보가 제한된다. 대표적으로 간접 호출 (Indirect Call) 경우 호출 대상이 여러 개 가능할 경우이다. 이를 위해 심볼릭 실행 (Symbolic Execution) 방식이 존재하나 너무 느리다는 단점이 있다.
- 동적 분석: 바이러스로 의심되는 대상을 가상 환경 등에서 실행하여 생성 레지스트리, 파일 실행, 파일 및 프로세스, 시스템 콜 호출 등 행위를 분석한다. 정적 분석과 다르게 실제 실행과 관련된 정보를 얻을 수 있지만, 실행 경로에 포함되는 코드들만 분석이 가능하기 때문에 정보가 제한된다.
5. 기타
- 컴퓨터나 AI, 로봇 캐릭터들이 바이러스에 감염되는 것은 거의 클리셰이다. 대부분 감염되면 광기에 빠져 성격이 괴상하게 변하거나 인간을 닥치는 대로 학살하려 든다. 한번 더 틀어서 생물학적 바이러스에 감염된 것처럼 기침, 고열 등의 증상을 보이는 경우도 있다. 혹은 인공지능을 고문하거나 강제로 복종시키기 위한 바이러스가 등장하는 경우도 있다.
- 일단 바이러스도 프로그램이기 때문에 버그가 존재하는 경우도 간혹 있다. 대표적으로 CIH 바이러스의 경우 컴퓨터가 바이러스에 감염되었음을 바로 인지할 수 있는 치명적인 버그를 3개 가지고 있었다.
6. 관련 문서
7. 참고자료
- danooct1 채널
DOS 컴퓨터 바이러스 실행 영상이나, 초기 윈도우 시절의 컴퓨터 바이러스 실행 영상을 모아 두고 있다. 아주 가끔 랜섬웨어나 근래의 보안 이슈들을 들고 나오기도 한다. 몇몇 영상은 유저 한국어 자막이 붙어서 나오며 국산 악성코드인 련선웨어도 소개된 바가 있다. - 도스 아카이브의 멀웨어 아카이브 코너
도스 시절의 바이러스를 체험할 수 있다. 물론 도스 박스를 통한 가상머신 안에서만 끝나기 때문에 안전하다.
[1] 그래도 최초의 바이러스는 어느 정도 좋은 의도로 만들어졌다. 함부로 크랙 버전을 만들어 무단 배포하는 사람들을 골탕 먹이려는 의도였다.[2] 한국에서도 1988년 브레인 바이러스가 알려지기 시작했다.[3] 이 소년은 이제는 어른이 된 지금도 컴퓨터 프로그래머로 활동 중이며 'blekko'라는 검색 엔진 개발을 주도하기도 했다.[4] 굳이 따지자면 사용자들에게 공포감을 들게 하는 정도였다.[5] 2010년대 들어서는 자신의 이름이나 얼굴을 걸고 유튜브에 자작 바이러스의 실행 영상을 올리거나 GitHub에 소스 코드를 올리고 있다. 단, 이 경우는 대부분은 실행 영상이나 readme 파일 등에 실행하지 말라고 경고하거나 따로 치료 프로그램을 제공한다.[6] 단, 허위 백신에 주의해야 한다.[7] 용량 크기 변화의 경우 파일이 감염되었다는 것이다.[8] csrss.exe을 위장하기 위해 csrss.exe iliawtzg.exe 이렇게 적는 경우가 있다.[9] 대부분 임시폴더(temp)에 생성된다. 혹은 시스템 폴더 또는 appdata에 생성하는 경우도 있다.[10] 트로이 목마, 바이러스, 스파이웨어 등을 통칭하는 개념이다. 해당 문서 참조.[11] 도스 시절 바이러스들은 특정한 그림 그래픽을 보통 이렇게 표현하곤 했다.