TW / Independent
← Research-Audits

Malware Analysis / Artefakt: web3-provider.js · SHA-256 b8dae0cab6e9…

CryptoDrainEXE: Analyse eines Browser-Wallet-Drainers

Obfuskierter Provider, aufgelöste Stringtabelle, Empfängeradressen und Telemetrie. Was der Code belegt — und warum die vorliegende Kopie kein vollständiges Backend enthält.

Prüfumfang
CryptoDrainEXE-Browsercode und lokales statisches Analysewerkzeug
Vorgehen
Unabhängiges Research-Audit; nicht vom Anbieter beauftragt
Material
Fixierter Browser-Quellbestand; keine Backend- oder Transferausführung.
Befund

Befunde nach Belegklasse getrennt

Kein vollständiges Deployment oder Backend; keine dynamische Prüfung

Analystennotiz

Was der Prüfbestand wirklich hergibt.

Der Rohcode erzählt hier mehr als der Projektname. Wir trennen sichtbare Oberfläche, Provider-Aufruf und mögliche Wirkung, damit aus verdächtigem Code kein vorschnelles Urteil wird.

Evidence Anchorlokal geprüft
Artefakt
web3-provider.js
SHA-256
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4
Analysegrundlage
Fixierter Browser-Quellbestand; keine Backend- oder Transferausführung.
Malware / Evidence Atlas

Auslieferung → Transfergrenze

Der Analysepfad dieses Berichts. Jeder Knoten zeigt, was belegt ist, wo Detection ansetzen kann und wo die Aussage endet.

5Ablaufknoten 1Detection-Artefakte 1Regelformate
Aussage

Auslieferung

Der Bericht beginnt bei der dokumentierten Bereitstellung des Browser-Wallet-Drainers.

Detection-Schwerpunkt

Dateiherkunft, Signatur und Browserbezug erfassen.

Im Prüfbestand belegt
Config Surface

Konfigurations-Fingerabdruck

Analyseachsen aus dem Bericht – keine Live-Konfiguration und kein universeller Familienindikator.

01
Browser-Kontextextension / page
Stütze
02
Asset-Reihungvalue heuristic
Kernspur
03
Provider-Aufruftransaction request
Stütze
04
Transferbelegopen boundary
Grenze
MODEL / 982F059BKernspur, Stütze und Grenze – keine Risikowerte
Detection Pack

Defensive Artefakte

Quelle, Validierung und Grenze gehören zu jeder Regel.

QuelleEigene statische Source-Review-Regel, nicht aus dem Sample kopiert.ValidierungSemgrep-Parser und synthetisches Positivfixture bestanden.GrenzeFindet prüfpflichtige Datenflüsse; beweist weder Täuschung noch Transfer.
SemgrepRegel öffnen
Defensives Modell
rules:
- id: value-ranked-wallet-transfer-review
  languages: [javascript, typescript]
  severity: WARNING
  message: Review value-ranked assets passed to a wallet transfer operation
  patterns:
  - pattern-inside: |
      $A.sort(($X, $Y) => $Y.amount_usd - $X.amount_usd);
      ...
  - pattern-either:
    - pattern: $W.sendTransaction(...)
    - pattern: |
        $W.request({method: "eth_sendTransaction", ...})

Evidenzstatus Im Prüfbestand belegtPrimärquellengebundenBegrenzt oder offen

Was wir geprüft haben

Untersucht wurde ein fixierter JavaScript-Snapshot des GitLab-Projekts cryptodrainexe/cryptowalletdrainer. Der Quellstand stammt vom 23. Februar 2025, das manuelle Audit vom 12. Oktober 2026. Für diese Darstellung wurden die vorhandenen Dateien am 13. Oktober rein statisch verglichen.

Die Frage lautet: Was zeigt diese konkrete Kopie über Wallet-Verhalten, Datenübermittlung und die Vollständigkeit des Systems? Es wurde keine Windows-EXE untersucht, kein Sample ausgeführt und kein Endpunkt kontaktiert.

Referenz: ARTIFACT-MANIFEST.md, Commit 233cd4e62536170ef67ac12e3ac8f218f1d10517; Verhaltensbewertung in AUDIT-DE.md. Die Hashliste unten unterscheidet Original und Ableitungen.

