[이론] 쉘 코드 개요

2025. 12. 19. 04:12·cs/sec
728x90

[이론] 쉘 코드 개요

쉘 코드의 개념과 구성요소

쉘 코드

주로 아키텍처 기계어 코드로 구성되어 있으며 기능에 다라 시스템 명령어, 함수 및 라이브러리 이름과 같은 문자열을 포함합니다.

공격대상 시스테멩서 주로 악성 기능을 구현하는데 사용되어 꼭 분석해야할 대상 중 하나입니다.

  • 주로 소프트웨어 취약점을 공격하는 익스플로잇 페이로드로 이용되는 작은 크기의 코드입니다.
  • 1990년대 익스플로잇 페이로드로 사용되었던 코드들이 주로 쉘을 시행시킨 데서 이름이 유래되었습니다.
  • 실제로는 페이로드로 사용되는 코드의 기능이 쉘을 실행시키는 것으로만 한정되지 않으며 다양한 작업을 수행할 수 있기 때문에 용어 변경에 대한 의견들이 존재하지만 오래된 관습으로 굳어진 용어입니다.
  • 기술적으로 쉘 코드의 용도 역시 익스플로잇의 페이로드로 한정되어 있는 것은 아니며 악성코드 등에 의해 다양한 상황과 목적에 활용됩니다.
  • 실행 파일의 형태를 갖추지 않고 기계어와 데이터만으로 이루어져 있으며 다양한 방법으로 메모리에 주입되어 실행되는 비교적 작은 크기의 코드를 지칭하는데 사용됩니다.

쉘 코드 분석 이유와 분석 목표

  • 익스플로잇, 문서형 악성코드, 코드 인젝션 기능을 활용하는 악성코드 등을 분석하는데 필수적이다.
  • 쉘 코드를 분석하는 목적은 기능 분석과 목적 규명이다.
  • 쉘 코드는 공격대상 시스템에서 악성 기능 구현에 필요한 문자열 및 데이터를 참조하고 함수를 호출합니다. 쉘 코드의 기능은 대부분의 경우 API나 라이브러리 함수를 이용하여 구현됨을 의미합니다.
  • 쉘 코드 분석시 중점 사항 
    • 첫째, 호출하는 라이브러리 함수나 API 식별하는 것
    • 둘째, 해당 라이브러리 함수나 API에 전달되는 파라미터를 확인하는 것

쉘 코드 분석 방법

  에뮬레이터를 이용한 동적 분석 디버거를 이용한 분석
설명 •에뮬레이터란?
가상주소공간, 라이브러리 환경 등을 구현해 주는 프로그램입니다.

•쉘 코드를 에뮬레이터가 구현한 가상환경에서 동작시키고 에뮬레이터는 쉘 코드의 동작을 추적하여 분석가에게 결과를 보여줍니다.
•디버거를 이용하여 호스팅 프로세스 내에 메모리 공간을 할당한 후 쉘 코드를 인젝션하는 방식입니다.
•CPU의 명령포인터(Instruction Pointer)값을 쉘 코드의 시작지점으로 강제 변경하여 디버깅합니다.
도구 •SCDBG(오픈소스 프로그램)
•Speakeasy
•XDBG
장점 •사용이 간편합니다. •쉘 코드의 동작 과정을 자유롭게 통제할 수 있습니다.
•정밀한 분석이 가능합니다.
단점 •에뮬레이터가 지원해주는 아키텍처유형에 제한이 있습니다.
•쉘 코드 동작 과정을 자유롭게 통제(상황에 따른 메모리의 데이터 및 코드 수정 등)하기 어렵습니다.
•아키텍처 명령어와 동작 방식에 대한 이해가 요구됩니다.
•디버거 사용 등 리버스 코드 엔지니어링에 대한 기초 지식과 기술이 요구됩니다.

 

728x90
반응형

'cs > sec' 카테고리의 다른 글

[모의해킹]안드로이드 Galaxy S10e 루팅(Rooting) with Magisk  (1) 2026.01.11
[실습] 쉘 코드의 GetPC 루틴 구현 및 디버깅 실습 (FSTENV 패턴)  (0) 2025.12.19
[인프라와 웹의 위협기술]22. LFI와 RFI 개요  (0) 2025.12.19
웹 서비스 해킹을 위한 버프스위트 활용 가이드  (1) 2025.12.19
[인프라와 웹의 위협기술]7. 윈도우의 권한상승 케이스 분석 - Fodhelper UAC Bypass  (0) 2025.12.18
'cs/sec' 카테고리의 다른 글
  • [모의해킹]안드로이드 Galaxy S10e 루팅(Rooting) with Magisk
  • [실습] 쉘 코드의 GetPC 루틴 구현 및 디버깅 실습 (FSTENV 패턴)
  • [인프라와 웹의 위협기술]22. LFI와 RFI 개요
  • 웹 서비스 해킹을 위한 버프스위트 활용 가이드
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 코테 (42)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Java
    Spring
    알고리즘
    CS
    AWS
    SQL
    docker
    Security
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[이론] 쉘 코드 개요
상단으로

티스토리툴바