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 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.
Alıntı:
Vmrawdsk
Vmhgfs
Vmscsi
Vmvss
Vmxnet
vmx_svga
VMMEMCTL
Vmusbmouse
VMTools
Vmmouse
Vmware Tools
Vmware Physical Disk Helper Service
MAC Adres Kontrolleri
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ý API?leri 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.
Alıntı:
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
Alıntı:
Sanal Makine Servislerinin Kontrolü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
Alıntı:
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
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.
Alıntı:
Vmrawdsk
Vmhgfs
Vmscsi
Vmvss
Vmxnet
vmx_svga
VMMEMCTL
Vmusbmouse
VMTools
Vmmouse
Vmware Tools
Vmware Physical Disk Helper Service
MAC Adres Kontrolleri
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ý API?leri kullanarak klavye ve mouse kullanýmýný geçici olarak engelleyebilir. Örn: user32!BlockInput()
