Resumen:
|
[ES] A partir de la aparici´on de la t´ecnica de protecci´on NX (Non eXecutable), la inyecci´on
de c´odigo como m´etodo de ejecuci´on de payloads se vio seriamente limitada. Como consecuencia,
los atacantes desarrollaron ...[+]
[ES] A partir de la aparici´on de la t´ecnica de protecci´on NX (Non eXecutable), la inyecci´on
de c´odigo como m´etodo de ejecuci´on de payloads se vio seriamente limitada. Como consecuencia,
los atacantes desarrollaron nuevas estrategias para explotar las vulnerabilidades
de los procesos remotos. Una de las t´ecnicas m´as importantes es ROP (Return Oriented
Programming), la cual permite “reorganizar” el c´odigo del propio proceso que est´a en
ejecuci´on para ejecutar lo que el atacante desea.
El presente trabajo aborda la implementaci´on de un programa en lenguaje C que, dado
un fichero ejecutable ELF de la arquitectura ARM, localice, en el mismo, todos aquellos
fragmentos de c´odigo (denominados Gadgets en ROP) que pueden ser utilizados para
elaborar un payload. El objetivo, por tanto, es ofrecer una herramienta que muestre los
gadgets disponibles para la elaboraci´on de payloads, as´ı como la automatizaci´on de un
payload espec´ıfico que ejecute un shell de Linux.
Se ponen en pr´actica conocimientos avanzados de los sistemas operativos (convenio de
llamadas a funciones), el lenguaje ensamblador de la arquitectura ARM, la explotaci´on
de fallos de programaci´on (buffer overflow) y la estructura de los ficheros ejecutables ELF.
[-]
[CA] A partir de la aparici´on de la t´ecnica de protecci´on NX (Non eXecutable), la inyecci´on
de c´odigo como m´etodo de ejecuci´on de payloads se vio seriamente limitada. Como consecuencia,
los atacantes desarrollaron ...[+]
[CA] A partir de la aparici´on de la t´ecnica de protecci´on NX (Non eXecutable), la inyecci´on
de c´odigo como m´etodo de ejecuci´on de payloads se vio seriamente limitada. Como consecuencia,
los atacantes desarrollaron nuevas estrategias para explotar las vulnerabilidades
de los procesos remotos. Una de las t´ecnicas m´as importantes es ROP (Return Oriented
Programming), la cual permite “reorganizar” el c´odigo del propio proceso que est´a en
ejecuci´on para ejecutar lo que el atacante desea.
El presente trabajo aborda la implementaci´on de un programa en lenguaje C que, dado
un fichero ejecutable ELF de la arquitectura ARM, localice, en el mismo, todos aquellos
fragmentos de c´odigo (denominados Gadgets en ROP) que pueden ser utilizados para
elaborar un payload. El objetivo, por tanto, es ofrecer una herramienta que muestre los
gadgets disponibles para la elaboraci´on de payloads, as´ı como la automatizaci´on de un
payload espec´ıfico que ejecute un shell de Linux.
Se ponen en pr´actica conocimientos avanzados de los sistemas operativos (convenio de
llamadas a funciones), el lenguaje ensamblador de la arquitectura ARM, la explotaci´on
de fallos de programaci´on (buffer overflow) y la estructura de los ficheros ejecutables ELF.
[-]
[EN] From the appearance of protection technique NX (Non eXecutable), code injection as a
method of payloads execution was seriously limited. As a consequence, attackers developed
new strategies to exploit the vulnerabilities ...[+]
[EN] From the appearance of protection technique NX (Non eXecutable), code injection as a
method of payloads execution was seriously limited. As a consequence, attackers developed
new strategies to exploit the vulnerabilities of remote processes. One of the most
important techniques is ROP (Return Oriented Programming), which allows attackers
to reorganize the code of the process itself that is running in order to execute what the
attacker wants.
This paper deals with the implementation of a program written in C language that, given
a ELF executable file of the ARM architecture, locates in it all those code snippets
(called Gadgets in ROP) which can be used to prepare a payload. The goal, therefore,
is to provide a tool which shows all available gadgets for the production of payloads, as
well as the automation of an specific payload which executes a Linux shell.
Advanced knowledge of operating systems (calling convention), the assembly language
of the ARM architecture, exploitation of programming errors (buffer overflow), and the
ELF executable files structure are put into practice.
[-]
|