Domanda Malware [GUIDA] Backdoors persistence con schtasks e file bat

Stato
Discussione chiusa ad ulteriori risposte.

Sekmet

Utente Palladium
8 Maggio 2010
2,465
179
1,377
1,471
Salve, dati i miei recenti "studi" riguardo il funzionamento delle backdoors, ho incontrato un fondamentale problema riguardante il rendere una backdoors persistente.

Piccola spiegazione su cosa è una backdoor persistente

Per backdoors persistente ci si riferisce, appunto a una backdoor che rimane sulla macchina della vittima e che tenta di connettersi alla macchina dell'attaccante ogni X minuti/giorni/settimane dando la possibilità, a chi ha effettuato l'attacco, di riconnettersi ogni qualvolta esso voglia.

Perché utilizzare questo metodo

Metasploit offre la possibilità di creare una persistenza utilizzando il semplice comando run persistence, ma questo crea un file che viene detectato da eventuali antivirus installati sulla macchina della vittima in quanto, a differenza della backdoor, questo non è criptato. Seguendo questa guida invece, avrete la possibilità di avere una backdoor persistente con il semplice utilizzo di un file .bat e di un comando da utilizzare dopo aver avviato la shell sulla macchina della vittima con il relativo comando shell.

Spiegazione su questo metodo

Creare un file .bat con questo contenuto

@Echo off
tasklist | findstr /i nomebackdoor.exe
if %errorlevel% neq 0 goto restart
goto end
:restart
start "" "posizione backdoor"
:end
exit

dove dovrete modificare alcuni parametri quali :

posizione backdoor : indicare la posizione della vostra backdoor nel filesystem della macchina della vittima.
nomebackdoor : indicare il nome della vostra backdoor (quindi il nome del processo) indicando anche l'estensione.

Una volta fatto ciò, un requisito ovviamente importante è aver stabilito una connessione meterpreter con la vittima. Dando per scontato che tale requisito sia soddisfatto, continuare con la guida.

Utilizzare il comando upload seguendo questa sintassi

upload file.bat directory

file.bat : Il file da caricare, ovviamente dobbiamo caricare il file.bat creato precedentemente
directory : E' dove vogliamo che il file venga caricato nella macchina della vittima (consiglio la cartella Temp in AppData)

Una volta fatto ciò, avviare la shell utilizzando il comando shell e impostare l'attività da far ripetere X minuti/ore/giorni/settimane (quando desiderate quindi) con il comando

schtasks /create /sc minute /mo 1 /tr posizione_file_bat /tn nome_attività

Nell'esempio che ho riportato, ho impostato che l'attività deve ripetersi ogni 1 minuti, ma questi parametri possono essere cambiati.

/sc può essere cambiato in HOURLY, DAILY, WEEKLY, MONTHLY
/mo può essere cambiato seguendo questa tabella

1-1439 (per minute)
1-23 (per hourly)
1-365 (per daily)
1-52 (per weekly)
1-12 (per monthly)

/tr è la posizione del file bat nel file system della macchina della vittima
/tn è il nome dell'attività che apparirà in schtasks

Dopo aver scritto questo comando, semplicemente premere invio e la nuova attività verrà creata. Abbiamo completato il nostro lavoro e creato la persistenza.

Consigli utili

- Dopo aver stabilito la prima connessione con la macchina della vittima, aprire una shell e copiare la backdoor in una directory che ovviamente non sia il desktop, consiglio vivamente la cartella Temp in AppData.
- Consiglio di rinominare il file bat con un nome che ovviamente non sia "backdoor" o "virus", ma magari qualcosa di simile a "svchost" o qualsiasi altro nome non facilmente sgamabile.
- Consiglio di nominare l'attività del schtasks con un nome altrettanto non sgamabile, magari qualcosa di simile a "Antivirus Security Service".

Spero di essere stato chiaro in questa guida, per qualsiasi dubbio scrivete pure e io sarò disponibile a rispondere nel modo più completo possibile.

