En los ataques a programas, como los desbordamientos de búfer de pila, ¿cuál es el objetivo del atacante? Estoy teniendo problemas para aprender los detalles técnicos del ataque (como sobrescribir la dirección de retorno de la función) porque no está claro qué se pretende lograr con esos ataques.
Están destinados a lograr la ejecución remota de código. Esto significa que quieren ejecutar código en su programa desbordando la entrada esperada. Siempre desea comprobar que su entrada corresponde a la longitud correcta.
Veamos desde una perspectiva diferente: control mental . ¿Qué pasaría si pudieras controlar la mente de alguien para hacer lo que quieras que haga?
Digamos que hay una vulnerabilidad en el cerebro de alguien donde solo pueden tomar comandos de 8 caracteres. Cualquier cosa fuera de eso se ejecuta porque no está revisada.
Tú: Hola. Responda con "Hola ..." ["Hello..." is 8 characters]
Víctima: Uhm, está bien. Hola ... [brain is only capable of processing 8 characters]
Tú : responde con "Pastel".
Víctima: Uh, "Cake".
Tú: ¿Qué te parece "Hola ... <shellcode to make them say "Buffalo!", beyond the original 8 character limit>
"
Víctima: ¡Hola ... Buffalo!
Víctima: espera, ¿qué acabas de hacerme?
Tú : ¡Cómo están, caballeros! Todos tus búfalos son de nosotros.
Y ahora si "Buffalo" ¿Shellcode fue diseñado para ejecutar cualquier tipo de código que desee, como la descarga de un RAT
?
Por ejemplo, en la inyección SQL, generalmente se hace para obtener información confidencial o hacer que el servidor ejecute el código. Parece que el requisito previo para un ataque de desbordamiento de búfer es que el atacante ya tenga la capacidad de ejecutar código en la máquina, ¿qué más quieren?
Debido a que los desbordamientos de búfer, como cualquier tipo de explotación que permite la ejecución remota de código, suelen ser el resultado de una falla en el código de otra persona. Al igual que la inyección SQL, está intentando que la máquina remota ejecute el código.
Esto podría ser algo tan simple como enviar un comando mal formado a un programa normal. También podrías implementar vulnerabilidades intencionales en tus propios programas. Algunos individuos menos escrupulosos pueden hacer eso.
Hay muchas vulnerabilidades de RCE en varios idiomas. El truco consiste en encontrar algo, cualquier cosa, que le permita ejecutar código / comandos en el objetivo en cuestión que abre nuevas oportunidades para obtener acceso adicional.