SlideShare a Scribd company logo
1 of 52
Download to read offline
macOS - getting root with
benign App Store apps
Csaba Fitzl
Twitter: @theevilbit
whoami
• red teamer, ex blue teamer
• kex - kernel exploitation python toolkit
• husband, father
• hiking
• yoga
the story
agenda
• dylib hijacking recap
• subverting the installation process
• developing an App
• High Sierra privilege escalation
• modifying installers
• redistributing paid apps
• Mojave privilege escalation
in the beginning…
dylib hijacking
type 1: weak loading of dylibs
• LC_LOAD_WEAK_DYLIB function:
• let’s try to load the specified dylib
• dylib not found? -> who cares? not a problem! let’s still load that app
• exploit: Put there the missing dylib
type 2: rpath (run-path dependent) dylibs
• function:
• let me try to find the dylib on every search @rpath
• I will use the first one
• exploit:
• if the search path points to non existent location: put there your dylib
finding vulnerable apps
• download Patrick’s DHS
• run
• profit :)
• alternative: start app via CLI
• export DYLD_PRINT_RPATHS="1"
exploiting dylib vulnerabilities
compile
create code
fix dylib profit
other cases
• Microsoft Office: requires root privileges -> MS: not a security bug
• Avira: requires root privileges -> fixed with low priority
• many more not fixed for years…
the privilege problem
application’s folders permission
• 2 main scenarios:
• the application’s directory is owned by the user
• the application’s directory is owned by ‘root’
how do we end up there?
root
user
yes
can we bypass it?
tools for monitoring
FireEye - Monitor.app
• ~Sysinternal’s Procmon
• events
• process
• network
• file
Objective-See - ProcInfo(Example)
• open source process monitoring library
• logs:
• PID
• arguments
• signature info
• user
• etc…
2019-03-11 21:18:05.770 procInfoExample[32903:4117446] process start:
pid: 32906
path: /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/
efw_cache_update
user: 0
args: (
"/System/Library/PrivateFrameworks/PackageKit.framework/Resources/efw_cache_update",
"/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/
BC005493-3176-43E4-A1F0-82D38C6431A3.activeSandbox/Root/Applications/Parcel.app"
)
ancestors: (
9103,
1
)
signing info: {
signatureAuthorities = (
"Software Signing",
"Apple Code Signing Certification Authority",
"Apple Root CA"
);
signatureIdentifier = "com.apple.efw_cache_update";
signatureSigner = 1;
signatureStatus = 0;
}
binary:
name: efw_cache_update
path: /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/
efw_cache_update
attributes: {
NSFileCreationDate = "2018-11-30 07:31:32 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 0;
NSFileGroupOwnerAccountName = wheel;
NSFileHFSCreatorCode = 0;
NSFileHFSTypeCode = 0;
NSFileModificationDate = "2018-11-30 07:31:32 +0000";
NSFileOwnerAccountID = 0;
NSFileOwnerAccountName = root;
NSFilePosixPermissions = 493;
NSFileReferenceCount = 1;
NSFileSize = 43040;
NSFileSystemFileNumber = 4214431;
NSFileSystemNumber = 16777220;
NSFileType = NSFileTypeRegular;
}
signing info: (null)
fs_usage
• file system events
• extremely detailed
bypassing root permissions
case #1 -
subverting the installation process
dropping files in the applications’ folder
#1 record folder structure
#3 recreate folders
#2 delete the app
#5 :)
#4 reinstall the app
dropping files in the applications’ folder
• fixed (more on that later)
• write to /Applications ~having write access to Program Files in Windows,
but:
• Windows: Admin MEDIUM -> Admin HIGH *is not* a security
boundary
• macOS: Admin -> root *is* a security boundary
Can I do something else?
What about symlinks?
intermezzo
the discovery: symlinks are followed
• installd runs as root
• installd follows symlinks
• installd drop files where symlink points -> drop files (almost anywhere)
dropping App Store files (almost) anywhere
#1 record folder structure
#2 delete the app
#6 :)
#5 reinstall the app
#4 create symlink
ln -s /opt /Applications/Example.app/Contents/MacOS
#3 recreate folders
/Applications/Example.app/Contents
what can’t we do?
• write files to SIP protected places
• overwrite specific files
yes
can I get root if I can drop files anywhere?
privilege escalation ideas
• file in the App Store has the same name as one that runs as root ->
replace
• file in the App Store app named as root, and it’s a cronjob task -> place
into /usr/lib/cron/tabs
• if no such files in the App Store -> create your own
• write a ‘malicious’ dylib and drop somewhere, where it will be loaded by
an App running as root
intermezzo
Unlikely to find a file in the
store
I’m lazy, I will just report it to
Apple
The vetting process will find a
malicious App
sigh … sigh … sigh
try harder
will create an App
privilege escalation on
High Sierra
planning
• idea: let’s drop a cronjob file
• need a valid reason -> crontab editor
• need a Developer ID - other than my
• language?
• SWIFT vs. Objective-C
• learn SWIFT (CBT)
myFraction = [[Fraction alloc] init];
pushing apps to the store
• App Store Connect
• Bundle ID
• Create App
• Populate details
• Upload via Xcode
• Submit
the time issue
• 1 mistake = cost of ~24 hours
• my case: 1st push - wait 24 hours - reject - no proper closing - fix - 2nd
push - wait 24 hours - approved - priv esc doesn’t work on Mojave :( -
try on High Sierra - minimum OS is Mojave - fix - 3rd push - wait 24
hours - approve - works on High Sierra :)
Crontab Creator
privilege escalation
#1 the file we need - root
#5 Terminal runs as root
#3 install the app
#2 follow previous steps to redirect the file
cd /Applications/
mkdir "Crontab Creator.app"
cd Crontab Creator.app/
mkdir Contents
cd Contents/
ln -s /usr/lib/cron/tabs/ Resources
#4 create script file
cd /Applications/
mkdir Scripts
cd Scripts/
echo /Applications/Utilities/Terminal.app/
Contents/MacOS/Terminal > backup-apps.sh
chmod +x backup-apps.sh
the fix
• POC stopped working
• never really done proper verification
• more details later
demo - Crontab Creator &
privilege escalation
bypassing root permissions
case #2 -
infecting installers
infecting installers
• not really a bypass (user has to authenticate)
• will break the *.pkg file’s signature (Gatekeeper will block!)
• need a way to get the infected *.pkg file to the victim (e.g.: MITM)
• breaks the App’s signature - no problem as GateKeeper will not verify (it
will verify the pkg only)
infecting an installer
#1 grab a pkg file
#2 unpack the pkg file
pkgutil --expand example.pkg myfolder Contents
#3 decompress payload
tar xvf embedded.pkg/Payload
#4 embed your file
$ mkdir Example.app/Contents/test
$ echo aaaa > Example.app/Contents/test/a
#5 recompress
find ./Example.app | cpio -o --format odc | gzip -c > Payload
#6 move and delete files
pkgutil --flatten myfolder/ mypackage.pkg
#7 repackage pkg
redistributing paid apps
redistribution
• grab the pkg from the App Store (AppStoreExtract)
• redistribute
• will run - no verification
• in-app purchases won’t work
privilege escalation on
Mojave
the improper fix
• early 2019 - realise I should do a better verification of the fix
• no more access to crontab folder
• accidental fix?
• still can redirect file write to sensitive locations (e.g.: LaunchDaemons)
2nd poc - StartUp
• same approach (example files)
• targeting LaunchDameon
• send 2nd report to Apple
demo - StartUp & privilege
escalation
the security enhancement
(the final fix)
Mojave 10.14.5
• does fix the vulnerability in a proper
way
• deletes your files and then moves the
App
• can no longer drop files into the App’s
folder
closing thoughts
thank you
Csaba Fitzl
Twitter: @theevilbit
Credits
• icon: Pixel Buddha https://www.flaticon.com/authors/pixel-buddha
• dylib hijacking:
• Patrick Wardle https://www.virusbulletin.com/virusbulletin/2015/03/
dylib-hijacking-os-x

