정보보안심화 · 13분 읽기

악성코드 분석: 정적·동적·리버싱

악성코드 분석은 파일의 이름이 아니라 실제 구조와 행동을 설명하는 과정이다. 안전한 증거 보존과 여러 관찰 결과의 교차 확인이 우선이다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. 파일 형식·문자열·함수 호출을 서로 다른 분석 단서로 구분한다.
  2. 동적 실행의 전제와 관찰 지점을 설명한다.
  3. 리버싱 결과를 행동 증거와 탐지 가능한 특징에 연결한다.

01개념과 구성 요소

  • 실행하지 않고 해시·형식·문자열· 구조·명령어를 분석한다.
  • 격리된 조건에서 실제 실행 행위와 파일··네트워크 변화를 관찰한다.
  • 도구의 표식 하나가 아니라 여러 관찰과 성립 조건을 연결해 기능·영향·확신도를 설명한다.

02분석 사본을 사건의 근거로 바꾸는 순서

  1. 획득 출처·시각·해시를 기록하고 분석할 사본과 원본을 구분한다.
  2. 파일 형식·크기·섹션·import·문자열·엔트로피 등을 읽어 분석 우선순위를 정한다.
  3. 호출 규약·자료 흐름·분기를 실제 명령어와 대조한다. 디컴파일된 의사코드를 원본 소스로 간주하지 않는다.
  4. 격리된 분석 환경에서 입력·실행 조건을 명시하고 ·파일·연결 등 행위를 수집한다.
  5. 정적 기능과 동적 행위, 와 사건 자료를 비교하여 확인된 사실·가설·미관찰 조건을 나눈다.

03분석은 관찰한 사실과 악성 의도를 분리한다

  • 은 파일의 구조·코드와 실행 시 행동을 연결해 기능과 영향을 설명하는 작업이다. 해시 하나가 알려진 표본과 일치하면 바이트 동일성의 근거가 되지만, 파일명이 같거나 보안 제품 몇 개가 탐지했다는 이유만으로 동일한 기능을 가진다고 확정하지 않는다.
  • 은 실행 전 구조를 읽고 은 특정 조건에서 발생한 행동을 관찰한다.
  • 분석 사본에 해시와 수집 시각을 붙인 뒤 triage로 우선순위를 정한다. 분석 대상이 실행 파일인지 스크립트·문서·압축 파일인지에 따라 파서와 조사 지점이 달라진다.
  • 파일 확장자보다 헤더와 실제 형식 판별을 앞에 두는 이유다.
LEARN THROUGH PRACTICE

EICAR 메일 자료에서 전달·탐지·실행을 구분하기

안전한 테스트 파일의 전달 경로와 보안 검사 결과를 분리해 기록한다.

실습 구성과 전제

  • 실제 악성코드 대신 공식 EICAR 테스트 자료 또는 무해한 파일만 자기 격리 메일 환경에서 사용한다.
  • 파일 이름·메일 수신만으로 탐지 성공 또는 우회를 단정하지 않는다.
  1. 수신 화면이 증명하는 사실부터 적는다

    • 받은 편지함의 첨부 존재는 메일 전달과 MIME 처리의 증거다. 첨부 이름이 EICAR 형태여도 실제 바이트가 표준 테스트 문자열인지 해시·내용으로 별도 확인해야 한다.
    • 첨부를 실행하지 않고 원본과 작업 사본을 분리한다. 메일 본문·첨부·헤더는 서로 다른 분석 대상이다.
    메일 악성코드 검사와 헤더 · 악성코드 샘플 탐지 테스트원본 크기로 보기 ↗
    • 받은 편지함에 eicar.com.txt라는 이름과 71 B 크기의 첨부가 보인다.
    • 화면에는 탐지 엔진 이름·판정·격리 로그가 없다. 수신 화면만으로 악성코드 검사 결과를 확정할 수 없다.
    확인 기준

    파일명·크기·해시·검사 로그를 각각 기록한다.

  2. 헤더로 메일의 전달 구조를 확인한다

    • MIME Content-Type과 boundary는 첨부를 담는 구조를 설명한다. Received·Delivered-To는 전달 경로를 좁히는 자료이지만 신뢰할 수 있는 서버가 추가한 구간을 구분해야 한다.
    • 메일 도착 시각을 검사 서비스의 처리 시각과 맞추고 허용·차단·격리 이유를 찾는다.
    메일 악성코드 검사와 헤더 · 악성코드 샘플 탐지 테스트원본 크기로 보기 ↗
    • Content-Type이 multipart/mixed로 표시되어 본문과 첨부를 여러 부분으로 담는 구조를 보여 준다.
    • Delivered-To·Received·Message-Id가 있어 전송 기록을 대응시킬 수 있다. 주소 값 자체는 보고서에 재전재하지 않는다.
    확인 기준

    같은 Message-ID·큐 ID·첨부 해시를 이용해 검사 결과를 연결한다.

  3. 분석 환경의 격리 범위를 점검한다

    • 테스트 파일에 대한 탐지는 실제 악성 파일의 모든 행위를 탐지한다는 보증이 아니다. 파일 검사·메일 경로·정책 적용의 일부를 확인하는 시험이다.
    • 별도의 샌드박스 자료를 읽을 때는 메모리 분리와 격리를 구분한다. 파일을 실행하는 은 네트워크·스냅샷·복구 조건을 추가로 요구한다.
    확인 기준

    전달 성공·엔진 탐지·정책 차단을 세 개의 결과로 남긴다.

