본 게시글은 책 <악성코드 분석 시작하기> 의 내용을 정리한 글 입니다.

 

악성코드 분석 시작하기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

1.4 문자열 추출

- 문자열 (String) : 파일에 포함된 출력 가능한 ASCII와 유니코드의 순차적인 문자 집합

 

- 문자열 추출은 프로그램 기능과 의심 바이너리 관련 지표에 대한 단서를 제공

> 파일명, URL, 도메인명, IP 주소, 공격 명령어, 제시트리 키 등을 포함

> 악성코드가 파일을 생성한다면 해당 파일명이 바이너리 안에 문자열로 저장

> 공격자가 통제하는 도메인명을 악성코드가 호출한다면 해당 도메인명이 문자열로 저장

> 파일의 목적과 기능에 대한 명확한 단서는 아니지만, 악성코드가 할 수 있는 일에 대한 힌트를 제공

 

- 리눅스에서는 strings 유틸리티를 사용해 문자열을 추출할 수 있음 (기본적으로 최소 4문자 이상인 ASCII 문자열 추출)

> -a 옵션 : 전체파일에서 문자열 추출

> -el 옵션 : 유니코드 추출

> 바이너리에서 유용한 정보를 얻으려면 때때로 ASCII와 유니코드 문자열 모두를 추출해야 함

- 윈도우에서는 ASCII와 유니코드 문자열 모두를 표현해 주는 pestudio를 사용

> pestudio는 훌륭한 PE 분석 도구로 의심 바이너리의 악성코드 초기 점검이 가능

> PE 실행 파일에서 유용한 정보의 여러 힌트를 얻을 수 있음

- FLOSS (FireEye Labs Obfuscated String Solver)는 악성코드에서 난독화된 문자열을 자동을 추출하고 식별하고자 디자인된 도구

> 악성코드는 탐지를 회피하고자 문자열 난독화(String Obfuscation) 기법을 사용

> 난독화가 적용된 경우 strings 유틸리티를 이용해 문자열 추출 불가

1.5 파일 난독화 파악

- 악성코드 제작자는 악성코드 바이너리를 일반적으로 난독화하거나 보호

> 난독화 기술은 바이너리를 탐지/분석하기 어렵게 하기 때문에 추출할 수 있는 문자열이 거의 없음

> 악성코드 제작자는 보안 제품의 탐지 회피 및 분석을 방해하고자 패커 (Packer)크립터 (Cryptor) 같은 프로그램을 자주 사용

 

- 패커 (Packer)

> 실행 파일을 입력받아 실행 파일의 내용을 압축해 난독화하는 프로그램

> 난독화한 파일은 새로운 실팽 파일의 구조체에 저장

> 패킹 (Packing)한 프로그램을 실행하면 압축해제 루틴이 실행되고 메모리에 원본 바이너리를 추출한 후 실행

 

- 크립터 (Cryptor)

> 패커와 유사하나, 실행 파일의 내용을 난독화하고자 압축 대신 암호화를 사용

> 암호화한 내용은 새로운 실행 파일에 저장

> 암호화한 프로그램을 실행하면 실행할 때 복호화 루틴을 실행해 원본 바이너리를 메모리에 추출한 후 실행

 

- UPX 패커 적용

> UPX는 압축 기법을 사용하기 때문에 패킹한 바이너리가 원본 바이너리보다 크기가 작음

> 패킹한 바이너리에 strings 명령을 실행하면 난독화한 문자열을 보여 주고 가치 있는 정보를 노출하지 않음 -> 난독화하는 이유

- 윈도우에서는 Exeinfo PE를 이용해 파일 난독화 탐지

> Exeinfo PE : 윈도우에서 패커를 탐지하는 도구

> 패킹된 파일을 Exeinfo PE에 로딩하면 패킹 정보와 패킹 해제에 사용할 명령어에 대한 힌트도 제공

> 정상적인 실행 파일 대부분은 파일 내용을 난독화하지 않기 때문에 패킹을 했다면 악성코드일 확률이 매우 높음

- 패커, 크립터 탐지를 도울 수 있는 다른 CLI와 GUI 도구 
> TrID
> TRIDNet
> Detect it Easy
> RDG Packer Detector

> packerid.py

> PEiD

+ Recent posts