컴퓨터 바이러스 확산 형태와 감염 알려주는 5가지 징후

CSO
컴퓨터 바이러스는 정상 애플리케이션 코드를 매개체로 삼아 확산되고, 스스로 재생시키는 악성 소프트웨어의 일종이다.

다른 악성코드처럼, 공격자가 컴퓨터에 피해를 주거나, 컴퓨터를 제어하기 위해 바이러스를 배포한다. 표적을 감염시키는 방식 때문에 ‘바이러스’라는 이름이 붙여졌다. HIV나 인플루엔자 같은 생물 바이러스들은 스스로 번식을 할 수 없다. 세포를 ‘강탈’ 해야 한다. 이 과정에 감염된 조직을 파괴한다. 이와 유사하게, 컴퓨터 바이러스도 ‘나홀로’ 프로그램이 아니다. 자신을 다른 애플리케이션에 집어넣는 코드 조각이다. 애플리케이션이 실행되면서 바이러스 코드가 실행되고, 이로 인해 작은 피해부터 재앙적인 피해까지 다양한 피해가 초래된다.

이런저런 담론이나 언론 보도에서 사람들이 바이러스와 악성코드를 혼용해 번갈아 사용하는 경우가 많다. 엄격히 말하면, 위 정의에 부합하는 악성코드 종류가 바이러스이다. 다른 두 종류의 악성코드 중 첫 번째는 무해한 애플리케이션으로 가장해 사용자가 실행을 시키도록 유도하는 트로이 목마(Trojans), 두 번째는 다른 애플리케이션에 의지하지 않고 번식과 확산이 가능한 웜(worms)이다. 바이러스는 작동하기 위해 다른 프로그램을 감염시켜야 한다는 차이가 있다.
ⓒGetty Images Bank


컴퓨터 바이러스가 하는 일은?
당신의 컴퓨터에 설치된 애플리케이션 하나가 바이러스에 감염되었다고 가정하자(나중에 잠깐 동안 일어날 수 있는 여러 일에 대해 이야기를 할 예정이다. 지금은 감염만 생각하자). 바이러스는 어떤 식으로 ‘나쁜 일’을 하는 것일까? 블리핑 컴퓨터가 이 과정을 개략적으로 잘 설명하고 있다. 먼저 감염된 애플리케이션이 (통상 사용자의 요청에 따라) 실행된다. 그리고 바이러스 코드가 다른 적법한 코드가 실행되기 전에 CPU 메모리에 로딩된다.

이 시점부터, 바이러스는 호스트 컴퓨터의 애플리케이션을 감염시키고, 가능한 모든 장소에 악성 코드를 주입해 번식을 시작한다 (상주 바이러스는 실행되는 프로그램에 이렇게 하지만, 비상주 바이러스는 실행되지 않은 실행 파일도 감염시킬 수 있음). 부트 섹터 바이러스는 이 단계에서 아주 파괴적인 기법을 사용한다. 컴퓨터 시스템 디스크의 부트 섹터에 코드를 주입, 운영 체제가 완전히 로딩되기 이전부터 실행이 되도록 만든다. 이 경우, 컴퓨터를 ‘클린'하게 작동시키는 것이 불가능해진다.

바이러스가 컴퓨터에 '연결’이 되면, 바이러스를 만든 사람이 의도한 ‘나쁜 일'을 하는 바이러스 코드의 일부인 페이로드가 실행되기 시작한다. 온갖 '못된 짓’을 한다. 예를 들어, 컴퓨터 하드 드라이브를 스캔해 은행 크리덴셜을 탈취하거나, 키스트로크를 로그 기록해 암호를 훔치거나, 해커의 적에게 DDoS 공격을 퍼붓는 좀비 컴퓨터로 만들거나, 사용자의 데이터를 암호화한 후 접근 권한을 돌려주는 대가로 비트코인으로 사이버 몸값을 지불할 것을 요구하기도 한다. 다른 악성코드도 유사한 페이로드를 갖고 있을 수 있다. 랜섬웨어 웜과 DDoS 트로이 목마 등을 예로 들 수 있다.

컴퓨터 바이러스가 확산되는 방식은?
인터넷이 등장하기 전의 바이러스들은 감염된 플로피 디스크를 통해 특정 컴퓨터에서 다른 컴퓨터로 확산되는 경우가 많았다. Amiga 사용자 사이에 크게 확산되었던 SCA 바이러스를 예로 들면, 불법 소프트웨어가 들어 있는 디스크가 매개체였다. 큰 피해를 초래한 바이러스는 아니었지만, Amiga 사용자의 40%가 감염된 적도 있었다.

