안녕하세요.
9번째 시간입니다.
백신 제작과 바이러스 치료에 대해서 살펴보겠습니다.
소스로 쌍용컴퓨터에서 개발한 백신(C소스)을 실었습니다.
그리고 안철수님과의 30문 30답도 있으니 참조바랍니다.
6. 백신 제작
6-1 터보-백신 툴 킷 제작 & 소개
V3의 아성에 도전한 터보백신의 백신 제작 툴킷을 소개하겠다.
C 로 된 소스와 라이브러리 , 헤더화일, 프로젝트 화일과 실행화일로 구성된다.
제작하여 공개해주신 임형택님께 감사드린다.
제작자 : 임 형 택 (Lim Hyoung-Taek)
6-1-1 제작 동기
앞으로 증가하는 바이러스들에 대해서 소수의 백신 제작자들만으로는
바이러스 퇴치가 어려울 것으로 보이기 때문에 누구라도 짧은 시간안에
아주 쉽게 백신을 제작할수 있도록 하기 위해서 표준화된 라이브러리
형태의 툴킷을 제작하게 되었습니다.
6-1-2 특징
1. C언어로 작성된 라이브러리 형태로 제공 됩니다.
2. 예루살렘 바이러스와 같은 일반적인 바이러스의 경우 몇개의
필드로 구성된 구조체에 바이러스 정보를 넣은후 Scan_Virus()
라는 함수의 호출 한번으로 간단하게 바이러스를 진단/치료 할수
있는 백신을 제작할수가 있습니다.
3. 바이러스를 분석할수 있을 정도의 어셈블리어에 대한 기본적인
지식만으로도 사용하실 수 있을 정도로 매우 쉽게 백신을 작성할
수 있다는 장점이 있습니다. 또한 C언어를 모르시는 분도 압축화
일내에 포함되어 있는 예제를 참고로 쉽게 해당 바이러스에 대한
백신을 제작할 수가 있습니다.
6-1-3 ALPHA(알파 버젼)의 제한점들
Turbo Vaccine Tool Kit V.ALPHA 에는 다음과 같은 제한점들이
있습니다.
1. ALPHA 버젼은 정식 버젼이 나오기 전의 테스트 버젼으로 아직 지원
되지 않는 기능이 많이 있습니다.
2. 본 툴 키트는 Turbo-C 2.0과 Turbo-Assembler 3.0으로 제작되었으며,
소형(Small)모델만을 지원합니다.
3. 파일 바이러스에 대한 백신 만을 제작할 수가 있습니다. (부트
바이러스에 대한 진단/치료 기능은 차후 버젼에서 추가할 예정
입니다.)
4. 기억 장소에 상주해 있는 파일 파이러스를 치료하는 방법은 바이러스
가 바꿔놓은 INT 21H번의 벡터를 원래대로 돌려 놓음으로써 바이러스
를 무력하게 하는 방법을 사용합니다. (INT 8H, INT 1A, INT 1C등의
벡터를 바이러스가 바꿔놓는 경우에 대해서는 복구하지 않읍니다.)
또한 바이러스가 상주한후에 또 다른 INT 21H를 가로채는 프로그램이
상주할 경우에 대해서는 바이러스를 진단할수 없습니다.
5. 겹쳐쓰기형 바이러스의 경우는 치료(삭제)기능을 지원하지 않읍니다.
6. COM형태의 파일은 전위형과 단순 후위형의 경우만 치료가 가능
합니다. (이에 대한 자세한 설명은 밑에 기술한 컴퓨터 바이러스의
형태를 참고하시기 바랍니다.)
7. 감염된 화일의 진단시 자체 암호화를 사용하는 바이러스는 진단이
불가능 합니다.
8. 감염된 화일의 치료시 암호화를 사용하는 바이러스는 치료 할 수
없습니다.
9. 파일 검사시 모든 화일 검사 옵션만을 제공 합니다. (단, 디렉토리
지정은 가능합니다.)
6-1-4 기억장소상에서 존재하는 바이러스의 진단/치료 원리
실제적으로 분석한 바이러스를 툴킷에 적용하는 방법만을 설명하였다.
1. 툴 키트를 이용한 백신 제작 예제
[예제]
VIRINFO_T VI = {
"1994-11-30, My Name", /* Vaccine : 1994-11-30, .... */
"Jerusalem", /* 바이러스 이름 */
{ 7, /* 진단 코드 길이 (1) */
0x8e, 0xd0, 0xbc, 0x00, 0x07, 0x33, 0xc0 }, /* 진단 코드 (2) */
1808, /* 바이러스의 길이 */
{ 0x144L, /* 메모리에 있는 바이러스 코드 �셋 (3) */
0x25b, /* 바이러스 상주시의 INT 21H 오프셋 (4) */
0x17 /* 원래의 INT 21H가 있는 오프셋 (5) */
},
{ 0x7fL, /* EXE형 파일에 있는 바이러스 코드 �셋 (6) */
0x45L, /* 원래의 SS가 있는 오프셋 (7) */
0x43L, /* 원래의 SP가 있는 오프셋 (8) */
0x47L, /* 원래의 IP가 있는 오프셋 (9) */
0x49L /* 원래의 CS가 있는 오프셋 (10) */
},
{ VT_HEAD, /* Virus Type: 전위형 */
0xafL, /* COM형 파일에 있는 바이러스 코드 �셋 (11) */
0L, /* 원래 화일의 앞부분이 있는 �셋 */
0, /* 원래 화일의 앞부분의 바이트 (갯수) */
}
};
2. 램상주한 바이러스의 덤프 코드
* 예루살렘 바이러스
0140 8E D0 BC 00-07 33 C0 8E D8 2E A1 4B .....3.....K
0150 00 A3 FC 03 2E A0 4D 00-A2 FE 03 8B DC B1 04 D3 ......M.........
0160 EB 83 C3 10 2E 89 1E 33-00 B4 4A 2E 8E 06 31 00 .......3..J...1.
0170 CD 21 B8 21 35 CD 21 2E-89 1E 17 00 2E 8C 06 19 .!.!5.!.........
0180 00 0E 1F BA 5B 02 B8 21-25 CD 21 8E 06 31 00 26 ....[..!%.!..1.&
0190 8E 06 2C 00 33 FF B9 FF-7F 32 C0 F2 AE 26 38 05 ..,.3....2...&8.
01A0 E0 F9 8B D7 83 C2 03 B8-00 4B 06 1F 0E 07 BB 35 .........K.....5
01B0 00 1E 06 50 53 51 52 B4-2A CD 21 2E C6 06 0E 00 ...PSQR.*.!.....
01C0 00 81 F9 C3 ....
기억장소(램)에 상주해 있는 예루살렘 바이러스를 덤프해 보면 위와
같은 형태가 됩니다.
특히 예제에서 진단 코드로 사용할 코드 <7개 (1)>는 오프셋
<144h (2)> 에 위치 합니다. ( <8E D0 BC 00 07 33 C0 (3)> )
3. 21H 벡터의 변경과 치료
* 예루살렘 바이러스
원래의 21H 벡터를 오프셋 <17H (5)>에 저장합니다.
바이러스 상주후의 21H 벡터는 오프셋 <24BH (4)>로 변경 됩니다.
주의: 원래의 21H를 벡터를 바이러스가 자신이 상주한 코드 세그
먼트내에 저장한 경우에만 치료가 가능 합니다.
다섯. 파일에 감염되는 바이러스의 형태와 진단/치료 원리
바이러스 형태는 여러가지가 있지만 여기서는 툴 키트를 이용한 백신
제작이 목적이므로 ALPHA(알파)버젼에서 지원하는 바이러스의 형태들에
대해서만 설명하도록 하겠습니다.
1. EXE화일을 감염시키는 바이러스의 형태들
[그림 1]
┌───────────────┬──────┐
│ 원래 화일 │바이러스 │
└───────────────┴──────┘
2. COM화일을 감염시키는 바이러스의 형태들
1) 전위형 바이러스
[그림 2-1]
┌────────┬───────────────┐
│바이러스 │ 원래 화일 │
└────────┴───────────────┘
전위형 바이러스는 위의 그림과 같이 화일의 처음에 바이러스가
존재하며, 실행시 바이러스가 제일 먼저 제어권을 획득하여
감염작용을 합니다.
2) 후위형 바이러스 (단순 후위형 바이러스)
[그림 2-2]
───────┬──────────────────┐
│JMP XXXX │ 원래 화일 ?바이러스 │
└──────┴──────────────────┘
XXXX
단순 후위형 바이러스는 위의 그림과 같이 처음에 JMP 코드를
이용하여 바이러스가 있는곳(XXXX)로 제어권을 넘겨서 실행시
바이러스가 제일 먼저 제어권을 가지도록 합니다.
3) 분산 후위형 바이러스
[그림 3]
┌─────────────┬──────┬─────┐
│ JMP XXXX ?원래 화일 1 │ 바이러스 │원래 화일│
└─────────────┴──────┴─────┘
XXXX
분산 후위형 바이러스는 위의 그림과 같이 바이러스는 비록
후위에 존재 하지만 원래 화일의 코드를 분산시켜서 저장
합니다. 바이러스 제작자가 치료를 좀더 어렵게 하기 위해서
제작했다고 볼 수 있습니다. ALPHA(알파) 버젼에서는 이러한
형태의 바이러스에 대한 치료기능은 지원되지 않읍니다. (위의
그림에서는 원래화일이 2부분으로 나뉘어져 있지만 실제로는 더
많은 부분으로 나누어서 저장해서 치료를 더 어렵게 만드는
경우도 있습니다.)
4. EXE화일을 감염시키는 바이러스의 진단 원리
* 예루살렘 바이러스
00C5 CLD
00C6 PUSH DS
0140 8E D0 BC 00-07 33 C0 8E D8 2E A1 4B .....3.....K
0150 00 A3 FC 03 2E A0 4D 00-A2 FE 03 8B DC B1 04 D3 ......M.........
0160 EB 83 C3 10 2E 89 1E 33-00 B4 4A 2E 8E 06 31 00 .......3..J...1.
0170 CD 21 B8 21 35 CD 21 2E-89 1E 17 00 2E 8C 06 19 .!.!5.!.........
0180 00 0E 1F BA 5B 02 B8 21-25 CD 21 8E 06 31 00 26 ....[..!%.!..1.&
0190 8E 06 2C 00 33 FF B9 FF-7F 32 C0 F2 AE 26 38 05 ..,.3....2...&8.
01A0 E0 F9 8B D7 83 C2 03 B8-00 4B 06 1F 0E 07 BB 35 .........K.....5
01B0 00 1E 06 50 53 51 52 B4-2A CD 21 2E C6 06 0E 00 ...PSQR.*.!.....
01C0 00 81 F9 C3 ....
예루살렘 바이러스의 경우 오프셋 c5h번지 부터 시작 합니다.
여기서 144h - c5h = 7fh
즉, COM화일 진단 코드 오프셋은 <7fh (6)> 이 되며, 바이러스 진단
코드는 244h 부터인 <8E D0 BC 00 07 33 C0 (2)>의 <7 (1)>개를 진단
코드로 삼음을 알수 있습니다.
5. COM화일을 감염시키는 바이러스의 진단 원리
* 예루살렘 바이러스
0100 JMP 195
.
.
.
0195 ....... -> 백신 툴킷에서 사용하는 시작 오프셋
0240 8E D0 BC 00-07 33 C0 8E D8 2E A1 4B .....3.....K
0250 00 A3 FC 03 2E A0 4D 00-A2 FE 03 8B DC B1 04 D3 ......M.........
0260 EB 83 C3 10 2E 89 1E 33-00 B4 4A 2E 8E 06 31 00 .......3..J...1.
0270 CD 21 B8 21 35 CD 21 2E-89 1E 17 00 2E 8C 06 19 .!.!5.!.........
0280 00 0E 1F BA 5B 02 B8 21-25 CD 21 8E 06 31 00 26 ....[..!%.!..1.&
0290 8E 06 2C 00 33 FF B9 FF-7F 32 C0 F2 AE 26 38 05 ..,.3....2...&8.
02A0 E0 F9 8B D7 83 C2 03 B8-00 4B 06 1F 0E 07 BB 35 .........K.....5
02B0 00 1E 06 50 53 51 52 B4-2A CD 21 2E C6 06 0E 00 ...PSQR.*.!.....
02C0 00 81 F9 C3 ....
COM화일은 오프셋 100h부터 시작한다는 것은 누구나 알 것입니다.
예루살렘 바이러스의 경우 195h번지 부터 시작한다. (후위형
바이러스도 마찬가지로 JMP XXXX한후의 XXXX를 툴킷에서 시작 오프셋
으로 사용합니다.)
여기서 244h - 195h = 0afh
즉, COM화일 진단 코드 오프셋은 <0afh (11)> 이 되며, 바이러스 진단
코드는 244h 부터인 <8E D0 BC 00 07 33 C0 (2)>의 <7 (1)>개를 진단
코드로 삼음을 알수 있습니다.
6. EXE화일을 감염시키는 바이러스의 형태에 따른 치료 원리
[그림 6-1]
┌─────────────────────────┐
│ 원래 화일 │ 원래의 EXE헤더 정보 │바이러스 │
└─────────────────────────┘
[그림 6-2]
──────┬─────────────────
│ 원래 화일 │ 원래의 EXE헤더 정보 ?바이러스 │
└─────└─────────────────┘
[그림 6-3]
┌──────┬─ ─────────┬─────┐
│ 원래 화일 │ 원래의 EXE헤더 정보 │바이러스 │
└──────┴───────────┴─────
대부분의 바이러스는 EXE헤더 정보중 SS, SP, IP, CS만을 저장
합니다. (단, SS, SP, IP, CS의 저장 순서는 바이러스에 따라서 다릅
니다.)
원래의 EXE헤더 정보 저장 형태는 3가지의 형태가 있을수가
있습니다. 분산형의 경우는 3번째 형태에 포함시켰습니다.
* 예루살렘 바이러스
SS를 오프셋 <45h (7)> 에 저장해 둡니다.
SP를 오프셋 <43h (8)> 에 저장해 둡니다.
IP를 오프셋 <47h (9)> 에 저장해 둡니다.
CS를 오프셋 <49h (10)> 에 저장해 둡니다.
* 주의: EXE헤더 정보를 저장하고 있는 오프셋은 예루살렘 바이러스
와 같이 0h부터 시작하는 경우와 IP에서부터를 시작점으로
삼는 경우가 있습니다. 이 부분은 바이러스 분석시 알 수
있습니다.
7. COM화일을 감염시키는 바이러스의 형태에 따른 치료 원리
1) 전위형 바이러스
전위형 바이러스의 경우는 [그림 2-1]에서도 볼수 있듯이 앞부분
에 바이러스가 감염되므로 이를 제거하고, 뒷부분에 있는 원래의
화일 내용을 다시 앞부분으로 옮겨주면 됩니다.
2) 후위형 바이러스 (단순 후위형 바이러스)
[그림 5-1]
┌──────┬─────┬───────────────┐
│ JMP XXXX│ 원래 화일│ 원래화일의 앞부분 │바이러스│
└───── ──────┴──────────┴─────
XXXX
[그림 5-2]
┌────────────┬─────┬──────────┐
│ JMP XXXX│ 원래 화일 │ 바이러스│ 원래화일의 앞부분 │
└─────────────────────────────┘
XXXX
[그림 5-3]
┌───────────────────────────────────┐
│ JMP XXXX│ 원래 화일│ 바이러스1 │원래화일의 앞부분│ 바이러스2 │
└───────────────────────────────────┘
XXXX
위의 그림들에서와 같이 후위형 바이러스의 경우는 원래 화일의
앞부분을 바이러스 내부에 저장해 둡니다. 치료 원리는 이 원래
화일의 앞부분을 다시 원위치에 써주고, 바이러스 부분을 제거해
주는 방식을 취합니다. 여기서 원래 화일의 앞부분을 저장할때의
형태는 위의 그림처럼 3가지의 형태가 있을수 있습니다.
주의: EXE 헤더 정보를 연산이나 암호화 연산을 해서 저장해 두는
경우는 치료할 수 없습니다.
3) 분산 후위형 바이러스
단순 후위형 바이러스와 치료원리는 동일하며, 단지 원래 화일이
분산되어서 기록되기 때문에 치료시 이를 모두 연결해 주는 작업
이 필요하게 됩니다. 본 ALPHA(알파) 버젼에서는 이에 대한 치료
기능을 지원하지 않읍니다. (대부분의 바이러스는 단순 후위형
형태를 가지기 때문에 ALPHA(알파) 버젼만으로도 대부분의 바이러
스가 치료 가능 합니다.)
6-1-6 이 프로그램 사용전의 주의사항
1. 어느 정도 바이러스에 대해서 아는 분이 본 내용을 읽는다는 가정하
에 기초적인 설명은 다루지 않았으며, 툴 킷을 이용한 백신제작에
필요한 내용들만을 기술하고 있습니다.
2. 이 툴킷을 이용하여 제작한 백신은 절대 상업적인 목적으로 사용하는
것은 허락하지 않음을 알려 드립니다. 단, 본 툴 킷을 이용하여 제작
한 백신을 통신망등에 공개하건 개인적인 목적으로 사용건은 자유
입니다.
3. 제작자는 본 라이브러리의 제작에 최선의 노력을 경주하여 제작하였
습니다. 본 라이브러리를 이용하여 제작한 백신에 문제가 있을시는
툴킷을 이용하여 백신을 제작한 자신에게 책임이 있음을 알려 드리며
이 라이브러리로 인하여 발생하는 어떠한 문제점에 대해서도 툴 킷
제작자는 책임이 없음을 알려 드립니다.
4. 본 라이브러리의 내용을 수정하는 행위등은 절대로 허락하지 않으며,
압축화일 내에 포함된 소스에 대해서도 어떠한 변형도 불가 합니다.
6-1-7 향후 발전 계획
1. 본 ALPHA(알파) 버젼은 아직 테스트 버젼이라서 부족한 기능이 많이
있지만 차후 버젼에서는 좀더 완벽한 기능과 완벽한 설명서와 함께
만나 뵙도록 하겠습니다.
2. 아직 ALPHA(알파) 버젼에서는 부트 바이러스에 대한 진단/치료 기능
은 다루지 못했지만 차후 버젼에서는 꼭 이들 또한 다루도록 하겠
습니다.
3. 아직 툴킷 라이브러리에 대한 최적화를 하지 않은 관계로 생성 화일
의 크기가 다소 크다는 느낌을 받을수 있지만 차후 버젼업시에는
최적화를 하여 더욱 컴팩트한 모습을 보여드리도록 하겠습니다.
6-1-8 제작자의 연락처
1. 하이텔 ID : HTLim
나우콤 ID : hello
천리안 ID : zpihello
2. 주소 : 151-051 서울특별시 관악구 봉천 1동 692-25 12/1
임 형택
6-2 터보 백신 툴 킷 소스
C언어로 작성된 라이브러리 형태로 제공 된다.
바이러스를 분석할수 있을 정도의 어셈블리어에 대한 기본적인
지식만으로도 사용하실 수 있을 정도로 매우 쉽게 백신을 작성할
수 있다는 장점이 있다.
6-2-1 에루살렘 바이러스 백신 프로그램 C 소스
/* FileName: VI576VAC.C
Discription: Turbo Vaccine Tool Kit 를 이용한
예루살렘 바이러스에 대한 백신 프로그램
Date: 1994/12/02
Programmer: Lim Hyoung-Taek
*/
#include "tvtk.h" /* 헤더 파일 */
main(int argc, char *argv[])
{
VIRINFO_T VI = {
"1994-12-02, My Name", /* Vaccine : 1994-11-30, .... */
"Vienna.576", /* 바이러스 이름 */
{ 7, /* 진단 코드 길이 */
0x8b, 0xf2, 0xb8, 0x0f, 0xff, 0xcd, 0x21 }, /* 진단 코드 */
576, /* 바이러스의 길이 */
{ NO_SCAN, /* 메모리에 있는 바이러스 코드 �셋 */
0L, /* 바이러스 상주시의 INT 21H 오프셋 */
0 /* 원래의 INT 21H가 있는 오프셋 */
},
{ NO_SCAN, /* EXE형 파일에 있는 바이러스 코드 �셋 */
0L, /* 원래의 SS가 있는 오프셋 */
0L, /* 원래의 SP가 있는 오프셋 */
0L, /* 원래의 IP가 있는 오프셋 */
0L /* 원래의 CS가 있는 오프셋 */
},
{ VT_TAIL,
0x11, /* COM형 파일에 있는 바이러스 코드 �셋 */
0x1bfL, /* 원래 화일의 앞부분이 있는 �셋 */
3, /* 원래 화일의 앞부분의 바이트 */
}
};
Scan_Virus(argc, argv, &VI); /* 바이러스 검색 함수를 호출한다. 이 함수 하나로
검색과 치료가 모두 이루어 진다. */
}
6-2-2 터보 백신 툴 킷 헤더 소스
1)
/* FileName: TVTK.H
Discription: 바이러스 검색과 치료를 위한 정보 헤더 화일
Date: 1994/11/30
Programmer: Lim Hyoung-Taek
*/
#include "typedef.h"
#define VT_HEAD 0
#define VT_TAIL 1
#define NO_SCAN -1L
typedef struct {
byte show_string[50];
byte vir_name[50]; /* 바이러스 이름 포인터 */
byte vir_code[50]; /* 파일에 있는 바이러스 코드 포인터
= { 코드 길이, 코드들 ... }; */
word vir_size; /* 바이러스의 길이 */
struct {
long vir_code_off; /* 메모리에 있는 바이러스 코드 오프셋 */
word vir_int21_off; /* 바이러스 상주시의 INT 21H 오프셋 */
word org_int21_off; /* 원래의 INT 21H가 있는 오프셋 */
} mem;
struct {
long vir_code_off; /* 파일에 있는 바이러스 코드 오프셋 */
long org_ss_off; /* 원래의 SS가 있는 오프셋 */
long org_sp_off; /* 원래의 SP가 있는 오프셋 */
long org_ip_off; /* 원래의 IP가 있는 오프셋 */
long org_cs_off; /* 원래의 CS가 있는 오프셋 */
} exe;
struct {
word vir_type;
long vir_code_off; /* 파일에 있는 바이러스 코드 오프셋 */
long org_head_off;
word org_head_nbytes;
} com;
} VIRINFO_T; /* Virus Information */
2)
/* FileName: TYPEDEF.H
Discription: Type definitions
Date: 1994/11/30
Programmer: Lim Hyoung-Taek
*/
#ifndef TYPEDEF_H
#define TYPEDEF_H
typedef unsigned char byte;
typedef unsigned word;
#endif
끝으로 안철수님의 컴퓨터 바이러스 30문30답을 실었다.
최근 신종 컴퓨터 바이러스들이 다시 급격하게 증가하고 있고, 이에 따른
피해 사례도 급증하고 있다. 92년에 17종 발견됐던 것이 93년에는 34종, 94년
에는 70종으로 매년 2개 이상 급증하는 추세이다. 특히 한국산 바이러스가 차
지하는 비중이 날이 갈수록 높아져 큰 문제점으로 지적되고 있다.
그러나 아직까지도 많은 컴퓨터 사용자들이 컴퓨터 바이러스에 대한 잘못된
지식들로 인해 어려움을 겪고 있다. 컴퓨터 보급의 급격한 증가와 함께 크게
늘어난 초보 사용자들의 경우, 체계적이고 전문적인 정보 및 교육 부재로 그
피해는 더욱 심각한 형편이다.
필자들은 특히 하이텔, 천리안, 나우누리, 포스서브 등을 통해서 매일 20
∼30통의 컴퓨터 바이러스에 대한 직접, 간접적인 질문을 받고 있다. 그 수는
1년에 1만통 정도이다. 내용들을 자세히 분석해본 결과, 신종 컴퓨터 바이러스
에 대한 것을 제외하면 약 30가지 정도의 제한된 범위 내에서 반복되고 있다
는 사실을 발견할 수 있었다. 즉, 여러 사람들이 번갈아 가면서 동일한 질문
을 매일 하는 셈이다. 따라서 이러한 공통적인 질문들에 대해서는 모범답안
(?)을 만들어 일반 사용자들에게 알려야 할 필요성을 느끼게 되었다. 이 글은
94년 한 해동안 받은 컴퓨터 바이러스에 대한 질문들을 내용별로 분류하여,
대답 및 해결책들을 설명한 것이다. 컴퓨터 바이러스에 대한 정확한 정보의
부재로 인해 겪게 되는 어려움을 조금이라도 줄일 수 있는 계기가 되길 바란
다.
-----------------------
컴퓨터 바이러스의 개념
-----------------------
1. 컴퓨터 바이러스란 무엇인가?
컴퓨터 바이러스에 대해서 아직도 잘못된 개념을 가지고 있는 사람은 초보
자 뿐만 아니다. 컴퓨터를 오래 사용한 사람들 가운데도 의외로 많다. 컴퓨터
바이러스가 처음 발견된 초창기만 해도 컴퓨터 바이러스를 잡는다고 컴퓨터에
약을 뿌리는 웃지 못할 일도 있었고, 미켈란젤로 바이러스가 활동하는 날이라
고 관공서에서 컴퓨터들의 전원을 아예 내려버린 기막힌 일도 있었다. 조금씩
나아지고는 있지만 아직도 컴퓨터 바이러스를 '컴퓨터 기계 자체에 서식하며
전원을 꺼도 살아남고, 이것이 디스켓에 묻어서 다른 컴퓨터에 옮는 것'이라
고 오해하는 사람들이 있어서 도저히 대화(?)가 되지 않는 경우도 있다.
컴퓨터 바이러스란 살아있는 바이러스가 아니라 프로그램의 일종이며, 사
용자 몰래 자기 자신을 다른 프로그램에 복사하는 특징을 가진다. 살아있는 바
이러스가 유전 인자를 가지고 자기 자신을 복제하는 명령어를 가지고 있다고
해서 그러한 이름이 붙여진 것이지, 살아있는 바이러스와 직접 관계가 있는
것은 아니다.
컴퓨터 바이러스는 자기 복사 활동 이외에도 부작용(side effect)이 있다.
즉, 화면에 이상한 말을 출력한다던가 파일을 지워버리거나 하드디스크를 못
쓰게 만드는 일을 한다. 이것은 마치 생물학적인 감기 바이러스가 인체에서
증식만 하는 것이 아니라 감기라는 병을 일으키는 것과 유사하다. 컴퓨터 바
이러스가 사용자들의 경계 대상이 되는 이유도 바로 이러한 부작용때문이다.
2. 자료파일(data file)에도 컴퓨터 바이러스가 감염될 수 있는가?
자료 파일에도 컴퓨터 바이러스가 감염될 수 있다. 그러나 감염된 자료
파일은 실행되지 않기 때문에 다른 프로그램이나 자료 파일들을 다시 감염시
킬 수는 없다. 대신 자료 파일은 감염되면서 일부 자료들이 파괴된다. 따라서
자료 파일은 컴퓨터 바이러스에 감염된다기 보다는 파괴되어 버린다는 표현이
보다 정확할 것이다.
3.CMOS RAM 이나 ROM에도 컴퓨터 바이러스가 들어갈 수 있는가?
94년 4월에 발견된 CMOS 파괴 바이러스(V3 최신버전에서는 안티 CMOS 바
이
러스라고 이름이 바뀌었다)는 많은 이용자들에게 피해를 주었다. 또한 이름때
문에 바이러스가 CMOS RAM에 들어간다고 잘못 알고 있는 사람들도 적지 않다.
CMOS RAM 은 AT이상의 IBM-PC 호환기종에서 시스템에 대한 정보를 저
장하
는데 사용하는 64 바이트 크기의 자료영역(data area)으로, 컴퓨터의 전원을
끄더라도 자료를 계속 보관할 수 있는 곳이다. 한마디로 컴퓨터 바이러스는
이 영역에 감염될 수는 없다. 그 이유는 컴퓨터 바이러스가 존재하기에는 이
영역의 크기가 64바이트로 너무 작으며, 만약 감염될 수 있다 해도 이 영역
에 존재하는 프로그램을 실행시킬 수 없기 때문이다.
CMOS 파괴 바이러스(Anti CMOS바이러스)는 CMOS RAM에 들어가는 것
이 아
니라 CMOS RAM의 일부 정보를 변형시키기 때문에 붙여진 이름이다.
또한 ROM의 내용을 변형시키거나 감염되는 컴퓨터 바이러스도 없다. 단, ROM
을 제작할 때 의도적으로 컴퓨터 바이러스나 트로이 목마 프로그램을 집어넣
는 경우에는 ROM에 존재할 수도 있다. 실제로 지난해말 외국에서 이러한 일이
발생한 적이 있었다.
4. 컴퓨터 하드웨어에 물리적인 손상을 입히는 컴퓨터 바이러스가 있는가?
컴퓨터 바이러스는 소프트웨어의 일종이기 때문에, 소프트웨어적으로 가능
한 일만 할 수 있다. 즉, 프로그램과 자료들을 지우거나 하드디스크를 인식
하지 못하게 만드는 일은 가능해도 컴퓨터의 기억 장치에 물리적인 손상을 입
히거나 하드디스크를 물리적으로 파괴할 수는 없다. 강조하건데, 컴퓨터 바이
러스는 소프트웨어의 일종이므로 컴퓨터 바이러스에 대해서 너무 미신적으로
두려워하거나 근거없는 소문에 현혹되지 않도록 한다.
5. '13일의 금요일' 바이러스는 13일의 금요일에만 감염되는가?
13일의 금요일 바이러스는 예루살렘 바이러스와 같은 바이러스이다. 13일
의 금요일 바이러스라고 이름이 붙은 이유는, 13일의 금요일이 되면 실행되는
프로그램들을 지워버리는 특징을 가지고 있기 때문이다. 그러나 다른 프로그램
들을 감염시키는 것은 오히려 13일의 금요일을 제외한 모든 날에 이루어진다.
13일의 금요일 바이러스라고 해서 13일의 금요일만 주의하면 된다는 생각은
잘못됐다.
6.'미켈란젤로 바이러스'는 3월 6일에 하드디스크의 내용을 모두 지워버린
다고 하는데, 그러면 3월 6일에만 컴퓨터를 사용하지 않으면 피해가 없는
가?
미켈란젤로 바이러스는 3월 6일을 제외한 모든 날에는 다름 컴퓨터를 감
염시키다가 3월 6일에 하드디스크의 내용을 지워버리는 부트 바이러스이다. 그
러나 미켈란젤로 바이러스는 컴퓨터의 내장 시계가 잘못 맞추어져 있으면 다
른 날인데도 3월 6일로 판단해 하드디스크의 내용을 지워버릴 수 있다.
또한 많은 컴퓨터 바이러스들이 3월 6일 이외의 다른 날에 파괴 활동을 하
므로 3월 6일에 컴퓨터 바이러스에 의한 피해를 막을 수 없다. 컴퓨터 바이러
스에 피해를 입지 않기 위해서는 특정 날짜에 컴퓨터를 사용하지 않는 소극
적인 대책보다는 백신 프로그램을 사용하는 보다 근본인 대책이 필요하다.
7. 백신 프로그램만 사용하면 컴퓨터 바이러스에 대해서 걱정하지 않아도 되는
가?
백신 프로그램이란 사용자들이 컴퓨터 바이러스에 대처할 수 있도록 도와주
는 한 가지 도구에 불과하며, 나름대로의 한계점을 가지고 있는 프로그램이다.
그러나 이 한계점은 사용자의 노력과
주의로 어느 정도 극복될 수 있다.
백신 프로그램은 지금까지 발견된 컴퓨터 바이러스에 대해서는 진단 및 치
료가 가능하지만 새롭게 만들어진 컴퓨터 바이러스에 대해서는 퇴치할 수 있는
새로운 버전이 만들어지기 전에는 아무런 효력이 없다. 마치 의사가 실제 백신
을 환자에게 주사하기 전에 이 백신이 어떠한 병을 예방할 수 있는지를 정확하
게 파악해야 하며, 오래되어 부패 염려가 있는 백신의 사용을 피하고, 피부 부
위를 소독한 다음에 주사를 하는 것과 유사하다. 즉, 백신 프로그램의 한계점
을 파악하고 최신 버전을 올바로 사용하는 것은 사용자의 목이다.
이러한 한계점을 극복하기 위해서는 사용자의 입장에서 컴퓨터 바이러스에
대한 예방법을 충실히 지키고, 2∼3개 정도의 최신 버전의 백신 프로그램을 같
이 사용하는 것이 좋다.
8. 백신으로 치료한 다음에 프로그램이 실행되지 않는다.
일부 EXE 파일들은 치료 후에 실행 되지 않을 수 있다. 컴퓨터 바이러스가
EXE파일에 감염될 때는 EXE파일의 선두영역(header)에 있는 정보를 이용하여
프로그램이 끝난 바로 다음에 컴퓨터
바이러스를 위치시킨다.
그러나 일부 EXE파일, 특히 내부에 오버레이를 가지고 있는 파일은 선두영
역의 내용이 정확하지 않은 경우가 있으며, 이러한 파일에 컴퓨터 바이러스가
감염되면 원래의 파일이 파괴되어 버린다. 따라서 이러한 파일은 백신으로 바
이러스가 치료된 다음에도 프로그램이 실행되지 않는다.일반적으로 컴퓨터 바
이러스에 감염된 후 실행되지 않는 프로그램은 치료 후에도 실행되지 않는 것
이 보통이다. 이러한 프로그램들은 다시 복사해서 사용하는 것이 바람직하다.
9. 백신 프로그램으로 치료를 했음에도 불구하고 자꾸 같은 컴퓨터 바이러스가
재발한다.
만약 치료한 다음에도 계속 같은 컴퓨터 바이러스가 재발한다면 어디엔가
컴퓨터 바이러스가 숨어있는 것으로 판단할 수 있으며, 이 경우에는 다음과 같
은 순서로 검사한다.
첫째, V3나 SCAN에서 /A 옵션을 사용해서 다시 검사한다. /A 옵션은 'ALL'
을 뜻하는 것으로, 모든 파일들을 검사하라는 명령이다. V3나 SCAN은 아무 지
정도 하지 않으면 일반적인 실행 파일과 오버레이 파일만을 검사하기 때문에,
특수한 확장자(extension)를 가진 오버레이 파일에 컴퓨터 바이러스가 숨어 있
는 경우에는 찾아내지 못한다. 따라서 먼저 /A 옵션을 사용해서 모든 파일들을
다시 검사하는 것이 좋
둘째, 모든 플로피디스크를 검사한다. 보통 하드디스크 검사는 열심히 하면
서도 플로피디스크 검사는 소홀한 경우가 많다. 이때 하드디스크를 치료하더라
도 플로피디스크에서 계속 컴퓨터 바이러스가 옮겨올 수 있다. 특히 학교나 회
사에서 컴퓨터 바이러스가 재발할 경우는 집에서 사용하는 플로피디스크까지
모두 수거해 검사하도록 한다.
셋째, LZEXE, PKLITE, DIET 등의 실행 파일 압축 프로그램으로 압축된 실행
파일 내부에 컴퓨터 바이러스가 존재할 수 있다. 위의 과정들을 거친 다음에도
컴퓨터 바이러스를 찾아내지 못한다면 압축된 실행 파일들을 압축된 방식에 따
라 UNLZEXE, PKLITE의 -x 옵션이나 DIET의 -ra 옵션으로 푼 다음에 검사해본
다.
넷째, 컴퓨터 바이러스를 감염시킬 목적으로 제작된 트로이 목마 프로그램
이 존재할 가능성이 있다. 트로이 목마 프로그램은 컴퓨터 바이러스를 가지고
있지만 백신 프로그램으로는 진단되지 않도록 만들어진 경우가 있다. 이러한
프로그램은 직접 찾기는 매우 어려우므로,'플루샷 플러스'등의 불특정 컴퓨터
바이러스 예방 프로그램을 먼저 실행시킨 다음에 이상한 행동을 보이는 프로그
램을 검사해 보는 방법을 사용해야 한다.
만약에 위의 네 가지 가능성들을 모두 배제한 후에도 계속 동일한 컴퓨터
바이러스가 나타난다면 필자의 연락처로 문의를 한다.
10. 백신 프로그램이 컴퓨터 바이러스를 진단하고 치료하는 원리는 무엇인가?
백신 프로그램에서 컴퓨터 바이러스를 진단하는 방법은 간단하다. 사람들은
각자에게 독특한 지문이 있다. 마찬가지로 컴퓨터 바이러스들도 프로그램이기
때문에 내부에 독특한 문자열(string)을 가질 수 있다. 백신 프로그램들은 컴
퓨터 바이러스의 독특한 문자열들을 가지고 있으면서 검사하는 파일 내부에 컴
퓨터 바이러스의 문자열들이 존재하는지를 비교한다.
치료 방법 또한 간단하다. 컴퓨터 바이러스는 정상적인 프로그램을 변형시
켜서 자기 자신을 복사하는데, 백신 프로그램에서는 컴퓨터 바이러스가 변형해
놓은것을 반대로 바꾸어서 원래대로 복구시켜 준다. 백신 프로그램의 제작에
관심이 있는 사람들은 필자가 조만간 출간할 백신 프로그램의 제작기법에 대한
책을 참고한다.
-----------------------
백신 프로그램의 오진들
-----------------------
11. V3RES가 기억장소에 상주할 때면 SCAN에서 'EDV 바이러스'에 감염되었다
고
진단한다. V3RES가 EDV 바이러스에 감염된 것인가?
94년에 가장 많았던 질문 중의 하나이다. V3RES는 EDV 바이러스 진단을 위
해서 EDV 바이러스의 일부분을 내부에 가지고 있는데, SCAN이 기억장소를 검사
하는 과정에서 기억장소에 상주하고 있는 V3RES의 내부를 검사해서 EDV 바이러
스가 존재한다고 잘못 진단한다.
이것은 SCAN의 진단이 잘못된 것이기 때문에 걱정할 필요는 없다. 또한
V3RES 버전 193 이상에서는 사용자들의 혼란을 막지 위해서 이런 일이 발생할
지 않도록 해놓았다. 최신 버전을 사용하면 더 이상 EDV 바이러스와 관련된 문
제로 곤란을 겪지 않을 것이다.
12. SCAN을 사용하면 기억장소가 '크리티컬 바이러스'(critical virus)에 감염
되었다고 나온다.
이 질문은 SCAN에서 출력하는 영어문장을 잘못 해석했기 때문에 빚어진 문
제이다. 대부분의 사람들은 아마 화면에 'VIRUS'라는 단어가 출력되면 무조건
겁부터 먹는다. SCAN을 처음 실행시키면 기억장소를 검사하면서 항상
'Scanning memory for critical virus'라는 말이 출력된다. 이 말은 크리티컬
바이러스에 기억장소가 감염되었다는 뜻이 아니라, 기억장소에 존재할지도 모
르는 치명적인 바이러스(critical virus)에 대한 검사를 시작한다는 뜻이다.
13. CPAV(Central Point Anti-Virus)나 MSAV(Micro Soft Anti-Virus)등 외국
백신들을 사용했더니 일부 프로그램들이 '박시나 로더'(Vacsina loader) 바이
러 스에 감염되었다고 나온다.
일부 외국산 백신 프로그램들에서 진단하는 박시나 로더는 컴퓨터 바이러스
가 아니다. 박시나 바이러스(Vacsina virus)는 EXE 파일에 감염될 때 두 단계
를 거친다. 처음 EXE 파일이 실행되면 EXE파일을 내부적으로 COM 파일 형식
으
로 바꾼다. 두번째로 EXE 파일이 실행될 때 박시나 바이러스 자체가 감염된다.
처음에 EXE 파일이 내부적으로 COM 파일 형식으로 바뀐 상태는 프로그램
의
동작에는 아무런 이상도 없으며 컴퓨터 바이러스도 아니므로 걱정할 필요가 없
다. 외국산 백신 프로그램의 사용시
박시나 로더라고 진단하는 것이 바로 이 단계이다. 박시나 바이러스 자체가 감
염된 경우는 V3에서 완벽하게 진단 및 치료가 가능하다. 즉 V3에서 진단되지
않고 다른 백신에서만 검색되는 박시
나 바이러스에 대해서는 전혀 걱정하지 않아도 된다.
14. AVSCAN이라는 외국산 백신 프로그램을 사용했더니 일부의 프로그램들이
'CPAV/TNT 바이러스'에 감염되었다고 나온다.
이 경우도 컴퓨터 바이러스가 아니다. CPAV(Central Point Anti-Virus)나
TNT라는 백신 프로그램에서는 면역(immunization) 기능이 있다. 이 기능을 사
용하면 원래의 파일 뒤에 변형될 때 경고의 말을 출력하는 프로그램이 붙는다.
이것을 AVSCAN에서는 CPAV/TNT 바이러스라고 진단하는 것이다.
즉, 이러한 메시지가 출력되었다 해도 컴퓨터 바이러스는 아니므로 안심하
고 사용하기 바란다. 만약 성가시게 느껴진다면 CPAV나 TNT에서 면역 제거
(Deimmunization) 기능을 사용, 면역 기능을 제거하면 AVSCAN에서도 더 이상
이러한 진단을 하지 않는다.
15. 외국산 백신 프로그램을 사용했더니 기억장소에 컴퓨터 바이러스가 없다고
나온다. 그러나 디스크에서는 컴퓨터 바이러스를 발견할 수 없었다.
기억장소에서만 컴퓨터 바이러스가 발견되는 경우는 대부분 백신 프로그램
의 오진일 경우가 많다. 이러한 증상은 한 백신 프로그램을 실행시킨 다음에
다른 백신 프로그램을 실행시켰을때 흔히 발생한다. 백신 프로그램은 컴퓨터
바이러스의 진단을 위해서 그 일부를 내부에 가지고 있는데, 백신 프로그램의
실행이 종료된 다음에도 기억장소에 이러한 부분이 남아 있다가 다른 백신프로
그램을 실행시키면 이를 컴퓨터 바이러스로 오인한다. 확인하는 방법은 컴퓨터
를 일단 껏다가 다시 켠 다음에 바로 기억장소에서 컴퓨터 바이러스가 있다고
진단했던 백신 프로그램을 실행시켜 본다. 이때 컴퓨터 바이러스가 발견되지
않는다면 앞에서 설명했던 경우이기 때문에 안심하고 사용해도 되며, 만약에
계속 같은 컴퓨터 바이러스가 발견된다면 필자에게 연락을 한다.
16. V3버전 142를 용해서 'Eye Focus 바이러스'를 진단했지만 치료가 안
된
다.
V3 버전 142는 필자가 만든 것이 아닌 일종의 해커 버전이다. 또한 Eye
Focus 바이러스라는 것도 지금까지 발견된 적이 없는 바이러스이다. V3 버전
142는 사용하지 말고 최신 버전을 구해서 사용하도록 한다.
17. V3B 나 V3RES를 실행시켰더니 'No (known) computer virus'라는 말이 출
력된다. 신종 바이러스에 감염된 것인가?
이 질문도 화면에 'VIRUS'라는 단어 출력되면 무조건 겁부터 집어먹기 때문
에 나온 것이다. 이 말은 지금까지 알려진 컴퓨터 바이러스는 발견되지 않았다
는 뜻이다. 백신 프로그램은 지금까지 알려진 컴퓨터 바이러스(known computer
virus)에 대해서만 검사를 할 수 있기 때문에, 지금까지 알려진 컴퓨터 바이러
스가 없으면 'No (known) computer virus'라는 말을 출력한다. 그전에 알려진
컴퓨터 바이러스가 발견되지 않으면 '안전함(safe)'이라는 말을 출력했지만 신
종 컴퓨터 바이러스가 존재할 수도 있어 지금까지 알려진 컴퓨터 바이러스가
없다는 말로 대체했다.
18.도스 나들이 상태에서 V3RES를 실행시켰더니 '물고기 부트 바이러스
'(Fish_B oot virus)가 진단되었다.
우선 V3RES는 예방 프로그램이기 때문에 AUTOEXEC.BAT에서 실행시키는
것이
지, 도스 나들이 상태에서 실행하면 안된다. 또 원칙적으로 도스 나들이 상태
에서 기억장소에 상주하는 프로그램을 실행시키면 안된다.
물고기 부트 바이러스(Fish_Boot virus)는 다른 부트 바이러스처럼 일반 기
억장소의 최상위에 상주하지 않고 기억 장소에 중간에 상주하는 특징을 가지고
있다. 따라서 V3RES는 물고기 부트 바이러스를 검사하기 위해서 기억장소 중간
부터 검사를 하는 방법을 사용한다. 그러나 도스 나들이 상태에서 V3RES를 실
행시키면 기억장소 중간 이상의 위치에 V3RES 프로그램이 상주하면서, 자기 자
신이 가지고 있는 물고기 부트 바이러스의 일부분을 바이러스라고 진단한다.
또한 물고기 부트 바이러스는 부트 바이러스의 치료용인 V3B로 완벽하게 진
단과 치료가 된다. 따라서 V3B로 진단해서 이상이 없는 경우에는 안심하고 사
용하기 바라며, 다음 버전의 V3RES에서는 사용자들의 혼란을 막기 위해서 도스
나들이 상태에서 실행시키더라도 그러한 말이 출력되지 않게 하겠다.
-----------------------------
외국산 백신 프로그램의 사용법
-----------------------------
19. 외국산 백신은 어떤 것들을 사용해야 하는가?
많은 사람들이 고민하고 있는 부분이다. 백신의 특성상 바이러스를 완벽하
게 퇴치하기란 불가능한 현실에서 V3만을 의존할 수 없다. 백신들의 특성상 바
이러스가 출현하고, 해당 바이러스 샘플이 백신 제작자들에게 들어가야만 그에
대응하는 백신이 나올 수밖에 없는 현실상 외국의 통신망까지 통해 무차별적으
로 쏟아져 들어오는 컴퓨터 바이러스에 완벽하게 대항한다는 것은 사실 역부족
이다.
외국산 백신 프로그램중 가장 대표적인 것으로 SCAN과 CLEAN을 들 수
있
다.SCAN, CLEAN은 작년 하반기에 버전 117을 끝으로 이 둘이 통합된 SCAN 버
전
2.x로 바뀌었다. 그러나 SCAN 버전 2.x는 예전의 버전 117보다 검색, 치료할
수 있는 컴퓨터 바이러스의 숫자가 오히려 줄어들었고 오진도 많아졌다는 것이
일반적인 평가이다. 이에 따라 아직은 SCAN, CLEAN 버전 117을 쓰도록 한다.
새롭게 등장한 백신 중에서 권하고 싶은 것으로 TBAV와 F-PROT이 있다.
TBAV는 네델란드에서 만든 셰어웨어 백신 프로그램으로, 부트 섹터나 파일
에 조금이라도 의심이 가는 부분이 발견되면 즉각 'might be an unknown
virus'(신종바이러스에 감염되었을 가능성이 있습니다)라는 말을 출력하여 사
용자들로 하여금 주의를 촉구한다. 물론 그런 말을 출력한다고 모두 컴퓨터 바
이러스는 아니지만 의심가는 부분은 예민하게 검사해주는 백신 프로그램이다.
F-PROT는 아이슬랜드의 Fridrick Skulason이 만든 셰어웨어 백신 프로그램
으로, 변종 바이러스를 포함해서 4,000가지가 넘는 컴퓨터 바이러스들을 검색,
치료한다. 외국의 한 컴퓨터 바이러스 관련단체에서 실시한 시험에서 SCAN을
누르고 검색율 부분에서 1위를 차지한 적도 있다.
도스에 포함되어 있는 MSAV를 비롯하여 대표적인 상업용 백신 프로그램인
CPAV(Central Point Anti-Virus)와 NAV(North Anti-Virus)는 외국통신망의 해
당 포럼에 가서 업데이트(UPDATE.DAT) 파일을 매번 받아 버전업시켜야 한다.
그렇지 않으면 신종 컴퓨터 바이러스를 전혀 진단할 수 없다. 또한 VIRX 와
TNT 백신은 사용하지 않도록 한다. 오진율이 높기 때문에 사용자들의 혼란을
초래하는 경우가 많고 치료 기능이 없기 때문이다.
20. SCAN에서 'GenP, GenB 바이러스'라고 진단하며, CPAV에서 'Viral Code B'
에 감염되었다고 진단한다.
SCAN에서는 아직 알려지지 않은 부트 바이러스를 GenB. GenP등으로 진단한
다. 즉, GenB나 GenP는 특정한 컴퓨터 바이러스의 이름이 아니다. CPAV에서
진단하는 Viral Code B도 같은 의미이다. 이러한 말이 출력되었을 때는 V3의
부트 바이러스 전용 백신 프로그램인 V3B를 사용해서 진단해본다. 만약 V3B로
진단이 되지 않는다면 새로운 부트 바이러스일 가능성이 높으므로 다른 사람들
의 피해를 막는다는 의미에서 필자에게 연락한다.
------------
V3의 사용법
------------
21. V3의 사용법은?
해당 V3*.ZIP에 포함되어 있는 *.DOC 파일을 읽으면 간단하게 알 수 있는
사용법들을 의외로 많은 사람들이 모르고 있다. V3.COM, V3-KS.COM,
V3-TG.COM은 치료용 백신 프로그램으로 각각 영문, 완성형 한글, 조합형 한글
버전이지만 출력되는 언어만 다를 뿐 기능은 동일하다.
사용법은'V3 [드라이브] [디렉토리] [파일이름]'을 입력하면 된다. 드라이
브만 지정했을 때는 그 드라이브의 모든 파일들을 검사하고, 디렉토리를 지정
했을 때는 그 디렉토리의 모든 파일들을 검사하며, 파일을 지정했을 때는 그
파일만 검사한다. 그 밖에도 몇가지 옵션이 있으며 V3만 실행키면시 옵션에 대
한 간단한 설명을 볼 수 있다.
V3B.EXE는 부트 바이러스 전용 백신 프로그램이다. 부트 바이러스들만 치료
/검색하며 V3.COM과는 달리 한 프로그램 내에서 영문, 완성형 한글, 조합형 한
글을 모두 가지고 있으면서 자동으로 시스템에 맞는 언어 사용한다. 차후에
는 V3도 이러한 모습을 갖추게 될 것이다. 한편, V3RES.EXE는 예방용 백신 프
로그램이다. AUTOEXEC.BAT에 넣어두고 컴퓨터를 켰을 때 자동적으로 실행될
수
있게 해두면 지금까지 알려진 컴퓨터 바이러스들을 가장 간단하고 확실하게 예
방 할 수 있다.
22. V3의 최신 버전을 구하는 방법은?
V3의 최신 버전은 필자가 하이텔, 천리안, 나우누리, 포스서브의 공개자료
실에 직접 올리고 있다. 따라서 컴퓨터 통신을 하는 사람들은 공개자료실에 필
자가 직접 올린 것을 받아서 사용한다. 공개자료실에 있는 것보다 버전이 높은
것이 다른 동우회 자료실이나 사설 BBS에 있다면 해커 버전일 확률이 높으므로
사용하지 않도록 한다.
불에 데어본 사람만이 불의 무서움을 알듯이, 컴퓨터 바이러스때문에 자신
만의 소중한 데이터를 한순간에 날려본 쓰라린 경험이 있는 사람만이 백신 프
로그램 최신 버전의 소중함을 알 것이다. 백신 프로그램은 언제나 최신 버전을
사용해야 한다는 것을 다시 한 번 강조한다.
23. V3를 사용하나 기억장소의 크기가 640KB보다 줄어든 것으로 나오면서 기
억 장소 검사에서 '알려지지 않은 바이러스에 감염되었을 가능성이 있다
'(probably infected with unknown computer virus)고 한다. 그 대책은?
원칙적으로 컴퓨터 일반 기억장소는 640KB의 크기를 가진다. 일반 기억장소
의 크기가 줄어드는 현상은 부트 바이러스일 경우도 있지만 컴퓨터 자체에서
정상으로 사용하는 경우도 많다. 일부 BIOS를 사용하는 컴퓨터는 639로 나오
며, 요즈음 많이 사용하는 펜티엄 PCI 기종은 기본 메모리가 637로 나오기도
한다.
기억장소가 줄어든 것이 정상적인 것인지, 아니면 컴퓨터 바이러스에 의한
것인지를 확인해보는 방법은 감염되지 않은 깨끗한 도스 디스켓으로 부팅한 다
음에 기억장소의 크기를 검사하면 된다. 깨끗한 도스 디스켓으로 부팅한 다음
에도 기억장소의 크기가 하드디스크로 부팅했을때와 동일하다면, 컴퓨터 자체
에서 정상으로 기억장소의 일부를 사용하는 경우이므로 걱정하지 않아도 된다.
물론 다른 경우에는 부트 바이러스일 가능성이 높다. 부트 바이러스일 경우
라면 최신 버전의 V3B(부트 바이러스 전용 백신)를 먼저 사용해보고, V3B로도
진단이 안될 때는 28번의 질문에 대한 답을 참고해서 필자에게 연락한다. 신종
부트 바이러스로 판명나면 샘플을 받는 즉시 하루 내로 최신 버전의 V3B를 만
들어 보내고 있다.
24. 깨끗한 도스 디스켓이란 무엇인가?
깨끗한 도스 디스켓이란 컴퓨터 바이러스에 감염되지 않았을 때 만든 부팅
디스켓을 말한다. FORMAT A: /S명령을 사용하면 포맷하면서 도스 프로그램을
디스켓에 동시에 저장할 수 있으며, 이미 포맷된 디스켓에서는 SYS A: 명령으
로 간단하게 도스 프록스램을 옮길 수 있다. 그 밖에도 CONFIG.SYS 와
AUTOEXEC.BAT, 윈도우의 *.INI 파일들, CMOS RAM의 내용들도 백업을 해두면
만
약의 사태에 유용하게 사용할 수 있다. 도스 디스켓에는 반드시 쓰기방지 탭
(write protect tab)을 붙여 둔다. 쓰기방지 탭을 붙인 디스켓은 절대로 컴퓨
터 바이러스에 감염되지 않는다.
이렇게 만든 깨끗한 도스 디스켓은 컴퓨터 바이러스가 의심될 때 검사용으
로 사용할 수 있을 뿐만 아니라 하드디스크가 여러가지 원인으로 부팅되지 않
을 때 A 드라이브로 부팅해서 하드디스크를 복구시킬 수도 있다.
도스 디스켓은 컴퓨터 사용자라면 필수적으로 만들어 두어야 한다. 만약
아직도 만들어 놓지 않은 사람이 있다면 당장 이 글을 읽기를 중단하고 만들길
권한다.
25. V3를 실행시키니 '알려지지 않은 바이러스에 감염되었을 가능성이 있습니
다 (probably infected with unknown computer virus)'라고 출력된다. 어떻게
해야 하는가?
위의 말은 다음과 같은 두 가지 경우에 출력된다.
첫번째는 일반 기억장소의 크기가 감소하면서 기억장소 검사 과정에서 나타
난다. 이 경우 23번을 참고한다.
두번째는 프로그램(V3.COM, V3RES.EXE 등) 자체가 변형되었을 때이다. 이때
는 제작자에게 보내달라는(Please send this program to copyrighter)말도 함
께 출력된다. 이러한 경우가 발생할 때는 신종 컴퓨터 바이러스에 감염되었을
가능성이 높으므로 그런 말이 출력되는 V3 프로그램 자체를 필자에게 보낸다.
26. V3에서는 'Dir∥바이러스'가 치료되지 않는가?
V3에는 Dir∥바이러스의 진단 및 치료 기능이 있다. 그러나 Dir∥바이러스
는 기억장소에 존재할때 백신 프로그램을 실행시키면 백신 프로그램이 감염되
어 실행되지 않는다. 일단 감염된 백신 브로그램은 절대로 사용하면 안된다.
Dir∥바이러스를 치료하기 위해서는 우선 감염되지 않는 것이 확실한 도스
디스켓과 V3를 새로 복사해와야 한다. 이 도스 디스켓으로 부팅시킨 후 가져온
V3로 고치면 치료가 된다.단, V3는 치료할 수 있는 것은 사용자들에게 물어보
지 않고 자동으로 치료하지만 당장 치료가 불가능한 것은 '지울까요?'라고 사
용자에게 물어본다. 이때 지우지 말고 한 번 더 깨끗한 도스 디스켓으로 부팅
한 다음에도 '지울까요?'라는 말이 출력되면 그 때는 고칠 방법이 없다는 뜻이
니 Y를 눌러서 삭제한다.
27. V3의 향후 계획은?
필자는 외국 유학을 앞두고 V3의 버전업 및 관련 업무들을 전담할 백신 연
구소의 설립을 추진하고 있다. 현재 대기업들의 도움을 받아서 비영리 법인 형
태를 만들려 하고 있으며, 이렇게 된다면 지금까지와 같이 계속 소프드웨어로
많은 사용자들에게 도움을 줄 수 있을 것이다.
현재로선 몇몇 대기업들이 영리상의 이유로 거절을 한 형편이어서 성사 여
부가 불투명하지만 만약 주식회사가 된다 할지라도 셰어웨어의 형태로 이 일을
유지해나갈 생각이다.백신 연구소가 설립되면 먼저 V3 와 V3RES의 전면 개정판
을 만들어 신종 바이러스들에 대해서는 신속하게 버전업을 해나갈 것이며, 윈
도우즈용과 LAN의 파일 서버용 버전을 만들어 발표할 계획이다.
그 밖에도 전용 전화 및 컴퓨터 통신망에 별도의 난을 만들어서 사용자들의
문의에 신속하고 정확한 해결책을 제공하고자 한다. 컴퓨터 바이러스 관련 단
기 교육과정도 개설할 예정이다.
---------------------
감염 표본의 수집 방법
---------------------
28. 부트 바이러스를 보내는 방법은?
파일 바이러스는 컴퓨터 통신의 편지 보내기로 쉽게 전송이 가능하다. 그러
나, 부트 바이러스는 파일 형태로 된 것이 아니기 때문에 통신망을 통해서 전
송하는데 어려움을 느끼는 사람들이 많다.
가장 손쉬운 방법은 감염된 디스켓 자체를 우편으로 필자에게 보내주는 것
이다. 그러나 다음의 萱? 이용하면 부트 바이러스도 컴퓨터 통신망을 통해
서 필자에게 보낼 수 있다. 감염된 부트 섹터의 영역을 파일로 만드는 방법은
다음과 같다.
1. 하드디스크의 감염을 플로피디스크로 옮기고, 플로피디스크에서 감염된 부
분을 채취하는 방법
1) 하드디스크로 부팅을 한다.
2) A 드라이브에 포맷된 디스크를 넣고 DIR 명령을 몇 번 실행한다.
3) 이 디스켓으로 부팅을 시켜서 기억장소의 크기가 준 것을 확인한
다.
4) 감염되지 않은 깨끗한 도스 디스켓(질문 24 참조)으로 부팅을 한
다.
5) A 드라이브에 감염시킨 디스켓을 넣고 도스의 DEBUG 프로그램을
실행시킨다.
A>DEBUG
-L 100 0 0 1 (B 드라이브의 경우는 : -L 100 1 0 1)
-RCX 200
-N BOOT (->생기게 될 파일 이름)
-W
-Q
2. 하드디스에서 직접 감염된 부분을 채취하는 방법
1) 감염되지 않은 깨끗한 도스 디스켓으로 부팅을 한다.
2) 노턴 유티리티의 DISKEDIT.EXE 또는 DE.EXE를 실행한다.
3) Tool 메뉴에서 Configuration을 선택하여 Read Only가 체크 안된
상태로 만든다.
4) Objet 메뉴에서 Partition table을 선택한다.
5) Tool 메뉴에서 Write object to를 선택하고, 다음 화면에서 to a
file을 선택하고, 파일 이름(MBS등)을 입력하면 파일이 만들어
진다.
6) Object 메뉴에서 Boot Record를 선택한다.
7) Tool 메뉴에서 Write object to 를 선택하고, 다음 화면에서 to
a file을 선택하고, 파일 이름(DBS등)을 입력하면 파일이 만들어
진다.
생성된 파일을 컴퓨터 통신을 통해서 필자에
게 보낸다. 통신망의 ID는 이 글의 마지막에 나와 있다.
------------------------
컴퓨터 바이러스의 예방법
------------------------
29. 파일의 속성(file attribute)을 읽기전용(read only)으로 만들어 놓으면
컴퓨터 바이러스에 감염되지 않는다는 말을 들었다. 사실인가?
일부의 파일 바이러스들은 일기전용 파일을 감염시킬 수 없지만, 대부분의
파일 바이러스들은 파일의 읽기전용 속성을 해제한 다음에 감염된다. 따라서
파일의 속성을 읽기전용으로 바꾸더라도 컴퓨터 바이러스의 예방에는 거의 도
움이 되지 않는다.
30. 컴퓨터 바이러스에 대한 예방법은?
컴퓨터 바이러스에 대해서 100% 안전할 수 있는 방법은 존재하지 않는다.
그러나 다음의 사항들만 잘 지킨다면 거의 대부분의 피해를 막을 수 있을 것이
다.
감염되지 않은것이 확인된 깨끗한 도스 디스켓에 쓰기방지 탭
(write-protect tab)를 붙여서 비상시 사용할 수 있도록 준비해 둔다.
2. 중요한 프로그램이나 자료는 항상 백업(backup)해놓는다.
3. 상업용 소프트웨어는 불법 복사를 하지 않고 정품만을 사용한다.
4. 셰어웨어나 공개 소프트웨어는 컴퓨터 전문가가 오랫동안 문제없이 사용하
고 있는 것을 복사해오거나, 통신을 통해서 받는 경우에는 등록된지 1주일
이상 경과했고 다른 사람들이 문제없이 사용하고 있는 것을 받는다.
5. 하드디스크가 없는 컴퓨터에서는 반드시 위에서 준비한 도스 디스켓으로 부
팅을 시키고, 하드디스크가 있는 컴퓨터에서는 반드시 하드디스크로 부팅을
시킨다.
6. 여러 사람이 사용하는 컴퓨터에서는 항상 전원을 끈 다음에 자신의 도스 디
스켓으로 부팅을 시킨다.
7. AUTOEXEC.BAT에서 최신 버전의 특정 컴퓨터 바이러스 예방 프로그램
(V3RES,
VSHILED등)과 디스크 시스템 영역 저장 프로그램(노턴 유틸리티의 IMAGE,
PC 툴즈의 MIRROR등)을 실행시켜 놓는다.
8. 새로운 프로그램을 사용할 때는 두 세개 정도의 최신 버전의 백신 프로그램
을 사용해서 검사 하고, 정기저으로 모든 디스크를 검사한다.
이상의 30가지 질문과 답을 잘 알아둔다면 대부분의 의문점들은 해결할 수
있을 것이다. 그 밖의 질문이 있거나 V3로 해결되지 않는 신종 컴퓨터 바이러
스를 발견한 사람은 컴퓨터 통신이나 우편으로 보내주면 가능한 한 빠른 시일
내에 답변하도록 하겠다. 문의를 할 때는 사용한 백신 프로그램의 이름, 버전
및 진단명, 이상 증세등을 자세하고 정확하게 알려주어야 빠른 시일 내에 답변
을 받을 수 있다.
특히 신종 컴퓨터 바이러스의 경우에는 샘플을 보내는 것이 본인 뿐만 아니
라 다른 많은 사용자들의 정신적, 물질적 피해까지 줄인다. 신종 컴퓨터 바이
러스임이 확인되면 컴퓨터 잡지에 분석기사를 쓰거나 단행본을 발간할 때 최초
발견자로 기록하도록 하겠다.
출처 : 정보보안의 최고의 실력자
메모 :