반응형
압축 프로그램은 여러 개의 파일을 비손실 압축을 통해 하나의 파일로 만든다.
어떤 파일 내부에 또 다른 파일이 존재할 경우 임베딩 파일이라는 표현을 사용하기도 한다.
임베딩 파일을 압축 파일의 상위 개념으로 생각해도 좋음.
hello 라는 문자열을 압축하면 문자열 길이가 5에서 13으로 증가하는 현상 발생.
이미 충분히 짧은 문자열은 압축을 하지 않고 압축 파일의 헤더만을 추가함. : 솔리드 압축
OpenAV 문서에서 압축 파일을 처리하는 방식
- 압축 파일들을 Virtual File System으로 취급
- Virtual File System은 디렉토리, 파일의 개념이 존재함
- Virtual File System Interface를 통해 폴더 내부로 이동하여 파일 I/O 처리
- 키콤 백신에서는 압축 파일을 임베딩 파일 개념으로 처리
- 임베딩 파일로부터 파일을 추출해서 악성코드 검사가 가능한 일반 파일일떄까지 반복
ZIP file 여부 확인
import zipfile
zipfile.is_zipfile(file)
True/False
Zip file 읽기 모드로 열기
zf = zipfile.Zipfile(file, 'r')
Zip 파일 내부 목록
zf.nameList()
['1.zip', '2.txt', '3.zip']
압축 파일 내부 파일을 검사하기 위해서는 파일을 읽어야 함.
buf = zf.read('2.txt')
len(buf)
with open('2.txt', wb) as fp:
fp.write(buf)
zf.close()
읽은 후에는 다시 압축 파일안에다 동일한 이름으로 써서 압축해야 함
만약 압축 파일 구조가 복잡하다면 악성코드 검출 후 깊이에 따른 재압축 로직 생각해야 함.
압축 모듈은 커널에서 불러올 때 참조하는 리스트의 가장 하단에 가급적 위치
압축을 해제하고 다시 악성코드 검사 모듈들을 호출해서 검사해야 함.
만약 압축 파일이 아니면 압축 파일 모듈 순서 이전에 끝나므로 압축 모듈은 가장 우선순위가 낮아야 한다.
반응형
'Security' 카테고리의 다른 글
HTML 파일 포맷 검출 로직 (0) | 2022.01.01 |
---|---|
보안 탐지 알고리즘 (0) | 2021.12.31 |
Machine Learning & Security (0) | 2021.12.30 |
Python plugin engine architecture (키콤) (0) | 2021.12.27 |
백신 배포본 만들기 (pyinstaller) (0) | 2021.12.22 |