Prima di salutare però vorrei precisare che questo è uno dei tanti metodi per creare una backdoor persistente senza l'utilizzo del comando run persistence. Avrò sicuramente modo di provare altri metodi, in caso di esito positivo sarò lieto di condividerli.

Saluti, Sekmet.-
 
Ultima modifica da un moderatore:
Si potrebbe fare anche così: si creano due file, la backdoor e il checker (entrambi .exe). La backdoor è una normale backdoor in cui dovete implementare due funzioni:
1) controllare ogni secondo se il processo checker è attivo, in caso non lo fosse lo fa partire.
2) se il file checker non esiste lo scarica o lo estrae dalle proprie risorse (meglio)
Il checker ha anch'esso due funzioni:
1) controllare ogni secondo se la backdoor è attiva, in caso non lo fosse la fa partire.
2) se il file backdoor non esiste lo scarica o lo estrae dalle proprie risorse
Per rendere persistente la backdoor anche al reboot si potrebbe pensare di:
1) mettere il checker nella cartella di startup di windows
2) aggiungere al registro una chiave di startup della backdoor.
In questo modo anche se il file nella cartella di startup venisse eliminato o disabilitato ci sarebbe ancora la backdoor nella chiave del registro e viceversa
 
  • Mi piace
Reazioni: Feed
Si potrebbe fare anche così: si creano due file, la backdoor e il checker (entrambi .exe). La backdoor è una normale backdoor in cui dovete implementare due funzioni:
1) controllare ogni secondo se il processo checker è attivo, in caso non lo fosse lo fa partire.
2) se il file checker non esiste lo scarica o lo estrae dalle proprie risorse (meglio)
Il checker ha anch'esso due funzioni:
1) controllare ogni secondo se la backdoor è attiva, in caso non lo fosse la fa partire.
2) se il file backdoor non esiste lo scarica o lo estrae dalle proprie risorse
Per rendere persistente la backdoor anche al reboot si potrebbe pensare di:
1) mettere il checker nella cartella di startup di windows
2) aggiungere al registro una chiave di startup della backdoor.
In questo modo anche se il file nella cartella di startup venisse eliminato o disabilitato ci sarebbe ancora la backdoor nella chiave del registro e viceversa

La mia guida permette all'attaccante di uploaddare un singolo file .bat e di scrivere nella shell della macchina della vittima un corto e semplice comando per rende tutto automatizzato e persistente.
Seguendo invece la tua guida si ha il bisogno di :

-Modificare .exe della backdoor (nella mia guida la backdoor è generata con metasploit/veil-evasion)
-Avere permessi di amministratore e quindi avere l'esigenza di bypassare il UAC per creare una nuova chiave di registro.
-Nel caso in cui si voglia utilizzare la cartella di startup (senza quindi modificare registro) si potrebbero avere problemi relativi al file facilmente "sgamabile" in quanto semplicemente posizionato nella cartella di startup. La mia guida, invece, consiglia di tenere backdoor e file bat nella cartella Temp di Appdata
- Il checker.exe dovrebbe avere anche un controllo di esistenza del file e in caso di esito negativo dovrebbe scaricarlo. Adesso, per noi magari è una cosa da scrivere in codice in 20 minuti, ma per chi non è in grado di programmare a determinati livelli può essere difficoltoso scrivere una funzione di questo tipo. Oppure si dovrebbe utilizzare un apposito modulo di metasploit che scarica i file da qualsiasi indirizzo noi vogliamo, ma in quel caso il numero di file in questione diventerebbero ben 3

Utilizzando il tuo sistema con il checker.exe, si avrebbe nel Task Manager la continua presenza del processo. Io ho voluto ovviare a ciò e ho creato un file bat che viene avviato ogni X minuti (o qualsiasi tempo tu voglia) e controlla se il processo della backdoor esiste riportando due possibili risultati :

1) Processo esistente : Non ne apre un altro e il processo del file .bat viene chiuso
2) Processo non esistente : Avvia la backdoor e il processo del file .bat viene chiuso

