본문 바로가기
보안/iOS

[iOS] 플러터(Flutter) 앱 프록시 설정

by stephen26 2022. 1. 29.

 

Flutter 앱은 시스템 프록시를 인식하지 않으며 자체 인증서 저장소를 사용하기 때문에 시스템 내 Wi-Fi 설정에서 프록시를 설정해도 의미가 없고 설정을 통해 인증서를 설치해도 유효성이 검증되지 않는다.

 

따라서 패킷 캡처를 위해선 트래픽을 따로 자체 프록시 서버로 리다이렉션 시키는 과정과 인증서의 유효성 검증 과정을 우회하는 절차가 필요하다.

 

먼저 트래픽 리다이렉션은 'iptables'를 활용하면 수월하지만 iOS 시스템의 커널은 이를 지원하지 않는다. 때문에 iOS 시스템의 트래픽이 모두 중간 노드를 거치게 하는 과정이 추가로 필요하다.

 

'iptables' 기능이 있는 중간 서버를 만들고 이 서버에 VPN을 구성하여 iOS 장치를 연결하면 해당 서버의 모든 트래픽을 프록시 서버로 리다이렉트 시켜 패킷을 캡처하는 방법을 활용하도록 한다.

 


 

ㅇ 서버 내 OpenVPN 구성 

$ wget https://git.io/vpn -O openvpn-install.sh
$ sed -i "$(($(grep -ni "debian is too old" openvpn-install.sh | cut  -d : -f 1)+1))d" ./openvpn-install.sh
$ chmod +x openvpn-install.sh
$ sudo ./openvpn-install.sh

$ sudo service openvpn start

 


 

ㅇ iOS 장치 VPN 연결

 

  OpenVPN 클라이언트 설치

 

  ovpn 파일 다운 및 추가 (리눅스 > iOS 파일 이동)

 

  VPN 연결

 

* Connection failed 확인 사항

 ㅇ VM 네트워크 설정 - Bridged Networking(Wi-Fi) 

 


 

ㅇ MITM(Man In The Middle attack) 설정

 

  iptables 설정

// 인터페이스 tun0의 80포트로 들어오는 패킷을 프록시 툴(Burp Suite) 내 8888 포트로 리다이렉트
$ sudo iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 8888
// 인터페이스 tun0의 443 포트로 들어오는 패킷을 프록시 툴(Burp Suite) 내 8888 포트로 리다이렉트
$ sudo iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 443 -j REDIRECT --to-port 8888
// 인터페이스 eth0 192.168.0.0/24 대역에서 나가는 패킷에 대한 통신 허용
$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

 

② 프록시 툴(Burp Suite) 설정

 


 

ㅇ HTTP 트래픽 패킷 캡처 확인

HTTP 패킷이 정상적으로 Intercept 됨을 확인할 수 있다. HTTPS 패킷 캡처에 대한 내용은 다음 글을 참고하기 바란다.

 

 

[iOS] 플러터(Flutter) HTTPS 프록시 연결

지난 글에서 플러터(Flutter) 앱의 프록시 설정에 대해서 다룬 바 있다. 하지만 해당 설정 만으로는 HTTPS 패킷을 캡처할 때 오류가 발생한다. 플러터가 사용하는 다트는 시스템 내 CA 인증서 저장소

noasand.tistory.com

 

댓글