ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 📌 Entry Point와 .text 섹션의 관계: 악성코드 분석 관점에서 이해하기
    네트워크 Network/보안 2025. 4. 9. 14:24

    컴퓨터에서 실행 파일이 동작할 때, 시스템은 그 파일의 어느 위치부터 실행을 시작해야 하는지 알아야 합니다.
    이때 중요한 역할을 하는 것이 바로 "Entry Point(EP)"입니다.

     

    EP에 대한 내용을 접할 때, 저의 경우에는 Entry Point가 .text 섹션에 위치한다는 것은 실행 즉시 코드가 시작된다는 의미"라는 설명이 다소 추상적으로 느껴졌습니다. 이를 쉽게 설명해 보고자 다음 내용을 정리합니다.

     

    이 글에서는 EP가 .text 섹션에 위치한다는 의미가 무엇인지, 그리고 악성코드에서는 어떻게 달라질 수 있는지를 분석 관점에서 정리하였습니다.


    🧠 Entry Point란?

    Entry Point (EP)는 실행 파일이 메모리에 로드된 뒤, CPU가 처음으로 명령어를 실행하기 시작하는 지점입니다.
    이 위치는 PE(Portable Executable) 포맷에서는 RVA(Relative Virtual Address) 형태로 기록되어 있습니다.

    💡 쉽게 말해:
    "실행 버튼을 눌렀을 때, 프로그램이 첫 줄부터 실행되는 지점"이라고 생각하시면 됩니다.


    📦 .text 섹션이란?

    .text 섹션은 실행 파일 내에서 "실제 실행 코드(기계어)"가 저장되는 주요 섹션입니다.
    일반적으로 읽기(Read)와 실행(Execute) 권한을 가지며, 대부분의 정상 프로그램은 이 영역에서 실행을 시작합니다.


    ✅ EP가 .text 섹션에 위치한다는 의미

    "EP가 .text에 있다"는 말은 다음과 같은 의미를 가집니다:

    • 실행 즉시 코드 섹션에서 실행이 시작됨
    • 정상적인 실행 흐름을 따르고 있음
    • 분석자가 디버깅할 때 불필요한 복호화/압축 해제 없이 바로 분석 가능

    이것은 분석자 입장에서 매우 긍정적인 신호입니다. 곧바로 .text에서 디버깅을 시작하면 프로그램이 무엇을 하는지 쉽게 추적할 수 있기 때문입니다.


    ❗ 반례: EP가 .text가 아닌 경우 (악성코드 및 패킹된 실행 파일)

    악성코드나 패킹된 PE 파일에서는 EP가 .text 외의 섹션에 위치하는 경우가 많습니다. 이는 분석을 어렵게 만들기 위한 방어 기법입니다.


    📦 예1: 패커(UPX 등)로 압축된 파일

    • EP 위치: .UPX0 섹션
    • 설명: .UPX0은 실행 파일을 압축한 후, 압축을 해제하는 코드를 포함하는 섹션입니다.

    실행 흐름:

    1. EP → .UPX0에서 실행 시작
    2. 압축 해제 루틴 실행
    3. 메모리 상에 .text 등의 원본 코드 복원
    4. 복원된 코드로 점프
    5. 정상 실행 흐름 시작

    대표 사례:

    • UPX로 압축된 정상 유틸리티
    • 악성코드가 분석을 회피하기 위해 UPX로 위장

    📌 참고: UPX 공식 사이트는 오픈소스 패커로, 분석자가 UPX로 패킹된 파일은 upx -d로 쉽게 압축을 해제할 수 있습니다.


    🧨 예2: 악성코드 - .stub 섹션이 EP인 경우

    • EP 위치: .stub
    • 설명: .stub은 종종 악성코드에서 자기 복호화 루틴, 안티 디버깅, 환경 체크 코드 등이 위치하는 섹션입니다.

    실행 흐름:

    1. EP → .stub
    2. 환경 탐지, 디버깅 체크
    3. 조건이 충족되면 메모리 상에 악성코드 복호화
    4. 복호화된 PE 구조를 직접 로딩
    5. 실제 악성코드 실행 시작

    대표 사례:

    • NanoCore RAT, Remcos RAT 등
    • .stub 섹션은 종종 쉘코드의 실행 지점으로 활용됨

    🧬 예3: 악성코드 - .reloc 섹션이 EP인 경우

    • EP 위치: .reloc
    • 설명: .reloc은 원래 재배치(Relocation) 테이블이 위치하는 섹션입니다. 하지만 악성코드는 이 공간을 쉘코드나 로더 저장 용도로 오용하기도 합니다.

    실행 흐름:

    1. EP → .reloc
    2. 암호화된 페이로드 또는 쉘코드 실행
    3. 메모리 내에서 정상 PE 복원 또는 악성 루틴 실행
    4. 이후 .text나 다른 섹션으로 점프

    대표 사례:

    • APT 공격에서 메모리 기반 실행을 위한 로더
    • Fileless Malware에서 초기 진입 루틴으로 활용

    💡 Fileless Malware란?
    디스크에 악성 파일을 저장하지 않고, 메모리에서 직접 실행되어 흔적을 남기지 않는 악성코드입니다.


    📊 요약 정리 표

    섹션 정상 용도 악용 방식 대표 사례
    .text 실행 코드 저장 - 정상 PE 대부분
    .UPX0 압축된 코드 영역 해제 루틴 실행 UPX 패킹 파일, 포장된 악성코드
    .stub 초기 복호화/로더 안티 디버깅, 쉘코드 실행 NanoCore, Remcos
    .reloc 재배치 정보 쉘코드/로더 실행 APT, Fileless Malware

    🧩 마무리

    EP가 .text에 있지 않다는 것은 분석자의 접근 난이도를 높이기 위한 장치일 수 있음을 의미합니다.
    분석 대상의 EP를 확인하는 것은 정적 분석의 첫 단계이자, 패킹 여부나 악성 행위 여부를 판단하는 중요한 힌트가 됩니다.

    👉 추후 .text가 아닌 EP를 가진 PE 파일을 발견했다면, 먼저 패킹, 인젝션, 복호화 루틴 가능성을 의심해보세요.


    이 글이 도움이 되셨다면, 댓글과 공감 부탁드립니다!

Designed by Tistory.