실습에서 확인한 동작 원리

  • 파일 이름보다 실제 바이트와 검사 로그가 중요하다.
  • EICAR는 안전한 검사 시험 자료이며 악성 행위 분석 전체를 대신하지 않는다.

설정·출력 추가로 확인하기 55장

아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.

실습 화면 묶음 01 3장
8/27 - rkhunter, ospf(stub), Amavis · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「rkhunter」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
8/27 - rkhunter, ospf(stub), Amavis · 실습·개념 참고 화면 4원본 크기로 보기 ↗
  • 「rkhunter」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
8/27 - rkhunter, ospf(stub), Amavis · 실습·개념 참고 화면 5원본 크기로 보기 ↗
  • 「rkhunter」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 9장
9/16 cuckoo · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「cuckoo 란?」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 10원본 크기로 보기 ↗
  • 「실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 12원본 크기로 보기 ↗
  • 「Dynamic Analysis (프로세스 분석)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「환경 (실습 환경)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 4원본 크기로 보기 ↗
  • 「환경 (실습 환경)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 5원본 크기로 보기 ↗
  • 「환경 (실습 환경)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 6원본 크기로 보기 ↗
  • 「실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 8원본 크기로 보기 ↗
  • 「실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
9/16 cuckoo · 실습·개념 참고 화면 9원본 크기로 보기 ↗
  • 「실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 악성코드 분석 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 1장
Rootkit 점검 도구 설정 · rkHunter원본 크기로 보기 ↗
  • 학습 원본 · Rootkit 점검 도구 설정의 rkHunter에 수록된 화면·도식이다.
실습 화면 묶음 04 1장
격리 환경의 Metasploit·원격 세션 실습원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 05 1장
격리 환경의 Metasploit·원격 세션 실습원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
격리 환경의 Metasploit·원격 세션 실습원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 07 1장
격리 환경의 Metasploit·원격 세션 실습원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 08 1장
격리 환경의 Metasploit·원격 세션 실습원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 09 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 10 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 11 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 12 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 13 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 14 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 15 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 16 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 17 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 18 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 19 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 20 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 21 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 22 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 23 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 24 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 25 1장
격리 환경의 Metasploit·원격 세션 실습 · MSF-Venom원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 MSF-Venom에 수록된 화면·도식이다.
실습 화면 묶음 26 1장
격리 환경의 Metasploit·원격 세션 실습 · handler를 통한 자동화원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 handler를 통한 자동화에 수록된 화면·도식이다.
실습 화면 묶음 27 1장
격리 환경의 Metasploit·원격 세션 실습 · sc명령어 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 sc명령어 활용에 수록된 화면·도식이다.
실습 화면 묶음 28 1장
격리 환경의 Metasploit·원격 세션 실습 · 방화벽 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 방화벽 조정에 수록된 화면·도식이다.
실습 화면 묶음 29 1장
격리 환경의 Metasploit·원격 세션 실습 · 방화벽 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 방화벽 조정에 수록된 화면·도식이다.
실습 화면 묶음 30 1장
격리 환경의 Metasploit·원격 세션 실습 · 새 유저 생성하여 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 새 유저 생성하여 활용에 수록된 화면·도식이다.
실습 화면 묶음 31 1장
격리 환경의 Metasploit·원격 세션 실습 · 새 유저 생성하여 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 새 유저 생성하여 활용에 수록된 화면·도식이다.
실습 화면 묶음 32 1장
격리 환경의 Metasploit·원격 세션 실습 · 새 유저 생성하여 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 새 유저 생성하여 활용에 수록된 화면·도식이다.
실습 화면 묶음 33 1장
격리 환경의 Metasploit·원격 세션 실습 · 새 유저 생성하여 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 새 유저 생성하여 활용에 수록된 화면·도식이다.
실습 화면 묶음 34 1장
격리 환경의 Metasploit·원격 세션 실습 · 새 유저 생성하여 활용원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 새 유저 생성하여 활용에 수록된 화면·도식이다.
실습 화면 묶음 35 1장
격리 환경의 Metasploit·원격 세션 실습 · 피해자 세션 탈취 후 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 피해자 세션 탈취 후 조정에 수록된 화면·도식이다.
실습 화면 묶음 36 1장
격리 환경의 Metasploit·원격 세션 실습 · 피해자 세션 탈취 후 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 피해자 세션 탈취 후 조정에 수록된 화면·도식이다.
실습 화면 묶음 37 1장
격리 환경의 Metasploit·원격 세션 실습 · 피해자 세션 탈취 후 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 피해자 세션 탈취 후 조정에 수록된 화면·도식이다.
실습 화면 묶음 38 1장
격리 환경의 Metasploit·원격 세션 실습 · 피해자 세션 탈취 후 조정원본 크기로 보기 ↗
  • 학습 원본 · 격리 환경의 Metasploit·원격 세션 실습의 피해자 세션 탈취 후 조정에 수록된 화면·도식이다.