ARTIFACT MANIFEST

Dateien und Prüfsummen

sample/web3-provider.js
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4

Originalsample

artifacts/web3-provider.normalized.analysis.txt
02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e

Analysefassung / Werkzeug

artifacts/web3-provider.deobfuscated.analysis.txt
d3fa51775c324cbb750dbc3e27cb3e834a44dcd2cd23a2b64e5775a65699d230

Analysefassung / Werkzeug

tools/deobfuscate-provider.mjs
89abae5ced4c67258d7ef4d14f53c05efa44e09ccd0a7889a183b5e917c0bcf1

Analysefassung / Werkzeug

Dateiverbund und Analyseverlauf

Die erste Ansicht zeigt ausgewählte Referenzen des erhaltenen HTML-Pakets. Die zweite trennt Rohdatei, unser Werkzeug, vorhandene Ableitungen und Bericht. Linien bedeuten dokumentierte Dateibeziehungen, keine ausgeführte Wallet- oder C2-Kette.

FILE / EVIDENCE MAP

Welche Datei gehört zu welchem Beleg?

Dateireferenzen und Aufbereitung sind zwei verschiedene Zusammenhänge.

Eine Dateireferenz belegt kein Laufzeitverhalten. Dokumentierte Aufbereitung ist keine erneute Ausführung.

QuelleWerkzeugAbleitungBelegFehlendReferenz geprüftDokumentiertUngeklärt

Dateien

Ausgewählte HTML-Referenzen, vorhandene Dateien und fehlende Abhängigkeiten.

index.html

Original-HTML mit Scriptreferenzen.

Datei
sample/index.html
SHA-256
fcf7097d63a47ea9b6bf14b613a34cf1199225792d75da4f647c1dd03f1b2e4c
Fundstelle
86–97
  • index.html → web3-modal.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile87: statische src-Referenz; keine Browserausführung.

  • index.html → web3-loader.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile88: statische src-Referenz; keine Browserausführung.

  • index.html → web3-data.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile94: statische src-Referenz; keine Browserausführung.

  • index.html → web3-provider.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile97: statische src-Referenz; keine Browserausführung.

  • index.html → Axios-Datei fehltHTML-Referenz · Ungeklärt

    index.html, Zeile86: statische src-Referenz; keine Browserausführung.

  • index.html → Seaport-Datei fehltHTML-Referenz · Ungeklärt

    index.html, Zeile93: statische src-Referenz; keine Browserausführung.

Zugehöriges Berichtskapitel →
web3-modal.js

Lokale Datei vorhanden; HTML referenziert sie in Zeile87.

Datei
sample/js/web3-modal.js
SHA-256
c2ab8b77f0645edd26fa1c6e0f69d07cc06d9763b9904e01b71902f12d05c6e9
  • index.html → web3-modal.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile87: statische src-Referenz; keine Browserausführung.

web3-loader.js

Lokale Datei vorhanden; HTML referenziert sie in Zeile88.

Datei
sample/js/web3-loader.js
SHA-256
801d62fc02f89e7c1b414392e066dcda139ea3154cb3a48da721ff9a9df49f1f
  • index.html → web3-loader.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile88: statische src-Referenz; keine Browserausführung.

web3-data.js

Lokale Datei vorhanden; HTML referenziert sie in Zeile94.

Datei
sample/js/web3-data.js
SHA-256
0e5f7c28c6614ae5f1fba671c315cbf6d4ff809a305503ddc2eb3e1fe908e0d7
  • index.html → web3-data.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile94: statische src-Referenz; keine Browserausführung.

web3-provider.js

Fixierter Rohcode, HTML-Referenz in Zeile97.

Datei
sample/js/web3-provider.js
SHA-256
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4
  • index.html → web3-provider.jsHTML-Referenz · Referenz geprüft

    index.html, Zeile97: statische src-Referenz; keine Browserausführung.

Zugehöriges Berichtskapitel →
Axios-Datei fehlt

HTML-Zeile86 referenziert eine Datei außerhalb des erhaltenen Pakets.

  • index.html → Axios-Datei fehltHTML-Referenz · Ungeklärt

    index.html, Zeile86: statische src-Referenz; keine Browserausführung.

