Zweite Box H20 pro: Internet-Kommunikations-Analyse der von AliExpress gekauften TV-Box mit Badbox-Malware
|
In dem eingehenden Artikel dieser Reihe findet ihr die Story, wie 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 Schindluder im Internet treibe.
Mein Verdacht fiel auf die "üblichen Verdächtigen": Billig-Produkte als China und da hatte ich gleich die beiden TV-Boxen H20 und H20pro im Sinn. Da dank BSI-Sinkhole zur Zeit nicht viel passieren kann, hängte ich das H20 pro wieder ans Internet und beobachtete weiter. Es traten keine Vorfälle mehr auf und damit stand fest: Die mails kamen wegen dem H20 und nicht wegen des H20 pro. Was nicht heißt, dass die H20pro Malware-frei ist, wie sich noch herausstellt.
Dann hatte ich mir das Android-System der H20-Badbox und der H20pro näher angeschaut (Ergebnisse siehe dort) und dabei etwas Verdächtiges bei der H20 gefunden. Die H20pro startete nach der Analyse leider nicht mehr (der generierte Bugreport war zu groß) und ich musste sie erst einmal zur Seite legen, ging aber bis dahin davon aus, dass hier keine Malware vorlag, weil diese keine BSI-mails provoziert hat.
Also hatte ich mir im letzten Artikel erst einmal nur für die H20 Box die Internet-Kommunikation angeschaut. Dabei bestätigte sich, dass sich auf der H20 (gekauft über den Topsion Store) die Badbox-Malware befindet. Die H20 TV-Box verfügt übrigens über eine Rockchip RK3228a CPU (32bit Quad Core) mit einer Mali-400MP2 GPU
Für die zweite, leistungsfähigere Box, nämlich die H20pro mit Allwinner 616-Chipsatz und G31 Mali-Chipsatz (ebenfalls gekauft über den Topsion Store auf AliExpress) konnte ich die Internet-Analyse bisher nicht durchführen, da sie ja nicht mehr startete. Dies konnte ich mittlerweile beheben, so dass die H20pro wieder normal funktioniert.
Nun kann ich also auch die H20pro einer DNS- und HTTP-Analyse unterziehen. Ein erster Blick auf die DNS-Kommunikation zeigte, dass die H20pro die Domain ycxrl.com abrufen wollte, was ein Zeichen für die Infektion mit der Badbox-Malware ist. Die H20 (ohne Pro) benutzte ja noch die Domain dcylog.com, dessen Firmware ist aber auch älter. Wahrscheinlich ändern sich die Domains der Malware im Laufe der Zeit immer wieder. Folgende Domain-Liste konnte ich bisher zusammentragen:
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
Wer ist ycxrl.com?
YCXRL.COM ist derzeit über godaddy.com registriert, einem großen US-Hoster, der für günstige Preise bekannt ist:C:\ >> whois ycxrl.com
Domain Name: YCXRL.COM
Registry Domain ID: 2199413383_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.godaddy.com
Registrar URL: http://www.godaddy.com
Updated Date: 2024-12-25T16:19:31Z
Creation Date: 2017-12-13T13:03:36Z
Registry Expiry Date: 2025-12-13T13:03:36Z
Registrar: GoDaddy.com, LLC
...
C:\ >> dig YCXRL.COM
; <<>> DiG 9.12.4-P1 <<>> YCXRL.COM
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24735
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;YCXRL.COM. IN A
;; ANSWER SECTION:
YCXRL.COM. 137 IN A 76.223.67.189
YCXRL.COM. 137 IN A 13.248.213.45
...
C:\ >> host 13.248.213.45
45.213.248.13.in-addr.arpa domain name pointer a67c48129651a0940.awsglobalaccelerator.com.
C:\ >> host 76.223.67.189
189.67.223.76.in-addr.arpa domain name pointer a67c48129651a0940.awsglobalaccelerator.com.
Allerdings bezweifle ich, dass die Malware-Entwickler die Domain noch unterhalten, denn die /terminal/client/-Webanfragen werden nicht angenommen, sondern vom derzeitigen Webserver mit einem 405 Method Not Allowed abgewiesen:
1751 164.353675 10.215.173.1 76.223.67.189 HTTP 728 POST //terminal/client/register HTTP/1.1 (application/x-www-form-urlencoded)
1752 164.354322 76.223.67.189 10.215.173.1 TCP 88 80 ? 48556 [ACK] Seq=55 Ack=1285 Win=523584 Len=0
1753 164.506544 76.223.67.189 10.215.173.1 HTTP 140 HTTP/1.1 405 Method Not Allowed
Auch wenn die Domain YCXRL.COM jetzt jemandem anders gehört, scheinen die neuen, derzeitigen Eigentümer auch wenig seriös, siehe https://www.abuseipdb.com/check/13.248.213.45 und https://www.abuseipdb.com/check/76.223.67.189.
Was erfahren wir aus den POST-Requests?
Ich hatte ja schon im vorherigen Artikel herausgefunden, dass die Badbox den Kontakt zum Command-and-Control-Server mit einem POST /terminal/client/... aufnehmen. Auch wenn wir nicht mehr schauen können, was der Malware-Server antwortet, so können wir doch sehen, welche Daten mit dem Post versendet werden.Schauen wir uns doch mal einen POST //terminal/client/register einmal genauer an:
Frame 1791: 728 bytes on wire (5824 bits), 728 bytes captured (5824 bits)
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 10.215.173.1, Dst: 76.223.67.189
Transmission Control Protocol, Src Port: 48568, Dst Port: 80, Seq: 1, Ack: 1, Len: 642
Hypertext Transfer Protocol
POST //terminal/client/register HTTP/1.1\r\n
Connection: Keep-Alive\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; android_tv_box Build/QP1A.191105.004)\r\n
Host: ycxrl.com\r\n
Accept-Encoding: gzip\r\n
Content-Length: 377\r\n
\r\n
[Response in frame: 1793]
[Full request URI: http://ycxrl.com//terminal/client/register]
File Data: 377 bytes
HTML Form URL Encoded: application/x-www-form-urlencoded
[…]Form item: "data" = "NKEoZ74+EVrS1Y5f+i5mweUyGFxkTe9fXtCitMz1BXgoTtsU2lupBUTvvqCovV1qnTrYWA7QP5dQjCHDFQn/...
PCAPdroid, App: Android
Als erstes fällt der doppelte Schrägstrich beim Post auf: http://ycxrl.com//terminal/client/register. Das sollte eigentlich ein einzelner sein - ob sich hier die Malware-Macher vertippt haben? Aber zur richtigen URL sollte das trotzdem vom Webserver aufgelöst werden. Kein Hindernis also, es fällt einfach nur auf.
Interessant sind die Nutzdaten, die per Post übertragen werden:
NKEoZ74+EVrS1Y5f+i5mweUyGFxkTe9fXtCitMz1BXgoTtsU2lupBUTvvqCovV1qnTrYWA7QP5dQjCHDFQn/2WLgFd+2ArxH4sqbOPYdO1P7n0hNSeL1NeVIN0XLgHkVbGMZV/VG/RHLckNIeTJKj1wlo6IHTajnQpw0BtyowTP6frNKUIjEfFbvoZSkOyath5kmSrl6FAxYnszoOZG1lA1ml48zw20LtPABwRS/us3yQKbob7+s3bLOdS0hun5RzYKsCbjwon34OzEn5gq6L6D67B86JnfeV86gM6WTlBNOfVIDYd1SI+fY0GkTkibd69QDfKP9bm4o/abQ5Og23HmDlYS4XXgo
NKEoZ74+EVqcUxD19V3VcF0Co55nE5swr5rYPYB9rGkKDus4AG9fTCu7UsIbwOAyKtwLi5Aa+72PxpJGY0hh3uWgceW/+ug+NJyugNCnpyPskgm8dlObE1vWrcS1T/2W/gfua9TqAI0mUqkgq73w/h6AEygfP61AktVNZy+fA5RLa2k5cqgjH5fKD+O8StfWzsu7SkWFS7k26lrFtgF+857b9NoxzvtGSw3UpP6HXUQqRNvNQfsyq11F/hlG0sJRx/MGG5fE1YW4/XCHOKa8wrOOVkAP9cNcCz+5CIYtQY/+9gc9/B66Cp4Lvauy7h53VOi49W2hKSc=
- das gleiche Verschlüsselungsverfahren verwendet wird
- der gleiche Schlüssel verwendet wird
- der Anfang der Daten der Gleiche ist
34A12867 BE3E115A D2D58E5F FA2E66C1 E532185C 644DEF5F 5ED0A2B4 CCF50578 284EDB14 DA5BA905 44EFBEA0 A8BD5D6A 9D3AD858 0ED03F97 508C21C3 1509FFD9 62E015DF B602BC47 E2CA9B38 F61D3B53 FB9F484D 49E2F535 E5483745 CB807915 6C631957 F546FD11 CB724348 79324A8F 5C25A3A2 074DA8E7 429C3406 DCA8C133 FA7EB34A 5088C47C 56EFA194 A43B26AD 8799264A B97A140C 589ECCE8 3991B594 0D66978F 33C36D0B B4F001C1 14BFBACD F240A6E8 6FBFACDD B2CE752D 21BA7E51 CD82AC09 B8F0A27D F83B3127 E60ABA2F A0FAEC1F 3A2677DE 57CEA033 A5939413 4E7D5203 61DD5223 E7D8D069 139226DD EBD4037C A3FD6E6E 28FDA6D0 E4E836DC 79839584 B85D7828
34A12867 BE3E115A 9C5310F5 F55DD570 5D02A39E 67139B30 AF9AD83D 807DAC69 0A0EEB38 006F5F4C 2BBB52C2 1BC0E032 2ADC0B8B 901AFBBD 8FC69246 634861DE E5A071E5 BFFAE83E 349CAE80 D0A7A723 EC9209BC 76539B13 5BD6ADC4 B54FFD96 FE07EE6B D4EA008D 2652A920 ABBDF0FE 1E801328 1F3FAD40 92D54D67 2F9F0394 4B6B6939 72A8231F 97CA0FE3 BC4AD7D6 CECBBB4A 45854BB9 36EA5AC5 B6017EF3 9EDBF4DA 31CEFB46 4B0DD4A4 FE875D44 2A44DBCD 41FB32AB 5D45FE19 46D2C251 C7F3061B 97C4D585 B8FD7087 38A6BCC2 B38E5640 0FF5C35C 0B3FB908 862D418F FEF6073D FC1EBA0A 9E0BBDAB B2EE1E77 54E8B8F5 6DA12927
Frame 1643: 728 bytes on wire (5824 bits), 728 bytes captured (5824 bits)
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 10.215.173.1, Dst: 76.223.67.189
Transmission Control Protocol, Src Port: 48532, Dst Port: 80, Seq: 1, Ack: 1, Len: 642
Hypertext Transfer Protocol
POST /terminal/client/eventinfo HTTP/1.1\r\n
Connection: Keep-Alive\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; android_tv_box Build/QP1A.191105.004)\r\n
Host: ycxrl.com\r\n
Accept-Encoding: gzip\r\n
Content-Length: 377\r\n
\r\n
[Response in frame: 1645]
[Full request URI: http://ycxrl.com/terminal/client/eventinfo]
File Data: 377 bytes
HTML Form URL Encoded: application/x-www-form-urlencoded
PCAPdroid, App: Android
NKEoZ74+EVrS1Y5f+i5mweUyGFxkTe9fXtCitMz1BXgoTtsU2lupBUTvvqCovV1qnTrYWA7QP5dQjCHDFQn/2WLgFd+2ArxH4sqbOPYdO1P7n0hNSeL1NeVIN0XLgHkVbGMZV/VG/RHLckNIeTJKj1wlo6IHTajnQpw0BtyowTP6frNKUIjEfFbvoZSkOyath5kmSrl6FAxYnszoOZG1lA1ml48zw20LtPABwRS/us3yQKbob7+s3bLOdS0hun5RzYKsCbjwon34OzEn5gq6L6D67B86JnfeV86gM6WTlBNOfVIDYd1SI+fY0GkTkibd69QDfKP9bm4o/abQ5Og23HmDlYS4XXgo
Und wir stehen wieder an dem Punkt, an dem wir schon nach der Internet-Analyse der H20 Box standen: Um hier weiter zu kommen, müsste man als Erstes das Programm auf der Badbox ausfindig machen, das den HTTP-Post an ycxrl.com abschickt und dieses dann genauer analysieren. Heißt: Reverse Engineering und Dekompilierung betreiben, um herauszufinden, was das Programm macht. Ein Riesen-Aufwand.
Eventuell würde man dann auch die Stelle finden, bei dem der Schlüssel verarbeitet wird und könnte den extrahieren, um dann schließlich herauszufinden, was da genau in den POST-Daten im Klartext übertragen werden soll. Was aber aller Wahrscheinlichkeit gar nicht so interessant sein wird. Wenn sich die POST-Daten von /event-info und /register schon nicht unterscheiden.
Wenn ich raten müsste, was in den POST-Daten im Klartext steht, würde ich darauf tippen, dass dort definiert ist, um welche TV-Box es sich handelt, damit der Command-and-Control-Server (der ja nun für diese Domain abgeschaltet ist) weiß, welche Malware er zum Download verschicken muss. Die Malware-Macher wollen ja schließlich, dass deren Malware auch einwandfrei auf dem Gerät läuft und es nicht etwa zum Absturz bringt, was nur verdächtig wirken würde und den Umsatz drückt.
Da mir der Aufwand eines Reverse Engineering der TV-Box-Software zu hoch ist, werde ich als Nächstes die H20-Box hernehmen und dort ein verdächtiges Paket nach dem anderen über ADB deaktivieren oder deinstallieren. Irgendwann muss ja das Package dabei sein, dass für die Malware verantwortlich ist und dann müssten die /terminal-Abfragen aufhören. Wenn das gutgegangen ist, wären die bösen Packages identifiziert. Dann kann ich dasselbe bei der H20 pro auch noch versuchen. Oder eben ich deinstalliere ein falsches Package und die Box ist bricked.
Um die H20 wäre es nicht schade, aber die H20pro würde ich schon gerne weiter benutzen. Mit dem BSI-Sinkhole und meinen DNS-Umleitungen und den abgeschalteten Domain ist die Malware eigentlich dreifach daran gehindert, Schindluder zu treiben. Aber so ein richtig sicheres Gefühl habe ich erst, wenn die Anfragen aufhören. Und selbst dann bleibt das Restrisiko, dass die Badbox doch noch einen Weg findet.
Aber das soll Stoff für einen weiteren Artikel sein, den ich dann ggf. hier verlinken werde.
Zusammenfassung Netzwerkverkehr Analyse beider Boxen
Die Badbox-Malware auf meiner H20 sowie H20 pro TV-Box kann also durch folgende Vorkommen im Netzwerk-Traffic identifiziert werden:- Auftauchen von Domainnamen-Auflösungen zu *.sinkhole.caad.fki.fraunhofer.de und ähnlichem (Port 53)
- Anfragen nach dem Domainnamen dcylog.com oder ycxrl.com per DNS (Port 53)
- für ähnliche TV-Boxen, Settop-Boxen und Smart-TVs sollte die Liste der verdächtigen Domains weiter oben beachtet werden
- Bei erfolgreichem Auflösen des Domainnamen Versuch einer POST-HTTP-Verbindung mit verschlüsselten Daten zu /terminal/client/register oder /terminal/client/eventinfo, erst im zögerlichen Intervall, dann steigernd auf 5-Minuten-Takt
Nachtrag 2025-01-31
Im Artikel Entfernen der Badbox Malware von der bei AliExpress gekauften TV-Box H20pro (Allwinner H616 CPU und Mali G31 GPU) kann ich dann einen Erfolg erzielen, die Malware auf dieser Box loszuwerden.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
(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
