- 10 Ağu 2019
- 985
- 17
Merhabalar, bu konuda sizlere en yaygın olarak kullanılan anti analiz tekniklerini anlattım. İyi okumalar dilerim. Anti-analiz tekniklerinin ana fikri, karşı eylem yöntemlerinin çıtasını yükseltmektir. Teorik olarak hesaplanması zor yapılardan yararlanılarak pek çok şekilde yapılabilir. Bu konuda, bu tür anti-analiz tekniklerine değineceğiz.
İçerik
Anti Analiz Nedir?
Anti-Analiz Teknikleri Neden Kullanılır?
Anti Ptrace
Anti Patching
Anti Virtual Macine
Hareket Bazlı Anti VM
Zaman Bazlı Anti VM
DLL Kontrolleri
Sanal Makine Servislerinin Kontrolü
MAC Adres Kontrolleri
Anti Breakpoint
Anti Debug
Anti Disassembly
Anti Analiz Nedir?
Anti analiz teknikleri (zararlı) yazılım geliştiricileri tarafından kullanılan, program üzerinde herhangi bir şekilde gerçekleştirilebilecek analizleri zorlaştırmayı ve engellemeyi amaçlayan tekniklerdir. Anti-analiz aqua/turkhackteam.org araçlarının dikkate değer bir örneği, sanal makine algılama ve ortam parmak izleri gibi bahsedilen algılama tekniklerinin çoğunu uygulayan bir dizi modülden oluşan pafish'dir. Aracın amacı, herhangi bir şeffaf çözüm girişimi için doğrulayıcı olarak kullanılmasının yanı sıra, pratik kötü amaçlı yazılımdan kaçınma tekniklerinin daha iyi anlaşılmasına olanak sağlamaktır.
Anti-Analiz Teknikleri Neden Kullanılır?
Bu teknikler çoğunlukla zararlı yazılım geliştiricileri tarafından kullanılır. Piyasaya sürdükleri zararlı yazılımın tespitinin zorlaştırılması, daha uzun süre piyasada kalıp daha fazla kişiyi enfekte etmesi, üzerinde uygulanabilecek tersihe mühendislik işlemlerinin engellenmesi gibi zararlı yazılımın türüne göre değişilik gösteren kullanım amaçları bulunmaktadır. En çok kullanılan OllyDbg, Ollydump, Ollyscript ve benzeri popüler programların aracılığıyla yazılımların analiz edilmesini engellemek hedeflenmektedir.
Anti Ptrace
Zararlı yazılım analizlerinde kullanılan en popüler ve etkili yöntemlerden biri ise debugging yöntemidir. Debugging yönteminde kullanılan register değerlerini değiştirme, bellek alanları ve değerlerini inceleme, dissassemble gibi olanaklar sunan programlara debugger adı verlimektedir. Yazılımların üzerinde bu kadar değişiklik yapmamızı sağlayan asıl işlem arkada dönen process tracing'dir ve işlem takibi olarak da adlandırılmaktadır. Linux sistemlerde ise process tracing aqua/turkhackteam.org işlemleri sistemlerde bulunan ptrace çağrısı ile gerçekleşmektedir. Yani linux sistemlerde kullanılan ghidra, gdb gibi debugger programları bu işlemleri ptrace aracılığıyla çalışmaktadır. Asıl önemli olan konu ise bir programın eş aqua/turkhackteam.org zamanlı olarak sadece bir işlem tarafından takip edilebilmesidir ve takip istekleri programın ana sisteme TRACME çağrısı yollayarak kendisinin takip edilebilmesini sağlamasıyla gerçekleşir. Ancak programlarda bulunan anti-ptrace'ler ise programın çalıştırılma sırasında bu çağrıyı yollar ve eğer başarısız olursa debugger kullanıldığını anlayabilirler. Aşağıda bulunan kodu incelediğimizde ise programın TRACME çağrısı gönderip olumsuz sonuç alırsa beni takip etme çıktısı verdiğini görebiliyoruz.
Anti Patching
Zararlı yazılım analistleri inceleyecekleri programlardan bazı yerleri çıkartabilir ya da üzerlerinde değişiklik yapabilirler. Bu yapmış oldukları işleme patching adı verilmektedir ve binary modification olarak da bilinmektedir. Her programın chechksum değerleri bulunmaktadır ve bu değerler program içerisindeki herhangi bir değişiklik olursa değişmektedir. Bu veriler genellikle "static char" ismini verdiğimiz değişkende tutulmaktadır. Ek olarak chechksum değerleri debugger programları aracılığıyla ya da opcode ismini verdiğimiz değerlerin incelenmesi ve toplanmasıyla tespit edilebilir. Anti pathcer programları eğer checksum değerlerinde bir değişiklik gerçekleşirse programın patch edildiğini anlayabilir.
Anti Virtual Macine
En popüler anti analiz tekniklerinden biridir. Zararlı yazılım analistleri programın çalıştırmaları gereken analizler sırasında ana makinelerine ve ağlarına zarar vermesini engellemek açısından bu programları sanal makine ve cihazlarda çalıştırmaktadırlar. Zararlı yazılımları sanal ortamlarda çalıştırdıklarında gerekli konfigürasyonların da yapılması ile beraber sistem ana makine ve ağ ile soyutlanır böylece programın verebileceği zararlar minimum seviyeye indirilmeye çalışılır. Ancak bu zararlı yazılımlar sanal ortamlarda çalıştırıldıklarını anlayabilir ve buna göre farklı bir hareket sergileyebilirler.
Hareket Bazlı Anti VM
Sanal makinelerden çok sandbox platformlarının tespiti için kullanılan bir yöntemdir. Zararlı yazılım mouse hareketlerini ve clicklerini inceleyerek belirli sonuçlara ulaşır.
Zaman Bazlı Anti VM
Bazı zararlı yazılım geliştiricleri zararlı yazılımları belirli zaman aralıkları ya da durumlarda çalışmaları için konfigüre edebilir. Buna örnek olarak bir cihaza indirilen ve çalıştırılan zararlı yazılımın belki de 1 sene sonra aktif hale gelip işlem yapacağı verilebilir.
DLL Kontrolleri
Zararlı yazılımlar cihaz üzerinde aktif olarak kullanılan dll paketlerini tespit edip sanal makine ortamında çalıştırıldığını tespit edebilir. Aşağıda bulunan listede sanal makinelerde bulunan dll'leri inceleyebilirsiniz.
Sanal Makine Servislerinin Kontrolü
Sanal makineler üzerinde bulunan toollar ne kadar konfor sağlasa da zararlı yazılım analizleri sırasında olumsuz etkileri bulunabilir. Çalıştırılan zararlı yazılım herhangi bir sanal makine servisinin ya da programının aqua/turkhackteam.org çalıştığını tespit edebilmektedir. Aşağıdaki listeden bu servislerin birkaçına ulaşabilirsiniz.
Sanal makinelerin kendilerine özel ürettikleri mac adresleri vardır. MAC adreslerinin yapılarından da anlaşılabileceği üzere ilk üç ikili şirketi temsil etmektedir. Zararlı yazılımlar ise bu hanelere göre sanal makine içerisinde olduklarını tespit edebilirler.
Anti Breakpoint
Zararlı yazılım analistleri debug işlemleri sırasında belirli noktalara breakpoint yani kırılma noktaları koyarak programın orada durmasını sağlar ve programı öyle incelerler. Arkaplanda bellek içerisinde genellikle breakpointlerin olacağı yerlere 0xCC konur. Anti breakpoint programları ise bütün belleği tarayıp içeride bu değerin olup olmadığını inceler.
Anti Debug
Birçok anti debug yöntemi bulunsa da en basitlerinden bir tanesi programın aktif olarak kullanılan API'leri incelemesidir. Bunun yanında program PEB yapılarını da inceleyerek debbugger kullanımını tespit edebilir. Zararlı yazılımlar tarafından oldukça yaygın olarak kullanılan kernel modunda çalışan debugger tespitleri için kullanılan bir teknik uygulama çeşidir. Genellikle kernel32!CreateFile() komutu ile kernel içerisinde çağrı oluşturarak SoftICE gibi popüler kernel debugger adlarının tespiti gerçekleştirilmeye çalışılır.
Anti Disassembly
Sizlerin de artık bildiği üzere statik analiz sırasında assembly işlemleri çok önemlidir. Ancak zararlı yazılım yazan kişiler bu işlemleri engellemek amacıyla kodların içerisine belirli kod parçaları yerleştirerek okumamızı ve anlamamızı engellemeye çalışır. Bu kod parçalarının içeriği aqua/turkhackteam.org genellikle gereksiz ve sırf oyalamak amaçlıdır. Örnek olarak bir zararlı yazılım analistinin analize gereksiz kodlar ile başlayıp zaman kaybetmesi verilebilir. Ek aqua/turkhackteam.org olarak zararlı yazılımlar bazı APIleri kullanarak klavye ve mouse kullanımını geçici olarak engelleyebilir. Örn: user32!BlockInput()
İçerik
Anti Analiz Nedir?
Anti-Analiz Teknikleri Neden Kullanılır?
Anti Ptrace
Anti Patching
Anti Virtual Macine
Hareket Bazlı Anti VM
Zaman Bazlı Anti VM
DLL Kontrolleri
Sanal Makine Servislerinin Kontrolü
MAC Adres Kontrolleri
Anti Breakpoint
Anti Debug
Anti Disassembly
Anti Analiz Nedir?
Anti analiz teknikleri (zararlı) yazılım geliştiricileri tarafından kullanılan, program üzerinde herhangi bir şekilde gerçekleştirilebilecek analizleri zorlaştırmayı ve engellemeyi amaçlayan tekniklerdir. Anti-analiz aqua/turkhackteam.org araçlarının dikkate değer bir örneği, sanal makine algılama ve ortam parmak izleri gibi bahsedilen algılama tekniklerinin çoğunu uygulayan bir dizi modülden oluşan pafish'dir. Aracın amacı, herhangi bir şeffaf çözüm girişimi için doğrulayıcı olarak kullanılmasının yanı sıra, pratik kötü amaçlı yazılımdan kaçınma tekniklerinin daha iyi anlaşılmasına olanak sağlamaktır.
Anti-Analiz Teknikleri Neden Kullanılır?
Bu teknikler çoğunlukla zararlı yazılım geliştiricileri tarafından kullanılır. Piyasaya sürdükleri zararlı yazılımın tespitinin zorlaştırılması, daha uzun süre piyasada kalıp daha fazla kişiyi enfekte etmesi, üzerinde uygulanabilecek tersihe mühendislik işlemlerinin engellenmesi gibi zararlı yazılımın türüne göre değişilik gösteren kullanım amaçları bulunmaktadır. En çok kullanılan OllyDbg, Ollydump, Ollyscript ve benzeri popüler programların aracılığıyla yazılımların analiz edilmesini engellemek hedeflenmektedir.
Anti Ptrace
Zararlı yazılım analizlerinde kullanılan en popüler ve etkili yöntemlerden biri ise debugging yöntemidir. Debugging yönteminde kullanılan register değerlerini değiştirme, bellek alanları ve değerlerini inceleme, dissassemble gibi olanaklar sunan programlara debugger adı verlimektedir. Yazılımların üzerinde bu kadar değişiklik yapmamızı sağlayan asıl işlem arkada dönen process tracing'dir ve işlem takibi olarak da adlandırılmaktadır. Linux sistemlerde ise process tracing aqua/turkhackteam.org işlemleri sistemlerde bulunan ptrace çağrısı ile gerçekleşmektedir. Yani linux sistemlerde kullanılan ghidra, gdb gibi debugger programları bu işlemleri ptrace aracılığıyla çalışmaktadır. Asıl önemli olan konu ise bir programın eş aqua/turkhackteam.org zamanlı olarak sadece bir işlem tarafından takip edilebilmesidir ve takip istekleri programın ana sisteme TRACME çağrısı yollayarak kendisinin takip edilebilmesini sağlamasıyla gerçekleşir. Ancak programlarda bulunan anti-ptrace'ler ise programın çalıştırılma sırasında bu çağrıyı yollar ve eğer başarısız olursa debugger kullanıldığını anlayabilirler. Aşağıda bulunan kodu incelediğimizde ise programın TRACME çağrısı gönderip olumsuz sonuç alırsa beni takip etme çıktısı verdiğini görebiliyoruz.
Anti Patching
Zararlı yazılım analistleri inceleyecekleri programlardan bazı yerleri çıkartabilir ya da üzerlerinde değişiklik yapabilirler. Bu yapmış oldukları işleme patching adı verilmektedir ve binary modification olarak da bilinmektedir. Her programın chechksum değerleri bulunmaktadır ve bu değerler program içerisindeki herhangi bir değişiklik olursa değişmektedir. Bu veriler genellikle "static char" ismini verdiğimiz değişkende tutulmaktadır. Ek olarak chechksum değerleri debugger programları aracılığıyla ya da opcode ismini verdiğimiz değerlerin incelenmesi ve toplanmasıyla tespit edilebilir. Anti pathcer programları eğer checksum değerlerinde bir değişiklik gerçekleşirse programın patch edildiğini anlayabilir.
Anti Virtual Macine
En popüler anti analiz tekniklerinden biridir. Zararlı yazılım analistleri programın çalıştırmaları gereken analizler sırasında ana makinelerine ve ağlarına zarar vermesini engellemek açısından bu programları sanal makine ve cihazlarda çalıştırmaktadırlar. Zararlı yazılımları sanal ortamlarda çalıştırdıklarında gerekli konfigürasyonların da yapılması ile beraber sistem ana makine ve ağ ile soyutlanır böylece programın verebileceği zararlar minimum seviyeye indirilmeye çalışılır. Ancak bu zararlı yazılımlar sanal ortamlarda çalıştırıldıklarını anlayabilir ve buna göre farklı bir hareket sergileyebilirler.
Hareket Bazlı Anti VM
Sanal makinelerden çok sandbox platformlarının tespiti için kullanılan bir yöntemdir. Zararlı yazılım mouse hareketlerini ve clicklerini inceleyerek belirli sonuçlara ulaşır.
Zaman Bazlı Anti VM
Bazı zararlı yazılım geliştiricleri zararlı yazılımları belirli zaman aralıkları ya da durumlarda çalışmaları için konfigüre edebilir. Buna örnek olarak bir cihaza indirilen ve çalıştırılan zararlı yazılımın belki de 1 sene sonra aktif hale gelip işlem yapacağı verilebilir.
DLL Kontrolleri
Zararlı yazılımlar cihaz üzerinde aktif olarak kullanılan dll paketlerini tespit edip sanal makine ortamında çalıştırıldığını tespit edebilir. Aşağıda bulunan listede sanal makinelerde bulunan dll'leri inceleyebilirsiniz.
VirtualBox
C:\windows\System32\vboxoglpackspu.dll
C:\windows\System32\vboxoglpassthroughspu.dll
C:\windows\System32\vboxservice.exe
C:\windows\System32\Drivers\VBoxGuest.sys
C:\windows\System32\Drivers\VBoxSF.sys
C:\windows\System32\Drivers\VBoxVideo.sys
C:\windows\System32\vboxoglcrutil.dll
C:\windows\System32\vboxoglerrorspu.dll
C:\windows\System32\vboxoglfeedbackspu.dll
C:\windows\System32\vboxdisp.dll
C:\windows\System32\vboxhook.dll
C:\windows\System32\vboxmrxnp.dll
C:\windows\System32\vboxogl.dll
C:\windows\System32\vboxoglarrayspu.dll
C:\windows\System32\vboxtray.exe
C:\windows\System32\VBoxControl.exe
C:\windows\System32\Drivers\VBoxMouse.sys
VMWare
C:\windows\System32\Drivers\vmtray.dll
C:\windows\System32\Drivers\VMToolsHook.dll
C:\windows\System32\Drivers\vmmousever.dll
C:\windows\System32\Drivers\vmhgfs.dll
C:\windows\System32\Drivers\Vmmouse.sys
C:\windows\System32\Drivers\mv3dgl.dll
C:\windows\System32\Drivers\vmdum.dll
C:\windows\System32\Drivers\vmGuestLib.dll
C:\windows\System32\Drivers\vmGuestLibJava.dll
C:\windows\System32\Drivers\vmhgfs.dll
C:\windows\System32\Drivers\vm3dver.dll
Sanal makineler üzerinde bulunan toollar ne kadar konfor sağlasa da zararlı yazılım analizleri sırasında olumsuz etkileri bulunabilir. Çalıştırılan zararlı yazılım herhangi bir sanal makine servisinin ya da programının aqua/turkhackteam.org çalıştığını tespit edebilmektedir. Aşağıdaki listeden bu servislerin birkaçına ulaşabilirsiniz.
MAC Adres Kontrolleri
Vmrawdsk
Vmhgfs
Vmscsi
Vmvss
Vmxnet
vmx_svga
VMMEMCTL
Vmusbmouse
VMTools
Vmmouse
Vmware Tools
Vmware Physical Disk Helper Service
Sanal makinelerin kendilerine özel ürettikleri mac adresleri vardır. MAC adreslerinin yapılarından da anlaşılabileceği üzere ilk üç ikili şirketi temsil etmektedir. Zararlı yazılımlar ise bu hanelere göre sanal makine içerisinde olduklarını tespit edebilirler.
Anti Breakpoint
Zararlı yazılım analistleri debug işlemleri sırasında belirli noktalara breakpoint yani kırılma noktaları koyarak programın orada durmasını sağlar ve programı öyle incelerler. Arkaplanda bellek içerisinde genellikle breakpointlerin olacağı yerlere 0xCC konur. Anti breakpoint programları ise bütün belleği tarayıp içeride bu değerin olup olmadığını inceler.
Anti Debug
Birçok anti debug yöntemi bulunsa da en basitlerinden bir tanesi programın aktif olarak kullanılan API'leri incelemesidir. Bunun yanında program PEB yapılarını da inceleyerek debbugger kullanımını tespit edebilir. Zararlı yazılımlar tarafından oldukça yaygın olarak kullanılan kernel modunda çalışan debugger tespitleri için kullanılan bir teknik uygulama çeşidir. Genellikle kernel32!CreateFile() komutu ile kernel içerisinde çağrı oluşturarak SoftICE gibi popüler kernel debugger adlarının tespiti gerçekleştirilmeye çalışılır.
Anti Disassembly
Sizlerin de artık bildiği üzere statik analiz sırasında assembly işlemleri çok önemlidir. Ancak zararlı yazılım yazan kişiler bu işlemleri engellemek amacıyla kodların içerisine belirli kod parçaları yerleştirerek okumamızı ve anlamamızı engellemeye çalışır. Bu kod parçalarının içeriği aqua/turkhackteam.org genellikle gereksiz ve sırf oyalamak amaçlıdır. Örnek olarak bir zararlı yazılım analistinin analize gereksiz kodlar ile başlayıp zaman kaybetmesi verilebilir. Ek aqua/turkhackteam.org olarak zararlı yazılımlar bazı APIleri kullanarak klavye ve mouse kullanımını geçici olarak engelleyebilir. Örn: user32!BlockInput()