Introduzione

Il Cyber Threat Defence Center di Almaviva ha individuato una campagna fraudolenta nell’ambito del settore sanitario, volta a promuovere prodotti non certificati o non autorizzati come presunte soluzioni farmaceutiche miracolose per diverse patologie. Per rafforzarne la credibilità, sono stati utilizzati riferimenti a enti istituzionali e sanitari, nonché l’immagine di personaggi pubblici italiani e stranieri in qualità di testimonial e imitando l’aspetto di siti di notizie legittimi.

La finalità della campagna è la raccolta massiva di numeri di telefono, presumibilmente finalizzata alla costruzione di database per campagne future di truffe telefoniche.

Alla luce di quanto appreso abbiamo classificato la campagna come malvertising con fini di scam pharming, con tecniche di brand abuse, vip endorsement fraud e visual impersonation.

Sono coinvolte le principali organizzazioni e istituzioni italiane:

  • Università
  • Gruppi Ospedalieri privati
  • Ministeri
  • Emittenti radiotelevisive
  • Quotidiani

La minaccia, attribuita al threat actor identificato con il nome Leonka, sfrutta una combinazione di tecniche evolute modificando dinamicamente il contenuto delle inserzioni, il quale si aggiorna in base alla localizzazione dell’utente: lingua del browser, dispositivo utilizzato e geolocalizzazione.

Questa capacità di adattamento consente alla campagna di massimizzare la sua efficacia simulando contesti locali, sfruttando testimonial noti e loghi istituzionali per conferirne legittimità.

Tali contenuti vengono veicolati tramite MGID, una piattaforma pubblicitaria di origine ucraina che risulta coinvolta, probabilmente in modo inconsapevole, come vettore tecnico della distribuzione degli annunci malevoli.

La minaccia transita infatti attraverso MGID e raggiunge gli utenti finali tramite siti web con cui la piattaforma ha presumibilmente rapporti commerciali.

Tali siti web includono portali di notizie nazionali e locali, siti di finanza, piattaforme di e-commerce, portali meteo, forum, siti di intrattenimento e sport, nonché portali dedicati a salute, lifestyle e tecnologia. In Italia, l’analisi di tali siti ha evidenziato un traffico stimato complessivo di oltre 220 milioni di visite mensili, con una esposizione potenziale di 20-25 milioni di utenti unici ogni mese, vittime inconsapevoli di una frode su vasta scala. La varietà e diffusione dei domini coinvolti confermano la portata estesa e trasversale della campagna malevola nel contesto nazionale.

L’analisi delle infrastrutture digitali coinvolte ha evidenziato il ricorso a domini temporanei e tecniche di tracciamento automatizzato, con un orientamento marcato verso target russofoni in Europa.

Rapporto tecnico

Infrastruttura tecnica

L’infrastruttura è composta da domini e servizi web che presentano le seguenti caratteristiche:

  • Top-Level Domains (TLD) a basso costo, con ridotti controlli in fase di registrazione ed elevata disponibilità 1
  • Utilizzo di servizi di privacy WHOIS per anonimizzare le informazioni dei dati identificativi di chi ha registrato il dominio.
  • Utilizzo di servizi Cloudflare per la protezione dell’infrastruttura.
  • Configurazione essenziale, con l’omissione, ad esempio, di misure di sicurezza come DNSSEC.

Il codice JavaScript è suddiviso in moduli (chunks) importati dinamicamente e offuscati, e commentato in lingua russa, di cui di seguito alcuni esempi:

if(o.querySelector(".spinner-wrapper"))
  return console.warn("Прелоадер уже существует в этом контейнере!"), ...
...
console.warn("Прелоадер уже удалён!");
  • "Прелоадер уже существует в этом контейнере!" (Il preloader esiste già in questo container!)
  • "Прелоадер уже удалён!" (Il preloader è già stato rimosso!)

Osservando il contenuto delle pagine HTML si è rilevata una corrispondenza con strumenti di phishing automatizzato quali BlackPhish, 16Shop e InfinityLoader, alcuni dei quali realizzati presumibilmente nella Federazione Russa.

Nella catena operativa dell’attacco sono implementate diverse tecniche avanzate di elusione e raccolta dati, tra cui:

  • Fingerprinting: raccolta di informazioni sul dispositivo e browser della vittima;
  • Redirect condizionato: reindirizzamenti basati su parametri specifici per sfuggire a sandbox e analisi automatiche;
  • Cloaking: mascheramento dei contenuti dannosi per ingannare i sistemi di sicurezza;
  • Backfixing: manipolazione della cronologia del browser per simulare una navigazione legittima.

