인스타그램 리버스 엔지니어링
Proxyman을 사용한 비공개 API 리버스 엔지니어링
1. Facebook Whitehat 설정 활성화
(APK를 패치하고 에뮬레이터 인증서를 재정의할 것이므로 반드시 해야하는건 아님)
Facebook 계정의 연구자 설정에서 Whitehat 옵션을 활성화
2. Instagram APK 오픈
APK를 직접 열고 패치해서 다시 빌드하는 것으로 인스타의 잠겨있는 인증서를 우회 해야 한다.
APK의 내용을 추출하고, 내용을 수정하고, 다시 빌드하여 패치된 앱을 우리 기기에서 사용할 수 있도록 해야 한다.
APK 애플리케이션에서 작업할 때 기본 기능을 도와주는 VS Code 확장 프로그램인 APKLab을 사용하는게 좋다.
APK를 다운로드 하고 VS Code에서 폴더를 엽니다.
APK를 열려면 VS 코드에서 APK를 저장한 폴더를 열고 CTRL+SHIFT+P를 누른 다음 APKLab을 선택
APK를 열고 — only-main-classes 선택을 취소
3. APK 패치
network_security_config.xml, AndroidManifest.xml을 수정
- res/xml/fb_network_security_config.xml을 삭제
- 다음 내용으로 res/xml/network_security_config.xml 파일 생성
<network-security-config>
<domain-config>
<domain includeSubdomains="true">i.instagram.com</domain>
<trust-anchors>
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</domain-config>
<debug-overrides>
<trust-anchors>
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
- res/values/private.xml 및 AndroidManifest.xml 의 fb_network_security_config를 network_security_config 로 교체
- res/values/styles.xml 에서 <item name=”android:textColorHint”>@color/igds_tertiary_text</item> 4564행을 제거
- assets/drawables.bin을 삭제
3. APK 재구축
apktool.yaml을 마우스 오른쪽 버튼으로 클릭 하고 APKLab을 선택
APK를 다시 빌드 하고 — use-aapt2를 선택 취소
4. 에뮬레이터 설정
Android Studio를 다운로드 하여 설치
기본 활동으로 새로운 Android Studio 프로젝트를 만듭니다.
새로운 Android 에뮬레이터를 만들려면 먼저 화면 오른쪽 상단의 장치 관리자를 엽니다.
그런 다음 다음 사양으로 장치를 만듭니다.
Release: Q, API Level: 29, ABI: x86, Target: Android 10.0
패치된 APK를 플래시하려면 기기를 시작하고 패치된 APK를 기기로 끌어다 놓기만 하면 됩니다.
(패치된 APK는 dist/ 폴더에 존재함)
이제 패치된 앱을 열고 Facebook으로 로그인 하여 화이트햇 설정을 활성화한 계정으로 로그인
프로필, 설정, 내부, Whitehat 설정으로 이동하여 다음 옵션을 활성화
(에뮬레이터 인증서를 재정의하므로 필요하진 않음)
5. Proxyman을 사용한 트래픽 캡처
Proxyman을 설치하고 Instagram 앱이 개인 API와 통신하는 트래픽을 가로채고 복호화할 수 있도록 설정
Proxyman에서 SSL 프록시 목록에 도메인을 추가 (선택 사항)
에뮬레이터 인증서에 인증서 설치/Android/에뮬레이터에 인증서 설치 하고 Override Emulator를 누르고, 모든 종속성이 설치되었고 에뮬레이터가 실행 중인지 확인
모든 설정이 완료되면 Proxyman 앱에서 트래픽이 표시 된다.