SANS Holiday Hack Challenge 2016 Part 2

Hacking challenge

Bon c’est partie la solution du SANS Holiday Hack Challenge 2016 part 2. Dans cet article on avait vu comment répondre à la 1ère partie qui, au final, n’était pas très compliquée. il suffisait de récupérer 350 tweets et de trouver deux parties d’une URL dans une photo. On est loin des grand moment de hacking au cinéma… Tant que ça passe je continue ! donc on va s’attaquer à la correction de la partie 2 du challenge.

Gram Ta San, pic et pic et… reverse ça ?

Donc à ce point on a récupérer un fichier APK. Les questions de cette partie nous indiquent de chercher dedans :

  1. des credentials ; et
  2. le nom d’un fichier audio.

Mais avant c’est quoi déjà un fichier .apk ? APK, pour Android application PacKage, est tout simplement un paquet d’application pour Android, un peu comme un « .deb » ou un « .rpm » mais sur mobile. Un petit tour sur Wikipédia pour en apprendre plus sur le sujet.

Bon en fouinant sur ce sujet, je suis tombé sur un gars qui a regrouper (presque) tous les dialogues des elfes du challenge dans le jeu en ligne. Notamment, un des PNJ qui nous dit :

« Did you know Android APK file are just zip file ? If you unzip them you can look at the applications files »

Bon bein, on est reparti et effectivement unzip marche très bien sur notre .apk :

cd ~/sans
mkdir SantaGram_4.2
unzip SantaGram_4.2.apk -d SantaGram_4.2
cd SantaGram_4.2

Si vous jetez un œil aux fichiers, il y en a tout un paquet et ça risque de piquer un peu beaucoup si on attaque ça tel quel… il s’avère que l’on peut reverse-engeneeré les apps Android (en Java) avec le logiciel JadX. Ci-dessous la doc d’installation de JadX sur notre Ubuntu :

cd ~/sans
# il nous faut logiquement java (doc pour ubuntu)
apt install git default-jre default-jdk 
git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist
cd build/jadx/
# on lance JadX en mode graphique
bin/jadx-gui lib/jadx-core-*.jar 

Et depuis l’interface on peut alors charger notre fichier .apk :

SANS Holiday Hack Challenge 2016 Part 2 : SantaGram dans JADX
File-> OpenFile : ./sans/SantaGram_4.2

Et JadX nous permet d’exporter l’application dé-compilée dans un dossier Santa_Gram_decompiled (fichier-> save_all). Notez, qu’il est également possible de faire tout ça en ligne de commande.

Bon JadX c’est bien pour analyser un programme simple (type .jar monolithique), mais pour analyser une application complète, c’est un peu léger. Toujours en suivant les conseils de notre super elfe, on va essayer d’importer notre application reversée avec JadX dans Android studio. Comme si on voulait la re-développer. Et donc pour ça il nous faut installer Android Studio.

cd ~/sans
#En commençant par installer Java 8 d'oracle (le default-jre posant problème chez moi) :
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install android-sdk oracle-java8-installer
# Puis Android Studio :
wget https://dl.google.com/dl/android/studio/ide-zips/2.2.3.0/android-studio-ide-145.3537739-linux.zip
unzip android-studio-ide-145.3537739-linux.zip
./android-studio/bin/studio.sh

Et ça s’installe tranquillement en vous posant une question de temps en temps.

Pendant ce temps là, jetez absolument un œil à la présentation « Ghost in the Droid » conseillée par notre elfe :

Je vous conseille vraiment de prendre 10 min pour regarder la présentation elle vaut vraiment le détour !  Et elle vous donne plein d’astuces pour comment mieux comprendre votre application reversée.

Après cet petite pause, on reprend notre reverse dans Android Studio en important notre dossier Santa_Gram_decompiled.

SANS Holiday Hack Challenge 2016 Part 2 : SantaGram dans Android Studio
SantaGram dans Android Studio

