이미 밝혀진 바이러스프로그램의 변종들이 끊임없이 나타나고 있다.
컴퓨터 바이러스라는 말이 세상을 떠들썩하게 하면서 알려지게 된 것은 아마도 1987년말경 델라웨어대학의 컴퓨터센터에 브레인 바이러스가 보고되면서 일 것이다. 컴퓨터 바이러스의 출현 가능성에 대한 이야기는 훨씬 전부터 있어왔는데 1983년 캘리포니아대학 대학원생이었던 프레드 코헨이 간단한 컴퓨터 바이러스 프로그램을 실제 제작해 보임으로써 컴퓨터 바이러스가 더 이상 공상속의 이야기가 아님을 보여주었다.
우리나라에서도 88년부터 컴퓨터 바이러스에 의한 피해가 보고되기 시작했으며 90년초에는 어느 큰 연구소의 전산실이 컴퓨터 바이러스의 침입을 받았다는 보도가 있었다.
여기서 우리가 알 수 있는 것은 컴퓨터 바이러스에 대한 기사가 자주 지면을 장식하고 있으나 아직도 일반인들의 인식이 매우 낮은 편이며 피해 대상자인 컴퓨터 분야 종사자들도 이에 대한 대비가 부족하다는 사실이다. 그러면 과연 컴퓨터 바이러스에 의한 피해는 어느 정도나 되나. 한국정보산업연합회의 작년 조사에 따르면 조사 대상 기업중 81.6%가 감염을 경험했으며 기업당 평균 감염 횟수는 5회로 그 전해에 비해 3배 이상 늘었고 피해 발생시의 시스템 정지 시간도 전해에 비해 10배 이상 늘어나 피해가 매우 클 뿐만 아니라 이런 추세라면 앞으로 컴퓨터 바이러스에 의한 피해는 엄청나리라고 한다. 이렇게 피해가 엄청난 컴퓨터 바이러스에 대한 이해를 높이기 위해 그 종류 및 특징에 대해 알아보자.
자기복제를 계속
바이러스하면 우리는 쉽게 생물학적 바이러스를 떠올릴 수 있다. 이러한 바이러스는 대상물(예를들어 우리 인간)에 침입하여 병을 일으키게 하며 또 다른 사람한테 감염을 시키기도 한다. 그러나 바이러스가 모든 사람한테 침투하는 것은 아니며 우리가 평상시 몸을 깨끗이 한다든가 혹은 예방 주사를 맞음으로써 대비가 가능하다.
명칭에 '바이러스'라는 말이 붙어 있는 점에서 유추할 수 있듯이 컴퓨터 바이러스도 이와 비슷한 일을 한다. 다만 생물학적 바이러스와는 달리 컴퓨터 바이러스의 경우 대상물이 컴퓨터라는 것과 생물학적 바이러스처럼 어떤 생명력을 가지고 있는 것이 아니라 단지 컴퓨터 내부에서 돌아가는 프로그램에 지나지 않는다는 것이다.
이러한 생명력이 없는 프로그램에 지나지 않는 것이 어떻게 다른 대상물(컴퓨터)에 침투하며 또 어떤 병을 일으키며 이것을 예방하려면 어떻게 해야되고 또 병에 걸렸을 경우에는 어떻게 대처해야 하는가.
우리가 컴퓨터에서 어떤 일을 하기 위해서는 그 일을 위한 프로그램을 실행시키면서 적절한 데이터를 제공해야만 한다. 이렇게 함으로써 자신이 원하는 바를 달성 할 수 있게 된다. 그러면 컴퓨터가 병이 난다는 것은 무슨 뜻인가 사람은 어느 곳이 아프면 경우에 따라서 몸의 일부분을 전혀 쓸 수가 없게 되든지 쓸 수가 있더라도 힘이 약해지고 정신이 희미해져 원하는 바를 제대로 할 수가 없게 된다.
컴퓨터가 병이 난다고 하는 것도 이와 같다. 컴퓨터를 구성하고 있는 하드웨어의 어느 부분을 망가뜨린다든지 혹은 프로그램이 제대로 시행되도록 도와주고 있는 부분이나 데이터를 교묘히 바꿔 놓아서 어떤 프로그램을 실행시켜도 다른 일을 하거나 결과가 나오더라도 원래 나와야 하는 것과는 다른 결과가 나오도록 만든다. 병균이 그러하듯 컴퓨터 바이러스도 나쁜 일만을 골라하기 때문에 더욱 문제가 된다.
어떤 일을 하기 위해 프로그램을 만들 경우에 이같은 바이러스 프로그램을 일부러 만들어 넣을 사람은 없을 테니까 바이러스는 이같은 프로그램들이 실행될 때 끼어들어 자기가 원하는 바를 해야 한다. 그런데 감염대상프로그램들은 제각기 하는 일에 따라 프로그램 길이 뿐만 아니라 구성이 매우 다르다.
따라서 감염대상프로그램에 끼어들어 원하는 바를 하려면 그 프로그램을 살펴보고 자기가 끼어드는 위치를 잡아야 한다. 심부름꾼이 심부름할 때 주인이 시킨 일 이외에 다른 일을 하도록 만들려면 주인이 심부름꾼한테 준 일을 처리하도록 한 명령들이 써 있는 종이에 자기가 원하는 바를 끼워 넣어야 하는 것과 같다.
즉 바이러스에 걸린 프로그램이 실행 중 자기 자신을 수정할 수 있는 능력이 있어야 한다. 이것을 '자기 수정 능력'이라고 한다. 또한 바이러스 프로그램을 퍼뜨리기 위해서는 자신을 다른 프로그램에 복제할 수 있는 능력이 있어야 한다. 이것을 '자기 복제 능력'이라고 한다.
이렇게 다른 프로그램도 자기와 같은 바이러스 프로그램을 가지고 있게 만들어 감염이 되는 것이다. 컴퓨터 바이러스의 또다른 특징중의 하나는 면역성을 가질 수 있다는 점이다. 가령 감기는 평생에 걸쳐 여러번 걸리지만 홍역 같은 것은 한 번밖에 걸리지 않기 때문에 우리는 예방주사를 맞음으로써 면역성을 가질 수 있다. 컴퓨터 바이러스도 마찬가지다.
어떤 바이러스는 한번 걸리면(바이러스 프로그램이 복제, 삽입 되어 있으면) 다시는 삽입(감염)되지 않는 반면에 어떤 바이러스는 몇번이고 같은 프로그램을 감염시킬 수 있다.
이상에서 살펴본 바를 정리하면 컴퓨터 바이러스는 다음과 같이 정의될 수 있다.
첫째 컴퓨터 바이러스는 감염대상 프로그램의 구조를 바꾸어 놓는다.
둘째 컴퓨터 바이러스는 어떤 특정 프로그램 하나만을 감염시키는 것이 아니라 많은 프로그램에 대해 감염시킬수 있다.
셋째 컴퓨터 바이러스는 대상 프로그램이 자기 바이러스에 감염 되었는지 판단할 능력을 가지고 있다.
넷째 감염인식후 같은 프로그램을 또다시 감염시키지 않는다.
다섯째 바이러스 프로그램에 의해 감염된 프로그램은 위 네가지의 모든 특징을 가진다.
지금까지 알려진 바로는 컴퓨터 바이러스가 IBM PC 계열의 컴퓨터에서 제일 많이 나타난다고 한다. 이것은 물론 개인용 컴퓨터가 가장 많이 보급되어 있어서이기도 하지만 그보다는 개인용컴퓨터에서 쓰고 있는 운영 체제인 도스(DOS)가 컴퓨터 바이러스에 대해 무방비 상태에 있기 때문이다. 개인용컴퓨터가 만들어질 때에는 개인이 혼자 쓴다고 생각하고 설계했으므로 필요 자원들을 어떠한 제한없이 쓰도록 했고 시스템 기능을 사용자들한테 전부 공개하여 사용자들이 이것들을 마음대로 활용할 수 있도록 했기 때문이다. 따라서 이 글에서는 IBM PC 기종 컴퓨터 바이러스에 국한해 이야기하고자 한다.
부트섹터나 파일에 감염
컴퓨터 바이러스의 동작 원리와 특성을 종류별로 나누어 생각해 보자. 일반적으로 바이러스 프로그램을 나누는 방법에는 두가지가 있는데 하나는 로스 그린버그의 분류 방법이고 다른 하나는 랄프 버거의 기생장소에 의한 분류방법이다.
로스 그린버그는 바이러스의 기능을 기준으로 벌레(bug) 프로그램, 트로이 목마 프로그램, 컴퓨터 바이러스 프로그램 등 세가지로 분류하였는데 우리가 일반적으로 말하는 컴퓨터 바이러스는 세번째인 컴퓨터 바이리스 프로그램을 의미한다. 벌레 프로그램은 초기 형태의 것으로 비교적 악영향을 미치지 않는다. 이 프로그램은 컴퓨터내의 다른 시스템에는 영향을 미치지 않고 단순히 자신이 허용가능한 범위내에서 자기 자신을 계속 복제한다. 따라서 다른 곳에 대한 직접적인 영향은 없고 자신의 크기가 점점 커진다는 점이 특징이다.
트로이 목마 프로그램은 사용자가 모르는 다른 기능을 프로그램에 포함시켜 시스템을 파괴한다는 점에서 상당히 위험하다. 그러나 이 트로이 목마 프로그램은 스스로 증식을 하지 않기 때문에 감염된 프로그램을 실행시키지 않는 한 영향을 미치지 않는다는 점이 특징이다.
트로이 목마 프로그램의 변형인 컴퓨터 바이러스는 여기에 스스로 증식할 수 있는 기능을 포함시킨 프로그램이므로 다른 프로그램들에 대한 감염이 심각한 문제가 된다. 왜냐하면 감염된 프로그램 수가 늘어남에 따라 이들이 실행될 확률이 높아지기 때문이다. 우리가 관심을 가지고 있는 종류가 바로 이것이며 여기에는 잘 알려진 브레인(Brain), LBC, 예루살렘 바이러스 등이 있다.
컴퓨터 바이러스를 바이러스가 감염되는 장소에 따라 분류하면 파일 감염 바이러스와 부트섹터를 바꿔치는 부트 바이러스로 나눌 수 있으며 이 둘을 혼합한 형태의 바이러스도 많다. 파일 감염 바이러스는 가장 단순한 구조를 갖는 겹쳐쓰기 바이러스와 좀더 발전된 형태인 덧붙이기 바이러스로 나눌 수 있다. 이것은 파일의 어느 곳에 바이러스 코드가 기생하느냐에 따라 분류한 것이고 그외 형태로는 메모리 상주 바이러스, 호출 바이러스 등이 있다.
■ 겹쳐쓰기 바이러스
이것은 감염대상 프로그램의 맨 앞부분에 자신을 복사하는 바이러스 프로그램이다. 대개의 상업용 프로그램들은 프로그램 파일의 앞부분을 회사 이름 등 그 프로그램에 대한 정보 또는 프로그램의 데이터를 저장하는 영역으로 쓰고 있다. 이 중요한 부분에다 바이러스 프로그램을 겹쳐 쓴 것이 되어 실제로 실행시켜 보면 대부분이 제대로 실행되지 않는다. 즉 감염된 직후 증상이 나타나 별로 문제가 되지 않는다. 그러나 만일 제대로 실행된다면 이 형태의 바이러스는 찾아내기가 아주 힘들게 된다. 감염 대상 프로그램의 전 크기와 감염 후 크기가 같기 때문이다.
■ 덧붙이기 바이러스
앞에 설명한 겹쳐쓰기 바이러스가 증상을 금방 드러내어 소기의 목적을 달성하지 못하자 나타난 것이 덧붙이기 바이러스 프로그램이다. 이는 바이러스 프로그램이 원하는 일(즉 파괴 활동 및 감염)을 할 뿐만 아니라 원래 프로그램이 원했던 일도 해줌으로써 주의 깊게 살피지 않는 한 눈치채기 어렵다.
원래의 프로그램이 일을 제대로 하도록 하려면 원 프로그램을 파괴하지 않아야 하며, 바이러스 프로그램을 원 프로그램의 맨 뒤에다 그냥 덧붙이기만 하면 원 프로그램만 실행하고 말테니까 소기의 목적을 달성할 수 없다.
바이러스 프로그램이 대상 프로그램을 감염시키는 과정을 오피스텔에 비유해 설명하면 다음과 같이 한다.
바이러스 프로그램은 대상 건물안의 사무실 맨 끝에 자기 사무실을 만들고 거기에 자기 자신을 복제한다(똑같이 생긴 사람을 집어 넣는다). 그 다음에는 건물 입구에다(전체 프로그램의 맨 앞) '이 건물에 들어오는 사람은 사무실 xxx(바이러스 프로그램이 있는 곳)으로 오시오'라는 팻말을 써놓아 사람들이 자신의 방으로 찾아오게 만들어 바이러스 자신의 일, 즉 그 손님을 감염시키고 또 원하는 파괴 행위를 하도록 한다. 그 다음에 팻말을 원래대로 복구시키고 손님을 입구로 데리고가서 그 손님이 원하는 일을 하도록 한다. 이렇게 바이러스 자신의 일을 먼저 처리한 후 그 손님의 일도 제대로 처리하게 만들어 외부에 의심을 사지 않도록 한다.
그러나 이 경우도 자세히 살펴보면 손님이 건물에 들어가 일을 마치고 나오는 시간이 평상시보다 오래 걸리며 또한 사무실의 개수도 옛날보다 많아졌다는 것을 알 수 있으므로 감염 여부를 알아낼 수 있다.
■ 메모리 상주 바이러스
덧붙이기 바이러스의 경우에 문제가 되는 것은 '건물 입구에 팻말을 갖다 놓고 사무실을 차려주고'하는 일이 바이러스에 감염된 사람에 의해 행해진다는 것이다. 다시 말하면 창고 열쇠가 바이러스에 걸린 직원한테 주어지지 않는 한(바이러스에 걸린 프로그램이 CPU에 할당되어 실행되지 않는 한) 아무 일도 안 일어난다는 것이다.
그래서 생겨난 것이 메모리 상주 바이러스. 바이러스 프로그램은 한번 실행될 때(처음 직원으로 채용될 때) 사무실을 만들어 놓고 빌딩 안내판의 일부를 바꾸어 다른 일(가령 A라는 일)로 찾아 온 손님을 바이러스 자신의 방으로 오도록 만들어 프로그램마다 감염시키며 이 감염된 사람이 다른 빌딩의 직원으로 채용되면 똑같은 일을 하게 만들어 전파 속도가 엄청나게 빨라진다. A라는 일을 하기를 원했던 손님은 모두 감염되고 이 사람들이 또 다시 A라는 일을 원하는 다른 사람들을 감염시키는 것이다. 이 경우에도 감염을 시킨 후 A라는 일을 하도록 해 줌으로써 쉽게 눈에 띄지 않도록 한다.
■ 호출 바이러스
위와 같은 바이러스들은 하는 일이 다를 뿐 파일의 뒷 부분에 기생하는 점이 공통된 특징이다. 따라서 자세히 살펴보면 파일의 크기(프로그램 크기)가 늘어난 것을 금방 알 수 있어 찾아내기가 어렵지 않다.
그런데 호출 바이러스는 다른 바이러스와는 달리 눈에 잘 띄지 않도록 만들어진 바이러스 프로그램이다. 이 바이러스는 자기 자신은 숨을 곳을 마련해 놓고(새로운 파일을 만듦) 파일 속성을 변환시켜 사용자의 눈에 띄지 않게 한다. 그런 후 감염 대상 프로그램에는 자신을 호출하도록 하는 명령어 하나만 써넣는다. 일단 호출되면 자신이 달려와 일을 처리한다. 이렇게 하면 감염된 프로그램 파일의 크기가 감염되기 전과 거의 같아 눈에 잘 띄지 않는다.
■ 부트 바이러스
컴퓨터를 처음 켰을 때 디스크의 부트섹터(boot sector)에 있는 프로그램(부트스트랩 로더)들이 불려 들어가 다른 프로그램들을 실행하기 위한 환경을 만들어 주는 작업을 한다. 이렇게 부트색터에 있는 프로그램이 무조건 읽힌다는 것을 이용한 것이 부트 바이러스 프로그램이다. 대표적인 것으로 LBC 바이러스, 브레인 바이러스, 스톤 바이러스를 들 수 있다. 부트 바이러스 프로그램에 감염되면 바이러스 프로그램이 부트섹터에 쓰여지고 원래의 부트 스트랩 로더는 다른 곳으로 옮겨진다.
이렇게 감염된 디스켓으로 부팅을 하면 맨 먼저 바이러스 프로그램이 실행되어 앞으로 활동하기 위한 작업, 즉 메모리에 상주하고 인터럽트를 가로채는 일을 한다. 자기가 활동하기 위한 환경을 만든 다음 원래의 부트 스트랩 로더를 불러 정상적인 부팅과정을 밟게 한다. 그후 바이러스는 이전에 가로챈 인터럽트에 의해 활동한다. 원래의 부트 스트랩 로더는 대개 디스켓의 끝으로 옮겨지는데, 이것은 디스켓의 끝 섹터까지 이용하는 경우가 드물다는 약점을 이용한 것이다.
대표적인 바이러스들
이제까지 종류별로 바이러스의 동작원리에 대해 살펴보았는데 실제 바이러스들을 간단히 살펴보자. 1천여종 되는 바이러스 프로그램 가운데 대표적인 바이러스들은 다음과 같다.
■ 러하이(Lehigh) 바이러스
러하이 바이러스는 1987년에 미국의 러하이 대학의 학생과 교수 대출용 디스켓에서 발견된 것으로 도스의 command.com에 기생하는 바이러스다. 이것은 많은 대출용 디스켓이 손상된 것을 이상하게 여긴 이 대학의 컴퓨터 사용자 고문인 케니스에 의해 발견됐다.
특징이라면 command.com의 스택 부분에 바이러스가 기생하면서 카운터 4가 되면 디스켓을 완전히 지워버리는 것이다. 러하이 바이러스는 최초의 악성 바이러스이며, 그 분석이 가장 많이 행해진 바이러스로 유명하다.
■ 브레인 바이러스
이 바이러스는 88년 봄 국내에 상륙해 그 해 여름에 각 잡지에 갖가지 소스 분석과 백신이 실림으로써 국내에 가장 잘 알려진 바이러스로 이후 많은 변형판이 출현해 국내 사용자를 괴롭혔다.
이 바이러스는 원래의 부트 섹터를 보관하고 있으며 그리고 바이러스의 주 부분이 위치할 여섯개의 섹터를 불량섹터로 만들어 놓는다. 그리고 PC툴즈(PC TOOLS)나 노턴유틸리티로 브레인 바이러스에 감염된 플로피 디스크의 부트섹터를 살펴보면 "Welcome to the…"의 메시지가 나타난다.
부트섹터를 읽을 경우 이를 가로채 원래의 부트섹터를 가리키므로 바이러스의 검출이 쉽지 않다. 예를 들어 노턴유틸리티를 사용해 부트섹터를 보면 원래의 부트섹터를 볼 수 있다. 감염된 디스켓은 "(C)Brain"이라는 볼륨명을 가지고 있기 때문에 이것을 이용해 브레인 바이러스 감염여부를 알 수 있다.
브레인 바이러스의 변형판으로는 브레인 B형, 브레인 C형, 클론, 슈 바이러스(Shoe Virus), 클론 B형 등이 있다.
브레인 B형의 다른 이름으로는 브레인 HD, 하드 디스크 브레인, 휴스턴(Houston) 바이러스 등이 있다. B형은 브레인 바이러스의 원형과 모든 것이 같고 다만 하드 디스크 C: 드라이브를 감염시키는 것이 추가되었다.
브레인 C형 바이러스는 B형과 동일하며 단지 볼륨명을 고치는 코드가 없어졌다. 따라서 디스켓이 브레인 C형 바이러스에 감염 되었다 할지라도 볼륨명이 변하지 않게 된다. C형 바이러스는 시스템을 공격(?)하지 않기 때문에 찾기가 상당히 어렵다.
■ 예루살렘 바이러스
이 바이러스의 다른 명칭은 13일의 금요일(Friday the 13th) 바이러스, PLO 바이러스, 이스라엘 바이러스 등이 있다. 이렇게 많은 이름이 있는 이유는 정확하게 바이러스 명칭이 처음부터 정해진 것이 아니고 바이러스의 특징을 따다가 이름을 짓기 때문이다.
이 바이러스는 그 작동하는 알고리즘과 유연성에 있어서 대단한 성능을 발휘한다. 주요 특징은 다음과 같다.
첫째 기생하는 곳이 바로 com.exe의 확장자를 가진 실행 파일이다. 이렇게 감염되어 있는 실행 파일을 실행시키게 되면 바이러스가 램(RAM)에 상주하게 된다.
둘째 바이러스가 램에 상주한 이후로 실행 파일이 실행되면 그 파일의 크기를 1천8백8바이트 만큼 증가시킨다. 이렇게 크기가 증가되는 이유는 그만큼이 바이러스 코드가 위치하는 부분이기 때문이다. 크기 증가도 com형 파일은 한 번만 발생하지만 exe형 파일은 그 특징상 실행될 때마다 발생하게 된다.
필자가 가지고 있는 예루살렘 바이러스의 샘플은 아르카노이느(Alkanoid) II라는 게임의 오버레이 파일에 기생해 있었는데 자그 마치 17번이나 감염이 돼 있어서 원래의 크기보다 3만바이트 이상 커져 있었다.
셋째 바이러스가 램에 상주한 이후에 실행되는 파일을 계속 감염시킴으로써 그 시간 만큼 디스켓 액세스 속도가 저하하게 된다.
넷째 13일의 금요일 바이러스라는 별명이 암시하듯이 13일의 금요일날 실행되는 파일만을 삭제한다. 그리고 예루살렘 바이러스에 감염된 일을 실행시킨 1시간30분 후 인터럽트 8번을 건드리기 때문에 약 10%정도의 속도 저하가 일어나게 된다.
예루살렘 바이러스의 변종으로는 예루살렘 B형, 예루살렘 C형, 예루살렘 D형, 블랙홀 바이러스 등이 있다.
■ LBC 바이러스
1989년 후반 국내 잡지 등의 매체에 소개된 바이러스로서 플로피 디스켓의 부트섹터에 기생하면서 감염된 디스켓이 부팅될 때 하드디스크의 파티션 테이블과 부트섹터를 날려 버린다.
이 바이러스는 국내의 제작자가 만든 것으로 추정되는데, 브레인 바이러스와 더불어 소스가 공개되어 있는 바이러스이기도 하다.
이 바이러스에 대한 예방 대책은 아직까지는 특별한 것이 없다. 다른 바이러스에도 해당되는 사항이지만 시스템 영역을 항상 복사해 두고 중요한 파일은 백업(back up)을 받아 두는 것이 제일 중요하다.
특히 자신이 작성한 프로그램의 소스나 자신만의 자료는 꼭 백업을 받아두어야 나중에 후회가 없다.
■ 스톤(stoned) 바이러스
컴퓨터가 가끔 돌이 되게(stoned) 만드는 바이러스다. 기생처는 디스켓의 부트섹터이며 뉴질랜드에서 처음 발견돼 뉴질랜드 바이러스라고도 한다. 특징은 여덟번째 부팅때마다 "Your computer is now stoned. Legalise Mari juana"라는 메시지를 출력한다.
파괴행위를 하지않고 하드디스크에는 감염되지 않는 것으로 알려져 있다. 이 바이러스의 샘플은 필자도 소유하고 있는데, 국내에 곧 퍼질 것으로 보인다. 이것을 분석해 본 사람은 한결같이 이 바이러스의 구성과 프로그래밍이 좋다고 칭찬한다. 이 정도 바이러스의 제작자가 왜 좋은 방향으로 그 재능을 사용하지 못했을까.
이 바이러스는 변형들이 있는데 스톤 B형 바이러스는 하드 디스크에도 감염되도록 만들어졌으나 의도적인 파괴행위는 하지 않는다. 그런데 RLL 방식의 하드 디스크는 가끔 작동이 안된다.
스톤 C형 바이러스도 스톤 B형을 변형한 것으로 "Stoned" 메시지가 나오지 않기 때문에 찾기가 어렵다.
■ 일요일 바이러스
예루살렘 바이러스처럼 실행파일이나 오버레이 파일에 바이러스가 기생하여 일요일날 파일을 지우게 되어 일요일(Sunday) 바이러스라고 한다. 역시 램에 상주하면서 바이러스 활동을 한다.
■ 1701 바이러스
다른 이름으로 떨어지는 눈물(Falling Tears) 바이러스, 작은 폭포(Cascade) 바이러스 등이 있다. 이런 이름이 붙은 이유는 이 바이러스가 작동 되었을 때 화면에 있는 문자들을 화면 밑으로 떨어뜨리는 특징이 있다. 1701 바이러스란 이름은 이 바이러스가 다른 com파일을 감염시킬때 1천7백1바이트 만큼 크기를 증가시키는 데 기인한다. 이 바이러스는 다음과 같은 특징을 가지고 있다.
첫째 암호 알고리즘을 사용하여 바이러스의 검출과 분석을 어렵게 만든다. 둘째 랜덤화, 기계 종류, 모니터 종류, 클럭카드의 유무 등에 입각하여 바이러스가 작동한다. 셋째 IBM PC의 클론 제품에서만 작동하므로 원래의 IBM PC에서는 동작하지 않는다. 이것은 원래의 IBM PC를 선택하는 루틴에 버그가 있기 때문이라고 알려진다.