More Related Content

What's hot

What's hot (20)

How to discover 1352 Wordpress plugin 0days in one hour (not really)
How to discover 1352 Wordpress plugin 0days in one hour (not really)How to discover 1352 Wordpress plugin 0days in one hour (not really)
How to discover 1352 Wordpress plugin 0days in one hour (not really)
 
Hacker's Practice Ground - Wall of Sheep workshops - Defcon 2015
Hacker's Practice Ground - Wall of Sheep workshops - Defcon 2015 Hacker's Practice Ground - Wall of Sheep workshops - Defcon 2015
Hacker's Practice Ground - Wall of Sheep workshops - Defcon 2015
 
10 Laravel packages everyone should know
10 Laravel packages everyone should know10 Laravel packages everyone should know
10 Laravel packages everyone should know
 
Master the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexMaster the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and Silex
 
Making it Work Offline: Current & Future Offline APIs for Web Apps
Making it Work Offline: Current & Future Offline APIs for Web AppsMaking it Work Offline: Current & Future Offline APIs for Web Apps
Making it Work Offline: Current & Future Offline APIs for Web Apps
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!Twig: Friendly Curly Braces Invade Your Templates!
Twig: Friendly Curly Braces Invade Your Templates!
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
Console Apps: php artisan forthe:win
Console Apps: php artisan forthe:winConsole Apps: php artisan forthe:win
Console Apps: php artisan forthe:win
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 
Revoke-Obfuscation
Revoke-ObfuscationRevoke-Obfuscation
Revoke-Obfuscation
 
