Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ritm — Ruby In The Middle (Proxy de interceptação HTTP/HTTPS) | Kitploit
Ferramentas/GitHubGitHub/argos83/ritm
Análise Dinâmica (Sandboxing)Proxies Web e InterceptaçãoSegurança WebTestes de Penetração
GitHubargos83/ritm

ritm

Ruby In The Middle (Proxy de interceptação HTTP/HTTPS)

Ver Repositório
101312há 7 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Ruby In The Middle (Proxy de interceptação HTTP/HTTPS)

Ruby in the middle (RITM) é um proxy de interceptação HTTP/HTTPS com geração e assinatura de certificados em tempo real, que oferece ao usuário todo o poder da linguagem Ruby para interceptar e até modificar requisições e respostas como desejar.

Instalação

gem install ritm

Uso básico

  1. Escreva seus manipuladores de interceptação
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. Inicie o servidor proxy
root@kitploit:~
Ritm.start
 
puts 'Hit enter to finish'
gets

Ritm.shutdown
  1. Configure seu navegador

Ou qualquer cliente HTTP do qual você queira interceptar o tráfego, para conectar ao proxy em localhost:8080

  1. Navegue na web!

Para os exemplos acima, pesquise algo no google e também visite seu site de jornal favorito.

Confiar em certificados autoassinados gerados pelo RITM

Com o exemplo anterior, seu cliente pode ter encontrado problemas ao tentar acessar recursos HTTPS. Em alguns casos, você pode adicionar uma exceção ao seu navegador (ou instruir seu cliente HTTP a não verificar certificados), mas em outros casos você não conseguirá adicionar exceções. A razão para isso é que, para descriptografar e poder modificar o tráfego SSL, o RITM terá que fazer a negociação SSL com o cliente (usando seu próprio conjunto de certificados) e então estabelecerá uma sessão SSL separada em direção ao servidor. Isto é:

root@kitploit:~
Cliente <--- Sessão SSL ---> RITM <--- Sessão SSL ---> Servidor

Para cada nome de host diferente de servidor com o qual seu cliente tenta se comunicar, o RITM gerará um certificado em tempo real e o assinará com uma Autoridade Certificadora (CA) pré-configurada. Portanto, para poder estabelecer uma conexão segura, você precisará configurar seu cliente (por exemplo, navegador) para confiar na CA do RITM.

Por razões de segurança, toda vez que você inicia o proxy do RITM com as configurações padrão, ele gera uma nova Autoridade Certificadora interna. Para usar sua própria CA (para que ela possa ser carregada e confiada pelo seu navegador), execute os seguintes passos:

  1. Gere um arquivo PEM de Autoridade Certificadora e uma Chave Privada

Você pode usar o OpenSSL ou o RITM para gerar esses dois arquivos. Com o OpenSSL:

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

Ou com o 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. Repita o passo 2 do exemplo anterior, desta vez indicando qual CA deve ser usada para assinar 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. Confie o certificado da CA no seu navegador ou cliente

Deixarei para você descobrir como isso é feito no seu navegador ou cliente. 4. Surfe na web!

  1. Remova a CA de suas autoridades confiáveis!

Ou tome muito cuidado com a chave privada da CA, pois qualquer pessoa de posse dessa chave será capaz de descriptografar todo o seu tráfego! Observe também que, ao usar o proxy, todo servidor será automaticamente confiável, mesmo que o certificado do servidor final não seja válido.

Executando múltiplas sessões com configurações diferentes

Nos exemplos acima, estivemos usando a sessão global padrão. Se você não gosta de usar uma sessão global configurada estaticamente, ou deseja ter múltiplas sessões coexistindo (por exemplo, vários proxies ouvindo em portas diferentes e usando manipuladores de interceptação diferentes), você pode criar diferentes instâncias de sessão desta forma:

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

Licença

Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em

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

A menos que exigido por lei ou acordado por escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para obter as permissões e limitações específicas que regem o uso do software.

Baixar ferramenta