macOS Installers Abuse

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi za Pkg

Kifurushi cha wasakinishaji wa macOS (pia inajulikana kama faili ya .pkg) ni muundo wa faili unaotumiwa na macOS kusambaza programu. Faili hizi ni kama sanduku linaloleta kila kitu ambacho programu inahitaji kusakinisha na kukimbia kwa usahihi.

Faili ya kifurushi yenyewe ni nyaraka inayoshikilia hiraki ya faili na saraka ambazo zitasakinishwa kwenye kompyuta ya lengo. Inaweza pia kujumuisha maandishi kutekeleza kazi kabla na baada ya usakinishaji, kama vile kuweka faili za usanidi au kusafisha toleo za zamani za programu.

Hiraki

  • Usambazaji (xml): Kubinafsisha (jina, maandishi ya kukaribisha...) na maandishi/vipimo vya usakinishaji

  • PackageInfo (xml): Taarifa, mahitaji ya usakinishaji, mahali pa usakinishaji, njia za maandishi za kukimbia

  • Bili ya vifaa (bom): Orodha ya faili za kusakinisha, kuboresha au kuondoa na ruhusa za faili

  • Mzigo (CPIO archive gzip compresses): Faili za kusakinisha kwenye mahali-pa-usakinishaji kutoka PackageInfo

  • Maandishi (CPIO archive gzip compressed): Maandishi kabla na baada ya usakinishaji na rasilimali zaidi zilizochimbuliwa kwenye saraka ya muda kwa utekelezaji.

Kuchambua

# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"

# Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"

# Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts

Ili kuona maudhui ya installer bila kudecompress manually unaweza kutumia zana ya bure Suspicious Package.

Taarifa Msingi za DMG

Faili za DMG, au Picha za Apple Disk, ni muundo wa faili unaotumiwa na macOS ya Apple kwa picha za diski. Faili ya DMG ni picha ya diski inayoweza kufungwa (ina filesystem yake) ambayo ina data ya block ya ghafi mara nyingi imepakwa na wakati mwingine imefichwa. Unapofungua faili ya DMG, macOS inaifunga kama vile ingekuwa diski halisi, kuruhusu kupata maudhui yake.

Tambua kwamba wasakinishaji wa .dmg hushikilia muundo mwingi sana ambao hapo awali baadhi yao wakiwa na mapungufu walitumika kupata utekelezaji wa nambari ya msingi.

Mfumo wa Hierarchy

Mfumo wa faili ya DMG unaweza kutofautiana kulingana na maudhui. Hata hivyo, kwa DMGs za programu, kawaida inafuata muundo huu:

  • Kiwango cha Juu: Hii ni mzizi wa picha ya diski. Mara nyingi ina programu na labda kiungo kwa folda ya Maombi.

  • Programu (.app): Hii ni programu halisi. Katika macOS, programu ni kawaida pakiti inayojumuisha faili na folda nyingi binafsi zinazounda programu.

  • Kiungo cha Maombi: Hii ni mkato kwenda kwa folda ya Maombi katika macOS. Lengo la hili ni kufanya iwe rahisi kwako kusakinisha programu. Unaweza kuburuta faili ya .app kwenye mkato huu kusakinisha programu.

Privesc kupitia unyanyasaji wa pkg

Utekelezaji kutoka kwenye folda za umma

Ikiwa script ya usakinishaji kabla au baada ya kusakinisha inatekelezwa kwa mfano kutoka /var/tmp/Installerutil, na mshambuliaji anaweza kudhibiti script hiyo ili apande vyeo wakati wowote inapotekelezwa. Au mfano mwingine sawa:

AuthorizationExecuteWithPrivileges

Hii ni kazi ya umma ambayo wasakinishaji na wakusasisha kadhaa watatumia kutekeleza kitu kama mzizi. Kazi hii inakubali njia ya faili ya kutekeleza kama parameter, hata hivyo, ikiwa mshambuliaji anaweza kurekebisha faili hii, ataweza kunyanyasa utekelezaji wake na mzizi ili apande vyeo.

# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig

Utekelezaji kwa kufunga

Ikiwa mtunzaji anaandika kwa /tmp/fixedname/bla/bla, inawezekana kuunda mlima juu ya /tmp/fixedname bila wamiliki ili uweze kurekebisha faili yoyote wakati wa usakinishaji kwa kudhuru mchakato wa usakinishaji.

Mfano wa hii ni CVE-2021-26089 ambayo ilifanikiwa kubadilisha skripti ya kipindi ili kupata utekelezaji kama mzizi. Kwa maelezo zaidi angalia mazungumzo: OBTS v4.0: "Mlima wa Mende" - Csaba Fitzl

pkg kama zisizo

Mzigo wa Kufuta

Inawezekana tu kuzalisha faili ya .pkg na skripti za kabla na baada ya usakinishaji bila mzigo wowote.

JS katika usambazaji wa xml

Inawezekana kuongeza vitambulisho vya <script> katika faili ya usambazaji xml ya pakiti na hiyo nambari itatekelezwa na inaweza kutekeleza amri kutumia system.run:

Marejeo

Last updated