본문 바로가기

카테고리 없음

바이너리 표층분석(1)

1. 이미 알려진 안티 바이러스인지 검색

 

VirusTotal

 

VirusTotal

 

www.virustotal.com

- 분석하려는 파일에 악성코드가 포함되어 있는지 확인 할 수 있는 사이트 

- 파일을 선택하고 분석을 누르면 여러 바이러스 엔진에서 가지고 있는 데이터 베이스를 활용할 수 있음

 

* 예제로 실행해본 방법은 다음과 같음

 

                               

 

1) 분석하고자 하는 파일의 해시값을 계산(본 예제에서는 MD5)

 

 

 

2) 계산한 해쉬값을 virustotal 사이트 search 탭을 이용하여 검색

 

 

 

3) detection 탭에 들어가서 어떤 바이러스 엔진들에서 이 프로그램의 해쉬를 악성코드로 탐지하는지 확인

 

- 이외에도 summary, details, relations, behavior, community 탭에서 해당 바이너리에 대한 세부 내용을 참고할 수 있음

 

 

 

 

- 내가 계산한 해시 값과는 다른 해시값이지만 탐지가 되었음. 다른 해시 알고리즘으로 분석 대상 바이너리 해시를 구해본 결과 virustotal 사이트에서 보여주는 해시값을 sha256으로 계산한 값임

- 여러 해시 알고리즘으로 계산한 결과를 보유하고 있어 인식이 가능한걸로 판단됨

 

 

2. PE 파일 분석

- 도구 목록

PEiD : PEiD Download Free for Windows 10, 7, 8 (64 bit / 32 bit) (softfamous.com)

PEview : PEview version 0.9.9 ( .zip 31KB ) (wjradburn.com)

Dependencies : Download Dependencies (github.com)

 

- 위 도구 목록은 분석하려고 하는 바이너리의 형식이 PE 파일 형식일 때, 표층 분석을 하기 위해 사용할 수 있는 것들임

- PE 파일 헤더 분석을 통해 코드에 관한 정보, 바이너리의 유형, 바이너리와 함께 실행되는 라이브러리, 필요한 메모리 크기 등을 알 수 있음. 

- Windows 시스템의 경우 여러 파일 유형이 있지만, 지금은 실행 파일, 라이브러리 모두 PE 파일 형식이라고 봐도 무방할정도로 PE 파일 형식을 많이 사용

 

* PEiD를 통해 획득, 판단 가능한 정보는 다음과 같음

1) 패킹 여부

2) 빌드할 시 사용한 컴파일러 정보

 

* PEview를 통해 획득, 판단 가능한 정보는 다음과 같음

1) PE 파일 헤더 정보에 대한 세부 내용

 

* Dependencies 를 통해 획득, 판단 가능한 정보는 다음과 같음

1) 바이너리에 import 된 DLL

2) 바이너리에 import 된 DLL에서 사용 가능한 함수 목록

3) export 정보

 

 

- PE 파일 헤더 내 정보는 다음과 같음

1) Imports : 바이너리가 사용하는 라이브러리 함수 정보

2) Exports : 바이너리가 제공하는 함수 정보

3) Time Data Stamp : 프로그램이 컴파일된 시간

4) Sections : 바이너리 내에 포함된 섹션명과 디스크, 메모리의 크기

5) Subsystem : 프로그램의 유형(CMD?, UI?)

6) Resources : 파일 내에 포함된 문자열, 아이콘, 메뉴 등의 정보

 

3. 모의 분석

 

1) 분석 대상 바이너리가 컴파일 된 시간은?

 

 

분석대상 바이너리를 PEview의 입력하여 얻은 결과

 

 

- 분석 대상 바이너리는 PE 파일 형식을 따르므로 IMAGE_NT_HEADERS를 확인하여 분석해야함

- 헤더 정보에는 바이너리가 컴파일된 시간이 Time Data Stamp에 기록되어 있음

- 분석 대상 바이너리는 2010/12/19 16:16:19 UTC 에 컴파일된 것으로 판단됨

* 델파이로 작성된 프로그램의 경우 고정된 시간을 컴파일 시간으로 기록하기 때문에 실제 컴파일 시간을 알기 어려움

--> 델파이 참고 :  델파이 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

2) 파일이 패킹 혹은 난독화 되었을까?

 

 

 

 

- PEiD로 분석한 결과 별도의 패커를 사용한 흔적은 없음.

- 패킹 혹은 난독화가 되어있을 경우 컴파일러 버전이 나타난 박스(Microsoft Visual C++ 6.0)에 패커 이름이 나타남(물론 PEiD가 인식할 수 있는 패커일 경우)

- Q. 도구의 힘을 빌려야만 패킹, 난독화를 판단할 수 있을까?