안티바이러스의 필요성과 한계점
안티바이러스란 악성 소프트웨어를 찾아 제거하는 기능을 갖춘 컴퓨터 프로그램으로 흔히 “바이러스 검사 소프트웨어”라고도 하며, 국내에선 안철수연구소(現의 안랩) V3로 인해 “컴퓨터 백신”이라는 명칭이 익숙하리라 생각됩니다. 안티바이러스는 바이러스가 가지고 있는 특징이나 행위 정보(시그니처)를 기반으로 바이러스 식별 및 탐지하는데 과거에는 바이러스, 스파이웨어, 애드웨어 등 악성코드 유형 또는 특성에 따라 특화된 제품들이 많이 출시되었습니다. 하지만 최근에는 악성코드들이 지능화 및 정교화되면서 다양한 악성 행위를 종합적으로 특화된 제품이 무의미해졌고, 현재는 악성코드 유형에 특화된 제품 쇠퇴되고 통합으로 탐지하는 안티바이러스 제품들이 주목받고 있습니다.
안티바이러스가 중요한 이유는 바로 끊임없이 증가하는 악성코드 때문인데요. AV-TEST의 발표에 따르면 2022년 기준으로 전년도 대비 악성코드 발생 건수가 약 14% 증가한 약 1억 건 이상 증가한 수치라고 하며, 2023년도에도 현재 증가량을 가늠해 볼 때 전년과 비슷한 수준의 증가율을 보이거나 그 이상으로 증가할 것으로 예상된다고 하니 악성코드의 위협이 날로 커지고 있는 것을 알 수 있습니다.

그림 1. 악성코드의 증가(출처: AV-TEST)
안티바이러스의 탐지 방식은 정통적으로 크게 시그니처 기반과 행위분석 기반으로 나눌 수 있으며, 탐지 정확도나 분석의 효과성을 높이기 위해 기존 탐지 방식과 더불어 휴리스틱과 기계학습을 적용하고 있습니다.
• 시그니처 기반 : 알려진 공격의 패턴 저장하고 비교해 악성코드를 탐지 • 행위 분석 기반 : 시스템 변화 유무에 따라 판단, 시스템 모니터링을 통해 공격 패턴을 탐지 • 휴리스틱 기반 : 악성코드의 특징을 분석해 프로파일링 한 정보를 바탕으로 유사도 기반 탐지 • 기계 학습 기반 : 악성코드에서 수집 및 분석한 Feature 정보를 바탕으로 학습된 모델을 이용한 탐지 |
특히 최근에는 악성코드가 지능화 및 고도화되면서 한 가지 탐지 방식만을 기반으로 하는 안티바이러스 엔특히 최근에는 악성코드가 지능화 및 고도화되면서 한 가지 탐지 방식만을 기반으로 하는 안티바이러스 엔진은 거의 없으며, 다양한 분석 및 탐지 방식을 융합하여 탐지의 정확성을 향상하려는 노력을 많이 하고 있는 추세입니다.

