Mac OS X Sistemlerde Audit Log Analizi

Mac OS X Sistemlerde Audit Log Analizi
[EXHIBIT_A] Featured evidence

Mac OS X tabanlı sistemlerde meydana gelen olayların loglandığı ve bir adli bilişim incelemesinde mutlaka analiz edilmesi gereken dosyalardır audit dosyaları. Bu dosyalar Sun tarafından geliştirilen Basic Security Module formatında dosyalar olup ikili formattadır. BSM formatı hakkında detaylı bilgiye https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/audit.log.5.html adresinden ulaşabilirsiniz. Bir Mac OS X tabanlı sistemde log dosyaları /private/var/audit dizininde saklanır. Aşağıdaki ekran görüntüsünde örnek bir Mac OS X sistemde yer alan audit log dosyaları gösterilmiştir.

exhibit_viewer.exe
Screen Shot 2014-03-25 at 10.54.21
[EXHIBIT] Screen Shot 2014-03-25 at 10.54.21

Yukarıdaki ekran görüntüsünde sonu crash_recovery olarak biten audit log dosyalarını da görüyorsunuz. Bu dosyalar sistemin crash olması sonrasında kurtarılan audit dosyalarıdır. Bunun haricinde uzantısı tarih formatında olan dosyalar ise auditd prosesi tarafından normal şekilde sonlandırılmış audit dosyalarıdır. Bu dosyaların isim formatları log_dosyasının_baslangıc_zamanı.log_dosyasının_bitis_zamanı şeklindedir.

exhibit_viewer.exe
Screen Shot 2014-03-25 at 11.02.17
[EXHIBIT] Screen Shot 2014-03-25 at 11.02.17

Auditd deamon’u /etc/security/audit_control dosyasındaki tanımlar çerçevesinde olayları loglar. Bu dosyaya ilişkin örnek bir içerik aşağıda gösterilmiştir.

exhibit_viewer.exe
Screen Shot 2014-03-25 at 11.19.13
[EXHIBIT] Screen Shot 2014-03-25 at 11.19.13

dir değişkeni ile audit dosyalarının nereye kaydedileceği belirlenirken flags değişkeni ile hangi olayların loglanacağı belirlenir. Flags değişkeninde iki harfle belirtilen olayların neler olabileceğine ilişkin liste aşağıda gösterilmiştir.

no = no_class – Null value for turning off event preselection
fr = file_read – Read of data, open for reading
fw = file_write – Write of data, open for writing
fa = file_attr_acc – Access of file attributes: stat, pathconf
fm = file_attr_mod – Change of file attributes: chown, chmod, flock
fc = file_creation – Creation of file
fd = file_deletion – Deletion of file
cl = file_close – File being closed after reading or writing
pc = process – Process operations: fork, exec, exit
nt = network – Network events: bind, connect, accept
ip = ipc – System V IPC operations
na = non_attrib – Nonattributable events
ad = administrative – Administrative actions
lo = login_logout – Login and logout events
ap = application – Application-defined event
io = ioctl – ioctl system call
ex = exec – program execution
to = other – Miscellaneous
all = all – All flags set

Bununla birlikte iki harfle gösterilen loglanacak olay kategorilerinin başında yer alan işaretlerin de bir anlamı var. Bu işaretlerin ne anlama geldiğini aşağıdaki listede bulabilirsiniz.

  • (none) : Başarılı ve başarısız bütün olayları kaydet.
  • + : Başarılı olayları kaydet.
  • : Başarısız olayları kaydet.
  • ^ : Başarılı yada başarısız hiç bir olayı kaydetme.
  • ^+:Başarılı olayları kaydetme.
  • ^– : Başarısız olayları kaydetme.

Bu bilgiler ışığında yukarıdaki ekran görüntüsünde yer alan flags değişkenini okursak, ilgili sistem üzerinde login_logout ve administrative türündeki bütün olaylar loglanacak, bütün kategorilere ilişkin başarısız olaylar kaydedilecek, dosyaların özelliklerine erişimlerde, dosya oluşturmada ve dosyaların kapatılmasında sadece başarılı olaylar loglanacak şekilde tanım yapıldığını görürüz. minfree değişkeni sabit diskte minimum ne kadarlık alanın (yüzde olarak) boş kalması gerektiğini belirtir. Bu değer özellikle log dosyalarının sabit diski doldrmasının önüne geçmek adına önemlidir. Bu değere ulaşılırsa sistemin ne yapacağını /etc/security/audit_warn dosyasındaki tanımlar belirler.

Audit dosyaları ikili formatta oldukları için bu dosyaların içeriğini okumak için bir text editörle değil, özel geliştirilmiş araçlara ihtiyaç duyarız. Bu araçların başında Mac OS X ile birlikte gelen ve konsol üzerinden çalıştırılan praudit uygulaması gelir. Örnek kullanımı aşağıda gösterilmiştir.

exhibit_viewer.exe
Screen Shot 2014-03-25 at 15.32.48
[EXHIBIT] Screen Shot 2014-03-25 at 15.32.48

