경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
편집을 취소할 수 있습니다.
이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 |
당신의 편집 |
1번째 줄: |
1번째 줄: |
| [[분류:컴퓨터 구조]][[분류:정보처리기사]]
| | ;Shell Code |
| ;Shellcode,Shell Code | |
|
| |
|
| 시스템의 특정 명령을 실행하는 작은 사이즈의 프로그램. 일반적으로 기계어로 작성되어 있다. | | 시스템의 특정 명령을 실행하는 작은 사이즈의 프로그램. 일반적으로 기계어로 작성되어 있다. |
|
| |
|
| Shell Code란 단어는 공격 대상 시스템의 명령어 쉘(Command Shell-ect:bash)을 실행시킨다는 의미로 부터 파생되었으며, 주로 소프트웨어 취약점을 통한 공격(Exploitation)이후 실행 될 작은 규모의 포로그램(Payload)으로 사용된다. | | Shell Code란 단어는 공격 대상 시스템의 명령어 쉘(Command Shell-ect:bash)을 실행시킨다는 의미로 부터 파생되었으며, 주로 소프트웨어 취약점을 통한 공격(Exploitation)이후 실행 될 작은 규모의 포로그램(Payload)으로 사용된다. |
|
| |
| ==셸코드의 종류==
| |
| 셸코드는 대상에 따라 로컬(Local) 및 원격(Remote) Shell Code로 나눌 수 있으며, 그 자체가 Shell을 실행하지는 않지만 외부의 네트워크로부터 특정 파일을 다운로드하고 실행하는(Download & Execute) 하는 경우도 있다.
| |
|
| |
| ===로컬 쉘코드===
| |
| ;Local Shellcode
| |
| 공격자가 대상 시스템에 대한 제한적인(혹은 완전한) 접근 권한을 가지고 있는 경우,
| |
| 버퍼 오버플로(Buffer Overflow) 등의 취약점이 있는 높은 권한(대부분 root)을 가진 프로세스를 공격하여,
| |
| 해당 프로세스와 같은 높은 권한을 획득하기 위해 사용된다.
| |
|
| |
| ===원격 쉘코드===
| |
| ;Remote Shellcode
| |
| 공격자가 네트워크상의 다른 대상 시스템에 한 취약점이 있는 프로세스를 공격하고자 하는 경우 사용한다.
| |
| 일반적으로 원격 쉘은 공격자가 대상 시스템의 Shell에 대한 접근을 허용하기 위해 표준 TCP/IP 소켓 연결을 사용하며,
| |
| 이 때 연결이 어떤 방식으로 이루어졌는가에 따라 다음과 같이 분류될 수 있다.
| |
|
| |
| ===리버스 쉘코드===
| |
| ; Reverse Shellcode
| |
| * 목표 시스템으로부터 공격자에게 연결을 요청하도록 하기에 커넥트 백(Connect-Back) 쉘코드라고 한다.
| |
|
| |
| ===바인드 쉘코드===
| |
| ;Bind Shellcode
| |
| * 목표 시스템의 특정 포트를 바인드하여 공격자가 대상 시스템에 연결 할 수 있도록 한다.
| |
|
| |
| ===다운로드 및 실행 쉘코드===
| |
| ;Download & Execute Shellcode
| |
| 다운로드 및 실행 쉘코드는 쉘코드가 직접 쉘을 실행하지는 않지만,
| |
| 주로 외부의 네트워크로부터 Malware(악성코드)를 다운로드하고 실행할 때 주로 사용된다.
| |
| 특히 요즘에는 대상 시스템이 악성 페이지에 방문하는 것만으로도,
| |
| 사용자 몰라 악성코드를 내려받아 실행하는 Drive By Download(드라이브 바이 다운로드) 공격에 널리 사용된다.
| |