반응형
모바일 앱을 진행하던 중 Flutter로 개발된 앱이 HTTP 패킷이 캡처되지 않아 진단이 많이 지연되었다.
Flutter로 개발된 모바일 앱에 HTTP 패킷을 캡처하기 위해 해결한 내용을 정리한다.
Flutter
- Flutter는 google에서 개발한 프레임워크이며 18년 12월에 릴리즈되었으며 해외에서는 많은 사용자가 이용중이라고 한다.
- 국내에선 자료가 많이 없지만 단일코드로 WEB, Android, iOS를 개발할 수 있어 개발효율이 높다고 한다.
- Dart라는 개발 언어로 프로그래밍하며 이 역시 google에서 개발한 언어다.
- 앞으로 Flutter로 개발된 앱이 증가할 거 같고 Burp Suite 와 Charles 등 HTTP 패킷을 캡처하기 위해 정리한다.
- 추가로 개발자의 경우 디버깅을 목적으로 아래 설명과 같이 코드 추가가 필요할 것이다.
Flutter APP Burp Proxy / Charles Debug
- Flutter는 HttpOverrides CLASS를 사용하지 않으면 HTTP 패킷 캡처, 프록시 서버 등을 이용하지 못하는거로 확인된다.
- 개발자 입장에선 Charles 등 디버깅 툴도 사용못하므로 HttpOverrides Class를 사용해야한다.
- 아래 소스코드를 참고하여 소스코드를 추가한다.
HttpOverrides 추가
- main.dart에 HttpOverrides Class를 추가한다.
class ProxiedHttpOverrides extends HttpOverrides {
String _proxy;
ProxiedHttpOverrides(this. _proxy);
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return _proxy.isNotEmpty ? "PROXY $_proxy;" : 'DIRECT';
}
..badCertificateCallback = (X509Certificate cert, String host, int port) => Platform.isAndroid;
}
}
void main 함수 수정
- 앱을 실행하는 함수에서 runApp 호출 전에 HttpOverrides를 실행해 프록시 서버로 통신하도록 소스코드를 추가
- HttpOverrides.global ~ 로 시작하는 Line 중 (" ") 안에 내용을 진단환경에 맞춰 작성한다.
- 진단/Debug PC는 고정IP로 설정하여야한다.
HttpOverrides.global = new ProxiedHttpOverrides("진단/디버깅 PC:Port");
runApp(testApp());
//EX)
HttpOverrides.global = new ProxiedHttpOverrides("192.168.0.10:8080");
runApp(testApp());
참고 사항
- 모바일 앱보안사항 중 하나로 허용되지 않은 인증서는 통신이 불가능하도록 설정해야한다.(SSL Pinning 등)
- 하지만 HttpOverrides Class를 사용하게 되면 이 부분에서 보안상 문제가 발생할 수 있다고 한다.
- 따라서 스토어에 업로드할 APP이 아닌 테스트용으로 릴리즈된 Android, iOS 등에서만 해당 코드를 추가하도록 한다.
반응형
'취약점 진단 > 모바일_AND' 카테고리의 다른 글
[Android] AVD Emulator 취약점 진단 환경 구축 (0) | 2024.10.11 |
---|---|
[Android] Frida를 이용한 android 앱 메모리 덤프 (0) | 2022.11.07 |
[Android] 취약점 점검 Drozer 설치 및 사용법 Github (0) | 2022.11.07 |