Seaport-Datei fehlt

HTML-Zeile93 referenziert eine im Paket fehlende Datei.

  • index.html → Seaport-Datei fehltHTML-Referenz · Ungeklärt

    index.html, Zeile93: statische src-Referenz; keine Browserausführung.

Analyseverlauf

Historisch dokumentierte Aufbereitung; Hashes jetzt lesend geprüft.

Rohdatei

Originalbytes separat erhalten.

Datei
sample/js/web3-provider.js
SHA-256
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4
  • Rohdatei → Unser AnalysewerkzeugEingabe im Werkzeug · Referenz geprüft

    Werkzeug Zeile12 liest eine Textdatei; der historische Lauf wird nur dokumentiert.

Zugehöriges Berichtskapitel →
Unser Analysewerkzeug

Lokaler Textparser, hier nur gelesen.

Datei
tools/deobfuscate-provider.mjs
SHA-256
89abae5ced4c67258d7ef4d14f53c05efa44e09ccd0a7889a183b5e917c0bcf1
Fundstelle
12; 110–121
  • Rohdatei → Unser AnalysewerkzeugEingabe im Werkzeug · Referenz geprüft

    Werkzeug Zeile12 liest eine Textdatei; der historische Lauf wird nur dokumentiert.

  • Unser Analysewerkzeug → Decoderersetzte FassungHistorische Ersetzung · Dokumentiert

    ARTIFACT-MANIFEST.md, Derived artifacts: Decoderaufrufe statisch ersetzt.

  • Unser Analysewerkzeug → String-MapHistorische Zuordnung · Dokumentiert

    Manifest führt string-table-map.json mit eigenem Hash auf; Mapdaten nicht veröffentlicht.

Zugehöriges Berichtskapitel →
String-Map

Vorhandene Ableitung; Inhalt nicht veröffentlicht.

Datei
artifacts/string-table-map.json
SHA-256
f84983431ffcc51171c4060af2f021c14a370a3dd89005c085a2a4be3c4cdc69
  • Unser Analysewerkzeug → String-MapHistorische Zuordnung · Dokumentiert

    Manifest führt string-table-map.json mit eigenem Hash auf; Mapdaten nicht veröffentlicht.

Decoderersetzte Fassung

Bestehendes Artefakt nach statischer Ersetzung.

Datei
artifacts/web3-provider.deobfuscated.analysis.txt
SHA-256
d3fa51775c324cbb750dbc3e27cb3e834a44dcd2cd23a2b64e5775a65699d230
  • Unser Analysewerkzeug → Decoderersetzte FassungHistorische Ersetzung · Dokumentiert

    ARTIFACT-MANIFEST.md, Derived artifacts: Decoderaufrufe statisch ersetzt.

  • Decoderersetzte Fassung → Normalisierte FassungHistorische Normalisierung · Dokumentiert

    Manifest: Terser5.44.0-Faltung und Formatierung.

  • Artefaktmanifest → Decoderersetzte FassungArtefakthash · Referenz geprüft

    SHA-256 lokal neu berechnet und mit Manifest verglichen.

Zugehöriges Berichtskapitel →
Normalisierte Fassung

Bestehende Terser-Aufbereitung; eigener Hash.

Datei
artifacts/web3-provider.normalized.analysis.txt
SHA-256
02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e
  • Decoderersetzte Fassung → Normalisierte FassungHistorische Normalisierung · Dokumentiert

    Manifest: Terser5.44.0-Faltung und Formatierung.

  • Normalisierte Fassung → Manueller BerichtStatische Belegstellen · Referenz geprüft

    AUDIT-DE.md verweist auf Zeilen der normalisierten Fassung.

  • Artefaktmanifest → Normalisierte FassungArtefakthash · Referenz geprüft

    SHA-256 lokal neu berechnet und mit Manifest verglichen.

Zugehöriges Berichtskapitel →
Artefaktmanifest

Historische Zählwerte und Hashes, keine erneute Ausführung.

