1. 이미 알려진 안티 바이러스인지 검색
- 분석하려는 파일에 악성코드가 포함되어 있는지 확인 할 수 있는 사이트
- 파일을 선택하고 분석을 누르면 여러 바이러스 엔진에서 가지고 있는 데이터 베이스를 활용할 수 있음
* 예제로 실행해본 방법은 다음과 같음
- 이외에도 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) 분석 대상 바이너리가 컴파일 된 시간은?
- 분석 대상 바이너리는 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. 도구의 힘을 빌려야만 패킹, 난독화를 판단할 수 있을까?