Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/nickstadb/barmie
Analisi delle VulnerabilitàExploitRaccolta InformazioniPenetration Testing
GitHubnickstadb/barmie

BaRMIe

Strumento di enumerazione e attacco RMI Java.

Vedi Repository
747978 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BaRMIe

BaRMIe è uno strumento per enumerare e attaccare i servizi Java RMI (Remote Method Invocation).

I servizi RMI spesso espongono funzionalità pericolose senza controlli di sicurezza adeguati, tuttavia tendono a passare inosservati durante le valutazioni di sicurezza a causa della mancanza di strumenti di test efficaci. Nel 2008 Adam Boulton ha parlato ad AppSec USA (YouTube) e ha rilasciato alcuni strumenti di attacco RMI che sono scomparsi poco dopo, ma anche con quegli strumenti un attacco zero-knowledge riuscito si basa su un significativo attacco di forza bruta (~64 bit/9 quintilioni di possibilità) eseguito sulla rete.

L'obiettivo di BaRMIe è consentire ai professionisti della sicurezza di identificare, attaccare e mettere in sicurezza i servizi RMI non sicuri. Utilizzando interfacce RMI parziali da software esistenti, BaRMIe può interagire direttamente con quei servizi senza prima forzare 64 bit sulla rete.

Scarica l'ultima build della versione pronta per l'esecuzione qui: https://github.com/NickstaDB/BaRMIe/releases/latest

Disclaimer

BaRMIe è stato scritto per aiutare i professionisti della sicurezza a identificare servizi RMI insicuri su sistemi per i quali l'utente ha ottenuto preventivamente il permesso di attaccare. L'accesso non autorizzato ai sistemi informatici è illegale e BaRMIe deve essere utilizzato in conformità con tutte le leggi pertinenti. La mancata osservanza potrebbe portare a procedimenti penali. Gli sviluppatori di BaRMIe non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma.

Usage

L'uso di BaRMIe è semplice. Esegui BaRMIe senza parametri per le informazioni sull'uso.

root@kitploit:~
$ java -jar BaRMIe.jar
  ▄▄▄▄    ▄▄▄       ██▀███   ███▄ ▄███▓ ██▓▓█████
 ▓█████▄ ▒████▄    ▓██ ▒ ██▒▓██▒▀█▀ ██▒▓██▒▓█   ▀
 ▒██▒ ▄██▒██  ▀█▄  ▓██ ░▄█ ▒▓██    ▓██░▒██▒▒███
 ▒██░█▀  ░██▄▄▄▄██ ▒██▀▀█▄  ▒██    ▒██ ░██░▒▓█  ▄
 ░▓█  ▀█▓ ▓█   ▓██▒░██▓ ▒██▒▒██▒   ░██▒░██░░▒████▒
 ░▒▓███▀▒ ▒▒   ▓▒█░░ ▒▓ ░▒▓░░ ▒░   ░  ░░▓  ░░ ▒░ ░
 ▒░▒   ░   ▒   ▒▒ ░  ░▒ ░ ▒░░  ░      ░ ▒ ░ ░ ░  ░
  ░    ░   ░   ▒     ░░   ░ ░      ░    ▒ ░   ░
  ░            ░  ░   ░            ░    ░     ░  ░
       ░                                     v1.0
             Java RMI enumeration tool.
               Written by Nicky Bloor (@NickstaDB)

Warning: BaRMIe was written to aid security professionals in identifying the
         insecure use of RMI services on systems which the user has prior
         permission to attack. BaRMIe must be used in accordance with all
         relevant laws. Failure to do so could lead to your prosecution.
         The developers assume no liability and are not responsible for any
         misuse or damage caused by this program.

Usage:
  BaRMIe -enum [options] [host] [port]
    Enumerate RMI services on the given endpoint(s).
    Note: if -enum is not specified, this is the default mode.
  BaRMIe -attack [options] [host] [port]
    Enumerate and attack the given target(s).
Options:
  --threads  Il numero di thread da utilizzare per l'enumerazione (default 10).
  --timeout  Il timeout per le operazioni di socket bloccanti (default 5.000 ms).
  --targets  Un file contenente i target da scansionare.
             Il file deve contenere un singolo host o una coppia host e porta separata da spazio per riga.
             In alternativa, sono supportati tutti i formati di output di nmap, BaRMIe analizzerà l'output di nmap per i servizi sulla porta 1099, 'rmiregistry' o 'Java RMI' da colpire.
             Nota: [host] [porta] non supportato quando si usa --targets.
