-
PDF 파일 구조 분석
연재 순서 첫번째 글: PDF 파일 구조 분석 두번째 글: PDF 취약점과 진단 방안 세번째 글: 악성 PDF 파일 진단 1. 분석 목적 PDF 파일의 구조를 파악하여 취약점을 확인하고 파일의 악성 여부 진단이 가능하도록 한다. 2. PDF의 구조 PDF 파일은 <그림 1-1> 과 같이 크게 Header, Body, Cross Reference Table, Trailer 부분으로 이루어 진다. (1) PDF Header 8 Byte의 크기를 가지며, PDF 파일의 Signature 값과(%PDF) 버전정보를 담는다. (2) PDF Body PDF 의 Body 영역은 PDF...
-
안드로이드 실행 파일 포맷 - dex (3)
연재 순서 첫번째 글: classes.dex 파일 포맷 (Header, String IDs) 두번째 글: classes.dex 파일 포맷 (Type IDs, Proto IDs) 세번째 글: classes.dex 파일 포맷 (Field IDs, Method IDs) 네번째 글: classes.dex 파일 포맷 (Class Defs, Map List) 1. classes.dex 추가 파일 포맷 이전 글에 이어 계속 설명을 이어갑니다. (5) Field IDs Field 정보 역시 헤더에 시작 위치와 개수가 저장되어 있다. print hdr['field_ids_size'] # 전체 Field 정보 개수 print hex(hdr['field_ids_off']) # 전체 Field 정보 시작 위치...
-
안드로이드 실행 파일 포맷 - dex (2)
연재 순서 첫번째 글: classes.dex 파일 포맷 (Header, String IDs) 두번째 글: classes.dex 파일 포맷 (Type IDs, Proto IDs) 세번째 글: classes.dex 파일 포맷 (Field IDs, Method IDs) 네번째 글: classes.dex 파일 포맷 (Class Defs, Map List) 1. classes.dex 추가 파일 포맷 이전 글에 이어 계속 설명을 이어갑니다. (3) Type IDs 다음은 classes.dex가 보유하고 있는 type들이다. 이 역시 헤더에 type 정보의 시작 위치와 개수가 저장되어 있다. print hdr['type_ids_size'] # 전체 Type 정보 개수 print hex(hdr['type_ids_off'])...
-
OLE 파일 구조 분석 (3)
연재 순서1. OLE 파일 구조 분석 (1) - Header, BBAT, SBAT 2. OLE 파일 구조 분석 (2) - Root Storage 3. OLE 파일 구조 분석 (3) - Stream Object Stream Object 스트림은 OLE 파일 중에서 가장 큰 비중을 차지하고 있는 데이터이다. 스트림의 데이터(오브젝트)를 읽기 위해서는 Root Storage(Root Entry)를 통해 모든 디렉터리들을 먼저 읽어와야 한다. 스트림은 디렉터리의 타입이 Stream (0x02)인 경우를 말하며 헤더에 정의된 Max Small Stream Size보다 크기가 작은 경우 Small Stream, 같거나 클 경우...
-
OLE 파일 구조 분석 (2)
연재 순서1. OLE 파일 구조 분석 (1) - Header, BBAT, SBAT 2. OLE 파일 구조 분석 (2) - Root Storage 3. OLE 파일 구조 분석 (3) - Stream Object Root Storage Sector ID Root Storage는 최상위 폴더로서 Small Sector와 다른 스트림, 스토리지들을 포함하고 있기 때문에 헤더 다음으로 가장 먼저 읽어야 되는 항목이다. 이를 읽기 위해서는 헤더에서 Root Storage Sector ID(0x30 ~ 0x33)을 읽어서 BBAT를 참조해야 된다. Root Storage를 읽으면 OLE 파일의 전체적인 구조를 파악할 수...
-
안드로이드 실행 파일 포맷 - dex (1)
연재 순서 첫번째 글: classes.dex 파일 포맷 (Header, String IDs) 두번째 글: classes.dex 파일 포맷 (Type IDs, Proto IDs) 세번째 글: classes.dex 파일 포맷 (Field IDs, Method IDs) 네번째 글: classes.dex 파일 포맷 (Class Defs, Map List) 1. classes.dex 파일 (1) APK 내부에는 classes.dex 파일명으로 Dalvik Executable File1이 존재한다. 이는 안드로이드에서는 실행 파일에 속하는 파일이다. import mmap fp = open('classes.dex', 'rb') mm = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) #--------------------------------------------------------------------- # TEST #--------------------------------------------------------------------- print mm [실행결과] <mmap.mmap object...
-
OLE 파일 구조 분석 (1)
연재 순서1. OLE 파일 구조 분석 (1) - Header, BBAT, SBAT 2. OLE 파일 구조 분석 (2) - Root Storage 3. OLE 파일 구조 분석 (3) - Stream Object OLE File Format OLE란 Object Linking and Embedding 약자로서 객체 연결 및 삽입을 뜻하며 복합 이진 파일 형식(Compound File Binary Format)이라고도 한다. Microsoft에서 제작한 OLE File Format은 마치 하나의 작은 파일 시스템과 같은 구조를 지니고 있어 상/하위 파일 버전에 대한 뛰어난 호환성을 가지고 있다. 그렇기에 MS...
-
디스크 이미지 파일 포맷 - ISO
개요 ISO 이미지(ISO image)는 국제 표준화 기구(ISO)가 제정한 광학 디스크의 압축 파일(디스크 이미지)이다1. 최근 이메일을 이용한 첨부 파일 형태의 공격 중 iso를 이용한 형태가 급증하고 있다. 결국 ISO 파일 내부에 존재하는 별도의 파일을 추출해야지만 악성코드를 탐지할 수 있다. ISO 구조 ISO 파일은 디스크 이미지인 만큼 섹터 단위로 구성되어 있다. 하나의 섹터의 크기는 2048(0x800) Byte이다2. ISO 구조를 해석하기 위해서는 볼륨 디스크립터부터 해석을 해야 하며 16 섹터에 위치하고 있다. 볼륨 디스크립터 구조 볼륨 디스크립터에서 볼 수 있듯이...