>> Hola a todos, gracias por
venir. Bienvenido al
nivel 0 de protección contra piratas informáticos de Android y, desde hace 24 horas, algunas
cosas de teléfonos negros que vamos a
mostrar con las que este tipo se divirtió mucho. Entonces, un breve resumen de quiénes
somos, este tipo es Jay Case, yo
soy Diff. Esta es la prueba de que no somos la misma persona. Muchas personas
pensaron que durante muchos años
somos exactamente la misma persona. Es CTO de
Ciberseguridad Aplicada, es básicamente un
troll experto, encuentra muchas cosas y tiene la boca más grande
en Android es básicamente lo
que estamos diciendo. Hay github, ese es su Twitter, creo que
venció a Dan Rosenberg, así que sigan
siguiéndolo. >> Soy un adicto a la ofuscación, trabajo en
Look Out Mobile Security,
investigo y respondo.
Pretendo saber tanto como este tipo.
Ese también es mi github. >> ¿Por qué
estamos aquí? Si buscas en Google y buscas
protección de Android, mucha gente está
buscando en Google, cómo protejo mi juego, no quiero que me pirateen,
no quiero que se inyecte Malware en
esto. No entiendo estas cosas. Todos los ofuscadores no son
iguales. Bueno, si miras
las cosas, la gente dice, bueno, ¿qué es un
factor de protección contra piratas informáticos? Eso es solo un
término de marketing que alguien inventó. Su ofuscador tenía un
nivel de protección contra piratas informáticos de 35, impresionante.
35 niveles de protección, eso no significa nada. >> Queríamos
desmitificar, la ofuscación no es
tan mágica.
Tienes que identificar lo que está pasando, ¿es
un empacador conocido, un ofuscador, un
protector, qué serás capaz de hacer? También queríamos
poder ver esto. En Look Out,
hacemos anti-malware y lo que se ve mucho en las noticias es que la gente
dice "lo más sofisticado
del mundo acaba de salir". Usaron una
empacadora comercial y ni siquiera se dieron
cuenta de que era una empacadora comercial y en
realidad no hicieron nada tan
sofisticado.
Pero compraron un producto que los hizo formar.
Son realmente malos atacantes,
y no lo son. Tienes que darte cuenta de a qué te
enfrentas, queríamos echarle
un vistazo. >> Esto es principalmente con fines educativos, la
gente buena los usa y
no sugerimos que salgas y descifres todos los juegos que están
haciendo estas cosas, pero los desarrolladores malos también
usan estas herramientas para inhibir a las personas como nosotros que
intentan analizar el malware y
ver como si la gente estuviera usando exploits, si estuvieran robando tus
contactos, ¿qué está pasando? Por
lo tanto, es muy educativo poder saber cómo funcionan este tipo de
sistemas y cómo
desarmarlos.
>> Entonces, ¿qué hay ahí fuera? Hace unos dos años
di una charla, era Dex
Education 101, las diapositivas todavía están en línea de BlackHat 201.
Hay muchas pruebas de
conceptos, y muchos trucos contra la descompilación,
trucos contra el análisis, simplemente
hizo una demostración de uno de los desempaquetadores preliminares de Dalvik. Muy genial.
Mucha gente comienza a
integrarlos en pequeñas herramientas únicas que integran bahksmali,
dex2jar e IDA Pro. Así que es
realmente genial.
Dado que hemos tratado de encontrar muchas de estas
cosas para romper todas las herramientas,
recibimos muchos parches enviados, muchas herramientas de código abierto
y las herramientas que puede encontrar en
línea ya están parcheadas y en realidad no puede romperlas como
fácilmente más. Ahora que estas
herramientas se han puesto al día, la gente está empezando a usar empacadores y
protectores. Voy a explicar eso.
Lo hace para que no puedas hacer un análisis estático.
Tienes que hacer
análisis de tiempo de ejecución o pasar por
aros para descomprimir algo de código. Pero las herramientas actuales
resistirán los pequeños trucos que
demostramos en el pasado. >> ¿Qué son packer y protectores? Con
suerte, sabrá un poco sobre los
ofuscadores, tomará lo que escribe como desarrollador, se
ofuscará, se verá un poco
diferente y, con suerte, será más difícil para alguien revertir
su código compilado a lo
que comenzó. Este es un ejemplo, básicamente, este es un
optimizador/ofuscador. Es
realmente bueno, todos… ya saben, Google dice que debería
ejecutar esto, como Pro guard
y buscar más ofuscación.
Esencialmente, el código en la parte superior es
lo que estarías escribiendo
tú mismo. Entonces, básicamente es una declaración de reflexión que hace una
salida del sistema y en la parte inferior,
ahí es en realidad cuando el ofuscador intentará convertir eso,
como puede ver, no se ve tan
bien de ver. Podemos ver llamadas a funciones con nombres realmente raros
, caracteres especiales para
lo real… así que obtienes el nombre de la clase, parece una estafa, y
obtienes el carácter especial
para la función real, pasando otras cosas, llamando a un
método de cifrado para descifrar,
disculpe, es un método de descifrado para descifrar lo que
se supone que es la cadena real.
Ya no puedes ver el sistema de enlace de Java porque lo
cifraron y lo sacaron. Entonces,
si solo estaba ejecutando cadenas en el archivo, no verá este
tipo de llamadas. Tendrás que
entrar, descifrar manualmente. >> Protectores, esto es lo
que llamamos. Es similar a un
empacador, pero tendrá su solicitud de resguardo. Eso es lo que
el protector está
inyectando en realidad. Rompen su código, por lo que cuando alguien
analiza estáticamente su aplicación,
parece que está todo roto, todas las herramientas se saltarán
esto es malo.
Insertaré un
Opp. Esta es una llamada inválida, no se va a descompilar eso. Ellos
simplemente no entienden lo que está
pasando. Ejecuta esto en su teléfono, la aplicación auxiliar
reparará el código roto en la memoria.
Cuando la aplicación real alcance ese código que originalmente
pensamos que estaba roto y no lo
analizamos, podrá funcionar correctamente. Está protegiendo su
aplicación del análisis estático,
pero supuestamente funciona en el sistema real. >> Esto es para
empaquetadores normales, como el esquema
de UPX u otros empaquetadores X86, subaplicaciones y que envuelven
el código oculto y, a veces,
encriptado. Una vez que se ejecuta, se inicia la aplicación de código auxiliar
, desempaquetará, descifrará,
pondrá en la memoria el código ejecutable real que desea y lo
redireccionará todo, de modo que cuando el
sistema diga que esto es lo que el usuario está enviando a su
actividad, solo redireccionará el
código real, que es normalmente oculto de ese
análisis estático.
>> Se lo
pasaré a mi amigo, JCase, para optimizadores y ofuscadores. En
realidad, no está
tirando nada por el camino. >> Ayer se suponía que tenía que hacer
todas estas diapositivas para este
ayer, pero en lugar de hacer eso, compré un teléfono negro
que tomó ayer.
Optimizadores y ofuscadores. Proguard es más o menos de lo que
voy a hablar primero,
estándar de facto para Android.
Después de escribir un artículo sobre
romper su sistema de licencias,
Google lo empaquetó en su SDK. Así que la mayoría de las aplicaciones de Android lo usan.
Es aproximadamente ocho años mayor
que Android, creado por Eric la Forte, especialmente diseñado para
Java, recomendado por Google,
optimiza el código, reduce el código, ofusca el código. Lo bueno es
que es gratis, reducirá el tamaño
de la aplicación, puede obtener más aplicaciones en el teléfono. Hace un trabajo bastante bueno
al hacer las cosas más rápidas,
elimina una gran cantidad de código basura, si escribe un código incorrecto, se
ve mejor cuando lo
invierte. Sí, elimina el código innecesario y sin usar, fusiona
bloques de código idénticos y, con
optimizaciones de mirilla, elimina la información de depuración, lo que
facilita la comprensión de lo que
está invirtiendo. Puede cambiar el nombre de los objetos, algo molesto
y reestructura el código. En la
diapositiva aquí en el lado izquierdo hay una aplicación que no ha
sido protegida con un
ofuscador en absoluto. En realidad es un exploit de Android que escribí.
Verá el SDK de PayPal que se
ha ofuscado.
En el lado derecho está el mismo APK, el mismo
exploit con Proguard y
la diferencia principal aquí es que se cambia el nombre de las clases y en lugar
de decir "hey, esta es una
clase de utilidades tienes E. Esta es una Proguard, estoy eliminando
parte de la información de depuración". ,
como el nombre de origen, archivo de origen. Por lo general, cuando compila
clases, la fuente le indicará
el nombre del archivo del que proviene originalmente. Muchos ofuscadores
lo eliminarán por completo o
insertarán datos falsos. >> Los datos falsos pueden ser bastante
molestos, pero por lo demás bastante
simples. Otra cosa que Pro Guard, la mayoría de los ofuscadores, es
eliminar los números de línea, los
rastros de su pila serán bastante confusos, reduce el tamaño de las cubiertas,
pero no es un gran problema.
Los
datos de Pro Guards son bastante fáciles. >> Aquí hay un ejemplo de un método
que realmente dará
comandos de shell, en el lado izquierdo tenemos la fuente original y en el
lado derecho la
salida protegida Proguard descompilada. >> Como ves, es bastante fácil de
entender si
entiendes Java, no es demasiado extraño. >> Proguard, ¿para qué sirve? Prácticamente
para nada,
excepto para hacer que la aplicación sea más pequeña y más rápida. No proporciona
ofuscación, cualquiera que lo
recomiende para la ofuscación, está un poco fuera de lugar.
He escuchado una y otra vez que los
desarrolladores de aplicaciones dicen que estoy protegiendo mi aplicación con esto, no
hace nada para detener la
ingeniería inversa. Tiene un factor de protección contra piratas informáticos de cero. >> De
esto me gustaría hablar,
mi tema favorito. Dexguard es una versión comercial
de Proguard del mismo autor,
bastante estándar, pero increíblemente aterrador en busca de alguien que
no sepa más.
Optimiza los encogimientos y hace un trabajo bastante decente al ofuscar
y cifrar, pero no
detendrá la ingeniería inversa, alguien con experiencia en
absoluto.
>> Hace prácticamente
todo lo que hace Proguard, agrega reflexión automática, tomará
sus llamadas API estándar. Y por
reflexión, esto puede arruinar el análisis automático, hacer que sea un
dolor de cabeza mirar, hace que su
aplicación sea un poco más lenta. >> Hace encriptación de transmisión, hace que
la aplicación sea confusa, da miedo si
no sabes lo que estás viendo y lo ralentiza. Puede
proporcionar acceso,
archivos de activos incrustados para la aplicación o cifrar la biblioteca. Bastante
simple, ralentiza la aplicación,
especialmente en el caso de la biblioteca que no hace
nada, porque tienen
más allá que está encriptada.
Una vez que están en un disco, simplemente los sacamos de
todos modos.
Cifrado de clase, tomando el archivo de clase original, cifrando, colocando
dentro de las cubiertas, y
también detecta la manipulación, que no cubriré mucho porque
si está buscando malware,
realmente no nos importa demasiado la detección de manipulación. >>
Aquí hay un ejemplo de la
reflexión y el cifrado de transmisión, el campo superior
tendrá el sistema de llamada API estándar
para salir. El campo central es la misma llamada pero usando la
reflexión, por lo que es un poco
más confuso, un poco más grande, por lo que el tamaño del archivo de la plataforma
aumenta y la parte inferior es la
reflexión y un cifrado de transmisión que
no proporciona ninguna pista sobre lo que realmente está
haciendo.
>> Aquí hay un ejemplo del cifrado de transmisión, la
herramienta superior muestra un
exploit de Android 2.3 que haría que un dispositivo se reiniciara sin
permisos. El campo central
muestra cómo se cifran el dexguard o las secuencias… todas las
secuencias en el archivo de clase se
atascan en un rayo de bytes después de cifrarse. El campo inferior es
el exploit para reiniciar el sistema
con las secuencias cifradas. >> Así que aquí hay un método de descifrado en
el lado izquierdo, el
original y en el lado derecho el ofuscado. Bastante simple.
Cifrado XML, pero sé cómo
funciona el código. Borras el carácter y la posición y
descifrarás la cadena… en el
campo derecho, byte ray… Estoy un poco nervioso, nunca he
hablado en uno de estos, así que
discúlpame. El cifrado de la biblioteca de activos también es bastante simple.
Es AES y la clave e IB están
prácticamente en texto sin formato justo frente a usted. Activo extraído y
cifrado descifrado,
escribe un disco o haz lo que quieras con él.
Bastante simple,
solo unos segundos para deshacer.
Class Encryption es más o menos lo mismo. Empaqueta la
clase original en un archivo zip, la
cifra, la almacena en la clase principal y usa AES.
Almacenará… tendrá tres
rayos de bytes grandes… No tenía suficiente espacio para más
diapositivas de Google y además estaba hackeando el
teléfono negro. Tendrá tres rayos de bytes grandes y dos
pequeños. Los dos pequeños son IV y
key y el primero grande son todos los flujos que realmente
no nos importan. El segundo es
una clase y el tercero es una clase. El segundo se descifra usando la
reflexión para ejecutarlo. Cuando lo
ejecuten, proporcionará una nueva clave y un nuevo IV. Ellos descifran
el tercero. Los
desempaquetadores automáticos harán esto en cuestión de segundos, no brindan una
protección real, pero asustarán a la
mayoría de los piratas promedio. >> Así es como los estaba
descifrando. Él agregará
la tensión al encabezado del archivo zip, por lo que después de
descifrarlo, deberá encontrar
el encabezado y luego podrá escribir el disco.
Tengo un
desempaquetador automático que estará
en mi github. Actualmente está roto con Java 8, decidí
trabajar con el teléfono negro en
lugar de arreglarlo. >> Dexguard, me gusta, lo compré, después de
ver el malware ruso con él,
le envié un correo electrónico al autor, me dijo que lo invirtiera, dije que ya lo
invirtí, aquí están las muestras
del malware, me gustaría comprarlo I Quiero usarlo en mi
producto. Lo compré por una
cantidad ridícula de dinero, terminé lanzando una aplicación
relacionada con él y la
fuente, fue un poco idiota, canceló mi
licencia por unos meses.
Pensé que estaba ayudando a la comunidad de piratas informáticos al publicar
la fuente en una aplicación que había
sido ofuscada con ella.
No recomendaré comprarlo si
planea hacer una aplicación, pero solo
quiere proteger su aplicación promedio, es bastante bueno
, molestará a la mayoría de las personas. >>
Tiene algunas desventajas y algunas ventajas. Puede aumentar el
tamaño del archivo dex, el cifrado de cadenas, la
reflexión, hace que el archivo dex sea más grande, más lento y ocupa más
espacio en su teléfono. Especialmente
el cifrado de cadena de reflexión ralentizará la aplicación
si la usa demasiado, así que si la
va a usar, úsela solo en las partes importantes.
No ofusque la
biblioteca de código abierto de forma ridícula, pero muchos desarrolladores lo hacen. >>
Elimina la información de depuración,
el cifrado automático de cadenas, que es un
acceso de clase automático bastante decente…
El
cifrado de activos de la biblioteca. Prácticamente la mejor y más molesta
característica, la reflexión automática,
bastante aterradora una vez que hacen la reflexión, el cifrado de transmisión
no puede mirar y ver lo que está
haciendo. >> Con un precio moderado en lo que respecta a los ofuscadores, pero
aún bastante caro. Fácil de usar,
se invierte a mano en pocas horas, desembalaje automático en
cuestión de segundos. Si bien el
autor brinda una protección contra piratas informáticos de 35, hoy le daremos
uno. [Risas] En
realidad podría golpearme si alguna vez me ve. >> Allatori no es tan
bueno como Dexguard. Me gusta
mucho mejor. Envié un correo electrónico a los autores, me dieron una
licencia gratuita que fue realmente genial.
Si tiene un correo electrónico .edu y tiene un propósito académico, le
darán uno, originalmente
diseñado para Java simple pero funciona bien en Android Java. Es
un ofuscador, marcador de agua
, tiene un precio en el extremo inferior de 290. Licencia académica gratuita
si tiene una dirección de correo electrónico "edu"
, contáctelos.
No hace tanto como Dexguard,
pero nombra la ofuscación al
cambiar los nombres de las clases, controla la ofuscación del flujo,
depura la ofuscación y
encripta la cadena. >> Aquí hay otra parte de una de mis hazañas.
Verá que estoy comprobando si
el archivo existe. Si existe, hago algo. El campo inferior
es el mismo que el primero, pero
ahora con el cifrado de cadena. En el lado izquierdo está el cifrado de
cadena estándar de Allatori
, es bastante simple.
La parte inferior es la
ofuscada, ejecute la
transmisión y obtendrá su cadena original. Nuevamente,
bastante simple como lo son la mayoría de los
ofuscados. >> Gratis para uso educativo, tiende a
aumentar el tamaño del archivo dex más
que Dexguard porque Dexguard inserta todos los extras. También
aumente un poco la velocidad de la aplicación a
menos que esté usando un cifrado pesado, como Proguard,
Dexguard, elimina la
información de errores y no hace mucho en cuanto a la ofuscación. Los
autores son geniales,
especialmente al darle una licencia gratuita a un ingeniero inverso. Más fácil,
dé un .5 en el
factor de protección contra piratas informáticos, pero nuevamente, los apoyo. >> Gracias por
escuchar. >> Gracias. >>
[Aplausos] >> Veo a un par de personas tomando fotos. Es
pequeño allí arriba, pero
publicaremos las diapositivas, no es necesario que tome fotografías, siéntase libre
de seguir haciéndolo si lo desea
. >> A los Protectores. Esto es muy divertido. Es posible que lo
haya encontrado si está
buscando malware o simplemente le encanta mirar las
aplicaciones chinas, les encanta
esta.
Protector chino, hecho en China, obviamente, varias
iteraciones de él, puede
que lo conozcas como APKProtect, pero tal vez lo conozcas o lo hayas visto como
APKProtect, Lite, PC, Advanced
, probablemente haya algo retro allí. También está DexCrypt por
un tiempo, donde era solo un
guión y permitía que la gente lo descargara. Parece estar
activo, pero es difícil saber quién lo está
usando. El sitio ya no funciona.
Ahora hay
clones chinos con
técnicas similares y sitios web casi idénticos. Es difícil saber quién
está haciendo qué. >> El costo
parece ser gratuito, pero también muy costoso, pero nuevamente, ya no puede
pedirlo, solo va
a un sitio de bloqueo de PHP, pero puede intentarlo, tal vez eliminar la fuente o hacer
algo así. Es muy
similar a un empaquetador, di esa pequeña demostración donde es una
aplicación secundaria con un código destrozado
dentro. Pero a diferencia del… el empaquetador no hace código alterado
donde lo hace este protector.
Hay detectores de errores, tienen errores en y antidescompilación,
que es el código principal.
No puede simplemente ejecutar estáticamente en ese archivo. Básicamente, esto se
ve como, en la esquina superior derecha
, así es como se verá si solo
vas a intentarlo estáticamente y
no entiendes lo que está pasando, verás, Bahksmali, en
realidad lo descompila o
desensamblar pero verá muchas cosas como oh, no
sé a dónde va esto, este
es un número muy alto, no tiene sentido, simplemente colóquelo en los
comentarios y le darán una
declaración de operaciones.
En la esquina inferior derecha vemos el
código auxiliar de Dalvik. Esencialmente,
esta es la primera línea de código que la aplicación encontrará
cuando se ejecute. Esto es lo
que están inyectando en su aplicación. Vemos el
manifiesto final a la izquierda, hay un
nombre de paquete, una pieza de malware, ves el nombre del paquete
basura absoluta como esa,
prácticamente será malware y nos envía un desastre. Sorprendente.
Inyectaron la aplicación principal APK uno,
uno, uno, uno, siete, siete. Eso es lo que se verá afectado primero,
cuando un usuario ejecute o
vaya a ejecutarse. Lo que sucede , pasa a ese
stub del cargador, ese stub del cargador en
realidad, está cargando una biblioteca compartida, algún código nativo sobre
JNI y la parte real que
hará la verificación anti- emulación, anti-depuración y corrige
las cosas rotas en memoria.
>>
Escribí algo de código sudo, espero que puedas leer esto y sea
legible. Esencialmente, lo que está
pasando aquí es Dalvik , es el tiempo de ejecución real en el
teléfono, cuando lo instala, se
optimizará, se llama un archivo O dex . Toma ese archivo y lo
optimiza. Ahí es donde
obtienes una O dec. Básicamente, ve las partes malas, dice No me
importan estas, sáltatelo,
déjalo en la memoria y lidia con eso más tarde. No parece que se
esté ejecutando. Tras la
ejecución real, el código auxiliar se carga y llama allí a una función de carga JNI
. Mirando a través,
hay una llamada anti-depuración adjunta para intentar y
rastrearse. Básicamente, este es un
intento de decir que si me estoy rastreando a mí mismo,
en teoría nadie más lo está, se supone
que puede rastrearme, eso es fácil de evitar.
Eso es anti-
depuración número 1, tratando de encontrar
su propio archivo O dex, esto es básicamente en caso de que un reversor haya
envuelto la aplicación y
cambiado las cosas. No podrán encontrar su propio
O dex, por lo que es un
truco de subproceso antianálisis. Si detectan que está haciendo esto, entre
en un ciclo sin fin, siéntese allí,
haciendo que IDA se cuelgue. Lo que hace a continuación es buscar el
proceso QMUD. Entonces, básicamente,
si está ejecutando esto dentro de un emulador, todos los emuladores están
basados en QMUD, por lo que está buscando
el demonio. Y el código en la parte inferior es en realidad lo que está
haciendo. Lanzamos un truco que
puede ocultar su emulador, todo lo que hace es básicamente
codificar lo que es el comando prockpid.
Entonces, parece que ese sistema ha sido QMUD'ed? Si ve eso en
el primero, creo
que serán 101 procesos, se bloqueará y no le permitirá ejecutar
esto en un emulador, esa es
su técnica anti-emulación.
Y básicamente parcheará O
dex dentro de la memoria. Y todo
lo que está haciendo es básicamente mirar dentro de su memoria para
ver dónde
descomprimió esto el tiempo de ejecución real de Dalvik, lo agarró , hizo una protección M, para que pueda
escribirlo, arreglar ese código en la
memoria y luego volver a proteger la memoria. Todo lo que hacemos para atacarlo
es… esto es un poco… esto es
lo que vería en el análisis estático y esto es lo que
verá después de ejecutarlo. La
forma más fácil de hacer esto es simplemente olvidarse del análisis estático
por un poco de tiempo y hacer
el trabajo duro. Básicamente, todo lo que tenemos que hacer es dejar que se descifren en la
memoria, luego desconectar no el
proceso original, sino un proceso clonado y luego podemos
volcar toda la memoria y todo es
fácil allí mismo.
Evita todas las cosas de QME con un
truco de precarga de LD. Lo tenemos en
nuestro github. Los procesos de clonación, todos se olvidan de eso.
Hay un proceso que está
protegido y tal vez hay 20 que no lo están. Elijamos uno de
los 20 que no lo son. Hay
más encriptación real en el archivo dex, esta parece ser una
opción, por lo que la mayoría de las personas solo tienen
el código destrozado que se desempaqueta en la memoria, pero
hay, parece estilo de viaje dex
, una encriptación Base64 modificada y está usando DES como
opuesto a AES. Parece que este
tipo armó esto y cifró algunas cadenas. Acabo de
descargar eso de la memoria,
aún necesita hacer más reversa , no va a ser solo
normal … como el código virgen
que se usó antes de ser reempaquetado. >> Es realmente divertido,
increíble, realmente un gran ejemplo de
alguien que intenta pensar fuera de la caja. No ha habido muchos
cambios en el producto, al menos
en las aplicaciones que he visto en mucho tiempo.
Hay toneladas de personas que
usan esto, si
quieres intentar mirar tu primer protector, este es excelente, las
cosas del cargador son fáciles de seguir.
No ofuscaron mucho los binarios nativos. No tendrá que
pasar por aros de reconstrucción de
tablas de importación ni nada de eso. Hay
declaraciones de registro que dejaron.
Podrás revisar y ver cosas. Es realmente genial para los
principiantes tratar de
entenderlo. >> La parte interesante sobre los
protectores y los empacadores, son
difíciles una vez, una vez que descubres lo que están haciendo, puedes
ignorarlos el resto de tu
vida. Nunca tienes que mirar a este tipo una vez que lo has hecho
una vez, desempaca de memoria,
eres bueno.
Los ofuscadores tienden a, sus cifrados se mastican un
poco, comienzan a cambiar, cada
desarrollador tiene una construcción un poco diferente , todos se ven un poco
diferentes. Esto es prácticamente un
cortador de galletas para cada aplicación que encuentre. Le
di una protección contra piratas informáticos de
3. Técnicamente no hay documentación pública sobre cómo desempaquetar
esto, supongo que hasta hoy, así
que eso es bueno.
Tal vez baje a 1 ahora, no estoy seguro. Es
divertido de ver, hace un
trabajo bastante bueno y aparentemente funciona bastante bien para un producto comercial
. >> Pasando a los
empacadores, me encanta darle una paliza a este. El tipo es un buen tipo,
dejó un par de funciones allí
para mí, en realidad tiene una que dice "Hola, Tim", porque
siempre invierto, luego tuiteo al
respecto y le doy una [ __ ] al respecto. Es muy fácil hackear
este HoseDex2Jar. Excelente,
necesitábamos esto. [Risas] >> Eso es lo que me gusta escuchar. >> Voy a
tomar un pequeño descanso, supongo. >>
No estoy de acuerdo en que necesito esto. Estoy bien tranquilo, de la diversión de
ayer. >> Esto ayudará. >>
Todo el mundo quiere a Jack. [Risas] >> Puedes seguir. >>Bien,
esto fue una prueba de concepto.
Creo que es un miembro de la seguridad…
>>Vale, detente. >> Está bien.
[Risas] >> Ya sabes, de
todas las habitaciones, esta es siempre la mejor para mostrar el
amor. Así que… [Aplausos] >>
Gracias, chicos. Puedes dejar la botella. >> Buen intento,
pensé en eso por un segundo.
>> Está bien, ustedes son amables, pero sí, gracias. Entonces, este tipo era un
consultor de seguridad y
creo que solo estaba haciendo esto como un argumento para decir, miren, rompí todos
estos descompiladores y
tal vez deberían contratarme o algo así. No estoy seguro, realmente no fue
promocionado como una buena herramienta comercial
y realmente no funciona tan bien. Sin embargo, es una gran prueba de
concepto.
Utiliza
exactamente el mismo ataque "Dexception" que describí en la
educación dex 101. El costo era gratuito,
pero parece estar fuera de línea ahora , eliminaron el sitio. Solo como
un resumen de cómo funcionaría esto
, escribir código, cosas normales, empaquetar su APK, ir a
su servicio en la nube y su
servicio de cierre simplemente lo agrupa y se lo devuelve,
debe volver a iniciar sesión, tener el código auxiliar
solicitud.
El único pequeño truco que está haciendo es
meterlo dentro del
encabezado dex, lo que realicé en BlackHat. Así que si lo repasamos
. Detectar esto fue
muy fácil. Este es un editor ONL, con una
plantilla de dex coloreada, que va con él,
esta es como mi herramienta favorita en el mundo para cosas forenses en
Dex. Pero lo hace realmente
fácil. Ves secciones rojas y dice wow, algo anda mal
aquí. Claramente, parece que
algo está encriptado justo después de ese archivo de encabezado. Si
alguna vez ha mirado un
archivo dex, simplemente no se ve normal y el rojo debería
resaltarlo. >> Puede ver
el tamaño del encabezado, normalmente 70 bytes hexadecimales es enorme. Así que claramente
algo ha sido inyectado.
Fácil de ver. >> Todo esto hará que el análisis estático
realmente no funcione porque verá
este archivo encriptado, simplemente ejecute la herramienta contra él, ignora
el archivo encriptado, lo
tira, puede verlo en el código auxiliar del cargador para que vea dos
clases allí.
Lo que sucede en la
memoria, va al archivo dex optimizado , tiene el archivo encriptado,
lo interesante y seguro que hace
este tipo, lo desencripta en la memoria y lo coloca en el
sistema de archivos sin encriptar, así que sí,
solo tómalo después de que se ejecute si quieres. Ese es tu desempaquetador.
>> Como broma,
se suponía que todo esto era HoseDex2Jar. Escribimos una herramienta en la que usamos
Dext2Jar en el código auxiliar del cargador y
escribimos Java a su alrededor para usar su propio código para descifrar su código,
como un buen golpe y
no he visto la próxima iteración de su herramienta, pero
siempre es bueno tirar cosas de un
lado a otro. >> Ese es realmente bueno, simple.
Si
nunca ha escrito un empaquetador,
no entiende lo que es un empaquetador, puede ir a ver
este, es bueno para mirar.
Es fácil de revertir, ha sido documentado en Twitter por nosotros
y un par de otras personas que
quieren trolearlo más. Es fácil de automatizar y desempaquetar.
Solo lo he visto una vez en la
naturaleza, parecía que alguien estaba probando, envolviendo una pieza
de malware y subiéndola al
total de virus y todos lo detectaron de todos modos, así que a nadie le
importó. >> Continuando, vemos a
Pangxie, que es un empacador chino. Este es algo
interesante, tiene fallas fatales
y ya no parece estar activo . Hay bastantes
muestras en la naturaleza, pero
parece que ya no se usan. El autor se aburrió o tal vez
alguien robó su código o
algo así, sigue los patrones de los empaquetadores chinos.
Nuevamente,
este parece que ya no se
usa. Tiene antidepuración, antimanipulación y parece que
tiene otra funcionalidad que
simplemente olvidaron activar y tal vez detuvieron el desarrollo de esto.
Aunque es interesante. >> El
costo, no estoy seguro, no puedo encontrar un sitio web, mi chino no es tan
bueno. Si ve uno, hágamelo
saber, tal vez nadie más pueda encontrar el sitio web y es por eso que nadie
lo está usando. Toda la
parte normal donde básicamente le están dando una aplicación de código auxiliar
que tiene un archivo dex encriptado.
No estoy seguro de si está subiendo a un servicio en la nube, porque de
nuevo no puedo encontrar su sitio
para nada de esto.
>> Cómo funciona esto es relativamente
simple, en la primera
ejecución dice, oye, ¿es mi primera vez? Vamos al
JNI, verifica la integridad del
paquete encriptado. Al dar marcha atrás, es posible que te asustes,
Dios mío, está usando AES,
tiene encriptación, pero en realidad no está haciendo nada con
eso. Solo revisando un hash. Luego
pasa a verificar el descifrado del archivo dex, relativamente
rudimentario, simple, en la siguiente
diapositiva veremos por qué. Después de hacer esto, una vez lo
guarda en la memoria y… o no,
disculpe, este cae en el sistema de archivos, puede agarrarlo
allí y en la segunda
ejecución, ya lo ha desempaquetado, está en el disco. ,
cargándose directamente, y solo hace un
proxy de todo, usando el cargador de clases dex. Lo cual
si está familiarizado con Java, es
lo mismo con la carga de clases de Java . AES se usa pero solo para
el resumen. Aquí está el
descifrado de código auxiliar básico. Verá que solo hay un byte por clave y algo de
magia, y ese es su
descifrado elegante. Solo X, o todo, es bastante fácil escribir
un desempaquetador estático para este, en
realidad nunca tienes que ejecutarlo en un dispositivo, pero si
tuvieras que ejecutarlo en un dispositivo,
puedes ver que básicamente están descargando a la carpeta de
dex de la aplicación del nombre del paquete de datos de datos
.
Eso va a tener la carpeta con la
copia cifrada y descifrada. Puede agarrar
eso, y aquí hay un ejemplo de cómo ver esa ejecución. Lo ves,
obtienes el updex y tienes las
clases que jar, y el archivo dex. No se necesita trabajo realmente,
supongo. >> Este es
interesante. Ligeramente aumentado, use el cifrado de código auxiliar, funciona
en casi todas las versiones, supongo
que dejó de funcionar, estaba probando en 4.4, parece
fallar. Parecía que no
se mantenía activamente, probablemente nunca volvería.
Algo interesante con esto, ya que es
un empaquetador tan simple que probablemente podría simplemente tomarlo y piratear sus propias
cosas, en realidad no
necesita su herramienta ya que sabe lo que están haciendo para el
cifrado/descifrado, en
realidad podría simplemente cambiar el teclas con solo parchearlo.
Cambie esa
clave Xor, envíe su propia
carga útil cifrada y, sin un código fuente, podría comenzar a crear su
propio empacador Pangxie de imitación.
Ese sería un proyecto divertido de hacer. >> Le di a este un 1.5 en
el factor de protección contra piratas informáticos
porque era interesante, pero desearía que no lo volcaran
en el sistema de archivos, algo
aburrido, pero fue un poco más difícil que HoseDex2Jar. >>
Este es uno del que mucha gente habla
en línea, mucha gente quiere decir, lo publican en
todas partes, diciendo que hemos
desempaquetado esto. Eso es genial. Ahora vete, nunca te diremos
cómo hacerlo. Por eso,
esta es en realidad una de las inspiraciones para la charla, y
otra parte de esa inspiración
fue que tienen un servicio en la nube y son muy firmes
en decir "nunca permitimos que
personas malas usen nuestro empaquetador".
Nunca empaquetaremos nada malo, no
aparecerá ningún malware y
hacemos nuestra aplicación manual con Google. Eso es genial, pero encontramos
mucho malware usando esto.
Pero están haciendo un buen trabajo, no toneladas, pero definitivamente hay
malware penetrando. Como
dimos un ejemplo antes, una vez que comprenda, puede inyectar su
propia aplicación. No digo
que haya visto a gente hacer eso, pero algunos de estos muchachos podrían hacerlo fácilmente
si quisieran.
Puede omitir la verificación del servicio en la nube si lo desea. Este es un
matiz interesante de dónde
estamos hoy en la industria, donde la gente solía descargar UPX y
puedes empacar lo que quieras.
Ahora la gente dice dámelo, lo revisaré, te lo
devolveré, usando el servicio en la nube
para, a través de la puerta de enlace, no dejar que la gente mala lo use, pero la gente mala lo
está usando. >> El costo de
esto es bastante fenomenal. Escuché estimaciones más altas, pero
personalmente vi que algunas de las
cifras rondan los $ 10,000 para este empacador. Eso es bastante
fornido. Dejó de funcionar en
4.4, pero por $ 10,000 supongo que lanzarán una actualización
pronto.
Este tiene
anti-depuración, anti-manipulación, anti-descompilación e
inyección anti-tiempo de ejecución. Esto es
divertido, más difícil que los demás. Engancharon todos los
objetos de memoria que usaron, los usan para
reabrir y reconstruir su propia tabla de importación, han
encriptado todos sus propios
nombres de funciones. Es divertido pasar. No tengo suficiente tiempo para
seguir cada paso, pero
básicamente en la primera ejecución en Dalvik, golpea el
código auxiliar del cargador que entra en un
lanzamiento anti-depuración de JNI, esencialmente esto es lo que está comprobando para ver si
estoy siendo depurado.
No.
Muy bien, comenzaré a trabajar en dos procesos más y P rastrea
esos dos procesos. Estos son
tres procesos en ejecución, que se comunican entre sí a través de la traza P.
No podrá bloquear sus
llamadas a eso, no podrá leer sus datos. Se vuelve un
poco molesto porque pasan
información de un lado a otro todo el tiempo. >> Una de esas
aplicaciones bifurcadas es lo que termina
de descifrar el dex en la memoria, así que vamos a dejar que lo
hagan y sacarlo de la memoria,
no nos importa lo que estén haciendo. Este es un ejemplo,
cuando inicia el malware, ve
que se inician tres procesos. Normalmente te conectas con el primero,
pero no puedes porque todos están
hablando entre ellos y están todos conectados
entre sí. Lo cual es un buen
truco anti-depuración. Aunque, de nuevo, todos esos procesos clonados en
la parte inferior, básicamente mirando
el proceso original diciendo ¿cuáles son sus tareas?
Procesos clonados, como Linux.
Lo que
podremos hacer, digamos, está bien, los tres primeros están
adjuntos, pero ninguno de los
inferiores, así que adjunte a esos, pero básicamente si tuviera que hacer un
par de volcados del núcleo, busque el
archivo dex optimizado en el memoria, te ahorra tiempo. Vea las
cosas encriptadas en la memoria, el
caché de puntos, las clases por jar, las clases de dex, todavía encriptadas,
pero justo debajo, cada
vez es donde se descifran.
No hay indicación, pero
la herramienta que escribimos comenzará a
olfatear la memoria que dice, ¿ este protege APK o este tipo
va a ser golpeado? Ve el
brazalete, que va a entrar en la memoria, y lo saca.
Y como usted controla el dispositivo
, cifra el archivo O dex, podrá des-O dex con
bahksmali. Las instrucciones están
en el sitio web de bahksmali, parece que estoy hablando sueco, ¿
es sueco? Noruego. Algo
como eso. Islandés. gracias >> Si estoy hablando un
idioma diferente, todo está
documentado en línea, y la herramienta que lanzaremos hace un
script, muy lento, un script malo
y lo reescribimos en C y tiene muchos comentarios, DEF CON 101,
así que con suerte ustedes pueden crear
algunos desempaquetadores. Me gusta mucho el brazalete, es increíble.
Probablemente será el más
avanzado que veas por ahí.
Están surgiendo un par de empacadores más
, verás más.
Muchos chinos parecen estar derribándose entre sí usando
la misma cuerda. O
alguien comprometió el código de alguien o alguien lo vendió a todos al por
mayor, pero esto es realmente divertido
y lo desarrollan activamente con ese precio enorme que
mantendrán y una vez que vean
esta charla, tal vez lo muevan en la memoria, hagan más
trucos. y volveremos a
perseguirlos. Pero hicieron un muy buen trabajo, no hay una herramienta real
que pueda descargar, debe
usar el servicio en la nube. Ofrezco una protección contra piratas informáticos de 5,
la mejor herramienta que existe, aunque
no sugiero que la use para estas aplicaciones
porque tendrá el retraso de la
necesidad de actualizar, revisarlas, pasan por un
proceso de aprobación, lo haría.
Realmente no recomiendo usar estas herramientas.
Probablemente guardia dex, tal vez
Allatori es lo que estaba
recomendando. >> ¿Ahora qué? >> Rápido en todo esto.
Inicializamos eso y pusimos el
repositorio allí, lo impulsaré una vez que llegue al aeropuerto y tal vez en
una red más segura. Todo
el código está listo, así que déjalo desempaquetado, Bangle, APKProtect,
estos son realmente fáciles.
Queremos hacerlo más accesible para las personas. Habrá
muestras del malware que usa
estos protectores, se las enviaré a Milla, subiré las
notas de recursos de cuando invierta
estas cosas y ese código desempaquetador. Puse muchos comentarios
allí que normalmente no haría, solo
para explicar el proceso de pensamiento, ¿por qué lo hacemos de esta manera?
Debería llevarte allí. >>
Pasando al Black Phone, mientras todos ustedes están aquí. >> Expliquemos
por qué tengo una resaca increíble en
este momento. Ayer me pagaron por liderar la capacitación, tenían
Black Phones a la venta, así que lo
compramos.
Me gustan los teléfonos rooteados. Utilizamos tres etapas de explotación.
Voy a hablar un poco rápido
porque nos estamos quedando sin tiempo. La exportación requiere
la interacción del usuario si está
escribiendo sobre ella. La interacción del usuario no es remotamente
explotable. Se requiere interacción del usuario
. >> Una de las primeras cosas que hicieron, encontré,
deshabilitó la depuración de ADB, lo que significa que
no podemos obtener un shell ni obtener aplicaciones de depuración en él. Lo
apagaron quitando el botón que le
permite abrir el menú del desarrollador. Esto tomó alrededor de 30 segundos para
encontrar una forma de evitarlo.
Disparamos la intención de abrir el menú, cargar el servidor,
descargar, ejecutar aplicaciones, omitir su
pequeño truco. Afirmaron que fue porque ADD bloqueó el
teléfono, funcionó bien para mí.
No puedo hacer que se bloquee. >> Cifre su teléfono e intente
ejecutarlo, será muy infeliz.
>> Está bien, gracias.
El segundo es la escalada más allá del sistema.
Parece que han dejado una
aplicación altamente privilegiada que se puede depurar, no se puede usar para ejecutar
anuncios, pero podemos adjuntarla
con el depurador, ejecutar lo que queramos como usuario del sistema.
Usuario del sistema, bastante privilegiado,
su servicio de pirateo es enorme una vez que lo usa, si tiene un
usuario del sistema, arruinará su
teléfono. Jay Freeman escribió cómo usar esto, encontramos la
aplicación, tomó cinco minutos.
Seguí sus instrucciones y tuve un sistema de usuario, realmente simple,
básico CTS, las
pruebas de compatibilidad de Google. Este es un gran éxito, deberían haberlo
captado. No se molestaron
en realizar pruebas básicas en este dispositivo, lo cual da miedo. Google
nunca aprobaría este dispositivo
si tuviera aplicaciones de Google en él. >> La tercera etapa. Hay
tantos sistemas para rootear exploits y
vulnerabilidades por ahí que en realidad no revelaré este,
pero las dos primeras cosas,
ya sabes cómo hacer esto también, así que lo mantendremos. >>
Etapa uno, llene la aplicación con el
código en la diapositiva anterior; escenario… Habilitar ADB, etapa 2,
>> Debería funcionar.
>> No está
jugando. La etapa 2 obtiene la ejecución del ID de usuario del sistema. Raíz de la etapa 3,
y no está reproduciendo el video.
>>Está jugando. >> ¿Lo es? Impresionante, porque no podemos
verlo. Puedes verme,
no puedo habilitar la depuración de USB, molesto, luego
me ves sorteando eso con
mi pequeño truco como una aplicación. >> Ahora puedes ver el
shell raíz. De hecho, ejecuté los otros
exploits. Una vez más, no es factible de forma remota, la intención del usuario, si
es que lo eliminaron
porque bloquea el teléfono y el producto no debería haberse enviado.
El tiempo total para pensar en esto fue de
unos cinco minutos. En realidad tarda un poco más porque nos
estábamos riendo. [Risas]
[Aplausos] >> Tendré instrucciones más detalladas cuando llegue a
casa y la fuente de la aplicación también
estará en github.
Así que espero arreglarlo todo
. >> El segundo vulnerable
fue la actualización de corrección de acción. No estaba al tanto de esto, y el
teléfono que me vendieron no tenía
la actualización. El segundo está arreglado, así que si quieres
rootear el teléfono, hazlo antes de
actualizar. >> Creo que se nos acabó el tiempo, pero ustedes pueden venir
aquí si tienen preguntas,
gracias por venir. [Aplausos].