Backdoor auf Node.js: warum, warum und wie es funktioniert

Kürzlich haben uns Kollegen von Yandex ein Beispiel eines interessanten Trojaners mitgeteilt, über das wir in diesen Nachrichten berichtet haben. Eine solche Malware kommt nicht oft vor, daher haben wir uns entschlossen, sie genauer zu zerlegen und gleichzeitig darüber zu sprechen, warum wir selten auf solche Beispiele stoßen.

Der Trojaner ist eine in JavaScript geschriebene Mehrkomponenten-Hintertür, die mit Node.js. ausgeführt wird. Die Hauptelemente sind Worker und Updater, die vom Bootloader heruntergeladen und im System installiert werden. Die Nutzdaten können beliebig sein. In diesem Fall installiert der Trojaner den xmrig-Miner. Zum Zeitpunkt der Studie verwendete der Entwickler den Miner, um die TurtleCoin-Kryptowährung abzubauen.

MonsterInstall wird über Websites mit Cheats für beliebte Videospiele verbreitet. Die meisten dieser Ressourcen gehören dem Entwickler des Trojaners, aber wir haben mehrere andere infizierte Dateien auf anderen ähnlichen Websites gefunden. Der Besitzer eines von ihnen überwacht regelmäßig die Aktualisierungen der Wettbewerber und füllt seine Ressource mit neuen Inhalten. Dazu verwendet er das Skript parser.php, das über einen Proxy auf cheathappens.com nach neuen Cheats sucht.

