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 |