Hay diferentes tipos de técnicas de ocultación, algunas muy
fáciles de aplicar, otra más complejas y difíciles de implementar. Según John Frey un profesor de hacking
ético de
empresa de seguridad de la información, lógicamente para aplicar las técnicas
fáciles, se requiere menos tiempo y habilidades, pero te permitirá la obtención
una baja caída en la tasa de detección, en cambio los más complejos necesitan
más tiempo y habilidades, pero permiten alcanzar mayores caídas en la tasa de
detección. Todas estas técnicas se utilizan para ocultar el código y textos del
Android malware para evitar la detección de los antivirus.
IDENTIFIER
RENAMING
Esta técnica intenta
ocultar la aplicación, cambiar los nombres de los métodos, las clases y los
identificadores de campo en la aplicación.
CALL
INDIRECTIONS
Esta técnica modifica
las llamadas dentro de la aplicación. Si tenemos una llamada al método A, esta
técnica lo sustituye por una nueva llamada al método B que cuando se invoca a
hacer la llamada al método original A.
CODE
REORDERING
Consiste en modificar el
orden de las instrucciones en el código. Por lo general, el “Goto”, es añadido
en el código para mantener la secuencia original de las instrucciones durante
la ejecución explica el profesor de hacking ético de una empresa de seguridad
de la información.
JUNK
CODE INSERTION
Esta técnica consiste en
añadir en el código de algunas instrucciones que se ejecutarán, pero sin
cambiar la semántica de la aplicación. Las herramientas de detección que
inspeccionan la secuencia de las instrucciones del software malicioso pueden
ser evadidas por la estrategia de inserción de código no deseado. El código no
deseado añadido al software malicioso puede ser una secuencia de nop simples o
complejos ciclos de instrucciones explica John Frey, el profesor de hacking
ético de una empresa de seguridad de la información .
ENCAPSULATE
FIELD
Esta técnica consiste en
la adición de un campo específico de setter y un método getter. El primero se
utiliza para establecer el valor del campo y el segundo para recuperar ese
valor. Así que no hay acceso directo más para el campo seleccionado, sustituido
por los métodos relativos. De esta manera la utilización de un campo específico
puede ser ocultada.
ENCRYPTING
PAYLOADS – EXPLOITS
Código nativo se utiliza
generalmente para manipular la memoria. Este tipo de código es almacenado en
código binario nativo. Muy a menudo código nativo es utilizado por autores de
software maliciosos debido a la falta de mecanismos de seguridad en Android. Un
malware o utilizando eso puede evadir el entorno sandbox hecho por la política
de permisos de Android. Según curso de hacking ético, por lo general, en
malware, código nativo se almacena encriptado y se descifra solamente durante
la ejecución.
COMPOSITE
TRANSFORMATIONS
Todas las técnicas de
ocultación vistas antes se pueden combinar con otras para mejorar el nivel
ocultación del código acuerdo con los expertos de empresa de seguridad de la información.
Por lo general, las estrategias que no son muy eficaces cuando se usan solas,
si se usan en combinación pueden dar buenos resultados en ocultación.
REFLECTION
Una clase puede
inspeccionarse a sí misma utilizando esta técnica. Se usa para obtener
información sobre las clases, métodos, etc. La API del Java que soporta la
reflexión es Java.Reflect. Cada instrucción de invocación está sustituido con
otras instrucciones de código de bytes que utilizan llamadas reflectantes para
realizar las mismas operaciones de la llamada original. En particular se
utilizan tres llamadas. El forName, que encuentra una clase con un nombre
preciso. El getMethod; que devuelve el sistema que pertenece a la llamada
forName. La tercera es la invokeque ejecuta el procedimiento deseado. Entonces
la reflexión añade un código innecesario a la original con el fin de ocultar la
aplicación. Podrían aprender más sobre reflection en el curso de hacking ético.
BYTECODE
ENCRYPTION
Esta técnica encripta
algunas piezas de código para evadir las herramientas de anti malware basado en
el análisis estático. En particular, el código malicioso se almacena encriptado
en la aplicación. Por esta razón es imposible para el análisis estático
detectar el código malicioso. El código malicioso se almacena encriptado y
empacado. Durante la ejecución de la rutina de descifrado se llama y se
descifra el código malicioso y lo carga a través de un cargador de clases
establecido por el autor del malware.
STRING
ENCRYPTION
Encripta los textos de
una aplicación utilizando una operación XOR. El texto original se descompone
durante la ejecución proporcionando el encriptado a la rutina de descifrado.
CLASS
ENCRYPTION
Se utiliza para cifrar
todas las clases de la aplicación. Comprime las clases encriptadas y las
almacenar en la aplicación. Cuando la aplicación maliciosa se ejecuta las
clases encriptadas qe necesitan ser descomprimidas se descifradas y después se
cargan en la memoria. Por lo general, con el metodoClassLoader(),
getDeclaredConstructor (), y newInstance () una nueva instancia de la clase se
genera y sus campos y métodos se invocan a través de la reflexión.
ENTRY
POINT CLASSES, ARCHIVOS XML, OCULTACION
DE ASSESTS
Esta técnica consiste en
ocultar el ingreso a las carpetas y archivos entry point classes xml usando una
encriptación. El objetivo es evitar la detección de algunas herramientas
anti-malware que inspeccionan estos archivos.
Estas son algunas de las
técnicas de evasión antivirus para dispositivos Android. Usted puede aprender
más acerca de estas técnicas durante el hacking ético de empresa de seguridad de la información.
0 comments:
Post a Comment