실습 화면 묶음 39 1장
바인드 연결과 역방향 연결 구조 · 바인드 쉘/리버스 쉘원본 크기로 보기 ↗
  • 학습 원본 · 바인드 연결과 역방향 연결 구조의 바인드 쉘/리버스 쉘에 수록된 화면·도식이다.
실습 화면 묶음 40 1장
분석용 가상 머신 환경 구성 · 발표할 내용원본 크기로 보기 ↗
  • 학습 원본 · 분석용 가상 머신 환경 구성의 발표할 내용에 수록된 화면·도식이다.
실습 화면 묶음 41 1장
은닉 실습에서 사용한 원본 입력 이미지원본 크기로 보기 ↗
  • 학습 원본 · 파일 은닉 실습의 입력 이미지이다. 뒤이어 기록된 처리 결과와 파일 크기 비교를 함께 읽는다.
실습 화면 묶음 42 1장
이미지 파일을 이용한 은닉 실습 · 엄브렐라원본 크기로 보기 ↗
  • 학습 원본 · 이미지 파일을 이용한 은닉 실습의 엄브렐라에 수록된 화면·도식이다.
실습 화면 묶음 43 1장
이미지 파일을 이용한 은닉 실습 · 엄브렐라원본 크기로 보기 ↗
  • 학습 원본 · 이미지 파일을 이용한 은닉 실습의 엄브렐라에 수록된 화면·도식이다.
실습 화면 묶음 44 1장
이미지 파일을 이용한 은닉 실습 · 엄브렐라원본 크기로 보기 ↗
  • 학습 원본 · 이미지 파일을 이용한 은닉 실습의 엄브렐라에 수록된 화면·도식이다.
실습 화면 묶음 45 1장
이미지 파일을 이용한 은닉 실습 · 엄브렐라원본 크기로 보기 ↗
  • 학습 원본 · 이미지 파일을 이용한 은닉 실습의 엄브렐라에 수록된 화면·도식이다.
동작·명령 참고 문서

04PE 헤더·섹션·Import가 알려주는 범위

  • 에서 헤더의 e_lfanew는 헤더 위치를 가리킨다. 서명과 COFF의 Machine, Optional Header의 entry point·image base·data directory, section table을 읽어 파일의 배치와 로딩 구조를 이해한다.
  • .text·.rdata·.data·.rsrc 이름은 관례이며 이름만으로 실제 권한과 내용을 확정할 수 없다.
  • 섹션의 파일 크기와 메모리 크기, 읽기·쓰기·실행 권한, import와 문자열의 교차 참조를 함께 보면 어떤 기능을 준비하는지 추정할 수 있다. 네트워크 API import는 통신 가능성의 단서이고 실제 연결 실행의 증거는 아니다.
  • 동적으로 API를 해결하거나 한 파일은 정적 import 목록에 기능을 드러내지 않을 수도 있다.
원리 심화

