본문 바로가기

Project/Anti-Virus (Python)

1. 백신 개발에 필요한 지식

백신을 개발하기 위해서는 다양한 선수 지식들이 필요하다.

그 중 절대적으로 알아야할 지식들을 몇가지 알아보자.


1.1 운영체제의 동작 원리

1.1.1 실행 파일의 실행 순서

 어떠한 악성코드는 운영체제의 실행 파일의 실행 순서를 이용하는 경우도 있다. 예를 들면, 이름이 같은 특정 파일들이 존재한다. 하지만, 이 파일들은 각기 다른 확장자를 가지고 있다. exe, bat, com이다. 사용자가 정확한 확장자 없이 파일명으로만 파일을 실행하려고 하면 운영체제는 정확한 파일을 찾기 위해 제일 먼저 com 확장자를 검색한다. 그 다음이 exe, bat이다. 만약 검색 과정에서 com 확장자를 발견했다면 해당 파일은 실행이 되고 이후의 확장자 검사는 추가로 하지 않는다.

파일 확장자 우선 순위 : com → exe → bat


1.1.2 실행 파일의 메모리 매핑 관계

 악성코드를 검사하기 위해서는 악성코드가 하드디스크의 파일로 있을 때도 중요하지만, 상황에 따라서는 메모리에서 실행 중인 프로세스의 형태를 이해하는 것도 중요하다. 특히, 윈도우 실행 파일인 PE 파일이 메모리에서 실행 중일 때 메모리 매핑 관계는 잘 알고 있어야 한다.


1.1.3 파일 시스템의 이해

 악성코드 중에는 루트킷(Rootkit)으로 분류되는 형태가 있다. 이는 일반적인 사용자가 사용하는 탐색기 등을 이용해서는 절대 악성코드를 눈으로 식별할 수 없다. 루트킷은 실제로 운영체제가 제공하는 파일 목록을 구하는 함수를 속이는 기능을 한다. 이 함수를 사용하는 탐색기는 악성코드 파일이 없는 것으로 처리한다. 백신 또한 탐색기처럼 운영체제가 제공하는 파일 목록을 구하는 함수를 사용한다. 따라서 악성코드 파일을 찾지 못한다. 이를 해결하기 위해서 백신은 운영체제가 제공하는 함수 대신 파일 시스템을 직접 분석하여 파일 목록을 구한다.




※ 참고 서적 : 파이썬으로 배우는 Anti-Virus 구조와 원리 (최원혁 지음)

'Project > Anti-Virus (Python)' 카테고리의 다른 글

5. 다양한 악성코드 진단/치료  (0) 2019.03.17
4. 전용백신 개발하기  (0) 2019.03.16
3. 개발환경 구축  (0) 2019.03.15
2. 악성코드와 백신  (0) 2019.03.15
개요  (0) 2019.03.15