hhkb.dev

BLOG

2025-12-03 / 악성코드 · 02

기드라 PE 분석 보고서 샘플

1. 분석 개요

정적 분석 보고서 형식으로 정리한 예시다.

  • 대상 파일: training_sample.exe
  • 분석 방식: Windows PE 정적 분석 (Ghidra)
  • 작성자: 유희현
  • 작성일: 2025-12-03

2. 파일 개요

파일 특성은 아래처럼 볼 수 있다.

  • 파일명: training_sample.exe
  • 파일 형식: PE32+ (64-bit) Windows GUI
  • 컴파일러 추정: MSVC (Visual Studio 기반)
  • 목적: 실행 로그 기록 및 사용자 메시지 출력
  • 위협 수준: 낮음 (비악성 학습용 샘플)

3. 진입점 및 실행 흐름

프로그램은 표준 Windows PE 실행 구조를 따른다.

entry
 ├── FUN_140001808 (보안 쿠키 초기화)
 └── FUN_1400012c4 (CRT 초기화)
        └── FUN_140001070 (실제 실행 로직)

핵심 로직은 FUN_140001070 안에서 수행된다.

4. Import Table 기반 행위 예측

임포트만 봐도 대략적인 동작 방향을 추정할 수 있다.

  • CreateFileA: 파일 생성 또는 열기. 파일 조작 행위로 이어질 수 있다.
  • WriteFile: 데이터 기록. 로그 축적이나 데이터 저장 흔적을 볼 때 확인한다.
  • SetFilePointer: 파일 끝에 이어쓰기. 누적 로그 패턴과 연결된다.
  • MessageBoxA: 사용자 UI 조작. 사회공학성 연출에도 악용될 수 있다.
  • Sleep: 일정 시간 지연. 동적 분석 회피에 자주 쓰인다.
  • GetTickCount: 시간 측정. 조건 기반 동작 여부를 볼 때 참고한다.

일부 행위 패턴은 악성코드와 겹치지만, 이것만으로 악성이라고 단정할 수는 없다.

5. WinMain(FUN_140001070) 디컴파일 분석

주요 동작 순서는 이렇다.

  1. 콘솔을 생성하고 실행 메시지를 출력한다.
  2. 현재 시간을 기록한다.
  3. C:\\temp\\training_sample.log 파일에 로그 문자열을 추가한다.
  4. 메시지 박스를 출력한다.
  5. 5초간 대기한다.
  6. 종료 메시지를 출력한 뒤 콘솔을 해제한다.

분석 중 확인한 주요 문자열은 아래와 같다.

"[TRAINING] sample started."
"[TRAINING] sample log entry\\r\\n"
"[TRAINING] exiting after %lu ms.\\n"
"C:\\\\temp\\\\training_sample.log"

로그 파일 생성 동작은 아래 흐름으로 보인다.

hFile = CreateFileA("C:\\\\temp\\\\training_sample.log", GENERIC_WRITE, FILE_SHARE_READ,
                    NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

SetFilePointer(hFile, 0, NULL, FILE_END);
WriteFile(hFile, "[TRAINING] sample log entry\\r\\n", length, ...);

6. 행위 분석 평가

행위별 평가는 아래처럼 정리할 수 있다.

  • 파일 시스템 영향: 존재 (로그 기록)
  • 사용자 인터페이스 영향: 존재 (메시지 박스)
  • 분석 지연 요소: 존재 (Sleep)
  • 네트워크 통신: 없음
  • 권한 상승 또는 시스템 변경: 없음
  • 데이터 유출 가능성: 낮음

7. 악성 여부 판단

일부 행위는 악성코드가 흔히 쓰는 방식과 닮아 있다. 다만 이 샘플은 단순 로그 기록과 사용자 알림만 수행하며, 외부 통신이나 권한 획득 같은 악성 행위는 확인되지 않는다.

최종 결론은 악성 성격을 가지지 않는 학습용 샘플이다.

8. IOC (Indicators of Compromise)

실습 기준으로 확인되는 IOC는 아래 정도다.

  • 파일 경로: C:\temp\training_sample.log
  • 로그 문자열: [TRAINING] sample log entry

9. 개선사항 및 보안 관점 제언

학습용 샘플이라도 아래 부분은 오해를 줄이도록 다듬는 편이 낫다.

  • 로그 기록 경로: 사용자가 쉽게 접근하는 임의 경로 사용은 피하는 편이 안전하다.
  • Sleep 사용: 분석 우회 요소로 오해받기 쉬우니 의도를 분명히 적어두는 편이 낫다.
  • 메시지 표시: 학습용 샘플임을 더 명확히 보여주면 사용자 혼란을 줄일 수 있다.