Posts by ArtCore7

    Als er Online war hat er sich gemeldet, aber so wichtig kann es ihm auch nicht sein. Seit Donnerstag wo ich ihm die Anleitung zum Deaktivieren von PHP geschickt habe kam nichts mehr und er war auch nicht mehr online.

    Ich hab das aber eher aus Eigeninteresse gemacht und mir das ganze mal anzuschauen. Wollte mir auch mal die Shell und den Double-SHA256 in Hashcat hauen. Aber da ich gerade Polnischen Urlaub (Hausrenovierung) habe dachte ich lass euch mit den Files spielen.

    Eine Webseite die der Kollege zur Verteilung verwendet ist ja schon offline, die andere lebt noch.

    Da hackuni aber aktuell nicht antwortet und somit der PHP Prozess weiter läuft hab ich es ein wenig anders gemacht und nun sind alle 11 Domains + Subdomains wieder sauber und im Grundzustand mit kleiner abgeänderter index.html (PS: Nur 4 Seiten waren betroffen)

    image.png

    Ich bin folgendermaßen Vorgegangen:
    Aufbau bei hackuni: /domain1.de/httpdocs | /domain2.de/httpdocs usw...

    1. Zugriff auf Hauptordner domain1.de nehmen (chmod 500 domain1.de/)
    Dadurch ist die Seite von außen nicht mehr erreichbar und zeigt den bekannten 403 - Forbidden an:
    image.png

    2. Jetzt wäre Zeit den PHP Prozess zu killen, da aber keiner da -> Warten wir eben das Timeout von dem PHP Prozess ab, da das eval() ja nicht von außen erneut aufgerufen werden kann.
    In dem aktuellen Fall habe ich die Rechte vom Ordner am Mittag genommen und jetzt gerade aufgeräumt. Da der Prozess mit der Shell und das Reinfizieren durch Timeout nicht mehr lief und ein erneuter Aufruf von außen nicht erfolgen kann, ging das relativ Problemlos.

    3. Reste kontrollieren und HTML Seite replacen
    Der letzte Schritt war eigentlich nur alles zu kontrollieren ob doch irgendwo noch was rumliegt, dann überall die index.html von Netcup mit leicht abgeänderten Text reinkopiert und dann die Rechte wieder ordentlich gesetzt. Nun kann der Kollege hackuni sich wieder ausbreiten in der Hoffung ohne weitere Infektionen aus alten Backups.

    Wichtig: Hier war ALLES leer, außer eben die Infektion. Deswegen auch relativ einfach zu bereinigen. Wenn man Daten retten muss, sollte vorab ein komplettes Backup gezogen werden. Was ich hier schade finde, dass der Wunsch einfach alles zu löschen des Kunden nicht nachgekommen wird - Natürlich nach Absicherung seitens Netcup sehe ich da eigentlich keine Probleme. Ohne die Hilfe denke ich wäre die Malware bis zur Kündigung auf dem Webspace liegen geblieben.

    Final: So und für die Spielkinder unter euch, natürlich hab ich ein Backup für euch zum Spielen
    Hier die Dateien zum spielen und gerne analysieren. Denn hier kann das eh jeder besser:
    Zip: Ohne Passwort damit man es hier anhängen kann
    7z: Passwort: "iknowwhatido"

    Viel Spaß und Gute Nacht und diesmal ohne KI, ich hoffe das ist euch nun lieber ;)

    Hier gibt es keine Wordpress Installation zu bereinigen, da keine Wordpress Installation da - Nur der PHP Prozess der aktiv nachliefert. Deswegen muss hier vor der Bereinigung erst mal der PHP Prozess der immer wieder nachschiebt beendet werden. Und ja ich habe ein wenig Hintergrund mit IT-Security und Bereinigung von befallenen Endgeräten. Ich hab nur keine Lust die Zusammenfassung manuell zu machen oder eine "De-Obfuskierung" von Hand durchzuführen, wenn man die Arbeit abgeben kann. <- Und hier kostenlos unterstützt.

    Hier geht es aber nicht um die Bereinigung von irgendwelchen aktiven Installation, sondern erst mal wieder das Webhosting bereinigt hinzustellen.

    Die Infektion war auch schon auf der alten Seite und im Backup enthalten, ich habe von hackuni Zugriff aufs SSH bekommen und bin dran mit Ihm die Bereinigung durchzuführen, hierfür muss aber erstmal PHP von Ihm deaktiviert werden. Hier mal die KI unterstütze Analyse:

    Symptome

    • index.php im Webroot ist stark vergrößert (tausende Zeilen statt 2)
    • Unbekannte Verzeichnisse unter wp-content/ mit Zufalls-Hash-Namen (z.B. wp-content/ad6ccaf1/)
    • Darin: index.php oder edit.php mit obfuskiertem Code
    • Löschen hilft nicht – Dateien erscheinen nach wenigen Sekunden wieder
    • Im Access-Log: massenhaft 200 OK auf URLs die nicht existieren (/items/involved/123.htm, /goods.php?detail/...)
    • Alle diese Responses haben exakt dieselbe Byte-Größe

    Infektionskette (vereinfacht)

    Code
    httpdocs/index.php              ← Stufe 1: SEO-Cloaker + Trigger
        └── wp-content/[hash]/*.php ← Stufe 2: Remote-Code-Loader
                └── C&C-Server      ← Stufe 3: Web-Shell (im RAM, nie auf Disk)

    Stufe 1: index.php – SEO-Cloaker

    Die echte WordPress-index.php (normalerweise 2 Zeilen) wurde durch eine massiv obfuskierte Version ersetzt.

    Obfuskierungstechniken:

    • Hunderte goto-Sprünge um den Kontrollfluss zu verschleiern
    • Alle Strings als Oktal/Hex-Escape-Sequenzen ("\x47\x45\x54" = "GET")
    • C&C-Domain rückwärts eingebaut + per strrev() zur Laufzeit zusammengesetzt
    • Zusätzlich alle Zeichen um -5 verschoben (ASCII-Verschlüsselung)

    Was der Code macht:

    1. Prüft ob Besucher ein Suchmaschinen-Bot ist (Googlebot, Bingbot, Baidu, Yandex...)
    2. Für normale Nutzer: lädt WordPress normal
    3. Für Bots: liefert gefälschte Shop-Seiten mit JS-Redirect auf Spam-Domains aus
    4. Baut bei jedem Request den C&C-Server-Hostname zusammen und ruft Stage 2 auf
    5. Kann Google-Verifikationsdateien ins Webroot schreiben (Domain-Hijacking in Search Console)
    6. Exfiltriert das komplette $_SERVER-Array an den Angreifer

    Stufe 2: wp-content/[hash]/*.php – Stage-2 Loader

    Diese Dateien sind der eigentliche Regenerator. Solange sie aktiv sind, wird alles andere nach dem Löschen sofort neu erstellt.

    Zwei Varianten gefunden:

    Variante A (edit.php) – Voller HTTP-Client:

    • Baut URL rückwärts zusammen: https://*/1ser.txt
    • Holt PHP-Code vom C&C (cURL, Fallback: raw TCP-Socket)
    • Tarnt sich als echter Chrome-Browser (User-Agent-Spoofing)
    • SSL-Zertifikat-Verifikation deaktiviert
    • eval() auf den heruntergeladenen Code

    Variante B (index.php) – Backup-Loader:

    • Anderer C&C: https://*/tt.txt
    • Bewusst redundant – fällt Server A aus, übernimmt Server B

    Stufe 3: tt.txt – die eigentliche Payload (Web-Shell)

    Das ist der gefährlichste Teil. Die Datei auf dem C&C-Server enthält:

    PHP
    <?php
    // Passwortschutz (doppeltes SHA256)
    if (hash('sha256', hash('sha256', $_POST['pwdyt'])) == '[hash]') { ... }
    
    // Komprimierte Web-Shell (~35KB gzinflate)
    $ULTRA = "eJwB...";
    
    // Triple-kodierter eval:
    @eval(base64_decode(base64_decode("\x57\x6c..."))); 
    // → eval(gzinflate(base64_decode($ULTRA)));

    Die Web-Shell wird nie auf Disk geschrieben – sie läuft ausschließlich im PHP-Prozess-Speicher. Enthält nach Analyse:

    • File Manager (lesen/schreiben/löschen)
    • Shell-Command-Execution
    • PHP-eval-Interface
    • SQL-Client (direkter Datenbankzugriff)
    • File-Upload
    • Reverse-Shell-Funktionalität

    Wenn es um einen Verein geht schau doch mal in folgenden Thread, eventuell ist das was für dich:


    Mantik IT
    April 24, 2026 at 12:16 AM

    Als ich früher mit WordPress auf einem WH war, waren die Datenbank Querys sehr träge. Hat sich auch mit Query Monitor gezeigt... Würde dir auch mal empfehlen das ganze damit anzugucken was wirklich passiert... Sieht man da sehr gut. Was lädt viel, wo sind die hohen Zeiten usw...

    https://de.wordpress.org/plugins/query-monitor/

    Beispiel:
    grafik.png
    Da kann man dann wirklich jeder Query sehen und die Response Times der Datenbank, auch PHP Fehler oder Plugins die Probleme machen. Grad nochmal getestet ;)

    Aber gibt es hier den eine Antwort die was bringen würde?

    Sagt man nun, wenn die RAM Preise wieder sinken dreht man die Preise wieder zurück, dann kommt aber die nächste Krise und die Preise bleiben doch, wird es wieder Leute geben die nur meckern.

    Sagt man, die Preise bleiben, dann meckern die Leute.

    Sagt man, die Preise steigen in 6 Wochen erneut wegen anstehender Insolvenz. Ja auch da meckern die Leute

    Ich nehm die 20% hin und gut ist, da nur Privat ist das mein Problem. Verdiene ich mit den Servern Geld lege ich das eben auch wieder auf den Kunden um.

    Ob die KI es schafft die 2 PHP Files vor dem Ausführen anzupassen?

    Sorry, ich verstehe ja das man KI zur Unterstützung und Hilfe hernimmt, man sollte aber verstehen was die KI gerade so für Halluzinationen hat.

    Und dann noch ganze Beiträge von der KI schreiben lassen, mit der Fütterung von den Antworten im Thread geht echt zu weit und wir können hier einen Chatbot einpflanzen der sich mit dir unterhält.

    Kriegt man beim Webhosting nicht eine Subdomain oder ähnliches wie 123912378.netcupwebhosting.com? Eine Domain sollte doch optional sein? Ich habe bisher kein Webhosting gebucht und daher keine Ahnung davon

    Ich verstand es jetzt so, daß er alles über die Subdomain bisher gemacht hat und nun seine neue Domain verwenden möchte

    Hab ich auch so verstanden...

    Dann müsste er den Domain Root nur auf das Installationsverzeichnis von WordPress zeigen lassen wo die index.php von WordPress liegt und ist fertig.

    Problem wird sein, dass wenn die Installation mit der Subdomain gemacht wurde, dass diese auch in der Datenbank steht und noch eine Migration von WordPress auf die neue Domain erfolgen muss.

    Darf ich noch erfahren was für eine Webseite du selbst geschrieben hast mit diesem PHP / HTML und CSS das mehr als 25 GB groß ist - das müssen echt viele Zeilen Code sein.

    Braucht gar nicht soviel Zeilen ;)

    Wegen dem wollte ich den LLM Response auch nicht hier posten, da ohne eigener Prüfung eben genau zu so was kommen kann. Fande die Antwort aber erstmal logisch. Was doch noch selbst verifiziert werden muss, dazu hat die Z3it gefehlt :*