셸코드 (Shellcode)
쉽게 풀면
셸코드는 프로그램의 허점을 파고들어 슬쩍 끼워 넣는 짧은 명령어 뭉치라고 생각하면 됩니다. 이름처럼 원래는 공격자가 대상 컴퓨터의 명령창(셸)을 손에 넣기 위해 만들어졌지만, 지금은 꼭 셸을 여는 목적이 아니어도 취약점을 통해 주입되는 실행 코드 전반을 가리키는 말로도 쓰입니다. 사람이 읽는 프로그래밍 언어가 아니라 CPU가 바로 이해하는 기계어에 가까운 형태로 작성됩니다.
왜 중요한가
정보보안학에서 셸코드는 버퍼 오버플로우 같은 메모리 손상 취약점이 실제로 어떻게 악용되는지를 이해하고 방어 기법을 설계하는 데 핵심적인 연구 대상입니다. 셸코드 탐지, 실행 방지(DEP, ASLR 등)와 관련된 방어 기술 연구가 이 분야의 중요한 축을 이룹니다.
논문에서는 이렇게 쓰입니다
공격자가 탐지를 피하려 형태를 계속 바꾸는 셸코드를 잡아내는 방법을 다룬 연구라는 뜻입니다.
메모리 보호 기술이 셸코드의 실행 자체를 막아 공격을 무력화했다는 의미입니다.
조금 더 깊게 보면
셸코드는 대체로 어셈블리어로 작성된 뒤 기계어 바이트 열로 변환되며, 널 바이트 등 취약점 트리거 과정에서 문제가 되는 문자를 피하도록 다듬어지는 경우가 많습니다. 탐지를 어렵게 하기 위해 코드를 암호화하거나 매번 형태를 바꾸는 다형성·변형 기법이 함께 논의되기도 합니다. 셸코드는 대체로 어셈블리어로 작성된 뒤 기계어 바이트 열로 변환되며, 취약점 트리거 과정에서 문제가 되는 널 바이트 등을 피하도록 다듬어지는 경우가 많다. 탐지를 어렵게 하기 위해 코드를 암호화하거나 실행될 때마다 형태를 바꾸는 다형성·변형 기법이 함께 논의되기도 한다.
주의할 점
셸코드가 반드시 악성 목적으로만 쓰이는 것은 아니며, 취약점 분석과 침투테스트 등 방어적 연구 목적으로도 통제된 환경에서 사용됩니다. 다만 실제 시스템에 대한 무단 실행은 불법 행위에 해당할 수 있습니다. 셸코드가 반드시 악성 목적으로만 쓰이는 것은 아니며, 취약점 분석과 침투테스트 등 방어적 연구 목적으로도 통제된 환경에서 사용되지만 실제 시스템에 대한 무단 실행은 불법 행위에 해당할 수 있다.