
análisis parcial de cabin
Antes de que empieces a leer, tengo que hacer este anuncio: POR FAVOR, TÓMATE TODO LO QUE LEAS CON UN GRANITO DE SAL, YA QUE NO SOY EN ABSOLUTO UN DESARROLLADOR DE SymbianOS NI ESTOY FAMILIARIZADO CON EL ENTORNO SymbianOS
¿Pero por qué analizar algo tan antiguo? Bueno, porque es la forma más fácil de adentrarse en el hacking remoto, ya que hoy en día este tipo de mierda se hace con ndays/0days que valen 1 millón 🤑🤑🤑. Y porque todavía me falta experiencia para hacer ese tipo de cosas.
Bien, ahora que hemos dejado esta mierda de lado, vamos a ello. ¿Qué coño es Cabir? Es un gusano de Bluetooth que se ejecuta en teléfonos móviles Symbian. Para aquellos que se pregunten qué coño es un teléfono Symbian y toda esa mierda. Bueno, básicamente es un teléfono que usa ARM, así que nada nuevo bajo el sol :) Información más concisa (https://en.wikipedia.org/wiki/S60_(software_platform))
Ahora tuvimos la suerte de que el código fuente de esto estuviera en línea (cortesía de vxug) (SymbianOS.Cabir.7z). Ahora usaremos eso como referencia, pero sinceramente, a la mierda. Una de las otras razones por las que hago esto es porque quiero experimentar con ARM. Así que veremos esto desde una perspectiva de fuente/ensamblador/emulador/depuración/sniffing.
Bien, #1 ¿Cómo coño compilamos el código fuente?
Bueno, eso no es tan complicado...
Primero instala carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(desde https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)
luego instala cualquier motor de Perl
luego instala Nokia PC Suite(https://www.usitility.com/nokia-pc-suite/)
instala el SDK(http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )
instala el plugin de c/c++ (https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)
Y voilà, tenemos el entorno :)
PD: mejor usa Windows 7, ya que al parecer en Windows 10 las cosas se rompen y no funcionan correctamente
Infección en entorno real
TBD
Para esta parte, debes saber que necesitas jailbreak (sí, has oído bien, jailbreak) a tu teléfono. ¿Cómo sucede esto?
Análisis de ingeniería inversa
Bien, ¿cómo coño se compila esto? Muy buena pregunta. Lo que hice fue ejecutar primero ABLT.BAT desde la carpeta caribe\group así
Bien, a continuación lo que hacemos ahora es ir a donde está instalado nuestro SDK, identificar la carpeta de la plataforma (S60_3rd_fp1) en mi caso, encontrar la carpeta epoc32, ir a la carpeta build, elegir user, la carpeta de usuario y luego otras dos o tres carpetas más, y deberías terminar en una carpeta que se ve así
Esta es la ruta actual, que debería ser más o menos similar a lo que se supone que deberías tener (C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)
Bien, a continuación tenemos que entrar en la carpeta caribe (o como hayas nombrado el código fuente) y encontrarás una carpeta con diferentes nombres, como se ve aquí
¿De qué va esto? Bueno, básicamente cuando ejecutamos por primera vez ablt.bat (a día de hoy sigo sin saber su propósito, pero da igual) obtenemos diferentes opciones de plataforma para compilar nuestro archivo pkg, a partir del cual generaremos nuestro archivo sis. En el caso que vemos aquí, vemos GCCE y WINSCW. Si ejecutas por defecto el comando ablt.bat build, lo compilará para WINSCW (que es el nombre en clave de la plataforma del emulador). A efectos de aprender a compilar el código fuente, usaremos GCCE por ahora, pero el proceso es el mismo si eliges hacerlo para, no sé, la plataforma arm, para que puedas subirlo a tu teléfono. Así que básicamente ablt build arm_whatever y luego haz exactamente los mismos pasos hasta aquí. Bien, ahora vamos a la carpeta GCCE
ve a la carpeta urel y debería haber un archivo llamado caribe.app. Desde ahí querrás abrir una línea de comandos y ejecutar
¿Y esto qué hace? Bueno, básicamente ejecutamos makesis, que genera un archivo sis para poder instalarlo en nuestro teléfono. ¿Y por qué estamos en un archivo sis del código fuente de caribe? Bueno, básicamente necesitábamos especificar caribe.pkg a makesis. Bien, ¿y entonces por qué todo ese lío para llegar a la carpeta build, blah, blah? Bueno, porque necesitas especificarlo en el parámetro -d para que pueda generar el archivo .sis
Bien, este método solo funciona con el SDK v3, al que se refiere este artículo. Al parecer, mientras experimentaba, un desarrollador de un servidor de Discord dedicado a Symbian me señaló que Cabir está codificado para SDK v2, por lo que lo que he presentado aquí será inútil... esto está pendiente hasta que pueda contactar con él... ya que últimamente está bastante desconectado de Discord...
Bien, ¿cómo se hace ingeniería inversa de un archivo .sis?
Simplemente, un archivo .sis es un archivo comprimido. Así que... usamos la aplicación siscontents para descomprimir y luego metemos el archivo .app en IDA.
Perspectiva del ensamblador
Así que todo el proceso se ve así
Ahora entramos en esa carpeta y luego 2 obtenemos el archivo app.app
Bien, si lo metes en IDA.
Bien, así que básicamente es un ejecutable ARM. ¡GENIAL, INCREÍBLE! ¡EL SIGUIENTE, POR FAVOR! HMM SÍ, POR FAVOR ~~~
¡¡¡HAY símbolos en el archivo, sí!!! Bueno, sí, ya que por alguna extraña razón compilamos el binario con símbolos de depuración, ¡tuvimos suerte!
Y así, como básicamente tenemos el código y todo eso, el proceso de ingeniería inversa es más o menos el mismo que se describe en el capítulo de análisis del código fuente :)
Perspectiva del sniffing