Android Applications Pentesting
Reading time: 35 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Msingi wa Programu za Android
Inapendekezwa sana kuanza kusoma ukurasa huu ili kujua kuhusu sehemu muhimu zaidi zinazohusiana na usalama wa Android na vipengele hatari zaidi katika programu ya Android:
ADB (Android Debug Bridge)
Hii ni zana kuu unayohitaji kuungana na kifaa cha android (kilichosimuliwa au halisi).
ADB inaruhusu kudhibiti vifaa ama kupitia USB au Network kutoka kwa kompyuta. Hii huduma inaruhusu kuhamasisha faili katika mwelekeo wote, kusakinisha na kuondoa programu, kutekeleza amri za shell, kufanya nakala ya data, kusoma kumbukumbu, kati ya kazi nyingine.
Angalia orodha ifuatayo ya ADB Commands kujifunza jinsi ya kutumia adb.
Smali
Wakati mwingine ni muhimu kubadilisha msimbo wa programu ili kufikia habari zilizofichwa (labda nywila au bendera zilizofichwa vizuri). Hivyo, inaweza kuwa ya kuvutia decompile apk, kubadilisha msimbo na kuirekebisha.
Katika mafunzo haya unaweza kujifunza jinsi ya decompile APK, kubadilisha msimbo wa Smali na kuirekebisha APK na kazi mpya. Hii inaweza kuwa ya manufaa kama mbadala wa majaribio kadhaa wakati wa uchambuzi wa dynamic ambao utawasilishwa. Hivyo, weka daima katika akili uwezekano huu.
Njia nyingine za kuvutia
- Kudanganya eneo lako katika Play Store
- Pakua APKs: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/, https://github.com/kiber-io/apkd
- Extract APK from device:
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
- Unganisha vipande vyote na apks za msingi kwa kutumia APKEditor:
mkdir splits
adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits
java -jar ../APKEditor.jar m -i splits/ -o merged.apk
# after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner
java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
Static Analysis
Kwanza kabisa, kwa kuchambua APK unapaswa kuangalia msimbo wa Java kwa kutumia decompiler.
Tafadhali, soma hapa kupata taarifa kuhusu decompilers mbalimbali zinazopatikana.
Looking for interesting Info
Kwa kuangalia tu nyuzi za APK unaweza kutafuta nywila, URLs (https://github.com/ndelphit/apkurlgrep), api funguo, sifuri, bluetooth uuids, tokens na chochote kinachovutia... angalia hata kwa utekelezaji wa msimbo backdoors au backdoors za uthibitishaji (akili za admin zilizowekwa ndani ya programu).
Firebase
Lipa kipaumbele maalum kwa firebase URLs na angalia kama imewekwa vibaya. Taarifa zaidi kuhusu nini FIrebase na jinsi ya kuikandamiza hapa.
Basic understanding of the application - Manifest.xml, strings.xml
Uchambuzi wa faili za Manifest.xml za programu na strings.xml unaweza kufichua udhaifu wa usalama. Faili hizi zinaweza kufikiwa kwa kutumia decompilers au kwa kubadilisha kiendelezi cha faili cha APK kuwa .zip na kisha kuzipa.
Udhaifu ulioainishwa kutoka kwa Manifest.xml ni pamoja na:
- Programu zinazoweza kudhibitiwa: Programu zilizowekwa kama zinazoweza kudhibitiwa (
debuggable="true"
) katika faili ya Manifest.xml zinatoa hatari kwani zinaruhusu muunganisho ambao unaweza kusababisha unyakuzi. Kwa ufahamu zaidi kuhusu jinsi ya kuikandamiza programu zinazoweza kudhibitiwa, rejelea mafunzo kuhusu kutafuta na kuikandamiza programu zinazoweza kudhibitiwa kwenye kifaa. - Mipangilio ya Nakala: Sifa ya
android:allowBackup="false"
inapaswa kuwekwa wazi kwa programu zinazoshughulika na taarifa nyeti ili kuzuia nakala zisizoidhinishwa kupitia adb, hasa wakati ufuatiliaji wa usb umewezeshwa. - Usalama wa Mtandao: Mipangilio ya usalama wa mtandao ya kawaida (
android:networkSecurityConfig="@xml/network_security_config"
) katika res/xml/ inaweza kubainisha maelezo ya usalama kama vile pini za cheti na mipangilio ya trafiki ya HTTP. Mfano ni kuruhusu trafiki ya HTTP kwa maeneo maalum. - Shughuli na Huduma zilizotolewa: Kutambua shughuli na huduma zilizotolewa katika manifest kunaweza kuonyesha vipengele ambavyo vinaweza kutumika vibaya. Uchambuzi zaidi wakati wa upimaji wa dinamik unaweza kufichua jinsi ya kuikandamiza vipengele hivi.
- Watoa Maudhui na Watoa Faili: Watoa maudhui walio wazi wanaweza kuruhusu ufikiaji usioidhinishwa au mabadiliko ya data. Mipangilio ya Watoa Faili pia inapaswa kuchunguzwa kwa makini.
- Vikumbusho vya Matangazo na Mipango ya URL: Vipengele hivi vinaweza kutumika kwa unyakuzi, huku kukiwa na umakini maalum kuhusu jinsi mipango ya URL inavyoshughulikiwa kwa udhaifu wa ingizo.
- Toleo la SDK: Sifa za
minSdkVersion
,targetSDKVersion
, namaxSdkVersion
zinaonyesha toleo la Android linaloungwa mkono, zikionyesha umuhimu wa kutosupport toleo la Android lililozeeka na lenye udhaifu kwa sababu za usalama.
Kutoka kwa faili ya strings.xml, taarifa nyeti kama funguo za API, mipango ya kawaida, na maelezo mengine ya waendelezaji yanaweza kugundulika, yakisisitiza hitaji la ukaguzi wa makini wa rasilimali hizi.
Tapjacking
Tapjacking ni shambulio ambapo programu mbaya inazinduliwa na kujiweka juu ya programu ya mwathirika. Mara inapoificha wazi programu ya mwathirika, kiolesura chake cha mtumiaji kimeundwa kwa njia ya kudanganya mtumiaji kuingiliana nayo, wakati ikipitia mwingiliano huo kwa programu ya mwathirika.
Kwa kweli, inamfanya mtumiaji asiweze kujua kwamba anafanya vitendo kwenye programu ya mwathirika.
Pata taarifa zaidi katika:
Task Hijacking
Shughuli yenye launchMode
iliyowekwa kuwa singleTask
bila taskAffinity
iliyofafanuliwa inakuwa hatarini kwa task Hijacking. Hii inamaanisha kwamba, programu inaweza kusakinishwa na ikiwa itazinduliwa kabla ya programu halisi inaweza kuchukua kazi ya programu halisi (hivyo mtumiaji atakuwa akifanya kazi na programu mbaya akidhani anatumia halisi).
Taarifa zaidi katika:
Insecure data storage
Hifadhi ya Ndani
Katika Android, faili zilizohifadhiwa katika hifadhi ya ndani zimeundwa kuwa zinapatikana pekee na programu iliyozitengeneza. Kipimo hiki cha usalama kinatekelezwa na mfumo wa uendeshaji wa Android na kwa ujumla kinatosha kwa mahitaji ya usalama ya programu nyingi. Hata hivyo, waendelezaji wakati mwingine hutumia njia kama MODE_WORLD_READABLE
na MODE_WORLD_WRITABLE
ili kuruhusu faili kushirikiwa kati ya programu tofauti. Hata hivyo, njia hizi hazizuizi ufikiaji wa faili hizi na programu nyingine, ikiwa ni pamoja na zile zenye nia mbaya.
- Static Analysis:
- Hakikisha kwamba matumizi ya
MODE_WORLD_READABLE
naMODE_WORLD_WRITABLE
yanachunguzwa kwa makini. Njia hizi zinaweza kufichua faili kwa ufikiaji usioidhinishwa au usio kusudiwa.
- Dynamic Analysis:
- Thibitisha idhini zilizowekwa kwenye faili zilizotengenezwa na programu. Kwa haswa, angalia kama faili yoyote imewekwa kuwa inasomeka au kuandikwa duniani kote. Hii inaweza kuwa hatari kubwa ya usalama, kwani itaruhusu programu yoyote iliyosakinishwa kwenye kifaa, bila kujali asili yake au nia, kusoma au kubadilisha faili hizi.
Hifadhi ya Nje
Wakati wa kushughulikia faili kwenye hifadhi ya nje, kama vile Kadi za SD, tahadhari fulani zinapaswa kuchukuliwa:
- Upatikanaji:
- Faili kwenye hifadhi ya nje ni zinazosomeka na kuandikwa duniani kote. Hii inamaanisha programu au mtumiaji yeyote anaweza kufikia faili hizi.
- Masuala ya Usalama:
- Kwa sababu ya urahisi wa ufikiaji, inashauriwa kutohifadhi taarifa nyeti kwenye hifadhi ya nje.
- Hifadhi ya nje inaweza kuondolewa au kufikiwa na programu yoyote, na kuifanya kuwa na usalama mdogo.
- Kushughulikia Data kutoka Hifadhi ya Nje:
- Daima fanya uthibitisho wa ingizo kwenye data iliyopatikana kutoka hifadhi ya nje. Hii ni muhimu kwa sababu data hiyo inatoka kwenye chanzo kisichoaminika.
- Kuhifadhi executable au faili za darasa kwenye hifadhi ya nje kwa ajili ya upakiaji wa dinamik kunashauriwa kutozwa.
- Ikiwa programu yako inapaswa kupata faili za executable kutoka hifadhi ya nje, hakikisha faili hizi zimepangwa na kuthibitishwa kwa njia ya cryptographic kabla ya kupakiwa kwa dinamik. Hatua hii ni muhimu kwa kudumisha uaminifu wa usalama wa programu yako.
Hifadhi ya nje inaweza kupatikana katika /storage/emulated/0
, /sdcard
, /mnt/sdcard
note
Kuanzia na Android 4.4 (API 17), kadi ya SD ina muundo wa saraka ambao unapunguza ufikiaji kutoka kwa programu hadi saraka ambayo ni maalum kwa programu hiyo. Hii inazuia programu mbaya kupata ufikiaji wa kusoma au kuandika kwenye faili za programu nyingine.
Taarifa nyeti zilizohifadhiwa kwa maandiko wazi
- Mipangilio ya pamoja: Android inaruhusu kila programu kuhifadhi kwa urahisi faili za xml katika njia
/data/data/<packagename>/shared_prefs/
na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo. - Maktaba: Android inaruhusu kila programu kuhifadhi kwa urahisi maktaba za sqlite katika njia
/data/data/<packagename>/databases/
na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo.
Broken TLS
Kubaliana na Vyeti Vyote
Kwa sababu fulani wakati mwingine waendelezaji wanakubali vyeti vyote hata kama kwa mfano jina la mwenyeji halifanani na mistari ya msimbo kama ifuatavyo:
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Njia nzuri ya kujaribu hii ni kujaribu kukamata trafiki kwa kutumia proxy kama Burp bila kuidhinisha Burp CA ndani ya kifaa. Pia, unaweza kuunda na Burp cheti kwa jina la mwenyeji tofauti na kulitumika.
Uthibitishaji wa Kificho
Mchakato Mbaya wa Usimamizi wa Funguo
Wakandarasi wengine huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa funguo zilizowekwa kwa nguvu/kutabirika katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri.
Matumizi ya Algorithimu zisizo Salama na/au Zilizopitwa na Wakati
Wakandarasi hawapaswi kutumia algorithimu zilizopitwa na wakati kufanya ukaguzi, hifadhi au tuma data. Baadhi ya algorithimu hizi ni: RC4, MD4, MD5, SHA1... Ikiwa hashes zinatumika kuhifadhi nywila kwa mfano, hashes zinazopinga brute-force zinapaswa kutumika na chumvi.
Ukaguzi Mwingine
- Inapendekezwa kuficha APK ili kufanya kazi ya mhandisi wa kurudi kuwa ngumu kwa washambuliaji.
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kufanya ukaguzi wake mwenyewe kuona kama simu imejikita na kuchukua hatua zinazofaa.
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kuangalia kama emulator inatumika.
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kuangalia uadilifu wake kabla ya kutekeleza ili kuona kama imebadilishwa.
- Tumia APKiD kuangalia ni compiler/packer/obfuscator gani ilitumika kujenga APK
Programu ya React Native
Soma ukurasa ufuatao kujifunza jinsi ya kufikia kwa urahisi msimbo wa javascript wa programu za React:
Programu za Xamarin
Soma ukurasa ufuatao kujifunza jinsi ya kufikia kwa urahisi msimbo wa C# wa programu za xamarin:
Programu za Superpacked
Kulingana na blog post superpacked ni algorithimu ya Meta inayoshinikiza maudhui ya programu kuwa katika faili moja. Blogu inazungumzia uwezekano wa kuunda programu inayoshinikiza aina hizi za programu... na njia ya haraka ambayo inahusisha kutekeleza programu na kukusanya faili zilizoshinikizwa kutoka kwa mfumo wa faili.
Uchambuzi wa Msimbo wa Kawaida wa Kiotomatiki
Chombo mariana-trench kina uwezo wa kupata vulnerabilities kwa kuchanganua msimbo wa programu. Chombo hiki kina mfululizo wa vyanzo vilivyofahamika (ambavyo vinaonyesha kwa chombo mahali ambapo ingizo linadhibitiwa na mtumiaji), sinks (ambazo zinaonyesha kwa chombo mahali hatari ambapo ingizo la mtumiaji mbaya linaweza kusababisha madhara) na sheria. Sheria hizi zinaonyesha mchanganyiko wa vyanzo-sinks unaoashiria udhaifu.
Kwa maarifa haya, mariana-trench itakagua msimbo na kupata udhaifu unaowezekana ndani yake.
Siri zilizovuja
Programu inaweza kuwa na siri (funguo za API, nywila, URLs zilizofichwa, subdomains...) ndani yake ambazo unaweza kuweza kugundua. Unaweza kutumia chombo kama https://github.com/dwisiswant0/apkleaks
Kupita Uthibitishaji wa Kijeni
Bypass Biometric Authentication (Android)
Kazi Nyingine za Kuvutia
- Utekelezaji wa Msimbo:
Runtime.exec(), ProcessBuilder(), native code:system()
- Tuma SMS:
sendTextMessage, sendMultipartTestMessage
- Kazi za Asili zilizotangazwa kama
native
:public native, System.loadLibrary, System.load
- Soma hii kujifunza jinsi ya kurudi nyuma kazi za asili
Hila Nyingine
Uchambuzi wa Kijani
Kwanza kabisa, unahitaji mazingira ambapo unaweza kufunga programu na mazingira yote (cheti cha Burp CA, Drozer na Frida hasa). Kwa hivyo, kifaa kilichojikita (kilichotengenezwa au la) kinapendekezwa sana.
Uchambuzi wa Kijani Mtandaoni
Unaweza kuunda akaunti ya bure katika: https://appetize.io/. Jukwaa hili linakuruhusu kupakia na kutekeleza APKs, hivyo ni muhimu kuona jinsi apk inavyofanya kazi.
Unaweza hata kuona kumbukumbu za programu yako kwenye wavuti na kuungana kupitia adb.
Shukrani kwa muunganisho wa ADB unaweza kutumia Drozer na Frida ndani ya emulators.
Uchambuzi wa Kijani wa Mitaa
Kutumia emulator
- Android Studio (Unaweza kuunda x86 na arm vifaa, na kulingana na hiitoleo la hivi karibuni la x86 lina unga mkono maktaba za ARM bila kuhitaji emulator ya arm yenye kasi polepole).
- Jifunze jinsi ya kuiseti kwenye ukurasa huu:
- Genymotion (Toleo la Bure: Toleo la Kibinafsi, unahitaji kuunda akaunti. Inapendekezwa kupakua toleo PAMOJA NA VirtualBox ili kuepuka makosa yanayoweza kutokea.)
- Nox (Bure, lakini haunga mkono Frida au Drozer).
note
Unapounda emulator mpya kwenye jukwaa lolote kumbuka kwamba kadri skrini inavyokuwa kubwa, ndivyo emulator itakavyokuwa polepole. Kwa hivyo chagua skrini ndogo ikiwa inawezekana.
Ili kufunga huduma za google (kama AppStore) katika Genymotion unahitaji kubofya kitufe kilichochorwa kwa rangi nyekundu kwenye picha ifuatayo:
Pia, zingatia kwamba katika mipangilio ya Android VM katika Genymotion unaweza kuchagua Bridge Network mode (hii itakuwa muhimu ikiwa utaungana na Android VM kutoka VM tofauti na zana).
Tumia kifaa halisi
Unahitaji kuwasha chaguzi za ufuatiliaji na itakuwa vizuri ikiwa unaweza kuyashughulikia:
- Mipangilio.
- (Kuanzia Android 8.0) Chagua Mfumo.
- Chagua Kuhusu simu.
- Bonyeza Nambari ya Ujenzi mara 7.
- Rudi nyuma na utaona Chaguzi za Mwandamizi.
Mara tu umepofunga programu, jambo la kwanza unapaswa kufanya ni kujaribu na kuchunguza inafanya nini, inafanya kazi vipi na kuzoea nayo.
Nitapendekeza kufanya uchambuzi huu wa awali wa kijani kwa kutumia uchambuzi wa kijani wa MobSF + pidcat, ili tuweze kujifunza jinsi programu inavyofanya kazi wakati MobSF inakamata data nyingi za kuvutia ambazo unaweza kupitia baadaye.
Kuvuja kwa Data zisizokusudiwa
Kumbukumbu
Wakandarasi wanapaswa kuwa waangalifu kuhusu kufichua taarifa za ufuatiliaji hadharani, kwani inaweza kusababisha kuvuja kwa data nyeti. Zana pidcat na adb logcat
zinapendekezwa kwa ajili ya kufuatilia kumbukumbu za programu ili kubaini na kulinda taarifa nyeti. Pidcat inapendekezwa kwa urahisi wa matumizi na usomaji.
warning
Kumbuka kwamba kuanzia baada ya Android 4.0, programu zinaweza kufikia kumbukumbu zao tu. Hivyo programu haziwezi kufikia kumbukumbu za programu nyingine.
Hata hivyo, bado inapendekezwa kutokuficha taarifa nyeti.
Kuhifadhi Kumbukumbu za Nakala/Pasta
Mfumo wa clipboard-based wa Android unaruhusu kazi za nakala-na-pasta katika programu, lakini unatoa hatari kwani programu nyingine zinaweza kufikia clipboard, na hivyo kuweza kufichua data nyeti. Ni muhimu kuondoa kazi za nakala/pasta kwa sehemu nyeti za programu, kama vile maelezo ya kadi ya mkopo, ili kuzuia kuvuja kwa data.
Kumbukumbu za Kuanguka
Ikiwa programu inaanguka na kuhifadhi kumbukumbu, kumbukumbu hizi zinaweza kusaidia washambuliaji, hasa wakati programu haiwezi kurudi nyuma. Ili kupunguza hatari hii, epuka kuficha kumbukumbu wakati wa kuanguka, na ikiwa kumbukumbu lazima zitumwe kupitia mtandao, hakikisha zinatumwa kupitia njia ya SSL kwa usalama.
Kama pentester, jaribu kuangalia kumbukumbu hizi.
Data za Uchambuzi Zinatumwa kwa Vyama vya Tatu
Programu mara nyingi hujumuisha huduma kama Google Adsense, ambazo zinaweza bila kukusudia kuvuja data nyeti kutokana na utekelezaji usio sahihi na wakandarasi. Ili kubaini uwezekano wa kuvuja kwa data, inapendekezwa kukamata trafiki ya programu na kuangalia kama kuna taarifa nyeti zinazotumwa kwa huduma za vyama vya tatu.
SQLite DBs
Programu nyingi zitatumia maktaba za ndani za SQLite kuhifadhi taarifa. Wakati wa pentest angalia maktaba zilizoundwa, majina ya meza na safu na data yote iliyohifadhiwa kwa sababu unaweza kupata taarifa nyeti (ambayo itakuwa udhaifu).
Maktaba zinapaswa kuwa katika /data/data/the.package.name/databases
kama /data/data/com.mwr.example.sieve/databases
Ikiwa maktaba inahifadhi taarifa za siri na ime fichwa lakini unaweza kupata nywila ndani ya programu bado ni udhaifu.
Taja meza kwa kutumia .tables
na taja safu za meza kwa kufanya .schema <table_name>
Drozer (Kuvunja Shughuli, Watoa Maudhui na Huduma)
Kutoka Drozer Docs: Drozer inakuruhusu kuchukua jukumu la programu ya Android na kuingiliana na programu nyingine. Inaweza kufanya chochote ambacho programu iliyosakinishwa inaweza kufanya, kama kutumia mfumo wa Mawasiliano ya Mchakato wa Android (IPC) na kuingiliana na mfumo wa uendeshaji wa chini.
Drozer ni chombo muhimu kwa kuvunja shughuli zilizotolewa, huduma zilizotolewa na Watoa Maudhui kama utakavyofundishwa katika sehemu zinazofuata.
Kuvunja Shughuli Zilizotolewa
Soma hii ikiwa unataka kufreshi kile kilicho shughuli ya Android.
Pia kumbuka kwamba msimbo wa shughuli huanza katika onCreate
njia.
Kupita Uthibitishaji
Wakati shughuli inapotolewa unaweza kuita skrini yake kutoka programu ya nje. Kwa hivyo, ikiwa shughuli yenye taarifa nyeti ime tolewa unaweza kupita mitambo ya uthibitishaji ili kuipata.
Jifunze jinsi ya kuvunja shughuli zilizotolewa na Drozer.
Unaweza pia kuanzisha shughuli iliyotolewa kutoka adb:
- Jina la Kifurushi ni com.example.demo
- Jina la Shughuli iliyotolewa ni com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
NOTE: MobSF itagundua kama hatari matumizi ya singleTask/singleInstance kama android:launchMode
katika shughuli, lakini kutokana na hii, kwa wazi hii ni hatari tu katika toleo za zamani (API versions < 21).
note
Kumbuka kwamba kupita kwa idhini si kila wakati udhaifu, itategemea jinsi kupita kunavyofanya kazi na ni taarifa gani zinazoonyeshwa.
Kuvuja kwa taarifa nyeti
Shughuli zinaweza pia kurudisha matokeo. Ikiwa utaweza kupata shughuli iliyosambazwa na isiyo na ulinzi inayoita setResult
na kurudisha taarifa nyeti, kuna uvujaji wa taarifa nyeti.
Tapjacking
Ikiwa tapjacking haizuiwi, unaweza kutumia shughuli iliyosambazwa kufanya mtumiaji afanye vitendo visivyotarajiwa. Kwa maelezo zaidi kuhusu nini Tapjacking fuata kiungo.
Kutumia Watoa Maudhui - Kufikia na kubadilisha taarifa nyeti
Soma hii ikiwa unataka kukumbusha nini ni Mtoa Maudhui.
Watoa maudhui kimsingi hutumiwa kushiriki data. Ikiwa programu ina watoa maudhui wanaopatikana unaweza kuwa na uwezo wa kuchota taarifa nyeti kutoka kwao. Pia ni muhimu kujaribu SQL injections na Path Traversals kwani zinaweza kuwa na udhaifu.
Jifunze jinsi ya kutumia Watoa Maudhui na Drozer.
Kutumia Huduma
Soma hii ikiwa unataka kukumbusha nini ni Huduma.
Kumbuka kwamba vitendo vya Huduma huanza katika njia onStartCommand
.
Huduma kimsingi ni kitu ambacho kinaweza kupokea data, kuchakata na kurudisha (au la) jibu. Hivyo, ikiwa programu inasambaza huduma fulani unapaswa kuangalia msimbo ili kuelewa inafanya nini na kujaribu kwa dynamically ili kuchota taarifa za siri, kupita hatua za uthibitishaji...
Jifunze jinsi ya kutumia Huduma na Drozer.
Kutumia Vastika za Matangazo
Soma hii ikiwa unataka kukumbusha nini ni Vastika za Matangazo.
Kumbuka kwamba vitendo vya Vastika za Matangazo huanza katika njia onReceive
.
Vastika za matangazo zitakuwa zinangoja aina fulani ya ujumbe. Kulingana na jinsi vastika inavyoshughulikia ujumbe inaweza kuwa na udhaifu.
Jifunze jinsi ya kutumia Vastika za Matangazo na Drozer.
Kutumia Mipango / Viungo vya ndani
Unaweza kutafuta viungo vya ndani kwa mikono, ukitumia zana kama MobSF au scripts kama hii.
Unaweza kufungua mpango ulioelezwa kwa kutumia adb au brower:
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
Kumbuka kwamba unaweza kuacha jina la kifurushi na simu itaita kiotomatiki programu ambayo inapaswa kufungua kiungo hicho.
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
Code executed
Ili kupata code itakayotekelezwa katika App, nenda kwenye shughuli inayoitwa na deeplink na tafuta kazi onNewIntent
.
Sensitive info
Kila wakati unapotafuta deeplink hakikisha kuwa haipokei data nyeti (kama nywila) kupitia vigezo vya URL, kwa sababu programu nyingine yoyote inaweza kujifanya kuwa deeplink na kuiba data hiyo!
Parameters in path
Unapaswa kuangalia pia kama deeplink yoyote inatumia parameter ndani ya njia ya URL kama: https://api.example.com/v1/users/{username}
, katika kesi hiyo unaweza kulazimisha usafiri wa njia kwa kufikia kitu kama: example://app/users?username=../../unwanted-endpoint%3fparam=value
.
Kumbuka kwamba ikiwa utapata mwisho sahihi ndani ya programu unaweza kuwa na uwezo wa kusababisha Open Redirect (ikiwa sehemu ya njia inatumika kama jina la domain), account takeover (ikiwa unaweza kubadilisha maelezo ya watumiaji bila CSRF token na mwisho ulio hatarini unatumia njia sahihi) na hatari nyingine yoyote. Maelezo zaidi hapa.
More examples
Ripoti ya bug bounty kuhusu viungo (/.well-known/assetlinks.json).
Transport Layer Inspection and Verification Failures
- Vyeti havikaguliwi kila wakati ipasavyo na programu za Android. Ni kawaida kwa programu hizi kupuuza onyo na kukubali vyeti vilivyojitegemea au, katika baadhi ya matukio, kurudi kutumia muunganisho wa HTTP.
- Majadiliano wakati wa handshake ya SSL/TLS wakati mwingine ni dhaifu, yakitumia cipher suites zisizo salama. Uthibitisho huu unafanya muunganisho uwe hatarini kwa mashambulizi ya mtu katikati (MITM), kuruhusu washambuliaji kufungua data.
- Kuenea kwa taarifa za kibinafsi ni hatari wakati programu zinathibitisha kwa kutumia njia salama lakini kisha kuwasiliana kupitia njia zisizo salama kwa shughuli nyingine. Njia hii inashindwa kulinda data nyeti, kama vile vidakuzi vya kikao au maelezo ya mtumiaji, kutokana na kukamatwa na wahalifu.
Certificate Verification
Tutazingatia uthibitishaji wa cheti. Uadilifu wa cheti cha seva lazima uhakikishwe ili kuongeza usalama. Hii ni muhimu kwa sababu mipangilio isiyo salama ya TLS na uhamasishaji wa data nyeti kupitia njia zisizo na usalama inaweza kuleta hatari kubwa. Kwa hatua za kina za kuthibitisha vyeti vya seva na kushughulikia udhaifu, rasilimali hii inatoa mwongozo wa kina.
SSL Pinning
SSL Pinning ni hatua ya usalama ambapo programu inathibitisha cheti cha seva dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya programu yenyewe. Njia hii ni muhimu kwa kuzuia mashambulizi ya MITM. Kutekeleza SSL Pinning kunashauriwa kwa nguvu kwa programu zinazoshughulikia taarifa nyeti.
Traffic Inspection
Ili kukagua trafiki ya HTTP, ni muhimu kusanidi cheti cha zana ya proxy (mfano, Burp). Bila kusanidi cheti hiki, trafiki iliyosimbwa inaweza isionekane kupitia proxy. Kwa mwongozo wa kusanidi cheti cha CA cha kawaida, bonyeza hapa.
Programu zinazolenga API Level 24 na zaidi zinahitaji marekebisho kwenye Mipangilio ya Usalama wa Mtandao ili kukubali cheti cha CA cha proxy. Hatua hii ni muhimu kwa kukagua trafiki iliyosimbwa. Kwa maelekezo ya kubadilisha Mipangilio ya Usalama wa Mtandao, rejelea mwaliko huu.
Bypassing SSL Pinning
Wakati SSL Pinning inatekelezwa, kuipita inakuwa muhimu ili kukagua trafiki ya HTTPS. Njia mbalimbali zinapatikana kwa kusudi hili:
- Kiotomatiki badilisha apk ili kuipita SSLPinning kwa apk-mitm. Faida bora ya chaguo hili, ni kwamba hutahitaji root ili kuipita SSL Pinning, lakini utahitaji kufuta programu na kuisakinisha mpya, na hii haitafanya kazi kila wakati.
- Unaweza kutumia Frida (iliyozungumziwa hapa chini) kuipita ulinzi huu. Hapa kuna mwongozo wa kutumia Burp+Frida+Genymotion: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- Unaweza pia kujaribu kuipita SSL Pinning kiotomatiki kwa kutumia objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable"
- Unaweza pia kujaribu kuipita SSL Pinning kiotomatiki kwa kutumia MobSF dynamic analysis (iliyofafanuliwa hapa chini)
- Ikiwa bado unafikiri kuna trafiki ambayo hujapata unaweza kujaribu kupeleka trafiki kwa burp kwa kutumia iptables. Soma blog hii: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Looking for Common Web Vulnerabilities
Ni muhimu pia kutafuta udhaifu wa kawaida wa wavuti ndani ya programu. Maelezo ya kina juu ya kutambua na kupunguza udhaifu hizi yapo nje ya upeo wa muhtasari huu lakini yanashughulikiwa kwa kina mahali pengine.
Frida
Frida ni zana ya uhandisi wa dynamic kwa waendelezaji, wahandisi wa kurudi, na watafiti wa usalama.
Unaweza kufikia programu inayotembea na kuunganisha mbinu wakati wa wakati wa kukarabati, kubadilisha tabia, kubadilisha thamani, kutoa thamani, kukimbia code tofauti...
Ikiwa unataka kufanya pentest kwenye programu za Android unahitaji kujua jinsi ya kutumia Frida.
- Jifunze jinsi ya kutumia Frida: Frida tutorial
- Baadhi ya "GUI" kwa vitendo na Frida: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
- Ojection ni nzuri kwa kuharakisha matumizi ya Frida: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
- Unaweza kupata baadhi ya scripts za Frida hapa: https://codeshare.frida.re/
- Jaribu kuipita mitambo ya anti-debugging / anti-frida kwa kupakia Frida kama ilivyoonyeshwa katika https://erfur.github.io/blog/dev/code-injection-without-ptrace (chombo linjector)
Dump Memory - Fridump
Angalia ikiwa programu inahifadhi taarifa nyeti ndani ya kumbukumbu ambayo haipaswi kuhifadhiwa kama nywila au maneno ya kukumbuka.
Kwa kutumia Fridump3 unaweza kutupa kumbukumbu ya programu kwa:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Hii itatoa kumbukumbu katika folda ya ./dump, na humo unaweza kutumia grep na kitu kama:
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
Data nyeti katika Keystore
Katika Android, Keystore ni mahali bora pa kuhifadhi data nyeti, hata hivyo, kwa ruhusa ya kutosha bado inawezekana kuipata. Kadri programu zinavyotenda kuhifadhi hapa data nyeti katika maandiko wazi, pentests zinapaswa kuangalia kwa mtumiaji wa root au mtu mwenye ufikiaji wa kimwili kwenye kifaa anaweza kuwa na uwezo wa kuiba data hii.
Hata kama programu imehifadhi data katika keystore, data inapaswa kuwa imefungwa.
Ili kufikia data ndani ya keystore unaweza kutumia script hii ya Frida: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
Fingerprint/Biometrics Bypass
Kwa kutumia script ya Frida ifuatayo inaweza kuwa inawezekana kuzidi uthibitisho wa alama za vidole ambayo programu za Android zinaweza kuwa zinafanya ili kulinda maeneo fulani nyeti:
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
Picha za Muktadha
Unapoweka programu katika muktadha, Android huhifadhi picha ya programu ili wakati inaporejeshwa kwenye mbele inaanza kupakia picha kabla ya programu ili ionekane kama programu imepakiwa haraka.
Hata hivyo, ikiwa picha hii ina taarifa nyeti, mtu mwenye ufikiaji wa picha hiyo anaweza kuchukua taarifa hiyo (kumbuka kuwa unahitaji root ili kuweza kuifikia).
Picha hizo kwa kawaida huhifadhiwa katika: /data/system_ce/0/snapshots
Android inatoa njia ya kuzuia upigaji picha wa skrini kwa kuweka kipimo cha FLAG_SECURE katika mpangilio. Kwa kutumia bendera hii, maudhui ya dirisha yanachukuliwa kama salama, na kuzuia kuonekana katika picha za skrini au kuonekana kwenye onyesho lisilo salama.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Mchambuzi wa Programu za Android
Chombo hiki kinaweza kukusaidia kusimamia zana mbalimbali wakati wa uchambuzi wa dynamic: https://github.com/NotSoSecure/android_application_analyzer
Kuingilia kwa Intent
Wak developers mara nyingi huunda vipengele vya proxy kama shughuli, huduma, na wapokeaji wa matangazo vinavyoshughulikia hizi Intents na kuzipitisha kwa mbinu kama startActivity(...)
au sendBroadcast(...)
, ambayo inaweza kuwa hatari.
Hatari iko katika kuruhusu washambuliaji kuanzisha vipengele vya programu visivyoweza kusambazwa au kufikia watoa maudhui nyeti kwa kuhamasisha hizi Intents. Mfano maarufu ni kipengele cha WebView
kinachobadilisha URLs kuwa vitu vya Intent
kupitia Intent.parseUri(...)
na kisha kuvitenda, ambayo inaweza kusababisha kuingilia kwa Intent zenye uharibifu.
Maelezo Muhimu
- Kuingilia kwa Intent ni sawa na tatizo la Open Redirect la wavuti.
- Uhalifu unahusisha kupitisha vitu vya
Intent
kama ziada, ambavyo vinaweza kuhamasishwa kutekeleza operesheni zisizo salama. - Inaweza kufichua vipengele visivyoweza kusambazwa na watoa maudhui kwa washambuliaji.
- Kubadilisha URL ya
WebView
kuwaIntent
kunaweza kuwezesha vitendo visivyokusudiwa.
Kuingilia kwa upande wa Mteja wa Android na mengineyo
Labda unajua kuhusu aina hii ya udhaifu kutoka kwa Wavuti. Lazima uwe makini sana na udhaifu huu katika programu ya Android:
- SQL Injection: Unaposhughulika na maswali ya dynamic au Watoa-Maudhui hakikisha unatumia maswali yaliyopangwa.
- JavaScript Injection (XSS): Hakikisha kuwa msaada wa JavaScript na Plugin umezimwa kwa WebViews yoyote (umezimwa kwa default). Maelezo zaidi hapa.
- Inclusion ya Faili za Mitaa: WebViews zinapaswa kuwa na ufikiaji wa mfumo wa faili umezimwa (umewezeshwa kwa default) -
(webview.getSettings().setAllowFileAccess(false);)
. Maelezo zaidi hapa. - Cookies za Milele: Katika kesi kadhaa wakati programu ya android inamaliza kikao, cookie haifutwi au inaweza hata kuhifadhiwa kwenye diski.
- Lipu la Usalama katika cookies
Uchambuzi wa Kiotomatiki
MobSF
Uchambuzi wa statiki
Tathmini ya udhaifu wa programu kwa kutumia interface nzuri ya wavuti. Unaweza pia kufanya uchambuzi wa dynamic (lakini unahitaji kuandaa mazingira).
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Kumbuka kwamba MobSF inaweza kuchambua Android(apk), IOS(ipa) na Windows(apx) programu (Programu za Windows lazima zichambuliwe kutoka kwa MobSF iliyosakinishwa kwenye mwenyeji wa Windows).
Pia, ikiwa unaunda faili la ZIP na msimbo wa chanzo wa programu ya Android au IOS (nenda kwenye folda ya mzizi ya programu, chagua kila kitu na uunde faili la ZIP), itakuwa na uwezo wa kuchambua pia.
MobSF pia inakuwezesha diff/Compare uchambuzi na kuunganisha VirusTotal (utahitaji kuweka funguo zako za API katika MobSF/settings.py na kuziwezesha: VT_ENABLED = TRUE
VT_API_KEY = <Funguo yako ya API>
VT_UPLOAD = TRUE
). Unaweza pia kuweka VT_UPLOAD
kuwa False
, kisha hash itapakiwa badala ya faili.
Uchambuzi wa Kisaidizi wa Kijamii na MobSF
MobSF pia inaweza kuwa na msaada mkubwa kwa uchambuzi wa kisaidizi katika Android, lakini katika kesi hiyo utahitaji kusakinisha MobSF na genymotion kwenye mwenyeji wako (VM au Docker haitafanya kazi). Kumbuka: Unahitaji kuanzisha kwanza VM katika genymotion na kisha MobSF.
Mchambuzi wa kisaidizi wa MobSF anaweza:
- Dump data za programu (URLs, logi, clipboard, picha za skrini ulizofanya, picha za skrini zilizofanywa na "Exported Activity Tester", barua pepe, hifadhidata za SQLite, faili za XML, na faili nyingine zilizoundwa). Hii yote inafanywa kiotomatiki isipokuwa kwa picha za skrini, unahitaji kubonyeza unapohitaji picha ya skrini au unahitaji kubonyeza "Exported Activity Tester" ili kupata picha za skrini za shughuli zote zilizofanywa.
- Kukamata trafiki ya HTTPS
- Kutumia Frida kupata habari za wakati halisi
Kuanzia toleo la android > 5, itaanza Frida kiotomatiki na kuweka mipangilio ya proxy ya kimataifa ili kukamata trafiki. Itakamata tu trafiki kutoka kwa programu iliyojaribiwa.
Frida
Kwa kawaida, itatumia baadhi ya Skripti za Frida ili kupita SSL pinning, ugunduzi wa root na ugunduzi wa debugger na kufuatilia APIs za kuvutia.
MobSF pia inaweza kuitisha shughuli zilizofanywa, kuchukua picha za skrini za hizo na kuhifadhi kwa ripoti.
Ili kuanza upimaji wa kisaidizi bonyeza kitufe kibichi: "Start Instrumentation". Bonyeza "Frida Live Logs" kuona logi zinazozalishwa na skripti za Frida na "Live API Monitor" kuona kila mwito kwa mbinu zilizoshikiliwa, hoja zilizopitishwa na thamani zilizorejeshwa (hii itaonekana baada ya kubonyeza "Start Instrumentation").
MobSF pia inakuwezesha kupakia skripti zako za Frida (ili kutuma matokeo ya skripti zako za Ijumaa kwa MobSF tumia kazi send()
). Pia ina skripti kadhaa zilizandikwa awali ambazo unaweza kupakia (unaweza kuongeza zaidi katika MobSF/DynamicAnalyzer/tools/frida_scripts/others/
), chagua tu zinazo, bonyeza "Load" na bonyeza "Start Instrumentation" (utaweza kuona logi za skripti hizo ndani ya "Frida Live Logs").
Zaidi ya hayo, una baadhi ya kazi za ziada za Frida:
- Enumerate Loaded Classes: Itachapisha kila darasa lililopakiwa
- Capture Strings: Itachapisha kila nyuzi zilizokamatwa wakati wa kutumia programu (sauti nyingi)
- Capture String Comparisons: Inaweza kuwa ya manufaa sana. It onyesha nyuzi 2 zinazolinganishwa na ikiwa matokeo yalikuwa Kweli au Uongo.
- Enumerate Class Methods: Weka jina la darasa (kama "java.io.File") na itachapisha mbinu zote za darasa hilo.
- Search Class Pattern: Tafuta madarasa kwa muundo
- Trace Class Methods: Trace darasa zima (ona ingizo na matokeo ya mbinu zote za darasa hilo). Kumbuka kwamba kwa kawaida MobSF inafuatilia mbinu kadhaa za kuvutia za Android Api.
Mara tu unapochagua moduli ya ziada unayotaka kutumia unahitaji kubonyeza "Start Intrumentation" na utaona matokeo yote katika "Frida Live Logs".
Shell
Mobsf pia inakuletea shell yenye baadhi ya amri za adb, amri za MobSF, na amri za kawaida za shell chini ya ukurasa wa uchambuzi wa kisaidizi. Baadhi ya amri za kuvutia:
help
shell ls
activities
exported_activities
services
receivers
HTTP tools
Wakati trafiki ya http inakamatwa unaweza kuona mtazamo mbaya wa trafiki iliyokamatwa kwenye "HTTP(S) Traffic" chini au mtazamo mzuri kwenye "Start HTTPTools" kitufe kibichi. Kutoka kwenye chaguo la pili, unaweza kutuma maombi yaliyokamatwa kwa proxies kama Burp au Owasp ZAP.
Ili kufanya hivyo, washa Burp --> zimisha Intercept --> katika MobSB HTTPTools chagua ombi --> bonyeza "Send to Fuzzer" --> chagua anwani ya proxy (http://127.0.0.1:8080\).
Mara tu unapo maliza uchambuzi wa dynamic na MobSF unaweza kubonyeza "Start Web API Fuzzer" ili fuzz maombi ya http na kutafuta udhaifu.
note
Baada ya kufanya uchambuzi wa dynamic na MobSF mipangilio ya proxy inaweza kuwa imepangwa vibaya na huwezi kuziweka sawa kutoka kwenye GUI. Unaweza kurekebisha mipangilio ya proxy kwa kufanya:
adb shell settings put global http_proxy :0
Assisted Dynamic Analysis with Inspeckage
Unaweza kupata chombo kutoka Inspeckage.
Chombo hiki kitatumia Hooks kukujulisha kila kinachotokea katika programu wakati unafanya uchambuzi wa dynamic.
Yaazhini
Hii ni chombo kizuri kufanya uchambuzi wa static na GUI
Qark
Chombo hiki kimeundwa kutafuta udhaifu kadhaa zinazohusiana na usalama wa programu za Android, iwe katika msimbo wa chanzo au APKs zilizopakiwa. Chombo hiki pia kina uwezo wa kuunda "Proof-of-Concept" APK inayoweza kutekelezwa na amri za ADB, ili kutumia baadhi ya udhaifu uliofindika (Shughuli zilizo wazi, nia, tapjacking...). Kama ilivyo kwa Drozer, hakuna haja ya ku-root kifaa kinachojaribiwa.
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
ReverseAPK
- Inaonyesha faili zote zilizotolewa kwa ajili ya rejeleo rahisi
- Inachambua faili za APK moja kwa moja hadi katika muundo wa Java na Smali
- Changanua AndroidManifest.xml kwa ajili ya udhaifu na tabia za kawaida
- Uchambuzi wa msimbo wa chanzo wa statiki kwa ajili ya udhaifu na tabia za kawaida
- Taarifa za kifaa
- na zaidi
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER ni programu ya amri inayoweza kutumika katika Windows, MacOS X na Linux, inayochambua faili za .apk kutafuta udhaifu. Inafanya hivyo kwa kubonyeza APKs na kutumia mfululizo wa sheria kugundua udhaifu hizo.
Sheria zote zinazingatia faili ya rules.json
, na kila kampuni au mtathmini anaweza kuunda sheria zake mwenyewe kuchambua kile wanachohitaji.
Pakua binaries za hivi punde kutoka kwenye download page
super-analyzer {apk_file}
StaCoAn
StaCoAn ni chombo crossplatform ambacho husaidia waendelezaji, wawindaji wa makosa na hackers wa kimaadili wanaofanya static code analysis kwenye programu za simu.
Wazo ni kwamba unavuta na kuacha faili yako ya programu ya simu (faili .apk au .ipa) kwenye programu ya StaCoAn na itaunda ripoti ya kuona na kubebeka kwako. Unaweza kubadilisha mipangilio na orodha za maneno ili kupata uzoefu wa kibinafsi.
Pakua latest release:
./stacoan
AndroBugs
AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android unaosaidia waendelezaji au hackers kupata udhaifu wa usalama unaoweza kutokea katika programu za Android.
Windows releases
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn ni chombo chenye lengo kuu la kugundua na kumwonya mtumiaji kuhusu tabia mbaya zinazoweza kutokea zinazotengenezwa na programu ya Android.
Ugunduzi unafanywa kwa uchambuzi wa statiki wa bytecode ya Dalvik ya programu, inayowakilishwa kama Smali, kwa kutumia maktaba ya androguard
.
Chombo hiki kinatafuta tabia za kawaida za programu "mbaya" kama: uhamasishaji wa vitambulisho vya simu, upokeaji wa mtiririko wa sauti/video, mabadiliko ya data ya PIM, utekelezaji wa msimbo wa kiholela...
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
MARA Framework
MARA ni Mobile Application Reverse engineering na Analysis Framework. Ni chombo ambacho kinaweka pamoja zana zinazotumika mara kwa mara za uhandisi wa nyuma na uchambuzi wa programu za simu, kusaidia katika kupima programu za simu dhidi ya vitisho vya usalama wa simu vya OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa watengenezaji wa programu za simu na wataalamu wa usalama.
Inaweza:
- Kutolewa Java na Smali code kwa kutumia zana tofauti
- Kuchambua APKs kwa kutumia: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Kutolewa taarifa za kibinafsi kutoka kwa APK kwa kutumia regexps.
- Kuchambua Manifest.
- Kuchambua maeneo yaliyopatikana kwa kutumia: pyssltest, testssl na whatweb
- Kuondoa obfuscation ya APK kupitia apk-deguard.com
Koodous
Inatumika kugundua malware: https://koodous.com/
Obfuscating/Deobfuscating code
Kumbuka kwamba kulingana na huduma na usanidi unayotumia kuondoa obfuscation ya msimbo. Siri zinaweza kuwa zimeondolewa obfuscated au la.
ProGuard
Kutoka Wikipedia: ProGuard ni chombo cha amri cha chanzo wazi ambacho kinapunguza, kinaboresha na kinatoa obfuscation kwa Java code. Inaweza kuboresha bytecode pamoja na kugundua na kuondoa maagizo yasiyotumika. ProGuard ni programu ya bure na inasambazwa chini ya GNU General Public License, toleo la 2.
ProGuard inasambazwa kama sehemu ya Android SDK na inafanya kazi wakati wa kujenga programu katika hali ya kutolewa.
DexGuard
Pata mwongozo wa hatua kwa hatua wa kuondoa obfuscation ya apk katika https://blog.lexfo.fr/dexguard.html
(Kutoka mwongozo huo) Mara ya mwisho tulipoangalia, hali ya uendeshaji ya Dexguard ilikuwa:
- pakua rasilimali kama InputStream;
- peleka matokeo kwa darasa linalorithi kutoka FilterInputStream ili kuifungua;
- fanya obfuscation isiyo na maana ili kupoteza dakika chache za wakati kutoka kwa mhandisi wa nyuma;
- peleka matokeo yaliyofunguliwa kwa ZipInputStream ili kupata faili ya DEX;
- hatimaye pakua DEX inayotokana kama Rasilimali kwa kutumia njia ya
loadDex
.
DeGuard
DeGuard inarudisha mchakato wa obfuscation uliofanywa na zana za obfuscation za Android. Hii inaruhusu uchambuzi mwingi wa usalama, ikiwa ni pamoja na ukaguzi wa msimbo na kutabiri maktaba.
Unaweza kupakia APK iliyokuwa obfuscated kwenye jukwaa lao.
[Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
Hii ni zana ya LLM ya kutafuta udhaifu wowote wa usalama katika programu za android na kuondoa obfuscation ya msimbo wa programu za android. Inatumia API ya umma ya Gemini ya Google.
Simplify
Ni deobfuscator ya android ya jumla. Simplify inatekeleza programu kwa karibu ili kuelewa tabia yake na kisha inajaribu kuboresha msimbo ili iwe na tabia sawa lakini iwe rahisi kwa binadamu kuelewa. Kila aina ya kuboresha ni rahisi na ya jumla, hivyo haijalishi ni aina gani maalum ya obfuscation inayotumika.
APKiD
APKiD inakupa taarifa kuhusu jinsi APK ilivyotengenezwa. Inatambua kompila, packers, obfuscators, na vitu vingine vya ajabu. Ni PEiD kwa Android.
Manual
Read this tutorial to learn some tricks on how to reverse custom obfuscation
Labs
Androl4b
AndroL4b ni mashine ya virtual ya usalama ya Android inayotegemea ubuntu-mate inajumuisha mkusanyiko wa mfumo wa hivi karibuni, mafunzo na maabara kutoka kwa wahandisi wa usalama na watafiti mbalimbali kwa ajili ya uhandisi wa nyuma na uchambuzi wa malware.
References
- https://owasp.org/www-project-mobile-app-security/
- https://appsecwiki.com/#/ Ni orodha nzuri ya rasilimali
- https://maddiestone.github.io/AndroidAppRE/ Kozi ya haraka ya Android
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
- https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
Yet to try
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.