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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
frida-interception-and-unpinning — 모바일 애플리케이션을 런타임에 재작성하여 모든 HTTPS 트래픽을 직접 MitM하는 Frida 스크립트 | Kitploit
도구/GitHubGitHub/httptoolkit/frida-interception-and-unpinning
Android SecurityiOS SecurityWeb Proxies & InterceptionMobile App PentestingReverse EngineeringPenetration TestingMobile SecurityAndroid Security #13위

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubhttptoolkit/frida-interception-and-unpinning

frida-interception-and-unpinning

모바일 애플리케이션을 런타임에 재작성하여 모든 HTTPS 트래픽을 직접 MitM하는 Frida 스크립트

저장소 보기웹사이트
2.3k2923일 전Kitploit 검토 완료

Frida 모바일 가로채기 스크립트 Funded by NLnet - NGI Zero Entrust

HTTP Toolkit의 일부: HTTP(S)를 구축, 테스트 및 디버깅하기 위한 강력한 도구

이 저장소에는 모바일 기기에서 완전 자동화된 HTTPS MitM 가로채기에 필요한 모든 작업을 수행하도록 설계된 Frida 스크립트가 포함되어 있습니다.

이 스크립트 세트는 Android 및 iOS에서 HTTP(S) 트래픽의 MitM 가로채기를 위해 모두 함께 사용하여, 가로채기 처리, 인증서 신뢰 관리, 인증서 고정 및 투명성 검사 비활성화를 수행할 수 있습니다. 또는 특정 기능만 후킹하도록 개별적으로 사용하거나 수정할 수도 있습니다.

스크립트는 다음을 자동으로 처리할 수 있습니다:

  • 트래픽을 HTTP(S) 프록시로 리디렉션 - 시스템 설정을 수정하고 모든 소켓 연결을 직접 리디렉션합니다.
  • 지정된 CA 인증서를 시스템 신뢰 저장소에 주입하여 기본적으로 연결에서 신뢰되도록 합니다.
  • 알려진 많은 (전부?) 인증서 고정 및 인증서 투명성 도구를 패치하여, 적극적으로 차단되는 경우에도 사용자의 CA 인증서로 가로챌 수 있게 합니다.
  • Android에서는 폴백으로: 남아 있는 고정 실패를 자동 감지하여 난독화된 인증서 고정을 자동 패치하려고 시도합니다 (완전히 난독화된 앱에서는 첫 번째 요청이 실패할 수 있지만, 이후 모든 요청이 올바르게 작동하도록 추가 패치가 트리거됩니다).
  • 많은 일반적인 루트 및 탈옥 탐지를 비활성화합니다.
  • 가로채기에 불편할 수 있는 대부분의 HTTP/3 연결(포트 443으로 가는 모든 UDP)을 차단하여, 앱이 HTTP/2 또는 HTTP/1로 폴백하도록 보장합니다.

Android 시작 가이드

  1. MitM 프록시(예: HTTP Toolkit)를 시작하고, ADB에 연결된 루팅된 Android 기기 또는 에뮬레이터를 설정하세요.
  2. MitM 프록시의 포트(예: 8000)와 PEM 형식의 CA 인증서를 찾으세요.
    • CA 인증서는 -----BEGIN CERTIFICATE-----로 시작해야 합니다. 텍스트 편집기로 열어 이 내용을 확인하고 추출할 수 있습니다.
    • HTTP Toolkit에서 두 세부 정보 모두 인터셉트 페이지의 'Anything' 옵션에서 찾을 수 있습니다.
  3. config.js를 열고 다음 세부 정보를 추가하세요:
    • CERT_PEM: PEM 형식의 CA 인증서.
    • PROXY_PORT: 프록시의 포트
    • PROXY_HOST: 기기 관점에서 본 프록시 주소 (또는 adb reverse tcp:$PORT tcp:$PORT를 사용하여 ADB를 통해 포트를 전달하고 호스트로 127.0.0.1 사용)
  4. 기기에 Frida를 설치하고 시작하세요.
    • 여기서의 단계는 특정 기기 및 구성에 따라 다를 수 있습니다.
    • 예: github.com/frida/frida에서 관련 frida-server를 다운로드하고, 압축을 풀고, adb push로 기기에 넣은 후 다음 4개 명령으로 실행하세요: adb shell, su, , .