Affidabilità:
    Viene utilizzato un sistema +/- per indicare l'affidabilità dell'attacco come segue:
      [+  ]: Indica un attacco specifico dell'applicazione
      [-  ]: Indica un attacco JRE
      [ + ]: Attacca metodi non sicuri (come 'writeFile' senza autenticazione)
      [ - ]: Attacca la deserializzazione Java (cioè parametri Object)
      [  +]: Non richiede dipendenze non predefinite
      [  -]: Richiede dipendenze non predefinite

La modalità di enumerazione (-enum) estrae i dettagli degli oggetti esposti tramite un servizio di registro RMI e elenca eventuali attacchi noti che interessano l'endpoint.

La modalità di attacco (-attack) prima enumera i target indicati, quindi fornisce un sistema di menu per lanciare attacchi noti contro i servizi RMI.

Un singolo target può essere specificato sulla riga di comando. In alternativa BaRMIe può estrarre target da un semplice file di testo o dall'output di nmap.

Nessun Target Vulnerabile Identificato?

Grande! Questa è la tua opportunità per contribuire a migliorare BaRMIe! BaRMIe si basa su una certa conoscenza delle classi esposte tramite RMI, quindi i contributi saranno molto utili per migliorare BaRMIe e la sicurezza dei servizi RMI.

Se hai accesso a file JAR o al codice sorgente dell'applicazione target, produrre un attacco è semplice come compilare codice contro i file JAR pertinenti. Recupera l'oggetto remoto pertinente utilizzando le classi LocateRegistry e Registry e chiama i metodi desiderati. In alternativa, cerca metodi remoti che accettano oggetti arbitrari o altri parametri non primitivi, poiché questi possono essere utilizzati per fornire payload di deserializzazione. Maggiore documentazione sull'attacco a RMI e sulla produzione di attacchi per BaRMIe sarà resa disponibile in futuro.

In alternativa, mettiti in contatto e fornisci quanti più dettagli possibile, inclusi l'output di BaRMIe -enum e idealmente i file JAR pertinenti.

Tipi di Attacco

BaRMIe è in grado di eseguire tre tipi di attacchi contro i servizi RMI. Di seguito una breve descrizione di ciascuno. Ulteriori dettagli tecnici saranno pubblicati in futuro su https://nickbloor.co.uk/. Inoltre, ho presentato i risultati della mia ricerca al 44CON 2017 e le diapositive sono disponibili qui: BaRMIe - Poking Java's Back Door.

1. Attaccare Metodi Non Sicuri

Il primo e più semplice metodo per attaccare servizi RMI non sicuri è semplicemente chiamare metodi remoti non sicuri. Spesso funzionalità pericolose vengono esposte tramite RMI e possono essere attivate semplicemente recuperando il riferimento all'oggetto remoto e chiamando il metodo pericoloso. Il seguente codice ne è un esempio:

root@kitploit:~
//Get a reference to the remote RMI registry service
Registry reg = LocateRegistry.getRegistry(targetHost, targetPort);

//Get a reference to the target RMI object
Foo bar = (Foo)reg.lookup(objectName);

//Call the remote executeCommand() method
bar.executeCommand(cmd);

2. Deserializzazione tramite Parametri di Tipo Object

Alcuni servizi RMI non espongono funzionalità pericolose, oppure implementano controlli di sicurezza come l'autenticazione e la gestione delle sessioni. Se il servizio RMI espone un metodo che accetta un Object arbitrario come parametro, allora il metodo può essere utilizzato come punto di ingresso per attacchi di deserializzazione. Alcuni esempi di tali metodi sono mostrati di seguito:

root@kitploit:~
public void setOption(String name, Object value);
public void addAll(List values);

3. Deserializzazione tramite Invocazione Illegale di Metodi

A causa dell'uso della serializzazione e della gestione non sicura dei parametri dei metodi sul server, è possibile utilizzare qualsiasi metodo con tipi di parametro non primitivi come punto di ingresso per attacchi di deserializzazione. BaRMIe raggiunge questo risultato utilizzando proxy TCP per modificare i parametri dei metodi a livello di rete, innescando essenzialmente invocazioni illegali di metodi. Alcuni esempi di metodi vulnerabili sono mostrati di seguito:

root@kitploit:~
public void setName(String name);
public Long add(Integer i1, Integer i2);
public void sum(int[] values); 

I parametri di ciascuno di questi metodi possono essere sostituiti con un payload di deserializzazione mentre l'invocazione del metodo passa attraverso un proxy. Questo attacco è possibile perché Java non tenta di verificare che i parametri dei metodi remoti ricevuti sulla rete siano compatibili con i tipi di parametro effettivi prima di deserializzarli.

Scarica lo strumento