Loading...

eko12 - 2016 - Rolf Rolles - Synesthesia: Automated Generation of Encoding-Restricted Machine...

1,001 views

Loading...

Loading...

Rating is available when the video has been rented.
This feature is not available right now. Please try again later.
Published on Dec 29, 2016

eko12 - 2016 - Rolf Rolles - Synesthesia: Automated Generation of Encoding-Restricted Machine Code Programs via Bernays-Schönfinkel TQBF

Los problemas de generacion de shellcode y de desarrollo de exploits de corrupcion de memoria comparten un cumpleaños. En resumen los exploits de corrupcion de memoria deben engañar a un programa al ejecutar codigo de maquina ("shellcode") provisto como un input. Cada escenario de exploit puede poner limitaciones a los code bytes permitidos: NULL bytes (o cualquier byte arbitratio) deberia no permitirse; el input podria ser obligadamente a alfanumerica; todos los caracteres ASCII podrian requerir estar en mayuscula; ciertos caracteres podrian ser filtrados; la input podria transformarse en caminos arbitrarios, el input podria requerirse para mentir entre UTF-8 o UTF-16 y asi. Históricamente, la comunidad de seguridad se ha ocupado de estos problemas caso por caso. Muchos documentos fueron escritos en relación con diversas arquitecturas de procesador y algún esquema de restricción de codificación común. En general, estas publicaciones describen patrones para realizar operaciones comunes (setear registros a constantes, obtener el contador de programa, etc.) dentro de las restricciónes de codificación dadas. A partir de estas publicaciones llegó la codificacion del shellcode, en lugar de escribir todo el código shell dentro de la restricción de codificación, encodeamos un shellcode blob dentro de la codificacion, y generamos un codigo de maquina dentro de la que codifica para descifrar el blob y ejecutarlo. Los encoders de Shellcode son utiles, pero sufren de un numero de problemas. Expanden el tamaño del shellcode blob, que puede derivar en un exploit inviable. Suelen contener secuencias comunes de codigo de maquina, para lo cual las detecciones de IDS estan facilmente disponibles. No estan garantizados de encontrar un encoder y decoder, incluso si uno existe. Para ser breves, generar shellcode sigue siendo un problema del mundo real, a pesar de la existencia de los codificadores de shellcode. En esta charla, proporcionamos una novedosa tecnica basada en la sintesis de un programa para crear programas creadores de codigo de maquina que caen dentro de una codificacion determinada. En esencia, Synesthesia es un compilador cuyos inputs son una especificacion de una funcionalidad deseada, junto con una especificacion de las codificaciones permitidas. Synesthesia goza de una serie de buenas propiedades teóricas: se garantiza encontrar una codificación para la funcionalidad deseada, si es que existe; el usuario puede buscar el programa más corto en términos de longitud de bytes o número de instrucciones; que no se basa en las bases de datos de patrones de ningún tipo, por lo que cada ejecucion puede potencialmente una entera y unica salida; y puede producir codigo auto-modificable. Las ideas detras de Synesthesia no estan vinculadas a algun tipo de arquitectura especifica de procesador, y no requiere emulacion, acceso a ese procesador o brute-forcing. Esta presentacion plantea el contexto en el que Synesthesia existe, los conceptos detrás de su diseño, estudios de casos en más de un lenguaje ensamblador, una evaluación de desempeño, y una discusión de las limitaciones teóricas (es decir, problemas permanentes) y las prácticas (es decir, las limitaciones de solucionadores SMT contemporáneos). Synesthesia estara a disposición como código abierto.

ekoparty security conference 2016 - #12

Loading...

When autoplay is enabled, a suggested video will automatically play next.

Up next


to add this to Watch Later

Add to

Loading playlists...