그림 2. 악성코드의 탐지(분석) 방법
하지만 이렇게 다양한 탐지 방식들을 적용할 때 안티바이러스의 한계점이 발생하게 되는데, 통상적인 안티바이러스 제조사는 신규 악성코드가 출현하면 보안전문가들에 의해 수기 분석을 진행하고 악성코드를 탐지할 수 있는 시그니처 또는 탐지 모델을 만들어 빠르게 안티바이러스 엔진을 업데이트하게 됩니다. 이때 아무래도 사람이 직접 수작업으로 신규 악성코드를 분석하기 때문에 새로운 악성코드의 출현 속도를 따라잡기 역부족일 뿐만 아니라 지능화 및 정교화된 안티바이러스 우회 기술과 분석(역공학)을 방해하기 위한 난독화/암호화 기술(안티 리버싱)이 적용되어 대응 시점이 점점 느려지는 문제가 발생합니다. 또한 안티바이러스의 한계점 중 가장 치명적이라고도 할 수 있는 오탐(오진) 문제로, 일부 악성코드의 패턴(시그니처)과 정상 프로그램의 패턴을 비교해보면 아주 유사하기 때문에 탐지하기에 매우 어려움이 있고, 그 결과 정상 프로그램을 악성코드로 오탐(오진) 하는 사례도 종종 발생하고 있습니다.
• 2008년 Avast가 네이트온 및 기타 프로그램을 악성코드로 오진 • 2011년 V3 Lite의 오진으로 윈도우 중요 파일이 삭제되어 부팅 불가 • 2017년 Avast의 대량 오진 사건, 시스템 파일이 포함된 대량의 정상 파일을 악성코드로 오진 • 2022년 Sophos사의 안티바이러스 제품이 Windows 11과 충돌을 일으켜 블루스크린 발생 • 2022년 8월 30일, 알약의 랜섬웨어 오진 |
따라서 저희 안티바이러스 시험 분석 연구팀은 이러한 한계점을 기반으로 테스트 시나리오를 만들어 안티바이러스의 기능 및 성능 평가를 진행하였습니다.
우리는 왜 안티바이러스의 기능 및 성능을 평가하려고 하는걸까?
미국, 독일, 영국 민간 기업에서 안티바이러스의 인증제도를 시행하고 있는데 이 인증제도는 모두 국외 인증 기관이라는 특징으로 인해 국내 사용자의 PC 환경을 고려하지 않는 부분과 국내에 주로 유포되는 악성코드인 HWP 문서형 악성코드 또는 여러 타입의 문서형 악성코드에 대한 탐지 평가가 미흡한 부분이 있습니다. 따라서 이러한 미흡한 부분을 반영하여 국내 사용자 환경에 맞는 악성코드를 다수 포함하여 테스트를 수행했으며, 국내 사용자들이 자주 사용하는 카카오톡이나 팟플레이어와 같은 응용프로그램들을 설치하고, 한글 문서형(HWP) 악성코드와 같은 실제 정부기관과 자체 크롤링 시스템을 통해 실제 유입된 악성코드를 기능 및 성능 평가에 활용하였습니다. 그리고 USB 플래시 드라이브, 대량의 악성코드, 최근 수집된 악성코드 등 기존 인증 기관에서 진행하지 않는 테스트 방식 도입하여 시험 및 성능 평가를 진행했습니다.

그림 3. 다른 안티바이러스 평가 환경
기능 및 성능 평가에 대상이 될 안티바이러스의 선택 기준은 다음과 같습니다.
• (기준1) 국내 및 국외 시장 점유율이 높은 안티바이러스 기준으로 선정
• (기준2) 기준1에서 안티바이러스 엔진별 고유한 제품
• (기준3) Windows 운영체제에 설치가 가능한 제품
• (기준4) 비교 다양성을 위해 무료 안티바이러스 ClamWin, Windows Defender 포함
4가지의 선택 기준을 통해 V3, 알약, Nod32, McAfee 등 총 10개의 안티바이러스를 선정하였으며, 안티바이러스 기능 및 성능 평가에 사용할 악성코드는 연구 목적으로 바이러스토탈에서 제공 받은 대량의 악성코드, 정부기관 및 자체 크롤링 시스템에서 유입된 악성코드, MalShare, VirusShare와 같은 악성코드 DB 사이트에서 수집한 악성코드 그리고 마지막으로 국내 보안기업 주식회사 엔키에서 제공받은 완벽히 분석된 악성코드를 종합하여 유형, 출현시기, 특징 등을 고려하여 랜덤 선별하였습니다. 또한, 평가 시나리오에 따라 다음과 같이 총 6개의 악성코드 샘플로 구성해 각 시나리오에 맞는 샘플을 사용하였습니다.
• (샘플1) Exe, pdf, hwp 등 확장자 별 수집된 악성코드 100개
• (샘플2) 랜덤 샘플링하여 선정한 대량의 악성코드 20,330개
• (샘플3) 정부기관 및 자체 크롤링 시스템에서 최근 3개월 내 수집된 악성코드 151개
• (샘플4) 보안 기업 ENKI 및 자체 분석한 악성코드 6,363개
• (샘플5) 상용 패킹 도구로 패킹 된 악성코드 50개
• (샘플6) 악성 행위를 하는 실행 가능한 악성코드 25개