Proxy parse done, total: 1 Use sox 84.228.64.133:1080 Error: CURL error(#52), attempts left: 10 Use sox 84.228.64.133:1080 Posts found: 30! [33mPage Satisfactory: ўЂµ№ЅµЂ +8 vCL#96731 {CheatHappens.com} already in base[0m [33mPage Borderlands: The Pre-Sequel - ўЂµ№ЅµЂ +28 v1.2019 {LinGon} already in base[0m [33mPage Borderlands - Game of the Year Enhanced: ўЂµ№ЅµЂ +19 v1.0.1 {LinGon} already in base[0m [33mPage Star Wars: Battlefront 2 (2017): ўЂµ№ЅµЂ +4 v01.04.2019 {MrAntiFun} already in base[0m [36mPage Far Cry 5: ўЂµ№ЅµЂ +23 v1.012 (+LOST ON MARS/DEAD LIVING ZOMBIES) {CheatHappens.com} added 2019-Apr-09[0m [36mPage Fate/Extella Link: ўЂµ№ЅµЂ +13 v04.09.2019 {CheatHappens.com} added 2019-Apr-09[0m [36mPage Superhot: ўЂµ№ЅµЂ +3 v2.1.01p { MrAntiFun} added 2019-Apr-09[0m [36mPage Dawn of Man: ўЂµ№ЅµЂ +7 v1.0.6 {CheatHappens.com} added 2019-Apr-08[0m [36mPage Borderlands 2: ўЂµ№ЅµЂ +14 v06.04.2019 {MrAntiFun} added 2019-Apr-08[0m [36mPage Borderlands: The Pre-Sequel - ўЂµ№ЅµЂ +17 v06.04.2019 {MrAntiFun} added 2019-Apr-08[0m [36mPage Tropico 6: ўЂµ№ЅµЂ +9 v1.01 {MrAntiFun} added 2019-Apr-08[0m [36mPage Operencia: The Stolen Sun - ўЂµ№ЅµЂ +20 v1.2.2 {CheatHappens.com} added 2019-Apr-08[0m [36mPage Enter the Gungeon: ўЂµ№ЅµЂ +6 v2.1.3 {MrAntiFun} added 2019-Apr-07[0m [36mPage The Guild 3: ўЂµ№ЅµЂ +2 v0.7.5 {MrAntiFun} added 2019-Apr-07[0m [36mPage Dead Effect 2: ўЂµ№ЅµЂ +8 v190401 {MrAntiFun} added 2019-Apr-07[0m [36mPage Assassin's Creed: Odyssey - ўЂµ№ЅµЂ +26 v1.2.0 {FLiNG} added 2019-Apr-07[0m [36mPage Assassin's Creed: Odyssey - ўЂµ№ЅµЂ +12 v1.2.0 {MrAntiFun} added 2019-Apr-06[0m [36mPage Super Dragon Ball Heroes: World Mission - ўЂµ№ЅµЂ +11 v1.0 {FLiNG} added 2019-Apr-05[0m [36mPage Tropico 6: ўЂµ№ЅµЂ +7 v1.02 97490 {CheatHappens.com} added 2019-Apr-05[0m [36mPage Risk of Rain 2: ўЂµ№ЅµЂ +10 Build 3703355 {CheatHappens.com} added 2019-Apr-05[0m [36mPage Sid Meier's Civilization 6 - Rise and Fall: ўЂµ№ЅµЂ +12 v1.0.0.314 {MrAntiFun} added 2019-Apr-05[0m [36mPage Sid Meier's Civilization 6 - Gathering Storm: ўЂµ№ЅµЂ +12 v1.0.0.314 {MrAntiFun} added 2019-Apr-05[0m [36mPage Sid Meier's Civilization 6: ўЂµ№ЅµЂ +12 v1.0.0.314 {MrAntiFun} added 2019-Apr-05[0m [36mPage Borderlands GOTY Enhanced: ўЂµ№ЅµЂ +16 v1.0 {CheatHappens.com} added 2019-Apr-05[0m [36mPage Borderlands Game of the Year Enhanced: ўЂµ№ЅµЂ +13 v1.00 {MrAntiFun} added 2019-Apr-04[0m [36mPage Assassin's Creed: Odyssey: ўЂµ№ЅµЂ +24 v1.2.0 (04.04.2019) {CheatHappens.com} added 2019-Apr-04[0m [36mPage Sekiro: Shadows Die Twice - ўЂµ№ЅµЂ +24 v1.02 {FLiNG} added 2019-Apr-04[0m [36mPage Hearts of Iron 4: ўЂµ№ЅµЂ +24 v1.6.2 {MrAntiFun} added 2019-Apr-04[0m [36mPage Wolcen: Lords of Mayhem - ўЂµ№ЅµЂ +5 v1.0.2.1 {MrAntiFun} added 2019-Apr-04[0m [36mPage Devil May Cry 5: ўЂµ№ЅµЂ +18 v1.0 (04.03.2019) {CheatHappens.com} added 2019-Apr-04[0m Parse done 


Auf den Websites der Entwickler gibt es eine große Auswahl an Cheats, aber für alle Links wird das gleiche Archiv zurückgegeben. Wenn Sie versuchen, eine der Dateien von der Malware-Site herunterzuladen, erhält der Benutzer Trojan.MonsterInstall. Einige Parameter des Trojaners können über den Download-Link erraten werden:

 https://<malicious_site>/fc/download.php?name=Borderlands%20GOTY%20Enhanced:%20%D0%A2%D1%80%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%20+16%20v1.0%20{CheatHappens.com}&link=https://<malicious_site>//r.php?site=http://gtrainers.com/load/0-0-1-7081-20&password=<malicious_site>/&uid=101&sid1=1&sid2=1&charset=utf-8 

  • name - der Name des Archivs und exe im Archiv;
  • Link - Ein Link zu der Datei, die der Benutzer herunterladen wollte (ist in data.json verkabelt).
  • Passwort - Passwort für das Archiv.

Angenommen, wir wählen den gewünschten Cheat aus und laden das passwortgeschützte 7zip-Archiv mit dem vielversprechenden Namen "ExtrimHack.rar" von der Website des Trojaner-Entwicklers herunter. Darin befinden sich eine ausführbare Datei, eine Konfigurationsdatei, eine 7zip-Bibliothek sowie ein bin-Archiv mit nativen C ++ - Bibliotheken und Skripten, die mit der Binärdatei Node.js. gestartet wurden

Beispiel für einen Archivinhalt:

  • 7z.dll;
  • data.bin;
  • data.json;
  • ESP-Cheat für COP GO.exe.


Wenn die ausführbare Datei gestartet wird, installiert der Trojaner alle für seinen Betrieb erforderlichen Komponenten und lädt den für den Benutzer erforderlichen Cheat unter Verwendung der Informationen aus der Datei data.json mit Parametern herunter.

Beispielinhalt von data.json:
 {"source":[5,10,11,43],"dataVersion":[0,0,0,115],"link":"http:\/\/clearcheats.ru\/images\/dl\/csgo\/ESP_csgo.dll"} 


Um mehrere Kopien seines Prozesses von der Arbeit auszuschließen, erstellt der Trojaner den Mutex „cortelMoney-suncMutex“ und installiert ihn im Verzeichnis „% WINDIR% \ WinKit \“. Anschließend wird überprüft, ob es sich in der Registrierung befindet ([HKLM \\ Software \\ Microsoft \\ Windows-Knoten]). In diesem Fall liest es seine Parameter und vergleicht die Version mit der in data.json angegebenen. Wenn die Version aktuell ist, macht sie nichts weiter und endet.

Danach entpackt der Trojaner den Inhalt von data.bin in% WINDIR% \\ WinKit \\ und installiert den Dienst, um start.js zu starten.

Inhalt von data.bin:
  • Daemon;
  • node_modules;
  • 7z.dll;
  • msnode.exe;
  • start.js;
  • startDll.dll;
  • update.js;
  • updateDll.dll.

Gleichzeitig ist msnode.exe eine ausführbare Datei Node.js mit einer gültigen digitalen Signatur, und das Verzeichnis node_modules enthält die Bibliotheken "ffi", "node-windows" und "ref".

Die Bibliothek startDll.dll wird in start.js geladen und ihr mymain-Export wird aufgerufen, in dem sie ihre Parameter aus der Registrierung liest, "% WINDIR% \\ WinKit \\ msnode% WINDIR% \\ WinKit \\ update.js" startet und den Dienst beendet "Windows-Knoten." Das Skript update.js lädt wiederum die Bibliothek updateDll.dll und ruft den mymain-Export auf. Nichts kompliziertes.

In updateDll.dll beginnt der Trojaner, Ihre Internetverbindung zu überprüfen. Zu diesem Zweck sendet er alle 10 Sekunden Anfragen an google.com, yahoo.com, facebook.com, bis alle drei 200 Code zurückgeben. Anschließend wird eine Anfrage mit Konfigurationsdaten an den POST-Server s44571fu [.] Bget [.] Ru / CortelMoney / enter.php gesendet:

 {"login":"NULL","mainId":"PPrn1DXeGvUtzXC7jna2oqdO2m?WUMzHAoM8hHQF","password":"NULL","source":[0,0,0,0],"updaterVersion":[0,0,0,0],"workerVersion":[0,0,0,0]} 


In diesem Fall wird für die Basisautorisierung ein Paar "cortel: money" verwendet, und der User-Agent wird auf "USER AGENT" gesetzt. Für die grundlegende Autorisierung nachfolgender Anforderungen wird das Anmeldekennwort verwendet, das vom Server gemeldet wird.

Der Server antwortet mit json wie folgt:

 { "login": "240797", "password": "tdzjIF?JgEG5NOofJO6YrEPQcw2TJ7y4xPxqcz?X", "updaterVersion": [0, 0, 0, 115], "updaterLink": "http:\/\/s44571fu.bget.ru\/CortelMoney\/version\/0-0-0-115-upd.7z", "workerVersion": [0, 0, 3, 0], "workerLink": "http:\/\/s44571fu.bget.ru\/CortelMoney\/version\/0-0-3-0-work.7z" } 


Wie Sie sehen können, enthält die Antwort des Servers Versionen der Hauptelemente des Trojaners. Wenn die aktuelle Version des Updaters auf dem Gerät des Benutzers älter ist als die vom Server gemeldete, lädt der Trojaner die Datei von dem angegebenen Link herunter und entpackt das Archiv in das Verzeichnis "% WINDIR% \\ WinKit \\\\", wo stattdessen der Wert des Parameters updaterVersion aus der Serverantwort angezeigt wird .

Der Trojaner entpackt die Worker-Datei in das Verzeichnis% WINDIR% \\ WinKit \\ SystemNode \\ und startet dann "% WINDIR% \\ WinKit \\ SystemNode \\ Sysnode% WINDIR% \\ WinKit \\ SystemNode \\ main.js".

Der Inhalt des Archivs mit dem Arbeiter:
  • node_modules;
  • 7za.exe;
  • Codex;
  • main.js;
  • sysnode.exe.

Der Trojaner entfernt dann den Windows Node Guard-Dienst und erstellt ihn erneut, wobei die ausführbare Datei durch die Windows Node-Dienstdatei ersetzt wird. Auf die gleiche Weise wird der Windows-Knotendienst neu erstellt und die ausführbare Datei durch den Dämon \\ service.exe ersetzt.

Als nächstes bildet service.xml mit Parametern:
 <service><id>service.exe</id><executable>C:\Windows\\WinKit\0.0.0.115\msnode.exe</executable><arguments>"C:\Windows\\WinKit\0.0.0.115\start.js"</arguments></service> 


Updater wird im Verzeichnis "C: \ Windows \ Reserve Service" installiert, vom Dienst registriert und von der Binärdatei Node.js. gestartet. Es besteht auch aus mehreren js-Skripten und nativen C ++ - Bibliotheken. Das Hauptmodul ist main.js.

Der Inhalt des Archivs mit Updater:
  • main.js;
  • start.js;
  • crypto.dll;
  • network.dll;
  • service.exe.

Zunächst erkennt der Trojaner das aktuelle Datum, indem er eine Anfrage an google.com, yandex.ru oder www.i.ua sendet. Er nutzt die etwas später erhaltenen Informationen. Anschließend wird der Inhalt der Datei bootList.json mithilfe der Bibliothek crypto.dll entschlüsselt.

Entschlüsselungsalgorithmus:
 key = '123' s = '' for i in range(len(d)): s += chr((ord(d[i]) - ord(key[i % len(key)])) & 0xff) 


Ruft von dort eine Liste der Verwaltungsserver ab:
 [{"node":"http://cortel8x.beget.tech/reserve","weight":10},{"node":"http://reserve-system.ru/work","weight":10}] 


Dann liest der Trojaner Informationen aus der Registrierung:
 function getInfo() { var WindowsNodeInfo = new Object(); WindowsNodeInfo.mainId = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "mainId"); WindowsNodeInfo.login = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "log"); WindowsNodeInfo.password = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "pass"); WindowsNodeInfo.source = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "source"); WindowsNodeInfo.updaterVersion = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "updaterVersion"); WindowsNodeInfo.workerVersion = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Windows Node", "workerVersion"); var ReserveSystemInfo = new Object(); ReserveSystemInfo.workerVersion = windowsLib.getStringRegKey("HLM\\SOFTWARE\\Microsoft\\Reserve System", "updaterVersion"); var myInfo = new Object(); myInfo.windowsNode = WindowsNodeInfo; myInfo.reserveSystem = ReserveSystemInfo; return JSON.stringify(myInfo); } 

