Většina pluginů s backdoorem se na herní server dostane jednou ze čtyř cest: uniklou nebo „nulled“ kopií placeného pluginu, falešným uploadem, který se tváří jako populární plugin, skutečným projektem, jehož autorovi někdo převzal účet, nebo vývojářem či pomocníkem, kterému jsi dal přístup k souborům. Samotný kód bývá jednoduchý - skrytá fráze v chatu, která dá operátorská práva, webový požadavek, jehož odpověď se spustí jako kód, druhý soubor odložený někam, kam se nedíváš - a na skriptovaných platformách jako Garry's Mod a FiveM většinu z toho najdeš obyčejným textovým hledáním. Obrana stojí hlavně na tom, odkud soubory pocházejí a kdo smí na server zapisovat, a jen z menší části na kontrole toho, co sis stáhl.
Tento článek ukazuje pohled útočníka: jak se zlý kód dostane dovnitř a jak vypadá, když už tam je. Běžná rutina bezpečné instalace modů - důvěryhodné zdroje, kontrolní součty, jedna změna naráz, backup před každou instalací - je v článku jak udržet modovaný server čistý a stojí za to číst je spolu.
Čtyři cesty na tvůj server#
| Cesta | Jak to vypadá z tvého pohledu | Co ji zastaví |
|---|---|---|
| Uniklý nebo nulled plugin | Zdarma kopie něčeho, co jinak stojí peníze | Nestahovat ho |
| Falešný upload | Povědomý název, jiný uploader | Kontrola autora a stránky projektu |
| Napadený autor | Běžná aktualizace od skutečného projektu | Odložit aktualizace, sledovat hlášení |
| Někdo s přístupem k souborům | „Oprava“ nebo „pomocný“ plugin | Omezit, kdo smí zapisovat soubory |
První cesta je zdaleka nejběžnější. Odstranění kontroly licence z placeného pluginu znamená ho dekompilovat a znovu sestavit a ten, kdo to dělá, má spoustu příležitostí něco přidat. Navíc šíří ukradený software, což o jeho prioritách leccos říká. Weby s uniklými pluginy nemají důvod dát ti čistou kopii a mají hned několik důvodů to neudělat: admin backdoor na stovkách serverů se dá prodat.
Druhá cesta počítá s tím, že plugin hledáš, a ne že za ním jdeš přímo. Plugin s názvem „EssentialsX-Fix“, repozitář na GitHubu s skoro stejným jménem a jediným releasem, video na YouTube s odkazem na „mirror“ v popisku. Soubor vypadá věrohodně, název je podobný a autor je někdo, o kom jsi nikdy neslyšel.
Třetí cesta dostane i opatrné lidi, protože vede kanálem, kterému ti říkali věřit. Když někdo převezme účet známého autora modů, může další „aktualizace“ z oficiální stránky projektu obsahovat cokoli. Stalo se to na největších platformách.
Čtvrtá cesta jsou lidé. Vývojář najatý na vlastní funkci, dobrovolník, který „ví, jak opravit lagy“, bývalý člen týmu s přístupem přes SFTP, který nikdo nezrušil. Backdoor nemusí propašovat, může ho tam prostě dát.
Co payload obvykle dělá#
Backdoory na herních serverech málokdy bývají sofistikované. Nemusí být, protože většina serverů nemá žádný monitoring a většina majitelů nikdy nečte kód, který provozuje.
| Payload | Proč ho útočník chce |
|---|---|
| Tajná fráze v chatu nebo příkaz dává admina | Kontrola nad serverem, kdykoli se připojí |
| Loader vzdáleného kódu | Může později měnit chování, aniž by sáhl na tvoje soubory |
| Sběrač přihlašovacích údajů | Hesla k RCON, databázi a panelu z konfiguračních souborů |
| Dropper | Zapisuje další pluginy nebo soubory, přežije odstranění toho prvního |
| Crypto miner | Využívá tvůj přidělený CPU ve svůj prospěch |
| Zneužití vůči hráčům | Oznámení, spawn itemů, griefing celého serveru na povel |
| Infekce klientů | U her, které posílají obsah hráčům, útočí na jejich počítače |
Nejvíc se bát je třeba vzdáleného loaderu, protože znamená, že backdoor, který najdeš dnes, nemusí být tím chováním, které dostaneš zítra. Kód na disku je malý a nudný - stáhni URL, spusť, co přijde - a všechno zajímavé leží na serveru útočníka, kde si to nepřečteš.
Sběrač přihlašovacích údajů je důležitý kvůli tomu, co obsahují konfigurační soubory pluginů. Hesla k databázi u pluginů s MySQL, tokeny webových panelů, URL webhooků, někdy heslo k RCON. Jakmile je někdo získá, odstranění pluginu problém neukončí.
Skutečný případ z dodavatelského řetězce: fractureiser#
V červnu 2023 uživatelé minecraftových modů a pluginů objevili malwarovou kampaň, které se později začalo říkat fractureiser. Útočníci získali přístup k účtům na CurseForge a dev.bukkit.org a nahráli infikované verze existujících projektů. Kdo si tyto soubory stáhl z oficiálních platforem, dostal jar s malým vloženým loaderem. Když se mod nebo plugin spustil, loader z internetu stáhl další fáze; ty pozdější kradly přihlašovací údaje - cookies z prohlížeče, tokeny Discordu, relace účtů Minecraft a Microsoft - a pokoušely se infikovat další soubory .jar na stejném počítači.
Z toho vyplynulo několik poučení platných pro jakoukoli hru:
- „Oficiální zdroj“ riziko snižuje, ale neruší. Soubory pocházely přesně z míst, kam tě návody posílají.
- Riziková je doba těsně po nahrání. Infikované verze byly dostupné omezenou dobu, než si jich někdo všiml a odstranil je. Servery, které s aktualizacemi modů počkaly pár dní, nebyly nikdy vystaveny.
- Jar může infikovat další jary. Jakmile se spustí cokoli škodlivého, je podezřelý každý spustitelný soubor, do kterého uživatel serveru smí zapisovat. Proto je ruční čištění slabá strategie a obnova ze známého dobrého backupu strategie dobrá.
- Reakce komunity byla rychlá. Detekční nástroje a rozbory se objevily během dní. Sledovat oznámení platformy má větší cenu než jakýkoli scanner, který pustíš sám.
Praktická obrana pro server je levná: neaktualizuj mody v den vydání, pokud aktualizace neopravuje něco, co potřebuješ, uschovej si předchozí funkční soubor a před každou aktualizací udělej backup.
Garry's Mod a FiveM: kód, který si opravdu přečteš#
Skriptované platformy mají jednu velkou výhodu: většina serverového kódu je obyčejné Lua nebo JavaScript, takže se v něm dá hledat. Backdoory jsou tu časté ze stejného důvodu - uniklé addony a resources se hojně šíří - a řídí se rozpoznatelnými vzory.
V Garry's Modu klasický backdoor stáhne text z URL a spustí ho přes RunString nebo CompileString, případně přidá skrytou zprávu net, která provede příkaz v konzoli pro každého, kdo ji pošle. Hledání funkcí, které spouštějí dynamický kód, v adresáři addonů najde většinu z nich:
$ cd garrysmod/addons$ grep -rn --include='*.lua' -E 'RunString|CompileString|CompileFile' .$ grep -rn --include='*.lua' -E 'http\.Fetch|http\.Post|HTTP\(' .$ grep -rn --include='*.lua' -E 'game\.ConsoleCommand|RunConsoleCommand' .$ grep -rln --include='*.lua' -E '\\x[0-9a-fA-F]{2}.*\\x[0-9a-fA-F]{2}' .Nálezy nejsou důkaz viny - spousta legitimních addonů stahuje aktualizace nebo spouští příkazy konzole - ale každý by měl dávat smysl vzhledem k tomu, co addon tvrdí, že dělá. Addon na spawnování propů, který stáhne URL a výsledek předá do RunString, nemá nevinné vysvětlení. Poslední hledání najde dlouhé řetězce znaků zapsaných hexadecimálními escape sekvencemi, což je běžný způsob, jak před nezkušeným čtenářem skrýt URL nebo název funkce. O tom, kde addony serveru skutečně leží, je článek Garry's Mod workshop a FastDL.
Ve FiveM je ekvivalentním vzorem PerformHttpRequest, jehož odpověď se předá do load, často zabalené jako assert(load(...))() a ukryté v jinak obyčejném resource. V roce 2023 se hodně probíral rodina takových backdoorů zvaná Cipher, která se šířila hlavně přes uniklé resources a dávala svým operátorům vzdálenou kontrolu nad infikovanými servery.
$ cd resources$ grep -rn --include='*.lua' -E 'PerformHttpRequest' .$ grep -rn --include='*.lua' -E '(^|[^a-zA-Z_])load\(' .$ grep -rn --include='*.js' -E 'eval\(|new Function\(|https?\.get\(' .$ grep -rln -E '\\x[0-9a-fA-F]{2}.*\\x[0-9a-fA-F]{2}' .Podívej se i na každý fxmanifest.lua. Resource, který uvádí serverový skript, jejž nepoznáváš, nebo soubor s náhodným názvem zahrabaný v podsložce, si zaslouží přečíst. Escrow (šifrované) resources z oficiálního systému assetů přečíst nejdou, což je jeden z kompromisů jejich nákupu - ale pocházejí od známého prodejce přes Cfx.re, a to je původ, který si můžeš ověřit. Tento systém rozebírá FiveM escrow a licencování assetů.
Minecraft a hry na Unity: zkompilovaný kód#
Pluginy pro Bukkit, mody pro Forge a Fabric i pluginy pro BepInEx jsou zkompilované. Zdroják nepročteš grepem a u placených pluginů je obfuskace normální, takže úplná kontrola většině majitelů reálná není. Zbývá užší sada kroků:
- Rozbal a hledej řetězce. Jar je soubor zip; rozbalené soubory tříd stále obsahují čitelné řetězce jako URL a názvy tříd. Příkazy najdeš v článku o bezpečnosti modů.
- Hledej metody, které backdoor potřebuje. V Javě mají
URLClassLoader,defineClass,Runtime.getRuntime().execaProcessBuilderlegitimní využití, ale třeba v pluginu na formátování chatu jsou vzácné. Plugin, který poslouchá události chatu a volásetOp, je v každém dekompilátoru červená vlajka. - Pusť komunitní scanner. Pro Minecraft existují open-source scannery, které ve složkách pluginů hledají podpisy známého malwaru; MCAntiMalware je jeden z hojně používaných příkladů. Čistý výsledek chápej jako „není to známý vzorek“, ne jako „je to bezpečné“.
- Sleduj chování. Důležité jsou odchozí spojení procesu serveru na adresy, které neznáš, operátoři, které jsi nepřidal, a vytížení CPU, když na serveru nikdo není.
U her na Unity s BepInEx, například Valheimu, platí totéž pro soubory .dll v BepInEx/plugins: získávej je z Thunderstore, Nexus Mods nebo z vlastního repozitáře autora a na stránce projektu si ověř autora. Uspořádání popisuje Valheim mody s BepInEx.
Ověření, že zdroj je tím, za co se vydává#
Původ je obrana, která funguje na všech platformách. Pár kontrol zachytí většinu falešných souborů za méně než minutu:
- Naviguj, nehledej. Jdi na platformu s pluginy a stránku projektu otevři odtud, nebo použij odkaz z autorova vlastního webu či profilu na GitHubu.
- Porovnej uploadera s autorem. Na SpigotMC, Hangaru, Modrinthu, CurseForge, Thunderstore a ve Workshopu je uploader na stránce vidět. Populární plugin znovu nahraný jiným účtem je podvrh, dokud se neprokáže opak.
- Podívej se na historii. Skutečný projekt má verze několik měsíců či let zpátky, issues a changelog. Repozitář vytvořený minulý týden s jedním releasem a bez zdrojového kódu není místo, kde ten plugin žije.
- Porovnej release assety se zdrojem. Na GitHubu se binárka releasu nahrává odděleně od kódu. Účet, který zveřejní čistý zdroják a upravený jar, je možný; stahování z běžného kanálu projektu je bezpečnější než z forku.
- Přečti si komentáře u posledních aktualizací. Hlášení o podivném chování se obvykle objeví nejdřív tam.
- Na aktualizace, které nepotřebuješ, pár dní počkej. Poučení z fractureiseru v jedné větě.
Zapisuj si, odkud každý soubor pochází. Textový soubor v kořeni serveru s každým modem, verzí, zdrojovým URL a datem stojí minutu na instalaci a každé pozdější vyšetřování zrychlí.
Najatí vývojáři, pomocníci a přístup k souborům#
Dát někomu právo zápisu do souborů serveru znamená dát mu možnost spouštět na serveru kód. Je to v pořádku, když je to záměr; většina backdoorů od lidí vznikne proto, že se to nepromyslelo.
- Přístup k souborům dej co nejméně lidem. V panelu moderátor potřebuje přístup ke konzoli, ne k souborům. Oprávnění subuserů umožňují dát jen konzoli, jen soubory nebo obojí, aniž bys sdílel svůj účet - viz subuseři a nejmenší oprávnění.
- Pro dodavatele používej časově omezený přístup. Přístup, který vyprší sám, je přístup, na jehož odebrání nemůžeš zapomenout.
- Žádej zdroják a porovnávej, co dodali. U skriptovaných platforem porovnej složku před jejich prací a po ní. U zkompilovaných pluginů žádej v rámci zakázky zdrojový kód a návod k sestavení.
- Po skončení práce si přečti log aktivity serveru a porovnej časy změn souborů s daty, kdy pracovali.
- Poté změň hesla. Databáze, RCON a všechny webové tokeny, které vývojář mohl číst v konfiguračních souborech.
Nic z toho neznamená, že najatí vývojáři jsou nedůvěryhodní. Znamená to, že důvěra má být konkrétní a dočasná a že backup udělaný před začátkem jejich práce umožní její vrácení.
Co dělat, když nějaký najdeš#
- Zastav server a udělej backup jeho aktuálního stavu jako důkaz, potom ho už tak, jak je, nespouštěj.
- Zjisti zdroj. Který soubor, které stažení, jaké datum. Pomůžou ti poznámky k instalacím.
- Změň každé tajemství, které server mohl přečíst: RCON, admin hesla, hesla k databázi, URL webhooků, tokeny v konfiguracích. Pokud jsi některé použil i jinde, změň je i tam.
- Obnov ze zálohy vytvořené před příchodem toho souboru, pak mody přidávej znovu z oficiálních zdrojů, jeden po druhém.
- Zkontroluj seznamy adminů, plánované úlohy a nastavení spouštění, jestli tam není něco, co jsi nenastavil.
- Řekni to hráčům, pokud hra posílá obsah klientům, aby si mohli zkontrolovat vlastní počítače.
Celý postup pro potvrzené napadení je v článku co dělat, když je tvůj server nabourán. Podstatné je tohle: vyčistit smazáním jednoho souboru nestačí, když mohl kód zapsat další.
Na RE:NODE se mody a pluginy nahrávají přes správce souborů nebo SFTP, případně přicházejí přes podporu workshopu v samotné hře, a při cestě dovnitř se nic nekontroluje - co na serveru běží, je tvoje rozhodnutí. Panel ti dává stranu obnovy: sloty pro backupy v každém tarifu, uložené mimo stroj, který chrání, obnovitelné jedním tlačítkem a zamykatelné, aby se známý dobrý backup během vyšetřování nepřepsal novějšími.
FAQ#
Jsou pluginy ze SpigotMC, Modrinthu nebo Workshopu vždy bezpečné?
Jsou mnohem bezpečnější než cokoli jiného, ale záruka to není. Platformy dělají určitou kontrolu a po nahlášení malware odstraňují, ale napadené účty autorů i nové škodlivé uploady se už staly. Dávej přednost zavedeným projektům a s aktualizacemi pár dní počkej.
Najde backdoor v pluginu antivirový sken?
Málokdy. Backdoory v Javě, .NET a Lue nevypadají jako malware pro Windows, takže univerzální antivirus je často hlásí jako čisté. Komunitní scannery pro konkrétní platformy si u známých vzorků vedou lépe a původ souboru ještě lépe.
Je bezpečné použít uniklý plugin, když zkontroluji kód?
Ne. Placené pluginy bývají obfuskované, takže je nelze pořádně zkontrolovat, a uniklé kopie jsou přesně místo, kde se backdoory koncentrují. Je to navíc cizí placená práce.
Může serverový mod infikovat moje hráče?
U her, které posílají klientům obsah nebo skripty, ano. Garry's Mod a FiveM posílají skripty na stranu klienta a minecraftové modpacky instalují kód na počítač každého hráče. Škodlivý mod tam ohrožuje tvou komunitu, ne jen server.
Jak poznám, že plugin „volá domů“?
Prohledej jeho rozbalené soubory kvůli URL a zkontroluj, jestli každé patří projektu, a sleduj odchozí spojení procesu serveru na neznámé adresy. Mnoho legitimních pluginů kontroluje aktualizace, takže posuzuj cíl, ne samotný fakt spojení.




Komentáře
Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.