지금은 인터넷을 통해 바이러스가 확산된다. 바이러스 코드에 감염된 애플리케이션 다른 애플리케이션처럼 컴퓨터들 사이에 전송되면서 바이러스가 확산되는 경우가 많다. 많은 바이러스에 논리 폭탄이라는 것이 들어있다. 이는 바이러스 페이로드가 특정한 시간이나 특정한 조건 아래에서만 실행되도록 만드는 코드의 일종이다. 이로 인해, 사용자나 관리자가 애플리케이션이 감염된 것을 모르고, 이를 전송하거나 설치할 가능성이 있다. 감염된 애플리케이션이 이메일로 전송이 될 수도 있다(고의 또는 실수로. 컴퓨터 메일 소프트웨어를 하이재킹해 사본을 이메일로 발송하는 바이러스도 있음). 또 감염된 코드 저장소나 앱 스토어에서 다운로드 형태로 확산되는 경우도 있다.

알아야 할 한 가지 사실이 있다. 이런 감염 경로 모두에 공통점이 한 가지 있는데, 피해자가 감염된 애플리케이션이나 코드를 실행시켜야 바이러스가 작동한다는 것이다. 호스트 애플리케이션이 실행되어야 바이러스가 실행되고, 번식된다. 그렇지만 악성코드가 가장 많이 확산되는 경로인 이메일과 관련, 많은 사람을 불안하게 만드는 질문 한 가지가 있다. 이메일을 여는 것만으로 바이러스에 감염될 수 있을까? 대부분은 메시지를 여는 것만으로 감염되지 않는다. 바이러스 코드에 감염된 첨부 파일을 다운로드받아 실행해야 감염된다. 이런 이유로 많은 보안 전문가가 이메일 첨부 파일을 실행하기 전에 각별히 주의를 기울여야 한다고 경고한다. 또 이는 많은 이메일 클라이언트와 웹메일 서비스에 바이러스 스캐닝 기능이 기본 탑재된 이유이기도 하다.

아주 교활하게 감염을 시키는 방법도 있다. 감염된 코드가 웹 브라우저의 자바스크립트로 실행이 되면서 컴퓨터가 바이러스에 감염될 수 있다. 또 보안 취약점을 악용해 로컬 설치된 프로그램을 감염시켜 컴퓨터를 감염시킬 수 있다. 일부 이메일 클라이언트의 경우, 이메일 메시지에 임베디드된 자바스크립트 코드와 HTML을 실행시킨다. 따라서 엄격히 말하면 이런 메시지의 경우 이메일을 여는 것만으로 컴퓨터가 바이러스에 감염될 수 있다. 그러나 대부분의 이메일 클라이언트와 웹메일 서비스에 이런 문제를 방지하는 보안 기능이 내장되어 있기 때문에, 사용자가 가장 크게 우려해야 하는 감염 경로는 아니다.


컴퓨터 바이러스의 종류
시만텍은 사용자가 직면할 수 있는 다양한 바이러스 종류를 다양한 방법으로 분류해 제시하고 있다. 이미 상주 및 비상주 바이러스, 부트 섹터 바이러스, 웹 스크립팅 바이러스에 대해 설명했다. 이 밖에도 알고 있어야 할 다른 바이러스들이 존재한다.

매크로 바이러스(macro virus)는 마이크로소프트 오피스나 PDF 파일에 임베디드된 매크로 애플리케이션을 감염시킨다. 경계심이 높아 이상한 애플리케이션을 열어본 적이 없는 사람 중에도 이런 문서에 실행 코드가 포함되어 있을 수도 있다는 점을 잊어버리는 경우가 많다. 경계를 늦춰서는 안 된다!
다형성 바이러스(polymorphic virus)는 자신을 복제할 때마다 바이러스 백신 소프트웨어가 탐지하지 못 하도록 조금씩 소스 코드를 바꾸는 바이러스다.

이런 바이러스 분류 체계는 바이러스의 행동(동작) 양태에 토대를 두고 있기 때문에, 특정 바이러스가 여러 범주에 모두 포함될 수도 있다. 예를 들어, 상주 바이러스가 다형성 바이러스가 될 수도 있다.

컴퓨터 바이러스 보호
악성코드 보호 제품 종류에서 가장 많이 알려진 제품군은 바이러스 백신(Antivirus) 소프트웨어다. CSO는 윈도우, 안드로이드, 리눅스, 맥OS에서 가장 우수한 바이러스 백신 소프트웨어에 대한 리스트를 제공하고 있다. 그렇지만 바이러스 백신이 ‘완벽한’ 솔루션은 아니라는 점을 명심해야 한다. 더 발전된 기업 네트워크의 경우, 엔드포인트 보안 제품 및 서비스가 악성코드에 대한 중심층 방어 기능을 제공한다. 이런 제품 및 서비스는 바이러스 백신 제품에서 기대할 수 있는 서명 기반 악성코드 감지 기능은 물론, 안티 스파이웨어, 개인 방화벽, 애플리케이션 제어, 기타 호스트 침입 방지 기능을 제공한다. 가트너는 이런 제품 중 최고의 제품들을 리스트로 제시하고 있다. 사이랜스(Cylance), 크라우드스트라이크(CrowdStrike), 카본 블랙(Carbon Black) 같은 제품들이다.

