Skip to main content

쉘 코드 란 무엇입니까?

shellcode는 실행 프로그램을 제어하려는 의도로 컴퓨터 메모리에 주입되는 기계 코드 또는 실행 가능한 지침의 시퀀스입니다.이러한 공격에서 단계 중 하나는 프로그램 카운터를 제어하는 것입니다.이 단계는 실행될 다음 명령을 식별합니다.그런 다음 프로그램 흐름을 삽입 된 코드로 리디렉션 할 수 있습니다.침입 기계 코드를 공격의 페이로드라고하며 쉘 코드라는 용어에 의해 일반적으로 언급되는 요소입니다.이 방법은 종종 운영 시스템 명령 쉘을 열어 공격자 액세스 권한을 부여하는 데 사용되었으므로 일반적으로 코드 주입 공격은 쉘 코드로 알려져 있습니다.입력 데이터 및 메모리 오류를 처리합니다.소프트웨어 개발자는 일반적으로 입력 데이터를 엄격하게 정의하고 부적절한 값을 거부함으로써 이러한 위협을 피할 수 있습니다.확인되지 않은 경우 해당 값에 할당 된 메모리보다 더 많은 저장 공간이 필요한 값이 허용 될 수 있습니다.이로 인해 버퍼 오버플로 (Overflow)라는 보안 브리치가 발생하며, 여기서 데이터의 일부는 지정된 값에 인접한 메모리 위치에 기록됩니다.신중하게 조작 할 때,이 이상은 침입 코드를 도입 할 수 있습니다.shell 코드는 일반적으로 어셈블리, C 또는 C ++와 같은 저수준 시스템 액세스가있는 프로그래밍 언어로 작성됩니다.그러나 대상 취약점에 따라 Perl과 같은 해석 된 스크립팅 언어 또는 Java와 같은 가상 시스템의 바이트 코드에 대한 코드를 삽입하여 동일한 결과를 실현할 수 있습니다.코드는 프로그램 카운터의 납치 전, 도중 또는 후에 이식 될 수 있습니다.따라서, 침입 코드는 대상 기계의 파일에 포함되거나 실시간으로 네트워크 연결을 통해 전송 될 수 있습니다.local 로컬 쉘 코드 익스플로잇은 자신이 물리적으로 접근 할 수있는 기계를 공격자 제어하도록 설계되었습니다.이 경우 목표는 예를 들어 관리자 권한으로 계정을 작성하는 것입니다.마찬가지로, 달리기 프로세스가 특권 수준이 높은 경우, 성공적인 악용은 침입자에 대한 동일한 수준의 액세스를 일시적으로 부여합니다.∎ 원격 시스템에서 실행되는 프로세스는 표준 네트워크 프로토콜을 사용하여 대상 컴퓨터와 통신 할 수 있습니다.Connect-Back ShellCode는 대상 기계에 침입자 컴퓨터에 대한 연결을 시작하도록 지시합니다.침입자가 연결을 시작하면 코드를 원격 시스템의 포트라고 불리는 네트워크 연결을 제어하려고 시도하면서 코드를 Bindshell이라고합니다.방화벽은 아웃 바운드 연결을 거의 금지하지 않기 때문에 Connect-Back 방법은 더 널리 사용됩니다.