DevSec Defense
DevSec DefenseDevSec Defense
DevSec Defense
 
Seven perilous pitfalls to avoid with Java | DevNation Tech Talk
Seven perilous pitfalls to avoid with Java | DevNation Tech TalkSeven perilous pitfalls to avoid with Java | DevNation Tech Talk
Seven perilous pitfalls to avoid with Java | DevNation Tech Talk
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
 
The typo3.org Relaunch Project
The typo3.org Relaunch ProjectThe typo3.org Relaunch Project
The typo3.org Relaunch Project
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher Pecoraro
 
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
React Ecosystem
React EcosystemReact Ecosystem
React Ecosystem
 
Extract source code from an Android apk file
Extract source code from an Android apk fileExtract source code from an Android apk file
Extract source code from an Android apk file
 

Similar to [Hackersuli][HUN]MacOS - Going Down the Rabbit Hole

macOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain SightmacOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain Sight
Csaba Fitzl
 
Mitigating Exploits Using Apple's Endpoint Security
Mitigating Exploits Using Apple's Endpoint SecurityMitigating Exploits Using Apple's Endpoint Security
Mitigating Exploits Using Apple's Endpoint Security
Csaba Fitzl
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms
SecuRing
 
Fix me if you can - DrupalCon prague
Fix me if you can - DrupalCon pragueFix me if you can - DrupalCon prague
Fix me if you can - DrupalCon prague
hernanibf
 

Similar to [Hackersuli][HUN]MacOS - Going Down the Rabbit Hole (20)

macOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain SightmacOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain Sight
 
DevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
DevOps on AWS: Accelerating Software Delivery with the AWS Developer ToolsDevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
DevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Operating Docker
Operating DockerOperating Docker
Operating Docker
 
Manual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A BugManual JavaScript Analysis Is A Bug
Manual JavaScript Analysis Is A Bug
 
Defcon 23 - hariri spelman gorenc - abusing adobe readers java sc
Defcon 23 - hariri spelman gorenc - abusing adobe readers java scDefcon 23 - hariri spelman gorenc - abusing adobe readers java sc
Defcon 23 - hariri spelman gorenc - abusing adobe readers java sc
 
Cloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundry
Cloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundryCloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundry
Cloud Foundry Summit 2015: 10 common errors when pushing apps to cloud foundry
 
Abusing Adobe Reader’s JavaScript APIs by Abdul-Aziz Hariri & Brian Gorenc - ...
Abusing Adobe Reader’s JavaScript APIs by Abdul-Aziz Hariri & Brian Gorenc - ...Abusing Adobe Reader’s JavaScript APIs by Abdul-Aziz Hariri & Brian Gorenc - ...
Abusing Adobe Reader’s JavaScript APIs by Abdul-Aziz Hariri & Brian Gorenc - ...
 
Mitigating Exploits Using Apple's Endpoint Security
Mitigating Exploits Using Apple's Endpoint SecurityMitigating Exploits Using Apple's Endpoint Security
Mitigating Exploits Using Apple's Endpoint Security
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms
 
Scrapy
ScrapyScrapy
Scrapy
 
Fix me if you can - DrupalCon prague
Fix me if you can - DrupalCon pragueFix me if you can - DrupalCon prague
Fix me if you can - DrupalCon prague
 
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
AWS re:Invent 2016: DevOps on AWS: Accelerating Software Delivery with the AW...
 
Container Runtime Security with Falco
Container Runtime Security with FalcoContainer Runtime Security with Falco
Container Runtime Security with Falco
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with Chaperone
 
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
 
Resisting App Pirates
Resisting App PiratesResisting App Pirates
Resisting App Pirates
 