유념해야 할 점 한 가지는 바이러스는 통상 운영 체제나 애플리케이션 코드의 취약점을 악용, 시스템을 감염시키거나 자유롭게 ‘활동’을 한다는 것이다. 악용할 취약점이 없다면, 바이러스 코드를 실행시켜도 감염이 되지 않을 수도 있다. 따라서 계속해서 시스템에 패치를 적용하고, 업데이트하는 것이 좋다. 하드웨어 목록을 계속 주시, 보호해야 할 대상을 파악하고, 지속해서 인프라 취약점을 평가해야 한다.

컴퓨터 바이러스에 감염된 것을 알려주는 징후들
바이러스가 방어선을 뚫고 들어온 것을 어떻게 알 수 있을까? 랜섬웨어같이 예외적인 경우가 있기는 하지만, 대부분의 바이러스는 사용자 컴퓨터가 침해된 것을 알려주지 않는다. 생물 바이러스가 번식과 확산을 위한 도구로 숙주를 계속 살려 두는 것과 마찬가지로, 컴퓨터 바이러스도 감염된 컴퓨터가 절뚝거리는 동안 보이지 않는 곳에서 피해를 초래한다. 그렇지만 감염 여부를 파악할 방법들이 있다. 노턴(Norton)이 이와 관련, 아주 유용한 리스트를 제공하고 있다.

• 성능 저하
• 잦은 충돌
• 컴퓨터를 켰을 때 잘 모르는 프로그램이 시작됨
• 자신의 이메일 계정에서 대량의 이메일이 발송됨
• 홈페이지나 암호가 변경됨

컴퓨터 감염이 의심되는 경우, 컴퓨터 바이러스를 스캔하는 것이 좋다. 무료로 이용할 수 있는 서비스들도 아주 많다. 최고의 무료 서비스들은 세이프티 디텍티브(The Safety Detective)를 참고하기 바란다.

컴퓨터 바이러스 제거
컴퓨터에 바이러스가 설치된 경우, 이를 제거하는 과정은 다른 악성코드 제거 과정과 비슷하다. 그러나 쉽지 않다. CSO는 루트킷, 랜섬웨어, 크립토재킹을 제거하는 방법, 기타 복구 방법에 대한 정보를 제공하고 있다. 또 대처 방법을 파악하기 위해 윈도우 레지스트리를 감사하는 방법을 소개하고 있다.

시스템 정리 도구를 찾고 있다면 테크 레이더(Tech Radar)의 무료 서비스 리뷰를 참고하기 바란다. 유명 바이러스 백신 회사의 서비스, 멜웨어바이트 같은 신생 회사의 서비스가 포함되어 있다. 또 항상 파일을 백업하는 것이 좋다. 부트 레코드에서 바이러스 코드를 없애거나 동유럽의 해킹 범죄자에게 사이버 몸값을 지불할 필요 없이, 알려진 안전 상태로 복구할 수 있기 때문이다.

컴퓨터 바이러스의 역사
컴퓨터 바이러스로 분류할 수 있는 최초의 컴퓨터 바이러스는 엘크 클로너(Elk Cloner)이다. 1982년, 15세 소년이었던 리차드 스크렌타가 장난으로 개발한 바이러스다. 엘크 클로너는 애플 II 부트 섹터 바이러스였다. 2개 플로피 드라이브가 장착된 컴퓨터를 감염시켰다. 당시 대부분 컴퓨터가 2개 플로피 드라이브가 있었다. 감염된 게임을 50번째 실행할 때마다 감염 사실을 화면에 ‘시’로 표시해 알려준 바이러스였다.

기타 다음의 바이러스들이 있었다.

예루살렘(Jerusalem): ‘13일의 금요일’에 해당하는 날에 실행되어 애플리케이션을 삭제시켰던 DOS 컴퓨터 바이러스이다.
멜리사(Melissa): 1999년, 바이러스를 ‘메인스트림’으로 부상시켰던 대량 메일 발송 매크로 바이러스다. 이 바이러스를 만든 사람은 20개월의 징역형을 선고받았다.

그러나 21세기에 세상을 떠들썩하게 만들었던 악성코드 대부분은 엄격히 말해 바이러스가 아닌 웜이나 트로이목마다. 그렇다고 이제 바이러스가 존재하지 않는다는 의미는 아니다. 그러니 실행하려는 코드에 각별히 주의를 기울여야 한다. ciokr@idg.co.kr