confuzie
ce este confuzie?
Obfuscation înseamnă a face ceva greu de înțeles. Codul de programare este adesea ascuns pentru a proteja proprietatea intelectuală sau secretele comerciale și pentru a împiedica un atacator să inginerie inversă un program software proprietar.
criptarea unora sau a tuturor codurilor unui program este o metodă de confuzie. Alte abordări includ eliminarea metadatelor potențial revelatoare, înlocuirea numelor de clase și variabile cu etichete fără sens și adăugarea de cod neutilizat sau fără sens la un script de aplicație. Un instrument numit obfuscator va converti automat codul sursă simplu într-un program care funcționează la fel, dar este mai dificil de citit și de înțeles.
din păcate, scriitorii de coduri rău intenționate folosesc, de asemenea, aceste metode pentru a preveni detectarea mecanismelor lor de atac de către instrumentele antimalware. Atacul SolarWinds din 2020 este un exemplu de hackeri care folosesc obfuscarea pentru a se sustrage apărării.
tehnicile de Deobuscare pot fi folosite pentru a inversa ingineria — sau a anula — obfuscarea. Aceste tehnici includ felierea programului, care implică îngustarea codului programului la doar declarațiile relevante la un anumit punct al programului. Optimizarea compilatorului și sinteza programului sunt alte două tehnici de deobfuscare. Obfuscation își propune să facă inginerie inversă dificilă și nu merită probleme.
cum funcționează obfuscarea?
confuzia în codul computerului folosește fraze complexe de sens giratoriu și logică redundantă pentru a face codul dificil de înțeles pentru cititor. Scopul este de a distrage cititorul cu sintaxa complicată a ceea ce citesc și de a le face dificilă determinarea conținutului adevărat al mesajului.
cu codul computerului, cititorul poate fi o persoană, un dispozitiv de calcul sau un alt program. Obfuscarea este, de asemenea, utilizată pentru a păcăli instrumentele antivirus și alte programe care se bazează foarte mult pe semnăturile digitale pentru a interpreta codul. Decompilatoare sunt disponibile pentru limbi, cum ar fi Java, sisteme de operare, cum ar fi Android și iOS, și platforme de dezvoltare, cum ar fi .NET. ei pot inversa automat codul sursă inginer; obfuscation își propune să facă dificilă pentru aceste programe pentru a face decompiling lor, de asemenea.
confuzia Codului nu se referă la schimbarea conținutului codului original al unui program, ci mai degrabă la a face mai confuză metoda de livrare și prezentarea acelui cod. Obfuscarea nu modifică modul în care funcționează programul sau ieșirea sa finală.
ceea ce urmează este un exemplu de fragment de cod JavaScript normal:
var greeting = 'Hello World';greeting = 10;var product = greeting * greeting;
același fragment în formă camuflată arată astfel:
var _0x154f=;var _0x52df=function(_0x159d61,_0x12b953){_0x159d61=_0x159d61-0x122;var _0x154f4b=_0x154f;return _0x154f4b;};(function(_0x19e682,_0x2b7215){var _0x5e377c=_0x52df;while(!!){try{var _0x2d3a87=-parseInt(_0x5e377c(0x129))*parseInt(_0x5e377c(0x123))+-parseInt(_0x5e377c(0x125))*parseInt(_0x5e377c(0x12e))+parseInt(_0x5e377c(0x127))*-parseInt(_0x5e377c(0x126))+-parseInt(_0x5e377c(0x124))*-parseInt(_0x5e377c(0x12f))+-parseInt(_0x5e377c(0x128))*-parseInt(_0x5e377c(0x12b))+parseInt(_0x5e377c(0x12a))*parseInt(_0x5e377c(0x12d))+parseInt(_0x5e377c(0x12c))*parseInt(_0x5e377c(0x122));if(_0x2d3a87===_0x2b7215)break;else _0x19e682(_0x19e682());}catch(_0x22c179){_0x19e682(_0x19e682());}}}(_0x154f,0x1918c));var greeting='Hello\x20World';greeting=0xa;var product=greeting*greeting;
versiunea camuflată este aproape imposibil de urmărit folosind ochiul uman.
tehnici de confuzie
confuzie implică mai multe metode diferite. Adesea, mai multe tehnici sunt folosite pentru a crea un efect stratificat.
programele scrise în limbaje software care sunt compilate, cum ar fi C # și Java, sunt mai ușor de umbrit. Acest lucru se datorează faptului că creează instrucțiuni de nivel intermediar care sunt în general mai ușor de citit. În schimb, C++ este mai dificil de umbrit, deoarece compilează codul mașinii, ceea ce este mai dificil pentru oameni să lucreze.
unele tehnici comune de confuzie includ următoarele:
- redenumirea. Obfuscatorul modifică metodele și numele variabilelor. Noile nume pot include caractere neimprimabile sau invizibile.
- ambalare. Aceasta comprimă întregul program pentru a face codul ilizibil.
- controlul debitului. Codul decompilat este făcut să arate ca logica spaghetelor, care este nestructurată și greu de menținut codul în care linia de gândire este ascunsă. Rezultatele din acest cod nu sunt clare și este greu de spus care este punctul codului uitându-te la el.
- transformare model de instruire. Această abordare ia instrucțiuni comune create de compilator și le schimbă pentru instrucțiuni mai complexe, mai puțin obișnuite, care fac în mod eficient același lucru.
- introducerea codului fals. Codul Dummy poate fi adăugat la un program pentru a face mai greu de citit și inginerie inversă, dar nu afectează logica sau rezultatul programului.
- metadate sau eliminarea codului neutilizat. Codul și metadatele neutilizate oferă cititorului informații suplimentare despre program, la fel ca adnotările dintr-un document Word, care îi pot ajuta să îl citească și să îl depaneze. Eliminarea metadatelor și a codului neutilizat lasă cititorului mai puține informații despre program și codul acestuia.
- inserarea predicatului opac. Un predicat în cod este o expresie logică care este fie adevărată, fie falsă. Predicatele opace sunt ramuri condiționale – sau declarații if-then-în care rezultatele nu pot fi ușor determinate cu ajutorul analizei statistice. Introducerea unui predicat opac introduce un cod inutil care nu este executat niciodată, dar este încurcat pentru cititorul care încearcă să înțeleagă ieșirea decompilată.
- Anti-depanare. Inginerii software legitimi și hackerii folosesc instrumente de depanare pentru a examina codul linie cu linie. Cu aceste instrumente, inginerii software pot detecta probleme cu codul, iar hackerii le pot folosi pentru a inversa codul. Profesioniștii în securitate IT pot utiliza instrumente anti-depanare pentru a identifica când un hacker rulează un program de depanare ca parte a unui atac. Hackerii pot rula instrumente anti-depanare pentru a identifica când se utilizează un instrument de depanare pentru a identifica modificările pe care le fac codului.
- anti-manipulare. Aceste instrumente detectează codul care a fost modificat și, dacă a fost modificat, oprește programul.
- criptare șir. Această metodă utilizează criptarea pentru a ascunde șirurile din executabil și restabilește valorile numai atunci când sunt necesare pentru a rula programul. Acest lucru face dificilă parcurgerea unui program și căutarea anumitor șiruri de caractere.
- transpunerea Codului. Aceasta este reordonarea rutinelor și ramurilor din cod fără a avea un efect vizibil asupra comportamentului său.
cum se măsoară succesul de confuzie
succesul metodelor de confuzie poate fi măsurat folosind următoarele criterii:
- putere. Măsura în care codul transformat rezistă încercărilor automate de deobfuscare determină puterea. Cu cât este nevoie de mai mult efort, timp și resurse, cu atât codul este mai puternic.
- diferențiere. Gradul în care codul transformat diferă de original este o altă măsură a eficienței acestuia. Unele dintre modalitățile utilizate pentru a judeca diferențierea includ:
- numărul de predicate pe care le conține Noul Cod.
- adâncimea arborelui de moștenire (dit) – o metrică utilizată pentru a indica complexitatea codului. Un DIT mai mare înseamnă un program mai complex.
- cheltuieli. O metodă de ascundere eficientă din punct de vedere al costurilor va fi mai utilă decât una costisitoare, în special atunci când vine vorba de cât de bine se scalează pentru aplicații mai mari.
- complexitate. Cu cât mai multe straturi adaugă obfuscatorul, cu atât programul va fi mai complex, făcând obfuscarea mai reușită.
avantajele confuziei
principalele avantaje ale confuziei sunt următoarele:
- Secret. Obfuscation ascunde informațiile valoroase conținute în cod. Acesta este un avantaj pentru organizațiile legitime care doresc să protejeze codul de concurenți și atacatori. În schimb, actorii răi valorifică secretul ascunderii pentru a-și ascunde codul rău intenționat.
- eficiență. Unele tehnici de confuzie, cum ar fi eliminarea codului neutilizat, au efectul de a micșora programul și de a-l face mai puțin intensiv în resurse.
- securitate. Obfuscarea este o metodă de securitate încorporată, denumită uneori auto-protecție a aplicației. În loc să folosească o metodă de securitate externă, funcționează în ceea ce este protejat. Este potrivit pentru protejarea aplicațiilor care rulează într-un mediu de încredere și care conțin informații sensibile.
dezavantaje ale obfuscation
unul dintre principalele dezavantaje ale obfuscation este, de asemenea, este utilizat în malware. Scriitorii de Malware îl folosesc pentru a se sustrage programelor antivirus care scanează codul pentru anumite caracteristici. Prin ascunderea acestor caracteristici, malware-ul pare legitim pentru software-ul antivirus.
tehnici comune autorii malware folosesc includ:
- exclusiv sau (XOR). O operație care ascunde datele prin aplicarea valorilor XOR la cod, astfel încât numai un ochi instruit ar putea să-l decripteze.
- ROT-13. O instrucțiune care înlocuiește codul pentru caractere aleatoare.
cu confuzie, în loc de a dezvolta noi malware, autorii reambalare utilizate în mod obișnuit, metode de atac de mărfuri pentru a ascunde caracteristicile lor. În unele cazuri, actorii rău intenționați includ tehnici specifice vânzătorului.
un alt dezavantaj al confuziei este că poate face Codul mai dificil de citit. De exemplu, codul care utilizează metoda de ascundere a criptării șirului necesită decriptarea șirurilor în timpul rulării, ceea ce încetinește performanța.
Obfuscation and SolarWinds
un atac asupra SolarWinds, un producător de software de management și monitorizare IT din Austin, Texas, despre care se crede că a început încă din septembrie 2019, a dus la încălcarea altor companii și agenții guvernamentale. Atacul a fost descoperit în decembrie 2020 și este atribuit hackerilor ruși. Inițial a compromis platforma de management IT Orion a SolarWinds.
atacatorii au folosit malware-ul Sunburst, care a combinat confuzia, învățarea automată și tehnicile AI pentru a planta un backdoor în actualizările software pentru platforma Orion. Pentru a-și ascunde eforturile și a ocoli apărarea, au modificat jurnalele de audit, fișierele și programele șterse după utilizare și au falsificat activitatea pentru a face să apară ca aplicații legitime în rețea.
se suspectează că acest atac al lanțului de aprovizionare a rămas nedetectat mai mult de un an. Malware-ul introdus în codul Orion a rămas latent și ascuns până când utilizatorii au descărcat actualizările infectate. Apoi s-a răspândit prin rețea nedetectată și a infectat o lungă listă de organizații care folosesc Orion.
Obfuscation este una dintre multele tehnici pe care hackerii le folosesc pentru a intra în sistemele IT. Aflați mai multe despre apărarea împotriva diferitelor tipuri de atacuri de securitate cibernetică în Ghidul de planificare aprofundată a securității cibernetice al TechTarget.