Prüfung eines Magento-Shops nach StyleSmuggler? Hotfix, Forensik und Bereinigung

StyleSmuggler zeigt, wie wichtig es ist, bei einem möglichen Angriff auf einen Magento-Shop nicht nur die eigentliche Schwachstelle zu schließen. Entscheidend ist auch die Frage, ob bereits Schadcode ausgeführt wurde, verdächtige Prozesse laufen oder dauerhafte Zugänge auf dem Server eingerichtet wurden. Eine reine Installation eines Hotfixes reicht in einem solchen Fall nicht aus, wenn das System zuvor bereits kompromittiert wurde.

Dieser Beitrag zeigt konkrete Schritte, mit denen sich ein Magento-System auf typische Indicators of Compromise prüfen lässt. Dazu gehören unter anderem auffällige Prozesse wie kworker-linux, fc-cache oder chronyd, ungewöhnliche Cronjobs, verdächtige Dateien und Verzeichnisse sowie aktive Netzwerkverbindungen. Zusätzlich werden bekannte Domains, IP-Adressen, Dateipfade und Hashwerte aufgeführt, die im Zusammenhang mit den beschriebenen Angriffen beobachtet wurden.

Das Ziel ist eine möglichst strukturierte Prüfung von der ersten Kontrolle über die Forensik bis zur Bereinigung und Absicherung des Systems. Wichtig dabei ist, einzelne Treffer nicht isoliert zu bewerten. Erst das Zusammenspiel aus Prozessen, Dateien, Netzwerkverbindungen, Logs und weiteren Indicators of Compromise liefert eine belastbare Grundlage für die Einschätzung, ob ein Magento-System betroffen sein könnte.

0. Read first

https://sansec.io/research/stylesmuggler-0day

1. Backdoor check durchführen

Sie sollten nicht verifizierte Aktivitäten von Prozessen überprüfen, die üblicherweise als kworker-linux, fc-cache und chronyd bezeichnet werden.

1a. Sansec empfohlene Checks

crontab -l | grep -i gvfsd
ls -la ~/.local/share/.gvfsd/ ~/.cache/fontconfig/fc-cache /tmp/.kw_* /tmp/.cache_* /tmp/.gvfsd-* /tmp/.fc-*/fc-cache /tmp/fc-cache /tmp/.chrony-*/chronyd 2>/dev/null
ps -eo pid,comm,args | grep -iE 'kworker|fc-cache|chronyd'
grep -r 'crontab command not allowed' /var/log/
grep -ril 'x_trace_' var/report/

1b. Check für seltsame aussehende Prozesse

ps -eo pid,comm,args | grep -iE 'kworker-linux|fc-cache|chronyd

Wir empfehle zu prüfen, ob es nicht verifizierte Prozesse gibt, die regelmäßig ausgeführt werden – zum Beispiel alle 5 Minuten.

1c. Überprüfung von Arbeitsprozessen, die von PHP, Redis und sonstigen üblicherweise benötigten Komponenten abweichen.

ps auxww | grep -v -E '\[|php-fpm|nginx|mysql|redis'

1d. Network check

Überprüfen, ob alle aktiven Verbindungen gültig erscheinen.

ss -tulnp

Die am häufigsten genutzten Ports ausschließen, gefiltert nach dem Status „established“ (eine tatsächlich offene Zwei-Wege-Verbindung, nicht LISTEN/TIME_WAIT/CLOSE_WAIT).

ss -tanp state established '( sport != :80 && sport != :443 && sport != :3306 && sport != :6379 )'

Firewall Konfiguration

Wir schlage vor, die „Indicators of Compromise“ aus dem Sansec-Artikel zu berücksichtigen.

# malware download
https://www.incofar.it/js/jquery/plugins/ajaxfileupload/mag.txt
247.cdnflare.xyz                   malware download host
209.141.43.95                      malware download host

# C2 servers
99.84.67.186:443                   C2, WebSocket over TLS
windwsecurity.run:443              remote shell, WebSocket over TLS (TCP)
ntp.timesysnc.net:123              C2, custom NTP-shaped traffic (UDP)
time.microsft.run:123              C2, custom NTP-shaped traffic (UDP)
pool.microsft.studio:123           C2, custom NTP-shaped traffic (UDP)
ntp.timesync.to:123                C2, custom NTP-shaped traffic (UDP), fc-cache build
185.157.160.251:123                C2, A record for ntp.timesync.to and ntp.timesysnc.net on 2026-09-07
ntp.synctime.to:123                C2, fallback
ntp.syncstime.to:123               C2, fallback