05PE의 VA·RVA·파일 오프셋

  • 가상 주소는 에 매핑된 주소다. 실제 로드 주소는 재배치·ASLR 때문에 파일의 선호 ImageBase와 다를 수 있다.
  • 는 이미지 시작 주소를 기준으로 한 상대 주소다. 실행 중 에서 실제 모듈 기준 주소를 빼면 해당 를 구할 수 있다.
  • 섹션의 VirtualAddress와 PointerToRawData는 메모리와 파일의 서로 다른 시작점을 가리킨다. 를 그대로 파일 오프셋으로 쓰지 않는다.
  • 섹션 안의 오프셋이 파일에 저장된 SizeOfRawData 범위인지 확인한다. 메모리에만 존재하는 0 초기화 영역에는 대응 파일 바이트가 없을 수 있다.
  • 주소 변환은 특정 바이트를 찾는 방법이다. Import·문자열·명령어가 보인다는 사실만으로 악성 동작의 실행을 증명하지 않는다.
예제로 추적

06가상 PE 주소를 파일 위치로 변환하기

  1. 실제 모듈 기준 주소=0x140000000, 조사 =0x140002120이라고 가정한다. 두 값은 교육용 가상 수치다.
  2. 0x140002120−0x140000000=0x2120이다. 먼저 이 를 포함하는 섹션을 찾는다.
  3. 그 섹션의 VirtualAddress=0x2000, PointerToRawData=0x600이면 섹션 내부 차이는 0x120이다.
  4. SizeOfRawData가 이 범위를 포함한다는 조건에서 파일 위치는 0x600+0x120=0x720이다.
  5. 섹션 내부 차이가 파일의 원시 데이터 길이보다 크면 같은 공식을 무조건 적용하지 않는다. 가상 꼬리 영역인지 잘못된 헤더인지 따로 판단한다.
검증·예외

07정적 도구의 주소와 실행 관찰이 안 맞을 때

  • 디버거가 표시한 실제 모듈 주소와 분석 도구의 ImageBase를 비교한다. ASLR 차이를 함수 변경으로 오해하지 않는다.
  • 패킹 해제·자기 수정·런타임 생성 코드 때문에 메모리와 디스크의 바이트가 다를 수 있다. 획득 위치와 시점을 함께 기록한다.
  • 손상·비정상 에서는 섹션 범위가 겹치거나 파일 끝을 넘을 수 있다. 파서의 경고와 실제 길이를 확인한다.
  • 주소·해시·바이트는 관찰 사실로, 함수 목적은 분석 해석으로 남긴다. 의사코드의 변수명이나 함수명은 원본 작성자의 의도를 보장하지 않는다.

08Packing·Entropy·서명은 단서이다

  • 높은 엔트로피는 압축·암호화·무작위 데이터 등 여러 원인으로 생긴다. 패커 이름이나 적은 import 수 역시 정상 보호 프로그램과 겹칠 수 있다.
  • 반대로 읽기 쉬운 문자열이 많다고 무해한 파일이라고 할 수도 없다. 여러 독립 단서를 연결해 분석의 다음 경로를 정한다.
  • 은 서명된 바이트와 서명 주체에 관한 정보를 제공하며 안전한 행동을 보증하지 않는다. 컴파일 타임스탬프·버전 리소스는 위조 가능한 메타데이터다.
  • 외부 평판에서 first seen·분석 시각·표본 관계를 읽을 때도 수집 시점의 관찰 범위와 파일 자체의 사실을 구분한다.

09x86-64 명령어와 함수 호출을 읽기

  • 는 명령 흐름, RSP는 스택 위치, RFLAGS는 조건 분기의 상태를 이해하는 데 쓰인다. 일반적인 call은 복귀 주소를 저장하고 ret은 복귀 주소를 이용한다.
  • cmp/test 뒤의 조건 점프가 어떤 비교 결과를 사용하는지 읽으면 입력에 따른 제어 흐름을 복원할 수 있다. 최적화로 프레임 포인터나 함수가 사라질 수 있으므로 익숙한 prologue 모양만 찾으면 놓칠 수 있다.
  • x64의 앞 네 정수·포인터 인자는 RCX/RDX/R8/R9이며 System V AMD64에서는 RDI/RSI/RDX/RCX/R8/R9를 사용한다. 운영체제와 ABI에 따라 같은 함수 호출도 다른 레지스터에 값이 놓인다.
  • x86의 little-endian에서 0x12345678이 메모리에는 78 56 34 12로 보인다는 사실도 덤프와 정수 해석을 연결한다.

10Ghidra의 의사코드가 원본 소스는 아니다

  • 디컴파일러는 기계어에서 자료형·변수·제어 구조를 추정한다. 함수 경계나 signedness가 잘못 추정되면 C처럼 보이는 코드도 원래 동작을 잘못 설명할 수 있다.
  • 의 명령, 인자 전달, 분기, 실제 메모리 접근 크기로 의사코드를 대조한다. 함수 이름은 자동 추정과 분석가가 부여한 의미를 구분한다.
  • 무해한 비교 함수부터 -O0와 최적화 빌드의 결과를 비교하면 분기가 조건부 이동으로 바뀌거나 상수 계산이 사라지는 과정을 이해할 수 있다.