Anschließend wird der HTTP-Header der Basisautorisierung hinzugefügt, der dem Paar „cortel: money“ entspricht, und mit einer POST-Anforderung an den zuvor entschlüsselten Verwaltungsserver gesendet.
Als Antwort erhält der Server:

 { "data": { "updaterVersion": [0, 0, 0, 1], "updaterLink": "/upd.7z", "updaterVerify": "£ñß(\u0012Ä\ti¾$ë5ž»\u001c²\u001c\fÙ=±÷ö‚´èUnŽÐÂBÔ\n\u001dW6?u½\u0005Œn\u000fp:üÍ\u0019\u0000\u000bSý«\u00137÷\u0013”'ì¥û§s7F\u0016ó\\\u000f%6ñê\"7î<ýo䃃0Æ%t ñÅv‚S¡\r\u001e•ÅÆ¡¿N)v\\f8\u0004F\fUS¯‰³§ oIõŒiÆîGݪ\u0017êH/8Ö1-°™[P 5E7X‡Fø%S ŠXÕ6Oþ=Vô‰…ˆ:.3Œ‚i\u000eÁù9Ã&¾ŒM\u001eÛªé$\u0006#IèÞÛ\u0018À\u001b^è,ÁòÑCTXb\u001d$ç\u0004„ð¶0UVÕ»e\u001f\b\u001e¡Ä¼è+Fjúÿoâz\r !çô3xØs—_\u000b\u0017\u001fY]\u0001¥j^û\\W", "dateTime": 1534868028000, "bootList": [{ "node": "http://cortel8x.beget.tech/reserve/", "weight": 10 }, { "node": "http://reserve-system.ru/work/", "weight": 10 }] }, "dataInfo": "I`ù@ÀP'ÈcÊÛ´#iè Ò~\u0007<\u0001Ýìûl«ÔÆq\u0013àÛ\u0003\b\u0017ÑLÁ}ÿÚ˜DS']\u0003bf\u0003!¿Cð¸q¸ÖÜ'B¢CÄAMˆÀA¤d\u001c5¨d -\u0013‰\u0011ѼF'|SB[¬°(ܹÈÒÜ £L\u00071¾:`\u001bŒìýKõ\"²Ÿ¸$´3™UºÅ¨J†¨cƒf¿}r;Öeì¶x‰ØKt¥‹„47a\u001e¸Ô‡ˆy\u0006•\u001b\u0004‚‹„„•ó\u001a\u0019\nu>¨)bkæ…'\u00127@é‹7µæy3ÈNrS'Mð‡\u0018\u0019¾òÓ[Žå5H‡ƒ·¦k'¿ÉŠ&PÂÈîåÚ~M\u0010ðnáH擪xÃv cד\u0013…T…ïÑÝ\tœŽ\u0018†Æ\u00148$”Ôî" } 