Bon il va falloir analyser ce bordel maintenant… C’est pas gagné d’avance… On nous dit de chercher des credentials cela dit. J’ai donc fait quelque recherches globales à l’aide de Ctrl+shif+F sur les termes key, username, user, password, client, etc. J’ai fini par tomber sur les lignes de code ci-dessous.

Dans le fichier com/northpolewonderland/santagram/SplashScreen.java :

jSONObject.put("username", "guest");
jSONObject.put("password", "busyreindeer78");

et puis aussi dans le fichier com/northpolewonderland/santagram/Configs.java avec un paire de : PARSE_APP_KEY et PARSE_CLIENT_KEY.

Comme je ne peux pas valider que c’est bien ce qu’on cherche pour l’instant. Je suppose que c’est les bons. Au pire on reviendra dessus plus tard, s’il s’avère que ce n’est pas ça et qu’on en a besoin pour la suite.

Le fichier Audio

Bon le fichier audio… Ce n’est vraiment pas compliqué là : on sait qu’il se trouve dans notre App et que c’est un fichier audio. On a pas besoin de plus :

  1. on prépare donc une liste d’extensions des fichiers audio ; et
  2. on cherche dans notre dossier reversé des fichiers qui terminent par une de ces extensions  :
cd ~/sans/SantaGram_4.2
find | grep -E ".wv$|.wma$|.webm$|.wav$|.vox$|.tta$|.sln$|.raw$|.ra$|.rm$|.opus$|.ogg$|.oga$|mogg$|.msv$|.mpc$|.mp3$|.mmf$|.m4p$|.m4b$|.m4a$|.ivs$|.iklax$|.gsm$|.flac$|.dvf$|.dss$|.dct$|.awb$|.au$|.ape$|.amr$|.aiff$|.act$|.aax$|.aac$|.aa$|.3gp$"
./res/raw/discombobulatedaudio1.mp3 

On l’écoute le mp3 par acquis de conscience, et pour se rendre compte que ça ne ressemble à rien… Mais on va le garder sous la main. Il servira probablement pour la suite :

cp ./res/raw/discombobulatedaudio1.mp3 ~/sans

Et voilà, c’est réglé pour cette question en quelques lignes.

Solution SANS Holiday Hack Challenge 2016 part 2

Alors contrairement à la partie 1, la Part 2 du SANS Holiday Hack Challenge 2016 commence à faire appel à des compétences d’informaticiens. On a appris à reverser une application Android à l’aide de JadX et Android Studio et à trouver des fichiers à partir de leur extension dans un dossier à l’aide d’un de find et de grep.

J’espère que ça vous a intéressé, moi j’ai trouvé ça sympa d’apprendre comment on reverse une application mobile. C’est pas quelque chose que j’ai l’occasion de faire tous les jours…

Enfin et surtout j’ai appris qu’il existait des applications de détection de fantômes (payantes en plus). Et que 9 sur 10 ne font même pas l’effort d’essayer de détecter quoi que ce soit… Mais qui sait peut-être que les fantômes peuvent effectivement agir sur les générateur de nombre pseudo-aléatoire de nos téléphones !

11 commentaires on “SANS Holiday Hack Challenge 2016 Part 2

  1. Hello, in part 3, i can read out.pcap. But dont know what to do it. Can you give small hint, please ?

    • Hello, Part 3 solution is still « work in progress », But I should be able to post it before tuesday.
      I found usefull hint for this exercice here on reddit.
      It’ll take me sometime to figure out what was expected. Let say that you must pay attention of sudo, and then take a look to the strings man page.

  2. Moi je trouve ca cool ce tuto. N’ayant personne avec qui parler sous la main, ca m’aide a voir si je suis sur la bonne piste. Franchement sans ca je serais encore bloque a l’etape 1, le coup du message steganographie dans la tonne de tweets n’etait vraiment pas evident a trouver !

    • Yes I am, on the other hand : no one force you to read my articles…^^
      If you want to find by yourself, dont look for it on the web !
      It’s only intented for those who get stuck… so considered these articles as a « starter kit » for « $crIpT kIddI3 ».
      Also I won’t be able to get to the end of it, before January, 4th… The end will come after this date.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.