Penetrationstest av mobila appar
Att genomföra penetrationtest (IT-säkerhetstest) av mobila appar är en avancerad uppgift och kan vara tidsödande. Det som tar mest tid är att sätta upp test-miljön och allt vad det innebär med jailbreaks och verktyg som ska installeras.
Som tur var är detta något som enbart behöver genomföras en gång, sedan kan samma testmiljö användas för att testa flertalet appar.
Även fleratalet delar går att testa utan en avancerad testmiljö. Såsom att kontrollera hur trafiken är krypterad till och från appen om den gör någon extern kommunikation.
Vi kommer i denna guiden ej gå igenom hur du sätter upp en testmiljö utan att fokusera på några av de tester du bör genomföra vid en granskning av en mobil applikation.
Nätverkskommunkation
För titta på nätverkskommunikation så kan med fördel en proxy såsom Burp eller Charles användas. Jag rekommenderar även att betala för dessa verktyg då priset är relativt lågt.
Du kan även med fördel sätta upp ett dedikerat WiFi-nät för att just titta på kommunikation mellan appar för att lättare se vilken trafik som just går till/från telefonen.
Sen ställer du bara in så att din dator som kör Burp eller Charles blir proxy, detta går att göra under WiFi-inställningarna längst ner för det nät du använder.
Om du har tur så ser du sedan kommunikationen. Då är det dags att göra tester, det första du kan testa är att göra SSL MITM och se om det fungerar. Det bör ej fungera men om det fungerar så är det ett första fel du har identifierat i appen då den ej kontrollerar certifikatet. Sedan kan du installera Charles root-certifikat i telefonen och testa att göra SSL-mitm igen (om nu SSL används). Fungerar det då att göra SSL MITM så bör du rekommendera att kunden använder sig av Certificate Pinning som förhindrar denna MITM-attack.
En annnan smidig sak som går att använda är RVI (Remote Virtual Interface) för att spela in kommunikationen direkt till PCAP-format via tcpdump eller liknande. Gäller dock enbart iOS.
Reverse-Engineering
Innan du börjar att genomföra reverse-engineering på en app så bör du fungera ut vad syftet är. Bara att det fungerar är dock något att anmärka på anser jag om kunden ej obfuskerat sin Andorid App. För det är nämligen så att det är 10x lättare att genomföra reverse-engineering på en APK-fil än iOS.
För att dekompilera en Android-app så behöver du för använda en såkallad APK-downloader såsom denna:
Sedan så kan du använda följande webbtjänst som dekompilerar APK-filen:
Vilket eg. bara är följande verktyg som används automatiserat:
- dex2jar
- JAD – Java Decompiler
- apktool
- zip/unzip
Men sen då? Nu kan du titta efter krypteringsalgoritmer, statiska nycklar eller liknande som kan vara av intresse. Även söka efter sådan som du kanske identifierade när du tittade på nätverkstrafiken.
För verktyg till iOS så rekommenderas följande lista: iphonedevwiki.net/index.php/Reverse_Engineering_Tools
Även så rekommenderas gdb samt så finns det testappar såsom denna om du vill utveckla dina kunskaper:
Titta även efter eventuella debug-meddelanden som återfinnes (NSLog) om dessa avslöjar något intressant.
Filsystemet
Att kontrollera vilka filer som ligger på filsystemet är alltid bra. På iOS så ligger apparna under katalogen /var/mobile/Applications och följande kommando listar var du kan hitta apparna i underkatalogerna:
find /var/mobile/Applications -name "*.app" -type d
18E89E69-1F4E-417F-8606-575F43BC8DF0/Toca Tailor.app D2691A4E-D9E8-40B3-8480-AC65158FA117/SwishC2B.app D4C0D618-17EC-4FCE-B2BE-C68698E0251A/BankID.app 3AD50C2C-1ECB-4DF6-96F8-F97979A32536/Swedbank.app A8C99A3F-AE14-43A8-89AD-00F5CD6D743D/WyWallet.app
Titta efter SQLite filer, krypterade filer. Källkod som har glömts eller liknande. För .plist filer så kan verktyget plutil används för att titta närmare på dessa (iOS).
Avslutande ord
Det bästa sättet att lära sig är att läsa andras rapporter samt att ladda hem några av test-apparna som finns. Kör du fast så går det då att lära hur andra har löst eventuella problem som uppstår.
Här finnes en test-app till iOS: damnvulnerableiosapp.com
Och publika rapporter har vi lagt upp under knappen publika rapporter.
Ett svar på “Penetrationstest av mobila appar”