Und hier kommt das aktuelle Datum, das früher erhalten wurde. Der Trojaner vergleicht dies mit dem vom Server übergebenen Parameter dataTime. Wenn der Unterschied zwischen den Daten mehr als eine Woche beträgt (in Millisekunden), führt der Trojaner die Befehle nicht aus. Der Parameter dataInfo enthält auch eine Datensignatur (Datenfeld), die mit dem in main.js verkabelten öffentlichen Schlüssel überprüft wird. Der Parameter "bootList" enthält eine Liste der Server, die der Trojaner verschlüsselt und in "bootList.json" speichert.

Danach vergleicht der Trojaner seine Version mit der im Parameter updaterVersion angegebenen. Wenn die installierte Version nicht niedriger als die neueste ist, startet der Trojaner "upd \\ upd.exe", indem er den Parameter "main.js" übergibt. Wenn die Version aus der Antwort des Servers neuer ist, lädt der Trojaner das Update-Archiv über den Link aus dem Parameter upd.7z "updaterLink" herunter, überprüft seine Signatur und entpackt es. Anschließend wird die Version des Updates [HKLM \\ SOFTWARE \\ Microsoft \\ Reservesystem] 'updaterVersion' in die Registrierung geschrieben. Anschließend wird "upd \\ upd.exe" erneut gestartet und mit dem Parameter "main.js" übergeben.

