안녕하세요.

이번에는 네트워크 계층의 보안에 대해 다뤄보겠습니다.

 

- 네트워크를 통해 데이터를 전송할 때 세가지 방법과 ATS 설정 확인

- HTTP, HPPTS, SSl/Cert PINNIG, ATS 

 

1. SEND OVER HTTP 

 

먼저 해당 HTTP 패킷 확인을 위해 BURP SUITE 를 이용해 전송되는 패킷을 확인해 보겠습니다.

BURP 설치방법은 따로 작성하지 않겠습니다.

BURP 설치 후 설정 방법 부터 설명 드리겠습니다.

 

BURP 실행 후 Proxy settings 옵션에 들어가 줍니다.

 

 

이후 ADD 버튼을 통해 포트 설정 및 어떤 패킷을 받을지 설정해 줄 예정입니다.

 

 

이후 아래와 같이 포트 번호를 임의로 설정해 줍니다.

(이미 실행되 있는 포트의 경우 겹칠 수 있으니 되도록 겹치지 않는 포트번호 입력해 줄 수 있도록 합니다.)

 

 

특정 주소로 해도되며, All interfaces로 설정해도 무방 합니다.

 

이후 Burp의 intercept is on으로 설정 합니다.

 

DVIA 앱 접속 후 Network Layer Security 탭에 접속해 줍니다.

이후 임의의 자료 입력 후 SEND OVER HTTP 값을 확인해 보겠습니다.

 

 

HTTP 통신을 통해 해당 패킷이 전송되는 것을 확인할 수 있습니다.

 

2. 이번엔 HTTPS 패킷을 확인해 보겠습니다.

 

DVIA 앱을 통해 아래와 같이 HTTPS 로 전송을 해보겠습니다.

 

하지만 Burp 에서는 특별히 잡히는 패킷이 없습니다.

 

이는 인증서가 올바르게 등록되어 있지 않기에 그렇습니다.

 

이를 위해 Burp 인증서를 모바일 단말에 넣어보도록 하며, 설정하는 방법을 설명드리겠습니다.

 

먼저 PC에 연결된 IP를 확인해 줍니다.

 

이후 모바일 단말의 WIFI 에 접속 하여 PC와 같은 WIFI 환경으로 맞춰 줍니다.(동일한 WIFI사용해야함.)

아래와 같이 WIFI 탭에서 프록시 구성을 켜기로 바꿔줍니다.

 

이후 프록시 구성을 해 줍니다.

서버 : PC IP조회 후 나온 ipv4의 주소

포트 : Burp에 등록한 포트 작성

 

이후 사파리 앱을 통해 주소에 http://burp 또는 등록한 IP 주소 입력

아래와 같이 정상적인 접속이 아니라고 나오며, 세부사항 보기 > 이페이지로 접근 클릭

 

이후 아래와 같은 화면 접근되며 검은 칸의 CA  Certificate 클릭해 줍니다.

 

아래와 같은 문구 나올 시 확인 클릭

 

이후 설치 완료 확인

 

 

이후 모바일 단말로 넘어와 설정 > 일반 > 프로파일 탭 선택

 

다운로드된 PortSwigger 선택

 

 

이후 설정 > 일반 > 정보 탭 클릭

 

 

이후 인증서 신뢰 설정 탭 클릭

 

 

인증서 활성화를 통해 루트인증서 등록

 

 

 

이렇게 하면 인증서  등록 및 설정은 끝났습니다.

 

이후 다시 Burp intercept is on 으로 설정 후 

DVIA 앱에서 해당 정보 입력 후 HTTPS 로 전송을 클릭해보겠습니다.

 

 

아래와 같이 Burp 에 패킷이 잡히는 것을 볼 수 있습니다.

 

3. 이번에는 pinning 설정되어 있는 부분을 우회 해보도록 하겠습니다.

 

해당 3~4 번째 터치 시 

아래와 같이 나옵니다.

 

해당 부분은 프리다를 이용해 우회 해보도록 하겠습니다.

 

해당 코드 작성후

 

프리다를 통해 후킹해 줍니다.

 

이후 해당 부분을 패킷을 잡으면 

바디 값은 찍히지 않은 채 잡히네요..

구현이 제대로 이루어지지 않은 것 같습니다.

 

 

 

4. APP TRANSPORT SECURITY 부분을 수행해 보도록 하겠습니다.

 

해당 기능 클릭 시 아래와 같이 info.plist 파일을 확인 하여 안전한 통신이 이루어 질 수 있도록 설정하라고 나옵니다.

 

 

info.plist 를 확인하기 위해 3uTools 를 통해 접근해보겠습니다.

 

Info.plist 파일 중 아래와 같은 곳에서 HTTP 설정이 되어 있는 것을 확인할 수 있습니다.

 

해당 파일을 Export 후 해당 값을 HTTPS 통신을 위해서 사용 되도록 변경 하도록 하겠습니다.

 

해당 파일을 아래와 같이 변경 하겠습니다.

 

"NSAllowsArbitraryLoads->NSTemporaryExceptionAllowsInsecureHTTPLoads"
 
값 변경하여 파일 저장 후 원래의 Info.plist 파일 삭제 후 변경한 파일 삽입
 
 

 

DVIA의 HTTP 패킷 전송하는 구간에서 입력 값 작성 후 요청 보내기 시도

 

 

요청이 전송 되었다는 메시지가 뜨지만, Burp에 잡히지 않은 것을 볼 수 있음

 

 

 

 

이전에 잡히던 HTTP 패킷이 잡히지 않음

 

 

 

해당 키 값을 공유해주는 site

 

Cocoa Keys (apple.com)

 

Cocoa Keys

Cocoa Keys Cocoa and Cocoa Touch are the environments used to define apps that run in macOS, iOS, tvOS, and watchOS. The keys associated with the Cocoa environments provide support for Interface Builder nib files and provide support for other user-facing f

developer.apple.com

 

대응방안

- HTTPS 통신 설정

- HTTP 통신 하지 않을 경우 ATS에 키 설정

복사했습니다!