Datei
ARTIFACT-MANIFEST.md
SHA-256
adf21af3f97609782c007455bd62409ca1aeccd1cca282b00c1075dbfe3e6bce
Fundstelle
Derived artifacts
  • Artefaktmanifest → Decoderersetzte FassungArtefakthash · Referenz geprüft

    SHA-256 lokal neu berechnet und mit Manifest verglichen.

  • Artefaktmanifest → Normalisierte FassungArtefakthash · Referenz geprüft

    SHA-256 lokal neu berechnet und mit Manifest verglichen.

Zugehöriges Berichtskapitel →
Manueller Bericht

Interpretation und Grenzen, getrennt von Quellcode.

Datei
AUDIT-DE.md
SHA-256
0b9cdff32924f03d6aa5bf67be15808956e45a1b3273c1e2dce8bd3a70eb418b
Fundstelle
Sources and reproducibility; deobfuscation status
  • Normalisierte Fassung → Manueller BerichtStatische Belegstellen · Referenz geprüft

    AUDIT-DE.md verweist auf Zeilen der normalisierten Fassung.

Zugehöriges Berichtskapitel →

Grenze: Script-src ist eine HTML-Referenz, kein Beleg für erfolgreiche Laufzeitinitialisierung. Das vollständige ursprüngliche Backend liegt nicht vor. Die historische Transformation wurde nicht erneut ausgeführt.

Originaldatei: HTML-Metadaten

Der HTML-Snapshot trägt den Projektnamen im title-Element. Die Browserdatei bezeichnet sich damit selbst als Drainer; der Name allein ist trotzdem kein Verhaltensnachweis. Hier werden nur Metadaten gezeigt, nicht das ausführende Script-Setup.

htmlsample/index.html · Originalzeilen 1–5Sample-Auszug
sample/index.html · Zeilen 1–5
Datei-Hash anzeigenSHA-256 fcf7097d63a47ea9b6bf14b613a34cf1199225792d75da4f647c1dd03f1b2e4c
<html lang="en"><head></head><body>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CryptoDrainEXE Multi-chain Crypto Wallet Drainer</title>
Code lesen

Was bei der Deobfuskierung verändert wurde

Das damalige Manifest dokumentiert 3.295 Stringeinträge, 403 Tabellenrotationen, 107 Decoder-Aliase und 7.922 statisch ersetzte Aufrufe. Anschließend wurden 1.722 Stringkonkatenationen gefaltet und die normalisierte Fassung mit Terser 5.44.0 syntaktisch geprüft. Diese Arbeit wurde hier nicht erneut ausgeführt.

Original, Decoderersetzung und Normalisierung haben unterschiedliche Hashes. Teilweise kryptische Variablennamen bleiben erhalten. Die Fassung ist lesbar, aber kein ausgeführtes Programm und kein nachgewiesenes Deployment.

Originalbeleg: Seitentitel

Der kurze Originalauszug wird nur als Text angezeigt. Er wurde in der Rohdatei und der vorhandenen normalisierten Fassung exakt gefunden. Der Seitentitel wird als Name in den Wallet-Verbindungsmetadaten verwendet. Diese Stelle erklärt die Transformation, nicht die schädliche Funktion des gesamten Samples.

ARTEFAKT / REKONSTRUKTION

Originalbeleg: Seitentitel

Quellartefakt · Hash der vollständigen Datei, nicht des Ausschnitts

Datei
sample/web3-provider.js
SHA-256
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4
Fundstelle
Zeile 1, Spalte 5485
01 · Vor AufbereitungOriginal / nicht ausführen
'name':document[_0x24d3e8(0x483)]
02 · RekonstruktionVorhandene normalisierte Analysefassung
name: document.title,
Rekonstruktionsdatei und eigene Prüfsumme
Rekonstruktionsdatei
artifacts/web3-provider.normalized.analysis.txt
SHA-256
02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e
Fundstelle der Rekonstruktion
Zeile 113

Textansicht · keine Ausführung · Original bleibt unverändert

Decoderaufruf

Der hexadezimale Aufruf verdeckt hier einen Eigenschafts- oder Stringnamen. Der kurze Ausschnitt bleibt mit seiner Originaldatei und Fundstelle verknüpft.

Statisch aufgelöst

