|  |
| --- |
| 시리즈 일부 |
| 정보 보안 |
|  |
| 
관련 보안 분류 |
| * 인터넷 보안
* 자동차 보안
* 사이버 전쟁
* 컴퓨터 보안
* 모바일 보안
* 네트워크 보안
 |
| 
위협 |
| * 지능형 지속 공격
* 사이버 범죄
* 취약점
* 도청
* 악성 소프트웨어
* 스파이웨어
* 랜섬웨어
* 트로이 목마
* 바이러스
* 웜
* 루트킷
* 부트킷
* 키로깅
* 스크린 스크레이퍼
* 취약점 공격
* 백도어
* 논리 폭탄
* 페이로드
* 서비스 거부 공격
* 웹 셸
* 피싱
 |
| 
방어 |
| * 컴퓨터 접근 제어
* 애플리케이션 보안
	+ 바이러스 검사 소프트웨어
	+ 소프트웨어 개발 보안
	+ 기본상 보안
	+ 설계상 보안
	+ 보안 운영 체제
* 인증
	+ 다요소 인증
* 허가
* 데이터 중심 보안
* 암호화
* 방화벽
* 침입 탐지 시스템
* 모바일 보안 게이트웨이
* 런타임 응용 프로그램 자체 보호 (RASP)
 |
| * v
* t
* e
 |

**바이러스 검사 소프트웨어**(영어: Antivirus Software 안티바이러스 소프트웨어[\*], 문화어: 비루스검사소프트웨어, 비루스방역프로그람)는 악성 소프트웨어를 찾아내서 제거하는 기능을 갖춘 컴퓨터 프로그램이다. 대한민국에서는 이를 지칭하는데 **백신 프로그램**이라는 말이 일상용어로 사용되고 있다. 한국에서 백신이라는 용어는 V3의 초기 버전인 V1, V2, V2PLUS로 인해 대중적인 용어가 되었다.

원래 목적은 바이러스만 잡는 것이었으나, 현대에는 악성코드, 피싱 공격, 트로이 목마, 웜 등도 검출한다. 바이러스 검사 소프트웨어는 보통 다음과 같은 두 가지 기술을 사용하여 이를 수행한다:

* 바이러스 데이터베이스의 정의와 일치하는 바이러스를 확인하기 위해 파일의 내용을 살핀다.
* 감염으로 표시될 가능성이 있는 컴퓨터 프로그램에서 의심이 가는 행동을 찾아낸다. 이 기술은 발견적 분석이라고 부른다. 이러한 분석은 자료 포착, 포트 감시 등의 방식을 포함할 수 있다.

보통 상용 바이러스 검사 소프트웨어는 이 두 가지 기능을 모두 사용한다.

역사
--

첫 백신 프로그램이 무엇인가는 확실하지 않다. 다만 처음으로 문서화된 컴퓨터 바이러스 제거 프로그램은 1987년 발표된 **번트 픽스**(Bernd Fix)인 것으로 알려져 있다.

폴란드의 컴퓨터 바이러스를 제거하는 프로그램 **MKS vir**은 1987년 발표되었다. **닥터 솔로몬의 안티바이러스 툴킷**, **AIDSTEST**와 **AntiVir** 등도 1988년 발표되었다. 한국에서도 안랩(舊 안철수연구소)의 창립자 안철수 박사가 1988년 6월 10일 V1 (이후 보편화된 V3의 전신)이라는 백신 프로그램을 제작하여, 당시 맹위를 떨치던 바이러스 (c)Brain을 잡는데 큰 공헌을 하였다. 1990년 후반 즈음에는, 19개의 바이러스 검사 프로그램이 나타났으며, 노턴 안티바이러스 등이 대표적인 예였다. 이 당시 컴퓨터 바이러스 연구를 한 사람들로는 한국의 안철수 박사를 비롯해 프레드 코헨, 존 맥아피 등이 있다.

인터넷이 광범위하게 퍼지기 전에는, 바이러스는 플로피 디스크를 통해 퍼져나갔다. 바이러스 검사 프로그램이 1980년대 후반에 나타났으나, 업데이트는 비교적 느렸다. 이 시기에 바이러스 검사 소프트웨어는 실행 파일과 플로피 디스크, 하드 디스크의 부트 섹터를 검사하는 것으로 되었다. 하지만, 인터넷 사용이 보편화되면서, 바이러스는 인터넷을 통해 퍼지기 시작하였다.

마이크로소프트 워드 같은 워드 프로세서 프로그램의 매크로 기능 역시 위험을 증가시켰다. 바이러스 제작자들은 매크로를 사용해 문서에 바이러스를 첨부하기 시작하였다. 이것은 문서 파일의 숨겨진 매크로를 통해 바이러스에 감염될 수도 있다는 뜻이었다.

