Monday 23 October 2017

De4dot Binary Options


De4dot es un deobfuscator y unpacker de código abierto (GPLv3).NET escrito en C. Se intentará lo mejor posible para restaurar un ensamblaje empaquetado y ofuscado a casi el montaje original. La mayoría de la ofuscación puede ser completamente restaurada (por ejemplo, encriptación de cadena), pero el cambio de nombre de símbolos es imposible de restaurar ya que los nombres originales no forman parte del conjunto ofuscado. Utiliza dnlib para leer y escribir ensamblados, así que asegúrate de obtenerlo o no compilará. Es GRATIS, pero no hay apoyo No hay apoyo. No me envíe por correo electrónico si usted no puede utilizarlo o si falla deobfuscate un archivo ofuscado con un obfuscator actualizado. En su lugar, intente actualizar de4dot usted mismo. Es mucho más fácil de lo que piensas. Si no puedes, busca en Internet y deberías encontrar un par de foros donde puedes hacer tu pregunta. Heres una lista pseudo aleatoria de las cosas que va a hacer en función de lo obfuscator se utilizó para ofuscar un montaje: métodos en línea. Algunos obfuscators mover partes pequeñas de un método a otro método estático y lo llama. Descifrar las cadenas de forma estática o dinámica Descifrar otras constantes. Algunos ofuscadores también pueden cifrar otras constantes, como todos los enteros, todos los dobles, etc. Descifrar métodos de forma estática o dinámica. Muchos ofuscadores reemplazan la mayoría de todas las instrucciones de llamada con una llamada a un delegado. Este delegado a su vez llama al método real. Cambie el nombre de los símbolos. A pesar de que la mayoría de los símbolos no pueden ser restaurados, los renombrará a cadenas legibles por humanos. A veces, algunos de los nombres originales pueden ser restaurados, sin embargo. Devirtualizar código virtualizado Descifrar recursos. Muchos obfuscators tienen una opción para cifrar los recursos de. NET. Descifrar archivos incrustados. Muchos obfuscators tienen una opción para incrustar y posiblemente cifrar / comprimir otros ensamblajes. Quitar el código de detección de manipulación Eliminar el código anti-depuración Control de flujo deobfuscation. Muchos obfuscators modifican el código de IL así que parece código del spaghetti que hace muy difícil de entender el código. Restaurar campos de clase. Algunos obfuscators pueden mover campos de una clase a otra clase creada obfuscator. Convierta un exe PE a un exe. NET. Algunos obfuscators envolver un ensamblado. NET dentro de un PE de Win32 para que un descompilador. NET no pueda leer el archivo. Elimina la mayoría / todas las clases basura agregadas por el obfuscator. Corrige algunos errores peverify. Muchos de los obfuscators son buggy y crean el código unverifiable por error. Restaurar los tipos de parámetros y campos del método Agile. NET (también conocido como CliSecure) Babel. NET CodeFort CodeVeil CodeWall CryptoObfuscator DeepSea Obfuscator Dotfuscator. NET Reactor Eazfuscator. NET Goliath. NET ILProtector MaxtoCode MPRESS Rummage Skater. NET SmartAssembly Spices. Net Xenocode Algunos de los anteriores Obfuscators se utilizan raramente (eg. Goliath. NET), así que han tenido pruebas mucho menos. Ayúdame reportando errores o problemas que encuentres. Algunas veces, el conjunto ofuscado y todas sus dependencias se cargan en la memoria para su ejecución. Utilice un entorno de sandbox seguro si sospecha que el ensamblado o los ensamblajes son malware. Incluso si la versión actual de de4dot no carga un cierto ensamblado en la memoria para la ejecución, una versión futura podría. Cómo usar de4dot Arrastre y suelte los archivos en de4dot. exe y espere unos segundos. Deobfuscate más de un archivo a la vez Cuando más de una asamblea se ha ofuscado, es muy probable que usted debe deobfuscate todos ellos al mismo tiempo, a menos que deshabilite el cambio de nombre de símbolo. La razón es que si el ensamblaje A tiene una referencia a la clase C en el ensamblado B y cambia el nombre de los símbolos sólo en el ensamblado B, la clase C podría cambiarse a eg. Class0 pero la referencia en el ensamblador A todavía hace referencia a una clase llamada C en el ensamblado B. Si desobfusca ambos ensamblados al mismo tiempo, todas las referencias también se actualizarán. Buscar todos los archivos obfuscated y deobfuscate ellos La línea de comando siguiente deobfuscate todas las asambleas que han sido ofuscadas por un obfuscator apoyado y excepto las asambleas a c: output - r significa la búsqueda recursive. - ru significa que debe ignorar archivos desconocidos. - ro significa que debe colocar los archivos de salida en el directorio siguiente. Normalmente, youd primera copia c: entrada a c: salida. Y luego ejecute el comando. De esta manera todos los archivos estarán en c: output. Incluso no ensamblados y ensamblajes no procesados. Cuando de4dot está terminado, youd acaba de hacer doble clic en el ensamblado principal en c: salida y que debería comenzar. Utilice la opción - d para detectar el obfuscator sin deobfuscating cualquier ensamblado. Encuentra todos los ensamblados. NET y detecte obfuscator. Si es un obfuscator sin soporte o si no se ofuscó, se imprimirá obfuscator desconocido. Igual que el anterior excepto que sólo mostrará qué archivos han sido ofuscados por un obfuscator soportado. Preservar tokens de metadatos A veces, en raros casos, desea conservar los tokens de metadatos. Utilice --preserve-tokens o --preserve-table. También considere usar --keep-types ya que no eliminará ningún tipo y método agregado por el obfuscator. Otra opción útil es --dont-create-params. Si se utiliza, el renamer no creará filas Param para los parámetros del método que no tienen una fila Param. De esta manera la tabla ParamPtr no se agregará a sus ensamblajes. Peverify tiene un error y no lo soporta (verás muchos errores). Las cadenas, los montones de EE. UU. Y de Blob también se pueden conservar usando --preserve-strings. --preservarnos. Y --preserve-blob respectivamente. De estos tres, --preserve-us es el más útil ya que la instrucción ldstr y module. ResolveString () hacen referencia directa al montón de EE. UU. --preserve-sig-data debe utilizarse si el obfuscator añade datos adicionales al final de las firmas que utiliza para su propio propósito, por ejemplo. Como claves de descifrado. Confusor es un obfuscator que hace esto. --preserve-tokens conserva todos los tokens importantes pero también nos permitirá --preserve-us. --preserve-blob y --preserve-sig-data. Si se detecta como obfuscador desconocido (no soportado) (o si lo fuerza con - p un), se conservarán todos los tokens, incluido el montón de EE. UU. Y cualquier otro dato al final de las firmas. Tampoco se eliminan los tipos, campos o métodos ofuscadores. Preservar todos los tokens importantes, EE. UU., Blob, datos extra sig. Preservar todos los tokens importantes, EE. UU., Blob, datos extra sig y no quitar tipos / campos añadidos por el obfuscator Preservar todos los tokens importantes, EE. UU., Blob, extra sig datos y no crear extra Param filas para evitar que la tabla ParamPtr de ser creado. Preserve todos los tokens importantes excepto los tokens de Param. Descriptor dinámico de cadenas Aunque de4dot soporta una gran cantidad de obfuscators, theres todavía algunos que no soporta. Para descifrar cadenas, primero tendrá que averiguar qué método o métodos descifran cadenas. Para obtener el token de método de estos descifradores de cadena, puede utilizar ILDASM con la opción mostrar tokens de metadatos activada. Un testigo de método es un número de 32 bits y comienza con 06, por ejemplo. 06012345. Este comando cargará el archivo de ensamblado file1.dll en la memoria llamando a Assembly. Load (). Cuando detecta llamadas a los decodificadores de dos cadenas (06012345 y 060ABCDE), los llama creando un método dinámico y guarda el resultado (la cadena descifrada). La llamada al descifrador de cadena se eliminará y la cadena descifrada estará en su lugar. Dado que el ensamblado se carga y ejecuta, asegúrese de ejecutarlo en una caja de seguridad si sospecha que el archivo es malware. Forzar la detección de un cierto obfuscator de4dot no es perfecto. Si no detecta un obfuscator, puede usar la opción - p para forzarla a asumir que ha sido ofuscada por ella. Forzar el obfuscador no compatible Para otros tipos de obfuscator, consulte la pantalla de ayuda. Deshabilitar el cambio de nombre de símbolos Renombrar símbolos no es tan fácil como cambiar el nombre de A a B cuando se trata de reflexión. De4dot actualmente no admite renombrar XAML por lo que si sospecha que utiliza WPF (o si es una aplicación de Silverlight) debe desactivar el cambio de nombre si el ensamblado no se ejecuta. --keep-names también se puede usar para decirle a de4dot que no cambie el nombre de ciertos símbolos, por ejemplo. No cambie el nombre de los campos. Cambie el nombre de todo lo que se debe renombrar, excepto las propiedades, los eventos y los métodos. Uso de un regex de renombre diferente Los regexes predeterminados deben ser suficientes, excepto posiblemente el que se utiliza cuando se detecta un obfuscator no compatible. Para ver todas las expresiones regulares predeterminadas, inicie de4dot sin argumentos y mostrará todas las opciones y todos los valores predeterminados. P. ej. Actualmente el siguiente es el regex por defecto usado cuando Dotfuscator es detectado Como puedes ver, no es solo un regex, es más de uno. Cada uno está separado por amp y cada regex puede ser negado usando. en frente de eso. Para mostrarlo con más claridad, se usan estas expresiones regulares: Para cambiar la expresión regular (es), debe conocer el nombre de tipo corto del obfuscador (consulte la pantalla de ayuda). P. ej. Su sa si su SmartAssembly, y un si es un obfuscator sin soporte / desconocido. La opción a utilizar es - TYPE-name (por ejemplo, --sa-name para SmartAssembly y --un-name para obfuscators desconocidos / no soportados): Inicie de4dot sin argumentos y mostrará todas las opciones. Plantas de destilación de agua Agua destilada para prácticamente todas las aplicaciones en el laboratorio. Sin embargo, la calidad, los parámetros físicos y químicos del agua cambian drásticamente según la naturaleza de la aplicación del agua destilada. Teniendo en cuenta la importancia y la necesidad de tal variedad de requerimiento de agua destilada en varias aplicaciones de laboratorio en todo el mundo. Weiber introduce una variedad de plantas de destilación para adaptarse a aplicaciones tan variadas. Fabricamos plantas de destilación de agua teniendo en cuenta los requerimientos de uso de diferentes laboratorios. Nuestra gama de plantas de destilación de agua incluyen, plantas de destilación de montaje en pared para los requisitos de laboratorio regulares, patrón de tabla de las plantas de destilación tipo Barnstead para uso pesado. Destilación doble simple y triple de vidrio para los requerimientos de agua destilada de alta calidad para aplicaciones médicas y de laboratorio. Aparte de esto, tenemos una planta de destilación de cuarzo de alta gama para requerimientos analíticos avanzados para trabajos de investigación o pruebas. Fabricamos plantas de destilación en la India de acuerdo con las directrices internacionales que se adhieren a un estricto protocolo de control de calidad. Somos proveedores regulares de nuestras plantas de destilación a varias organizaciones gubernamentales y no gubernamentales, además de ser un exportador regular de plantas de destilación que exportan a bastantes países de todo el mundo. Unidad de Destilación de Agua Unidad de Destilación de Agua Unidad de Destilación de Agua (Cuarzo) Unidad de Destilación de Agua (Cuarzo) Unidad de Destilación de Agua Kjeldahl Unidad de Destilación de Micro Kjeldahl Unidad de Extracción de Soxhlet Biblioteca de más de 100.000 preguntas de la prueba práctica. Analizamos sus respuestas y podemos determinar cuándo usted está listo para sentarse para la prueba. El propósito de este artículo es mostrar cómo evitar varias comprobaciones de seguridad modificando el código binario directamente, en lugar de código fuente, mediante el uso de CFF Explorer. Ya hemos examinado las diversas maneras de eludir el código IL más temprano. Allí hemos logrado tareas tan cruciales jugando con la instrucción del código del byte de IL. Este artículo básicamente enseña cómo identificar las instrucciones de código binario correspondientes utilizando el desensamblador de IL, entonces aprenderá a modificar dicho código binario (código hexadecimal) utilizando un editor como CFF Explorer. Se supone que el usuario tiene un conocimiento profundo y el conocimiento de la manipulación de codificación binaria y que ha instalado una nueva copia del software CFF Explorer con el fin de editar las instrucciones de código binario. Aparte de eso, el usuario debe tener una comprensión profunda de la instrucción del código de MSIL también. La aplicación Cracking. NET Aquí estamos desarrollando una aplicación de demostración C. net para ilustrar cómo evitar las restricciones de seguridad de un programa que realiza un cálculo o conversión de Centigrado a Fahrenheit. El código para la implementación de la caducidad del ensayo es: Aquí, después de examinar cuidadosamente el código, podemos ver fácilmente que el método TrialExpiredCheck () es responsable de la caducidad del producto. No necesitamos preocuparnos por el código de conversión de cálculo y otros. Después de compilar correctamente este código fuente, el CLR produce su archivo ejecutable. Durante la duración del ensayo, el prototipo de interfaz de usuario de este producto sería así: Pero el proveedor de este producto lanza su versión beta y proporciona sólo una versión de prueba gratuita en el mercado que funciona durante un período específico. Una vez finalizada esta duración, expirará automáticamente y un mensaje de alerta parpadeará en la pantalla. Después de hacer clic en el botón Aceptar, descargará automáticamente la aplicación. El mensaje de alerta se ve así: Ahora, hay dos opciones que le permitirán seguir usando el producto. O comprar la clave del producto (versión completa), que, por supuesto, requiere algo de dinero, o invertir la ingeniería de la aplicación lógica a fin de evitar las verificaciones de seguridad. Pero no tenemos el código fuente, así que ¿cómo podemos hacerlo? Es posible cambiar el código binario del ejecutable, utilizando CFF Explorer. Aunque no tenemos el código fuente de este producto, se nos proporciona la versión ejecutable. Todo lo que tenemos que hacer es modificar el código binario de este producto con el fin de eludir las restricciones de seguridad mediante el. ILDASM. exe enviado por NET que ya hemos visto par de ejemplos de manipulación utilizando ILDASM en los artículos anteriores de esta serie de ingeniería inversa Pero, desde el punto de vista de este artículo, el papel de ILDASM es ligeramente diferente. Esta vez, volcaremos el archivo ejecutable en la búsqueda de la instrucción RVA (dirección virtual relativa), que se obtiene cuando se compila con la opción de número de línea correspondiente. Primero abra el conjunto de destino en ILASM: El desensamblador de IL mostrará todas las sentencias de cada método en formato línea por línea. La columna RVA típicamente permite que el tiempo de ejecución para calcular la dirección de memoria de inicio de la MSIL, la definición del método que contiene la prueba de verificación, los bytes de cada declaración, y su posición relativa a la RVA. Sin embargo, el archivo descompuesto o descompilado produce una gran cantidad de código crudo IL, pero nuestra principal preocupación es encontrar el código correspondiente al método TrialExpireCheck (), de la siguiente manera: Aunque hay un par de herramientas de edición hexadecimal o edición binaria disponibles, como Ollydbg Y el IDApro, don8217t apoyan la edición del código binario de. NET que pueden realizar solamente la modificación del archivo del PE de C / C / VC. El CFF Explorer, sin embargo, fue diseñado para la edición de PE con soporte completo para el archivo binario de. NET, pero sin perder de vista la estructura ejecutable portátil. Esta maravillosa herramienta encapsula paquetes de herramientas que podrían ayudar a la ingeniería inversa. El explorador CFF incluye las siguientes características: Editor de Hex. Desensamblador rápido (x86, x64, MSIL) Soporte completo para PE32 / 64 utilidades PE, visor de procesos PE rebuilder Visor de controladores Visor de Windows PE y descargador de memoria Vista y modificación de estructuras internas. NET Editor de recursos Soporte en el editor de recursos para recursos de. NET Cheques de integridad de PE Caminante de dependencia Método de exploración profunda Generación de informes Actualizador de firmas Ahora es el momento de actuar. Abrir CFF Explorer (esta es una utilidad gratuita que se puede descargar desde ntcore). Abra el archivo ejecutable. NET de destino (Fahrenheit. exe) y lo descompilará y luego cargará todo el código binario asociado. Como se puede ver en la siguiente imagen, CFF Explorer revela casi todos los detalles sobre este archivo ejecutable, como su nombre, tipo de archivo, entorno de desarrollo, tamaño de archivo, tamaño de PE y formato de hashing. Podemos realizar paquetes de operaciones usando CFF Explorer, incluyendo la modificación de recursos, edición hexadecimal, desensamblaje, conversión de direcciones, y finalmente reconstruir o reescribir el archivo. Nuestro principal interés es 8220Address Converter, 8221 que se encuentra en el panel central de la izquierda. Sólo tienes que abrirlo y encontrarás el archivo ejecutable en forma de código binario. Una de las tareas sofisticadas y complejas es manipular o modificar directamente la instrucción binaria porque no tenemos ninguna información sobre qué instrucción es responsable de qué valor hexadecimal binario. Es por eso que desmontamos ese archivo ejecutable en el código IL antes para encontrar el valor de RVA y las secuencias de código binario. El archivo de código IL tiene cada instrucción con su número de línea exacta, que señala el número de línea del código fuente real y la secuencia de bytes. Básicamente, RVA representa la dirección de segmento para el método (TrialExpiredCheck), que incluye toda la lógica de las restricciones de seguridad. Esta instrucción indica que este cuerpo de método comienza desde la dirección 0x2134 en los bytes hexadecimales crudos. // El método comienza en RVA 0x2134 Tenemos que realizar dos tareas para evitar las restricciones de expiración de la versión de prueba. Detener o desviar la llamada del método Application. Exit () en cuenta de carting en la ejecución. Quite el cuadro de mensaje de alerta de la versión 8220Trial expired8221. Por lo tanto, utilizando este valor 0x2134, podemos saltar directamente al código de la lógica de restricción de seguridad, como se muestra a continuación Desviar o eliminar el método Call to Application. Exit () Tenemos que identificar primero los bytes asociados en el código hexadecimal que son responsables de Ejecutando el método Application. Exit (). Después de examinar cuidadosamente el código IL definido anteriormente, podemos averiguar que el código de operación IL001f es código de clave como IL001f: / 28 (0A) 000021 / call void System. Windows. FormsSystem. Windows. Forms. Application :: Exit () IL0024: / 00 / nop IL0025: / 00 / nop IL0026: / 2A / ret Los valores de byte asociados se muestran en rojo tenemos que alinearlos en secuencia apropiada. Esto se hace normalmente de derecha a izquierda como sigue 28 21 00 00 0A 00 00 2A También puede detectar una secuencia de bytes en el editor de código hexadecimal CFF, como se muestra a continuación. Por lo tanto, si cambiamos los bytes entre 26 y 2A a nop ), Entonces podemos detener o eliminar la llamada de Applicaton. Exit método: Ahora hemos eliminado con éxito la llamada al método Exit (). Eliminar el cuadro de mensaje de alerta Si examinamos detenidamente el código IL, podemos ver que hay una variable booleana, isTrialExpired, que está configurada como True por defecto y, en el método TrialExpiredcheck (), su valor se comprueba en un condición. Debido a que el valor de la variable booleana es true, si la ejecución de construcción de condición siempre es verdadera y un cuadro de mensaje de alerta se mostrará de forma intermitente. IL0002: / 7B (04) 000004 / ldfld bool Fahrenheit. Conversion :: isTrialExpired IL0007: / 16 / ldc. i4.0 IL0008: / FE01 / ceq IL000a: / 0A / stloc.0 IL000b: / 06 / ldloc.0 IL000c : / 2D 18 / brtrue. s IL0026 La secuencia real de bytes sería la siguiente Así que este es el hack: Si eliminamos esta condición if, reemplazando el valor de instrucción IL00c 2D por 2C. Entonces la construcción if nunca se ejecuta y no aparece ningún cuadro de mensaje de alerta. Por último, guarde la modificación que ha realizado en el archivo de código binario porque también proporciona la funcionalidad de reconstruir el archivo ejecutable. Ahora pruebe el archivo ejecutable: El cuadro de mensaje no aparece y el archivo ejecutable se carga correctamente. Bingo Hemos eliminado con éxito todas las restricciones de seguridad. En este artículo se muestra cómo modificar o aplicar parches las instrucciones de código binario sin tener el código fuente real. Utilizamos una herramienta de terceros, CFF Explorer, que soporta la modificación de archivos binarios. NET, a diferencia de los otros editores hexadecimales. También hemos aprendido una de las tácticas de dumping avanzadas del código IL para obtener el número de línea real y las secuencias de byte correspondientes reales. Después de entender cómo funciona esto, podemos fácilmente invertir el ingeniería del código binario. NET según nuestro requisito. Descargo de responsabilidad: Yo, Ajay Kumar, no tengo intención de enseñar ninguna táctica ofensiva y no apoyo ninguna actividad de Black Hat. La razón de este artículo es proporcionar sombrero blanco o conocimiento defensivo para el estudio o la prueba. Ajay Yadav es un autor, especialista en seguridad cibernética, pymes, ingeniero de software y programador de sistemas con más de ocho años de experiencia laboral. Obtuvo una Maestría y Licenciatura en Ciencias de la Computación, junto con abundantes certificaciones profesionales de primer nivel. Durante varios años, ha estado investigando Ingeniería Inversa, Codificación de Fuente Segura, Depuración Avanzada de Software, Evaluación de Vulnerabilidad, Programación de Sistemas y Desarrollo de Explotación. Es colaborador regular de la revista de programación y de la comunidad de desarrolladores de asistencia con blogs, artículos de investigación, tutoriales, material de capacitación y libros sobre tecnología sofisticada. Su actividad de tiempo libre incluye turismo, cine y meditación. Él puede ser alcanzado en om. ajay007atgmaildotcom Ejercicios de Práctica Gratis Herramientas de Entrenamiento Gratis Editores Choice Relacionados Boot Camps Más Mensajes de Autor

No comments:

Post a Comment