iOS Application Security
iOS Application SecurityiOS Application Security
iOS Application Security
 
Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCF
 

More from hackersuli

[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
hackersuli
 

More from hackersuli (20)

2024_hackersuli_mobil_ios_android ______
2024_hackersuli_mobil_ios_android ______2024_hackersuli_mobil_ios_android ______
2024_hackersuli_mobil_ios_android ______
 
[HUN[]Hackersuli] Hornyai Alex - Elliptikus görbék kriptográfiája
[HUN[]Hackersuli] Hornyai Alex - Elliptikus görbék kriptográfiája[HUN[]Hackersuli] Hornyai Alex - Elliptikus görbék kriptográfiája
[HUN[]Hackersuli] Hornyai Alex - Elliptikus görbék kriptográfiája
 
[Hackersuli]Privacy on the blockchain
[Hackersuli]Privacy on the blockchain[Hackersuli]Privacy on the blockchain
[Hackersuli]Privacy on the blockchain
 
[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
[HUN] 2023_Hacker_Suli_Meetup_Cloud_DFIR_Alapok.pptx
 
[Hackersuli][HUN] GSM halozatok hackelese
[Hackersuli][HUN] GSM halozatok hackelese[Hackersuli][HUN] GSM halozatok hackelese
[Hackersuli][HUN] GSM halozatok hackelese
 
Hackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekHackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknek
 
HUN Hackersuli - How to hack an airplane
HUN Hackersuli - How to hack an airplaneHUN Hackersuli - How to hack an airplane
HUN Hackersuli - How to hack an airplane
 
[HUN][Hackersuli] Cryptocurrency scams
[HUN][Hackersuli] Cryptocurrency scams[HUN][Hackersuli] Cryptocurrency scams
[HUN][Hackersuli] Cryptocurrency scams
 
[Hackersuli] [HUN] Windows a szereloaknan
[Hackersuli] [HUN] Windows a szereloaknan[Hackersuli] [HUN] Windows a szereloaknan
[Hackersuli] [HUN] Windows a szereloaknan
 
[HUN][Hackersuli] Szol a szoftveresen definialt radio - SDR alapok
[HUN][Hackersuli] Szol a szoftveresen definialt radio - SDR alapok[HUN][Hackersuli] Szol a szoftveresen definialt radio - SDR alapok
[HUN][Hackersuli] Szol a szoftveresen definialt radio - SDR alapok
 
[HUN] Hackersuli - Console and arcade game hacking – history, present, future
[HUN] Hackersuli - Console and arcade game hacking – history, present, future[HUN] Hackersuli - Console and arcade game hacking – history, present, future
[HUN] Hackersuli - Console and arcade game hacking – history, present, future
 
Hackersuli - Linux game hacking with LD_PRELOAD
Hackersuli - Linux game hacking with LD_PRELOADHackersuli - Linux game hacking with LD_PRELOAD
Hackersuli - Linux game hacking with LD_PRELOAD
 
[HUN][hackersuli] Malware avengers
[HUN][hackersuli] Malware avengers[HUN][hackersuli] Malware avengers
[HUN][hackersuli] Malware avengers
 
[HUN][Hackersuli] Androidos alkalmazássebészet, avagy gumikesztyűt fel és irá...
[HUN][Hackersuli] Androidos alkalmazássebészet, avagy gumikesztyűt fel és irá...[HUN][Hackersuli] Androidos alkalmazássebészet, avagy gumikesztyűt fel és irá...
[HUN][Hackersuli] Androidos alkalmazássebészet, avagy gumikesztyűt fel és irá...
 
[HUN][Hackersuli] iOS hekkelés, avagy egyik szemünk zokog, a másik meg kacagv...
[HUN][Hackersuli] iOS hekkelés, avagy egyik szemünk zokog, a másik meg kacagv...[HUN][Hackersuli] iOS hekkelés, avagy egyik szemünk zokog, a másik meg kacagv...
[HUN][Hackersuli] iOS hekkelés, avagy egyik szemünk zokog, a másik meg kacagv...
 
[Hackersuli][HUN] Greasemonkey, avagy fogod majd a fejed, hogy miért nem hasz...
[Hackersuli][HUN] Greasemonkey, avagy fogod majd a fejed, hogy miért nem hasz...[Hackersuli][HUN] Greasemonkey, avagy fogod majd a fejed, hogy miért nem hasz...
[Hackersuli][HUN] Greasemonkey, avagy fogod majd a fejed, hogy miért nem hasz...
 
Kriptovaluták, hashbányászat és okoscicák
Kriptovaluták, hashbányászat és okoscicákKriptovaluták, hashbányászat és okoscicák
Kriptovaluták, hashbányászat és okoscicák
 
Hogy jussunk ki lezárt hálózatokból?
Hogy jussunk ki lezárt hálózatokból?Hogy jussunk ki lezárt hálózatokból?
Hogy jussunk ki lezárt hálózatokból?
 
Hardware hacking 1x1 by Dnet
Hardware hacking 1x1 by DnetHardware hacking 1x1 by Dnet
Hardware hacking 1x1 by Dnet
 
Hogy néz ki egy pentest meló a gyakorlatban?
Hogy néz ki egy pentest meló a gyakorlatban?Hogy néz ki egy pentest meló a gyakorlatban?
Hogy néz ki egy pentest meló a gyakorlatban?
 

Recently uploaded

Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Sheetaleventcompany
 

Recently uploaded (20)

2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls DubaiDubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
Dubai=Desi Dubai Call Girls O525547819 Outdoor Call Girls Dubai
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
 
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 

[Hackersuli][HUN]MacOS - Going Down the Rabbit Hole

  • 1. macOS - getting root with benign App Store apps Csaba Fitzl Twitter: @theevilbit
  • 2. whoami • red teamer, ex blue teamer • kex - kernel exploitation python toolkit • husband, father • hiking • yoga
  • 4. agenda • dylib hijacking recap • subverting the installation process • developing an App • High Sierra privilege escalation • modifying installers • redistributing paid apps • Mojave privilege escalation
  • 7. type 1: weak loading of dylibs • LC_LOAD_WEAK_DYLIB function: • let’s try to load the specified dylib • dylib not found? -> who cares? not a problem! let’s still load that app • exploit: Put there the missing dylib
  • 8. type 2: rpath (run-path dependent) dylibs • function: • let me try to find the dylib on every search @rpath • I will use the first one • exploit: • if the search path points to non existent location: put there your dylib
  • 9. finding vulnerable apps • download Patrick’s DHS • run • profit :) • alternative: start app via CLI • export DYLD_PRINT_RPATHS="1"
  • 11. other cases • Microsoft Office: requires root privileges -> MS: not a security bug • Avira: requires root privileges -> fixed with low priority • many more not fixed for years…
  • 13. application’s folders permission • 2 main scenarios: • the application’s directory is owned by the user • the application’s directory is owned by ‘root’
  • 14. how do we end up there? root user
  • 17. FireEye - Monitor.app • ~Sysinternal’s Procmon • events • process • network • file
  • 18. Objective-See - ProcInfo(Example) • open source process monitoring library • logs: • PID • arguments • signature info • user • etc… 2019-03-11 21:18:05.770 procInfoExample[32903:4117446] process start: pid: 32906 path: /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/ efw_cache_update user: 0 args: ( "/System/Library/PrivateFrameworks/PackageKit.framework/Resources/efw_cache_update", "/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/ BC005493-3176-43E4-A1F0-82D38C6431A3.activeSandbox/Root/Applications/Parcel.app" ) ancestors: ( 9103, 1 ) signing info: { signatureAuthorities = ( "Software Signing", "Apple Code Signing Certification Authority", "Apple Root CA" ); signatureIdentifier = "com.apple.efw_cache_update"; signatureSigner = 1; signatureStatus = 0; } binary: name: efw_cache_update path: /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/ efw_cache_update attributes: { NSFileCreationDate = "2018-11-30 07:31:32 +0000"; NSFileExtensionHidden = 0; NSFileGroupOwnerAccountID = 0; NSFileGroupOwnerAccountName = wheel; NSFileHFSCreatorCode = 0; NSFileHFSTypeCode = 0; NSFileModificationDate = "2018-11-30 07:31:32 +0000"; NSFileOwnerAccountID = 0; NSFileOwnerAccountName = root; NSFilePosixPermissions = 493; NSFileReferenceCount = 1; NSFileSize = 43040; NSFileSystemFileNumber = 4214431; NSFileSystemNumber = 16777220; NSFileType = NSFileTypeRegular; } signing info: (null)
  • 19. fs_usage • file system events • extremely detailed
  • 20. bypassing root permissions case #1 - subverting the installation process
  • 21. dropping files in the applications’ folder #1 record folder structure #3 recreate folders #2 delete the app #5 :) #4 reinstall the app
  • 22. dropping files in the applications’ folder • fixed (more on that later) • write to /Applications ~having write access to Program Files in Windows, but: • Windows: Admin MEDIUM -> Admin HIGH *is not* a security boundary • macOS: Admin -> root *is* a security boundary
  • 23. Can I do something else? What about symlinks? intermezzo
  • 24. the discovery: symlinks are followed • installd runs as root • installd follows symlinks • installd drop files where symlink points -> drop files (almost anywhere)
  • 25. dropping App Store files (almost) anywhere #1 record folder structure #2 delete the app #6 :) #5 reinstall the app #4 create symlink ln -s /opt /Applications/Example.app/Contents/MacOS #3 recreate folders /Applications/Example.app/Contents
  • 26. what can’t we do? • write files to SIP protected places • overwrite specific files
  • 27. yes can I get root if I can drop files anywhere?
  • 28. privilege escalation ideas • file in the App Store has the same name as one that runs as root -> replace • file in the App Store app named as root, and it’s a cronjob task -> place into /usr/lib/cron/tabs • if no such files in the App Store -> create your own • write a ‘malicious’ dylib and drop somewhere, where it will be loaded by an App running as root
  • 29. intermezzo Unlikely to find a file in the store I’m lazy, I will just report it to Apple The vetting process will find a malicious App sigh … sigh … sigh try harder will create an App
  • 31. planning • idea: let’s drop a cronjob file • need a valid reason -> crontab editor • need a Developer ID - other than my • language? • SWIFT vs. Objective-C • learn SWIFT (CBT) myFraction = [[Fraction alloc] init];
  • 32. pushing apps to the store • App Store Connect • Bundle ID • Create App • Populate details • Upload via Xcode • Submit
  • 33. the time issue • 1 mistake = cost of ~24 hours • my case: 1st push - wait 24 hours - reject - no proper closing - fix - 2nd push - wait 24 hours - approved - priv esc doesn’t work on Mojave :( - try on High Sierra - minimum OS is Mojave - fix - 3rd push - wait 24 hours - approve - works on High Sierra :)
  • 35. privilege escalation #1 the file we need - root #5 Terminal runs as root #3 install the app #2 follow previous steps to redirect the file cd /Applications/ mkdir "Crontab Creator.app" cd Crontab Creator.app/ mkdir Contents cd Contents/ ln -s /usr/lib/cron/tabs/ Resources #4 create script file cd /Applications/ mkdir Scripts cd Scripts/ echo /Applications/Utilities/Terminal.app/ Contents/MacOS/Terminal > backup-apps.sh chmod +x backup-apps.sh
  • 36. the fix • POC stopped working • never really done proper verification • more details later
  • 37. demo - Crontab Creator & privilege escalation
  • 38. bypassing root permissions case #2 - infecting installers
  • 39. infecting installers • not really a bypass (user has to authenticate) • will break the *.pkg file’s signature (Gatekeeper will block!) • need a way to get the infected *.pkg file to the victim (e.g.: MITM) • breaks the App’s signature - no problem as GateKeeper will not verify (it will verify the pkg only)
  • 40. infecting an installer #1 grab a pkg file #2 unpack the pkg file pkgutil --expand example.pkg myfolder Contents #3 decompress payload tar xvf embedded.pkg/Payload #4 embed your file $ mkdir Example.app/Contents/test $ echo aaaa > Example.app/Contents/test/a #5 recompress find ./Example.app | cpio -o --format odc | gzip -c > Payload #6 move and delete files pkgutil --flatten myfolder/ mypackage.pkg #7 repackage pkg
  • 42. redistribution • grab the pkg from the App Store (AppStoreExtract) • redistribute • will run - no verification • in-app purchases won’t work
  • 44. the improper fix • early 2019 - realise I should do a better verification of the fix • no more access to crontab folder • accidental fix? • still can redirect file write to sensitive locations (e.g.: LaunchDaemons)
  • 45. 2nd poc - StartUp • same approach (example files) • targeting LaunchDameon • send 2nd report to Apple
  • 46. demo - StartUp & privilege escalation
  • 48.
  • 49. Mojave 10.14.5 • does fix the vulnerability in a proper way • deletes your files and then moves the App • can no longer drop files into the App’s folder
  • 52. Credits • icon: Pixel Buddha https://www.flaticon.com/authors/pixel-buddha • dylib hijacking: • Patrick Wardle https://www.virusbulletin.com/virusbulletin/2015/03/ dylib-hijacking-os-x