[모의해킹] 웹/앱 점검 환경 구축기(feat. Fiddler 설치 및 인증서, Oh bank, Frida, Nox player, Jadx, openssl)

cielo ru·2024년 7월 20일
0

모의해킹

목록 보기
4/14

➰ 서론

웹 애플리케이션의 보안 취약점을 식별하기 위해서는 우선 웹 점검 환경을 구축하는 것이 필요하다. 따라서 이번 블로그 포스팅에서는 피들러(Fiddler), Frida, Nox Player, JADX, OpenSSL를 활용하여 웹 점검 환경을 구축하는 방법을 알아보려 한다.

➰ 위 기술들을 선택한 이유

1. Oh Bank

  • OhBank는 Damn Vulnerable Bank라는 오픈소스를 기반으로 의도적으로 취약하게 만들어진 테스트 앱이다.
  • 특정 앱을 테스트 대상으로 선택하는 것보다 금융 앱 특유의 복잡한 시나리오민감한 데이터를 다루기 때문에 그 취약점을 이용해 공격하는 방법을 배울 수 있어 선택하였다.

2. Frida

  • Frida는 동적 분석 도구로서, 앱의 실행 중에 코드를 수정하고 감시할 수 있도록 해주는 오픈 소스 프레임워크이다.
  • 프로세스를 모니터, 디버깅을 위해 사용할 수 있는 도구로써 앱의 실행 중에 프록시 도구(Fiddler)를 사용하는 환경에서 필요하기 때문에 선택하였다.

3. Nox Player

  • 안드로이드 애뮬레이터로, 모바일 애플리케이션을 PC에서 편리하게 실행하고 테스트하기 위해 설치하였다.

*만약 모바일을 직접 연결하여 점검을 진행한다면 Nox player는 사용하지 않는다.

4. JADX

  • Jadx는 안드로이드 디컴파일러로, 안드로이드 앱의 APK 파일을 추출하고 소스 코드를 분석하는데 사용된다.
  • 기존의 모바일 앱의 소스코드 분석은 APK 파일 추출 -> apkTool -> dex2jar -> jd-gui 과정을 거친다. 하지만 jadx는 4단계의 반복적인 과정을 한번에 수행할 수 있도록 4단계의 도구와 기능이 합쳐져 있어 쉽게 소스코드로 변환할 수 있어 선택하였다.

5. OpenSSL

  • OpenSSL은 암호화된 트래픽을 분석하고, 인증서 관리를 도와주는 툴이다.
  • Fiddler 인증서를 관리하고, 피들러와 OpenSSL로 캡쳐하고 분석한 트래픽 데이터를 바탕으로, 데이터 전송 과정에서의 보안 취약점을 식별하기 위해 openssl 를 설치하여야 한다.

6. Fiddler

  • 웹 브라우저와 서버 간의 모든 HTTP/HTTPS 요청 및 응답을 캡쳐하고, 디버깅하여, API 테스트하는데 유용하다.
  • Fiddler는 주로 웹 트래픽에 집중되어 있어, 다른 네트워크 트래픽 분석 도구보다 가볍고 빠르다.
  • 윈도우에서만 사용이 가능하다.

Burp Suite

  • 피들러와 동일하게 HTTP/HTTPS 트래픽을 캡처하고, 분석하며, 조작할 수 있다.
  • Burp Suite는 많은 보안 기능을 포함하고 있어 속도가 느릴 수 있지만, 매우 강력한 기능을 제공한다.
  • 맥/윈도우 모두 사용이 가능하다.

WireShark

  • 네트워크 인터페이스를 통해 전송되는 모든 패킷을 캡처하고 분석할 수 있어, 전체 네트워크 트래픽을 세밀하게 분석할 때 사용한다.
  • 다양한 프로토콜 지원과 깊이 있는 분석 기능을 제공하지만 다소 무겁다.