이후 아웃룩 익스프레스 같은 전자 우편 프로그램도 전자 우편에 첨부된 바이러스의 위험에 노출되었다. 현재는 전자우편을 여는 것만으로 감염되는 바이러스도 제작된 상태이다. 이로 인해 바이러스 검사자들은 더 다양한 종류의 프로그램을 체크해야 하게 되었다. 그 결과 V3, 노턴 안티 바이러스, 알약 같은 다양한 백신 프로그램들은 **라이브 업데이트**라는 기능으로 실시간 업데이트를 지원하고 있다. 하지만 바이러스에 대한 업데이트가 있기 전에 광범위하게 바이러스를 퍼뜨리는 제로데이 공격 등으로 인해 아직도 위험은 존재하는 상황이다.

접근 방식
-----

### 사전 데이터베이스

바이러스 데이터베이스 접근에서 바이러스 검사 소프트웨어가 파일을 찾아내면, 바이러스 검사 프로그램을 만든 사람이 정의해 놓은 "알려진 바이러스"의 데이터베이스를 참조한다. 파일 안의 코드 일부가 데이터베이스의 바이러스와 일치하면, 바이러스 검사 프로그램은 다음의 과정 가운데 하나를 수행할 수 있다.

1. 파일 안의 바이러스 자체를 제거하여 파일을 고치려고 시도한다.
2. 파일을 차단한다. (다른 프로그램이 해당 파일에 접근할 수 없으며, 바이러스는 퍼지지 않는다.)
3. 감염된 파일을 삭제한다.

### 의심스러운 동작

의심스러운 동작이 접근한다고 하여 알려진 바이러스를 확인하려고 시도하지는 않지만, 모든 프로그램의 동작을 감시한다. 이를테면, 어느 프로그램이 실행 프로그램에 데이터를 기록하려고 한다면 바이러스 검사 소프트웨어는 이러한 의심스러운 동작을 사용자에게 알리고 무엇을 할 것인지 물어 본다.

사전 데이터베이스 접근과 달리, 의심스런 동작의 접근은 데이터베이스에 없는 새로운 바이러스에 대한 보호를 제공한다. 그러나 수많은 오진이 일어날 수 있으며, 사용자는 모든 경고에 둔감해지게 된다. 사용자가 경고가 뜰 때마다 "허용"을 누르면 바이러스 검사 소프트웨어는 어떠한 작업도 수행하지 않는다. 그러므로 현대에 나온 바이러스 검사 소프트웨어는 이 기술을 되도록 적게 사용한다.

### 다른 접근

어떠한 바이러스 검사 소프트웨어는 다른 종류의 발견적 분석을 사용한다. 이를테면, 제어권을 어떠한 실행 파일에 이행하기 전에 시스템이 호출하는 새로운 실행 파일의 코드의 시작 부분을 가상으로 구현하려고 할 수 있다. 해당 프로그램이 자가 정정 코드를 사용한다거나 바이러스인 것처럼 보인다면 바이러스가 실행 파일을 감염시킬 가능성이 있다고 추측할 수 있다. 그러나 이러한 방식은 많은 오진을 낳을 수 있다.

다른 감지 방식의 경우 샌드박스를 사용하여 수행한다. 샌드박스는 운영 체제를 가상으로 구현하여 이 시뮬레이션 안에서 실행 파일을 실행한다. 프로그램을 종료한 다음, 소프트웨어는 샌드박스를 이용하여 바이러스로 보이는 변경 사항을 분석한다. 컴퓨터 성능 문제 때문에 이러한 종류의 검출은 사용자가 요청할 때에만 이루어진다. 또한 이러한 방식은 바이러스가 비결정적이며 실행시 다른 동작을 수행할 경우 실패할 가능성도 있다.

바이러스 검사 프로그램의 오진
----------------

2007년 12월 연구는 바이러스 검사 소프트웨어의 효율성이 수년 전에 비해 얼마큼 줄었는지를 보여 준다. (특히 "제로데이" 공격 등과 관련하여) 독일의 컴퓨터 잡지 *c't*에 따르면, 바이러스를 잡아낼 확률이 20~30%로 떨어졌으며, 전년에 40~50%였던 것에 비해 대조적이다. 오직 한 대의 제품만이 신뢰할 만한 68%의 검진율을 기록했다.

이러한 문제는 바이러스를 제조하는 사람들의 의도가 바뀜에 기인한다. 몇 해 전까지만 해도 바이러스가 감염된 사실은 명백하였다.