macOS Auto Start
Bu bölüm, Beyond the good ol' LaunchAgents blog serisine dayanmaktadır, amacı Daha Fazla Otomatik Başlatma Konumu eklemek (mümkünse), günümüzdeki en son macOS sürümü (13.4) ile hala çalışan teknikleri belirtmek ve gereken izinleri belirtmektir.
Kum Havuzu Atlatma
Burada, kum havuzu atlatma için yararlı başlatma konumları bulabilirsiniz, bu size bir dosyaya yazarak ve çok sık yapılan bir eylem, belirli bir zaman miktarı veya genellikle kök izinleri gerektirmeyen bir sandbox içinden yapabileceğiniz bir eylem için bekleyerek basitçe bir şeyi yürütmenizi sağlar.
Launchd
Konumlar
/Library/LaunchAgents
Tetikleyici: Yeniden başlatma
Kök gereklidir
/Library/LaunchDaemons
Tetikleyici: Yeniden başlatma
Kök gereklidir
/System/Library/LaunchAgents
Tetikleyici: Yeniden başlatma
Kök gereklidir
/System/Library/LaunchDaemons
Tetikleyici: Yeniden başlatma
Kök gereklidir
~/Library/LaunchAgents
Tetikleyici: Yeniden oturum açma
~/Library/LaunchDemons
Tetikleyici: Yeniden oturum açma
Açıklama ve Sömürü
launchd
, başlangıçta OX S çekirdeği tarafından çalıştırılan ilk işlem ve kapanırken sonuncusudur. Her zaman PID 1'e sahip olmalıdır. Bu işlem, ASEP plistlerinde belirtilen yapılandırmaları okuyacak ve yürütecektir:
/Library/LaunchAgents
: Yönetici tarafından yüklenen kullanıcı başına ajanlar/Library/LaunchDaemons
: Yönetici tarafından yüklenen sistem genelinde hizmetler/System/Library/LaunchAgents
: Apple tarafından sağlanan kullanıcı başına ajanlar./System/Library/LaunchDaemons
: Apple tarafından sağlanan sistem genelinde hizmetler.
Bir kullanıcı oturum açtığında, /Users/$USER/Library/LaunchAgents
ve /Users/$USER/Library/LaunchDemons
konumlarındaki plist'ler oturum açan kullanıcı izinleriyle başlatılır.
Ajanlar ve hizmetler arasındaki temel fark, ajanların kullanıcı oturum açtığında yüklenmesi ve hizmetlerin sistem başlatıldığında yüklenmesidir (çünkü ssh gibi hizmetlerin, herhangi bir kullanıcının sisteme erişmeden önce yürütülmesi gerektiği durumlar vardır). Ayrıca ajanlar GUI kullanabilirken, hizmetler arka planda çalışmalıdır.
Ön Giriş Ajanlar olarak adlandırılan durumlar vardır ki bir ajanın kullanıcı oturum açmadan önce çalıştırılması gereklidir. Örneğin, bu, oturum açılışında destekleyici teknoloji sağlamak için kullanışlıdır. Bunlar ayrıca /Library/LaunchAgents
dizininde de bulunabilir (bir örnek için buraya bakın).
Yeni Daemon veya Ajan yapılandırma dosyaları bir sonraki yeniden başlatmadan sonra yüklenecek veya launchctl load <hedef.plist>
kullanılarak yüklenebilir. Ayrıca, .plist
uzantısız dosyaları launchctl -F <dosya>
ile yüklemek de mümkündür (ancak bu plist dosyaları otomatik olarak yeniden başlatmadan sonra yüklenmeyecektir).
launchctl unload <hedef.plist>
ile yüklemeyi kaldırmak da mümkündür (işaret edilen işlem sonlandırılacaktır).
Bir Ajanın veya Daemon'ın çalışmasını engelleyen bir şeyin (örneğin, bir geçersizleştirme) olmadığından emin olmak için şunu çalıştırın: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist
Mevcut kullanıcı tarafından yüklenen tüm ajanları ve daemonları listele:
Eğer bir plist dosyası bir kullanıcıya aitse, hatta bir daemon sistem genelindeki klasörlerdeyse, görev kullanıcı olarak ve kök olarak değil yürütülecektir. Bu bazı ayrıcalık yükseltme saldırılarını önleyebilir.
kabuk başlangıç dosyaları
Açıklama: https://theevilbit.github.io/beyond/beyond_0001/ Açıklama (xterm): https://theevilbit.github.io/beyond/beyond_0018/
Kum havuzunu atlamak için kullanışlı: ✅
TCC Atlatma: ✅
Ancak bu dosyaları yükleyen bir kabuk yürüten bir TCC atlatması olan bir uygulama bulmanız gerekmektedir
Konumlar
~/.zshrc
,~/.zlogin
,~/.zshenv.zwc
,~/.zshenv
,~/.zprofile
Tetikleyici: zsh ile bir terminal aç
/etc/zshenv
,/etc/zprofile
,/etc/zshrc
,/etc/zlogin
Tetikleyici: zsh ile bir terminal aç
Kök gereklidir
~/.zlogout
Tetikleyici: zsh ile bir terminalden çık
/etc/zlogout
Tetikleyici: zsh ile bir terminalden çık
Kök gereklidir
Muhtemelen daha fazlası:
man zsh
~/.bashrc
Tetikleyici: bash ile bir terminal aç
/etc/profile
(çalışmadı)~/.profile
(çalışmadı)~/.xinitrc
,~/.xserverrc
,/opt/X11/etc/X11/xinit/xinitrc.d/
Tetikleyici: xterm ile tetiklenmesi beklenir, ancak kurulu değil ve kurulduktan sonra bile bu hata alınır: xterm:
DISPLAY is not set
Açıklama ve Sömürü
zsh
veya bash
gibi bir kabuk ortamı başlatıldığında, belirli başlangıç dosyaları çalıştırılır. macOS şu anda varsayılan kabuk olarak /bin/zsh
'yi kullanmaktadır. Bu kabuk, Terminal uygulaması başlatıldığında veya bir cihaza SSH aracılığıyla erişildiğinde otomatik olarak erişilir. bash
ve sh
de macOS'ta bulunmasına rağmen, kullanılmak için açıkça çağrılması gerekmektedir.
Okuyabileceğimiz zsh'nin man sayfası olan man zsh
, başlangıç dosyaları hakkında uzun bir açıklamaya sahiptir.
Yeniden Açılan Uygulamalar
Belirtilen sömürüyü yapılandırmak ve oturumu kapatıp açmak veya hatta yeniden başlatmak, uygulamayı yürütmek için çalışmadı. (Uygulama çalıştırılmıyordu, belki bu eylemler gerçekleştirilirken çalışır durumda olması gerekiyor)
Açıklama: https://theevilbit.github.io/beyond/beyond_0021/
Konum
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Tetikleyici: Uygulamaları yeniden açma işlemi
Açıklama ve Sömürü
Yeniden açılacak tüm uygulamalar, ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
plist dosyasının içindedir.
Bu nedenle, yeniden açılacak uygulamalar arasına kendi uygulamanızı eklemek için uygulamanızı listeye eklemeniz yeterlidir.
UUID, o dizini listelerken veya ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
komutu ile bulunabilir.
Yeniden açılacak uygulamaları kontrol etmek için şunu yapabilirsiniz:
Bu listede bir uygulama eklemek için şunları kullanabilirsiniz:
Terminal Tercihleri
Kum havuzunu atlamak için kullanışlı: ✅
TCC atlatma: ✅
Terminal, kullanıcının FDA izinlerine sahip olmasını gerektirir.
Konum
~/Library/Preferences/com.apple.Terminal.plist
Tetikleyici: Terminalı Aç
Açıklama ve Sömürü
~/Library/Preferences
içerisinde, Kullanıcı Tercihleri Uygulamalarında saklanır. Bu tercihlerden bazıları, diğer uygulamalar/skriptleri çalıştırmak için bir yapılandırma tutabilir.
Örneğin, Terminal Başlangıçta bir komutu çalıştırabilir:
Bu yapılandırma, dosyada ~/Library/Preferences/com.apple.Terminal.plist
şu şekilde yansıtılır:
Yani, sistemdeki terminal tercihlerinin plist'i üzerine yazılırsa, open
işlevi kullanılarak terminal açılabilir ve o komut çalıştırılabilir.
Bunu terminalden şu şekilde ekleyebilirsiniz:
Terminal Betikleri / Diğer dosya uzantıları
Kum havuzunu atlamak için kullanışlı: ✅
TCC atlatma: ✅
Terminal, kullanıcının FDA izinlerine sahip olmasını sağlar
Konum
Herhangi bir yer
Tetikleyici: Terminal Açık
Açıklama ve Sömürü
Eğer bir .terminal
betiği oluşturursanız ve açarsanız, Terminal uygulaması otomatik olarak çağrılacak ve içinde belirtilen komutları çalıştırmak için kullanılacaktır. Eğer Terminal uygulamasının özel izinleri varsa (örneğin TCC gibi), komutunuz bu özel izinlerle çalıştırılacaktır.
Deneyin:
Ses Eklentileri
Açıklama: https://theevilbit.github.io/beyond/beyond_0013/ Açıklama: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
Konum
/Library/Audio/Plug-Ins/HAL
Kök erişimi gereklidir
Tetik: coreaudiod veya bilgisayar yeniden başlatılmalıdır
/Library/Audio/Plug-ins/Components
Kök erişimi gereklidir
Tetik: coreaudiod veya bilgisayar yeniden başlatılmalıdır
~/Library/Audio/Plug-ins/Components
Tetik: coreaudiod veya bilgisayar yeniden başlatılmalıdır
/System/Library/Components
Kök erişimi gereklidir
Tetik: coreaudiod veya bilgisayar yeniden başlatılmalıdır
Açıklama
Önceki açıklamalara göre bazı ses eklentilerini derleyip yüklemek mümkündür.
QuickLook Eklentileri
Açıklama: https://theevilbit.github.io/beyond/beyond_0028/
Konum
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
Açıklama ve Sömürü
QuickLook eklentileri, bir dosyanın önizlemesini tetiklediğinizde (Finder'da dosya seçiliyken boşluk çubuğuna basın) ve o dosya türünü destekleyen bir eklenti yüklü olduğunda çalıştırılabilir.
Kendi QuickLook eklentinizi derleyip, onu önceki konumlardan birine yerleştirebilir ve ardından desteklenen bir dosyaya gidip tetiklemek için boşluk tuşuna basabilirsiniz.
Giriş/Çıkış Kancaları
Bu benim için çalışmadı, ne kullanıcı Giriş Kancası ne de kök Çıkış Kancası ile.
Açıklama: https://theevilbit.github.io/beyond/beyond_0022/
Konum
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
gibi bir şeyi yürütebilmelisiniz~/Library/Preferences/com.apple.loginwindow.plist
konumunda bulunur
Eskimiş olsalar da, bir kullanıcı oturum açtığında komutları yürütmek için kullanılabilirler.
Bu ayar /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
dosyasında saklanır.
Silmek için:
Root kullanıcısı /private/var/root/Library/Preferences/com.apple.loginwindow.plist
dosyasında saklanır.
Koşullu Kum Sandığı Atlatma
Burada, kum sandığı atlatma için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da size basitçe bir şeyi bir dosyaya yazarak ve belirli programlar yüklü, "sıradışı" kullanıcı eylemleri veya ortamlar gibi belirli yaygın olmayan koşulların olmasını beklemektedir.
Cron
Açıklama: https://theevilbit.github.io/beyond/beyond_0004/
Kum sandığını atlamak için yararlı: ✅
Ancak,
crontab
ikilisini çalıştırabilmeniz gerekirVeya root olmanız gerekir
TCC atlatma: 🔴
Konum
/usr/lib/cron/tabs/
,/private/var/at/tabs
,/private/var/at/jobs
,/etc/periodic/
Doğrudan yazma erişimi için root gereklidir.
crontab <dosya>
yı çalıştırabilirseniz root gerekli değildirTetikleyici: Cron işine bağlıdır
Açıklama ve Sömürü
Mevcut kullanıcının cron işlerini listelemek için:
MacOS'ta kullanıcıların tüm cron işlerini /usr/lib/cron/tabs/
ve /var/at/tabs/
(root gerektirir) dizinlerinde görebilirsiniz.
MacOS'ta belirli bir sıklıkla betikleri çalıştıran birkaç klasör bulunabilir:
Aşağıda düzenli cron görevleri, at görevleri (pek kullanılmaz) ve periyodik görevler (genellikle geçici dosyaları temizlemek için kullanılır) bulunabilir. Günlük periyodik görevler örneğin şu şekilde çalıştırılabilir: periodic daily
.
Kullanıcı cron görevi programatik olarak eklemek için şu kullanılabilir:
iTerm2
Açıklama: https://theevilbit.github.io/beyond/beyond_0002/
Kum havuzunu atlamak için kullanışlı: ✅
TCC atlatma: ✅
iTerm2, TCC izinlerine sahip olmak için kullanıldı
Konumlar
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
Tetikleyici: iTerm açılınca
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
Tetikleyici: iTerm açılınca
~/Library/Preferences/com.googlecode.iterm2.plist
Tetikleyici: iTerm açılınca
Açıklama ve Sömürü
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
konumunda saklanan betikler çalıştırılacaktır. Örneğin:
Dosya ~/Library/LaunchAgents/
ve ~/Library/LaunchDaemons/
klasörlerinde otomatik başlatma öğeleri bulunabilir. Bu öğeler, kullanıcı oturumu başladığında veya sistem başlatıldığında çalıştırılacak komutları içerebilir. Bu konumlar genellikle kötü niyetli yazılımlar tarafından kullanılır. Bu klasörlerdeki tüm dosyalar dikkatlice incelenmelidir.
Betik ~/Kütüphane/Uygulama Desteği/iTerm2/Scripts/AutoLaunch.scpt
de yürütülecektir:
~/Library/Preferences/com.googlecode.iterm2.plist
konumundaki iTerm2 tercihleri, iTerm2 terminali açıldığında yürütülecek bir komutu belirtebilir.
Bu ayar, iTerm2 ayarlarında yapılandırılabilir:
Ve komut tercihlere yansıtılır:
Komutun çalıştırılacak şekilde ayarlayabilirsiniz:
İTerm2 tercihlerini kötüye kullanmak için başka yolların yüksek olasılıkla bulunduğu.
xbar
Açıklama: https://theevilbit.github.io/beyond/beyond_0007/
Kum havuzunu atlamak için kullanışlı: ✅
Ancak xbar yüklü olmalı
TCC atlatma: ✅
Erişilebilirlik izinleri istiyor
Konum
~/Library/Application\ Support/xbar/plugins/
Tetikleyici: xbar çalıştırıldığında
Açıklama
Eğer popüler program xbar yüklü ise, ~/Library/Application\ Support/xbar/plugins/
dizininde bir kabuk betiği yazmak mümkündür ve bu betik xbar başlatıldığında çalıştırılacaktır:
Hammerspoon
Açıklama: https://theevilbit.github.io/beyond/beyond_0008/
Kum havuzunu atlamak için kullanışlı: ✅
Ancak Hammerspoon'un yüklü olması gerekir
TCC atlatma: ✅
Erişilebilirlik izni istiyor
Konum
~/.hammerspoon/init.lua
Tetikleyici: Hammerspoon çalıştırıldığında
Açıklama
Hammerspoon, işlemleri için LUA betik dilini kullanan macOS için bir otomasyon platformu olarak hizmet verir. Özellikle, tam AppleScript kodunun entegrasyonunu destekler ve kabuk betiklerinin yürütülmesini sağlayarak betikleme yeteneklerini önemli ölçüde artırır.
Uygulama, ~/.hammerspoon/init.lua
adlı tek bir dosyayı arar ve başlatıldığında betik yürütülür.
BetterTouchTool
Kullanışlıdır çünkü kum havuzunu atlar: ✅
Ancak BetterTouchTool'un yüklü olması gerekir
TCC atlatma: ✅
Otomasyon-Kısayolları ve Erişilebilirlik izinlerini istiyor
Konum
~/Library/Application Support/BetterTouchTool/*
Bu araç, bazı kısayollar basıldığında uygulamaları veya betikleri yürütmek için göstergeler sağlar. Bir saldırgan, kendi kısayolunu ve eylemini yürütmek için veritabanında yapılandırabilir ve keyfi kod yürütmesini sağlayabilir (bir kısayol sadece bir tuşa basmak olabilir).
Alfred
Kum havuzunu atlamak için kullanışlı: ✅
Ancak Alfred yüklü olmalıdır
TCC atlatma: ✅
Otomasyon, Erişilebilirlik ve hatta Tam Disk erişimi izinleri istiyor
Konum
???
Belirli koşullar karşılandığında kodu yürütebilen iş akışları oluşturmayı sağlar. Bir saldırganın bir iş akışı dosyası oluşturup Alfred'ın bunu yüklemesini sağlaması potansiyel olarak mümkündür (iş akışlarını kullanmak için premium sürümü satın almak gerekmektedir).
SSHRC
Açıklama: https://theevilbit.github.io/beyond/beyond_0006/
Kum havuzunu atlamak için kullanışlıdır: ✅
Ancak ssh etkinleştirilmiş ve kullanılmış olmalıdır
TCC atlatma: ✅
SSH'nin FDA erişimine sahip olması gerekir
Konum
~/.ssh/rc
Tetikleyici: ssh üzerinden oturum açma
/etc/ssh/sshrc
Root gereklidir
Tetikleyici: ssh üzerinden oturum açma
Ssh'yi açmak için Tam Disk Erişimi gereklidir:
Açıklama ve Sömürü
Varsayılan olarak, /etc/ssh/sshd_config
dosyasında PermitUserRC no
belirtilmediği sürece, bir kullanıcı SSH üzerinden giriş yaptığında /etc/ssh/sshrc
ve ~/.ssh/rc
betikleri çalıştırılacaktır.
Giriş Öğeleri
Açıklama: https://theevilbit.github.io/beyond/beyond_0003/
Kum havuzunu atlamak için kullanışlı: ✅
Ancak
osascript
'i argümanlarla çalıştırmanız gerekmektedirTCC atlatma: 🔴
Konumlar
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Tetikleyici: Giriş
Sömürü yükü
osascript
çağrısıyla depolanmış/var/db/com.apple.xpc.launchd/loginitems.501.plist
Tetikleyici: Giriş
Root gereklidir
Açıklama
Sistem Tercihleri -> Kullanıcılar ve Gruplar -> Giriş Öğeleri'nde, kullanıcı oturum açtığında çalıştırılacak öğeleri bulabilirsiniz. Onları komut satırından listelemek, eklemek ve kaldırmak mümkündür:
Bu öğeler ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
dosyasında saklanır.
Giriş öğeleri, ayrıca SMLoginItemSetEnabled API'sini kullanarak belirtilebilir, bu da yapılandırmayı /var/db/com.apple.xpc.launchd/loginitems.501.plist
dosyasında saklayacaktır.
ZIP olarak Giriş Öğesi
(Giriş Öğeleri hakkında önceki bölümü kontrol edin, bu bir uzantıdır)
Eğer bir ZIP dosyasını bir Giriş Öğesi olarak saklarsanız, Archive Utility
onu açacaktır ve örneğin ZIP dosyası ~/Library
içinde saklanmış ve içinde LaunchAgents/file.plist
adlı bir arka kapı içeren bir Klasör bulunuyorsa (varsayılan olarak bulunmaz), o klasör oluşturulacak ve plist eklenerek bir sonraki kullanıcı tekrar oturum açtığında, plist'te belirtilen arka kapı yürütülecektir.
Başka bir seçenek, .bash_profile
ve .zshenv
dosyalarını kullanıcı ANA DİZİN içine oluşturmaktır, böylece LaunchAgents klasörü zaten varsa bu teknik yine de çalışacaktır.
At
Açıklama: https://theevilbit.github.io/beyond/beyond_0014/
Kum havuzunu atlamak için kullanışlı: ✅
Ancak
at
komutunu çalıştırmanız ve etkin olması gerekmektedirTCC atlaması: 🔴
Konum
at
komutunu çalıştırmanız ve etkin olması gerekmektedir
Açıklama
at
görevleri, belirli zamanlarda yürütülmek üzere tek seferlik görevlerin zamanlamasını yapmak için tasarlanmıştır. Cron işleri gibi, at
görevleri otomatik olarak yürütmeden sonra kaldırılır. Bu görevlerin sistem yeniden başlatmaları arasında kalıcı olduğunu unutmamak önemlidir, bu da onları belirli koşullar altında potansiyel güvenlik endişeleri olarak işaretler.
Varsayılan olarak devre dışı bırakılmışlardır ancak root kullanıcısı bunları etkinleştirebilir.
Bu, 1 saat içinde bir dosya oluşturacaktır:
atq
komutunu kullanarak iş kuyruğunu kontrol edin:
Yukarıda iki zamanlanmış iş görebiliriz. İşi ayrıntılarıyla yazdırmak için at -c İŞNUMARASI
kullanabiliriz.
Eğer AT görevleri etkin değilse, oluşturulan görevler yürütülmeyecektir.
İş dosyaları /private/var/at/jobs/
dizininde bulunabilir.
Dosya adı sırayı, iş numarasını ve çalıştırılacağı zamanı içerir. Örneğin a0001a019bdcd2
'ye bakalım.
a
- bu kuyruktur0001a
- onaltılık iş numarası,0x1a = 26
019bdcd2
- onaltılık zaman. Bu, epoch'tan bu yana geçen dakikaları temsil eder.0x019bdcd2
, ondalık olarak26991826
'dır. 60 ile çarptığımızda1619509560
elde ederiz, bu daGMT: 2021 Nisan 27, Salı 7:46:00
'yi temsil eder.
İş dosyasını yazdırırsak, at -c
kullanarak elde ettiğimiz bilgileri içerdiğini görürüz.
Klasör Eylemleri
Açıklama: https://theevilbit.github.io/beyond/beyond_0024/ Açıklama: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
Kum havuzunu atlamak için kullanışlı: ✅
Ancak Klasör Eylemlerini yapılandırmak için
System Events
ile iletişim kurabilmek içinosascript
'ı argümanlarla çağırabilmeniz gerekirTCC atlatma: 🟠
Masaüstü, Belgeler ve İndirmeler gibi bazı temel TCC izinlerine sahiptir
Konum
/Library/Scripts/Folder Action Scripts
Kök izni gereklidir
Tetikleyici: Belirtilen klasöre erişim
~/Library/Scripts/Folder Action Scripts
Tetikleyici: Belirtilen klasöre erişim
Açıklama ve Sömürü
Klasör Eylemleri, bir klasördeki değişikliklerle otomatik olarak tetiklenen betiklerdir, örneğin öğeler eklenirken, kaldırılırken veya diğer eylemler yapılırken veya klasör penceresinin açılması veya boyutlandırılması gibi. Bu eylemler çeşitli görevler için kullanılabilir ve Finder UI veya terminal komutları kullanılarak tetiklenebilir.
Klasör Eylemleri kurmak için şu seçeneklere sahipsiniz:
Automator ile bir Klasör Eylemi iş akışı oluşturmak ve bir hizmet olarak yüklemek.
Bir betiği manuel olarak bir klasörün bağlam menüsündeki Klasör Eylemleri Kurulumu aracılığıyla eklemek.
Programatik olarak bir Klasör Eylemi kurmak için
System Events.app
'e Apple Olayı iletileri göndermek için OSAScript'i kullanmak.
Bu yöntem, eylemi sisteme gömmek ve kalıcılık düzeyi sunmak için özellikle kullanışlıdır.
Aşağıdaki betik, bir Klasör Eylemi tarafından yürütülebilecek bir örnektir:
Yukarıdaki betiği Klasör Eylemleri tarafından kullanılabilir hale getirmek için şunu kullanarak derleyin:
Derlemesi yapıldıktan sonra, aşağıdaki betiği çalıştırarak Klasör İşlemlerini kurun. Bu betik, Klasör İşlemlerini genel olarak etkinleştirecek ve önceden derlenmiş betiği özel olarak Masaüstü klasörüne ekleyecektir.
Setup betik dosyasını şu şekilde çalıştırın:
Bu kalıcılığı GUI aracılığıyla uygulamanın yolu:
Bu, yürütülecek olan betiktir:
Şununla derleyin: osacompile -l JavaScript -o folder.scpt source.js
Taşı:
Sonra, Folder Actions Setup
uygulamasını açın, izlemek istediğiniz klasörü seçin ve sizin durumunuzda folder.scpt
'yi seçin (benim durumumda buna output2.scp adını verdim):
Şimdi, eğer o klasörü Finder ile açarsanız, betiğiniz çalıştırılacaktır.
Bu yapılandırma, base64 formatında ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
konumunda saklanmıştır.
Şimdi, GUI erişimi olmadan bu kalıcılığı hazırlamayı deneyelim:
~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
'yi yedeklemek için/tmp
'ye kopyalayın:
cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp
Şimdi, ayarladığınız Klasör Eylemlerini kaldırın:
Şimdi boş bir ortama sahip olduğumuza göre
Yedek dosyayı kopyalayın:
cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/
Bu yapılandırmayı tüketmek için Folder Actions Setup.app'ı açın:
open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"
Ve bu benim için çalışmadı, ama bunlar yazıdan talimatlar:(
Dock kısayolları
Yazı: https://theevilbit.github.io/beyond/beyond_0027/
Kum havuzunu atlamak için kullanışlı: ✅
Ancak kötü niyetli bir uygulamayı sisteme kurmanız gerekmektedir
TCC atlatma: 🔴
Konum
~/Library/Preferences/com.apple.dock.plist
Tetikleyici: Kullanıcı dock içindeki uygulamaya tıkladığında
Açıklama ve Sömürü
Dock'ta görünen tüm uygulamalar, ~/Library/Preferences/com.apple.dock.plist
içinde belirtilmiştir.
Sadece şu komutla bir uygulama eklemek mümkündür:
Bazı sosyal mühendislik kullanarak örneğin dock içinde Google Chrome gibi kimlik çalabilir ve aslında kendi betiğinizi çalıştırabilirsiniz:
Renk Seçiciler
Açıklama: https://theevilbit.github.io/beyond/beyond_0017
Kum havuzunu atlamak için kullanışlı: 🟠
Çok belirli bir eylem gerçekleşmesi gerekiyor
Başka bir kum havuzunda sonlanacaksınız
TCC atlatma: 🔴
Konum
/Library/ColorPickers
Kök izni gereklidir
Tetikleyici: Renk seçicisini kullanın
~/Library/ColorPickers
Tetikleyici: Renk seçicisini kullanın
Açıklama ve Sömürü
Kodunuzla bir renk seçici paketi derleyin (örneğin bu örneği kullanabilirsiniz) ve bir yapılandırıcı ekleyin (Ekran Koruyucu bölümündeki gibi) ve paketi ~/Library/ColorPickers
dizinine kopyalayın.
Sonra, renk seçicisi tetiklendiğinde sizin de tetiklenmeniz gerekmektedir.
Kütüphanenizi yükleyen ikili dosyanın çok kısıtlayıcı bir kum havuzu olduğunu unutmayın: /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64
Finder Senkronizasyon Eklentileri
Açıklama: https://theevilbit.github.io/beyond/beyond_0026/ Açıklama: https://objective-see.org/blog/blog_0x11.html
Kum havuzunu atlamak için kullanışlı mı: Hayır, çünkü kendi uygulamanızı yürütmeniz gerekir
TCC atlatma: ???
Konum
Belirli bir uygulama
Açıklama ve Sızma
Bir Finder Senkronizasyon Uzantısı örneği olan bir uygulama burada bulunabilir.
Uygulamalar Finder Senkronizasyon Uzantıları
na sahip olabilir. Bu uzantı, yürütülecek bir uygulamanın içine gidecektir. Dahası, uzantının kodunu yürütebilmesi için bazı geçerli Apple geliştirici sertifikaları ile imzalanmış olması gerekir, kum havuzunda olmalıdır (rahatlatılmış istisnalar eklenmiş olabilir) ve şuna benzer bir şeyle kaydedilmiş olmalıdır:
Ekran Koruyucu
Açıklama: https://theevilbit.github.io/beyond/beyond_0016/ Açıklama: https://posts.specterops.io/saving-your-access-d562bf5bf90b
Kum havuzunu atlamak için faydalı: 🟠
Ancak genel bir uygulama kum havuzunda sona ereceksiniz
TCC atlatma: 🔴
Konum
/System/Library/Screen Savers
Kök erişimi gereklidir
Tetikleyici: Ekran koruyucusunu seçin
/Library/Screen Savers
Kök erişimi gereklidir
Tetikleyici: Ekran koruyucusunu seçin
~/Library/Screen Savers
Tetikleyici: Ekran koruyucusunu seçin
Açıklama ve Sömürü
Xcode'da yeni bir proje oluşturun ve yeni bir Ekran Koruyucu oluşturmak için şablonu seçin. Ardından, örneğin aşağıdaki kodu kullanarak günlükler oluşturmak için kodunuzu ekleyin.
Derleyin ve .saver
paketini ~/Library/Screen Savers
dizinine kopyalayın. Sonra, Ekran Koruyucu GUI'yi açın ve üzerine tıkladığınızda birçok günlük oluşturmalıdır:
Bu kodu yükleyen ikili dosyanın ayrıcalıklarında (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) com.apple.security.app-sandbox
bulunduğundan dolayı ortak uygulama kum havuzunun içinde olacaksınız.
Koruyucu kod:
Spotlight Eklentileri
açıklama: https://theevilbit.github.io/beyond/beyond_0011/
Kum havuzunu atlamak için kullanışlı: 🟠
Ancak bir uygulama kum havuzunda sona ereceksiniz
TCC atlatma: 🔴
Kum havuzu çok sınırlı görünüyor
Konum
~/Kütüphane/Spotlight/
Tetikleyici: Spotlight eklentisi tarafından yönetilen bir uzantıya sahip yeni bir dosya oluşturulduğunda.
/Kütüphane/Spotlight/
Tetikleyici: Spotlight eklentisi tarafından yönetilen bir uzantıya sahip yeni bir dosya oluşturulduğunda.
Root gerekli
/Sistem/Kütüphane/Spotlight/
Tetikleyici: Spotlight eklentisi tarafından yönetilen bir uzantıya sahip yeni bir dosya oluşturulduğunda.
Root gerekli
Some.app/İçerik/Kütüphane/Spotlight/
Tetikleyici: Spotlight eklentisi tarafından yönetilen bir uzantıya sahip yeni bir dosya oluşturulduğunda.
Yeni uygulama gereklidir
Açıklama ve Sömürü
Spotlight, macOS'in yerleşik arama özelliğidir ve kullanıcılara bilgisayarlarındaki verilere hızlı ve kapsamlı erişim sağlamak amacıyla tasarlanmıştır. Bu hızlı arama yeteneğini kolaylaştırmak için Spotlight, özel bir veritabanı tutar ve çoğu dosyayı ayıklamak suretiyle bir dizin oluşturur, böylece dosya adları ve içerikleri arasında hızlı aramalar yapılabilir.
Spotlight'ın temel mekanizması, 'mds' adlı merkezi bir süreci içerir, bu süreç 'meta veri sunucusu' anlamına gelir. Bu süreç, tüm Spotlight hizmetini yönetir. Buna ek olarak, farklı bakım görevlerini yerine getiren çeşitli 'mdworker' cinleri bulunmaktadır (ps -ef | grep mdworker
). Bu görevler, Spotlight içe aktarıcı eklentileri veya ".mdimporter paketleri" aracılığıyla mümkün hale getirilir, bu eklentiler Spotlight'ın çeşitli dosya biçimlerindeki içeriği anlamasına ve dizinlemesine olanak tanır.
Eklentiler veya .mdimporter
paketleri önceden belirtilen yerlerde bulunur ve yeni bir paket göründüğünde dakikalar içinde yüklenir (herhangi bir hizmeti yeniden başlatmaya gerek yoktur). Bu paketlerin hangi dosya türü ve uzantıları yönetebileceğini belirtmeleri gerekir, bu sayede Spotlight belirtilen uzantıya sahip yeni bir dosya oluşturulduğunda onları kullanacaktır.
Yüklenmiş tüm mdimporters
'ları bulmak mümkündür:
Ve örneğin /Library/Spotlight/iBooksAuthor.mdimporter bu tür dosyaları ayrıştırmak için kullanılır (uzantılar .iba
ve .book
dahil diğerleri):
Başka mdimporter
'ın Plist'ini kontrol ederseniz, UTTypeConformsTo
girişini bulamayabilirsiniz. Bu, yerleşik Uniform Type Identifiers (UTI) olduğu için uzantıları belirtmeye gerek duymaz.
Ayrıca, Sistem varsayılan eklentileri her zaman önceliğe sahiptir, bu nedenle bir saldırgan yalnızca Apple'ın kendi mdimporters
tarafından dizinlenmeyen dosyalara erişebilir.
Kendi içe aktarıcınızı oluşturmak için bu projeye başlayabilirsiniz: https://github.com/megrimm/pd-spotlight-importer ve ardından adı değiştirin, CFBundleDocumentTypes
'ı değiştirin ve UTImportedTypeDeclarations
ekleyin böylece desteklemek istediğiniz uzantıyı destekler ve bunları schema.xml
'de yansıtın.
Sonra GetMetadataForFile
işlevinin kodunu değiştirin ve işlenen uzantıya sahip bir dosya oluşturulduğunda payload'ınızı yürütmesini sağlayın.
Son olarak, yeni .mdimporter
'ınızı bir önceki konumlardan birine kopyalayın ve yüklendiğinde günlükleri izleyerek veya mdimport -L
kontrol ederek ne zaman yüklendiğini kontrol edebilirsiniz.
Tercih Paneli
Bu artık çalışmıyor gibi görünmüyor.
Açıklama: https://theevilbit.github.io/beyond/beyond_0009/
Konum
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
Açıklama: Bu artık çalışmıyor gibi görünmüyor.
Kök Kum Havuzu Atlatma
Burada, kum havuzu atlatma için yararlı olan başlangıç konumlarını bulabilirsiniz, bu da size bir dosyaya yazarak basitçe bir şeyi kök olarak yürütmenizi sağlar ve/veya diğer garip koşullar gerektirir.
Periyodik
Açıklama: https://theevilbit.github.io/beyond/beyond_0019/
Konum
/etc/periodic/daily
,/etc/periodic/weekly
,/etc/periodic/monthly
,/usr/local/etc/periodic
Kök gereklidir
Tetikleyici: Zamanı geldiğinde
/etc/daily.local
,/etc/weekly.local
veya/etc/monthly.local
Kök gereklidir
Tetikleyici: Zamanı geldiğinde
Açıklama ve Sömürü: Periyodik betikler (/etc/periodic
), /System/Library/LaunchDaemons/com.apple.periodic*
'de yapılandırılmış başlatma hizmetleri nedeniyle yürütülür. /etc/periodic/
içinde depolanan betikler dosya sahibi olarak yürütülür, bu nedenle bu potansiyel bir ayrıcalık yükseltme için çalışmaz.
Başka periyodik betikler de /etc/defaults/periodic.conf
dosyasında belirtilir:
Eğer /etc/daily.local
, /etc/weekly.local
veya /etc/monthly.local
dosyalarından herhangi birini yazmayı başarırsanız, er ya da geç yürütülecektir.
Periyodik betiğin betik sahibi olarak yürütüleceğini unutmayın. Dolayısıyla, düzenli bir kullanıcı betiğin sahibiyse, bu kullanıcı olarak yürütülecektir (bu, ayrıcalık yükseltme saldırılarını engelleyebilir).
PAM
Açıklama: Linux Hacktricks PAM Açıklama: https://theevilbit.github.io/beyond/beyond_0005/
Konum
Her zaman kök gereklidir
Açıklama ve Sömürü
PAM, macOS içinde kolay yürütmeden ziyade kalıcılık ve kötü amaçlı yazılım üzerine odaklandığından, bu blog detaylı bir açıklama sunmayacak, bu teknik hakkında daha iyi anlamak için açıklamaları okuyun.
PAM modüllerini kontrol etmek için:
Bir süreklilik/privilege escalation tekniği PAM'ı kötüye kullanarak /etc/pam.d/sudo modülünü değiştirerek başlangıca şu satırı eklemek kadar kolaydır:
Yani bu şöyle görünecek:
Ve dolayısıyla sudo
kullanma girişimi başarılı olacaktır.
Bu dizinin TCC tarafından korunduğunu unutmayın, bu nedenle kullanıcının erişim isteyen bir ileti alması muhtemeldir.
Yetkilendirme Eklentileri
Açıklama: https://theevilbit.github.io/beyond/beyond_0028/ Açıklama: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
Kum havuzunu atlamak için kullanışlı: 🟠
Ancak root olmanız ve ek yapılandırmalar yapmanız gerekiyor
TCC atlatma: ???
Konum
/Library/Security/SecurityAgentPlugins/
Root gereklidir
Eklentiyi kullanmak için yetkilendirme veritabanını yapılandırmak da gereklidir
Açıklama ve Sömürü
Kullanıcı oturum açtığında kalıcılığı sürdürmek için yürütülecek bir yetkilendirme eklentisi oluşturabilirsiniz. Bu eklentilerden birini nasıl oluşturacağınız hakkında daha fazla bilgi için önceki açıklamalara bakın (ve dikkatli olun, kötü yazılmış bir eklenti sizi dışarıda bırakabilir ve Mac'inizi kurtarma modundan temizlemeniz gerekebilir).
Bündeyi yüklenmesi gereken konuma taşıyın:
Son olarak bu Eklentiyi yüklemek için kuralı ekleyin:
evaluate-mechanisms
yetkilendirme çerçevesine dış bir mekanizmayı çağırması gerekeceğini belirtecektir. Ayrıca, privileged
root tarafından yürütülmesini sağlayacaktır.
Şununla tetikleyin:
Ve sonra personel grubunun sudo erişimi olmalıdır (/etc/sudoers
dosyasını okuyun doğrulamak için).
Man.conf
Çözümleme: https://theevilbit.github.io/beyond/beyond_0030/
Kum havuzunu atlamak için kullanışlı: 🟠
Ancak root olmanız ve kullanıcının man kullanması gerekmektedir
TCC atlatma: 🔴
Konum
/private/etc/man.conf
Root gerekli
/private/etc/man.conf
: Her zaman man kullanıldığında
Açıklama ve Sızma
Yapılandırma dosyası /private/etc/man.conf
, man belgelendirme dosyalarını açarken kullanılacak ikili betiği gösterir. Bu nedenle yürütülecek arka kapı her zaman kullanıcı belgeleri okumak için man komutunu kullandığında değiştirilebilir.
Örneğin /private/etc/man.conf
içinde ayarlanmış:
Ve ardından /tmp/view
'i şu şekilde oluşturun:
Apache2
Açıklama: https://theevilbit.github.io/beyond/beyond_0023/
Kum havuzunu atlamak için kullanışlı: 🟠
Ancak root olmanız ve apache'nin çalışıyor olması gerekmektedir
TCC atlatma: 🔴
Httpd'nin ayrıcalıkları yok
Konum
/etc/apache2/httpd.conf
Root gerekli
Tetikleyici: Apache2 başlatıldığında
Açıklama ve Sızma
/etc/apache2/httpd.conf
dosyasında bir modülü yüklemek için aşağıdaki gibi bir satır ekleyebilirsiniz:
Bu şekilde derlenmiş modülleriniz Apache tarafından yüklenecektir. Tek yapmanız gereken ya geçerli bir Apple sertifikası ile imzalamak ya da sisteme yeni güvenilir bir sertifika eklemek ve onunla imzalamak.
Ardından, gerektiğinde sunucunun başlatılacağından emin olmak için şunu yürütebilirsiniz:
Dylb için kod örneği:
BSM denetim çerçevesi
Açıklama: https://theevilbit.github.io/beyond/beyond_0031/
Kum havuzunu atlamak için kullanışlı: 🟠
Ancak root olmanız, auditd'nin çalışıyor olması ve bir uyarıya neden olmanız gerekmektedir
TCC atlatma: 🔴
Konum
/etc/security/audit_warn
Root gerekli
Tetikleyici: Auditd bir uyarı algıladığında
Açıklama ve Sızma
Auditd bir uyarı algıladığında /etc/security/audit_warn
betiği çalıştırılır. Bu nedenle kendi yükünüzü ekleyebilirsiniz.
Başlangıç Öğeleri
Bu kullanım dışıdır, bu yüzden bu dizinlerde hiçbir şey bulunmamalıdır.
StartupItem, ya /Library/StartupItems/
ya da /System/Library/StartupItems/
içinde bulunması gereken bir dizindir. Bu dizin oluşturulduğunda, içermesi gereken iki belirli dosya bulunmalıdır:
Bir rc betiği: Başlangıçta çalıştırılan bir kabuk betiği.
Çeşitli yapılandırma ayarlarını içeren, özellikle
StartupParameters.plist
adında bir plist dosyası.
Başlangıç işleminin bunları tanıması ve kullanması için hem rc betiğinin hem de StartupParameters.plist
dosyasının doğru şekilde StartupItem dizini içine yerleştirildiğinden emin olun.
emond
Bu bileşeni macOS'ta bulamıyorum, daha fazla bilgi için yazılıma bakın
Yazılım: https://theevilbit.github.io/beyond/beyond_0023/
Apple tarafından tanıtılan emond, geliştirilmemiş veya muhtemelen terkedilmiş gibi görünen bir günlükleme mekanizmasıdır, ancak hala erişilebilir durumda. Mac yöneticileri için özellikle faydalı olmasa da, bu belirsiz hizmet, tehdit aktörleri için hafif bir kalıcılık yöntemi olarak hizmet edebilir ve muhtemelen çoğu macOS yöneticisi tarafından fark edilmeyebilir.
Varlığından haberdar olanlar için, emond'un herhangi bir kötüye kullanımını tespit etmek kolaydır. Bu hizmet için sistem LaunchDaemon'ı, yürütülecek betikleri tek bir dizinde arar. Bunu incelemek için aşağıdaki komut kullanılabilir:
XQuartz
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
Konum
/opt/X11/etc/X11/xinit/privileged_startx.d
Kök izni gereklidir
Tetikleyici: XQuartz ile
Açıklama ve Sızma
XQuartz artık macOS'ta kurulu değil, bu yüzden daha fazla bilgi için yazıya bakın.
kext
Kext'i kurmak bile kök olarak oldukça karmaşıktır, bu nedenle bunu kum havuzlarından kaçmak veya kalıcılık için düşünmeyeceğim (elbette bir açık bulunmadıkça)
Konum
Bir KEXT'i başlangıç öğesi olarak kurmak için aşağıdaki konumlardan birine kurulması gerekir:
/System/Library/Extensions
OS X işletim sistemi içine yerleştirilmiş KEXT dosyaları.
/Library/Extensions
taraf yazılım tarafından kurulan KEXT dosyaları
Şu anda yüklenmiş kext dosyalarını listelemek için:
Daha fazla bilgi için çekirdek uzantıları kontrol etme bölümüne bakın.
amstoold
Açıklama: https://theevilbit.github.io/beyond/beyond_0029/
Konum
/usr/local/bin/amstoold
Root gereklidir
Açıklama ve Sömürü
Görünüşe göre /System/Library/LaunchAgents/com.apple.amstoold.plist
'den gelen plist
bu ikiliyi kullanıyordu ve bir XPC servisini açığa çıkarıyordu... sorun şu ki ikili mevcut değildi, bu yüzden bir şey yerleştirebilir ve XPC servisi çağrıldığında ikili çağrılacaktı.
Artık macOS'ta bunu bulamıyorum.
xsanctl
Açıklama: https://theevilbit.github.io/beyond/beyond_0015/
Konum
/Library/Preferences/Xsan/.xsanrc
Root gereklidir
Tetikleyici: Servis çalıştırıldığında (nadiren)
Açıklama ve sömürü
Bu betiği çalıştırmak pek yaygın değil gibi görünüyor ve macOS'ta bile bulamadım, bu yüzden daha fazla bilgi istiyorsanız yazıya bakın.
/etc/rc.common
Bu modern MacOS sürümlerinde çalışmıyor
Başlangıçta çalıştırılacak komutları buraya yerleştirmek de mümkündür. Tipik bir rc.common betiği örneği:
Kalıcılık teknikleri ve araçları
Last updated