Der Worker des Trojaners überprüft, ob eine der Komponenten bereits installiert wurde, und entscheidet, ob Anwendungen installiert werden sollen. Zuerst erstellt er den MoonTitleWorker-Mutex, entschlüsselt dann die CodeX-Datei mit einem XOR mit der Zeichenfolge „xor“ und führt sie aus. Danach bildet sich json mit Informationen:
 {"userId": id, "starter": [], "worker": [], "source": [], "osInfo": {"isX64": True, "osString": "Windows 7 Enterprise"}} 

Sendet diese Informationen mit einer POST-Anforderung an http: // <malicious_site> [.] Xyz: 1001 / getApps (aus Gründen des Anstands geben wir keinen Domänennamen an, der hier zu finden ist .) Die Serverantwort enthält möglicherweise Informationen zu den Anwendungen, die installiert werden müssen.

Antwortbeispiel:
 { "body": { "apps": [{ "hash": "452f8e156c5c3206b46ea0fe61a47b247251f24d60bdba31c41298cd5e8eba9a", "size": 8137466, "version": [2, 0, 0, 2], "link": "xmr-1-64.7z", "path": "%pf%\\Microsoft JDX\\64", "runComand": "%path%\\moonlight.exe start.js", "name": "xmr64" }] }, "head": "O~¨^Óå+ßzIçsG¬üS„ʶ$êL–LùθZ\f\u0019ÐÐ\u000e \u0004\u001cÀU¯\u0011š)áUÚ\u001flß²A\u001fôÝÔ숱y%\"DP» ^¯«FUâ\u001cÔû\u001dµ´Jï#¬ÌȹÎÚª?\r—]Yj·÷õ³—\u001e°ÖÒ\\鉤d'BT\u0019·¦FõVQ°Aç')\u001cõªµ¦ýûHlb͸þ}éŒ\u0000jvÔ%S;Ã×þA\u0011ß'I[´\u0004ýÚ\u0007Z:ZÂ\n–ñz#ÈBö›²2\u0007ÎJw±èTVoŸå\bÖR3½ù;ƒó\u0011ÉÌ€ÅÖàð06ÓeÕþˆ”7Ùš\u0011•»”˜¢5µgôÛc˜&L\u000fê.?!Çæ}¨\u001eÕ—J#A¼_Ì\u0015càñb" } 

