본문 바로가기


66. 쉘 코드는 어떤 용도로 사용하는 것인가요?
66. 쉘 코드는 어떤 용도로 사용하는 것인가요?
원광대학교 정보전산원2014-09-16

66. 쉘 코드는 어떤 용도로 사용하는 것인가요?

쉘 코드(Shell Code)는 용어에서 나타나는 것처럼 셀을 실행시키는 코드를 의미합니다. 쉘 코드는 공격자가 시스템의 취약점을 이용하여 자신이 원하는 임의의 코드를 실행시키고자 할 때 사용합니다. 시스템내의 모든 명령어를 실행시킬 수 있는 쉘을 사용할 수 있다면 공격자가 목적하는 바를 이루게 되는 것입니다. 쉘코드를 만드는 기본적인 과정은 다음과 같습니다.

①쉘을 실행시키는 코드를 작성
②디버거를 통해 작성된 코드의 동작 흐름을 파악
③어셈블리어 수준의 코드로 변환
④기계어 코드를 추철

따라서, 쉘 코드는 다음과 같은 형태로 존재하게 됩니다.

\xeb\xlf\x5e\x89\x76\x08\x88\x46\x07\x89x\46
\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80
\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh

이렇게 작성된 셀 코드는 공격자 자신이 원하는 위치에 삽입하여 실행하게 됩니다. 예를 들어, 버퍼나 환경 변수 영역에 스트링의 일부로 자리 잡게 되면 버퍼 오버플로우 발생시 이 코드를 실행시킬 수 있습니다.