iOS 시작 가이드

  1. MitM 프록시(예: HTTP Toolkit)를 시작하고, 컴퓨터에 연결된 탈옥된 iOS 기기를 설정하세요.
  2. MitM 프록시의 포트(예: 8000)와 PEM 형식의 CA 인증서를 찾으세요.
    • CA 인증서는 -----BEGIN CERTIFICATE-----로 시작해야 합니다. 텍스트 편집기로 열어 이 내용을 확인하고 추출할 수 있습니다.
    • HTTP Toolkit에서 두 세부 정보 모두 인터셉트 페이지의 'Anything' 옵션에서 찾을 수 있습니다.
  3. config.js를 열고 다음 세부 정보를 추가하세요:
    • CERT_PEM: PEM 형식의 CA 인증서.
    • PROXY_PORT: 프록시의 포트
    • PROXY_HOST: 기기 관점에서 본 프록시 주소
  4. 기기에 Frida를 설치하고 시작하세요.
    • 여기서의 단계는 특정 기기 및 구성에 따라 다를 수 있지만, 일반적으로 Cydia/Sileo 등에서 https://build.frida.re를 패키지 소스로 사용하여 설치할 수 있습니다.
    • 컴퓨터에서 frida-ps -Uai를 실행하여 제대로 작동하는지 확인하세요.
  5. frida-ps -Uai를 통해 관심 있는 앱의 ID를 찾으세요 (빠른 테스트를 위해 github.com/httptoolkit/ios-ssl-pinning-demo를 사용해 보세요 - ID는 com.httptoolkit.ios-pinning-demo입니다)
  6. Frida를 사용하여 스크립트(config.js부터 시작)를 주입한 상태로 관심 있는 앱을 실행하세요. 사용할 스크립트는 자유지만, iOS에서는 다음 명령이 좋은 출발점입니다:

스크립트

위 명령은 관련 스크립트를 모두 사용하지만, 일반적으로 원하는 하위 집합을 사용할 수 있습니다. 다만 거의 모든 경우 첫 번째 스크립트로 config.js를 포함해야 합니다 (이 스크립트는 다른 스크립트에서 사용하는 일부 변수를 정의합니다).

예를 들어 Android에서 프록시 및 인증서 구성을 다른 곳에서 처리하고 난독화 폴백 없이 인증서 고정 해제만 수행하려면 다음을 실행할 수 있습니다:

root@kitploit:~
frida -U \
    -l ./config.js \
    -l ./android/android-certificate-unpinning.js
    -f $PACKAGE_ID

각 스크립트는 상단의 큰 주석 섹션에서 수행하는 작업과 작동 방식을 자세히 설명합니다. 스크립트는 다음과 같습니다:

  • config.js

    이 스크립트는 다른 스크립트에서 사용하는 변수를 정의합니다:

    • CERT_PEM - 신뢰할 추가 CA 인증서 (PEM 형식)
    • PROXY_HOST - 사용할 프록시 서버의 IP 주소(IPv4) (인증서 고정 해제만 수행하는 경우 필요 없음)
    • PROXY_PORT - 사용할 프록시 서버의 포트 (인증서 고정 해제만 수행하는 경우 필요 없음)
    • DEBUG_MODE - 기본값은 false이며, true로 변경하면 디버깅 및 문제 역공학에 유용한 많은 추가 출력이 활성화됩니다.
    • BLOCK_HTTP3 - 기본값은 true이며, 포트 443으로 가는 모든 UDP 연결을 끊어 HTTP/3을 차단합니다.

    이 스크립트는 다른 스크립트보다 먼저 명령줄에 나열되어야 합니다.

  • native-connect-hook.js

    모든 네트워크 트래픽을 직접 캡처하여 모든 연결을 구성된 프록시 호스트 및 포트로 라우팅합니다.

    이는 모든 네트워크 연결에 적용되는 저수준 훅입니다. 이를 통해 프록시 설정을 무시하거나 다른 원시 소켓 연결을 만드는 연결까지도 모든 연결이 대상 프록시 서버로 강제 리디렉션되며, 활성화된 경우 HTTP/3 연결도 차단합니다.

    이 훅은 libc에 적용되며 Android, Linux, iOS 및 기타 여러 관련 환경에서 작동합니다.

  • native-tls-hook.js

    BoringSSL 기반 라이브러리의 모든 TLS 검증을 수정하여 구성된 CA 인증서를 신뢰하도록 합니다.

