악성코드와 백신/백신 개발일지

[백신 개발](3)[EICAR 변종 탐지]

황올뱀 2026. 3. 4. 14:07

변종 탐지

EICAR 파일의 변종을 탐지해보자!

 

EICAR_new.txt

X5O!P%@AP[4\PZX54(P^)7CC)7}$HWANGALLBAM!!!!$H+H*

이번엔 안에 들어있는 문자열이 달라진 EICAR의 변종이다

 

기존의 EICAR 해시로 탐지하는 백신을 돌려보면,


정상이라고 뜬다...

이걸 해결하는 방법은 이 해시 또한 백신이 악성코드라 인식할 수 있게 알려주는 것이다.
    md5 = e0d01e4135f4839f4a3c58a33ff7cf96

 

이떄 이 시그니처들을 효율적으로 관리하기 위해 python의 list, dictionary와 같이 여러 데이터를 다룰 수 있는 자료구조를 채택한다.
나는 dictionary로 짜봤다.

import sys
import hashlib
import os

# EICAR_new.txt 파일 읽기
fp = open('EICAR_new.txt', 'rb')
fbuf = fp.read()
fp.close()

malware_hash = {
    "44d88612fea8a8f36de82e1278abb02f": "EICAR.txt",
    "e0d01e4135f4839f4a3c58a33ff7cf96": "EICAR_new.txt"
    }

# MD5 해시를 이용한 진단
input_hash = hashlib.md5(fbuf).hexdigest()
if input_hash in malware_hash:
    print("virus!")
    print(f"it's {malware_hash.get(input_hash)}!!!")
    # 치료하기
    #os.remove(malware_hash.get(input_hash)) # 삭제로 치료는 주의가 필요
else:
    print("benign!")

 

더 효율적인 백신??

해시 말고도 여러 특징이 활용될 수 있다.
크기, 문자열 등등...
이런걸 효율적으로 관리할 자료구조는 생각해봐야 한다...

 

모든 자료는 여기에
https://github.com/VeryBigsilver/malware-vaccine/tree/main/2_EICAR_new

반응형