개념 사전 · 개념

악성코드 분석

Malware analysis · 악성 코드 분석

은 파일 구조·코드·실행 행위를 조사하여 무엇을 하고 어떤 조건에서 영향을 주는지 설명하는 작업이다. 의심 표식과 관찰한 행위, 최종 악성 판단의 확신도를 분리한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 해시·형식·서명·문자열로 사본과 초기 분석 범위를 정한다.
  • 정적 코드와 격리 실행 관찰을 교차 대조한다.
  • 파일··네트워크 증거를 사건 대응에 전달한다.

02어떤 순서로 동작하나

  1. 사본 식별

    획득 출처·시각·해시를 기록하고 분석할 사본과 원본을 구분한다.

  2. 초기 분류

    파일 형식·크기·섹션·import·문자열·엔트로피 등을 읽어 분석 우선순위를 정한다.

  3. 코드 구조 추적

    호출 규약·자료 흐름·분기를 실제 명령어와 대조한다. 디컴파일된 의사코드를 원본 소스로 간주하지 않는다.

  4. 조건부 실행 관찰

    격리된 분석 환경에서 입력·실행 조건을 명시하고 ·파일·연결 등 행위를 수집한다.

  5. 증거 교차검증

    정적 기능과 동적 행위, 와 사건 자료를 비교하여 확인된 사실·가설·미관찰 조건을 나눈다.

03먼저 알아둘 용어와 구성요소

프로그램을 실행하지 않고 파일과 코드 구조를 조사하는 방식.
격리한 조건에서 실행하며 실제 행위와 상태 변화를 관찰하는 방식.
파일 해시·도메인·경로처럼 관련 흔적을 찾는 식별 단서.
실행 파일의 코드를 변환·압축해 실행 중 복원하는 기술로 악성 여부와 동의어는 아니다.
Portable Executable; 실행 파일의 대표적 형식.
이미지 기준 주소로부터의 상대 가상 주소.
실제 로드 기준 주소에 를 더해 얻는 가상 주소.
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는 안전한 검사 시험 자료이며 악성 행위 분석 전체를 대신하지 않는다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

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

05혼동하기 쉬운 점과 확인 기준

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

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.