Shellcode

Shellcode ( código de shell en inglés , código de  inicio de shell) es un código ejecutable binario que generalmente transfiere el control al procesador de comandos, por ejemplo, '/bin/sh' en Unix shell , 'command.com' en MS-DOS y 'cmd.exe' en los sistemas operativos Microsoft Windows . Shellcode se puede utilizar como una carga útil de explotación , lo que permite a un atacante acceder a un shell en un sistema informático . 

Al explotar una vulnerabilidad remota , el shellcode puede abrir un puerto TCP predeterminado de la computadora vulnerable, a través del cual se llevará a cabo un mayor acceso al shell de comando, dicho código se denomina shellcode de enlace de puerto .  Si el shellcode se conecta al puerto de la computadora del atacante, lo que se hace para eludir el firewall o NAT , entonces dicho código se llama shell inverso ( eng. shellcode inverso ).  

Cómo funciona

Shellcode generalmente se inyecta en la memoria del programa en ejecución, después de lo cual se le transfiere el control mediante un desbordamiento de pila , un desbordamiento de búfer de almacenamiento dinámico o mediante el uso de ataques de cadena de formato . La transferencia de control al shellcode se realiza sobrescribiendo la dirección de retorno en la pila con la dirección del shellcode inyectado, sobrescribiendo las direcciones de las funciones llamadas o cambiando los controladores de interrupción. El resultado de esto es la ejecución de un shellcode que abre una línea de comando para que la use un atacante.

Descubrimiento

Los crackers escriben shellcodes, a menudo usando trucos para ocultar su ataque. A menudo intentan descubrir cómo los sistemas de detección de intrusos (IDS) reconocen cualquier ataque entrante. Un IDS típico generalmente escanea todos los paquetes entrantes en busca de una estructura específica de shellcode (a menudo, una gran variedad de códigos basura , NOP en el caso más simple ); si encuentra una estructura de este tipo, el paquete se destruye antes de llegar a su destino. La posición débil de IDS en este caso es que no realiza una búsqueda realmente buena, de lo contrario, tardará demasiado y, por lo tanto, ralentizará la conexión a Internet.

Shellcode casi siempre contiene una cadena con el nombre del shell . Todos los paquetes entrantes que contienen una cadena de este tipo siempre se consideran sospechosos a los ojos del IDS. Además, algunas aplicaciones no aceptan entradas no alfanuméricas (no aceptan caracteres fuera del rango de az, AZ, 0-9 y algunos otros caracteres).

Para superar todas estas medidas anti-intrusión, los crackers utilizan encriptación , código automodificable , código polimórfico y código alfanumérico .

Véase también

Enlaces