Die damalige Decoderersetzung und Normalisierung ergeben document.title. Die Fundstelle in der erzeugten Analysefassung ist separat angegeben.

Lesbarer Kontext

Der Seitentitel dient als Name in Wallet-Verbindungsmetadaten. Er ist weder Empfängeradresse noch C2-Ziel.

Grenze: Kein vollständiger Decoder, keine Aussage zu Laufzeit oder Zahlung.

Originalbeleg: DOM-Elementtyp

Die normalisierte Fassung zeigt die tatsächlich verwendeten DOM-Bezeichner: style, div, web3-overlay und web3-modal. Der obere Vergleich belegt eine einzelne Stringauflösung; der längere Originalauszug darunter zeigt ihren unmittelbaren UI-Kontext.

Es ist ein Ausschnitt aus der bestehenden Analysefassung, keine nachgebaute Modell-UI. SHA-256: 02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e.

ARTEFAKT / REKONSTRUKTION

Originalbeleg: DOM-Elementtyp

Quellartefakt · Hash der vollständigen Datei, nicht des Ausschnitts

Datei
sample/web3-provider.js
SHA-256
b8dae0cab6e95db8de1d3bb1baef189d9e4956c3ad5f83680c5b0597e255f2f4
Fundstelle
Zeile 1, Spalte 63689
01 · Vor AufbereitungOriginal / nicht ausführen
'FxZSQ':_0x844b4c(0x579)
02 · RekonstruktionVorhandene normalisierte Analysefassung
FxZSQ: "style",
Rekonstruktionsdatei und eigene Prüfsumme
Rekonstruktionsdatei
artifacts/web3-provider.normalized.analysis.txt
SHA-256
02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e
Fundstelle der Rekonstruktion
Zeile 1672

Textansicht · keine Ausführung · Original bleibt unverändert

Decoderaufruf

Der hexadezimale Aufruf verdeckt hier einen Eigenschafts- oder Stringnamen. Der kurze Ausschnitt bleibt mit seiner Originaldatei und Fundstelle verknüpft.

Statisch aufgelöst

Die damalige Decoderersetzung und Normalisierung ergeben "style". Die Fundstelle in der erzeugten Analysefassung ist separat angegeben.

Lesbarer Kontext

style bezeichnet ein DOM-Element. Die daneben stehenden Namen web3-overlay und web3-modal ordnen den String der Oberfläche zu.

Grenze: Kein vollständiger Decoder, keine Aussage zu Laufzeit oder Zahlung.

javascriptNormalisierte Analysefassung · Zeilen 1672–1679Rekonstruierter Sample-Auszug
artifacts/web3-provider.normalized.analysis.txt · Zeilen 1672–1679
Datei-Hash anzeigenSHA-256 02818c11a03deb783b45f89bfbc44409ae39ad7db7bbdc16edb251e30d27f42e
        FxZSQ: "style",
        OujMT: "web3-style",
        iviYd: "div",
        kKYbd: "web3-overlay",
        wqNjF: "none",
        XEQTG: ".web3-overlay",
        uoEut: "click",
        luxzn: "web3-modal"
Code lesen

Unser Werkzeug: Escape-Zeichen lesen

Dieser Ausschnitt stammt aus unserem Analysewerkzeug, nicht aus dem Drainer. Er prüft einzelne Escape-Sequenzen, gibt ein Zeichen zurück und verschiebt die Leseposition. Kein eval, kein Browser und kein Netzwerkaufruf.

Der Ausschnitt ist kein vollständiger JavaScript-Parser. Er belegt die Arbeitsweise eines Hilfsschritts, nicht eine Ausführung des Samples.

javascriptOriginalauszug: unser statisches Analysewerkzeug, Zeilen 14–31Analysewerkzeug-Auszug
function decodeEscape(text, index) {
  const ch = text[index];
  const simple = { n: "\n", r: "\r", t: "\t", b: "\b", f: "\f", v: "\v", "0": "\0" };
  if (Object.hasOwn(simple, ch)) return [simple[ch], index + 1];
  if (ch === "x") {
    const hex = text.slice(index + 1, index + 3);
    if (!/^[0-9a-f]{2}$/i.test(hex)) throw new Error(`invalid hex escape at ${index}`);
    return [String.fromCharCode(Number.parseInt(hex, 16)), index + 3];
  }
  if (ch === "u") {
    const hex = text.slice(index + 1, index + 5);
    if (!/^[0-9a-f]{4}$/i.test(hex)) throw new Error(`invalid unicode escape at ${index}`);
    return [String.fromCharCode(Number.parseInt(hex, 16)), index + 5];
  }
  if (ch === "\n") return ["", index + 1];
  if (ch === "\r" && text[index + 1] === "\n") return ["", index + 2];
  return [ch, index + 1];
}
Code lesen

