Ein kleines Python-Skript, das die Ergebnisse des Netzwerkscanners Fscan aufräumt und für den Pentest-Bericht formatiert – genau so ein Helfer, wie ihn Sicherheitsleute gern schnell von GitHub holen. Im Repository „FscanOutput-Beautify“ steckte allerdings ein Trojaner. Der Antivirenhersteller Doctor Web hat am Donnerstag eine Analyse veröffentlicht, nach der Angreifer gezielt präparierte GitHub-Projekte für IT-Sicherheitsfachleute auslegen. Bis zum Zeitpunkt der Untersuchung seien mehr als 2.000 Rechner infiziert worden. Wie Dr.Web zählt und wie viele Infektionen auf die Security-Köder entfallen, geht aus dem Bericht nicht hervor. Am Ende der Infektionskette stehen eine Backdoor, ein Clipper, der Krypto-Adressen austauscht, und ein Infostealer.

Vom Spiele-Bot zum Pentest-Helfer

Laut Dr.Web tauchten die ersten verseuchten Repositorys schon vor rund zwei Jahren auf. Damals hatten es die Täter auf Besitzer von Krypto-Wallets abgesehen und boten Visual-Studio-Projekte rund um Blockchain-Spiele, Spiele-Bots und Cheats an, etwa für die Telegram-Plattform Catizen. Für Nutzer mit wenig IT-Erfahrung lagen sogar Anleitungen bei, wie man Visual Studio installiert und das Repository klont.

Inzwischen haben die Angreifer eine neue Zielgruppe entdeckt: Die Schadsoftware steckt jetzt in Projekten für Scan-Automatisierung, das Testen von Sicherheitssystemen und Log-Analyse. In seiner Liste der Kompromittierungsindikatoren nennt Dr.Web neun Beispiel-Repositorys, neben dem Fscan-Parser etwa eine grafische Oberfläche für das Tunnel-Werkzeug FRP. Fscan selbst ist ein bekanntes Open-Source-Werkzeug für Schwachstellenscans in internen Netzen, das Original hat auf GitHub knapp 15.000 Sterne.

Ein Blick über die GitHub-API auf das Fscan-Repository zeigt typische Merkmale solcher Fälschungen: Das Konto dahinter wurde am 25. Juli 2026 angelegt, das Repository wenige Minuten später. Von den 214 Commits tragen 206 nur die Nachricht „LOG“, fast 20 Schlagworte von „pentest-reporting“ bis „security-automation“ sollen für Auffindbarkeit sorgen. Sterne oder Forks hat das Projekt keine. Mindestens sieben der neun von Dr.Web genannten Beispiel-Repositorys waren am Freitagabend weiterhin öffentlich abrufbar. Ob GitHub informiert wurde, geht aus dem Bericht nicht hervor.

Versteckt hinter Leerzeichen

Den Schadcode verteilen die Angreifer auf mehrere Dateitypen. In Visual-Studio-Projekten enthält die .csproj-Datei ein Pre-Build-Ereignis, das vor dem Kompilieren einen versteckten, kodierten PowerShell-Befehl startet. Weitere PowerShell-Befehle liegen in .suo-Dateien, in denen Visual Studio eigentlich benutzerspezifische Einstellungen speichert. In Python- und Go-Dateien verbirgt sich der Code hinter sehr vielen Leerzeichen: Auf einem Screenshot von Dr.Web folgt einer harmlosen import-Anweisung eine lange Leerstrecke und erst dahinter der Befehl, der eine Datei herunterlädt und per PowerShell ausführt.

Das erste PowerShell-Skript landet etwa als t.ps1 oder L.ps1 unter C:\Users\Public\Pictures. Es fragt neben Servern der Angreifer auch legitime Dienste wie YouTube, Telegram, Google Docs, GitCode und Pastebin ab und erhält so verschlüsselt den Link zum Archiv Quixo.7z. Dessen Inhalt wird nach C:\ProgramData\Windows.Microsoft.Photos entpackt. Darin steckt das eigentliche Werkzeug: eine auf Electron basierende Anwendung namens Microsoft.exe, die Dr.Web als Trojan.Loader.3261 erkennt.

Der modulare Loader verschafft sich höhere Rechte, sorgt für seinen automatischen Neustart und schaltet Windows Defender, die Benutzerkontensteuerung, Benachrichtigungen, die Systemwiederherstellung und den Schattenkopie-Dienst VSS ab. Er trägt eigene Ausnahmen im Defender ein, versucht Virenschutz von McAfee, ESET und Malwarebytes zu deinstallieren und manipuliert die hosts-Datei, damit Domains von Antivirenherstellern nicht mehr erreichbar sind. Im Standardmodus nutzt er mehrere Tarntechniken, um Sicherheitssoftware auszuhebeln: Er gibt explorer.exe als Elternprozess aus, deaktiviert die intelligente App-Steuerung (Smart App Control) per Registry, entfernt Hooks von EDR-Software aus ntdll.dll, ruft Systemfunktionen direkt auf und legt per Speicher-Patch die Ereignisprotokollierung ETW sowie die Skriptprüfung AMSI lahm.

