콘텐츠로 이동

TinyTracer - 언팩을 위한 API/명령어 트레이서 치트시트

TinyTracer - 언팩을 위한 API/명령어 트레이서 치트시트

TinyTracer (hasherezade 작성)는 Intel Pin을 기반으로 구축한 동적 추적 도구다. 타겟 실행 파일을 실행하고 API 호출과 선택된 명령어의 트레이스로그를 생성하며, 각 이벤트를 모듈에 상대적인 오프셋 (RVA)으로 로깅하여 재배치된 코드도 출력이 의미 있게 유지된다. Pin은 낮은 수준에서 계측하기 때문에 TinyTracer는 패커 스텁이 사용하는 대부분의 안티-디버그 트릭의 영향을 받지 않는다. 이는 샘플의 **원래 진입점 (OEP)**을 정확히 찾고 실제로 무엇을 하는지 보는 데 탁월하다.

승인된 멀웨어 분석용. 신뢰할 수 없는 샘플은 고립된 VM/샌드박스에서만 실행하라.

요구사항

  • Intel Pin (동적 바이너리 계측 프레임워크)
  • Windows (x86/x64) 분석 VM
  • TinyTracer의 컴파일된 TinyTracer.dll (Pintool)

설치

단계방법
Pin 가져오기Intel Pin 다운로드 및 PIN_ROOT 설정
TinyTracer 가져오기릴리스 다운로드 또는 Pintool 빌드
헬퍼 스크립트번들된 run_me.bat / 인스톨러 헬퍼 사용
확인알려진 EXE에 대해 실행 및 .tag/로그 출력 확인

트레이스 실행

# 개념적 호출 (번들된 헬퍼 또는 pin 직접 사용)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
플래그목적
-t TinyTracer.dllTinyTracer를 Pintool로 로드
-o FILE트레이스로그 (.tag) 경로
-m MODULE모듈로 추적 제한
-b기본 블록 / 더 세밀한 이벤트 추적
-- target args추적할 프로그램 및 해당 인수

트레이스로그 포함 사항

항목의미
RVA;called: FUNCAPI 호출, 모듈-상대 주소
Section transitions섹션 간 실행 이동 (언팩)
TLS callbacks조기 안티-분석/실행 훅
Sub-calls선택적으로, 내부 호출 대상

RVA 기반 로깅이 핵심이다: 패커가 언팩하고 새 코드로 점프한 후에도, 항목은 모듈에 앙커로 남아 있어 디스어셈블러로 다시 매핑할 수 있다.

OEP 찾기

고전적 사용: 패커 스텁이 끝난 후 실행이 내려오는 곳을 보자.

단계찾을 것
1TinyTracer 아래에서 패킹된 샘플 실행
2이전에 기록되지 않은 섹션으로의 점프 보기
3첫 번째 “실제” API 버스트 (GetModuleHandle 등) 언팩된 코드 표시
4RVA 참고 — 해당 영역이 OEP 후보
5해당 시점에 덤프 (예: PE-sieve와 함께) 및 정적 분석

도구 키트와의 통합

도구TinyTracer 옆에서의 역할
PE-sieveOEP에서 발견된 언팩된 모듈 덤프
x64dbgOEP RVA에 중단점 설정 깊은 분석용
Detect It Easy추적 전에 패커 식별
Ghidra추적된 RVA를 디스어셈블리로 매핑

일반적인 워크플로우

# 샘플 API 사용의 행동 추적
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → 의심스러운 API 시퀀스 (암호화, 네트워크, 주입)에 대해 sample.tag 검토

# 알려지지 않은 패커를 위한 OEP 사냥
# 1) 추적, 2) 언팩된 코드로 섹션 전환 찾기,
# 3) PE-sieve로 덤프, 4) 깨끗한 바이너리 분석

TinyTracer vs 관련 방법

측면TinyTracerx64dbg (수동)API Monitor
근거Pin 계측대화형 디버거API 훅킹
안티-디버그 저항높음ScyllaHide 필요중간
출력RVA 트레이스로그대화형라이브 API 로그
최고자동 OEP/행동 추적직접 스텝핑API 호출 보기

자료