¿Qué es un shellcode?

shellcode es secuencia de código de máquina o instrucciones ejecutables, que se inyecta en la memoria de una computadora con la intención de tomar el control de un programa en ejecución. En tal ataque, uno de los pasos es obtener el control del mostrador del programa, lo que identifica la siguiente instrucción que se ejecutará. El flujo del programa se puede redirigir al código insertado. El código de la máquina intrusiva se denomina carga útil del ataque y es el elemento comúnmente referido por el término shellcode. Este método a menudo se ha utilizado para otorgar acceso a un atacante al abrir un shell de comando del sistema de operación, por lo que los ataques de inyección de código en general se conocen como shellcode.

La vulnerabilidad que se está explotando generalmente implica cómo un programa asigna memoria, verifica la validez de los datos de entrada y maneja los errores de memoria. Los desarrolladores de software generalmente pueden evitar esta amenaza definiendo estrictamente los datos de entrada y rechazando valores incorrectos. Si no se controla, los valores necesitan más espacio de almacenamiento que la memoria asignadaED para ese valor podría ser aceptado. Esto causa una recámara de seguridad llamada desbordamiento de un búfer, donde parte de los datos se escriben en ubicaciones de memoria adyacentes al espacio asignado del valor. Cuando se manipula cuidadosamente, esta anomalía puede permitir que se introduzca el código intrusivo.

shellcode normalmente se escribe en un lenguaje de programación con acceso al sistema de bajo nivel, como ensamblaje, c o c ++. Sin embargo, dependiendo de la vulnerabilidad específica, el mismo resultado podría realizarse insertando código para un lenguaje de secuencias de comandos interpretado, como Perl o bytecode para una máquina virtual, como Java. El código se puede implantar antes, durante o después del secuestro del mostrador del programa. Por lo tanto, el código intrusivo puede estar contenido en un archivo en la máquina dirigida o transmitirse a través de una conexión de red en tiempo real.

Las exploits locales de shellcode están diseñados para dar a un atacante control sobre una máquina a WHICh tiene acceso físico. Un objetivo en este caso podría ser crear una cuenta con los privilegios del administrador, por ejemplo. Del mismo modo, si un proceso de ejecución tiene un alto nivel de privilegio, una exploit exitosa otorgaría temporalmente el mismo nivel de acceso al intruso.

Los procesos que se ejecutan en una máquina remota pueden explotarse utilizando protocolos de red estándar para comunicarse con la computadora de destino. Connect-Back ShellCode instruye a la máquina de destino que inicie una conexión con la computadora del intruso. Si el intruso inicia la conexión, el código se llama Bindshell, ya que intenta tomar el control de una conexión de red llamada puerto en la máquina remota. El método Connect-Back se usa más ampliamente, ya que los firewalls rara vez prohíben las conexiones de salida.

OTROS IDIOMAS