Anschließend schleust er seine Nutzlast in legitime Prozesse wie RegAsm.exe ein. Zwei identische Kopien der Backdoor AsyncRAT nutzen unterschiedliche Netzwerk-Ports, nach Vermutung von Dr.Web, damit zwei Betreiber denselben Rechner gleichzeitig steuern können. Ein Clipper tauscht Krypto-Wallet-Adressen in der Zwischenablage aus und schickt dabei Screenshots an einen Telegram-Bot. Ein ebenfalls auf Electron basierender Infostealer prüft, ob er in einer Sandbox oder VM läuft, und sammelt Browserdaten, die XML-Dateien von FileZilla, die MobaXterm.ini, die FTP-Konfiguration von Total Commander, VPN-Einstellungen, Messenger-Dateien, Spielekonten und Discord-Tokens. Die Beute geht komprimiert per Telegram an die Täter. Dr.Web fand zudem ein noch unfertiges Modul, das darauf hindeutet, dass der Loader künftig als Windows-Dienst verankert und bei Bedarf neu heruntergeladen werden könnte.

Symbolbild: Quellcode in einem Editor auf einem aufgeklappten Laptop

Bild: In den gefälschten Projekten steht der Schadcode oft dort, wo beim Lesen niemand hinschaut (Symbolbild). Foto: Artem Sapegin / Wikimedia Commons, CC0

Bekannte Masche, neues Publikum

Neu ist die Methode nicht. Googles Threat Analysis Group berichtete schon im Januar 2021 von einer Kampagne, die sie Nordkorea zuschrieb: Angreifer schickten Sicherheitsforschern Visual-Studio-Projekte, deren Build-Ereignisse beim Kompilieren Malware starteten. Kaspersky beschrieb im Februar 2025 unter dem Namen „GitVenom“ Hunderte gefälschte GitHub-Projekte mit auffallend ähnlichen Techniken: Schadcode nach rund 2.000 Tabulatorzeichen in Python-Dateien, Pre-Build-Ereignisse in Visual-Studio-Projekten, AsyncRAT, ein Clipper und ein Stealer, der per Telegram ausleitet. Auch dort blähten die Täter die Zahl der Commits künstlich auf, mit einer Datei, die alle paar Minuten aktualisiert wurde. Ob hinter beiden Kampagnen dieselben Leute stecken, sagt Dr.Web nicht.

Die Liste der gestohlenen Daten passt jedenfalls gut zur neuen Zielgruppe: SSH- und FTP-Clients wie MobaXterm und FileZilla oder VPN-Profile gehören zum Alltag von Admins und Pentestern.

Was du jetzt tun solltest

Bevor du ein unbekanntes Werkzeug ausführst oder kompilierst, lohnt der Blick auf Konto und Historie: Ein frisch angelegtes Konto, Hunderte Commits ohne inhaltliche Änderung, keine Sterne, Forks oder Issues und eine lange Schlagwortliste sind Warnzeichen. Prüfe, ob das Originalprojekt den Helfer überhaupt kennt oder verlinkt. Eine .suo-Datei gehört laut Microsoft nicht in die Versionsverwaltung; taucht sie in einem fremden Repository auf, ist das verdächtig. Schau dir vor dem Bauen die Projektdateien an:

# Build-Ereignisse und Exec-Aufrufe in Visual-Studio-Projekten
grep -rniE 'PreBuildEvent|PostBuildEvent|<Exec ' --include='*.csproj' --include='*.vcxproj' .

# Auffällig lange Zeilen in Python- und Go-Dateien
find . \( -name '*.py' -o -name '*.go' \) -exec awk 'length > 400 {print FILENAME ":" FNR " (" length " Zeichen)"}' {} +

Lädst du fertige Programme herunter, vergleiche die Prüfsumme mit der Angabe im Original-Repository. Bietet ein Projekt GitHubs Artifact Attestations an, kannst du mit gh attestation verify datei.zip --repo besitzer/projekt prüfen, ob die Datei tatsächlich aus diesem Repository stammt. Unbekannte Werkzeuge gehören in eine isolierte VM ohne Zugangsdaten und ohne Zugriff auf Kundennetze. Das empfahl schon Google 2021. Dass der Stealer laut Dr.Web erkennt, ob er in einer VM läuft, spricht nicht dagegen: Ein unauffälliger Testlauf beweist zwar nicht, dass ein Werkzeug harmlos ist, der Arbeitsrechner bleibt aber außen vor.

Wer ein solches Projekt bereits gebaut oder gestartet hat, findet in Dr.Webs Indikatorenliste auf GitHub Hashes, Domains und IP-Adressen. Erste Spuren lassen sich in einer PowerShell mit Administratorrechten prüfen:

# Ablageorte laut Dr.Web
Test-Path 'C:\ProgramData\Windows.Microsoft.Photos'
Get-ChildItem 'C:\Users\Public\Pictures' -Filter *.ps1

# Ausnahmen im Defender, die du nicht selbst angelegt hast
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess

# Manipulierte hosts-Datei
Get-Content C:\Windows\System32\drivers\etc\hosts

Gibt es Treffer, nimm den Rechner vom Netz. Weil der Loader Schutzfunktionen, Wiederherstellungspunkte und Schattenkopien abschaltet, ist eine Neuinstallation von Windows der sichere Weg. Ändere von einem sauberen Gerät aus alle Passwörter, die im Browser, in FileZilla, MobaXterm, Total Commander oder in VPN-Profilen gespeichert waren, beende aktive Sitzungen, etwa bei Discord und Spieleplattformen, und prüfe bei Krypto-Überweisungen jede eingefügte Wallet-Adresse.

Quellen

Bildnachweis