Váš FiveM server dostal backdoor — runbook pro řešení incidentu

Publikováno 6 min čteníTitan Software z.s.

Ve zkratce

Když je FiveM server kompromitován, postupujte v tomto pořadí: izolujte ho vypnutím a odříznutím odchozí konektivity, zajistěte důkazy zkopírováním adresáře resources a logů dřív, než se čehokoli dotknete, a pak vyměňte každý přihlašovací údaj, na který proces serveru dosáhl — hesla k databázi, API klíče, Steam a licenční klíče, URL webhooků a jakékoli heslo použité i jinde. Teprve potom hledejte místo vstupu porovnáním resources proti ověřeným kopiím a proskenováním všech archivů. Obnovte z čistých zdrojů místo mazání nalezeného souboru, protože backdoor s přístupem ke konzoli si téměř jistě nechal druhou cestu dovnitř. Nevynechávejte výměnu hesel jen proto, že jste resource odstranili — údaje unikly už během jeho běhu.

Hlavní body

  • Nejdřív izolace, potom vyšetřování. Každá minuta běhu procesu je další minuta exfiltrace.
  • Než cokoli smažete, zkopírujte složku resources a logy — ta kopie je vaším jediným důkazem.
  • Předpokládejte, že každé tajemství, na které proces serveru dosáhl, je veřejné. Vyměňte všechna, ne jen ta zjevná.
  • Nalezením škodlivého souboru to nekončí. Cokoli s přístupem ke konzoli mohlo přidat perzistenci jinde.
  • Obnovujte z ověřených zdrojů. Čištění kompromitovaného stromu na místě je hádání.

Tohle je runbook, ne esej. Pokud ho čtete během incidentu, začněte nahoře a postupujte dolů. Pokud ho čtete předem — lépe — přečtěte si ho jednou teď a nechte ho někde, kam váš tým dosáhne ve tři ráno.

Fáze 1 — Izolace (prvních deset minut)

  1. 1

    Zastavte proces serveru

    Ne restart. Zastavte ho. Backdoor s perzistencí se se serverem klidně nastartuje znovu a každá další minuta znamená víc odtékajících dat.

  2. 2

    Odřízněte odchozí síť na úrovni hostitele

    Pokud to jde, zablokujte odchozí provoz ze stroje firewallem, ne jen vypněte FXServer. Tím zastavíte i to, co se nainstalovalo mimo proces FiveM.

  3. 3

    Zatím operační systém nepřeinstalovávejte

    Zničíte tím důkazy, které potřebujete, abyste věděli, co uniklo. Nejdřív izolace, pak forenzní analýza, teprve pak obnova.

  4. 4

    Informujte admin tým, ale potichu

    Použijte kanál, který nevede přes kompromitovaný stroj ani přes bota na něm. Pokud váš alertovací webhook žije v konfiguraci serveru, berte ho jako čitelný pro útočníka.

Fáze 2 — Zajištění důkazů (dalších patnáct minut)

Všechno, co od teď uděláte, mění místo činu. Nejdřív si udělejte kopii a odneste ji ze stroje pryč.

  • Zabalte celý adresář resources/, server.cfg a jakoukoli složku s cache nebo logy a zkopírujte to jinam.
  • Uložte konzolový log FXServeru, systémový auth log a logy webserveru nebo panelu za stejné období.
  • Poznamenejte si časovou osu: kdy chování začalo, co se krátce předtím změnilo, které resources byly za poslední dva týdny nainstalovány nebo aktualizovány.
  • Před jakýmkoli úklidem vyexportujte dump databáze, zvlášť pokud se manipulovalo s penězi, itemy nebo účty — budete chtít stav „před“.

Fáze 3 — Vyměňte všechny přihlašovací údaje (tenhle krok se přeskakuje nejčastěji)

Předpokládejte, že cokoli, co proces serveru mohl přečíst, je teď veřejné. Serverové Lua umělo číst vaši konfiguraci, prostředí i databázi. Vyměnit jen to, co vypadá souvisejícím, je způsob, jak přijít o server dvakrát.

ÚdajProč je vystavenýAkce
Heslo k databáziServerové skripty drží connection stringZměňte ho a aktualizujte všechny služby, které ho používaly
Licenční klíč FiveMJe v server.cfgVygenerujte nový v Cfx.re portálu
Steam / API klíče třetích stranČtou se z convarůZneplatněte a vydejte nové
Discord bot tokeny a webhookyČasto uložené v configuVygenerujte znovu; staré webhooky smažte
Hesla k panelu / SSH / FTPČasto znovupoužitá nebo uložená na hostiteliZměňte a přejděte na SSH klíče
Platební a shop integraceServerové klíčeVyměňte a projděte poslední transakce
Cokoli použitého i jindeZnovupoužívání hesel je pravidlo, ne výjimkaZměňte to i tam
Seznam k výměně

Fáze 4 — Najděte místo vstupu