Analysewerkzeug: ein begrenztes Stringliteral lesen

Der echte Auszug aus unserem Werkzeug liest Zeichen zwischen bekannten Anführungszeichen. Escape-Sequenzen werden an den separaten Helfer übergeben. Die Funktion wertet kein JavaScript aus; Tabellenmarker und sample-spezifische Decoderzuordnungen sind nicht Teil dieses Auszugs.

javascripttools/deobfuscate-provider.mjs · Originalzeilen 44–58Analysewerkzeug-Auszug
tools/deobfuscate-provider.mjs · Zeilen 44–58
Datei-Hash anzeigenSHA-256 89abae5ced4c67258d7ef4d14f53c05efa44e09ccd0a7889a183b5e917c0bcf1
    const quote = text[i];
    if (quote !== "\"" && quote !== "'") throw new Error(`unexpected token in string table at ${i}`);
    i += 1;
    let value = "";
    while (i < text.length && text[i] !== quote) {
      if (text[i] === "\\") {
        const decoded = decodeEscape(text, i + 1);
        value += decoded[0];
        i = decoded[1];
      } else {
        value += text[i];
        i += 1;
      }
    }
    if (text[i] !== quote) throw new Error("unterminated string table item");
Code lesen

Analysewerkzeug: Stringliterale zusammenfalten

Dieser zweite Werkzeugauszug verbindet erkannte JSON-Stringliterale. Die Schleife stoppt, sobald keine Ersetzung mehr erfolgt. Das ist der echte lokale Verarbeitungsschritt, kein nachgebautes Drainer-Modell. Der historische Lauf und seine Zählwerte stehen im Manifest; er wurde für diese Ergänzung nicht erneut ausgeführt.

javascripttools/deobfuscate-provider.mjs · Originalzeilen 110–121Analysewerkzeug-Auszug
tools/deobfuscate-provider.mjs · Zeilen 110–121
Datei-Hash anzeigenSHA-256 89abae5ced4c67258d7ef4d14f53c05efa44e09ccd0a7889a183b5e917c0bcf1
const jsonString = '"(?:\\\\.|[^"\\\\])*"';
const concatPattern = new RegExp(`(${jsonString})\\s*\\+\\s*(${jsonString})`, "g");
let foldedConcats = 0;
while (true) {
  let round = 0;
  output = output.replace(concatPattern, (_full, left, right) => {
    round += 1;
    foldedConcats += 1;
    return JSON.stringify(JSON.parse(left) + JSON.parse(right));
  });
  if (round === 0) break;
}
Code lesen

Wallet-Verhalten und Datenübermittlung

Die statische Analyse dokumentiert eine Wertsortierung über amount_usd (Zeile 4445) und Wallet-/Gerätetelemetrie mit IP-/Standortdaten und Assetinventar (1938–2258). Damit priorisiert der Code Assets nach Wert und übermittelt Informationen über Wallet und Umgebung.

Der manuelle Befund CR-01 beschreibt die schädliche Diskrepanz: Die Seite rahmt den Vorgang als Verifikation oder Claim, während der Code hohe Berechtigungen oder direkte Vermögensübertragungen verlangt. Die zugrunde liegenden Wallet-Zweige sind in 4678–5875 dokumentiert; erlaubnisbezogene Befunde liegen in 3525–3832 und 4529–4677. „Verification Error“ erscheint in Zeile 4816 als UI-Text. Die Bewertung stützt sich auf die Pfade und ihren Kontext, nicht allein auf dieses Wort.

Telegram ist dabei Telemetriesenke, nicht der Nachweis eines vollständig vorhandenen ausführenden C2-Servers.