Tali tecniche rendono più complessa l’analisi dinamica e allo stesso tempo contribuiscono a rendere l’attività malevola coerente con il comportamento atteso da un servizio legittimo, ingannando così l’utente vittima.

Al termine del flusso fraudolento, viene richiesto all’utente di inserire nome, cognome e numero di telefono.

I dati raccolti vengono trasmessi cifrati al backend tramite una singola richiesta HTTP POST, senza che vi siano ulteriori interazioni con l’utente. Questa modalità operativa, più semplificata rispetto a quanto osservato in altre campagne, lascia intendere che la finalità primaria sia probabilmente la raccolta di numeri di telefono per la costruzione di un database da utilizzare in campagne future. 2

Un esempio di richiesta POST utilizzata per la raccolta dati è la seguente:

POST /api/v2/offer-flows/e47f7112-8c54-4d62-8ccb-3974ffa03ec3/orders HTTP/1.1
Host: zypheron.info
Content-Type: application/json
Body: {"click_id":"281vi1i.354.5j6sr","price_id":355,"name":"Nome Cognome","raw_phone":"123456789"}

Il codice JavaScript delle pagine e dei chunks è stato deoffuscato, permettendo di ricostruire l’elenco delle combinazioni “localizzazione” e “posizione geografica” impiegate per adattare dinamicamente i brand e gli enti abusati in base alla vittima:

Codice Lingua Paese
az-AZ Azerbaigiano Azerbaigian
ar-IQ Arabo Iraq
en-KE Inglese Kenya
en-NG Inglese Nigeria
ru-RU Russo Federazione Russa
ru-TJ Russo Tagikistan
ru-UZ Russo Uzbekistan
ru-KZ Russo Kazakistan
ru-BY Russo Bielorussia
ru-AT Russo Austria
ru-DE Russo Germania
ru-GR Russo Grecia
ru-HU Russo Ungheria
ru-ES Russo Spagna
ru-EE Russo Estonia
ru-HR Russo Croazia
ru-IT Russo Italia
ru-CY Russo Cipro
ru-LV Russo Lettonia
ru-LT Russo Lituania
ru-FR Russo Francia
ru-PL Russo Polonia
ru-PT Russo Portogallo
ru-RO Russo Romania
ru-SK Russo Slovacchia
ru-SI Russo Slovenia
ru-CZ Russo Cechia
ru-BG Russo Bulgaria
ru-KG Russo Kirghizistan
de-DE Tedesco Germania
de-AT Tedesco Austria
fr-BE Francese Belgio
es-ES Spagnolo Spagna
es-MX Spagnolo Messico
es-GT Spagnolo Guatemala
es-CL Spagnolo Cile
it-IT Italiano Italia
pt-PT Portoghese Portogallo
pl-PL Polacco Polonia
cs-CZ Ceco Cechia
bg-BG Bulgaro Bulgaria
hr-HR Croato Croazia
hu-HU Ungherese Ungheria
ro-RO Romeno Romania
sk-SK Slovacco Slovacchia
sl-SI Sloveno Slovenia
sr-RS Serbo Serbia
hy-AM Armeno Armenia
bn-BD Bengalese Bangladesh
el-GR Greco Grecia
ka-GE Georgiano Georgia
lv-LV Lettone Lettonia
lt-LT Lituano Lituania
tr-TR Turco Turchia
sv-SE Svedese Svezia
et-EE Estone Estonia

Questa distribuzione evidenzia una strategia di attacco rivolta a utenti russofoni, residenti sia in paesi post-sovietici che in Stati membri dell’Unione Europea. Per queste comunità la lingua russa rappresenta spesso il principale strumento di comunicazione che il threat actor sfrutta per veicolare in maniera più diretta ed efficiente la campagna.

Vi sono state evidenze che riguardano threat actor russi che prendono di mira utenti russofoni: un esempio è rappresentato dal gruppo Hive0117, che nell’aprile 2025 ha condotto campagne di phishing rivolte a connazionali in concomitanza con festività nazionali russe.

È stata inoltre rilevata la lista completa degli enti nazionali ed internazionali vittima di Brand Abuse che vengono sfruttate come finte sponsorizzazioni al fine di dare credibilità alla notizia. Di seguito l’evidenza del frammento di codice che carica gli opportuni loghi:

h(), s=i(() => d.value.country.code), m = ["/images/brands/global/world-health-organisation.svg",
"fimages/brands/global/msd.png", "/images/brands/global/bayer.svg"], p={
"/images/brands/it/medic-talia.png": ["IT"],
"/images/brands/it/alma-mater-studiorun.png": ["IT"],
"/images/brands/it/gruppo-san-donato.svg" ["IT"],
"/images/brands/it/ircss-humanitas-research-hospital.svg": ["IT"]
"/images/brands/it/university-of-pavia.svg": ["IT"],
"/images/brands/v/logo-aslimnica.svg": ["LV"],
"/images/brands/iv/grindex.svg": ["LV"],
"/images/brands/v/olainfarm.png": ["LV"],
"/images/brands/at/med-uni-graz.svg": ["AT"],
"/images/brands/at/5.png": ["AT"],
"/images/brands/at/6.png": ["AT"],
"/images/brands/fr/vidal.png": ["FR", "BE"],
"/images/brands/fr/doctissimo.svg": ["FR", "BE"],
"/images/brands/mx/unam.png"; ["MX"]
"/images/brands/gr/athens.png": ["GR"],
"/images/brands/gr/aristotle-university.png": ["GR"],
"/images/brands/gr/hygeia.png" ["GR"],
"/images/brands/sk/benu.svg": ["SK"],
"/images/brands/sl/zdl.png": ["SL"],
"/images/brands/sifkrka.png": ["SL"],
"/images/brands/sifzcss.svg": ["SL"],
"/images/brands/cz/dr-max.svg": ["CZ"],
"/images/brands/cz/fa.png": ["CZ"],
"/images/brands/es/viarovira.png": ["ES"],
"/images/brands/de/helios.png": ["DE"],
"/images/brands/de/net-doktor.png": ["DE"],
"images /brands/cl/red-salud.png": ["CL"],
"/images/brands/cl/cruz-verde.png": ["CL"]

Applicando un processo di normalizzazione e arricchimento dei dati sopra riportati, segue la lista dei brand vittima:

Regione Brand Organizzazione
Austria (AT) Med Uni Graz Medical University of Graz
Cile (CL) Cruz Verde Farmacias Cruz Verde
Cile (CL) Red Salud RedSalud
Francia / Belgio (FR/BE) Doctissimo Doctissimo
Francia / Belgio (FR/BE) Vidal Vidal Group
Germania (DE) Helios Helios Kliniken
Germania (DE) NetDoktor NetDoktor.de
Global Bayer Bayer AG
Global MSD Merck Sharp & Dohme Corp.
Global World Health Organization World Health Organization
Grecia (GR) Aristotle University Aristotle University of Thessaloniki
Grecia (GR) Hygeia Hygeia Hospital
Grecia (GR) University of Athens National and Kapodistrian University of Athens
Italia (IT) Alma Mater Studiorum Università di Bologna
Italia (IT) Gruppo San Donato Gruppo San Donato
Italia (IT) Humanitas Research Hospital IRCCS Humanitas
Italia (IT) Medic Italia Ministero della Salute
Italia (IT) University of Pavia Università degli Studi di Pavia
Lettonia (LV) Aslimnica ND
Lettonia (LV) Grindeks Grindeks
Lettonia (LV) Olainfarm Olainfarm
Messico (MX) UNAM Universidad Nacional Autónoma de México
Repubblica Ceca (CZ) Dr. Max Dr. Max
Repubblica Ceca (CZ) FAF ND
Slovacchia (SK) BENU BENU Pharmacies
Slovenia (SL) Krka Krka, d. d., Novo mesto
Slovenia (SL) ZCSS ND
Slovenia (SL) ZDL Zdravstveni dom Ljubljana
Spagna (ES) Vila Rovira Clínica Vila-Rovira

L’infrastruttura del threat actor è supportata da un set di API REST che consente la generazione dinamica dei contenuti e il caricamento selettivo in base al profilo della vittima. Tra gli endpoint rilevati:

  • API/v2/landings: restituisce le informazioni strutturali per la generazione della pagina

    api_1

  • API/v2/announcements: fornisce la lista degli gli annunci disponibili in base alle informazioni rilevate dal profilo della vittima

    api_2

Diamond Model of Intrusion Analysis

Il Diamond Model of Intrusion Analysis riportato di seguito sintetizza in modo strutturato le evidenze raccolte nel corso dell’indagine, mettendo in relazione l’attore della minaccia (Adversary), le infrastrutture impiegate (Infrastructure), le capacità tecniche osservate (Capability) e il profilo delle vittime (Victim).

diamond_model

Appendice


  1. Alcuni domini di primo livello (TLD), come ad esempio .info, .site e .xyz, sono frequentemente utilizzati in campagne di phishing e spam, in quanto convenienti dal punto di vista organizzativo ed economico. Tali TLD sono infatti spesso molto economici o addirittura gratuiti durante promozioni, rendendoli appetibili per attori malevoli che necessitano di registrare grandi quantità di domini temporanei. Inoltre, la mancanza di controlli rigorosi da parte di alcuni registrar facilita l’uso improprio. È importante sottolineare che non tutti i siti con questi TLD sono dannosi, ma la loro presenza dovrebbe sempre invitare a una maggiore cautela, soprattutto se accompagnata da contenuti sospetti o richieste insolite. 

  2. La finalità è acquisire i numeri di telefono, e ciò si inserisce in un più ampio contesto di criminale, che in determinati contesti prende il nome di Crime-as-a-Service (CaaS), che ruota intorno all’ambito telefonico noto come "telecom fraud ecosystem", composto da diverse fasi, strumenti e attori, con l’obiettivo di monetizzare tramite truffe, aggirando eventuali controlli. Le fasi sono:

    1. Raccolta dati (Data Harvesting), tramite siti truffa che imitano istituti, enti, ecc., e che richiedono dati personali quale il numero di telefono, tramite fonti alternative, come ad esempio i data leak
    2. Chiamate anonime, tramite spoofing del Caller ID, per far sembrare la chiamata proveniente da altre entità (es: Banca, Forze dell’ordine, ecc.), quindi applicazione delle tecniche di ingegneria sociale.
    3. Monetizzazione tramite bonifici su conti muletti (money mules), prelievo tramite crypto ATM, carte prepagate o valute virtuali, rivendita dei dati su forum e dark web
    4. Supporto e indotto, tramite SIM box e gateway GSM per mascherare chiamate, bot automatici (robocall) per massicce campagne, numero virtuali temporanei (burner numbers), proxy, VPN, server offshore, ecc.

`; } } embedimAccessibility = document.createElement('div'); embedimAccessibility.id = 'embedimAccessibilityWidget'; embedimAccessibility.innerHTML = `
`; document.body.appendChild(embedimAccessibility); // Call translation function when DOM is loaded translateAccessibilityWidget(); var embedimAccessibilitySettings = {}; document.addEventListener('DOMContentLoaded', function () { document.addEventListener('keydown', (event) => { if (event.key === 'Escape') { document.querySelector('.editorim-sidebox').style.display = 'none'; } }); document .querySelector('.editorim-sidebox-close') .addEventListener('click', function () { document.querySelector('.editorim-sidebox').style.display = 'none'; }); document .querySelector('.editorim-sidebox-open') .addEventListener('click', function () { document.querySelector('.editorim-sidebox').style.display = 'block'; }); document .querySelectorAll('[data-action-text]') .forEach(function (element) { element.addEventListener('click', function (e) { e.preventDefault(); var itemAction = this.getAttribute('data-action-text'); console.log(itemAction); if (itemAction == 100) { embedimAccessibilitySettings['fontsize'] = null; this.textContent = '100%'; } else { if ( typeof embedimAccessibilitySettings['fontsize'] === 'undefined' || embedimAccessibilitySettings['fontsize'] == null ) { var fontsizeBase = 100; } else { var fontsizeBase = embedimAccessibilitySettings['fontsize']; } if (itemAction == 'smaller') fontsizeBase = fontsizeBase - 10; else if (itemAction == 'larger') fontsizeBase = fontsizeBase + 10; if (fontsizeBase 300) fontsizeBase = 300; embedimAccessibilitySettings['fontsize'] = fontsizeBase; console.log( 'new size: ' + embedimAccessibilitySettings['fontsize'] ); } localStorage.setItem( 'embedimAccessibilitySettings', JSON.stringify(embedimAccessibilitySettings) ); embedimAccessibilityApply(); }); }); document.querySelectorAll('[data-action]').forEach(function (element) { element.addEventListener('click', function (e) { e.preventDefault(); var itemAction = this.getAttribute('data-action'), extraCSS2 = ''; if (typeof itemAction === 'undefined') { } else if (itemAction == 'reset') { document.querySelector('#extraStyles').innerHTML = ''; embedimAccessibilitySettings = {}; localStorage.setItem( 'embedimAccessibilitySettings', JSON.stringify(embedimAccessibilitySettings) ); if (typeof window.onScrollReadableGuide === 'function') { document.removeEventListener( 'mousemove', window.onScrollReadableGuide ); window.onScrollReadableGuide = 'undefined'; } embedimAccessibilityApply(); document .querySelectorAll('[data-action].active') .forEach(function (element2) { element2.classList.remove('active'); }); } else { if (this.classList.contains('active')) { this.classList.remove('active'); embedimAccessibilitySettings[itemAction] = null; } else { this.classList.add('active'); embedimAccessibilitySettings[itemAction] = 1; } localStorage.setItem( 'embedimAccessibilitySettings', JSON.stringify(embedimAccessibilitySettings) ); embedimAccessibilityApply(); } }); }); embedimAccessibilityApply(); }); } if ('this_is' == /an_example/) { of_beautifier(); } else { var a = b ? c % d : e[f]; }