1. 소개
▲ CIH 바이러스의 제작자 천잉하오의 대학생 시절
진단명 Virus.Win9x.CIH. 1999년 4월 26일 전 세계의 수많은 PC를 파괴하면서 사람들에게 컴퓨터 바이러스가 얼마나 무서운지 인식시켜 준 바이러스다. 안철수의 증언에 따르면 저 바이러스 소식이 전해진 날이 대한민국 최초로 IT뉴스가 9시 뉴스데스크를 탄 날이라고 한다. 다만 실제로는 이전부터 뉴스데스크에 IT 뉴스가 등장했다. 대표적인 사례라 1995년에 쏟아진 Windows 95 출시 관련 뉴스들. 다만 악성코드 관련 뉴스 또는 IT 뉴스가 첫 꼭지로 대서특필된 것으로는 최초일 수 있다.
대만의 다통대학교(大同大學校) 학생이었던 천잉하오(陳盈豪)가 만든 바이러스로 IA-32 어셈블리어(Turbo Assembler)로 작성했다.
이 사건의 여파로 2000년 이후에 생산된 메인보드에는 BIOS 변조(또는 손상) 방지 기술이 적용되었다. 대부분의 기가바이트제 메인보드는 듀얼 BIOS 기술을 넣어서 BIOS 두 개가 모두 죽지 않는 이상 컴퓨터가 벽돌이 될 일이 없도록 설계되어 있다.
2. 명칭
이름인 " CIH 바이러스"는 제작자인 천잉하오(Chen Ing-hau)[1]가 본인의 이름 앞 글자를 따서 지었다. 보안업계에서 붙인 진단명은 "Virus.Win9x.CIH"다.CIH 바이러스가 작동하는 4월 26일은 체르노빌 원자력 발전소 폭발 사고가 일어난 날짜이기도 하다. 이로 인해 이 바이러스는 일명 "체르노빌 바이러스"(Chernobyl virus)라고도 불리며 한국에서는 이 별명으로 더 잘 알려져 있다. 물론 두 사건 간의 관계는 없다.[2][3]
한국에서는 생소하지만 영미권을 중심으로 "Spacefiller"라는 별명도 통용되는 편이다. 이는 CIH 바이러스의 특성과 연관되어 있는데 후술한다.
3. 증상
컴퓨터 바이러스 유튜버 danooct1의 CIH 바이러스 실행 영상[4]
가상 머신에서 실행한 결과. 참고로 알집 설치 파일은 CIH 바이러스에 감염된 상태다. 따라서 실행해서 설치를 진행하다가 블루스크린이 뜨거나 설치한 지 몇 초 지난 후 블루스크린이 뜨기도 한다.
바이러스에 감염된 상태에서 매년 4월 26일 Windows의 부팅이 완료되면 즉시 바이오스와 하드 디스크 드라이브의 Master Boot Record를 파괴한다. 따라서 컴퓨터 전원 스위치를 켰다 끄는 것을 아무리 반복해도 본체에는 전원 불만 올라오고 아무 일도 일어나지 않는다.
당시 유행하던 부팅 시 실행 바이러스는 끽해봐야 하드 디스크의 Master Boot Record이나 FAT 인덱스 등을 파괴하는 것이었기 때문에 하드 디스크를 넘어 메인보드 EEPROM 내부에 저장된 BIOS를 조작하는 이 바이러스는 그야말로 악몽이나 다름없었다.
이 바이러스는 컴퓨터 내부의 모든 실행 파일을 감염시키는데 감염된 파일의 용량이 KB 단위로 조금 커지는 기존 바이러스들과 달리 파일 속에서 빈 공간을 찾아 덮어쓰는 방식을 썼기 때문에 감염되어도 파일 용량이 같다.[5] 그러나 작업 관리자를 보면 바이러스가 실행되고 있다는 것을 알 수 있다. 그리고 감염이 완료된 실행 파일이 실행되면 CIH 바이러스가 같이 시작되며 그 날짜가 4월 26일이면 바이러스가 컴퓨터를 파괴한다.
기계어와 1:1 대응되는 어셈블리어 코드의 특성상, 꽤 많은 동작을 포함하고 있음에도 바이러스의 용량은 고작 1KB도 되지 않는다.
4. 특징
아래 서술한 항목의 경우를 제외하면 파일이 감염되어도 티가 전혀 나지 않기 때문에 당시 유명했던 주요 셰어웨어(MoviePlayer, Winamp 등)의 정식 배포판이 바이러스에 감염된 채로 통신망에 배포되어 수많은 PC를 감염시켰다. 한국에서도 교육용 프로그램이 바이러스에 감염된 채 CD에 수록되어 팔려나가 바이러스를 전파시켰다.하지만 몇 가지 버그가 있었다.
- Winzip Self-Extractor로 만든 실행 압축 파일이 감염된 경우, 이 파일을 실행하면 CRC 검사에서 오류 메시지를 내면서 압축 해제를 할 수 없다. 따라서 컴퓨터 사용자는 파일이 변조되었음을 알 수 있다. 이것을 알게 된 천잉하오는 Winzip Self-Extractor는 바이러스가 감염되지 않게 수정하였다.
- Internet Explorer에서 텍스트를 입력하는 폼이 포함되어 있을 경우 동작이 매우 느려진다.
- 스타크래프트에서 멀티플레이 시 네트워크 연결 방법 선택 화면이 매우 늦게 뜬다.[6]
윈도우 NT 계열에서는 감염되지 않는다. 첫 번째 이유는 이 바이러스의 파일 감염 방식에 있다. 윈도우 NT 시대를 맞이하면서 많은 실행 파일들이 빈 공간을 거의 만들지 않게 되어 파일 속에서 빈 공간을 찾아 감염시키는 방식이 통하지 않게 되었다.
두 번째 이유는 이 바이러스의 활동 방식에 있다. MS-DOS와 윈도우 9x/Me의 보안 취약점[7][8]을 악용해서 시스템을 장악함과 동시에 파일 감염, 시스템 파괴 활동을 일으켰는데 이 보안 취약점은 윈도우 NT 계열에서 해결되었다.
다만 이론적으로는 윈도우 2000, XP/서버 2003 등 윈도우 NT 계열에서 동작하는 변형을 만들려면 얼마든지 만들 수는 있었지만[9] 다행히 그런 바이러스는 출현하지 않았다. 마이크로소프트는 윈도우 8부터 커널 드라이버에 마이크로소프트의 전자 서명을 강제하기 시작했고[10] 메인보드 펌웨어도 BIOS가 아닌 UEFI 펌웨어를 사용[11]하기 때문에 더 이상 메인보드 펌웨어 파괴 바이러스를 걱정하지 않아도 된다.
하지만 안타깝게도 당시 대한민국에서 사용되던 운영체제는 서버나 워크스테이션이 아닌 이상[12] 대부분 MS-DOS, Windows 95 아니면 Windows 98이었다.
5. 대한민국에서의 피해
대한민국에는 1998년 6월에 상륙했다.보안업계에서는 CIH 바이러스의 위험성이 굉장히 크다는 점을 파악하고 언론에 그 위험성과 심각성을 경고했으나 언론은 가볍게 무시했다. 이는 안철수가 TV 뉴스에서도 언급한 사항이다.
그리고 1999년 4월 26일, 대재앙이 시작되었다. 관공서, 회사 사무실, 가정용 할 것 없이 약 30만 대의 컴퓨터가 먹통이 되었고, 기업에서는 사무실 PC가 죽어서 당장 업무를 할 수 없게 되었다. 보안업계와 데이터 복구 업체들 역시 폭발적으로 쏟아지는 복구 상담에 패닉에 빠졌다. BIOS도 파괴되었는데, 당시 BIOS를 복구하기 위해서는 감염된 메인보드의 BIOS 파일(또는 감염되지 않은 동일 메인보드)과 롬 라이터가 필요했다. 그러니 전문적인 장비와 기술이 없는 일반인들은 설령 원인을 확실하게 알아냈더라도 손쓸 도리가 없었다.
안철수연구소와 하우리소프트 등 당시 한국의 몇 안 되는 백신 소프트웨어 기업들은 이날부터 대전쟁을 치렀고 이들 회사의 인지도 및 주가는 폭등했다.
6. 천잉하오 체포, 이후...
천잉하오는 바이러스가 작동한 이후 얼마 뒤에 현지 경찰에 바로 체포됐다.[13] 백신 프로그램 값도 비싸면서 제대로 바이러스 치료를 해 주지 않았던 것에 대해 앙심을 품고 CIH 바이러스를 만들었다고 진술했다. 하지만 당시 대만에는 그의 행위를 범죄로 규정할 수 있는 법률이 없었기 때문에 그는 풀려나서 미국의 리눅스 관련 회사에 스카웃되어 엔지니어로 활동한 후 대만으로 돌아가 GIGABYTE에서 기술자로 활동하고 있다.[14]그리고 더 이상 바이러스를 만들지 않겠다며 반성하는 의미로 CIH 바이러스를 치료하는 백신 프로그램을 만들어 배포했으며 이후 CIH 외의 다른 바이러스도 치료하는 백신 프로그램도 만들어 배포했다.
7. 기타
한국의 힙합 뮤지션 주석도 CIH 바이러스의 피해자 중 한 명이다.컴필레이션 앨범 <검은 소리>와 <천리안 2000>에서 각각 ‘내가 누구지?’와 ‘비상’, ‘정상을 향한 독주’로 참여했던 그는 준비하던 앨범이 모두 CIH바이러스로 날아가는 바람에 힘든 데뷔전을 치러야 했다.
IZM 아티스트 소개 페이지 中
IZM 아티스트 소개 페이지 中
그는 2000년 11월 발매한 자신의 EP앨범 'Only The Strong Survive'의 수록곡 '파괴의 미학'의 가사에 CIH 바이러스(가사에서는 '체르노빌 부트 바이러스')로 인해서 모든 음악 작업 데이터를 잃어버린 경험을 담았다.
한편 건담의 모빌 슈트 조차도 견딜 수 없는 체르노빌 부트 바이러스로 말미암아 수포로 돌아간 내 모든 노력의 흔적 또 다시 경험하게 된 파괴의 공포 잃어버린 것에 대한 집착과 세포의 변이를 일으킬 정도로 격한 분노 부수어지고 또 무너지고 사라진다는 것에 대한 그 모든 공포는 만고불변으로 필시 인간이 가장 먼저 부정하고 싶은 사실들일 것이다
주석 - 파괴의 미학 가사 中
주석 - 파괴의 미학 가사 中
MEMZ 트로이 목마 악성코드를 만든 해커 Leurak이 CIH 바이러스와 비슷하게 실행하면 MBR를 변조하며 재부팅하면 BIOS를 파괴하는 증상을 가진 트로이 목마를 만들어 실험하는 영상을 올렸다.
8. 관련 자료
- CIH 바이러스 소스 코드: GitHub
[1]
한어병음 기준 Chén Yíngháo.
[2]
영어 위키백과 문서에 따르면 체르노빌이라는 별명은 사태 직후 붙은 것이 아니며 "CIH 바이러스"라는 명칭이 정착된 후 어느 순간부터 붙인 별명이라고 한다.
[3]
CIH 바이러스가 "CHI 바이러스"로 잘못 불리는 경우가 드물지 않는 이 바이러스의 별명인 체르노빌("CH"ernobyl)과 혼동한 것으로 보인다.
[4]
이 영상은 한국어 자막을 지원한다.
[5]
이 때문에 붙은 별명이 "Spacefiller"다. 한국에서는 생소한 명칭이겠지만 영미권에서는 많이 사용되는 별명이다.
[6]
게임 실행 및 플레이는 아무런 문제가 없었기에 대부분 대수롭지 않게 넘어갔다.
[7]
CIH 소스 코드 해당 부분을 읽어보면 알겠지만 CIH 바이러스는 CPU의 인터럽트 서술자 테이블(Interrupt Descriptor Table, IDT)을 수정해 인터럽트 발생 시 CIH 바이러스의 코드가 실행되게끔 해 커널 모드(Ring 0) 권한을 획득한다. 유저 모드(Ring 3) 프로그램들도 인터럽트 서술자 테이블 영역에 접근할 수 있었던 것이 MS-DOS와 Windows 9x/Me의 보안 취약점이다. 유저 모드 프로그램이 인터럽트 서술자 테이블에 접근해 수정하려고 시도할 때 운영 체제의 정상 동작은 오류 메시지를 보여준 후 실행을 중단시키는 것이다.
[8]
사실 DOS나 Windows 9x는 커널과 사용자 영역이 모호해서 벌어진 일이었다. 커널에서만 할 수 있는 일들을 사용자에서도 할 수 있었으니...
[9]
윈도우 2000/XP에 있었던 \\Device\\PhysicalMemory 보안 취약점, 윈도우 XP/서버 2003(SP1 출시 전까지)에 있었던 ZwSystemDebugControl 시스템 호출 보안 취약점 등으로 유저 모드 프로그램이 커널 모드(Ring 0) 권한을 획득하는 일은 누워서 떡 먹기였다. 게다가 커널 모드(Ring 0) 권한을 획득하는 데 굳이 보안 취약점을 이용할 필요도 없다. 누구나 커널 드라이버를 만들어 설치할 수 있었기 때문이었다.
[10]
마이크로소프트는 윈도우 8부터 인증되지 않은 커널 드라이버의 로드를 금지하도록 정책을 변경했다. 윈도우 XP 시절 루트킷(rootkit)이 활개를 쳤던 것과는 달리 루트킷이 거의 없는 이유가 바로 이것과 64비트 Windows부터 생긴 커널 패치 보호(Kernel Patch Protection) 기능 때문이다. 따라서 윈도우 8부터는 마이크로소프트의 전자 서명을 받지 못한 커널 드라이버를 강제로 설치하기 위해서는 UEFI 설정에 들어가서 Secure Boot를 끄고 부팅시킨 다음 명령 프롬프트에서 bcdedit 명령어로 디지털 서명을 감지하는 기능을 비활성화시키는 불편하고 복잡한 작업을 거쳐야 설치할 수 있다.
[11]
펌웨어 보안 수준이 대폭 향상되었다. 인텔이 2020년까지
CSM을 제거한 UEFI Class 3를 도입할 예정이라고 공언했고 호환성을 중요시해야 하는 서버나 산업용 PC를 제외하면 2019년부터 제작되는 대기업 완제품 데스크탑, 워크스테이션이나 노트북의 경우는 CSM 기능이 제거된 채로 제작되고 있다.
[12]
중/소규모는
Windows NT, 대규모는
UNIX 기반이었다.
[13]
바이러스 코드에 CIH Source : TTIT of TATUNG in Taiwan이라는 주석이 있으며 다통대학교에서도 우리 학교에서 이런 바이러스를 만들었다고 자체적으로 보도했다. 다통대학교도 CIH로 대재앙을 맞았기 때문에 매년 4월 26일을 기념한다고 한다.
[14]
상술했듯 GIGABYTE의 메인보드에는 바이오스가 정상적으로 작동하지 않을 때 자동으로 복구를 시도하는 듀얼 바이오스 기능이 탑재되어 있는데, 이것과 연관이 있는지는 불명.