Bu uygulamanın çıktısında her biri header ile başlayan ve trailer ile biten kayıtları görürsünüz. Header ile gösterilen satırda olayın ne zaman gerçekleştiği bilgisi yer alırken, subject kısmında olayın hangi kullanıcı tarafından gerçekleştirildiği ve kullanıcı işlemi uzaktan gerçekleştirmişse işlemin gerçekleştirildiği IP adresi bilgisi bulunur. Text kısmında olay ile alakalı açıklayıcı bilgiler yer alırken, return kısmında olayın başarılı bir şekilde gerçekleşip gerçekleşmediği gösterilir. Burada yer alan alanlar hakkında detaylı bilgiye https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/audit.log.5.html adresinden ulaşabilirsiniz.

Audit kayıtları arasında gezinmeye başladığınızda çok fazla olayın olduğunu ve bu olaylar arasında filtreleme yapmanın analiz işleminin süresini ciddi oranda kısaltacağını fark edeceksiniz. İşte bu ihtiyacı karşılama için kullanabileceğimiz bir uygulamamız daha var. auditreduce isimli bu uygulamayı kullanarak sadece belirli kriterlere uyan olayların görüntülenmesini sağlayabiliriz. Bu uygulamada kullanabileceğimiz parametreler ve örnek bir kullanımı aşağıdaki ekran görüntüsünde gösterilmiştir.

exhibit_viewer.exe
Screen Shot 2014-03-25 at 16.25.13
[EXHIBIT] Screen Shot 2014-03-25 at 16.25.13

Yukarıdaki örneğimizde auditreduce uygulaması sadece halilozturkci isimli kullanıcıya ilişkin olayların görüntülenmesini sağlayacak şekilde çalıştırılmış ve çıktısı praudit uygulamasına girdi olarak verilmiştir. Bu sayede geçmiş olaylar üzerinde bir filtrelem işlemi gerçekleştirebilirsiniz.

Praudit uygulaması ile gerçek zamanlı olarak da logları izleyebilirsiniz. Bunun için çalıştırmanız gereken komut aşağıda gösterilmiştir.

praudit /dev/auditpipe

Audit loglarını analiz etmek için kullanabileceğimiz grafik arayüzlü bir uygulamamız daha var. Fakat bu uygulama built-in gelen bir uygulama değil, ayrıca satın alınması gereken bir uygulama. Uygulamanın adı Audit Explorer ve fiyatı 1,79 TL. https://itunes.apple.com/tr/app/audit-explorer/id429353921?mt=12 adresinden indirilebilir. Uygulamayı indirdikten sonra File menüsünden Open BSM File seçeneğini seçip audit dosyasını gösteriyoruz. Dosyayı okumaya başlayan uygulama farklı kategorilere göre bu dosyanın içeriği ayırıyor ve her bir kategoriye ilişkin olayı o kategoriye ilişkin taba tıklandığında karşımıza çıkacak ekranda gösteriyor. Aşağıda örnek bir BSM dosyası üzerinde yapılan analize ilişkin ekran görüntüsü yer almaktadır.

exhibit_viewer.exe
Screen Shot 2014-03-26 at 10.40.33
[EXHIBIT] Screen Shot 2014-03-26 at 10.40.33

Yukarıdaki ekran görüntüsünde BSM dosyasında yer alan ve ilgili Mac OS X’de çalıştırılan proseslere ilişkin kayıtlar listelenmiştir. Bu kayıtlardan örnek olarak seçilen kayda çift tıklayarak aşağıda örneği gösterilen detay penceresini açıyoruz.

exhibit_viewer.exe
Screen Shot 2014-03-26 at 10.40.29
[EXHIBIT] Screen Shot 2014-03-26 at 10.40.29

Bu detay penceresinde ilgili olaya ilişkin daha dataylı bilgiler yer alıyor. Bizim örneğimizde incelediğimiz BSM dosyası bir APT saldırısına bulaştığı şüphelenilen bir kullanıcının bilgisayarından alınmış bir BSM dosyası. Seçtiğimiz olayın detaylarını incelediğimizde bob isimli kullanıcının 22 Mart 2011 tarihinde saat 03:23:24′de cp /Users/bob/Documents/PacFleet/OperationPlan.pages OperationPlan.pages komutunu çalıştırarak /Users/bob/Documents/PacFleet/OperationPlan.pages isimli dosyayı /Users/bob/.transfers/ isimli gizli dizin altına OperationPlan.pages ismiyle kopyaladığını görebiliyoruz.

AUTHOR
Halil Öztürkci

Halil Öztürkci

Cybersecurity expert with 25 years of hands-on experience across the full attack-defense spectrum.

I've spent my career on both sides of the battlefield—investigating breaches through digital forensics, hunting APT groups through threat intelligence, building and leading security operations, dissecting malware, and executing red team engagements. Now I'm focused on the next frontier: LLM security, AI red teaming, and building secure AI/ML pipelines.

From incident response to adversary simulation, from SOC architecture to AI-powered threat detection—I decode complex security challenges and translate them into actionable defense.

enjoyed this? get more like it.