Compania Guardicore, specializată în protejarea datacentrelor și sistemelor cloud, noul malware de înaltă tehnologie FritzFrog, care afectează serverele bazate pe Linux. FritzFrog combină un malware de tip worm care se răspândește printr-un atac bruteforce asupra serverelor cu port SSH deschis și componente pentru construirea unei botnet-uri descentralizate, care funcționează fără noduri de comandă și nu are un singur punct de eșec.
Pentru construirea botnet-ului se folosește un protocol P2P propriu, prin care nodurile interacționează între ele, coordonează organizarea atacurilor, mențin funcționarea rețelei și controlează starea unii altora. Victimele noi sunt găsite prin efectuarea atacurilor bruteforce asupra serverelor care acceptă solicitanți prin SSH. La descoperirea unui nou server, se efectuează un algoritm de căutare folosind un dicționar de combinații tipice de nume de utilizator și parole. Controlul poate fi efectuat prin orice nod, ceea ce complică identificarea și blocarea operatorilor botnet-ului.
Potrivit cercetătorilor, botnet-ul numără deja aproximativ 500 de noduri, inclusiv servere ale mai multor universități și ale unei mari companii feroviare. Se constată că principalul obiectiv al atacurilor sunt rețelele instituțiilor de învățământ, centrelor medicale, instituțiilor guvernamentale, băncilor și companiilor de telecomunicații. După compromiterea unui server, pe acesta se organizează un proces de minare a criptovalutei Monero. Activitatea acestui malware este urmărită din ianuarie 2020.
O caracteristică a FritzFrog este că păstrează toate datele și codul executabil doar în memorie. Modificările pe disc sunt reduse doar la adăugarea unei noi chei SSH în fișierul authorized_keys, care este utilizat ulterior pentru accesul la server. Fișierele de sistem nu sunt modificate, ceea ce face ca worm-ul să fie invizibil pentru sistemele care verifică integritatea prin sume de control. În memorie sunt păstrate, de asemenea, dicționare pentru spargerea parolelor și datele pentru minare, care sunt sincronizate între noduri prin intermediul protocolului P2P.
Componentele malițioase se camuflează sub procesele „ifconfig”, „libexec”, „php-fpm” și „nginx”. Nodurile botnet-ului urmăresc starea vecinilor și, în cazul unei reporniri a serverului sau chiar a reinstalării sistemului de operare (dacă fișierul authorized_keys modificat a fost transferat în noua versiune), reactivează din nou componentele malițioase de pe gazdă. Pentru comunicare se folosește SSH-ul standard — malware-ul inițiază suplimentar un „netcat” local, care se leagă de interfața localhost și ascultă traficul pe portul 1234, la care nodurile externe se conectează printr-un tunel SSH, folosind pentru conectare cheile din authorized_keys.
Codul componentelor FritzFrog este scris în limbajul Go și funcționează în mod multi-thread. Malware-ul include mai multe module, care sunt inițiate în fire separate:
- Cracker — efectuează încercări de spargere a parolelor pe serverele atacate.
- CryptoComm + Parser — organizează o conexiune P2P criptată.
- CastVotes — mecanism pentru selectarea comună a gazdelor țintă pentru atac.
- TargetFeed — obține lista nodurilor pentru atac de la nodurile adiacente.
- DeployMgmt — implementarea unui vierme care răspândește cod malițios pe serverul compromis.
- Owned — responsabil pentru conectarea la servere pe care deja rulează cod malițios.
- Assemble — adună fișierul în memorie din blocurile transmise separat.
- Antivir — modul care suprima programele malițioase concurente, identifică și închide procesele cu stringul „xmr”, care consumă resurse CPU.
- Libexec — modul pentru minarea criptovalutei Monero.
Protocolul P2P utilizat în FritzFrog suportă aproximativ 30 de comenzi, responsabile pentru transmiterea datelor între noduri, lansarea scripturilor, transferul componentelor malware-ului, interogarea stării, schimbul de loguri, inițierea proxy-urilor etc. Informațiile sunt transmise printr-un canal criptat separat cu serializare în format JSON. Pentru criptare se folosește criptarea asimetrică AES și codificarea Base64. Pentru schimbul de chei este utilizat protocolul DH (). Pentru determinarea stării, nodurile schimbă constant cereri ping.
Toate nodurile botnet-ului suportă o bază de date distribuită cu informații despre sistemele atacate și compromise. Obiectivele pentru atac sunt sincronizate în întregul botnet — fiecare nod atacă o țintă separată, adică două noduri diferite ale botnet-ului nu vor ataca aceeași gazdă. Nodurile, de asemenea, colectează și transmit către vecini statistici locale, cum ar fi dimensiunea memoriei libere, timpul de funcționare, sarcina CPU și activitatea conexiunilor SSH. Aceste informații sunt utilizate pentru a decide dacă se va lansa un proces de minerit sau dacă nodul va fi folosit doar pentru a ataca alte sisteme (de exemplu, mineritul nu este inițiat pe sistemele suprasolicitate sau pe cele cu conexiuni frecvente ale administratorului).
Pentru identificarea FritzFrog, cercetătorii au propus un simplu . Pentru a determina compromiterea sistemului
pot fi utilizate anumite semne, cum ar fi prezența unei conexiuni ascultătoare pe portul 1234, existența în authorized_keys (pe toate nodurile se instalează aceeași cheie SSH) și prezența în memorie a proceselor în execuție precum „ifconfig”, „libexec”, „php-fpm” și „nginx”, care nu au fișiere executabile asociate („/proc//exe” indică un fișier de pe un remote). De asemenea, un indiciu poate fi prezența traficului pe portul de rețea 5555, care apare atunci când malware-ul accesează pool-ul standard web.xmrpool.eu în procesul de minerit al criptomonedei Monero.
Sursa: opennet.ro
