[3화] 1988년, 컴퓨터 바이러스를 만나다

요즘도 악성코드와 바이러스로 속썩는 분들 많이 계신가요?
컴퓨터의 기구한 역사와 함께해 온 바이러스를 처음 대면했던 그 시절, 우리가 대처했던 긴급구조 현장으로 함께 가시죠.

 

월간 마이크로소프트웨어
1988년 6월호입니다.

대구의 김경찬 계명대학교 교수가 보내온 경고문입니다. ⓒ 마이크로소프트웨어

 

경고문에서 알려주는 증상 내용을 보면,

1. COMMAND.COM에 감염되면 기존의 COMMAND.COM의 날짜를 부트할 때 입력된 날짜로 변경시킨다.

2. 만일 Write Protect Tab을 붙인 디스크가 있으면 갑자기 “WRITE PROTECT ERROR”를 경고하여 디스크로부터 Write Protect Tab을 떼도록 유도한다.

3. PCTOOLS의 MAP 기능으로 디스크를 조사하면 프로그램이 존재하는 마지막 Cluster 이후에 서너개의 Bad Cluster가 나타난다.

4. NU와 PCTOOLS의 Bit 에디터로 첫번째 부트 섹터를 살펴보면 (C)Brain의 바이러스에 관한 경고문이 들어있다.

우리나라에 주로 퍼진 (C)Brain의 대표적 증상

감염된 디스크를 사용하면 자동적으로 복제되고, 결국은 모든 디스크를 지워버려 “FILE NOT FOUND”로 만들어버렸다고 합니다. Norton 유틸리티나 PCTOOLS로도 복구가 불가능했다는 군요.

이 바이러스를 해부하여 강구했던 대책을 살펴보시죠.

해부

감염된 부트스트랩 로더를 16진수로 덤프한 화면입니다. ⓒ 마이크로소프트웨어

 

Welcome to the Dungeon © 1986 Brain.& Amjads (pvt) Ltd VIRUS_SHOE RECORD v9.0
Dedicated to the dynamic memories of millions of virus who are no longer with us today – Thanks GOODNESS!!
BEWARE OF THE er..VIRUS : \this program is catching program follows after these messeges.
부트로더에 새겨진 감염 생성자의 메시지

웰컴 투 더 던전. 과감한 시작이었네요.
그래도 다행히 디스크의 볼륨 라벨을 무조건 바꾼 영향으로 증상은 확실하게 눈에 드러났네요.

 

정상적으로 이뤄져야하는 과정중에 바이러스가 스며들어 중간에 자신의 프로그램을 메모리의 최상위 번지쪽에 올려두고 INT 13H(디스크 입출력) 부분을 가로채 디스크 입출력 작업 도중에 감염시키게 된다.

디스크 입출력 부분을 가로채 감염 시작

 

부산에서 제보된 바이러스에 의한 하소연들입니다. ⓒ 마이크로소프트웨어

 

치료

치료법은 간단하지만, 감염된 디스켓을 사용하면 모든 일이 허사가 되는군요. ⓒ 마이크로소프트웨어

 

감염되지 않은 도스의 부트스트랩 로더를 읽어들이고, 이걸 감염된 디스켓에 기록하여 전염성부터 제거하는 순서로 치료를 시작했습니다. 그 후, 흔적 제거를 위해 FAT에 불량섹터로 표시된 3072바이트를 정상적으로 돌리는 작업을 진행합니다.

 

노턴 유틸리티 4.0을 사용하는 경우, 불량클러스터에 ‘BAD’라고 표시된 부분을 ‘0’으로 고친다. 혹시 PCTOOLS를 사용하는 경우에는 ‘FF7’을 ‘000’으로 바꾸어야 한다. 그러나 이 작업은 생각보다 복잡하다.

주로 다른 바이러스 자료를 살펴보면 COMMAND.COM의 스택 부분에 등록되어 감염시키는 종류의 다른 바이러스도 많았었군요.

소거 방지 탭은 어떤 일이 있어도 떼지 맙시다. ⓒ 마이크로소프트웨어

 

유학생이 묻혀올 수도 있고 홍콩이나 대만에서 흘러들어 올 수도 있다는 대목이 시대상을 제대로 반영해주는 것 같습니다.

우선은 수동으로 바이러스를 치료하는 방법이 먼저 공개되었습니다. 만약 이를 자동으로 고쳐주는 프로그램으로 있었다면, 딱 백신이라 할 수 있겠죠?

마소의 편집부가 (C)Brain을 상세 분석하고 대처방안을 쉽게 정리할 수 있도록, 도와주신 두 분이 계십니다. 물론 그 두 분의 상세한 소스 분석은 월간 마이크로소프트웨어 1988년 7월호에 실렸습니다.

 

그 두 분을 소개합니다.

최철룡 – 부산 유일 컴퓨터 ⓒ 마이크로소프트웨어

안철수 – 서울의대 생리학 교실 ⓒ 마이크로소프트웨어

 

다들 예상하신 분들이신가요?

당시 마소 편집자의 덧붙임을 보면,

예방주사의 완성을 위해 멀리 부산에서 올라와 주신 최철용씨와 의과대에 계시면서 바쁜 틈을 내주신 안철수께 진심으로 감사드린다.
두분 모두 좋은 원고를 써주셨을 뿐 아니라, 접근 방법과 해결책에 있어서 분석적 방법과 현상학적 방법이라는 대조적인 접근을 보여줌으로써 이번 기획을 더욱 빛나게 해주셨다.
바이러스로부터 한시름 놓게 된 모든 마소의 독자들도 편집자 이상으로 고마워하리라 생각한다.
기사내용 발췌

이 두 분의 접근 방법은 정말 아카데믹하고 테크니컬 했었습니다.

5.25인치의 2면, 9섹터 디스크의 경우는 2섹터가 1클러스터에 대응합니다. ⓒ 마이크로소프트웨어

 

그들은 당시 사용하던 5.25인치 디스크를 기준으로 클러스터당 섹터를 계산하여 정상적인 디스크의 구조부터 파악했습니다.

도스 디스켓의 구조와 정상적인 도스 디스크의 FAT입니다. ⓒ 마이크로소프트웨어

 

그 후, 비교를 위한 (C)Brain 바이러스 동작 구조 분석을 했습니다.

바이러스 프로그램이 로딩되는 과정(640K 램일 경우)입니다. ⓒ 마이크로소프트웨어

 

분석을 끝낸 안철수씨의 맺는말을 보면,

컴퓨터 바이러스를 분석하면서 필자가 느낀 것은 이러한 프로그램을 만드는데 들인 노력을 왜 좀 더 좋은 쪽으로 사용하지 못했을까 하는 점이다. (C)Brain 같이 쉽게 발견 될 수 있고 신사적(?)인 바이러스가 먼저 사람들에게 알려진 것은 불행중 다행이라고 생각한다. (중략) 의학 분야에서의 생체 시뮬레이션이나, 컴퓨터 바이러스에 대해 관심이 있는 다른 의대 컴퓨터 서클들이 결성되어 많은 교류가 가능하게 되기를 희망한다.

두 분이 만드신 바이러스 퇴치 프로그램은 다음화에서 살펴보도록 하겠습니다.

* 2017년 1월중 발간을 목표로 제작중인 월간 마이크로소프트웨어의 특별호는 ‘인공지능’을 주제로 준비중입니다. 인공지능 이외에도 월단위 연재글이나 마소에 관한 조언 또는 기고하시고자 하는 주제가 있으시다면, 언제든지 메일로 연락주시면 최대한 참고하여 반영할 수 있도록 노력하겠습니다.