ALLSmartSecurity
Mitschnitt

SSH-Angriff aus Niederlande: BusyBox-Ausbruch und Hardware ausspähen

30.09.2026, 03:22 UTC · 161 Befehle · über ssh · Niederlande

Überblick

Dienst
ssh (Port 22)
Herkunft
Niederlande · UNMANAGED LTD
Probierte Zugangsdaten
root / 111111

Der Angriff, nachgespielt

echter Mitschnitt unserer Fake-Shell; die Antworten sind erfunden, ausgefuehrt wurde nie etwas
root@srv01: ~

root@srv01:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
root@srv01:~$ uname=$(uname -s -v -n -m 2>/dev/null || /bin/uname -s -v -n -m 2>/dev/null || /usr/bin/uname -s -v -n -m 2>/dev/null || busybox uname -s -v -n -m 2>/dev/null || ( [ -f /proc/version ] && head -1 /proc/version | cut -d' ' -f1 ) || ( [ -f /etc/os-release ] && grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"' ) || echo "")
Linux 4.15.0-213-generic #213-Ubuntu SMP Fri Jan 15 10:52:19 UTC 2021 x86_64
root@srv01:~$ arch=$(uname -m 2>/dev/null || /bin/uname -m 2>/dev/null || /usr/bin/uname -m 2>/dev/null || busybox uname -m 2>/dev/null || ( [ -f /proc/cpuinfo ] && grep -q "lm" /proc/cpuinfo && echo x86_64 ) || ( [ -f /proc/cpuinfo ] && grep -q "CPU architecture: 8" /proc/cpuinfo && echo aarch64 ) || ( [ -f /proc/cpuinfo ] && grep -q "CPU architecture: 7" /proc/cpuinfo && echo armv7l ) || echo "")
x86_64 )
aarch64 )
armv7l )
root@srv01:~$ uptime=$(cat /proc/uptime 2>/dev/null || busybox cat /proc/uptime 2>/dev/null)
6825600.12 12345600.45
root@srv01:~$ cpus=$(nproc 2>/dev/null || /usr/bin/nproc 2>/dev/null || busybox nproc 2>/dev/null || grep -c "^processor" /proc/cpuinfo 2>/dev/null)
4
root@srv01:~$ cpu_model=$( { lscpu 2>/dev/null | awk -F: '/Model name/ {print $2}'; grep -m1 -E "^model name" /proc/cpuinfo 2>/dev/null | cut -d: -f2-; grep -m1 -E "^Hardware" /proc/cpuinfo 2>/dev/null | cut -d: -f2-; cat /proc/device-tree/model 2>/dev/null; } | sed '/^$/d; /unknown/d; s/^[[:space:]]*//; s/[[:space:]]*$//; s/ AArch64 Processor$//; s/ Processor$//; s/ CPU$//' | head -1 )
Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
root@srv01:~$ gpu_info=$( (lspci 2>/dev/null | grep -i vga; lspci 2>/dev/null | grep -i nvidia; busybox lspci 2>/dev/null | grep -i vga; busybox lspci 2>/dev/null | grep -i nvidia) 2>/dev/null )
bash: lspci: command not found
root@srv01:~$ last_output=$(last 2>/dev/null)
bash: last: command not found
root@srv01:~$ filter_output=$( ( export LANG=C LC_ALL=C; echo '===SHELL_BEHAVIOR==='; printf 'path_err='; ( ./xxxxxx 2>&1 || true ) | ( head -c 250 2>/dev/null || busybox head -c 250 2>/dev/null || dd bs=250 count=1 2>/dev/null ) | ( tr -d '\n' 2>/dev/null || busybox tr -d '\n' 2>/dev/null || cat ); printf '\n'; printf 'cmd_err='; ( xxxxxx 2>&1 || true ) | ( head -c 250 2>/dev/null || busybox head -c 250 2>/dev…
bash: filter: No such file or directory
===SHELL_BEHAVIOR===
root@srv01:~$ echo "UNAME:$uname"
UNAME:$uname
root@srv01:~$ echo "ARCH:$arch"
ARCH:$arch
root@srv01:~$ echo "UPTIME:$uptime"
UPTIME:$uptime
root@srv01:~$ echo "CPUS:$cpus"
CPUS:$cpus
root@srv01:~$ echo "CPU_MODEL:$cpu_model"
CPU_MODEL:$cpu_model
root@srv01:~$ echo "GPU:$gpu_info"
GPU:$gpu_info
root@srv01:~$ echo "LAST:$last_output"
root@srv01:~$ echo "FILTER:$filter_output"
root@srv01:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${PATH:-} LC_ALL=C LANG=C
root@srv01:~$ uname=$(for c in uname /bin/uname /usr/bin/uname 'busybox uname' 'toybox uname'; do v=$($c -s -v -n -m 2>/dev/null) && [ -n "$v" ] && { printf '%s\n' "$v"; exit; }; done; IFS= read -r v < /proc/version && printf '%s\n' "$v") 2>/dev/null
Linux srv01 4.15.0-213-generic #213-Ubuntu SMP Fri Jan 15 10:52:18 UTC 2021 x86_64
root@srv01:~$ arch=$(for c in uname /bin/uname /usr/bin/uname 'busybox uname' 'toybox uname'; do v=$($c -m 2>/dev/null) && [ -n "$v" ] && { printf '%s\n' "$v"; exit; }; done; for c in arch 'busybox arch' 'toybox arch'; do v=$($c 2>/dev/null) && [ -n "$v" ] && { printf '%s\n' "$v"; exit; }; done; printf '%s\n' unknown)
x86_64
root@srv01:~$ uptime=$(IFS= read -r v < /proc/uptime && printf '%s\n' "$v" || cat /proc/uptime 2>/dev/null || busybox cat /proc/uptime 2>/dev/null || toybox cat /proc/uptime 2>/dev/null) 2>/dev/null
6825600.00 4500000.00
root@srv01:~$ cpus=$(unset OMP_NUM_THREADS OMP_THREAD_LIMIT; for c in nproc /usr/bin/nproc 'busybox nproc' 'toybox nproc'; do v=$($c 2>/dev/null) || continue; case $v in ''|*[!0-9]*) continue ;; esac; [ "$v" -gt 0 ] 2>/dev/null && { printf '%s\n' "$v"; exit; }; done; for a in awk 'busybox awk' 'toybox awk'; do $a 'BEGIN { exit 0 }' </dev/null 2>/dev/null && break; done; v=$($a 'function count(s, a,b,n,i,t,m) { …
6
root@srv01:~$ cpu_model=$(for a in awk 'busybox awk' 'toybox awk'; do $a 'BEGIN { exit 0 }' </dev/null 2>/dev/null && break; done; r() { [ -r "$1" ] || return; while IFS= read -r s || [ -n "$s" ]; do printf '%s\n' "$s"; done < "$1"; }; v=$({ lscpu 2>/dev/null || busybox lscpu 2>/dev/null || toybox lscpu 2>/dev/null; printf '\n@@CPUINFO@@\n'; r /proc/cpuinfo; printf '\n@@MIDR@@\n'; for f in /sys/devices/system/c…
Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
root@srv01:~$ gpu_info=$(for a in awk 'busybox awk' 'toybox awk'; do $a 'BEGIN { exit 0 }' </dev/null 2>/dev/null && break; done; r() { [ -r "$1" ] || return; while IFS= read -r s || [ -n "$s" ]; do printf '%s\n' "$s"; done < "$1"; }; v=$(for c in lspci 'busybox lspci' 'toybox lspci'; do p=$($c -Dnn 2>/dev/null) || p=; [ -n "$p" ] || { p=$($c -nn 2>/dev/null) || p=; }; [ -n "$p" ] || { p=$($c 2>/dev/null) || p=…
No such file or directory
root@srv01:~$ last_output=$(last 2>/dev/null)
bash: last: command not found
root@srv01:~$ filter_output=$( ( export LANG=C LC_ALL=C; echo '===SHELL_BEHAVIOR==='; printf 'path_err='; ( ./xxxxxx 2>&1 || true ) | ( head -c 250 2>/dev/null || busybox head -c 250 2>/dev/null || dd bs=250 count=1 2>/dev/null ) | ( tr -d '\n' 2>/dev/null || busybox tr -d '\n' 2>/dev/null || cat ); printf '\n'; printf 'cmd_err='; ( xxxxxx 2>&1 || true ) | ( head -c 250 2>/dev/null || busybox head -c 250 2>/dev…
bash: filter: No such file or directory
===SHELL_BEHAVIOR===
root@srv01:~$ printf 'UNAME:%s\n' "$uname"
UNAME:Linux srv01 4.15.0-213-generic #213-Ubuntu SMP Fri Jan 15 10:52:18 UTC 2021 x86_64
root@srv01:~$ printf 'ARCH:%s\n' "$arch"
ARCH:x86_64
root@srv01:~$ printf 'UPTIME:%s\n' "$uptime"
UPTIME:6825600.00 4500000.00
root@srv01:~$ printf 'CPUS:%s\n' "$cpus"
CPUS:6
root@srv01:~$ printf 'CPU_MODEL:%s\n' "$cpu_model"
CPU_MODEL:
root@srv01:~$ printf 'GPU:%s\n' "$gpu_info"
GPU:
root@srv01:~$ printf 'LAST:%s\n' "$last_output"
root@srv01:~$ printf 'FILTER:%s\n' "$filter_output"
root@srv01:~$ echo '111111' | sudo -S sh -c 'nproc 2>/dev/null || /usr/bin/nproc 2>/dev/null || busybox nproc 2>/dev/null || grep -c '\''^processor'\'' /proc/cpuinfo 2>/dev/null' || echo '111111' | sudo -S nproc 2>/dev/null || /usr/bin/nproc 2>/dev/null || busybox nproc 2>/dev/null || grep -c '^processor' /proc/cpuinfo 2>/dev/null || sh -c 'nproc 2>/dev/null || /usr/bin/nproc 2>/dev/null || busybox nproc 2>/dev…
111111
111111
root@srv01:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
root@srv01:~$ uname=$(uname -s -v -n -m 2>/dev/null || /bin/uname -s -v -n -m 2>/dev/null || /usr/bin/uname -s -v -n -m 2>/dev/null || busybox uname -s -v -n -m 2>/dev/null || ( [ -f /proc/version ] && head -1 /proc/version | cut -d' ' -f1 ) || ( [ -f /etc/os-release ] && grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"' ) || echo "")
Linux 4.15.0-213-generic #213-Ubuntu SMP Fri Jan 15 10:52:19 UTC 2021 x86_64
root@srv01:~$ arch=$(uname -m 2>/dev/null || /bin/uname -m 2>/dev/null || /usr/bin/uname -m 2>/dev/null || busybox uname -m 2>/dev/null || ( [ -f /proc/cpuinfo ] && grep -q "lm" /proc/cpuinfo && echo x86_64 ) || ( [ -f /proc/cpuinfo ] && grep -q "CPU architecture: 8" /proc/cpuinfo && echo aarch64 ) || ( [ -f /proc/cpuinfo ] && grep -q "CPU architecture: 7" /proc/cpuinfo && echo armv7l ) || echo "")
x86_64 )
aarch64 )
armv7l )
root@srv01:~$ uptime=$(cat /proc/uptime 2>/dev/null || busybox cat /proc/uptime 2>/dev/null)
6825600.12 12345600.45

Was hier passiert ist

automatisch erstellte Einschätzung, keine Gewähr

Was versucht wurde

Ein Angreifer meldete sich über SSH mit dem Benutzernamen root und dem schwachen Passwort 111111 an. Nach der Anmeldung führte er eine lange Kette von Shell-Befehlen aus, um systematische Informationen über die Hardware und das Betriebssystem zu sammeln. Die Skripte prüften dabei auf verschiedene Varianten von Standardwerkzeugen wie uname, nproc und lspci, um die Umgebung robust zu erkennen.

Was die Befehle bewirken

Die Befehle exportieren zunächst den Systempfad, um sicherzustellen, dass alle Standardprogramme gefunden werden. Danach werden Variablen wie uname, arch und cpus gesetzt, indem diverse Tools wie uname, nproc oder busybox aufgerufen werden, um Betriebssystem, Architektur und Prozessorkernanzahl zu ermitteln. Die Abfrage von gpu_info versucht, Grafikkarten über lspci zu identifizieren, was für Mining relevant ist. Der Befehl last_output prüft die Login-Historie, um mögliche andere Nutzer oder Sicherheitsmaßnahmen zu erkennen. Schließlich werden die gesammelten Daten strukturiert ausgegeben, damit der Angreifer sie automatisiert auswerten kann.

Worauf es hinauslief

Das primäre Ziel ist die Erkundung der Systemressourcen, insbesondere der CPU-Leistung und der Architektur. Dies deutet stark auf die Vorbereitung von Kryptomining hin, da die Abfrage von GPU-Informationen und CPU-Modellen typisch für die Suche nach rechenstarken Knoten ist. Es ist auch möglich, dass die Daten für die Erstellung eines Botnetzes gesammelt werden, um passende Malware-Varianten zu deployen.

Einordnung

Dieses Muster ist sehr verbreitet und stammt oft aus automatisierten Scannern oder Botnetzen, die nach schwachen SSH-Zugängen suchen. Die hohe Anzahl an Wiederholungen und die standardisierte Abfrage der Hardware-Parameter sind charakteristisch für massenhafte Angriffe, die auf Kryptomining oder die Rekrutierung von Zombierechnern abzielen.