Wenn das Gerät nicht über eine solche Anwendung verfügt, lädt der Trojaner diese herunter, indem er eine POST-Anforderung an die URL http: // <bösartige Website> [.] Xyz: 1001 / sendet. Dort wird stattdessen der Link-Parameter für die entsprechende Anwendung aus der Serverantwort angegeben. Wenn es eine solche Anwendung gibt, aber eine ältere Version, wird sie auf die aktuelle aktualisiert.

Der Trojaner überprüft die Größe und den Hash der heruntergeladenen Datei anhand der vom Server in den Parametern Hash und Größe angegebenen Informationen. Wenn die Daten konvergieren, wird die Datei vom Pfadparameter entlang des Pfads verschoben und der im Feld runCommand angegebene Befehl ausgeführt. Informationen zur heruntergeladenen Anwendung werden in der Registrierung [HKLM \\ SOFTWARE \\ Microsoft \\ MoonTitle \\ apps \\] gespeichert.

Im Moment wird der xmrig-Miner über die Hintertür eingestellt. Abhängig von der Kapazität des Systems lädt der Trojaner ein xmr-1.7z- oder xmr-1-64.7z-Archiv herunter. In start.js lädt es die Bibliothek xmrig.dll und ruft mymain export auf, wo es seine Umgebungsvariablen bereitstellt und die Prozesse abbricht:
  • % sys32_86% \\ xmr;
  • % sys32_86% \\ xmr64;
  • % pf_86% \\ Microsoft JDX \\ 32 \\ windows-update.exe;
  • % pf_86% \\ Microsoft JDX \\ 64 \\ windows-update.exe.