Musíte vědět, jak se to dostalo dovnitř, jinak si to při obnově nainstalujete znovu. Pracujte z kopie, kterou jste udělali, ne z živého serveru.

  1. 1

    Porovnejte proti ověřeným kopiím

    U každého resource, ke kterému máte původní archiv nebo repozitář, porovnejte soubor po souboru. Nečekané rozdíly jsou první kandidáti.

  2. 2

    Seřaďte podle času změny

    Vypište všechny soubory v resources/ podle mtime. Soubor změněný v hodinu, kdy nikdo nenasazuje, si zaslouží přečíst celý.

  3. 3

    Proskenujte každý archiv, který ještě máte

    Prožeňte každý archiv resource statickou analýzou. Hledáte řetěz loaderu, natvrdo zadané identifikátory a exfiltrační endpointy popsané v našem článku o vzorech backdoorů.

  4. 4

    Zkontrolujte, co přibylo, ne jen co se změnilo

    Hledejte resources v adresáři, které nejsou v server.cfg, soubory navíc uvnitř jinak legitimních resources a soubory, jejichž název napodobuje soubor frameworku.

  5. 5

    Projděte stav oprávnění

    Přečtěte konfiguraci ACE a všechny principály přidané za běhu. Přidělení udělané backdoorem přetrvá v konfiguraci i po odstranění resource.

Proskenovat archivy resourcesStatická analýza nahraného archivu bez přístupu k serveru a bez spouštění — užitečná právě tehdy, když stroji nemůžete věřit.

Fáze 5 — Obnovte, nečistěte

Smazat nalezený soubor je lákavé a většinou špatně. Pokud měl backdoor přístup ke konzoli, mohl přidat principály, zapsat nové soubory, naplánovat úlohy nebo nainstalovat něco úplně mimo FiveM. Čištění na místě znamená sázet na to, že jste všechno našli napoprvé.

  1. 1Vytvořte čerstvý stroj, nebo alespoň čerstvý instalační adresář FXServeru.
  2. 2Resources instalujte jen ze zdrojů, které umíte ověřit: vlastní repozitář, původní stažení od dodavatele nebo znovu prověřený archiv.
  3. 3Cokoli, co nemůžete stáhnout znovu, prověřte znovu. Bez doložitelného původu to nepřenášejte.
  4. 4Data obnovte ze zálohy pořízené před obdobím kompromitace, pokud to jde, a jinak pečlivě dohledejte rozdíly.
  5. 5Server nastartujte ještě s omezenou odchozí konektivitou a chvíli ho sledujte, než ho otevřete hráčům.

Fáze 6 — Uzavřete kruh

  • Sepište, co se stalo, co jste vyměnili a co změnili. Příští incident je s tímhle dokumentem mnohem levnější.
  • Nahlaste škodlivý resource — marketplace, odkud pochází, komunitě frameworku, a nám, pokud to pomůže ostatním.
  • Řekněte hráčům otevřeně, jestli se to týkalo jejich údajů. Podle českého a evropského práva mají úniky osobních údajů oznamovací povinnost a mlžení nepomůže nikomu.
  • Zaveďte kontrolu, která by to odchytila: revizi před instalací a opakovaný sken při každé aktualizaci.

Ten poslední bod je smysl celého cvičení. Řešení incidentu obnoví provoz; druhému incidentu zabrání jen změna procesu. Pokud ruční revize každého resource není pro váš tým reálná, zautomatizujte opakovanou kontrolu — průběžné skenování existuje proto, aby se ta nudná část dělala i bez toho, aby si na ni někdo vzpomněl.

Časté dotazy

Co udělat jako první, když má můj FiveM server backdoor?

Zastavte proces serveru — ne restartujte — a odřízněte odchozí síť ze stroje. Každá minuta běhu znamená víc odtékajících dat a víc příležitostí, aby si útočník znovu nainstaloval perzistenci. Teprve po izolaci zkopírujte adresář resources a logy jako důkaz a začněte měnit přihlašovací údaje.

Musím po kompromitaci FiveM serveru měnit heslo k databázi?

Ano, a spolu s ním každé další tajemství, na které proces serveru dosáhl: licenční klíč FiveM, API klíče v convarech, Discord bot tokeny a webhooky, přístupy k panelu a SSH a jakékoli heslo použité i jinde. Serverové Lua běží s plným přístupem ke konfiguraci i k databázovému připojení, takže od okamžiku spuštění backdooru je namístě brát všechno jako veřejné.

Stačí k vyčištění FiveM serveru smazat škodlivý resource?

Většinou ne. Backdoor s přístupem ke konzoli může přidat principály do ACE konfigurace, zapsat soubory jinde ve stromu nebo nainstalovat perzistenci úplně mimo FiveM. Obnova z ověřených zdrojů je spolehlivější než čištění na místě, protože čištění předpokládá, že jste všechno našli napoprvé.

Mám o průniku na FiveM server informovat hráče?

Ano, jakmile máte incident izolovaný a údaje vyměněné. Pokud šlo o osobní údaje, ukládá evropská i česká úprava ochrany osobních údajů provozovateli oznamovací povinnost a jasné, věcné vysvětlení napáchá mnohem menší reputační škodu než fámy, které mezeru vyplní. Oznamujte až po výměně přístupů, ne před ní — brzké oznámení říká tomu, kdo vaše údaje drží, ať je použije hned.

Související projekty

Čtěte dál