Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ritm — Ruby In The Middle (proxy de interceptación HTTP/HTTPS) | Kitploit
Herramientas/GitHubGitHub/argos83/ritm
Análisis Dinámico (Sandboxing)Proxies Web e InterceptaciónSeguridad WebPruebas de Penetración
GitHubargos83/ritm

ritm

Ruby In The Middle (proxy de interceptación HTTP/HTTPS)

Ver Repositorio
10131hace 7 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Ruby In The Middle (Proxy de intercepción HTTP/HTTPS)

Ruby in the middle (RITM) es un proxy de intercepción HTTP/HTTPS con generación y firma de certificados sobre la marcha, que deja al usuario con todo el poder del lenguaje Ruby para interceptar e incluso modificar peticiones y respuestas a su antojo.

Instalación

gem install ritm

Uso básico

  1. Escribe tus manejadores de intercepción
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. Inicia el servidor proxy
root@kitploit:~
Ritm.start
 
puts 'Hit enter to finish'
gets

Ritm.shutdown
  1. Configura tu navegador

O cualquier cliente HTTP del cual quieras interceptar tráfico, para que se conecte al proxy en localhost:8080

  1. ¡Navega por la web!

Para los ejemplos anteriores, busca cualquier cosa en google y también visita tu sitio web de noticias favorito.

Confiando en los certificados autofirmados generados por RITM

Con el ejemplo anterior, tu cliente podría haber encontrado problemas al intentar acceder a recursos HTTPS. En algunos casos puedes agregar una excepción en tu navegador (o indicar a tu cliente HTTP que no verifique certificados) pero en otros casos no podrás agregar excepciones. La razón de esto es que para descifrar y poder modificar el tráfico SSL, RITM tendrá que ser quien realice la negociación SSL con el cliente (usando su propio conjunto de certificados) y luego establecerá una sesión SSL separada hacia el servidor. Es decir:

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

Para cada nombre de host de servidor diferente con el que tu cliente intente comunicarse, RITM generará un certificado sobre la marcha y lo firmará con una Autoridad de Certificación (CA) preconfigurada. Por lo tanto, para poder establecer una conexión segura, necesitarás configurar tu cliente (por ejemplo, el navegador) para que confíe en la CA de RITM.

Por razones de seguridad, cada vez que inicies el proxy de RITM con la configuración predeterminada, generará una nueva Autoridad de Certificación interna. Para usar tu propia CA en su lugar (de modo que pueda ser cargada y confiada por tu navegador), realiza los siguientes pasos:

  1. Genera un archivo PEM de Autoridad de Certificación y una clave privada

Puedes usar OpenSSL o RITM para generar estos dos archivos. Con OpenSSL:

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

O 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. Repite el paso 2 del ejemplo anterior, esta vez indicando qué CA debe usarse para firmar los certificados
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. Confía el certificado de la CA en tu navegador o cliente

Te dejo a ti averiguar cómo se hace esto en tu navegador o cliente. 4. ¡Navega por la web!

  1. Cuando hayas terminado, ¡elimina la CA de tus autoridades de confianza!

O cuida muy bien la clave privada de la CA, ya que cualquiera que posea esa clave será capaz de descifrar todo tu tráfico. Ten en cuenta también que al usar el proxy, todos los servidores serán automáticamente confiables incluso si el certificado del servidor final no es válido.

Ejecutando múltiples sesiones con diferentes configuraciones

En los ejemplos anteriores hemos estado usando la sesión global predeterminada. Si no te gusta usar una sesión global configurada estáticamente, o quieres tener múltiples sesiones coexistiendo (por ejemplo, múltiples proxies escuchando en diferentes puertos y usando diferentes manejadores de intercepción), puedes crear diferentes instancias de sesión de esta manera:

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

Licencia

Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en

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

A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer los permisos y limitaciones específicos que rigen el uso del software.

Descargar herramienta