11 KiB
iOS Testing Environment
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Apple Developer Program
A provisioning identity ni mkusanyiko wa funguo za umma na za kibinafsi ambazo zinahusishwa na akaunti ya mdevelopa wa Apple. Ili kusaini programu unahitaji kulipa 99$/mwaka ili kujiandikisha katika Apple Developer Program kupata kitambulisho chako cha ugawaji. Bila hii huwezi kuendesha programu kutoka kwa msimbo wa chanzo kwenye kifaa halisi. Chaguo lingine kufanya hivi ni kutumia kifaa kilichovunjwa.
Kuanzia Xcode 7.2 Apple imetoa chaguo la kuunda provisioning profile ya bure ya maendeleo ya iOS inayoruhusu kuandika na kujaribu programu yako kwenye iPhone halisi. Nenda kwenye Xcode --> Preferences --> Accounts --> + (Ongeza ID mpya ya Appli na akiba zako) --> Bonyeza kwenye Apple ID iliyoundwa --> Manage Certificates --> + (Maendeleo ya Apple) --> Imefanyika
__Kisha, ili kuendesha programu yako kwenye iPhone yako unahitaji kwanza kuonyesha iPhone kuamini kompyuta. Kisha, unaweza kujaribu kuendesha programu kwenye simu kutoka Xcode, lakini kosa litaonekana. Hivyo nenda kwenye Settings --> General --> Profiles and Device Management --> Chagua profaili isiyoaminika na bonyeza "Amini".
Kumbuka kwamba programu zilizotiwa saini na cheti sawa cha kusaini zinaweza kushiriki rasilimali kwa njia salama, kama vitu vya keychain.
Profaili za ugawaji zimehifadhiwa ndani ya simu katika /Library/MobileDevice/ProvisioningProfiles
Simulator
{% hint style="info" %} Kumbuka kwamba simulator si sawa na emulator. Simulator inasimulia tu tabia ya kifaa na kazi lakini haitumii kwa kweli. {% endhint %}
Simulator
Jambo la kwanza unahitaji kujua ni kwamba kutekeleza pentest ndani ya simulator kutakuwa na mipaka zaidi kuliko kufanya hivyo kwenye kifaa kilichovunjwa.
Zana zote zinazohitajika kujenga na kusaidia programu ya iOS zina tu zinasupport rasmi kwenye Mac OS.
Zana ya de facto ya Apple kwa kuunda/kukarabati/kufanya kazi za iOS ni Xcode. Inaweza kutumika kupakua vipengele vingine kama simulators na SDK toleo tofauti zinazohitajika kujenga na kujaribu programu yako.
Inapendekezwa sana kupakua Xcode kutoka kwenye duka rasmi la programu. Toleo lingine linaweza kuwa na malware.
Faili za simulator zinaweza kupatikana katika /Users/<username>/Library/Developer/CoreSimulator/Devices
Ili kufungua simulator, endesha Xcode, kisha bonyeza kwenye Xcode tab --> Open Developer tools --> Simulator
__Katika picha ifuatayo bonyeza "iPod touch [...]" unaweza kuchagua kifaa kingine cha kujaribu:
Applications in the Simulator
Ndani ya /Users/<username>/Library/Developer/CoreSimulator/Devices
unaweza kupata simulators zote zilizowekwa. Ikiwa unataka kufikia faili za programu iliyoundwa ndani ya moja ya emulators inaweza kuwa vigumu kujua katika ipi programu imewekwa. Njia ya haraka ya kupata UID sahihi ni kutekeleza programu kwenye simulator na kutekeleza:
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
However, surprisingly you won't find the application here. You need to access /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
And in this folder you can find the package of the application.
Emulator
Corellium ni emulator pekee wa iOS unaopatikana hadharani. Ni suluhisho la SaaS la biashara lenye mfano wa leseni kwa mtumiaji na halitoi leseni ya majaribio.
Jailbeaking
Apple inahitaji kwa nguvu kwamba msimbo unaotumika kwenye iPhone lazima uwe umetiwa saini na cheti kilichotolewa na Apple. Jailbreaking ni mchakato wa kuzingatia vizuizi kama hivyo na udhibiti mwingine wa usalama uliowekwa na OS. Hivyo, mara tu kifaa kinapokuwa kimejailbreak, ukaguzi wa uaminifu ambao unawajibika kwa kuangalia programu zinazowekwa unarekebishwa ili upitishwe.
{% hint style="info" %} Tofauti na Android, huwezi kubadilisha kuwa "Mode ya Developer" kwenye iOS ili kuendesha msimbo usio na saini/usioaminika kwenye kifaa. {% endhint %}
Android Rooting vs. iOS Jailbreaking
Ingawa mara nyingi hufananishwa, rooting kwenye Android na jailbreaking kwenye iOS ni michakato tofauti kimsingi. Kuweka mizizi kwenye vifaa vya Android kunaweza kujumuisha kufunga su
binary au kurekebisha mfumo kwa ROM iliyowekwa mizizi, ambayo haihitaji lazima matumizi ya udhaifu ikiwa bootloader imefunguliwa. Kuflash ROM za kawaida kunabadilisha OS ya kifaa baada ya kufungua bootloader, wakati mwingine kunahitaji udhaifu.
Kwa upande mwingine, vifaa vya iOS haviwezi kuflash ROM za kawaida kutokana na vizuizi vya bootloader vya kuanzisha picha zilizosainiwa na Apple pekee. Jailbreaking iOS inalenga kupitisha ulinzi wa saini wa msimbo wa Apple ili kuendesha msimbo usio na saini, mchakato ambao unachanganya na maboresho ya usalama ya Apple yanayoendelea.
Jailbreaking Challenges
Jailbreaking iOS inakuwa ngumu zaidi kadri Apple inavyorekebisha udhaifu haraka. Kudondosha iOS kunawezekana tu kwa muda mfupi baada ya kutolewa, na kufanya jailbreaking kuwa suala la muda. Vifaa vinavyotumika kwa majaribio ya usalama havipaswi kusasishwa isipokuwa re-jailbreaking inahakikishwa.
Sasisho za iOS zinadhibitiwa na mekanism ya changamoto-jibu (SHSH blobs), ikiruhusu usakinishaji tu kwa majibu yaliyo saini na Apple. Mekanism hii, inayojulikana kama "dirisha la saini", inakabili uwezo wa kuhifadhi na baadaye kutumia vifurushi vya firmware vya OTA. Tovuti ya IPSW Downloads ni rasilimali ya kuangalia dirisha za sasa za saini.
Jailbreak Varieties
- Jailbreaks za tethered zinahitaji muunganisho wa kompyuta kwa kila upya.
- Jailbreaks za semi-tethered zinaruhusu kuanzisha katika hali isiyo na jailbroken bila kompyuta.
- Jailbreaks za semi-untethered zinahitaji re-jailbreaking ya mikono bila kuhitaji kompyuta.
- Jailbreaks za untethered zinatoa suluhisho la kudumu la jailbreak bila haja ya kuomba tena.
Jailbreaking Tools and Resources
Zana za jailbreaking zinatofautiana kulingana na toleo la iOS na kifaa. Rasilimali kama Can I Jailbreak?, The iPhone Wiki, na Reddit Jailbreak zinatoa taarifa za kisasa. Mifano ni:
- Checkra1n kwa vifaa vya chip A7-A11.
- Palera1n kwa vifaa vya Checkm8 (A8-A11) kwenye iOS 15.0-16.5.
- Unc0ver kwa toleo za iOS hadi 14.8.
Kurekebisha kifaa chako kuna hatari, na jailbreaking inapaswa kuchukuliwa kwa tahadhari.
Jailbreaking Benefits and Risks
Jailbreaking inondoa sandboxing iliyowekwa na OS, ikiruhusu programu kufikia mfumo mzima wa faili. Uhuru huu unaruhusu usakinishaji wa programu zisizokubaliwa na ufikiaji wa APIs zaidi. Hata hivyo, kwa watumiaji wa kawaida, jailbreaking haitashauriwa kutokana na hatari za usalama na kutokuwa na utulivu kwa kifaa.
After Jailbreaking
{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}
Jailbreak Detection
Programu kadhaa zitajaribu kugundua ikiwa simu imejailbroken na katika hali hiyo programu haitakimbia
- Baada ya jailbreaking iOS faili na folda kwa kawaida huwekwa, hizi zinaweza kutafutwa ili kubaini ikiwa kifaa kimejailbroken.
- Katika kifaa kilichojailbroken programu zinapata ufikiaji wa kusoma/kandika kwa faili mpya nje ya sandbox
- Baadhi ya API itoaji zitakuwa na tabia tofauti
- Uwepo wa huduma ya OpenSSH
- Kuita
/bin/sh
itarejesha 1 badala ya 0
Taarifa zaidi kuhusu jinsi ya kugundua jailbreaking hapa.
Unaweza kujaribu kuepuka hizi kugundua kwa kutumia objection's ios jailbreak disable
Jailbreak Detection Bypass
- Unaweza kujaribu kuepuka hizi kugundua kwa kutumia objection's
ios jailbreak disable
- Unaweza pia kufunga zana Liberty Lite (https://ryleyangus.com/repo/). Mara tu repo itakapoongezwa, programu inapaswa kuonekana kwenye tab ya ‘Search’
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.