11동적 분석은 실행 조건과 관찰 센서를 포함한다

  • 트리, 자식 실행 인자, 파일 생성, registry·service·scheduled task 변경, 질의, 연결, 메모리, mutex 등의 사건을 시간 순서로 연결한다. 동일 파일도 권한·운영체제·설정·사용자 동작·외부 응답에 따라 다른 분기를 실행한다.
  • 관찰 시간 동안 행동이 없었다는 결과는 그 조건에서 미관찰이라는 의미다.
  • 실행 전 스냅샷과 파일 목록, 실행 후 변경 목록을 비교하면 기존 환경의 잡음을 줄일 수 있다. 인터넷을 단순 차단하면 악성 동작도 일부 중단되므로 격리된 모의 서비스에서 어떤 조건을 제공했는지 기록한다.
  • 실제 운영 자격 증명과 공유 폴더가 들어간 은 실험 대상 밖으로 영향을 넓힐 수 있다.

12YARA는 문자열·바이트·조건을 조합한다

  • 규칙은 의 관리 정보, 의 검색 패턴, 의 참·거짓 조건으로 구성된다. 은 반드시 필요하다.
  • 아래는 무해한 교육 파일 두 문자열을 함께 찾는 예이며 악성코드 판정기가 아니다. ascii는 일반 바이트 표현, wide는 문자 사이 0 바이트가 들어가는 표현을 찾는 데 쓰이며 모든 문자 인코딩을 자동 처리한다는 뜻은 아니다.
  • 단일 흔한 문자열보다 파일 형식·크기·복수 고유 패턴처럼 독립 조건을 결합하면 범위를 줄일 수 있다. 너무 많은 변형·은 성능과 오탐에 영향을 준다.
  • 일치 문자열의 offset을 보면 규칙이 의도한 영역을 근거로 일치했는지 설명할 수 있다.
text
rule Training_Marker_Pair {
  meta:
    description = "Benign training marker pair"
  strings:
    $a = "LESSON_MARKER_ALPHA" ascii
    $b = "LESSON_MARKER_BETA" ascii
  condition:
    filesize < 1MB and all of them
}

원리를 설명하는 가상 학습 예시입니다.

13IOC·행동·분석 결론의 연결

  • 파일 해시·도메인·경로는 가 될 수 있으나 환경과 시각에 따라 의미가 달라진다. 파일 해시는 한 바이트만 바뀌어도 변하고, 공용 서비스 도메인은 정상 프로그램과 공유될 수 있다.
  • 지속성 생성→자식 실행→외부 연결처럼 맥락을 가진 행동 묶음은 단일 문자열과 다른 탐지 근거다.
  • 규칙은 알려진 양성 표본뿐 아니라 유사 정상 파일과 경계 파일에서도 평가해야 한다. 0건 탐지를 무해함의 증거로 쓰지 않고, 탐지된 문자열 하나를 자동 삭제 근거로 쓰지 않는다.
  • 분석 결론에는 관찰한 기능, 실행된 조건, 미확인 가설, 증거 해시와 시간 관계가 남아야 다른 사람이 재검토할 수 있다.

설명과 함께 보는 보조 도식

처리 과정

모식도 · 분석 증거의 결합

정적 해석과 동적 관찰을 서로 보완하는 자료로 다룬다.

전체 단계를 한 번에 읽기
  1. 01

    구조 확인

    실행 없이 파일의 형식과 특징을 조사한다.

  2. 02

    행동 관찰

    권한 있는 격리 환경에서 기준선과 비교한다.

  3. 03

    교차 확인

    정적 가설이 실제 변화와 일치하는지 본다.

  4. 04

    탐지 검증

    특징의 적용 범위와 오탐을 기록한다.

    일치
    악성 확정과 구분
구성요소와 데이터 이동을 단순화한 학습용 모식도입니다. 실제 제품의 모든 내부 모듈을 나타내지는 않습니다.
학습 확인

이해했는지 확인하기

  • 원본 해시와 분석 사본·도구·시간을 기록한다.
  • 정적 특징과 실제 행동을 구분하고 교차 확인한다.
  • 탐지 규칙을 정상 표본에도 적용해 오탐을 확인한다.

함께 확인할 공식 자료