🌱 우선 네트워크 레벨에서 이루어지는 점검이 아니라 웹 트래픽 분석을 메인으로 진행할 예정이라 Fiddler와 Burp Suite 중에 골라야 했다. 둘 다 세팅해보고 써본 결과 인코딩/디코딩을 활용할때 Burp Decoder보다 TextWizard에서 제공해주는 기능이 훨씬 많고 사용자 인터페이스도 편했다. 그리고 필요한 세션만 선택해서 모의해킹을 진행할 수 있고, 가볍고 빠르다는 장점이 있어 Burp Suite가 아닌 Fiddler를 선택했다.

📍 하지만 다양한 보안 기능을 제공하는 Burp Suite를 어쩔 수 없이 써야할 때가 있고 네트워크 레벨에서 점검이 필요한 경우가 때문에 Burp Suite와 WireShark 모두 쓸 줄 알아야 한다.


➰ 설치

➿OpenSSL 설치

https://slproweb.com/products/Win32OpenSSL.html

위 링크로 들어가서 자신의 운영체제에 맞는 최신 버전의 OpenSSL을 다운로드 받는다.
필자는 Window를 사용하고 있어 Win64 OpenSSL v 3.3.1EXE를 눌러 다운 받았다.

➿Frida 설치

  1. Frida는 Python 기반으로 제작된 도구이기 때문에 파이썬이 설치되어 있지 않으면 파이썬을 먼저 설치한다.

    https://www.python.org/

  2. 파이썬을 통해 frida를 설치하고, 버전을 확인한다.

    pip install frida
    
    pip install frida-tools
    
    frida --version
  3. 아래 링크로 들어가서 설치된 frida 버전에 맞는 frida-server를 다운받는다.

    https://github.com/frida/frida/releases

    frida-core-devkit-16.4.5-android-arm64.tar.xz 클릭

➿Jadx 설치

https://github.com/skylot/jadx/releases

위 링크로 들어가서 jadx-gui-1.5.0-no-jre-win.exe 를 클릭하여 Jadx를 다운받는다.

➿Nox Player 설치

https://kr.bignox.com/

위 링크로 들어가서 자신의 운영체제에 맞는 최신 버전의 Nox Player를 설치한다.

➿Oh bank 다운로드

https://github.com/sidereumare/OhBANK

위 링크로 들어가서 Oh bank 앱의 소스코드apk 파일을 다운받는다.

** 원래는 apk 파일을 jadx로 디컴파일해서 소스코드를 분석하지만 OhBank는 취약점 테스트를 위해 소스코드가 github에 올라와있어 소스코드를 추가로 다운받는다.