# attacker sources
88.216.72.181                      attacker source, seen at multiple victims
88.216.72.182                      attacker source
182.182.152.48                     attacker source
76.31.99.207                       attacker source, failed exploit attempt
209.73.130.148                     attacker source, successful exploit attempt
77.239.124.107                     attacker source, follow-up requests
98.224.189.28                      attacker source

# exfiltration domains
checkout-cdn.com

User-Agent: python-requests 2.15.0 on the implant operator's requests

sha256  e315687a1dfe61ef4a5a5642214db6d3b2b05d81391285eebc2af664641a26a7
sha256  b79dfdc1eed860e0b76c629d6adfce251db379b0b45a6d728d4ef483f7551420
sha256  4352cabaa451e5a894535fbcc4d46628701303322a13745cb5479d7d0534ae8e  kworker-linux-x64 (new build, 209.141.43.95), 2270031 bytes
sha256  d2fbf9eb75c495bfea48790d3b228fab0c15a282419c3d3f5e49294c4e1a3e82  kworker-linux-arm64 (new build, 209.141.43.95)
sha256  1a3374ffac5b0a62467612f264c49792d206304d4514409c982325c91231375d  chronyd variant, captured from /proc/<pid>/exe

/tmp/.kw_<random><random>
/tmp/.cache_<random><random>      drop-path variant
/tmp/.fc-<8hex>/fc-cache
/tmp/fc-cache                     drop-path variant
/tmp/.fc_<8hex>.lock              holds the implant PID
/tmp/.chrony-<8hex>/chronyd       chronyd variant, same agent ID as the fc-cache drop
~/.local/share/.gvfsd/gvfsd-user
~/.local/share/.gvfsd/.gvfsd_<8hex>.lock
~/.cache/fontconfig/fc-cache

crontab: */5 * * * * exec <home>/.local/share/.gvfsd/gvfsd-user
crontab: 13,43 * * * * <home>/.cache/fontconfig/fc-cache >/dev/null 2>&1
crontab: 57,27 * * * * /tmp/.chrony-<8hex>/chronyd >/dev/null 2>&1

process [kworker/u:8:0]
process fc-cache
process chronyd

second attacker (unrelated tooling, same victims):
sha256  d61217ca0bca83204302fa7b41935ce36f73764559c156d5c980f2fedddffb6e   PHP dropper
pub/media/catalog/product/cache/ss_<10hex>/sync_<10hex>.php   web shell
X-Cache-Token: fced27f6d57702565353ecc11722533b   header the web shell requires, 404 without it
457cfa2fb7p5.daf892t5qau4og8pi4cghbc6fhm1dim3u.oast.site   callback confirming code execution (public service, also used legitimately)
ss5_457cfa2fb7                    marker echoed into the page outside the PHP tags
ss6_457cfa2fb7_                   marker on the recon probe, same campaign ID
457cfa2fb7d<n>-<chunk>.daf892t5qau4og8pi4cghbc6fhm1dim3u.oast.site   recon exfil, one label per 50-char chunk
User-Agent: Mozilla/5.0           on the recon probe
POST /graphql   recon, PHP in the Store: header, body {"query":"query { storeConfig { store_code } }"}

POST /paypal/transparent/response/?<?=eval(base64_decode('....
GET /customer/section/load/?sections=customer&force_new_section_timestamp=true
POST /graphql?styles[....]=

Minimal /etc/hosts config:

127.0.0.1 247.cdnflare.xyz
127.0.0.1 ntp.syncstime.to
127.0.0.1 windwsecurity.run
127.0.0.1 ntp.timesysnc.net
127.0.0.1 time.microsft.run
127.0.0.1 pool.microsft.studio
127.0.0.1 ntp.timesync.to
127.0.0.1 ntp.synctime.to

Wir schlage außerdem vor, Folgendes zu blockieren::

87.120.219.207            (paths seen: /bxbhvi3xe5, /153hghcjng)
transfer.chinow.abrdns.com     (path seen: /get/psk_agent.sh)
msftconnecttest.shop       (typosquat of the legitimate Microsoft NCSI domain)

Sie möchten weitere Informationen zu Magento Onlineshop Betreuung?

Sprechen Sie uns gerne für ein unverbindliches und natürlich kostenlose Gespräch an. Gerne tauschen wir uns über mögliche Ideen/Gedanken aus.

Weitere Informationen finden Sie auch hier:

Informationen zu StyleSmuggler Magento Sicherheitslücke

Informationen zu Magento Betreuung und Verbesserungen

Informationen zu Programmierung individueller Magento Erweiterungen (Funktionen)

Informationen zu Magento Schnittstellen Programmierung

Informationen zu Magento als B2B Onlineshop als Bestellportal

Noch keine Kommentare bis jetzt.

Einen Kommentar schreiben