iOS Testing Environment
Reading time: 7 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)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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 usambazaji. Bila hii huwezi kuendesha programu kutoka kwa msimbo wa chanzo kwenye kifaa halisi. Chaguo lingine la kufanya hivi ni kutumia kifaa kilichovunjwa.
Kuanzia Xcode 7.2 Apple imeweka chaguo la kuunda profaili ya usambazaji ya maendeleo ya iOS bure inayoruhusu kuandika na kujaribu programu yako kwenye iPhone halisi. Nenda kwenye Xcode --> Preferences --> Accounts --> + (Ongeza ID mpya ya Appli na akcredentials zako) --> Bonyeza kwenye Apple ID iliyoundwa --> Manage Certificates --> + (Maendeleo ya Apple) --> Done
__Kisha, ili kuendesha programu yako kwenye iPhone yako unahitaji kwanza kuonyesha iPhone kuamini kompyuta. Kisha, unaweza kujaribu kuendesha programu kwenye simu kutoka Xcode, lakini hitilafu itaonekana. Hivyo nenda kwenye Settings --> General --> Profiles and Device Management --> Chagua profaili isiyoaminika na bonyeza "Amini".
Kumbuka kwamba programu zilizotiwa saini na cheti sawa za saini zinaweza kushiriki rasilimali kwa njia salama, kama vitu vya keychain.
Profaili za usambazaji zimehifadhiwa ndani ya simu katika /Library/MobileDevice/ProvisioningProfiles
Simulator
note
Kumbuka kwamba simulator si sawa na emulator. Simulator inasimulia tu tabia ya kifaa na kazi lakini haitumii kwa kweli.
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 kubeba 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)
Mara tu unavyojua UID, programu zilizowekwa ndani yake zinaweza kupatikana katika /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
Hata hivyo, kwa kushangaza huwezi kupata programu hapa. Unahitaji kufikia /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
Na katika folda hii unaweza kupata kifurushi cha programu.
Emulator
Corellium ndiyo emulator pekee ya iOS inayopatikana hadharani. Ni suluhisho la SaaS la biashara lenye mfano wa leseni kwa mtumiaji na halitoi leseni ya majaribio.
Hakuna Jailbreak inayohitajika
Angalia chapisho hili la blog kuhusu jinsi ya pentest programu ya iOS katika kifaa kisichokuwa na jailbroken: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Jailbreaking
Apple inahitaji kwa nguvu kwamba msimbo unaotumika kwenye iPhone lazima uwe umetiwa saini na cheti kilichotolewa na Apple. Jailbreaking ni mchakato wa kukwepa vizuizi kama hivyo na udhibiti mwingine wa usalama uliowekwa na OS. Hivyo, mara kifaa kinapokuwa kimejailbreak, ukaguzi wa uadilifu ambao unawajibika kwa kuangalia programu zinazowekwa unarekebishwa ili upitishwe.
note
Tofauti na Android, huwezi kubadilisha kuwa "Mode ya Developer" katika iOS ili kuendesha msimbo usio na saini/usioaminika kwenye kifaa.
Android Rooting vs. iOS Jailbreaking
Ingawa mara nyingi hufananishwa, rooting kwenye Android na jailbreaking kwenye iOS ni michakato tofauti kimsingi. Rooting vifaa vya Android inaweza kujumuisha kufunga su
binary au kurekebisha mfumo kwa ROM iliyoshikiliwa, ambayo haihitaji lazima matumizi ya exploit ikiwa bootloader imefunguliwa. Kuflash ROM za kawaida kunabadilisha OS ya kifaa baada ya kufungua bootloader, wakati mwingine kunahitaji exploit.
Kwa upande mwingine, vifaa vya iOS haviwezi kuflash ROM za kawaida kutokana na vizuizi vya bootloader vya kuanzisha picha zilizotiwa saini na Apple pekee. Jailbreaking iOS inalenga kukwepa ulinzi wa saini wa msimbo wa Apple ili kuendesha msimbo usio na saini, mchakato ambao unachanganya na maboresho ya usalama ya Apple yanayoendelea.
Changamoto za Jailbreaking
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 mekanismu ya changamoto-jibu (SHSH blobs), ikiruhusu usakinishaji tu kwa majibu yaliyotiwa saini na Apple. Mekanismu hii, inayojulikana kama "dirisha la saini", inapunguza uwezo wa kuhifadhi na kutumia baadaye vifurushi vya firmware vya OTA. Tovuti ya IPSW Downloads ni rasilimali ya kuangalia dirisha za sasa za saini.
Aina za Jailbreak
- Jailbreak za tethered zinahitaji muunganisho wa kompyuta kwa kila upya.
- Jailbreak za semi-tethered zinaruhusu kuanzisha katika hali isiyo na jailbroken bila kompyuta.
- Jailbreak za semi-untethered zinahitaji re-jailbreaking ya mikono bila kuhitaji kompyuta.
- Jailbreak za untethered zinatoa suluhisho la kudumu la jailbreak bila haja ya kuomba tena.
Zana na Rasilimali za Jailbreaking
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 pamoja na:
- 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.
Manufaa na Hatari za Jailbreaking
Jailbreaking inondoa sandboxing iliyowekwa na OS, ikiruhusu programu kufikia mfumo mzima wa faili. Uhuru huu unaruhusu usakinishaji wa programu zisizothibitishwa na ufikiaji wa APIs zaidi. Hata hivyo, kwa watumiaji wa kawaida, jailbreaking haitashauriwa kutokana na hatari za usalama na kutokuwa thabiti kwa kifaa.
Baada ya Jailbreaking
{{#ref}} basic-ios-testing-operations.md {{#endref}}
Ufuatiliaji wa Jailbreak
Programu kadhaa zitajaribu kugundua ikiwa simu imejailbroken na katika hali hiyo programu haitafanya kazi
- Baada ya jailbreaking iOS faili na folda kwa kawaida huwekwa, hizi zinaweza kutafutwa ili kubaini ikiwa kifaa kimejailbroken.
- Katika kifaa kilichojailbreak 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
itarudisha 1 badala ya 0
Taarifa zaidi kuhusu jinsi ya kugundua jailbreaking hapa.
Unaweza kujaribu kuepuka hizi kugundua kwa kutumia objection's ios jailbreak disable
Kuepuka Ufuatiliaji wa Jailbreak
- 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 katika tab ya ‘Search’
Marejeleo
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)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.