-
[악성코드 분석 따라하기 4] 파일 유형 식별공부/악성코드 분석 2021. 8. 17. 02:42
악성코드를 분석할때 바이너리 파일의 유형을 구분하는 것은 목표 시스템과 아키텍처를 식별하는데 도움된다고 한다.
의심스러운 바이너리가 윈도우 실행파일을 위한 파일 포맷인 PE(Portable Executable) 이라면
해당 프로그램이 윈도우 타깃으로 제작된 사실을 추정가능할 수 있다.
-> 윈도우 기반 악성코드 대부분은 .exe , .dll , .sys , .drv , .com ,ocx 등으로 끝나는 확장자를 가진 실행파일이지만
확장자에만 의존하는 것은 권장하지 않는다. (이유는 파일 유형은 유일한 식별자가 아니기 때문이다.)
보통 공격자라면 다른 속임수를 써서 파일 확장자를 수정해 파일을 숨기거나 유저가 실행하도록 유도시킨다.
실제로 관제일을 하면서 메일을 통한 악성코드의 경우 확장자를 .pdf.exe 이런식으로 숨기거나 압축파일을 통하거나
엑셀 등 다양한 수법으로 사용자를 속이려고 했다.
따라서 파일 확장자 대신 파일 시그니처를 이용해 파일 유형을 구분할 수 있다.
파일 시그니처는 파일 헤더에 작성되는 바이트의 독특한 배열 순서다.
그래서 다른 파일들은 다른 시그니처를 가지므로 이를 식별하는 용도로 사용할 수 있다.
윈도우 실행파일 또는 PE파일은 파일 첫 바이트에 MZ 또는 헥사문자 4D 5A라는 시그니처를 가진다.
파일 시그니처를 확인하는 방법은
1. 메모장을 통한 확인 방법
.exe 파일을 메모장에 끌어당긴 경우 가장 간단한 방법으로 메모장을 이용해 확인 가능하다.
2. 헥사 편집기
수작업으로 파일 유형을 구분하는 방법으로는 헥사 편집기를 이용하여 파일 시그니처를 찾는방법이다.
HxD 헥사 편집기를 통하여 실행파일을 열면 확인할 수 있다. 헥사 편집기는 파일의 각 바이트를 관찰할 수 있어 파일 분석에 도움을 주는 여러 기능을 제공한다.
리눅스에서 파일 시그니처를 찾고자한다면 xxd 명령어를 사용하면
다음과 같이 헥사 덤프를 생성한다.
xxd 명령어를 이용한 파일 시그니처 분석 또 다른 방법으로는 리눅스에서 file 유틸리티를 이용하여 식별할 수 있다.
3. CFF Explorer
윈도우에서 CFF Explorer를 이용하여 파일 유형을 구분 할 수 있다.
그리고 CFF Explorer를 포함한 익스플로러 스위트를 이용하면 PE 내부 구조를 검사하고 필드 수정과 리소스 추출까지 가능하다.
CFF Explorer 를 이용한 .exe 파일 분석 4. Python를 이용한 유형 구분
파이썬에서는 python-magic 모듈을 이용해 파일 유형을 구분할 수 있다.
임의로 만든 파일이라.. 빈값이 출력된다. '공부 > 악성코드 분석' 카테고리의 다른 글
[악성코드 분석 따라하기 5] 악성코드 식별 (0) 2021.08.17 [악성코드 분석 따라하기 3] 윈도우 VM 환경 설정 (0) 2021.07.27 [악성코드 분석 따라하기 0] vmware OS 설치 (0) 2021.07.27 [악성코드 분석 따라하기 2] 우분투 InetSIm 환경 설정 (0) 2021.07.22 [악성코드 분석 따라하기 1] Ubuntu Desktop 환경에서 inetsim 설치 (0) 2021.07.15