====== Decompilació d’apps binàries i d’apps híbrides ====== En l'actualitat, les aplicacions mòbils són una part integral de la nostra vida quotidiana. Utilitzem aplicacions per comunicar-nos, realitzar operacions bancàries, comprar en línia i molt més. No obstant això, en un entorn digital cada vegada més complex i amb més amenaces, la seguretat de les aplicacions mòbils és una preocupació creixent. En aquest article, explorarem la decompilació d'apps binàries i d'apps híbrides en el context del sistema operatiu Android, comparant-lo amb iOS, i presentarem exercicis per als alumnes que permetin aprofundir en aquest tema. {{tag> #CiberOtMp02 #CeotMp02 #android #FpInfor #CiberOT #CiberOtMp03 #Ceot #CeotMp03 Industrial I4.0 STEP7 PLCSIM ModBus }} **Decompilació d'Apps Binàries en Android** La decompilació d'apps binàries és el procés de desensamblar i analitzar el codi font d'una aplicació compilada. En el cas d'Android, les aplicacions estan escrites principalment en Java o Kotlin i són compilades en un format executable (APK). Els atacants poden utilitzar eines com JD-GUI, APKTool o JADX per decompilar les aplicacions i accedir al seu codi font original. La decompilació d'apps binàries en Android pot revelar informació sensible, com ara algorismes de xifrat, claus de seguretat, URLs de serveis web i dades confidencials emmagatzemades a l'aplicació. Això pot permetre als atacants comprendre el funcionament intern de l'aplicació i identificar possibles vulnerabilitats de seguretat. **Decompilació d'Apps Híbrides en Android** Les apps híbrides són aplicacions mòbils que combinen tecnologies web (HTML, CSS i JavaScript) amb tecnologies nativas. Aquestes apps són desenvolupades utilitzant frameworks com Apache Cordova o React Native, que permeten utilitzar els mateixos codis font per a diferents plataformes, com Android i iOS. La decompilació d'apps híbrides implica la mateixa metodologia que la de les apps natives. No obstant això, el codi font de les parts web de les apps híbrides és relativament més accessible, ja que està escrit en llenguatges oberts com HTML i JavaScript. Això facilita la seva comprensió i potencia l'exploració de possibles vulnerabilitats relacionades amb l'ús de tecnologies web. **Comparació amb iOS** En comparació amb Android, iOS té un entorn de seguretat més restringit i controlat. Les aplicacions per a dispositius iOS són distribuïdes a través de l'App Store i estan sotmeses a un procés de revisió rigorós per part d'Apple abans de ser publicades. Aquest procés inclou la revisió del codi de l'aplicació per identificar possibles problemes de seguretat i garantir la seva conformitat amb les polítiques d'Apple. A més, iOS utilitza un sistema de protecció anomenat "sandboxing" que aïlla les aplicacions i limita la seva interacció amb altres parts del sistema operatiu. Això dificulta la decompilació i l'anàlisi del codi font de les aplicacions en dispositius iOS. ====== Exercicis ====== * 1. Identifica una aplicació Android popular i utilitza l'APKTool per decompilar-la. Examina el codi font obtingut i busca possibles vulnerabilitats relacionades amb l'emmagatzematge de dades sensibles o la gestió d'autenticació. * 2. Selecciona una app híbrida basada en Apache Cordova i utilitza una eina com PhoneGap Developer App per a compilar-la i executar-la en un dispositiu Android. Utilitza eines com Chrome Developer Tools per inspeccionar i analitzar el codi font web de l'aplicació. Cerca possibles vulnerabilitats relacionades amb la comunicació amb serveis web o l'ús de plugins. * 3. Investiga sobre el procés de revisió d'aplicacions per a iOS a l'App Store. Compara aquest procés amb la distribució d'aplicacions per a Android. Discuteix els avantatges i desavantatges de cada sistema des d'una perspectiva de seguretat. * 4. Explorarem el procés de decompilació d'apps binàries en la plataforma mòbil Android i destacarem les configuracions importants per dur a terme aquest procés amb èxit: - 1. Configuració de l'entorn: Per començar amb el procés de decompilació d'apps binàries en Android, necessitem configurar un entorn de desenvolupament adequat. Aquí hi ha algunes de les configuracions clau a tenir en compte: a. Java Development Kit (JDK): Assegureu-vos que teniu instal·lada la versió adequada del JDK en el vostre sistema. La decompilació d'aplicacions requereix eines que funcionen amb Java, per tant, assegureu-vos de tenir el JDK instal·lat i configurat correctament. b. Android SDK: L'Android Software Development Kit (SDK) és necessari per accedir a les eines i recursos per desenvolupar aplicacions Android. Assegureu-vos de tenir instal·lada la versió més recent de l'SDK i configureu-la amb les rutes de sistema adequades. c. Descompilador: Existeixen diverses eines populars per a la decompilació d'aplicacions Android, com ara Apktool, JADX, Dex2Jar, entre altres. Assegureu-vos de descarregar i configurar l'eina de decompilació que millor s'adapti a les vostres necessitats i preferències. - 2. Decompilació de l'aplicació: Un cop configurat l'entorn de desenvolupament, podem començar el procés de decompilació de l'aplicació Android. Aquest procés generalment es divideix en els següents passos: a. Extracció de l'APK: L'APK (Android Package) és el fitxer de l'aplicació binària que s'instal·la en un dispositiu Android. Extraieu l'APK de l'aplicació de destinació mitjançant eines com ara adb (Android Debug Bridge) o altres mètodes disponibles. b. Descompilació de recursos: Utilitzeu l'eina de decompilació seleccionada per descomprimir els recursos de l'APK. Això inclou el desmuntatge dels fitxers XML, imatges, recursos de configuració i altres elements que formen part de l'aplicació. c. Descompilació de codi font: Mitjançant l'eina de decompilació adequada, procediu a descompilar el codi font de l'aplicació. Aquest procés converteix els fitxers .dex (Dalvik Executable) o .class en codi font Java llegible. - 3. Configuració de l'entorn de desenvolupament: Un cop s'hagi realitzat la decompilació de l'aplicació, és útil configurar un entorn de desenvolupament per explorar i analitzar el codi font obtingut. Aquestes configuracions poden incloure: a. Editor de text o IDE: Utilitzeu un editor de text o un entorn de desenvolupament integrat (IDE) per navegar i analitzar el codi font. Hi ha diverses opcions populars disponibles com ara Android Studio, Eclipse, Visual Studio Code, entre altres. b. Dependències i biblioteques: Identifiqueu les dependències i biblioteques utilitzades per l'aplicació. Això pot ajudar a comprendre millor el funcionament de l'aplicació i a desenvolupar possibles extensions o integracions amb altres sistemes. c. Configuració del simulador o dispositiu: Configureu un emulador d'Android o connecteu un dispositiu real per provar i executar l'aplicació descompilada. Això us permetrà comprendre millor el comportament de l'aplicació i realitzar proves de manera més eficient. ====== Resumint ====== La decompilació d'apps binàries i d'apps híbrides en un entorn de plataformes mòbils presenta desafiaments significatius en la seguretat de les aplicacions. Tant en el cas d'Android com en el cas d'iOS, és important comprendre els riscos associats a aquests processos i prendre les mesures adequades per protegir les aplicacions contra possibles vulnerabilitats. Els exercicis presentats en aquest article permeten als alumnes explorar aquests conceptes i aprofundir en els aspectes de seguretat en el desenvolupament d'aplicacions mòbils. La decompilació d'aplicacions binàries en la plataforma mòbil Android pot ser un procés complex, però amb les configuracions adequades i les eines de decompilació correctes, és possible analitzar i entendre el funcionament intern d'una aplicació. Recorda que la decompilació d'aplicacions només hauria de realitzar-se per a fins legítims i respectant els drets d'autor i les lleis de protecció de dades. Amb l'ús adequat i ètic, la decompilació pot ser una eina valuosa per al desenvolupament i l'anàlisi d'aplicacions Android.