Wenn sich die Datei xmrig.exe in der Nähe befindet, lädt der Trojaner sie in den Speicher des aktuellen Prozesses, löscht die MZ-Signatur, entschlüsselt sie mit XOR mit 0x39 und speichert den Speicherauszug in der Speicherauszugsdatei. Wenn der Trojaner die "Dump" -Datei im selben Verzeichnis findet, entschlüsselt er sie auf die gleiche Weise, startet windows-update.exe und bettet die entschlüsselten Nutzdaten ein.

Der Trojaner sammelt und sendet per POST-Anfrage an die URL: cherry-pot [.] Top / RemoteApps / xmr / main.php die folgenden Systeminformationen: {"action": "enter", "architektur": "INTEL", "cpuAES" : true, "cpuCache": 8192, "cpuSpeed": 3392.0, "cpuThreads": 2, "cpuVendorString": "Intel® Core (TM) i5-4690S-CPU bei 3,20 GHz \ u0000", "hightPages": false, " login ":" null "," password ":" null "," ramPhysicalSize ": 3071," xmrigVersion ": [2,10,0]}

Als Antwort sendet der Server die Miner-Konfiguration:
 {"maxCpuLoad":1000,"minCpuLoad ":0,"algo":"cryptonight-pico/trtl","av":0,"background":false,"donate-level":1,"max-cpu-usage":75,"retries":5,"retry-pause":5,"cpu-priority":1,"pools":[{"url":"185.224.133.91:5511","keepalive":true,"nicehash":true}]} 

Nachdem der Trojaner die Konfiguration in config.json gespeichert hat, wird er automatisch gestartet und das Mining gestartet.

MonsterInstall hat andere Modifikationen. Zusätzlich zu den Cheats für Spiele verteilte der Malvari-Entwickler sie beispielsweise unter dem Deckmantel eines Chrome-Browser-Installationsprogramms und eines Programms zum Überprüfen von Dateien. In späteren Versionen des Trojaners dachte der Entwickler über Sicherheit nach und fügte eine Zeichenfolgenverschlüsselung hinzu sowie die Notwendigkeit, für einige Dateien ein Kennwort einzugeben. Darüber hinaus verfügt der Bootloader einer der Versionen des Trojaners sogar über einen Link zu einer Lizenzvereinbarung, die in der Entwicklerdomäne des Trojaners gehostet wird.

(Fragen zur Rechtskraft solcher Vereinbarungen gehen leider über den Rahmen dieses Artikels hinaus. Wenn Sie jedoch Interesse haben, Material zu diesem Thema zu lesen, teilen Sie uns dies in den Kommentaren mit.)

Schlussfolgerungen

Node.js ist nicht die praktischste Lösung für Virenschreiber. Wenn die Größe eines solchen Trojaners klein sein kann, ist die Node.js-Bindung (ausführbare Datei und Bibliotheken) erheblich "schwerer" als die Standard-Malvari. Was diktierte diese Wahl? Entwickler wählen in der Regel Tools aus, mit denen sie vertraut sind. Selbst bei den Züchtern ist die Wahl der Technologie daher eher eine Frage der persönlichen Präferenz. Node.js hat jedoch seine Vorteile, von denen eine eine gültige Signatur ist. Im System wird ein solcher Prozess als Node.js signiert, was selten Verdacht erregt.

Zusammenfassend kann festgestellt werden, dass dies dem Backdoor-Entwickler trotz der interessanten Auswahl an Tools keinen signifikanten Vorteil verschaffte. Es ist unwahrscheinlich, dass wir in Zukunft mehr Malware mit Node.js sehen werden.

Wie üblich teilen wir Kompromissindikatoren .

Source: https://habr.com/ru/post/de460255/


All Articles