Před nějakou dobou jsme začali do SSH honeypotů přesměrovávat v testovacím provozu vnější SSH port z Turrisů některých dobrovolníků z vývojového týmu. Aby si s námi „povídalo“ co nejvíce útočníků, povolili jsme v honeypotu přihlášení na roota libovolným heslem; navzdory tomu většina botů stejně nic neudělá a hned se odpojí i po úspěšném pokusu.
Po ostatních úspěšných přihlášeních následuje buď pokus o forwardování spojení (a použití SSH stroje jako proxy) nebo snaha o stáhnutí a spuštění nějakého malware. Zajímalo mě, co ten malware dělá.
Dá se říct, že většina zachyceného malware je celkem nezajímavá, není moc obfuskovaná, dokonce často ani nejsou stripnuty symboly. V nejběžnějším případě se jedná o trojan, který umí DOS útok přes TCP, UDP nebo DNS amplification. Proces se nesnaží ani příliš skrývat. Útočníci zřejmě očekávají, že stroje s jednoduchými hesly, které napadly, jsou špatně spravovány a nikdo si toho stejně nevšimne.
Běžně bývají tyto trojany multiplatformní, distribuované jako staticky slinkované binárky. Útočník wgetem stáhne několik verzí – pro x86, x86_64, ARM a MIPS. Většinou jsou to linuxové binárky, občas se objeví i binárka pro *BSD. Existence ARM a MIPS binárek ukazuje, že se útočníci zaměřují i na embedded systémy. Pak je prostě všechny za sebou spustí a vůbec neřeší detekci systému: „vždyť něco z toho poběží“. Na konci přidá spouštění po startu cronem, přes SysV init skripty v /etc/rc.d nebo do /etc/rc.local.
Pozoruhodnější je, že kvalita kódu samotných trojanů je mnohem lepší, než jak vypadají použité shell skripty. Je z nich třeba vidět, jak jsou pěkně rozděleny na moduly, používají vlákna, synchronizační primitiva a fronty zpráv. Analýzu jednoho „lepšího“ trojanu BillGates si můžete přečíst zde.
Mě osobně víc zaujal nedávný trojan, který se tváří, že má schopnosti rootkitu skrývat soubory, procesy a obcházet iptables. Tyto funkce zapíná přes volání ioctl na souboru /proc/rs_dev, jehož vytvoření má na starosti kernel modul. Po spuštění si smaže binárku, ze které byl spuštěn, zkopíruje se do /boot/ adresáře s náhodným jménem, provede double-fork a zavolá si zmíněnou funkci na skrytí svého PID. Autostart binárky z /boot zajistí vytvořením init skriptu v /etc/rc.d.
Po podrobnějším zkoumání jsem zjistil, že skrývací funkce zatím nefungují, protože trojan vždy přeskočí vytvoření a zavedení souboru s kernel modulem (tělo modulu v binárce má jen jeden bajt). Modul buďto ještě není implementován nebo není přítomen v této variantě. Analyzovaný trojan je opět primárně určen na DOS útoky a jeho CNC server je na adrese 103.25.9.228.
Odkud se tento malware bere? Husarský kousek se povedl jednomu analytikovi malware, který odchytil přímo jak distributoři malware školí své zákazníky, jak rozšiřovat a používat jejich malware. Součástí článku je i video z tohoto školení. Vysvětluje se zde i proč existuje tolik variant – Číňané mají builder, který ELF binárky generuje podle zadaných parametrů.
Ahoj, kernel modul uz utocnici implementovali. Par suborov, kde sa da najst:
https://www.google.com/?q=ELF+%22InstallSYS%22+%22hide_file%22+site:malwr.com
Dík, v jedné z těch binárek jsem ten modul našel.
Len pre zaujimavost, dana hrozba celkom uputala pozornost:
https://blog.avast.com/2015/01/06/linux-ddos-trojan-hiding-itself-with-an-embedded-rootkit/
http://www.scmagazine.com/malware-targets-linux-and-arm-architecture/article/391497/