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
ritm — Ruby In The Middle (proxy d'intercettazione HTTP/HTTPS) | Kitploit
Strumenti/GitHubGitHub/argos83/ritm
Analisi Dinamica (Sandboxing)Proxy Web e IntercettazioneSicurezza WebPenetration Testing
GitHubargos83/ritm

ritm

Ruby In The Middle (proxy d'intercettazione HTTP/HTTPS)

Vedi Repository
101317 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

Ruby In The Middle (proxy di intercettazione HTTP/HTTPS)

Ruby in the middle (RITM) è un proxy di intercettazione HTTP/HTTPS con generazione e firma di certificati al volo, che lascia all'utente la piena potenza del linguaggio Ruby per intercettare e persino modificare richieste e risposte a suo piacimento.

Installazione

gem install ritm

Utilizzo di base

  1. Scrivi i tuoi gestori di intercettazione
root@kitploit:~
require 'ritm'

# A single answer for all your google searches
Ritm.on_request do |req|
  if req.request_uri.host.start_with? 'www.google.'
    new_query_string = req.request_uri.query.gsub(/(?<=^q=|&q=)(((?!&|$).)*)(?=&|$)/, 'RubyInTheMiddle')
    req.request_uri.query = new_query_string
  end
end

my_picture = File.read('i_am_famous.jpg')

# Replaces every picture on the web with my pretty face
Ritm.on_response do |_req, res|
  if res.header['content-type'] && res.header['content-type'].start_with?('image/')
    res.header['content-type'] = 'image/jpeg'
    res.body = my_picture
  end
end
  1. Avvia il server proxy
root@kitploit:~
Ritm.start
 
puts 'Hit enter to finish'
gets

Ritm.shutdown
  1. Configura il tuo browser

O qualunque client HTTP di cui vuoi intercettare il traffico, per connettersi al proxy su localhost:8080

  1. Naviga sul web!

Per gli esempi precedenti, cerca qualcosa su Google e visita anche il tuo sito di notizie preferito.

Considerare attendibili i certificati autofirmati generati da RITM

Con l'esempio precedente, il tuo client potrebbe aver incontrato problemi nel tentativo di accedere a risorse HTTPS. In alcuni casi puoi aggiungere un'eccezione al tuo browser (o istruire il tuo client HTTP a non verificare i certificati) ma in alcuni altri casi non sarai in grado di aggiungere eccezioni. Il motivo è che per decifrare e poter modificare il traffico SSL, RITM dovrà eseguire la negoziazione SSL con il client (usando il proprio set di certificati) e poi stabilirà una sessione SSL separata verso il server. Cioè:

root@kitploit:~
Client <--- SSL session ---> RITM <--- SSL session ---> Server

Per ogni hostname di server diverso con cui il tuo client cerca di comunicare, RITM genererà un certificato al volo e lo firmerà con una Certificate Authority (CA) preconfigurata. Quindi, per poter stabilire una connessione sicura dovrai configurare il tuo client (ad es. il browser) per fidarsi della CA di RITM.

Per motivi di sicurezza, ogni volta che avvii il proxy di RITM con le impostazioni predefinite verrà generata una nuova Certificate Authority interna. Per utilizzare invece la tua CA (in modo che possa essere caricata e considerata affidabile dal tuo browser) esegui i seguenti passaggi:

  1. Genera i file PEM e chiave privata della Certificate Authority

Puoi usare OpenSSL o RITM per generare questi due file. Con OpenSSL:

root@kitploit:~
openssl req -new -nodes -x509 -days 365 -extensions v3_ca -keyout insecure_ca.key -out insecure_ca.crt

Oppure con RITM:

root@kitploit:~
require 'ritm/certs/ca'

ca = Ritm::CA.create common_name: 'InsecureCA'

File.write('insecure_ca.crt', ca.pem)
File.write('insecure_ca.key', ca.private_key.to_s)
  1. Ripeti il passo 2 dell'esempio precedente, questa volta indicando quale CA deve essere utilizzata per firmare i certificati
root@kitploit:~
Ritm.configure do
  ssl_reverse_proxy.ca[:pem] = 'path/to/insecure_ca.crt'
  ssl_reverse_proxy.ca[:key] = 'path/to/insecure_ca.key'
end

Ritm.start

puts 'Hit enter to finish'
gets

Ritm.shutdown
  1. Aggiungi il certificato CA come affidabile nel tuo browser o client

Lascio a te scoprire come si fa nel tuo browser o client. 4. Naviga sul web!

  1. Quando hai finito Rimuovi la CA dalle autorità fidate!

Oppure prenditi molta cura della chiave privata della CA, poiché chiunque ne sia in possesso sarà in grado di decifrare tutto il tuo traffico! Nota anche che quando si utilizza il proxy, ogni server sarà automaticamente considerato affidabile anche se il certificato del server finale non è valido.

Eseguire più sessioni con impostazioni diverse

Negli esempi precedenti abbiamo utilizzato la sessione globale predefinita. Se non ti piace usare una sessione globale configurata staticamente, o vuoi avere più sessioni che coesistono (ad es. più proxy in ascolto su porte diverse e che utilizzano gestori di intercettazione diversi) puoi creare diverse istanze di sessione in questo modo:

root@kitploit:~
session = Ritm::Session.new

# Now you can use the same methods but on the session instance

session.configure { proxy[:bind_port] = 7777 }
session.on_request { |req| ...do something here ... }

another_session = Ritm::Session.new
another_session.configure { proxy[:bind_port] = 8888 }
another_session.on_request { |req| ...do something else ... }

session.start
another_session.start

puts 'Hit enter to finish'
gets

session.shutdown
another_session.shutdown

Licenza

Concesso in licenza secondo l'Apache License, Versione 2.0 (la "Licenza"); non puoi utilizzare questo file se non in conformità con la Licenza. Puoi ottenere una copia della Licenza all'indirizzo

http://www.apache.org/licenses/LICENSE-2.0

Salvo quanto diversamente richiesto dalla legge applicabile o concordato per iscritto, il software distribuito secondo la Licenza è distribuito su una base "AS IS", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. Consulta la Licenza per le autorizzazioni e le limitazioni specifiche che regolano la Licenza.

Scarica lo strumento