Project/Anti-Virus (Python) (8) 썸네일형 리스트형 7. 악성코드 진단/치료 모듈 분리 7.1 악성코드 진단 모듈 만들기 앞서 정리한 글에서 악성코드는 꾸준히 증가하고 있다고 하였다. 그렇다면 악성코드 패턴 또한 증가한다는 말이다. 만약에 악성코드 패턴이 백신 프로그램 내부에 존재한다면 악성코드가 증가할때마다 백신 프로그램을 수정하여 재배포하여야 하는 불편함이 존재한다고 했다. 이를 방지하기 위하여 악성코드 패턴을 'virus.db' 파일로 따로 분리하였다. 백신 프로그램에는 악성코드 패턴 말고도 자주 수정이 되어야 하는 것들이 존재한다. 가장 빈번한 수정이 필요한 것은 바로 악성코드 진단/치료 기능이다. 이번 글에서는 악성코드 진단/치료 기능을 분리하는 방법을 알아보겠다. 7.1.1 MD5 진단 모듈 만들기size = os.path.getsize(fname) if vsize.count(s.. 6. 악성코드 패턴 분리하기 6.1 악성코드 패턴을 별도 파일로 분리6.1.1 virus.db 파일 생성 'antivirus.py'의 VirusDB에 담긴 내용을 별도의 파일인 'virus.db'로 분리한다. 파일에 저장된 악성코드 패턴의 구성은 '악성코드 파일 크기:MD5 해시:악성코드 이름'이다. 이렇게 별도의 파일로 만듦으로써 기존의 VirusDB에 저장되어 있던 악성코드 패턴을 필요없으므로 다 지운다. 6.2 virus.db 파일에서 악성코드 패턴 로딩6.2.1 virus.db 파일에서 VirusDB로 악성코드 패턴 로딩 'virus.db' 파일에는 악성코드 패턴이 한 줄 단위로 저장되어 있다. 이 파일로부터 악성코드 패턴을 로딩하는 함수를 따로 만든다. 아래의 'LoadVirusDB()'이다.def LoadVirusDB().. 5. 다양한 악성코드 진단/치료 5.1 새로운 악성코드 준비 이전에 전용백신 테스트를 위해 'eicar.txt' 파일을 만들어 사용하였다. 지금부터는 하나의 악성코드가 아닌 다양한 악성코드를 사용하여 백신 테스트를 해볼 것이기 때문에 또 다른 악성코드 파일을 준비해야 한다. 실제로 사용하는 악성코드 또는 실시간 감지기에 탐지되는 악성코드 테스트 파일은 사용하지 않고, 별도로 만들어서 사용하도록 하겠다. 파일 이름은 책에서 사용한 파일과 같은 'dummy.txt'이다. 'dummy.txt' 파일은 63바이트로 MD5 해시값을 미리 알아두어야 한다. MD5 해시값을 찾아주는 코드는 따로 'hmake.py'라는 이름으로 만들어 두었다. import hashlib import sys def hmake(): if len(sys.argv) != .. 4. 전용백신 개발하기 4.1 전용백신이란? 특정한 악성코드 하나를 진단하고 치료하는 백신을 의미한다. 다양한 악성코드를 진단하고 치료하는 일반백신보다 검사 속도가 빠르고 정확한 치료를 한다는 장점을 가지고 있다. 하지만 일반적인 백신에 비해 당연하게도 다양한 악성코드를 진단하거나 치료하지 못한다. 4.2 EICAR 전용백신 개발 실제 악성코드를 사용하여 백신 개발을 시작하기에는 상당히 조심해야할 점들이 많다. 그렇기 때문에 사용하는 것이 바로 EICAR 파일이다. 4.2.1 EICAR 파일이란? EICAR 파일은 현존하는 대부분의 백신에서 악성코드로 진단하는 파일이다. 4.2.2 EICAR 파일의 대체 파일 준비 처음에 실습을 했을 때에는 EICAR 파일을 사용하였다. 하지만, 이 파일을 사용하기 위해서는 호스트 PC에서 사.. 3. 개발환경 구축 개요에서 설명했듯이 책의 내용을 철저하게 공부하면서 내용을 따라갈 것이기 때문에 개발 언어로는 Python을 사용할 것이다. Python 에디터로는 Pycham을 사용하겠다. ※ 참고 서적 : 파이썬으로 배우는 Anti-Virus 구조와 원리 (최원혁 지음) 2. 악성코드와 백신 2.1 악성코드2.1.1 악성코드란? 컴퓨터에 악영향을 미칠 수 있는 모든 소프트웨어의 총칭이다. 과거에는 디스크 복제 등 저장매체를 따라 전파되었으나 네트워크의 발전으로 이메일이나 웹으로 감염되는 경우가 훨씬 많아졌다. 2.1.2 악성코드의 역사 가장 영향력 있었던 악성코드 15개Brain(1986) : 최초의 PC 바이러스Morris(1988) : 인터넷에 연결된 컴퓨터의 약 10%가 이 웜에 의해서 감염Michelangelo(1992) : 언론에 주목받은 최초의 바이러스Concept(1995) : 최초의 매크로 바이러스Melissa(1999) : 글로벌 감염에 따른 악성코드에 의한 대량 메일 발송 시대를 만듦Slammer(2003) : 전 세계적으로 네트워크를 마비시킨 웜, 1.25 대란Cabir(.. 1. 백신 개발에 필요한 지식 백신을 개발하기 위해서는 다양한 선수 지식들이 필요하다.그 중 절대적으로 알아야할 지식들을 몇가지 알아보자. 1.1 운영체제의 동작 원리1.1.1 실행 파일의 실행 순서 어떠한 악성코드는 운영체제의 실행 파일의 실행 순서를 이용하는 경우도 있다. 예를 들면, 이름이 같은 특정 파일들이 존재한다. 하지만, 이 파일들은 각기 다른 확장자를 가지고 있다. exe, bat, com이다. 사용자가 정확한 확장자 없이 파일명으로만 파일을 실행하려고 하면 운영체제는 정확한 파일을 찾기 위해 제일 먼저 com 확장자를 검색한다. 그 다음이 exe, bat이다. 만약 검색 과정에서 com 확장자를 발견했다면 해당 파일은 실행이 되고 이후의 확장자 검사는 추가로 하지 않는다.파일 확장자 우선 순위 : com → exe →.. 개요 나만의 안티바이러스 프로그램을 만드는 프로젝트이다.이 프로젝트는 '파이썬으로 배우는 Anti-Virus 구조와 원리 (최원혁 지음)'을 읽고 시작하기로 결심했다.이 책의 저자인 최원혁님은 우리가 흔히 알고 있는 바이로봇 개발자이다.책에서 백신의 기본 원리와 관련 지식들을 아주 이해하기 쉽고, 지루하지 않게 잘 풀어주었다.이번 프로젝트는 책의 내용을 철저히 따라갈 것이다.때문에 사용할 언어는 Python이다. 프로젝트가 끝나고 나면 바로 C/C++로 변형하는 작업을 다음 프로젝트로 진행할 것이다. ※ 참고 서적 : 파이썬으로 배우는 Anti-Virus 구조와 원리 (최원혁 지음) 이전 1 다음