EICAR test file 백신 만들기
EICAR test file?
https://www.eicar.org/download-anti-malware-testfile/
백신 테스트용 "가짜" 바이러스이다.
악성 행위는 하지 않고 그냥 악성
windows 보호를 잠깐 꺼놓고
메모장에
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
이 문자열을 복붙하고
확장자를 .com으로 하면 된다.
그러나 EICAR 파일은 16비트 DOS 프로그램으로 64비트 환경에서는 추가로 환경을 세팅해줘야 함
-> 백신이 탐지하기에 .txt만 써도 되니 따로 환경은 설정 안함.
기본 이론
정탐 & 오탐 & 미탐
정탐: 정상을 정상으로, 악성을 악성으로 탐지
오탐: 정상을 악성으로 탐지
미탐: 악성을 정상으로 탐지
-> 악성코드 탐지에서는 미탐이 오탐보다 더 치명적!!!
탐지 방법
시그니처 기반 탐지
이미 발견하고 분석한 악성 코드의 고유한 특징(시그니처)를 이용해 탐지하는 방법
- 장점
빠름
이미 알려진 바이러스는 잘 잡아냄 - 단점
신종, 변종 바이러스엔 약함해커가 코드를 살짝만 수정해도 탐지 피하기 가능
휴리스틱 탐지
악성코드가 공통적으로 보이는 특징과 패턴을 rule-base로 점수를 매겨 탐지
- 장점
시그니처 탐지 방법보다 더 유연한 탐지 - 단점
오진의 가능성
행위 기반 탐지
동적으로 파일을 실행하며 행동을 감시
이때 밀폐된 환경인 샌드박스에서 파일을 돌린다
- 장점
새로운 악성코드를 탐지하는데 가장 효과적 - 단점
자원이 많이 들음
치료
- 수리
만약 감염된 파일의 바이트를 되돌리는 법을 알고 있다면 정상으로 되돌리기
https://arxiv.org/pdf/1306.4666 <- 여기에 바이러스로 손상된 바이트에 대한 내용 - 격리
치료 불가능하거나 위험하면 실행 차단 - 삭제
웜 같이 파일 자체가 악성코드인 경우 파일 자체를 삭제하면 된다 - 시스템 복구/재설치
심각한 손상일 경우 걍 포맷하고 다시 설치
실제 구현
매우 단순한 시그니처 기반으로 구현하겠다.
문자열 탐지
맨 앞의 3바이트를 보면 X5O이다.
"EICAR의 앞 3바이트는 X5O" 이라는 시그니처를 가지고 탐지를 할 수 있다.
# 문자열로 진단
if (fbuf[0:3] == b'X5O'):
print("virus!")
# 치료하기
#os.remove('EICAR.txt') # 삭제로 치료는 주의가 필요
else:
print("benign!")
물론, 탐지하는 문자열이 많을수록 오탐은 적어진다
해시 탐지
앞에서는 일부 문자열만 가지고 시그니처를 잡았지만,
파일의 해시값으로 탐지하는게 더 일반적이다.
해시값은 virustotal에서 알 수 있다.

여기서 구한 MD5 해시를 가지고 탐지를 해보겠다.
MD5 = 44d88612fea8a8f36de82e1278abb02f
import sys
import hashlib
import os
# EICAR.txt 파일 읽기
fp = open('EICAR.txt', 'rb')
fbuf = fp.read()
fp.close()
# MD5 해시를 이용한 진단
if (hashlib.md5(fbuf).hexdigest() == '44d88612fea8a8f36de82e1278abb02f'):
print("virus!")
# 치료하기
#os.remove('EICAR.txt') # 삭제로 치료는 주의가 필요
else:
print("benign!")
hashlib.md5에서 파일에서 읽은 바이트를 md5해시로 바꿔주고
이걸 virustotal에서 가져온 md5 해시랑 비교한다.
모든 자료는 여기에
https://github.com/VeryBigsilver/malware-vaccine/tree/main/1_EICAR
'악성코드와 백신 > 백신 개발일지' 카테고리의 다른 글
| [백신 개발](6)[Import table을 이용한 탐지] (0) | 2026.03.17 |
|---|---|
| [백신 개발](5)[시그니처 탐지] (0) | 2026.03.13 |
| [백신 개발](4)[바이러스 db] (0) | 2026.03.05 |
| [백신 개발](3)[EICAR 변종 탐지] (0) | 2026.03.04 |
| [백신 개발](1)[악성코드 & 백신이란?] (0) | 2026.02.24 |