O que é um código de shell?
ShellCode é a sequência do código da máquina ou instruções executáveis, que é injetada na memória de um computador com a intenção de assumir o controle de um programa em execução. Nesse ataque, uma das etapas é obter o controle do contador do programa, que identifica a próxima instrução a ser executada. O fluxo do programa pode ser redirecionado para o código inserido. O código intrusivo da máquina é chamado de carga útil do ataque e é o elemento comumente referido pelo termo shellcode. Esse método tem sido frequentemente usado para conceder um acesso ao invasor, abrindo um shell de comando do sistema operacional; portanto, os ataques de injeção de código em geral passaram a ser conhecidos como código de shell.
A vulnerabilidade que está sendo explorada normalmente envolve como um programa atribui memória, verifica a validade dos dados de entrada e lida com erros de memória. Os desenvolvedores de software geralmente podem evitar essa ameaça definindo estritamente os dados de entrada e rejeitando valores inadequados. Se desmarcado, valores que precisam de mais espaço de armazenamento do que a memória alottEd para esse valor pode ser aceito. Isso causa uma culatra de segurança chamada de transbordamento de buffer, onde parte dos dados é gravada em locais de memória adjacente ao espaço atribuído do valor. Quando cuidadosamente manipulado, essa anomalia pode permitir que o código intrusivo seja introduzido.
O código do shell é normalmente escrito em uma linguagem de programação com acesso ao sistema de baixo nível, como montagem, C ou C ++. Dependendo da vulnerabilidade direcionada, no entanto, o mesmo resultado pode ser realizado inserindo código para uma linguagem de script interpretada, como Perl, ou bytecode para uma máquina virtual, como o Java. O código pode ser implantado antes, durante ou após o seqüestro do contador do programa. Assim, o código intrusivo pode estar contido em um arquivo na máquina direcionado ou transmitido por uma conexão de rede em tempo real.
As explorações locais do Code foram projetadas para dar um controle de invasor sobre uma máquina para WHICH Ele ou ela tem acesso físico. Um objetivo neste caso pode ser criar uma conta com privilégios de administrador, por exemplo. Da mesma forma, se um processo em execução tiver um alto nível de privilégio, uma exploração bem -sucedida concederia temporariamente o mesmo nível de acesso ao intruso.
Os processos em execução em uma máquina remota podem ser explorados usando protocolos de rede padrão para se comunicar com o computador de destino. Connect-Back ShellCode instrui a máquina de destino a iniciar uma conexão com o computador do intruso. Se o intruso iniciar a conexão, o código será chamado de Bindshell, pois tenta assumir o controle de uma conexão de rede chamada de porta na máquina remota. O método Connect-Back é mais amplamente utilizado, pois os firewalls raramente proíbem as conexões de saída.