그림 4. (상) 테스트 베드 환경 구축, (하) 시나리오별 테스트 도구 및 시스템 개발
테스트 베드 구축은 보이는 그림4(상)와 같이 2차 피해를 방지하고자 방화벽 두 개를 구축하여 내・외부를 완벽히 분리하였고, 방화벽 내 네트워크 안에는 테스트 로그가 저장되는 역할과 컨트롤러 역할을 하는 서버, 각 안티바이러스가 설치된 10개의 PC를 구축하였습니다. 기능 및 성능 평가에 사용될 테스트 PC는 모두 동일한 스팩의 하드웨어와 OS를 사용했고, 카카오톡/알집/문서편집 등 국내 사용자가 많이 사용하는 응용프로그램을 설치하여 실제 사용자 PC와 최대한 비슷하게 구성하였습니다. 또한, 사람의 개입을 최소화 하기 위해 그림4(하)와 같이 시나리오별 행위를 수행 할 수 있는 명령 수행 소프트웨어(Controller/Agent)를 개발하였습니다. Controller와 Agent를 이용하여 악성코드 다운로드, 실행, 압축해제, 재부팅 등 PC 10대를 대상으로 동시에 테스트를 진행 할 수 있고, 각 PC가 수행한 명령어와 전송받은 파일에 대한 테스트 로그를 DB에 저장할 수 있습니다.
안티바이러스의 탐지 성능과 기능 평가를 위한 평가 기준 수립 및 주요 시험
안티바이러스의 기능 및 성능 테스트를 위해 총 58개의 평가 기준을 수립하였으며, 이 기준은 국내 “소프트웨어 기술성평가 지침"과 국외 해외 안티바이러스 인증기관의 평가 항목을 참고하였습니다. 7개의 시나리오를 바탕으로 21개의 성능 테스트를 수행하였으며, 탐지 정확도 및 검증을 위해 국내 보안 기업인 주식 회사 엔키에서 제공된 분석이 완료된 악성코드를 활용하였습니다.
평가부문 | 평가항목 | 평가 기준 |
기능성 | 정확성 | (1) 악성코드 100개*에 대한 단일(개당) 악성코드 전송에 따른 실시간 탐지 정확도 * 실시간 탐지의 경우 기능이 없는 ClamWin은 제외 |
(1)-1 악성코드 100개에 대한 압축 해제 탐지 정확도 | ||
(2) 25개 악성코드 실행을 통한 탐지 정확도 | ||
(3) 대용량(20,330개) 악성코드가 담긴 USB에 대한 탐지 정확도 | ||
(4) 대용량(20,330개) 악성코드 압축 해제 시 실시간 탐지 정확도 | ||
(5) 최신 악성코드(3개월 이내)에 대한 151개 악성코드 탐지 정확도 | ||
(6) 분석이 완료된 악성코드(6,363개)의 탐지 정확도 | ||
(7) 패킹 된 50개 악성코드 탐지 정확도 | ||
(7)-1 패킹 되지 않은 50개 악성코드 탐지 정확도 | ||
신속성 | (8) 악성코드 100개에 대한 단일(개당) 악성코드 드랍에 따른 실시간 탐지 평균 속도 | |
(9) 대용량(20,330개) 악성코드 USB 연결 시 실시간 평균 탐지 속도 | ||
(10) 대용량(20,330개) 악성코드 압축 해제(알집) 시 실시간 평균 탐지 속도 | ||
(11) 최신 악성코드(3개월 이내)에 대한 151개 악성코드 평균 탐지 속도 | ||
(12) 분석이 완료된 악성코드 6,363개 평균 탐지 속도 | ||
(13) 패킹 된 악성코드 평균 탐지 속도 | ||
자원 효율성 | 기본 CPU 사용량 1 | (14) 동일한 조건의 PC에서 (1) 평가 전 CPU 평균 사용량 |
기본 메모리 사용량 1 | (15) 동일한 조건의 PC에서 (1) 평가 전 메모리 평균 사용량 | |
기본 CPU 사용량 2 | (16) 동일한 조건의 PC에서 (3) 평가 전 CPU 평균 사용량 | |
기본 메모리 사용량 2 | (17) 동일한 조건의 PC에서 (3) 평가 전 메모리 평균 사용량 | |
실시간 탐지 CPU | (18) 동일한 조건의 PC에서 (1)항목 평가 시 CPU 사용량 | |
실시간 탐지 메모리 | (19) 동일한 조건의 PC에서 (1)항목 평가 시 최대 메모리 사용량 | |
정밀검사 CPU 사용율 | (20) 동일한 조건의 PC에서 (3)항목 시 CPU 사용량 | |
정밀검사 메모리 사용율 | (21) 동일한 조건의 PC에서 (3)항목 평가 시 메모리 사용량 | |
신뢰성 | 운용 안정성 | (22) 설치 후 백신으로 인한 장애가 발생 되지 않았는가? |
사용성 | 사용자 학습 용이성 | (23) 안티바이러스 제품에 대한 언어를 제품 사용 중 변경할 수 있는가? |
(24) 안티바이러스 제품에 대한 언어를 몇 가지 제공하는가? | ||
(25) 홈페이지로 연결을 제외하고 툴팁 및 매뉴얼이 안티바이러스 제품 내에 제공하는가? | ||
인터페이스 조정 가능성 | (26) 사용자가 원하는 메뉴와 구조(메뉴, 화면배치 등)를 변경할 수 있는가? | |
입력데이터 지원 | (27) 간편 및 정밀 검사 시 검사 대상을 지정하는 방법(또는 추가 옵션)은 몇 가지인가? (ex. 이메일파일, 기타 폴더, 압축 파일 등) | |
진행상태 파악 용이성 | (28) 수행하는 작업(검사)의 진행상태를 쉽게 파악할 수 있도록 UI/UX를 제공하는가? | |
설치 환경 적합성 | (29) 설치 및 지원 가능한 운영체제 환경의 종류(Windows/Linux/Unix/Mac/Android/iOS) 는? | |
(30) 설치 시 다른 외부 프로그램의 설치를 유도하지 않는가? | ||
설치제거 용이성 | (31) 정상적으로 제품 설치 및 제거가 되는가? | |
보고서 생성 | (32) 탐지 및 검역결과를 보고서로 생성 가능한가? | |
(33) 보고서로 생성 가능한 포맷은 몇 개인가? | ||
사용자 정의 탐지/검사 | (34) 사용자가 탐지/검사에서 특정 조건(폴더, 파일명, 확장자, 탐지명 등)을 제외하여 검사할 수 있는가? | |
유/무료 여부 | (35) 안티바이러스 제품의 무료 버전이 있는가? | |
부가 기능 | 실시간 탐지 | (36) 실시간 탐지 시 특정 위치(전체 시스템, 특정 폴더 등)를 지정해 탐지할 수 있는가? |
(37) AMSI(Antimalware Scan Interface)* 기능이 있는가? * JavaScript, VBScript, Powershell 등 난독화 된 스크립트를 탐지 | ||
(38) 실시간 탐지 후 탐지된 악성코드에 대한 조치(검역소, 삭제)를 설정할 수 있는가? | ||
수동 검사 | (39) 안티바이러스에서 제공하는 수동 검사 방법은 몇 가지가 있는가? | |
(40) 수동 검사 시 특정 위치(파일, 드라이브, 특정 폴더 등)를 지정하여 검사할 수 있는가? | ||
(41) 특정 악의적인 행위(Anti Rootkit, 프로세스, 메모리)를 검사할 수 있는 기능이 있는가? | ||
(42) 예약 검사 기능이 있는가? | ||
네트워크 보안 | (43) 백신 내 방화벽 설정을 할 수 있는가? | |
(44) 유해 사이트 차단하거나 사용자 정의 사이트를 관리할 수 있는가? | ||
(45) 특정 네트워크 기반의 침입(스푸핑, 원격 등)을 방지하거나 탐지할 수 있는가? | ||
(46) VPN 또는 Proxy 기능이 있는가? | ||
시스템보안 | (47) 최근 생성된 파일의 기록을 확인할 수 있는가? | |
(48) 랜섬웨어 전용 탐지 또는 차단 기능이 있는가? | ||
(49) 저장 매체(USB, 외장 하드, CD/DVD) 등에 대한 접근 제어를 할 수 있는가? | ||
(50) 레지스트리 정리 기능이 있는가? | ||
개인정보 보호 | (51) 임시 파일 삭제 기능이 있는가? | |
(52) 인터넷 사용 기록을 삭제할 수 있는가? | ||
(53) 사용자의 흔적(최근 열어본 파일, 실행 문서 목록 등)을 삭제할 수 있는 기능이 있는가? | ||
(54) 파일 복구가 불가능한 완전 삭제(BCWipe, CCleaner 등의 기능) 기능이 있는가? | ||
공급업체 지원 | 유지관리 | (55) 주기적인 제품 업데이트 및 기능 추가가 지속해서 이루어지고 있는가? |
업데이트 주기설정 | (56) 엔진(DB) 업데이트를 자동/수동 또는 사용자가 원할 때 업데이트 할 수 있는가? | |
문제진단 및 지원 | (57) 홈페이지 또는 안티바이러스 제품 내 Q&A 또는 FAQ를 운영하여 대응하는가? | |
(58) 문제 발생시 신속 대응 가능한 연락 체계 또는 서비스(챗봇 등)를 가지고 있는가? |
안티바이러스의 주요 평가 항목이며, 정량적 평가에 사용된 시나리오는 총 7개로 다음과 같습니다.
실험 1) 바이러스 토탈에서 악성이라고 판단한 악성코드의 실시간 탐지 정확도(확장자 분류)
실험 2) 악성행위를 하는 악성코드 실행을 통한 실시간 탐지
실험 3) 대량 악성코드가 담긴 USB 플래시 드라이브를 PC에 연결하는 실시간 탐지
실험 4) 대량 악성코드가 담긴 압축 파일을 해제하는 실시간 탐지 정확도
실험 5) 3개월 이내 발생한 최신 악성코드의실시간 탐지 정확도
실험 6) 자체 분석이 완료된 악성코드에 대한 실시간 탐지 정확도
실험 7) 상용 패킹 도구를 활용한 패킹 된 악성코드에 대한 실시간 탐지 정확도
[실험 1] 바이러스 토탈에서 악성이라고 판단한 악성코드 실시간 탐지 정확도
확장자 별 기본적인 악성코드 실시간 탐지 기능 성능 평가 테스트이며, 악성코드 타입별 (Exe : 17/ xlsx :17/ Pdf : 17/ pptx : 16 / Hwp: 17/ docx : 16) 총 100개의 악성코드를 테스트하는 기본 테스트입니다. 테스트 방법은 악성코드를 실행하지 않고 100개의 악성코드를 Agent와 Controller를 통해 PC에 전송하고, 전송된 악성코드를 얼마나 잘 탐지하는지를 테스트하였습니다. 탐지 결과 중 가장 정확도가 높았던 확장자의 악성코드 유형은 EXE과 PDF 파일이였습니다.
[실험 2] 악성행위를 하는 악성코드 실행을 통한 실시간 탐지 정확도
악성코드를 전송하지 않고 악성 행위(다운로드, 생성 등)를 하는 악성코드를 직접 실행해 악성코드의 실시간 탐지 성능을 테스트하는 실험입니다. 25개의 악성코드를 예외 폴더에 넣고 악성코드 1개씩 실행한 후 탐지 결과를 확인하는 방식으로 테스트를 진행하였습니다.
[실험 3] 대량의 악성코드가 담긴 USB 플래시 드라이브의 물리적인 연결을 통한 실시간 탐지 정확도
대량의 악성코드(20,330개)가 담긴 USB 플래시 드라이브를 사전에 준비하고 PC에 직접 물리적으로 연결해 악성코드를 탐지하는 테스트이며, 사용자에게 검사 여부를 물어보거나 버튼을 클릭하여 검사를 해야 하는 안티바이러스 제품이 있었습니다.
[실험 4] 대량의 악성코드가 담긴 압축 파일 해제를 통한 실시간 탐지 정확도
[실험 3]과 동일한 악성코드 샘플 20,330개를 사용하였으며, 실험 3번은 USB 플래시 드라이브를 이용해 탐지 정확도를 측정한 실험이라면 [실험 4]는 사전에 악성코드 압축 파일(20,330개)를 예외 폴더에 저장하고 Controller로 특정 폴더에 압축을 해제하여 탐지하는 테스트입니다. 압축 해제 시간이 소요되어 압축 해제가 끝나고 각 안티바이러스의 탐지 숫자가 멈출 때까지 대기하여 탐지 결과를 확인했습니다. 특이하게 똑같은 악성코드 샘플이었지만, 실험 3번과 4번의 정확도가 확연하게 차이가 있음을 알 수 있었는데, 이는 정밀검사(실험 3, 매체 연결시 정밀검사 수행)와 실시간 검사의 차이로 추정됩니다.
[실험 5] 3개월 이내 수집된 최신 악성코드 실시간 탐지 정확도
해당 실험은 3개월 이내 정부기관 및 자체 크롤링 시스템으로 수집된 최근 발생한 악성코드 151개에 대한 탐지 테스트입니다. 수집된 악성코드는 알려지지 않거나 혹은 최근에 국내・외에 발생 된 악성코드에 대한 탐지 정확도를 확인할 수 있는 실험이며, 방법은 [실험 1]과 동일하게 Controller와 Agent를 이용해 151개의 악성코드를 전송하여 탐지하는 테스트를 진행하였습니다.
[실험 6] 자체 분석이 완료된 악성코드에 대한 실시간 탐지 정확도
국내 보안 기업(주식회사 엔키)와 통해 완벽하게 분석된 악성코드 6,363개의 샘플을 확보하였고, 이를 통해 실시간 탐지 정확도 실험하였습니다. 실험에 사용된 악성코드 샘플은 문서형 악성코드가 약 80% 이상으로 구성되어있는 특징이 있습니다.
[실험 7] 상용 패킹 도구를 활용한 패킹 된 악성코드에 대한 실시간 탐지 정확도
상용 패킹 도구인 Themida를 이용하여 패킹 된 악성코드에 대한 탐지 정확도를 확인하는 실험입니다. 패킹 도구인 Themida의 특성상 실행 파일만 가능했기 때문에 실행형 악성코드 50개를 패킹하여 테스트 샘플로 사용하였습니다. Agent와 Controller를 이용해 PC 전송시켜 테스트를 진행하였습니다.
글을 마치며
저희 연구팀은 안티바이러스 기능 및 성능 평가를 통해 다음과 같은 생각을 하게 되었습니다. 당연히 악성코드를 잘 탐지하는 것이 안티바이러스의 당연한 숙명이겠지만 제품마다 어떠한 방식으로 탐지하는지, 탐지 대상(네트워크, 파일 형태, 이벤트, 행위, 매체, 저장 장소 등)의 우선 순위에 따라 제품의 기능 및 성능이 다소 차이가 나기에 “최고의 안티바이러스가 이것이다”라고 꼽을 수는 없다는 것입니다. 따라서, 사이버 위협으로부터 개인의 PC와 소중한 디지털 자산을 지키기 위해 본인 스스로가 PC 및 사용 환경에 맞는 안티바이러스를 선택하여 설치하고, 주기적인 탐지 DB 업데이트와 바이러스 진단을 통해 사이버 위협을 줄이는 것이 무엇보다 중요하겠습니다. 이후 저희 안티바이러스 시험 분석 연구팀은 매년 안티바이스러 제품을 평가하고 세부 결과를 상세히 공개할 계획에 있으니 많은 관심 가져주시면 감사하겠습니다.
1 명이 이 글에 공감합니다.