Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ritm — Ruby In The Middle (HTTP/HTTPS 가로채기 프록시) | Kitploit
도구/GitHubGitHub/argos83/ritm
Dynamic Analysis (Sandboxing)Web Proxies & InterceptionWeb SecurityPenetration Testing
GitHubargos83/ritm

ritm

Ruby In The Middle (HTTP/HTTPS 가로채기 프록시)

저장소 보기
1013127년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Ruby In The Middle (HTTP/HTTPS 가로채기 프록시)

Ruby in the middle (RITM)은 즉시 인증서 생성 및 서명이 가능한 HTTP/HTTPS 가로채기 프록시로, 사용자가 Ruby 언어의 모든 기능을 활용하여 원하는 대로 요청과 응답을 가로채고 수정할 수 있게 해줍니다.

설치

gem install ritm

기본 사용법

  1. 가로채기 핸들러 작성하기
root@kitploit:~
require 'ritm'

# 모든 구글 검색에 대한 단일 응답
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')

# 웹상의 모든 사진을 내 얼굴로 교체
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. 프록시 서버 시작하기
root@kitploit:~
Ritm.start
 
puts 'Hit enter to finish'
gets

Ritm.shutdown
  1. 브라우저 구성하기

또는 트래픽을 가로채려는 HTTP 클라이언트가 localhost:8080에 있는 프록시에 연결하도록 구성하세요.

  1. 웹 서핑하기!

위 예제의 경우, 구글에서 아무거나 검색하고 좋아하는 신문 웹사이트도 방문해 보세요.

RITM이 생성한 자체 서명 인증서 신뢰하기

이전 예제에서 클라이언트가 HTTPS 리소스에 접근하려 할 때 문제가 발생할 수 있습니다. 어떤 경우에는 브라우저에 예외를 추가하거나(HTTP 클라이언트에 인증서 확인을 하지 말라고 지시) 할 수 있지만, 어떤 경우에는 예외를 추가할 수 없습니다. 그 이유는 SSL 트래픽을 복호화하고 수정할 수 있으려면 RITM이 클라이언트와의 SSL 협상을 직접 수행(자체 인증서 사용)한 후 서버와는 별도의 SSL 세션을 설정해야 하기 때문입니다. 즉:

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

클라이언트가 통신하려는 각각의 다른 서버 호스트 이름에 대해 RITM은 즉시 인증서를 생성하고 미리 구성된 인증 기관(CA)으로 서명합니다. 따라서 보안 연결을 설정하려면 클라이언트(예: 브라우저)가 RITM의 CA를 신뢰하도록 구성해야 합니다.

보안상의 이유로 기본 설정으로 RITM 프록시를 시작할 때마다 새로운 내부 인증 기관이 생성됩니다. 대신 자체 CA를 사용하려면(브라우저가 로드하여 신뢰할 수 있도록) 다음 단계를 수행하세요.

  1. 인증 기관 PEM 및 개인 키 파일 생성

OpenSSL 또는 RITM을 사용하여 이 두 파일을 생성할 수 있습니다. OpenSSL로:

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

또는 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. 이전 예제의 2단계를 반복하되, 이번에는 인증서 서명에 사용할 CA를 지정합니다
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. 브라우저 또는 클라이언트에서 CA 인증서 신뢰

브라우저나 클라이언트에서 이 작업을 수행하는 방법은 알아서 찾아보시기 바랍니다. 4. 웹 서핑하기!

  1. 작업이 끝나면 신뢰할 수 있는 인증 기관에서 CA를 제거하세요!

아니면 CA 개인 키를 매우 안전하게 보관하세요. 그 키를 소유한 사람은 누구나 모든 트래픽을 복호화할 수 있기 때문입니다! 또한 프록시를 사용할 때는 최종 서버 인증서가 유효하지 않더라도 모든 서버가 자동으로 신뢰된다는 점에 유의하세요.

여러 세션을 다른 설정으로 실행하기

위 예제에서는 기본 전역 세션을 사용했습니다. 정적으로 구성된 전역 세션을 사용하고 싶지 않거나, 여러 세션을 동시에 실행하고 싶다면(예: 다른 포트에서 수신 대기하고 다른 가로채기 핸들러를 사용하는 여러 프록시) 다음과 같이 다른 세션 인스턴스를 생성할 수 있습니다:

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

# 이제 세션 인스턴스에서 동일한 메서드를 사용할 수 있습니다.

session.configure { proxy[:bind_port] = 7777 }
session.on_request { |req| ...여기서 작업 수행 ... }

another_session = Ritm::Session.new
another_session.configure { proxy[:bind_port] = 8888 }
another_session.on_request { |req| ...다른 작업 수행 ... }

session.start
another_session.start

puts 'Hit enter to finish'
gets

session.shutdown
another_session.shutdown

라이선스

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

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

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

도구 다운로드