바이러스(Virus)라는 기본 원리의 뜻은 유기체의 살아있는 세포를 통해서만 생명활동을 하는 존재입니다.
이 생명체는 평소에는 비활성화된 상태로 있다가 생명체의 세포와 접촉하면 이에 기생하여
생명활동을 시작합니다. 이 생명체는 다른 세포가 가진 유전정보를 복제할 수 있는 능력이 있지만,
자체적으로는 신진대사를 할수가 없기 때무에 바이러스는 다른 생명체 없이는 스스로 생명활동을 할 수 없습니다.
그러나 이런 바이러스는 우리의 역사를 통틀어 가장 많이 기생하고 여러 생명체를 만들어낸 집단이었습니다.
약 700년전 천연두, 인플루엔자와 함께 대유행으로 가장 많은 사람의 목숨을 앗아간 질병인 흑사병도
이와 같은 의미가 되겠지요...
컴퓨터 바이러스(Computer Virus)라는 말도 위와 같은 바이러스라는 질병으로 유래되었습니다.
이들의 특징을 말하자면 트로이 목마와는 다르게
스스로 자신을 복제해 감염시킬 수 있다는 특징을 가지고 있습니다.
따라서 엄밀히 말하면 자기복제 능력이 없는 악성코드라면 바이러스라고 부르는 것을 잘못된 뜻이나,
대부분의 경우 전문가가 아니고서는 이들을 정확하게 구분하는 경우는 많지 않습니다.
그래서 흔히들 '바이러스'라는 말이 악성코드 전반을 일컫는 용어로 사용됩니다.
또한 바이러스는 자체적으로 실행되며 스스로 전파되는 월(악성코드)와도 구분됩니다.
다만 최근에는 바이러스와 월이 같은 카테고리로 묶이는 경우가 많고, 엄밀한 의미의 바이러스, 다시 말해서
자기 복제와 파일 감염을 통한 확산에 포커스를 맞춘 전통적 의미의 컴퓨터 바이러스는 최근들어 매우 드뭅니다.
최근 들어 다양한 기능이 복합적으로 구현되는 악성코드들이 대부분이라,
바이러스와 월, 트로이 목마를 정확하게 구분하는 것이 무의미해졌습니다.
예를 들어서 어떤 악성코드는 실행 파일을 감염시키고
네트워크를 통해 전파되며, 특정 조건이 맞춰질때 MBR(부트로더)를 덮어씌우고
시스템 파일을 파괴해 컴퓨터를 먹통으로 만드는 프로그램을 내부에 포함하고 있습니다.
이 악성코드로는 셋 중 무엇으로 분류해야 할까요?
따라서 같은 악성코드라도 보안업체에 따라 다르게 분류하는 경우가 다반사이며,
랜섬웨어와 같이 총체적 난국에 가까운 악질 악성코드도 등장하고 있는 마당이라
기능적인 분류가 점점 무의미해지고 있습니다.
보안 전문가들도 이런 용어들을 혼동해 사용하는 경우가 잦을 정도이니...
컴퓨터 바이러스의 역사
컴퓨터 바이러스 개념이 처음으로 사용된 시작은 1970년대 인터넷의 선구자인 아페넷에서 크리퍼 바이러스가
처음 발견했으며 이것은 최초의 바이러스로 기록되고 있습니다.
그러나 크리퍼 바이러스는 컴퓨터 파괴 목적보다는 자기복제의 개념에 더 가까웠으며,
엄밀히 구분하자면 현대의 웜의 개념에 더 가깝습니다.
또한, 크리퍼가 만들어질 당시에는 이러한 프로그램을 바이러스라 부르지 않았고,
이러한 프로그램에 바이러스라는 이름이 붙게된 계기는
미국의 SF작가인 데이비드 제롤드의 소설 할리가 하나였을 때(When Harlie was One)에서
"다른 컴퓨터에 계속 자신을 복제하고, 감염된 컴퓨터의 운영체제에 영향을 미쳐 점차 시스템을
마비시키는 장치를 한 과학자가 제작해 배포한다." 는 개념을 바이러스로 소개하면서 부터였습니다.
이후 1985년 미국에서 컴퓨터를 악의적으로 파괴하는 프로그램이 점차 알려지기 시작하고,
1986년에는 파키스탄에서 브레인 바이러스가 유행했습니다. 그러나 이 시점의 바이러스는
현재의 복제 개념이 아닌 이동의 원시적 형태였습니다.
최초의 바이러스
이동이 아닌 진짜 복제 개념이 들어간 최초의 바이러스는 엘크 클로너(Elk Cloner)이라는 프로그램입니다.
이는 1982년 경에 제작되었는데, 놀랍게도 이를 만든 개발자는 당시 15세였던
리처드 '리치' 스크렌타라는 소년이었습니다. 이 Elk Cloner는 Apple II라는 시스템에서만 감염되었고
부팅용 프로피 디스크에 감염되는 일종의 부트 섹터 바이러스였습니다.
Elk Cloner는 부팅이 된 이후로도 메모리에 남아있다가 만약 감염되지 않은 새로운 디스크가
컴퓨터에 들어오면 자신을 해당 디스크에 전염시키는 구조였습니다.
이런 식으로 Elk Cloner는 디스크에서 디스크롤 통해 감염되는 프로그램이었는데,
Elk Cloner는 특별히 파괴적인 활동은 펼치치 않았고, 감염된 컴퓨터는 감염이 된 후로 50번째로 부팅하면
다음과 같은 시를 출력하였습니다.
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는 실직적인 피해를 주는 것은 전혀 없으며, Elk Cloner가 퍼져나간 범위도 개발자인
스크렌타 주변 인물 정도밖에 없기 때문에 이것에 대한 백신은 개발된적이 없다고 합니다.
바이러스로 인해 감염되는 과정
스스로 복제하기려면 바이러스는 코드 실행과 메로리를 통해 기록을 허가받아야 합니다.
이러한 이유로는 수많은 바이러스들은 정상적인 프로그램의 일부일 수 있는 실행 파일에 스스로 첨부해 들어갑니다.
사용자가 감염된 프로그램을 실행하려고 하면 바이러스 코드가 동시에 실행될 수 있습니다. 바이러스들은
실행이 될때 두가지 종류로 나눌 수 있는데, 비상주 바이러스들은 즉시 감염될 수 있는 다른 호스트들을 찾아
그 대상을 감염시켜 끝내 감염된 응용 프로그램에 대한 제어권을 넘겨줍니다. 상주 바이러스들은 이들이 위치한
호스트를 검색하지는 않으나 실행 할 때는 스스로를 메로리에 상주시켜 호스트 프로그램에 제어권을 넘겨줍니다.
바이러스는 백그라운드 환경에서 동작하며 이 파일들이 다른 프로그램들이나 운영 체제 자체에서 접근할 시
새로운 호스트들을 감염시켜 버립니다.
비상주 바이러스
비상주 바이러스로는 검색자 모듈(finder module)과 복제 모듈(replication module)로 이루어져 있습니다.검색자 모듈로는 감염을 시킬 새로운 파일들을 찾는데 치중하고, 검색자 모듈이 각 새로운 실행 파일과
마주치게 되면 복제 모듈을 호출해 해당 파일을 감염시킵니다.
상주 바이러스
상주 바이러스는 비상주 바이러스가 이용하는 것과는 달리 비슷한 복제 모듈을 포함하고 있습니다.
그러나 이 모듈은 검색자 모듈을 통해서 호출되지는 않습니다. 이 바이러스로는 일단 실행하게 될때
복제 모듈을 메모리에 상주시켜 운영 체제가 특정한 운영을 수행하기 위해 호출될 때마다 이 모듈을
실행하게끔 합니다.
이 복제 모듈은 이를테면 운영 체제가 파일을 실행할 때마다 호출됩니다. 이 경우에는 바이러스가
컴퓨터 상에서 실행되는 모든 프로그램들을 감염시킵니다.
상주 바이러스는 빠른 감염자(fast infactor) 과 느린 감염자(slow infactor)로 나뉘기도 합니다.
빠른 감염자는 가능한 많은 파일에 감염될 수 있도록 고안되어 있고
예를 들어 빠른 감염자는 접근하는 모든 잠재적인 호스들 파일들을 감염시킬 수 있습니다.
바이러스 검사 소프트웨어(Anti Virus)를 사용하고 있을 때에는 특별한 문제를 들어내기도 하는데,
이는 시스템 전체에 대한 검사를 실시할시 바이러스 검사 프로그램이 컴퓨터 상의 잠재적인 호스트 파일에
접근하기 때문입니다.
바이러스 검사 프로그램이 이러한 바이러스가 메모리에 존재한다는 사실을 눈치채지 못한다면 바이러스는
바이러스 검사 프로그램을 올라타 바이러스 검사를 받는 모든 파일들을 감염시켜 버립니다.
빠른 감염자(fast infactor)은 바이러스가 가장 빨리 퍼지는데에 중점을 두었습니다.
이 방식에서 보이는 단점으로는 수많은 파일을 빠르게 감염시킬때 이를 빨리 감지해낼 수 있다는 점인데
그 이유로는 바이러스가 컴퓨터를 느리게 만들거나 바이러스 검사 소프트웨어가 알아챌 수 있을 만큼의
수많은 의심스러운 동작을 수행하기 때문입니다.
한편 느린 감염자(slow infactor)은 비정기적으로 호스트를 감염시키는 것이 목적입니다.
이를테면 일부 느린 감염자는 파일들이 복사될때 파일을 감염시키기만 하면됩니다.
느린 감염자는 이러한 동작을 최대한 줄임으로써 바이러스에 대한 감지를 피하도록 설계되어 있습니다.
이들은 컴퓨터를 눈에 띄게 느리게 할 가능성이 거의 없으며
프로그램에 대한 의심스러운 동작을 바이러스 검사 프로그램이 감지할 때 비정기적으로
바이러스 검사 프로그램이 뜨게 만듭니다.
그러나 이 느린 감염자 접근은 매우 성공적이라고 볼 수 없습니다.
바이러스의 구분 및 종류
바이러스는 크게 부트 영역을 감염 시키는 부트(boot)바이러스,
숙주 프로그램에 감염되었다 그 기능을 수행하는 숙주 바이러스로 구분 됩니다.
바이러스가 만들어진 목적과 의도에 따라 그 종류가 크게 세분화 되지만,
대표적으로는 감염된 뒤 바로 기능을 수행하는 바이러스, 일정 기간의 잠복기를 걸쳐 수행되는 바이러스
공격자가 프로그래밍한 특정 일자에 실행되는 바이러스가 있습니다.
일단 종류 자체는 악성 소프트웨어로 생물학 분야에 정의된 바이러스와는 다르게
컴퓨터를 물리적으로 파괴하지는 않습니다.
다만 하드웨어를 오작동시켜 간접적으로 물리적 손상을 입히는 사례는 있습니다.
ActivX를 예로 이 것은 자체적인 바이러스는 아니지만, 해당 플랫폼을 기반으로 작동하며
취약점을 파고드는 바이러스나 스파이웨어가 너무 많은 데다가
마찬가지로 ActiveX를 기반으로 하는 한국제 보안 프로그램(nPropect 등)들의 무겁고
실제 성능은 영 믿을 만하지 못한 거까지 겹쳐 해당 플랫폼 그 자체가 바이러스라고 비난하거나
마이크로소프트가 바이러스 플랫폼을 만들었다는 우스갯소리가 진지하게 통한 적도 있을 만큼
여러모로 문제가 많은 프로그램이라서
현재는 마이크로소프트사 에서도 정식지원을 중단한 상태입니다.
바이러스가 감염되는 위치
- 이진 실행 파일 (이를 테면 MS-DOS의 COM파일, EXE파일, 마이크로소프트 윈도우의 PE,리눅스의 ELP파일)
- 플로피 디스크와 하드 디스크 파티션의 불륨 부트 레코드
- 하드 디스크의 마스터 부트 레코드(MBR)
- 일반 목적의 스크립트 파일 (MS-DOS와 마이크로 소프트 윈도우의 일괄 파일,
VB스크립트, 유닉스 계열 셸 스크립트 파일) - 응용 프로그램 특유의 스크립트 파일들(이를 테면 텔릭스 스크립트)
- 시스템 특유의 자동 실행 스크립트 파일 ( 윈도우가 자동으로 USB 메모리에 저장된 소프트웨어를 실행시키는 Autorun.inf 파일)
- 매크로를 포함하는 문서(마이크로 소프트 워드문서, 마이크로 소프트 엑셀문서 등)
- 웹 애플리케이션의 크로스 사이트 스크립팅의 취약성
- 임의로 만든 컴퓨터 파일.
바이러스 증상
다음 증상이 발생할 시 바이러스 감염을 의심해 볼수 있습니다.
- 컴퓨터가 평소와 달리 느려질 경우
- 컴퓨터 자체가 부팅이 안될 경우
- 블루스크린, 레드스크린 등이 자주 발생할 경우
- 특정 파일등의 정보(크기, 이름 등)이 지속적으로 변하는 경우
- 기타 평소 발생하지 않은 의심스러운 증상이 발견된 경우
- 이상한 파일(예: wosfawr.exe, iliawtzg.exe 등)이 생성된 경우
그 외에 몇가지 바이러스들은 증상이 심해지거나 본격적으로 증상이 발동되면, 제작자의 메시지나
장난성 그래픽 효과가 튀어나오기도 합니다.
이는 바이러스 제작자가 스스로를 괴사하기 위한 용도이고, 혹은 모종의 메시지를 주기
위해서일 가능성이 큽니다. MS-DOS 시절만해도 보통 이런 그래픽 효과를 ANSI 아트로 그려서 출력했습니다.
바이러스 예방 및 치료책
바이러스 검사 소프트웨어 및 기타 방지 대책
수많은 사용자들은 실행 파일을 다운로드 받거나 실행한 뒤 알려져 있는 바이러스를 없애는
바이러스 검사 소프트웨어(Anti-Virus)를 설치합니다.
바이러스 검사 소프트웨어가 바이러스를 찾아내는 방법은 두 가지가 있습니다.
첫번째로는 가장 흔한 바이러스 검사 방식으로
바이러스 서명 정의 목록을 사용하는 것입니다. 이것은 컴퓨터 메모리의 내용(랜, 시동 섹터)
고정 및 이동식 드라이브(하드 드라이브, 플로피 드라이브)에 저장된 파일을 검사하고
알려진 바이러스 서명 데이터베이스와 해당 파일을 비교해 수행하는 방식입니다.
하지만 이런 감지 방식의 단점은 사용자가 최신 바이러스 정의 업데이트에 속한
바이러스로부터만 보호 받을 수 있다는 단점이 보입니다.
두번째 방식으로는 발견적 알고리즘(heuristic search algorithm)을 이용한 컴퓨터 행위에
따라서 바이러스를 찾아내는 것입니다.
이 방식은 보안 회사가 서명을 작성한 바이러스까지도 검색하는 기능을 갖추고 있습니다.
일부 바이러스 검사 프로그램에서는 비슷한 방식으로 '눈에 보이는' 보낸 편지, 받은 편지뿐만 아닌
열려 있는 파일들 까지도 검사할 수 있습니다. 이를 "실시간 검사(on-access scanning)"라고 부릅니다.
사용자들은 소프트웨어를 주기적으로 업데이트해 보안 허점을 보완해야 합니다.
바이러스 검사 소프트웨어는 주기적으로 업데이트 하여 최신 위협으로 보호받도록 합니다.
복구 방식
컴퓨터 바이러스에 더럽혀진다면 완전히 운영체제를 재설치 하지 않고서는 일반적으로 같은 컴퓨터를
사용해나가는 것은 보안적으로 안전하지는 않습니다.
그러나 컴퓨터 바이러스에 걸린다 하더라도 이에 대한 복구 옵션은 수없이 존재하기에
이러한 기능을 바이러스의 종류가 얼마만큼의 위험성을 가지냐에 따라 결정됩니다.
바이러스 제거
윈도우 ME 이상 부터는 컴퓨터내에 시스템 복원이라는 도구가 존재해 레지스트리와 중요한 시스템 파일을
이전 검사 지점으로 돌릴수 있는 복구 기능이 존재합니다.
바이러스가 이런 시스템을 붙잡아 컴퓨터에 전원을 강제로 껏다 켜면, 그 즉시 시스템 복원을 보여줄 것입니다.
바이러스가 복원 파일을 손상시키지 않고, 이전 복원 지점에 존재하지도 않는다면
이전 날의 복원 지점을 선택해도 무관합니다. 그러나 일부 바이러스들은
시스템 복원과 다른 중요한 도구(작업 관리자, 명령 프롬포트) 자체를 사용 불가하게 만드니 주의하는 것이 좋습니다.
운영체제 재설치
사용하고 있는 윈도우의 운영체제를 재설치 하는 방식 또한 바이러스 제거의 다른 방안으로 볼 수 있습니다.
단순히 운영 체제 파티션을 다시 포맷한 뒤 원본 매체로부터 운영 체제를 다시 설치하거나
깨끗한 백업 이미지의 파티션의 이미지 복제과정을 동반합니다. 이 방식은 단순한 방식이면서도
별도의 바이러스 검사를 하는 것도다 시간을 절약할 수 있다는 장점이 있고
컴퓨터 내에 존재하는 모든 악성 코드를 제거한다는 확신을 얻을 수 있습니다.
바이러스 분석 및 종류
컴포터 바이러스 분석으로 크게 다음과 같이 두가지 방법으로 나뉩니다.
- 정적 분석
바이러스로 의심되는 대상을 실행하지 않고 분석하는 방식입니다.
일반적으로 바이러스가 실행할 수 있는 모든 코드 및 실행 경로들을 분석할 수는 있어도
실제 실행과 관련된 정보가 제한됩니다. 대표적으로 간접 호출(Indirect Call) 경우 호출 대상이
여러 개 가능할 경우 인데, 이를 위해서 심볼릭 실행(Symbolic Execution) 방식이 존재하나
너무 느리다는 단점이 있습니다. - 동적 분석
바이러스로 의심되는 대상을 가상 환경등에서 실행해 생성 레지스트리, 파일 실행, 파일 및 프로세스
시스템 콜 호출 등 행위를 분석합니다. 분석과 다른게 실제 실행과 관련된 정보를 얻을 수 있으나
실행 경로에 포함되는 코드들만 분석이 가능해 정보가 제한됩니다.
참고 자료
- 나무위키 - 컴퓨터 바이러스
https://namu.wiki/w/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EB%B0%94%EC%9D%B4%EB%9F%AC%EC%8A%A4
- 위키백과 - 컴퓨터 바이러스
'etc. > Wiki' 카테고리의 다른 글
[Wiki] 서비스 거부 공격 - Ddos(디도스) (0) | 2022.02.01 |
---|---|
[Wiki] 해킹이란 무엇인가? (0) | 2022.02.01 |