Adressen und Dienste nach Rolle

Die zwei konfigurierten Zieladressen stehen unten getrennt von Protokolladressen und Diensten. Address und Receiver benennen denselben Wert; die Chains-Konfiguration führt zusätzlich ein Ausführungsvertragsziel. Der manuelle Audit verfolgt die Empfänger-/Spenderrolle statisch bis zu werttragenden Pfaden.

Weitere Wallet-Deep-Links, Chain-Explorer, Preis- und Metadatendienste sind im Sample referenziert. Sie sind keine eigenständigen Schadindikatoren. Die öffentliche IP-Abfrage referenziert api[.]ipify[.]org in der normalisierten Fassung, Zeile 1950; unten sind repräsentative Dienste statt einer vollständigen Domainliste aufgeführt.

INDICATOR LEDGER

Indikatoren und Zuordnung

Die zwei konfigurierten Zieladressen stehen unten getrennt von Protokolladressen und Diensten. Address und Receiver benennen denselben Wert; die Chains-Konfiguration führt zusätzlich ein Ausführungsvertragsziel. Der manuelle Audit verfolgt die Empfänger-/Spenderrolle statisch bis zu werttragenden Pfaden. Weitere Wallet-Deep-Links, Chain-Explorer, Preis- und Metadatendienste sind im Sample referenziert. Sie sind keine eigenständigen Schadindikatoren. Die öffentliche IP-Abfrage referenziert api[.]ipify[.]org in der normalisierten Fassung, Zeile 1950; unten sind repräsentative Dienste statt einer vollständigen Domainliste aufgeführt.

wallet-1WalletStatisch belegt, nicht live verifiziert
0x3362B269946B8B244FF50cF07cc73f133279A21E
Rolle
Konfigurierter Empfänger/Spender
Beleg
Konfigurationsrolle statisch belegt; Kontotyp nicht On-Chain geprüft.
Quelle
Normalisierte Fassung, Zeilen 134, 271, 284, 297, 310, 323, 358
Grenze
Kein Zahlungseingang, Eigentum oder aktueller Betrieb nachgewiesen.
wallet-2WalletStatisch belegt, nicht live verifiziert
0x55775D0D339D5B4146699a04fF49feEf8bc1Cff2
Rolle
Konfiguriertes Ausführungsvertragsziel
Beleg
Konfigurationsrolle statisch belegt; Kontotyp nicht On-Chain geprüft.
Quelle
Normalisierte Fassung, Zeilen 232, 245, 258
Grenze
Kein Zahlungseingang, Eigentum oder aktueller Betrieb nachgewiesen.
domain-3TelemetrieDefanged; nicht kontaktiert
api[.]telegram[.]org
Rolle
Telemetriedienst; Bot-Zugangsdaten und Chat-Kennungen redigiert
Beleg
Domain kommt im fixierten Quelltext vor.
Quelle
Normalisierte Fassung, Zeilen 2044, 2099, 2138, 2187, 2232
Grenze
Legitimer Dienst nicht als eigenständiger Schadindikator behandeln. Pfade und Credentials redigiert.
domain-4InfrastrukturDefanged; nicht kontaktiert
avatars[.]githubusercontent[.]com
Rolle
Icon für Verbindungsmetadaten
Beleg
Domain kommt im fixierten Quelltext vor.
Quelle
Normalisierte Fassung, Zeilen 116
Grenze
Legitimer Dienst nicht als eigenständiger Schadindikator behandeln. Pfade und Credentials redigiert.
domain-14InfrastrukturDefanged; nicht kontaktiert
ipapi[.]co
Rolle
IP-/Standortabfrage
Beleg
Domain kommt im fixierten Quelltext vor.
Quelle
Normalisierte Fassung, Zeilen 1954
Grenze
Legitimer Dienst nicht als eigenständiger Schadindikator behandeln. Pfade und Credentials redigiert.
domain-22InfrastrukturDefanged; nicht kontaktiert
rpc[.]ankr[.]com
Rolle
Blockchain-RPC
Beleg
Domain kommt im fixierten Quelltext vor.
Quelle
Normalisierte Fassung, Zeilen 123, 124, 125, 126, 127, 128, 130, 131, 132, 2503
Grenze
Legitimer Dienst nicht als eigenständiger Schadindikator behandeln. Pfade und Credentials redigiert.
domain-25InfrastrukturDefanged; nicht kontaktiert
toys2025[.]netlify[.]app
Rolle
Deklarierte Seitenmetadaten
Beleg
Domain kommt im fixierten Quelltext vor.
Quelle
Normalisierte Fassung, Zeilen 115, 1633
Grenze
Legitimer Dienst nicht als eigenständiger Schadindikator behandeln. Pfade und Credentials redigiert.
protocol-1InfrastrukturStatischer Kontext
0x000000000022d473030f116ddee9f6b43ac78ba3
Rolle
Protokoll-/Tokenadresse, kein belegter Betreiberempfänger
Beleg
Konfigurationskontext, getrennt von Empfängerwerten.
Quelle
Normalisierte Fassung, Zeilen 3566, 4138
Grenze
Kein Nachweis für Betreiberkontrolle oder Zahlungseingänge.