➿ Fiddler 설치

  1. 아래 사이트에 접속하여 Fiddler Classic 버전을 설치한다.

    https://www.telerik.com/download/fiddler

    *설치에 필요한 옵션은 작성하여 Download for Windows를 클릭한다.

    *Fiddler는 Window에서만 동작한다. 다른 운영체제의 경우 제대로 작동하지 않거나 제공하지 않는다.

  2. Fiddler 인증 기관(CA)의 인증서를 생성하기 위해 아래 사이트에 접속하여 Fiddler 인증서 생성 툴을 설치한다.

    https://www.telerik.com/fiddler/add-ons

    CertMaker for ios and windows > Download

    대부분 사용자 정보, 결제 정보, 로그인 등과 관련된 페이지들은 민감한 정보들을 포함하고 있기 때문에 HTTPS 통신을 이용한다. HTTPS 패킷의 경우 암호화가 되어 있어 Fiddler 인증서를 설치해야 해당 패킷의 내용을 확인할 수 있다.

    그래서 Fiddler의 경우, Fiddler에서 생성한 인증 기관(CA) 인증서(아직 신뢰 되지 않음)를 신뢰할 수 있는 루트 인증서로 등록하고, Fiddler proxy를 통해 접근하는 웹 사이트의 모든 인증서를 Fiddler CA가 발행한 인증서로 대체하여, 브라우저에서는 HTTPS 통신의 내용을 확인할 수 있는 방법을 제공한다.

  1. 다운받은 Fiddler에 접속하여 PC에 Fiddler 인증서를 설치한다.

    Tools > Options > HTTPS > Actions > Trust Root Certificate 클릭한다.

    Yes를 클릭한다.

    만약 Trust Root Certificate를 했는데 Root에 인증서가 없다고 뜨거나 지정되지 않았다고 뜬다면?

    Export Root Certifiate to Desktop을 한 후에 Trust Root Certifiacte를 다시 시도한다.
    → 옵션도 아래와 같이 체크해준다.

  1. 인증서 연결을 위한 Connection 설정도 추가해준다.

    Tools > Options > Connections

    1. 포트 지정
    2. Allow remote computer to connect 체크
  2. 휴대폰에 Fiddler 인증서를 설치한다.

    5.1 wifi > 네트워크 설정 관리 접속해서 아래와 같이 정보를 입력한다.

    프록시 호스트 이름 : 192.168.0.18
    프록시 포트 : 8888
    프록시 우회 대상 : ~~~

    5.2 휴대폰에 fiddler 인증서를 다운로드 한다.

    http://ipv4.fiddler:8888

    모바일에서 해당 링크에 접속하여 핸드폰에 인증서를 다운로드 한다.

    FiddlerRoot certificate를 클릭한다.

    다운로드 하고 인증서 이름을 입력하면 자동 등록된다.

  3. 설치된 인증서 추출 후 변환하고 휴대폰에 넣는다. (사용자 인증서를 시스템 인증서로 옮기기)

    6.1 .cer 파일을 adb pull 명령어로 추출한다.

    adb pull 인증서 저장된 경로/FiddlerRoot.cer
    adb pull /sdcard/Download/FiddlerRoot.cer

    6.2 openssl을 사용하여 인증서를 변환하고 해시값을 추출한다.

    openssl x509 -inform DER -in FiddlerRoot.cer -out cacert.pem
    openssl x509 -inform PEM -subject_hash_old -in cacert.pem



    6.3 인증서 이름을 아래와 같은 형식으로 변경한다.
    *이름은 해시 값.0 확장자로 이름을 변경한다.

    6.4 이름 변경을 완료한 인증서를 시스템 경로에 넣어준다.

    ```
    adb shell // adb를 통해 기기 명령어 실행
    
    - adb 관리자 쉘 에서 system 폴더 마운트
    # mount -o rw,remount /system
    
    ```

    6.5 adb push 명령어로 인증서를 /system/etc/security/cacerts/ 경로로 복사한다.

    ```
    # cd C:\Users\2-02\Desktop> //인증서가 있는 경로로 이동 
    
    # adb push 9a5ba575.0 /system/etc/security/cacerts/
    ```

    6.6 사용자 인증서가 정상적으로 시스템 인증서로 이동이 완료되었다.

    6.7 adb shell 에 접속하여 해당 인증서가 있는지 확인한다.

    
    # adb shell 
    
    # /system/etc/security/cacerts/9a5ba575.0 에 해당 인증서가 있는지 확인
    # ls -l /system/etc/security/cacerts/9a5ba575.0 
  1. 아래와 같이 Capturing이 켜져 있으면 프록시를 통헤 패킷을 확인할 수 있다.

➰ 결론

이로써 피들러(Fiddler), Frida, Nox Player, JADX, OpenSSL, Oh bank을 활용한 웹 점검 환경 구축 과정을 완료하였다. 구축을 하면서 각 도구들이 왜 필요한지, 그리고 다른 도구들과 비교하여 왜 이 도구들을 선택했는지에 대해 깊이 고민할 수 있었다.

피들러는 웹 트래픽 분석, Frida는 런타임 분석, Nox Player는 모바일 애플리케이션 테스트, JADX는 소스코드 분석, OpenSSL은 암호화 통신 분석, Oh bank는 실제 금융 시나리오 테스트에 최적화된 도구로 활용하여 취약점 점검을 진행하고자 한다.

➰ 참고

profile
Cloud Engineer & BackEnd Developer

0개의 댓글