이 스크립트는 NLnet이 유럽 위원회의 Next Generation Internet 프로그램의 재정적 지원을 받아 설립한 NGI Zero Entrust Fund를 통해 자금을 지원받는 더 넓은 HTTP Toolkit 프로젝트의 일부입니다. NLnet 프로젝트 페이지에서 자세히 알아보세요.

NLnet 재단 로고 NGI Zero Entrust 로고

도구 다운로드
chmod +x /.../frida-server
/.../frida-server
  • 문제가 있으면 명령을 실행하기 전에 기기가 켜져 있고 연결되어 있는지(adb devices 사용) 확인하세요. Frida는 루팅된 기기에서 위 예의 su가 제공하는 것처럼 기기에서 root로만 실행됩니다. su 또는 유사한 명령 실행 후 root인지 확인하려면 셸에서 whoami를 실행했을 때 root가 출력되는지 확인하세요.
  • 관심 있는 앱의 패키지 ID를 찾으세요 (빠른 테스트를 위해 github.com/httptoolkit/android-ssl-pinning-demo를 사용해 보세요 - 패키지 ID는 tech.httptoolkit.pinning_demo입니다)
  • Frida를 사용하여 스크립트(config.js부터 시작)를 주입한 상태로 관심 있는 앱을 실행하세요. 사용할 스크립트는 자유지만, Android에서는 다음 명령이 좋은 출발점입니다:
    root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./native-connect-hook.js \
        -l ./native-tls-hook.js \
        -l ./android/android-proxy-override.js \
        -l ./android/android-system-certificate-injection.js \
        -l ./android/android-certificate-unpinning.js \
        -l ./android/android-certificate-unpinning-fallback.js \
        -l ./android/android-disable-root-detection.js \
        -f $PACKAGE_ID
    
  • 관심 있는 모든 트래픽을 탐색, 검사 및 수정하세요! 문제가 있으면 이슈를 열어 이 스크립트를 더욱 개선하는 데 도움을 주세요.
  • root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./ios/ios-connect-hook.js \
        -l ./ios/ios-disable-detection.js \
        -l ./native-tls-hook.js \
        -l ./native-connect-hook.js \
        -f $APP_ID
    
  • 관심 있는 모든 트래픽을 탐색, 검사 및 수정하세요! 문제가 있으면 이슈를 열어 이 스크립트를 더욱 개선하는 데 도움을 주세요.
  • 특히 iOS의 내장 BoringSSL API를 후킹하는데, 이는 iOS가 TLS 인증서 검증을 처리하는 일반적인 방식입니다 (따라서 거의 모든 iOS HTTPS 가로채기에 충분합니다). 하지만 iOS와 Android 모두에서 다른 몇몇 경우에도 사용됩니다.

    이 훅은 모든 인증서에 대해 사용자의 CA를 신뢰하고, 사용자의 CA에 대한 모든 인증서 고정, 인증서 투명성 및 기타 제한을 비활성화합니다. 다른 많은 Frida 훅과 달리 이 훅은 TLS 검증을 완전히 비활성화하지는 않습니다(이는 매우 안전하지 않음). 대신 검증을 재정의하여 사용자의 특정 CA 인증서를 사용하는 모든 연결이 신뢰되도록 보장하면서, 제3자가 가로챌 수 있도록 검증을 완화하지 않습니다.

  • android/

    • android-proxy-override.js

      대상 앱의 Android 프록시 설정을 재정의하여, 규칙을 따르는 모든 트래픽이 프록시 서버를 통해 리디렉션되고 가로채지도록 보장합니다.

    • android-system-certificate-injection.js

      네이티브 Android API를 수정하여 모든 신뢰 저장소가 기본적으로 추가 CA 인증서를 신뢰하도록 하여 암호화된 TLS 트래픽을 캡처할 수 있게 합니다.

    • android-certificate-unpinning.js

      인증서 고정(시스템에서 신뢰하는 모든 인증서가 아닌 소수의 인식된 인증서만 허용) 및 인증서 투명성(사용된 모든 인증서가 공개 인증서 로그에 등록되었는지 검증)을 포함하여, 추가 인증서 제한을 위한 많은 알려진 일반 기법을 수정하거나 비활성화합니다.

    • android-certificate-unpinning-fallback.js

      처리되지 않은 인증서 검증 실패를 감지하고, 알 수 없는 미인식 사례를 자동 생성된 폴백 패치로 처리하려고 시도합니다. 이는 더 실험적이며 다소 예측 불가능할 수 있지만 난독화된 사례에 매우 유용하며, 일반적으로 (초기 실패 한 번 후) 고정 문제를 해결하거나 최소한 Frida 로그 출력에서 추가 역공학을 위한 코드를 강조 표시합니다. 이 스크립트는 android-certificate-unpinning.js와 일부 로직을 공유하므로 단독으로 사용할 수 없습니다. 이 스크립트를 사용하려면 비폴백 고정 해제 스크립트도 포함해야 합니다.

    • android-disable-root-detection.js

      네이티브 및 Java 레이어에서 일반적인 루트 탐지 검사를 비활성화하여 루팅된 Android 기기의 탐지를 방지합니다.

      이 스크립트는 알려진 루트 표시기(su, Magisk 및 관련 앱 등)에 대한 파일 시스템 접근, 셸 명령 및 패키지 조회를 가로채고, 주요 시스템 속성(ro.secure, ro.debuggable 등)을 위장하여 프로덕션 환경을 시뮬레이션합니다.

      파일 존재 확인 및 셸 명령 실행과 같은 의심스러운 동작을 차단하여, 표준 및 고급 루트 검사를 모두 사용하는 앱에서 탐지를 회피하는 데 도움을 줍니다.

    • android-disable-flutter-certificate-pinning.js

      Flutter 기반 애플리케이션(일반적으로 시스템 인증서 구성을 무시함)이 명시적 인증서 고정의 대부분의 경우에도 CA 인증서를 신뢰하도록 보장합니다. 이 스크립트는 현재 실험적입니다.

  • ios/

    • ios-connect-hook.js

      모든 iOS 네트워크 트래픽을 직접 캡처하여 모든 연결을 구성된 프록시 호스트 및 포트로 라우팅합니다.

      이는 모든 네트워크 연결에 적용되는 저수준 훅입니다. 이를 통해 프록시 설정을 무시하거나 다른 원시 소켓 연결을 만드는 연결까지도 모든 연결이 대상 프록시 서버로 강제 리디렉션됩니다.

    • ios-disable-detection.js

      JailMonkey 탈옥 탐지를 비활성화합니다.

  • utilities/test-ip-connectivity.js

    일반적으로 가로채기 자체의 일부로 사용하지는 않겠지만, 구성 설정 과정에서 매우 유용할 수 있습니다.

    이 스크립트를 사용하면 가능한 IP 주소 목록과 대상 포트를 구성하고, 프로세스가 각 주소를 테스트하여 처음으로 연결 가능한 주소에 대해 Frida 클라이언트로 메시지를 보낼 수 있습니다. 대상 기기(휴대폰)에서 프록시 서버(컴퓨터)에 도달하기 위해 어떤 IP 주소를 사용하는 것이 가장 좋은지 모르는 경우 자동화된 구성 프로세스에 유용할 수 있습니다.