In questo modo non esiste un permanente processo che controlla o no la presenza di un altro processo (che sarebbe la backdoor).

In precedenza ho pensato in un modo molto simile al tuo, ma aveva delle falle che ho riportato sopra, ma che elencherò nuovamente di seguito :

- checker.exe (lo chiamerò così per far rendere l'idea) sempre presente nel Task Manager, quindi aumento probabilità di essere trovato e soggetto a possibili chiusure dal Task Manager da parte dell'utente
- Per rendere checker.exe avviabile all'avvio del sistema dovevo modificare registro tramite shell oppure scrivere righe di codice per farlo fare al programma. Nel primo caso si spende più tempo rispetto al modificare il schtasks come nella mia guida. Nel secondo caso il programma che deve modificare registro deve avere permessi di amministratore oppure è necessario bypassare UAC.
- Utilizzare la cartella startup di windows significa aumentare probabilità di essere "sgamati" dall'utente, in quanto è una cartella conosciuta e pulita. Rispetto alla cartella Temp di appdata che viene poco aperta e dove un programma può facilmente nascondersi in mezzo ai numerosi file.

Una differenza importante da non sottovalutare è la differenza di pesantezza tra il presunto checker.exe e il mio file .bat . Siccome l'attaccante deve uppare il file, più è leggero (anche se la differenza è di pochissimi kb) meglio è.

Spero che la risposta sia stata soddisfacente
 
  • Mi piace
Reazioni: Feed
Certo ma ciò che non capisco è che se l utente chiude il processo della backdoor dal task manager come fa ad avviarsi il file .bat se non c è più la backdoor che lo avvia?

Niente ho capito da solo
Ottima guida
 
  • Mi piace
Reazioni: Sekmet
Certo ma ciò che non capisco è che se l utente chiude il processo della backdoor dal task manager come fa ad avviarsi il file .bat se non c è più la backdoor che lo avvia?

Perché la backdoor non avvia il file .bat, ma bensì questo file (che controlla l'esistenza del processo della backdoor) viene avviato ogni X minuti/ore/giorni/settimane/mesi (quindi a tua scelta) dal sistema dopo aver impostato l'attività in schtasks

Ammettiamo che ho detto a schtasks di avviare il file .bat ogni 5 minuti :

Passano 5 minuti, il file .bat viene avviato e controlla presenza del processo della backdoor, se è presente non ne apre un altro e il processo del file .bat si chiude.
Passano altri 5 minuti, il file .bat viene avviato ancora dal schtasks, controlla presenza processo della backdoor, scopre che magari non c'è e quindi avvia la backdoor, dopodiché il processo del file .bat si chiude

Data la minuscola dimensione del file .bat, la ram non viene intaccata anche se la ripetizione di avvio del file .bat dovesse essere impostata a 1 minuto.
 
Salve, dati i miei recenti "studi" riguardo il funzionamento delle backdoors, ho incontrato un fondamentale problema riguardante il rendere una backdoors persistente.

Piccola spiegazione su cosa è una backdoor persistente

Per backdoors persistente ci si riferisce, appunto a una backdoor che rimane sulla macchina della vittima e che tenta di connettersi alla macchina dell'attaccante ogni X minuti/giorni/settimane dando la possibilità, a chi ha effettuato l'attacco, di riconnettersi ogni qualvolta esso voglia.

Perché utilizzare questo metodo

Metasploit offre la possibilità di creare una persistenza utilizzando il semplice comando run persistence, ma questo crea un file che viene detectato da eventuali antivirus installati sulla macchina della vittima in quanto, a differenza della backdoor, questo non è criptato. Seguendo questa guida invece, avrete la possibilità di avere una backdoor persistente con il semplice utilizzo di un file .bat e di un comando da utilizzare dopo aver avviato la shell sulla macchina della vittima con il relativo comando shell.

Spiegazione su questo metodo

Creare un file .bat con questo contenuto

@Echo off
tasklist | findstr /i nomebackdoor.exe
if %errorlevel% neq 0 goto restart
goto end
:restart
start "" "posizione backdoor"
:end
exit

dove dovrete modificare alcuni parametri quali :

posizione backdoor : indicare la posizione della vostra backdoor nel filesystem della macchina della vittima.
nomebackdoor : indicare il nome della vostra backdoor (quindi il nome del processo) indicando anche l'estensione.

Una volta fatto ciò, un requisito ovviamente importante è aver stabilito una connessione meterpreter con la vittima. Dando per scontato che tale requisito sia soddisfatto, continuare con la guida.

Utilizzare il comando upload seguendo questa sintassi

upload file.bat directory

file.bat : Il file da caricare, ovviamente dobbiamo caricare il file.bat creato precedentemente
directory : E' dove vogliamo che il file venga caricato nella macchina della vittima (consiglio la cartella Temp in AppData)

Una volta fatto ciò, avviare la shell utilizzando il comando shell e impostare l'attività da far ripetere X minuti/ore/giorni/settimane (quando desiderate quindi) con il comando

schtasks /create /sc minute /mo 1 /tr posizione_file_bat /tn nome_attività

Nell'esempio che ho riportato, ho impostato che l'attività deve ripetersi ogni 1 minuti, ma questi parametri possono essere cambiati.

/sc può essere cambiato in HOURLY, DAILY, WEEKLY, MONTHLY
/mo può essere cambiato seguendo questa tabella

1-1439 (per minute)
1-23 (per hourly)
1-365 (per daily)
1-52 (per weekly)
1-12 (per monthly)

/tr è la posizione del file bat nel file system della macchina della vittima
/tn è il nome dell'attività che apparirà in schtasks

Dopo aver scritto questo comando, semplicemente premere invio e la nuova attività verrà creata. Abbiamo completato il nostro lavoro e creato la persistenza.

Consigli utili

- Dopo aver stabilito la prima connessione con la macchina della vittima, aprire una shell e copiare la backdoor in una directory che ovviamente non sia il desktop, consiglio vivamente la cartella Temp in AppData.
- Consiglio di rinominare il file bat con un nome che ovviamente non sia "backdoor" o "virus", ma magari qualcosa di simile a "svchost" o qualsiasi altro nome non facilmente sgamabile.
- Consiglio di nominare l'attività del schtasks con un nome altrettanto non sgamabile, magari qualcosa di simile a "Antivirus Security Service".

Spero di essere stato chiaro in questa guida, per qualsiasi dubbio scrivete pure e io sarò disponibile a rispondere nel modo più completo possibile.

Prima di salutare però vorrei precisare che questo è uno dei tanti metodi per creare una backdoor persistente senza l'utilizzo del comando run persistence. Avrò sicuramente modo di provare altri metodi, in caso di esito positivo sarò lieto di condividerli.

Saluti, Sekmet.-
sai già come la penso ci siamo confrontati su questa tua idea... un'ottima guida!!
 
  • Mi piace
Reazioni: Sekmet
Per le backdoor .apk c'è qualcosa di simile??....complimenti Sekmet

Si esiste un metodo per avere una backdoor persistente, ma con un intoppo molto grande : bisogna avere permessi di root sul sistema della vittima.
Proprio ieri ho "studiato" e testato l'attacco su android, oggi creo una guida che, in realtà, sarà la traduzione in italiano di una già esistente in inglese (metterò fonti)
 
Salve a tutti, ho fatto la prova con il file .exe e quando il mio PC vittima fa partire il task creato, spunta la finestra che lo si deve eseguire come amministratore. Allora ho provato a ricreare il payload come file .bat. Così funziona ma il task ogni tot minuti avvia il file in continuazione anche se è già attiva la sessione di meterpreter quindi sembra non accorgersene che la sessione è aperta e in questo modo la cosa può risultare sospettosa ad una ipotetica vittima.
 
Stato
Discussione chiusa ad ulteriori risposte.