Entfernen der Badbox Malware von der bei AliExpress gekauften TV-Box H20pro (Allwinner H616 CPU und Mali G31 GPU)

|
Die Geschichte beginnt damit, dass ich mir zwei Android-TV-Boxen auf AliExpress gekauft habe und dann irgendwann eine Warn-e-mail von meinem Provider Vodafone bekam, der mir mitteilte, dass irgendwas bei mir mit der Badbox-Malware infiziert sei und sein Unwesen im Internet treibe.
Das musste ich mir natürlich genauer anschauen. Zuerst analysierte ich das Android der beiden Boxen, ob irgendwas verdächtig ist und fand schon ein paar Apps, die mir nicht ganz koscher vorkamen.
Also guckte ich mir auch die Internet-Kommunikation für die H20 Box mit Rockchip RK3228a CPU (32bit Quad Core) mit einer Mali-400MP2 GPU an. Und dann später auch für die zweite, leistungsfähigere Box, nämlich die H20pro mit Allwinner 616-Chipsatz und G31 Mali-Chipsatz, beide gekauft im Topsion Store über AliExpress. Und auch auf der zweiten Box fand ich die Malware vor.
In letztem Artikel dieser Reihe habe ich versucht, die H20 Box (mit (RK3228a CPU und Mali-400MP2 GPU) von der Malware zu befreien, hatte aber leider nur bedingt Erfolg. Jenen Artikel sollte man auf jeden Fall im Vorgang lesen, um zu wissen, um was es hier genau geht. Denn ich werde hier nicht alles noch einmal haarklein wiederholen, was ich dort schon erwähnt habe.
Heute soll es um die Desinfektion (oder den Versuch) der zweiten Box, der H20pro mit Allwinner H616-CPU und Mali G31-GPU gehen. Diese ist um einiges leistungsstärker als die H20 aus dem letzten Artikel und ich würde sie wirklich gerne weiter benutzen.
Viele TV-Boxen haben den gleichen oder einen ganz ähnlichen Chipsatz und heißen T95 (Max/Pro), X12 (Plus), X88 (Pro), G96 (Max), H96 (Max), X96q, MXQ (pro), 4K, 6K, 8K oder ähnlich. Die Wahrscheinlichkeit, dass diese auch mit der Badbox Malware infiziert sind, ist hoch. Möglicherweise verwenden sie aber andere Malware-Domains. Da es so wichtig ist, hier noch einmal die Zusammenstellung der Command-and-Control-Domains, die ich anhand der Quellen unten zusammentragen habe:
6f33933ce4a5c0e1b32fea736a61351a.com
bitemores.com
bluefish.work
cast.jutux.work
catmos99.com
cbphe.com
cbpheback.com
coslogdydy.in
cxlcyy.com
cxzyr.com
dcylog.com
echojoy.xyz
flyermobi.com
giddy.cc
goologer.com
home.1ztop.work
huuww.com
jolted.vip
jutux.work
logcer.com
meiboot.com
msohu.shop
mtcpmpm.com
old.1ztop.work
pccyy.com
pcxrl.com
pcxrlback.com
pixelscast.com
pixlo.cc
soyatea.online
swiftcode.work
tvsnapp.com
veezy.sitev
ycxad.com
ycxrl.com
ycxrldow.com
yydsmr.com
ztword.com
Erste Maßnahme: Verbindung zu den C&C-Domains kappen
Als erste Maßnahme hatte ich ja bereits die Domains ycxrl.com, über die die H20pro Box Verbindung zum Command-and-Control-Server aufnehmen wollen, bei mir im DNS-Server Pi-Hole umgeleitet, so dass sie nicht mehr ins Internet kommt.Damit auch keine (evtl. schädlichen) Firmware-Updates mehr möglich sind, leite ich auch die Domains ota.szhxws.com und www.szhxws.com um. Die erste scheint für Firmware-Updates zuständig zu sein. Bei der zweiten telefoniert die Box wohl einfach nur für statistische Zwecke nach Hause. Beides wird durch die Domain-Umleitung durch Local DNS / DNS Records - Einträge in meinem Pi-Hole unterbunden.
Wer keinen eigenen DNS-Server wie Pi-Hole laufen hat, kann auch direkt auf der Box die Verbindungen zu den verdächtigen Domains unterbinden, indem er sie in /etc/host einträgt, was sogar noch sicherer ist und auch funktioniert, falls der eigene DNS-Server mal ausfällt:
/etc/hosts
127.0.0.1 dcylog.com
127.0.0.1 ycxrl.com
127.0.0.1 ota.szhxws.com
127.0.0.1 www.szhxws.com
127.0.0.1 szhxws.com
![]() |
Warnung: Mit den falschen ADB-Befehlen oder falls man die falschen Apps deinstalliert, kann man seine TV-Box durchaus bricken, sprich unbrauchbar machen, so dass sie nicht mehr läuft. Also seid vorsichtig und lest alles genau durch und tut nur Dinge, von denen ihr wisst, dass sie die richtigen sind. Ich übernehme keine Haftung, für rein gar nichts. Falls eure TV-Box nicht mehr startet, hilft eventuell ein Hardware-Reset: Bei den H20 und H20pro (und ähnlichen) Boxen befindet sich der Reset-Taster hinten in der Klinkenbuchse (kein Scherz!) und muss mit einem Zahnstocher oder etwas anderem, nicht elektrisch leitendem, gehalten werden, während man das Stromkabel einsteckt. Video dazu unter https://youtu.be/kIPIU03FjYE. Bei meiner H20pro kam dann leider aber kein Wiederherstellungsmenü, sondern der Bildschirm blieb schwarz, nur die LED wurde rot. Bei anderen, mit Badbox infizierten Boxen (von denen es reichlich gibt, siehe erster Artikel der Reihe) sollte die Dekontaminierung ganz ähnlich verlaufen. Die C&C-Domains kann man mit Pi-Hole oder PCAPdroid herausfinden (siehe dazu dritter Artikel der Reihe. Die Malware-Apps werden sich unterscheiden, das Prinzip ist aber das Gleiche. Bei anderen Boxen als der H20 und H20pro muss man natürlich noch mehr Umsicht walten lassen. Wie gesagt: Alles hier auf eigenes Risiko! |
Die Datei /etc/hosts kann man über ADB editieren. Wie man ADB unter Windows installiert, erklärt mein Artikel über den ADB-Zugriff auf ein Xiaomi-Redmi-Android-Smartphone. Auch die Android TV-Box ist ein Android-Gerät und da läuft es genauso. Die Befehle, die in dem Artikel nach "ADB-Shell aufrufen und Befehle eingeben" folgen lasst ihr für diesen Fall natürlich weg, die betreffen das nur das im Artikel besprochene Speicherkarten-Problem dort.
Stattdessen müssen wir folgende Befehle eingeben:
11:05:03.43 C:\ >> adb root
adbd is already running as root
11:06:39.11 d:\TEMP\ho >> adb remount
W DM_DEV_STATUS failed for scratch: No such device or address
E [liblp]No device named scratch
[liblp]Partition scratch will resize from 0 bytes to 517459968 bytes
[liblp]Updated logical partition table at slot 0 on device /dev/block/by-name/super
[libfs_mgr]Created logical partition scratch on device /dev/block/dm-3
[libfs_mgr]__mount(source=/dev/block/dm-3,target=/mnt/scratch,type=f2fs)=0: Success
Using overlayfs for /system
Using overlayfs for /vendor
Using overlayfs for /product
[libfs_mgr]__mount(source=overlay,target=/system,type=overlay,upperdir=/mnt/scratch/overlay/system/upper)=0
[libfs_mgr]__mount(source=overlay,target=/vendor,type=overlay,upperdir=/mnt/scratch/overlay/vendor/upper)=0
[libfs_mgr]__mount(source=overlay,target=/product,type=overlay,upperdir=/mnt/scratch/overlay/product/upper)=0
remount succeeded
Diese vielen Ausgaben beim remount kommen mir komisch vor. Normalerweise kommen da keine Ausgaben. Da müssen wir gleich noch überprüfen, ob das System noch hochfährt. Scheinbar wurde eine "Scratch"-Partition mit 517 MB angelegt.
Nach diesen Vorbereitungen geht es weiter in der ADB Shell, also direkt auf der TV-Box. Schauen wir erst einmal, was in der /etc/hosts so drin steht und machen eine Sicherheitskopie. Danach lade ich meine auf dem PC editierte hosts.4-Datei, die die Umleitung auf meine Webserver unter der IP 10.10.10.4 enthält, auf die Box und überprüfe noch einmal das Ergebnis:
11:11:07.36 d:\TEMP\ho >> adb shell cat /etc/hosts
127.0.0.1 localhost
::1 ip6-localhost
11:11:55.50 d:\TEMP\ho >> adb shell cp /etc/hosts /etc/hosts.bak
11:12:28.13 d:\TEMP\ho >> adb push hosts.4 /etc/hosts
hosts.4: 1 file pushed, 0 skipped. 0.1 MB/s (174 bytes in 0.001s)
11:12:47.47 d:\TEMP\ho >> adb shell cat /etc/hosts
127.0.0.1 localhost
::1 ip6-localhost
10.10.10.4 dcylog.com
10.10.10.4 ycxrl.com
10.10.10.4 ota.szhxws.com
10.10.10.4 www.szhxws.com
10.10.10.4 szhxws.com
- keinen Kontakt mehr möglich zu den aufgeführten Command-and-Control-Servern
- keine Firmware-Updates mehr (aber wozu auch, wenn alles läuft)
- kein Nachhause-Telefonieren zum Hersteller mehr
Später kann ich noch 127.0.0.1 statt 10.10.10.4 eintragen, damit die Anfragen die Box gar nicht verlassen. Aber für Beobachtungszwecke lasse ich das erst einmal so.
Danach fahre ich die Box neu hoch. Die Scratch-Partition scheint keine Auswirkungen zu haben, denn es funktioniert alles einwandfrei. Allerdings auch die Malware. Die entsprechenden Einträge tauchen kurze Zeit im Webserver-Logfile auf:
2025-01-30 10:06:37 10.10.10.4 GET /ott/dev/plugin_conf.xml - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 301 0 0 7
2025-01-30 10:06:37 10.10.10.4 GET /ott/dev/plugin_conf.xml - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 50
2025-01-30 10:06:38 10.10.10.4 GET /Update/cupid/android_tv_box/AB42G/10_29/version.json - 80 - 10.10.10.200 okhttp/3.4.1 - 404 0 2 11
2025-01-30 10:08:01 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 235
2025-01-30 10:08:31 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 5
2025-01-30 10:08:46 10.10.10.4 GET /Update/cupid/android_tv_box/AB42G/10_29/version.json - 80 - 10.10.10.200 okhttp/3.4.1 - 404 0 2 7
2025-01-30 10:09:01 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 4
2025-01-30 10:10:01 10.10.10.4 POST /terminal/client/register - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 6
2025-01-30 10:10:31 10.10.10.4 POST /terminal/client/register - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 5
2025-01-30 10:11:01 10.10.10.4 POST /terminal/client/register - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 4
2025-01-30 10:19:31 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 6
2025-01-30 10:20:01 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 4
2025-01-30 10:20:31 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 3
2025-01-30 10:21:01 10.10.10.4 POST /terminal/client/eventinfo - 80 - 10.10.10.200 Dalvik/2.1.0+(Linux;+U;+Android+10;+android_tv_box+Build/QP1A.191105.004) - 404 0 2 4
Zweiter Schritt: eine Ersatz-Launcher-App besorgen
Auf anderen TV-Boxen, die Sicherheitsforscher untersucht haben, versteckte sich die Schadsoftware oft im Launcher. Der Launcher ist das Stück Software, das nach dem Hochfahren angezeigt wird, um darin die Apps auszuwählen, die man starten will - darum ja auch "Launcher", englisch für "Starter". Der sieht im Original so aus:
Der sollte auf jeden Fall vom Gerät runter, da er häufig Nest der Malware ist. Das Problem ist nur, ohne Launcher kann man keine Apps mehr starten! Also muss vorher, also bevor wir den wohl infizierten Original-Launcher vom Gerät löschen, ein Alternativ-Launcher installiert werden. Davon gibt es einige im Google Play Store zu finden, von dem man sich im Prinzip einen aussuchen kann, der einem gefällt. Aber daran denken, dass der Wunschkandidat auf einer TV-Box mit Fernbedienung und nicht auf einem Smartphone mit Touch laufen soll.
Ich habe mir den Simple TV Launcher ausgesucht. Der ist schön schlank und schnell ohne unnötigen Schnick-Schnack und ich finde sehr gut bedienbar mit den Pfeiltasten auf der Fernbedienung. Ich will nicht mit der Maus-Emulation rummachen, wenn ich nur eine App starten will. Das sieht dann so aus und ich habe alles, was ich brauche:


Ich kann mir einstellen, wieviele Zeilen und Spalten ich haben möchte und habe dann dementsprechend viele Felder, die ich mit installierten Apps belegen kann.
Die kann ich nach einem OK-Klick auf ein leeres Feld (+) aus der Liste der installierten Apps auswählen.
Und wenn ich mehr Programme brauche, passe ich einfach die Anzahl der Felder an. Easy-Peasy und genug für mich.
Wichtig ist, dass der Launcher vorher aktiv war, also der Auswahl-Dialog angezeigt wird, indem gefragt wird, ob man den ersten, vorinstallierten oder den zweiten, alternativen Launcher benutzen möchte.
Ab da an kennt Android den Launcher und nimmt automatisch den Zweiten, wenn der Erste gelöscht wurde.
Dritter Schritt: verdächtige Apps deaktivieren oder deinstallieren
Jetzt heißt die Devise: Vorsichtig sein und Geduld haben.Vorsichtig deshalb, weil wir nicht die falschen System-Apps entfernen wollen, die dann vielleicht fehlen, damit das System auf der TV-Box startet und korrekt läuft.
Geduldig deshalb, weil wir uns eine nach der anderen, verdächtigen App vornehmen und dann überprüfen, ob die Zugriffe auf die Domains dcylog.com bzw. ycxrl.com und ota.szhxws.com sowie www.szhxws.com aufhören. Die ersten beiden sind für die Malware, die beiden letzten für Systemupdate und Nachhause-Telefonieren.
Ob die DNS und HTTP-Abfragen noch aktiv sind, können wir mit PCAPdroid, Firewall ohne Root oder dergleichen direkt auf dem Android-Gerät sehen. Oder wir leiten doch noch einmal den Internetverkehr für die Domains auf eine eigene IP mit einem Webserver um, dessen Logfiles wir dann beobachten. Dann müssen wir allerdings die Hosts-Datei wieder zurücksetzen, weil zur Zeit ja nichts aus der Box mehr raus geht für die dort definierten Bad-Domains.


PCAPdroid spuckt für die Update-Requests nur "Android" aus und für die C&C-Requests ebenfalls nur "Android".
Auch die Überprüfung via netstat liefert nur einen brauchbaren Kandidaten für die Update-Anfragen. Für die Malware-Anfragen wird wieder nur "system_server", wie schon bei der H20 Box, angegeben.
Das Versteckspiel beherrscht die Malware also auch auf dieser Box.
12:34:52.92 d:\TEMP >> adb root
restarting adbd as root
12:35:28.53 d:\TEMP >> adb shell netstat -t -n -p -a -W -e
Active Internet connections (established and servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program Name
tcp6 0 0 ::ffff:10.10.10.200:51252 ::ffff:10.10.10.4:80 ESTABLISHED 1000 44366 3733/com.hx.update
tcp6 4328 0 ::ffff:10.10.10.200:51254 ::ffff:10.10.10.4:80 ESTABLISHED 1000 40215 2133/system_server
tcp6 4328 0 ::ffff:10.10.10.200:51256 ::ffff:10.10.10.4:80 ESTABLISHED 1000 41172 2133/system_server
tcp6 4328 0 ::ffff:10.10.10.200:51258 ::ffff:10.10.10.4:80 ESTABLISHED 1000 42736 2133/system_server
tcp6 4328 0 ::ffff:10.10.10.200:51260 ::ffff:10.10.10.4:80 ESTABLISHED 1000 42757 2133/system_server
Der Request POST /terminal/client/eventinfo liefert allerdings wieder nur system_server.
Na, dann fange ich doch einmal mit dem Update-Service an und deaktivieren den. Aber vorher mache ich ein Backup der /system/app und /system/priv-app-Verzeichnisse:
12:57:53.19 d:\TEMP >> adb shell
android_tv_box:/ # cd system/
android_tv_box:/system # ls
apex app bin build.prop etc fonts framework lib media preinstall priv-app product recovery-from-boot.p usr vendor xbin
android_tv_box:/system # ls app
AllwinnerGmsIntegration BookmarkProvider CtsShimPrebuilt GoogleContactsSyncAdapter HXUserManual PacProcessor SecureElement Update
AppCleaner BuiltInPrintService DragonAgingTV GoogleExtShared KeyChain PartnerBookmarksProvider SimAppDialog WallpaperBackup
BasicDreams CertInstaller DragonBox GoogleTTS Music PlatformCaptivePortalLogin SystemUpdate WebScreensaver
Bluetooth Chrome EasterEgg HLauncher NfcNci PrintRecommendationService TextViewer WebViewGoogle
BluetoothMidiService CompanionDeviceManager GalleryTV HTMLViewer OsuLogin PrintSpooler TvdVideo
android_tv_box:/system # ls priv-app/
ApkBridge DownloadProviderUi GooglePartnerSetup ManagedProvisioning SharedStorageBackup UserDictionaryProvider
AutoTestTool DynamicSystemInstallationService GoogleRestore MediaProvider Shell Velvet
BackupRestoreConfirmation ExternalStorageProvider GoogleServicesFramework MmsService StatementService VideoTest
BlockedNumberProvider FusedLocation HXDeviceMonitor MtpDocumentsProvider TeleService VideoTestGuard
BugReport GmsCore HXDeviceTest_v2 MusicFX Telecom VpnDialogs
CalendarProvider GoogleBackupTransport HttpSpeedTest_builtin PermissionController TelephonyProvider
ContactsProvider GoogleConfigUpdater HxHttpVideo PlatformNetworkPermissionConfig Tubesky
CtsShimPrivPrebuilt GoogleExtServices InProcessNetworkStack ProxyHandler TvProvider
DocumentsUI GoogleOneTimeInitializer InputDevices SettingsAssist TvSettings
DownloadProvider GooglePackageInstaller LocalTransport SettingsProvider TvdFileManager
android_tv_box:/system # exit
12:59:15.61 d:\TEMP >> md h20pro
12:59:23.72 d:\TEMP >> cd h20pro
12:59:26.52 d:\TEMP\h20pro >> md app
12:59:33.32 d:\TEMP\h20pro >> md priv-app
12:59:36.15 d:\TEMP\h20pro >> cd app
12:59:42.95 d:\TEMP\h20pro\app >> adb pull /system/app
/system/app/: 120 files pulled, 0 skipped. 13.4 MB/s (394995198 bytes in 28.180s)
13:00:25.69 d:\TEMP\h20pro\app >> cd ..\priv-app
13:00:40.60 d:\TEMP\h20pro\priv-app >> adb pull /system/priv-app
/system/priv-app/: 159 files pulled, 0 skipped. 13.6 MB/s (646214710 bytes in 45.396s)
13:04:31.59 d:\TEMP\h20pro >> adb shell pm list packages | grep -i hx
package:com.hx.autotesttool
package:com.hx.httpspeedtest
package:com.hx.usermanual
package:com.hx.guardservice
package:com.hx.devicemonitor
package:com.hx.update
package:com.hx.appcleaner
package:com.hx.mboxlauncher
package:com.hx.httpvideotest
package:com.hxdevicetest
package:com.hx.videotest
package:com.hx.apkbridge
13:06:45.36 d:\TEMP\h20pro >> adb shell ps | grep -i hx
system 2886 1856 1022504 75708 SyS_epoll_wait 0 S com.hx.autotesttool
system 2929 1856 1026564 80380 SyS_epoll_wait 0 S com.hxdevicetest
system 2954 1856 1020628 72864 SyS_epoll_wait 0 S com.hx.videotest
system 3730 1856 1025108 79352 SyS_epoll_wait 0 S com.hx.devicemonitor
13:07:13.32 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.update
Success
13:07:25.54 d:\TEMP\h20pro >> adb reboot
Machen wir uns gleich weiter auf die Jagd nach der App, in der die Malware steckt. Das Package com.hx.mboxlauncher wäre ein Verdächtiger, denn bei anderen Sicherheitsvorkommnissen dieser Malware versteckte sich die Malware gerne mal in Launcher (auch wenn das bei der H20 Box nicht der Fall war).
13:29:27.54 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.mboxlauncher
Success
13:33:24.48 d:\TEMP\h20pro >> adb reboot
Doch dann fällt mir auf: com.hx.mboxlauncher ist gar nicht deinstalliert:
13:38:29.34 d:\TEMP\h20pro >> adb shell pm list packages | grep -i hx
package:com.hx.autotesttool
package:com.hx.httpspeedtest
package:com.hx.usermanual
package:com.hx.guardservice
package:com.hx.devicemonitor
package:com.hx.appcleaner
package:com.hx.mboxlauncher
package:com.hx.httpvideotest
package:com.hxdevicetest
package:com.hx.videotest
package:com.hx.apkbridge
13:39:07.60 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.mboxlauncher
Success
13:39:27.84 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.mboxlauncher
Failure [not installed for 0]
Jetzt fehlt der Eintrag seltsamerweise:
13:43:04.56 d:\TEMP\h20pro >> adb shell pm list packages | grep -i hx
package:com.hx.autotesttool
package:com.hx.httpspeedtest
package:com.hx.usermanual
package:com.hx.guardservice
package:com.hx.devicemonitor
package:com.hx.appcleaner
package:com.hx.httpvideotest
package:com.hxdevicetest
package:com.hx.videotest
package:com.hx.apkbridge
13:29:27.54 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.mboxlauncher
Success
13:08:02.02 d:\TEMP\h20pro >> adb root
restarting adbd as root
In der Zwischenzeit sind einige neue POST /terminal/... eingetrudelt. In com.hx.mboxlauncher war die Malware wohl nicht drin.
Also deinstalliere ich gleich ein bisschen mehr. Nehmen wir uns zuerst die laufenden Prozesse vor:
13:49:25.97 d:\TEMP\h20pro >> adb shell ps | grep -i hx
system 2841 1858 1022504 75940 0 0 S com.hx.autotesttool
system 2893 1858 1027588 80848 0 0 S com.hxdevicetest
system 2913 1858 1021684 73216 0 0 S com.hx.videotest
system 3697 1858 1025108 79492 0 0 S com.hx.devicemonitor
13:51:27.74 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.autotesttool
Success
13:52:19.86 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hxdevicetest
Success
13:52:25.66 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.videotest
Success
13:52:31.48 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.devicemonitor
Success
13:52:37.96 d:\TEMP\h20pro >> adb reboot
13:52:47.36 d:\TEMP\h20pro >> adb root
restarting adbd as root
13:55:37.81 d:\TEMP\h20pro >> adb shell ps | grep -i hx
13:55:41.30 d:\TEMP\h20pro >> adb shell pm list packages | grep -i hx
package:com.hx.httpspeedtest
package:com.hx.usermanual
package:com.hx.guardservice
package:com.hx.appcleaner
package:com.hx.httpvideotest
package:com.hx.apkbridge
Leider nein, immer noch nicht. Also lassen wir auch die restlichen Apps über die Klinge springe, die HX im Namen haben:
13:57:11.92 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.httpspeedtest
Success
13:59:31.27 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.usermanual
Success
14:00:14.11 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.guardservice
Success
14:00:27.90 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.appcleaner
Success
14:00:36.29 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.httpvideotest
Success
14:00:49.10 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.hx.apkbridge
Success
14:00:58.21 d:\TEMP\h20pro >> adb shell pm list packages | grep -i hx
14:01:02.51 d:\TEMP\h20pro >> adb reboot
Der Malware ist wohl hier ähnlich schwer der Garaus zu machen wie bei der H20 Box.
Austreibungsversuch über Sperrung von /data/system/Corejava
Bei DesktopECHO und den Jungs von Malwarebytes Labs (8, 7) hört sich bei einer ähnlichen Box, der T95 TV Box, auch ausgestattet mit Allwinner H616 Quadcore-Cortex-A53-CPU und der Mali-G31 MP2-GPU, ganz einfach an. Die hatten die Malware in dessen Launcher com.swe.dgbluancher gefunden und die Malware in einer Node im Verzeichnis /data/system/Corejava erwischt. Ich habe dort allerdings keine Nodes, sondern nur eine Datei "e.l". Bei mir ist das Verzeichnis leer:android_tv_box:/ # du | grep -i Corejava
4 ./data/system/Corejava/node
8 ./data/system/Corejava
android_tv_box:/ # cd /data/system/Corejava
android_tv_box:/data/system/Corejava # ls -l
total 3
-rw------- 1 system system 40 2025-01-30 14:01 e.l
drwxr-xr-x 2 system system 3488 2024-04-09 06:16 node
android_tv_box:/data/system/Corejava # cd node
android_tv_box:/data/system/Corejava/node # ls -l
total 0
14:28:23.64 d:\TEMP\h20pro >> adb shell rm -rf /data/system/Corejava
14:28:47.86 d:\TEMP\h20pro >> adb shell ls -l /data/system/Corejava
ls: /data/system/Corejava: No such file or directory
14:33:58.08 d:\TEMP\h20pro >> adb shell xxd /data/system/Corejava/e.l
00000000: 0000 0194 b769 399f 0000 0000 0000 0000 .....i9.........
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0028 0000 0000 ...(....
14:34:08.29 d:\TEMP\h20pro >> adb shell rm -rf /data/system/Corejava
14:36:16.72 d:\TEMP\h20pro >> adb shell touch /data/system/Corejava
14:36:26.86 d:\TEMP\h20pro >> chmod 000 /data/system/Corejava
chmod: cannot access '/data/system/Corejava': No such file or directory
14:37:01.34 d:\TEMP\h20pro >> adb shell chmod 000 /data/system/Corejava
14:37:29.72 d:\TEMP\h20pro >> adb shell busybox chattr +i /data/system/Corejava
14:37:41.67 d:\TEMP\h20pro >> adb shell ls -l /data/system/Corejava
---------- 1 root root 0 2025-01-30 14:36 /data/system/Corejava
14:38:35.39 d:\TEMP\h20pro >> adb reboot
14:38:58.97 d:\TEMP\h20pro >> adb root
restarting adbd as root
14:40:29.42 d:\TEMP\h20pro >> adb shell ls -l /data/system/Corejava
---------- 1 root root 0 2025-01-30 14:36 /data/system/Corejava
14:43:16.00 d:\TEMP\h20pro >> adb logcat | grep Corejava
01-30 14:41:12.766 2447 2447 W FileUtils: Failed to chmod(/data/system/Corejava): android.system.ErrnoException: chmod failed: EPERM (Operation not permitted)
01-30 14:41:12.768 2447 2447 W FileUtils: Failed to chmod(/data/system/Corejava/node): android.system.ErrnoException: chmod failed: ENOTDIR (Not a directory)
Was sagt uns der User-Agent Dalvik?
Ich frage mich auch, warum die Malware einen so langen User-Agent Dalvik/2.1.0 (Linux; U; Android 10; android_tv_box Build/QP1A.191105.004) bei seinen Webzugriffen benutzt. Wenn sie nur ihren Herrn und Meister kontaktieren will, dann reicht doch auch ein kurzer User-Agent-String.Aber vielleicht setzt die Malware ja auch die HTTP-Requests gar nicht mit eigenem Code ab, sondern missbraucht dazu ein anderes Programm, vielleicht einen Browser. Das wäre doch auch eine gute Tarnung und würde die Rückverfolgbarkeit behindern.
Allerdings scheint es, das der User-Agent "Dalvik" nur darauf schließen, dass die Malware in der Dalvik Virtual Machine (25) läuft bzw. dafür kompiliert wurde und damit dessen Programmbestandteile benutzt, auch für den Internet-Transfer.
Weitere Verdächtige ausfindig mache und deinstallieren
Es bleibt mir also nichts anderes als nach folgendem Motto vorzugehen:- nächste verdächtige App finden
- verdächtige App deinstallieren
- Box neu starten
- Check: Läuft die Box noch einwandfrei?
- wenn nicht: App re-installieren
- Check: Erfolgen die Malware-Zugriffe noch?
- wenn ja: Wiederholen ab Punkt eins
- wenn nein: Fass aufmachen und freuen!
15:22:20.88 d:\TEMP\h20pro >> adb shell pm list packages -s -f
package:/system/app/TvdVideo/TvdVideo.apk=com.softwinner.TvdVideo
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/priv-app/GoogleExtServices/GoogleExtServices.apk=com.google.android.ext.services
package:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephony
package:/system/priv-app/DynamicSystemInstallationService/DynamicSystemInstallationService.apk=com.android.dynsystem
package:/system/priv-app/Velvet/Velvet.apk=com.google.android.googlequicksearchbox
package:/system/priv-app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendar
package:/system/priv-app/TvSettings/TvSettings.apk=com.android.tv.settings
package:/system/priv-app/MediaProvider/MediaProvider.apk=com.android.providers.media
package:/system/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk=com.google.android.onetimeinitializer
package:/system/app/GoogleExtShared/GoogleExtShared.apk=com.google.android.ext.shared
package:/product/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper
package:/system/priv-app/BugReport/BugReport.apk=com.dd.bugreport
package:/product/app/AwlogSettings/AwlogSettings.apk=com.softwinner.awlogsettings
package:/system/priv-app/DocumentsUI/DocumentsUI.apk=com.android.documentsui
package:/system/priv-app/ExternalStorageProvider/ExternalStorageProvider.apk=com.android.externalstorage
package:/system/app/HTMLViewer/HTMLViewer.apk=com.android.htmlviewer
package:/system/app/CompanionDeviceManager/CompanionDeviceManager.apk=com.android.companiondevicemanager
package:/system/priv-app/MmsService/MmsService.apk=com.android.mms.service
package:/system/priv-app/DownloadProvider/DownloadProvider.apk=com.android.providers.downloads
package:/system/priv-app/TvProvider/TvProvider.apk=com.android.providers.tv
package:/system/priv-app/InProcessNetworkStack/InProcessNetworkStack.apk=com.android.networkstack.inprocess
package:/system/app/DragonBox/DragonBox.apk=com.softwinner.dragonbox
package:/system/priv-app/GoogleConfigUpdater/GoogleConfigUpdater.apk=com.google.android.configupdater
package:/system/priv-app/DownloadProviderUi/DownloadProviderUi.apk=com.android.providers.downloads.ui
package:/system/priv-app/Tubesky/Tubesky.apk=com.android.vending
package:/system/app/PacProcessor/PacProcessor.apk=com.android.pacprocessor
package:/system/app/SimAppDialog/SimAppDialog.apk=com.android.simappdialog
package:/product/app/ModuleMetadata/ModuleMetadata.apk=com.android.modulemetadata
package:/system/app/CertInstaller/CertInstaller.apk=com.android.certinstaller
package:/system/framework/framework-res.apk=android
package:/product/app/Camera2/Camera2.apk=com.android.camera2
package:/system/app/EasterEgg/EasterEgg.apk=com.android.egg
package:/system/priv-app/MtpDocumentsProvider/MtpDocumentsProvider.apk=com.android.mtp
package:/system/app/NfcNci/NfcNci.apk=com.android.nfc
package:/system/priv-app/BackupRestoreConfirmation/BackupRestoreConfirmation.apk=com.android.backupconfirm
package:/system/priv-app/StatementService/StatementService.apk=com.android.statementservice
package:/system/app/OsuLogin/OsuLogin.apk=com.android.hotspot2
package:/product/priv-app/SettingsIntelligence/SettingsIntelligence.apk=com.android.settings.intelligence
package:/system/priv-app/SettingsProvider/SettingsProvider.apk=com.android.providers.settings
package:/system/priv-app/SharedStorageBackup/SharedStorageBackup.apk=com.android.sharedstoragebackup
package:/system/app/PrintSpooler/PrintSpooler.apk=com.android.printspooler
package:/system/app/BasicDreams/BasicDreams.apk=com.android.dreams.basic
package:/system/app/SecureElement/SecureElement.apk=com.android.se
package:/system/priv-app/InputDevices/InputDevices.apk=com.android.inputdevices
package:/system/app/BuiltInPrintService/BuiltInPrintService.apk=com.android.bips
package:/system/app/TextViewer/TextViewer.apk=pt.pedro.textfileviewer
package:/system/priv-app/MusicFX/MusicFX.apk=com.android.musicfx
package:/data/app/com.google.android.webview-vPyjIC5GTB3zz9hnNS-zyg==/base.apk=com.google.android.webview
package:/system/priv-app/Telecom/Telecom.apk=com.android.server.telecom
package:/system/app/GoogleContactsSyncAdapter/GoogleContactsSyncAdapter.apk=com.google.android.syncadapters.contacts
package:/system/app/KeyChain/KeyChain.apk=com.android.keychain
package:/data/app/com.android.chrome-0MZ5vayVfbEkDaDn86ApHA==/base.apk=com.android.chrome
package:/system/app/PrintRecommendationService/PrintRecommendationService.apk=com.android.printservice.recommendation
package:/system/priv-app/SettingsAssist/SettingsAssist.apk=com.softwinner.settingsassist
package:/system/app/GalleryTV/GalleryTV.apk=com.android.gallery3d
package:/system/priv-app/GooglePackageInstaller/GooglePackageInstaller.apk=com.google.android.packageinstaller
package:/system/priv-app/GmsCore/GmsCore.apk=com.google.android.gms
package:/system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk=com.google.android.gsf
package:/data/app/com.google.android.tts-Ow1oe5tXMSFFZJs5hTpjFQ==/base.apk=com.google.android.tts
package:/system/priv-app/GooglePartnerSetup/GooglePartnerSetup.apk=com.google.android.partnersetup
package:/system/app/WebScreensaver/WebScreensaver.apk=com.android.dreams.web
package:/system/priv-app/LocalTransport/LocalTransport.apk=com.android.localtransport
package:/system/priv-app/ProxyHandler/ProxyHandler.apk=com.android.proxyhandler
package:/product/app/LatinIME/LatinIME.apk=com.android.inputmethod.latin
package:/system/priv-app/ManagedProvisioning/ManagedProvisioning.apk=com.android.managedprovisioning
package:/system/app/AllwinnerGmsIntegration/AllwinnerGmsIntegration.apk=com.allwinnertech.gmsintegration
package:/product/app/PackageOverride/PackageOverride.apk=com.allwinnertech.packageoverride
package:/system/app/PartnerBookmarksProvider/PartnerBookmarksProvider.apk=com.android.providers.partnerbookmarks
package:/system/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk=com.google.android.backuptransport
package:/system/app/BookmarkProvider/BookmarkProvider.apk=com.android.bookmarkprovider
package:/system/priv-app/PlatformNetworkPermissionConfig/PlatformNetworkPermissionConfig.apk=com.android.networkstack.permissionconfig
package:/system/app/CtsShimPrebuilt/CtsShimPrebuilt.apk=com.android.cts.ctsshim
package:/system/app/DragonAgingTV/DragonAgingTV.apk=com.softwinner.agingdragonbox
package:/system/priv-app/VpnDialogs/VpnDialogs.apk=com.android.vpndialogs
package:/system/app/Music/Music.apk=com.android.music
package:/system/priv-app/TeleService/TeleService.apk=com.android.phone
package:/system/priv-app/Shell/Shell.apk=com.android.shell
package:/system/app/WallpaperBackup/WallpaperBackup.apk=com.android.wallpaperbackup
package:/system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk=com.android.providers.blockednumber
package:/system/priv-app/UserDictionaryProvider/UserDictionaryProvider.apk=com.android.providers.userdictionary
package:/system/priv-app/FusedLocation/FusedLocation.apk=com.android.location.fused
package:/product/priv-app/SystemUI/SystemUI.apk=com.android.systemui
package:/system/app/BluetoothMidiService/BluetoothMidiService.apk=com.android.bluetoothmidiservice
package:/system/priv-app/PermissionController/PermissionController.apk=com.android.permissioncontroller
package:/system/app/Update/Update.apk=com.softwinner.update
package:/product/overlay/framework-res__auto_generated_rro_product.apk=android.auto_generated_rro_product__
package:/system/app/Bluetooth/Bluetooth.apk=com.android.bluetooth
package:/system/priv-app/ContactsProvider/ContactsProvider.apk=com.android.providers.contacts
package:/system/app/PlatformCaptivePortalLogin/PlatformCaptivePortalLogin.apk=com.android.captiveportallogin
package:/system/priv-app/TvdFileManager/TvdFileManager.apk=com.softwinner.TvdFileManager
package:/vendor/overlay/framework-res__auto_generated_rro_vendor.apk=android.auto_generated_rro_vendor__
package:/system/priv-app/GoogleRestore/GoogleRestore.apk=com.google.android.apps.restore
15:43:36.81 d:\TEMP\h20pro >> adb root
adbd is already running as root
15:44:50.67 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.egg
Success
15:45:29.38 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.softwinner.dragonbox
Success
15:45:37.97 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.softwinner.agingdragonbox
Success
15:45:50.20 d:\TEMP\h20pro >> adb reboot
15:46:00.51 d:\TEMP\h20pro >> adb root
restarting adbd as root
15:50:01.15 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.providers.telephony
Success
15:50:13.56 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.camera2
Success
15:50:31.56 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 pt.pedro.textfileviewer
Success
15:50:45.99 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.phone
Success
15:50:59.83 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.softwinner.TvdFileManager
Success
15:51:19.95 d:\TEMP\h20pro >> adb reboot
Versuchen wir noch mehr zu deinstallieren:
15:51:26.83 d:\TEMP\h20pro >> adb root
restarting adbd as root
15:56:05.89 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.dynsystem
Success
15:56:55.81 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.android.providers.blockednumber
Success
15:57:47.83 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 com.softwinner.update
Success
15:58:17.18 d:\TEMP\h20pro >> adb reboot
Beim Nächsten bin ich mir nicht sicher:
16:10:27.33 d:\TEMP\h20pro >> adb shell pm list packages -s -f vendor
package:/vendor/overlay/framework-res__auto_generated_rro_vendor.apk=android.auto_generated_rro_vendor__
16:13:23.08 d:\TEMP\h20pro >> adb shell pm uninstall -k --user 0 android.auto_generated_rro_vendor__
Success
Als Nächstes gehe ich nochmal alle System-Apps in den App-Einstellungen durch und beende bzw. deaktiviere alle Apps, die mir nur halbwegs suspekt vorkommen. Doch die Zugriffe hören nicht auf, als ich zahlreiche Apps beendet habe und zwischendrin immer mal wieder ausprobiert habe, ob die gewünschten Apps noch funktionieren.
Dabei ist mir die App HXDeviceMonitor (com.hx.devicemonitor) aufgefallen, die sich nicht Beenden lassen wollte. Nach dem Neustart der TV Box läuft diese und die Positiv-Apps noch, trotz der deaktivierten Apps. Aber die Malware-Posts kommen auch noch regelmäßig.
Wegen der App HXDeviceMonitor mache ich mir aber so meine Gedanken. Wieso scheint die in Einstellungen / Apps zu laufen und kommt nach einem "Beenden erzwingen" immer wieder? Ich habe doch alle HX-Apps deinstalliert, wie sich zeigt, als ich das noch einmal überprüfe:
11:29:36.61 d:\TEMP\h20pro >> adb shell ps | grep hx
11:29:43.86 d:\TEMP\h20pro >> adb shell ps | grep mon
root 1896 2 0 0 kthread_worker_fn 0 S [psimon]
11:29:45.64 d:\TEMP\h20pro >> adb shell pm list packages -s hx
11:29:49.71 d:\TEMP\h20pro >> adb shell pm list packages -s -u hx
package:com.hx.autotesttool
package:com.hx.httpspeedtest
package:com.hx.usermanual
package:com.hx.guardservice
package:com.hx.devicemonitor
package:com.hx.update
package:com.hx.appcleaner
package:com.hx.mboxlauncher
package:com.hx.httpvideotest
package:com.hxdevicetest
package:com.hx.videotest
package:com.hx.apkbridge
android_tv_box:/system/priv-app/HXDeviceMonitor # mv HXDeviceMonitor.apk HXDeviceMonitor.xxx
Scheinbar orientiert sich der Einstellungsdialog nach den Dateien, die sich unter /system/app und /system-priv-app befinden und nicht an den laufenden Prozessen (für "Beenden erzwingen") oder den installierten Packages.
Ich gehe also davon aus, das HXDeviceMonitor nicht lief, sondern nur falsch angezeigt wurde. Das Umbenennen hat übrigens nicht daran geändert, dass weiterhin die Malware versucht, seinen Command-and-Control-Server zu kontaktieren. Nebenbei erwähnt: das tut er auch, wenn man die Box mit der Fernbedienung in den Standby geschaltet hat, was sie durch einen schwarzen Bildschirm und eine rote LED anzeigt. Die Malware funkt im Hintergrund fröhlich weiter.
Nachdem ich alle Apps deinstalliert habe, die mir halbwegs suspekt oder überflüssig vorkamen, läuft die Box zwar zu meiner Überraschung noch einwandfrei, aber die Malware leider auch. Ich wüsste nicht, was ich noch deinstallieren könnte.
Fazit: Teilerfolg
Leider konnte das Ziel, die Malware von der H20pro Box komplett zu entfernen, wie schon bei der H20 Box nicht erreicht werden. Die Desinfektionsanleitung der anderen Sicherheitsforscher (7, 8) sind inzwischen veraltet, so einfach bekommt man die Malware nicht mehr vom System. Die versteckt sich - so hat es den Anschein - mittlerweile nicht mehr einfach in einer App, die man deinstallieren könnte, sondern tief im System.Das vorliegende Dalvik Android 10 System (Build QP1A.191105.004) nutzt die Zygote-Architektur, die es schwierig macht, die App mit der Malware ausfindig zu machen:

Beim Systemstart wird der Zygote-Prozess gestartet, der wiederum System Server startet. Dies war ja auch die Prozess-Signatur bei den abgesetzten POST-Requests der Malware. Irgendwo da drin muss sich der Code der Malware befinden. Auch, dass die Malware während des Standby-Modus immer noch POSTs absetzt, spricht dafür, dass sie tief im System steckt, denn eigentlich sollte dann normale Apps ruhen.
Ein Teilerfolg verbuche ich, weil
- Die POST /terminal/client/register und POST /terminal/client/eventinfo -Requests der Malware wegen der Domain-Umleitung nicht mehr nach draussen kommt
- Die GET /Update/cupid/android_tv_box/AB42G/10_29/version.json und GET /ott/dev/plugin_conf.xml -Requests durch App-Deinstallation unterbunden wurden und sich die Box keine neue Firmware herunterladen kann, die dann das Risiko einer neuen Malware birgt. Diese könnte mit vielleicht neuen Domains kommen, für die keine Umleitung eingerichtet wäre und dann doch nach draußen dringen. Aber ohne Updates kann sich nichts an der Firmware ändern und es können keine neue Gefahren hinzukommen
Wie sind die Warn-Mails vom BSI zu bewerten?
Rufen wir uns die e-mail von meinem Provider noch einmal in Erinnerung, die die Sache losgetreten hat:Sicherheitsinformation zu Ihrem InternetanschlussNach all den Analysen und Recherchen, die ich diesbezüglich in den letzten Wochen durchgeführt habe, kann ich sagen, dass die e-mail im Prinzip gut verfasst ist. Sie erwähnt das Wesentliche in allgemein verständlicher Sprache für den Otto-Normalverbraucher, ohne mit all zuviel Fachbegriffen zu verwirren.
Sehr geehrte Damen und Herren.
Wichtiger Sicherheitshinweis vom Vodafone-Sicherheitsteam zu Ihrem Produkt vom 21.12.2024.
Ihre Kundennummer: 123456789
Es liegen uns Hinweise vor, dass an Ihrem Internetzugang mindestens ein internetfähiges Endgerät (z.B. Smartphone, Tablet, CTV-Box) mit der Schadsoftware Badbox infiziert ist. Ihr Endgerät ist somit Teil eines weltweiten Bot-Netzes und wird von Kriminellen für deren Zwecke missbraucht.
Detaillierte Hinweise, die uns zu Ihrem Anschluss vorliegen, können Sie über https://kundensicherheit.vodafone.de/ABCD12 abrufen.
Wie konnte es dazu kommen? Badbox wird während der Produktion oder unmittelbar danach in der Firmware des Geräts installiert. Das Gerät ist bereits infiziert, wenn esbereitsgekauft wurde.
Badbox ist eine Android Schadsoftware, die mit der Firmware des Geräts ausgeliefert wird. Infizierte Geräte verbinden sich unverzüglich mit einem Command-and-Control (C2) Server und ermöglichen den Angreifern Zweifaktor Schlüssel abzufangen, weitere Schadsoftware zu installieren sowie Zugriff auf das Netzwerk, in dem sich das infizierte Gerät befindet (Proxy), zu erhalten.
Was muss ich jetzt machen?
Infizierte Geräte sollten sofort außer Betrieb genommen werden, da die Schadsoftware auf einer nicht beschreibbaren Partition der Firmware befindet und durch den Endverbraucher nicht entfernt werden kann.
...
Das mit dem Proxy kann ich nicht nachvollziehen. Bei mir hat die Box keine Ports aufgemacht, auf denen es im LAN erreichbar wäre (außer natürlich den Ports für ADB, wenn das eingeschaltet ist). Zudem ist der Vodafone-Router ja an sich auch eine Hardware-Firewall, die keine Anfrage von draußen aus dem Internet entgegen nimmt. Es sei denn, man hätte explizit ein Port-Forwarding eingerichtet.
Und das Laien das Gerät am besten außer Betrieb nehmen ist wohl auch wahr. Genauso wie, dass die Malware nicht von Endverbrauchern entfernt werden kann.
Die e-mail bietet Stichwörter, nach denen man googlen kann, um sich näher zu informieren und Links am Ende, zum Beispiel auf (29), um mehr Informationen zu dem Thema abzurufen.
Dass das BSI (bzw. das Fraunhofer-Institut für Kommunikation, Informationsverarbeitung und Ergonomie, FKIE (30)) ein Sinkhole eingerichtet hat und die Zugriffe der Malware protokolliert, um so die Box-Besitzer über den Provider zu informieren, ist eine effiziente Maßnahme, damit die Malware-infizierten Boxen vom Netz kommen. Außerdem wird bei Sinkholes nichts Unnötiges mitprotokolliert. Eben nur, dass eine bestimmte IP (die des Besitzers der Box) versucht hat, eine bestimmte Domain (die des Malware-Betreibers) zu erreichen. Datensparsamkeit ist also gegeben.
Ich würde sagen: Das Ziel, die Netzinfrastruktur Deutschlands zu schützen, wurde erreicht. Und die ergriffenen Maßnahmen adäquat. Denn jedes einzelne Endgerät, dass durch Klick-Betrug, Spam- und Phishing-Mails und anderen Betrügereien Geld in die Kassen der Betrüger spült, ist eines zu viel. Diese Leute werden erst aufhören, wenn sich ihre Betrügereien nicht mehr lohnen.
Falls ein anderer Sicherheitsforscher es geschafft haben sollte, die Malware, von der hier die Rede ist, von einer H20 oder H20pro Box restlos zu entfernen, möge er sich bitte per e-mail bei mir melden. Danke.
Quellen, Literaturverweise und weiterführende Links
(1) BSI: CERT-Bund-Reports
(2) BSI weist auf vorinstallierte Schadsoftware auf IoT-Geräten hin
(3) BSI: Fragen und Antworten zu Botnetzen
(4) BSI: Steckbriefe aktueller Bots
(5) BSI: Steckbrief Badbox
(6) Wired: Your Cheap Android TV Streaming Box May Have a Dangerous Backdoor
(7) Malwarebytes Labs: Analyzing and remediating a malware infested T95 TV box from Amazon
(8) Github: DesktopECHO / T95-H616-Malware Infos
(9) Neue Malware auf 1,3 Millionen Android-TV-Boxen – vor allem auf Billig-Geräten
(10) Bleeping Computer: New Vo1d malware infects 1.3 million Android streaming boxes
(11) Dr.Web: Android.Vo1d hat über 1 Mio. Set-Top-Boxen unter Android infiziert
(12) Dr.Web: Steckbrief Android.Vo1d.1
(13) Dr.Web: Steckbrief Android.Vo1d.3
(14) Dr.Web: Steckbrief Android.Vo1d.5
(15) Dr. Web on GitHub: Void captures over a million Android TV boxes — Indicators of compromise
(16) EFF.org: Android TV Boxes Sold on Amazon Come Pre-Loaded with Malware
(17) Chip: Versteckte Gefahren im Google Play Store: Millionenfach schädliche Apps verteilt
(18) Kaspersky: Schadsoftware auf Google Play – mehr als 600 Millionen Downloads im Jahr 2023; 1,5 Millionen Downloads: chinesische Spyware
(19) heise: Android-Malware: 90 Apps mit 5,5 Millionen Installationen entdeckt
(20) Trend Micro: Lemon Group’s Cybercriminal Businesses Built on Preinfected Devices en
(21) Bitsight: BADBOX Botnet Is Back
(22) Qianxin: Analysis of the Expansion of Fraudulent Backdoors Claimed to Have Been Implanted in 20 Million Devices

(23) Human Security: Trojans All the Way Down: BADBOX and PEACHPIT (PDF)
(24) Human Security Blog: BADBOX, PEACHPIT, and the Fraudulent Device in Your Delivery Box
(25) Wikipedia: Dalvik Virtual Machine
(26) heise:Bei 40 günstigen Android-Smartphones ist ein Trojaner ab Werk inklusive
(27) Miso Ivanisevic: What the Zygote!?
(28) heise: 5 Zero-Day-Exploits: Einblicke ins Innenleben des Staatstrojaners Predator
(29) BSI: Reports zu Schadprogramm-Infektionen
(30) Fraunhofer FKIE: Avalanche Broschüre - Schlag gegen Botnet (PDF), Software PI und Sinkhole Server
(2) BSI weist auf vorinstallierte Schadsoftware auf IoT-Geräten hin
(3) BSI: Fragen und Antworten zu Botnetzen
(4) BSI: Steckbriefe aktueller Bots
(5) BSI: Steckbrief Badbox
(6) Wired: Your Cheap Android TV Streaming Box May Have a Dangerous Backdoor

(7) Malwarebytes Labs: Analyzing and remediating a malware infested T95 TV box from Amazon

(8) Github: DesktopECHO / T95-H616-Malware Infos

(9) Neue Malware auf 1,3 Millionen Android-TV-Boxen – vor allem auf Billig-Geräten
(10) Bleeping Computer: New Vo1d malware infects 1.3 million Android streaming boxes

(11) Dr.Web: Android.Vo1d hat über 1 Mio. Set-Top-Boxen unter Android infiziert
(12) Dr.Web: Steckbrief Android.Vo1d.1

(13) Dr.Web: Steckbrief Android.Vo1d.3

(14) Dr.Web: Steckbrief Android.Vo1d.5

(15) Dr. Web on GitHub: Void captures over a million Android TV boxes — Indicators of compromise

(16) EFF.org: Android TV Boxes Sold on Amazon Come Pre-Loaded with Malware

(17) Chip: Versteckte Gefahren im Google Play Store: Millionenfach schädliche Apps verteilt
(18) Kaspersky: Schadsoftware auf Google Play – mehr als 600 Millionen Downloads im Jahr 2023; 1,5 Millionen Downloads: chinesische Spyware
(19) heise: Android-Malware: 90 Apps mit 5,5 Millionen Installationen entdeckt
(20) Trend Micro: Lemon Group’s Cybercriminal Businesses Built on Preinfected Devices en
(21) Bitsight: BADBOX Botnet Is Back

(22) Qianxin: Analysis of the Expansion of Fraudulent Backdoors Claimed to Have Been Implanted in 20 Million Devices


(23) Human Security: Trojans All the Way Down: BADBOX and PEACHPIT (PDF)

(24) Human Security Blog: BADBOX, PEACHPIT, and the Fraudulent Device in Your Delivery Box

(25) Wikipedia: Dalvik Virtual Machine

(26) heise:Bei 40 günstigen Android-Smartphones ist ein Trojaner ab Werk inklusive
(27) Miso Ivanisevic: What the Zygote!?

(28) heise: 5 Zero-Day-Exploits: Einblicke ins Innenleben des Staatstrojaners Predator
(29) BSI: Reports zu Schadprogramm-Infektionen
(30) Fraunhofer FKIE: Avalanche Broschüre - Schlag gegen Botnet (PDF), Software PI und Sinkhole Server