Warum kein vollständiges C2 rekonstruiert ist

In dieser Kopie ist send_request ein lokaler Dispatcher (Zeilen 1795–1858), kein vollständiger HTTP-C2-Client. Die Weitergabe bestimmter Signaturdaten an einen ausführenden Server ist deshalb nicht vollständig vorhanden. Der ursprüngliche Servercode fehlt.

Telegram ist als Telemetriedienst dokumentiert; Bot-Token und Chat-/Nutzerkennungen bleiben redigiert. RPC-Endpunkte und die deklarierte Metadaten-Domain sind keine Ersatzbelege für ein vollständiges Betreiber-Backend.

Was an dieser Kopie auffällt

Stringtabellen und kryptische Namen sind gewöhnliche Obfuskation. Aussagekräftiger ist die Kombination aus Wallet-orientiertem Verhalten, Wertsortierung und Telemetrie bei gleichzeitig unvollständigen Abhängigkeiten und fehlendem Servercode.

Das erklärt, warum eine lesbare Codekopie und ein vollständig beobachtetes System nicht dasselbe sind. Es erlaubt keine Aussage zur Marktposition oder zu tatsächlichen Opferverlusten.

Befunde im Überblick

  • Original und Analysefassung sind getrennte Artefakte.
  • Wallet-/Dienstrollen sind statisch belegt, nicht live bestätigt.
  • Der vollständige ursprüngliche Server ist nicht vorhanden.

Grenzen der Prüfung

  • Keine Windows-EXE-Analyse, Sample-Ausführung oder Wallet-Signatur.
  • Keine On-Chain-Verifikation von Kontotyp, Eigentum oder Verlusten.
  • Keine Credentials, Requestkörper oder funktionsfähigen Drainer-Sequenzen veröffentlicht.

Kontext, nicht Beleg

Der Evidence Anchor am Anfang nennt den tatsächlich verwendeten Binär-, Datei- oder Revisionsbezug. Diese Links liefern Einordnung und berichtete Beobachtungen; sie ersetzen keine lokale Sample-Analyse.

Abschließendes Urteil

Fazit

Die Browserfunktion ist belegt. Der ursprüngliche Server fehlt.

Der fixierte Code trägt die Einordnung als Browser-Wallet-Drainer. Die Original-/Analysepaare machen ausgewählte Transformationen überprüfbar. Empfängerrollen und Telemetrie sind statisch dokumentiert; Zahlungen, Kontotypen und heutiger Betrieb wurden nicht geprüft. Fehlende Abhängigkeiten und der lokale Dispatcher begrenzen die Rekonstruktion des Gesamtsystems.

Nächste Schritte

  • Quellstand und Hashes bei jeder Befundweitergabe erhalten.
  • Statische Rollen nicht als Zahlungseingänge oder Betreiberidentität ausgeben.
Worauf dieses Urteil beruhtRein statisch auf fixierten lokalen Quellen; keine Sample-Ausführung oder Kontakte zu Sample-Endpunkten.
CryptoDrainEXE-Browsercode und lokales statisches Analysewerkzeug
← Alle Research-Audits

Gespräch starten

Projekt besprechen.

Gespräch starten