본문 바로가기

모바일 해킹/안드로이드

암호화 통신 여부 확인 - 버프 스위트, 와이어샤크

안녕하세요 이번에는 안드로이드가 통신을 할 때 중간에 데이터를 보고 관리 할 수 있는

버프 스위트를 이용해 실습해보겠습니다.

 

우선 저희가 설정을 해야 되는 게 있습니다.

 

녹스가 있으면 녹스 통신할 때 프록시 툴 통해 보내지고 받을 수 있게 설정을 해야 합니다.

 

버프 스위트 설치는 간단합니다. 구글에서 burp suite 검색한 후 editon이 무료 버젼 pro가 유료 버젼입니다.

아무거나 깔으셔도 되요!

 

 

 

버프 스위트를 깔으시고 실행하시면 이런 화면이 보이실 겁니다.

 

뭔가 많죠

그 다음에 Proxy 태그로 갑니다.

 

그리고..

 

Proxy setting 보이시나요? WebSockets history 옆에 있습니다.

 

그거 클릭하시면 

 

설정란이 있습니다.

 

여기에 Proxt listeners 부분에 Edit을 클릭합니다.

 

이렇게 나오실 거에요

 

그리고 Loopback only 말고 All interfaces 선택해 모든 인터페이스의 통신을 관리 할 수 있게 합니다.

 

OK 누르시고 Yes 누릅니다.

 

그럼 뭐.. 허용하겠냐고 경고문이 나오는데 예 하시면 됩니다.

 

그리고 난 뒤에 밑에 Request interception rules이 보이실 겁니다.

보통 체크가 되어 있겠지만 만약 안 되어 있다면 체크 하시면 됩니다.

 

그리고 또 바로 밑에 Response interception rules이 있습니다.

이 것은 서버에서 응답을 올 때 조작을 할 수 있게 도와줍니다.

 

이것도 체크 해주시면 됩니다.

 

이렇게요

 

그리고 나면 끝입니다. 이제 녹스 설정으로 넘어가겠습니다.

 

녹스 키시고 설정 들어갑니다.

 

와이파이 설정 할겁니다! 프록시 툴 지나갈 수 있게요.

 

그리고 와이파이로 들어갑니다.

 

와이파이

 

 

 

그리고 WiredSSID을 왼쪽 클릭으로 꾹 누르시면 네트워크 수정이 나옵니다.

 

수정 클릭

 

수정 클릭하신 다음 고급 옵션을 클릭하면 프록시와 IP설정이 보이실 겁니다.

 

 

이제 프록시 설정을 수동으로 바꾸시고 프록시 호스트 이름에 저희 ip를 작성하시면 됩니다.

자신 ip는 터미널에 ipconfig로 확인 가능합니다.

 

 

포트번호도 8080으로 설정하세요

 

이렇게 자신 ip와 포트번호까지 설정하셨으면 저장 눌러서 나가시면 됩니다.

 

이러면 프록시 툴 통해 통신을 하게 됩니다!

 

한 번 인스큐어 뱅크 앱 통해 확인을 해보겠습니다.

인스큐어 뱅크 서버 여신 다음 앱을 열고 로그인을 해보겠습니다.

 

 

로그인!

 

그리고 버프 스위트로 봅니다.

 

뭔가 있네요?

 

클릭하면 요청이랑 응답도 볼 수 있습니다.

 

이렇게요

 

만약 내가 중간에 보내기 전에 데이터를 수정하고 싶으시면

 

intercept 태그에서 inercept is off를 클릭해 on으로 바꾸시면 됩니다.

 

 

이렇게요

그리고 이번엔 로그인 말고 Transfer에서 거래값을 보내보겠습니다.

 

 

대충 작성하고

 

Get Accounts 누르시고 버프 스위트 보시면

 

이렇게 데이터가 보내질려는게 보입니다.

 

위쪽에 Request to http://... 있죠. 저게 요청을 뜻합니다. 

 

그러니 지금 Get Accounts를 눌렀는데 로그인 정보를 보내고 있다는 뜻이네요!

다음 단계로 보고 싶으시면 Forward 누르면 됩니다.

 

제가 서버 ip 잘 못 설정해서 그런지 555555를 보냈는데 예전에 작성한 값이 오네요. 이거는 저만 발생하는 오류이니 넘어가시면 됩니다.

 

Response from ... 있죠? 이게 바로 서버에서 오는 응답입니다.

 

한 번 더 forward을 눌르면 용청에 응답 까지 왔으니 이제 대기 상태일 겁니다.

 

그리고 이제 Transfer을 눌러서 보내보겠습니다.

당연히 intercept is on인 상태에서요

 

이렇게 나오실 거에요

 

아! 나는 POST 방식으로  /dotransfer 으로 요청을 보내는데

데이터에 로그인 정보와 from acc와 to acc, amount 값을 보내는 구나 라고 알 수 있습니다.

 

한 번 조작해볼까요? amount를 아무거나 바꿔 보겠습니다.

 

이렇게요

 

 

그리고 forward 해보겠습니다.

 

 

아하

 

응답에서 amount값이 저희가 조작된 데이터로 보내진 것을 확인했습니다.

 

 

이렇게 버프 스위트를 이용해 간단하게 응답값과 요청값을 조작하고 확인을 했습니다.

 

보시면 로그인 정보랑 거래하는데 acc의 값이랑 얼마 보내는지 전부 요청이랑 응답에 담겨져 있죠?

그럼 저희는 이걸 취약점으로 잡을 수 있게 되는 겁니다.

.

.

.

.

.

.

그리고 와이어 샤크를 통해 암호화 통신을 하는지 까지 확인을 해보겠습니다.

 

와이어 샤크 설치도 별거 없습니다. 인터넷에 와이어 샤크를 검색하시고 설치하시면 됩니다.

그리고 난 뒤에 실행하면 이런 화면이 보이실 겁니다.

 

 

 

저는 Wi-Fi 환경이라 저렇게 나옵니다.

 

만약 랜선 사용이시면 로컬 영역 연결에서 반응이 있으실 거에요.

그럼 저는 Wi-Fi을 클릭해 들어가보겠습니다.

 

그럼 뭔가 다양한 패킷들이 오가는 것을 알 수 있습니다!

 

 

뭔가 쉴세 없이 오가고 있죠.

 

바로 여기서 저희가 어느 패킷을 통신하는지 볼 수 있습니다.

 

그럼 실습을 해보는데 저희는 저희 컴퓨터로 녹스 키고 본인 컴퓨터 서버를 이용하잖아요?

그러니 루프백(127.0.0.1)으로 들어가서 확인해야지만 인스큐어뱅크 앱에서 뭘 하는지 보일 겁니다.

 

2번째 Adapter for.. 로 들어갑니다.

 

그리고 난 뒤에 다시 인스큐어 앱에 transfer을 한 번 보내보겠습니다

 

이렇게요

 

그리고 와이어 샤크에 위에 보시면 빨간색 버튼이 있습니다. 정지 버튼인데 그거 누르시고 제가 어느 패킷이 보내지는지 확인 해보겠습니다.

 

여기에 있네요!

 

기본적으로 와이어 샤크에 연두색으로 표시된 패킷은 HTTP 통신으로 암호화 통신을 안 한다고 말해줍니다.

그래도 한 번 확인을 해보겠습니다.

 

중앙에 HTTP/1.1 200 OK 보이시죠 그거 눌러서 확인하시면 

 

아하..

 

이렇게 패킷에 암호화가 안 된 데이터들을 확인 할 수 있습니다.

 

이러면 통신에서 암호화가 안 된다 라고 취약점을 잡으시면 됩니다!

.

.

.

.

.

.

.

끝내기 전에 SSL 인증서 설치까지만 할게요. (참고로 되도록이면 녹스 환경을 안드로이드 7.0 버젼 이하로 하세요! 안그러면 SSL 인증서 설치가 매우 까다로워 집니다.)

안드로이드 즉 녹스에는 ssl 인증서가 없습니다. 그래서 https 통신을 하는데 매우 큰 불편함이 있습니다.

 

그걸 해결하겠습니다.

 

에이.. 이게 뭐야 할 수 있어요

참고로 저 경고창은 계속을 계속 누르시면 됩니다.

 

url 란에 http://burp 입력합니다.

 

들어가시면 

 

이렇게 나옵니다

 

이때 오른쪽 위에 CA Certificate 클릭하시면 파일이 다운로드 될거에요.

 

이게 인증서 입니다.

 

저걸 이제 실행 하면 되는데 문제점은 안드로이드에서 der 파일을 실행할 수 없습니다.

2023년 기준 으로는 안되요!

 

그러니 저는 adb shell 이용해 파일 형식을 바꾸고 실행 하겠습니다.

 

cd /mnt/sdcard/download

 

여기에 다운로드한 파일들을 확인 가능합니다.

 

그리고

 

der 파일을 cer 파일형식으로 바꾸겠습니다.

 

그리고

 

녹스 통해 다운로드 폴더에 있는 .cer 파일을 실행합니다. 

 

 

cer 파일 실행합니다

 

만약 안 된다고 나오나요?

 

그럼 조금 다르게 접근해야만 합니다.

 

설정 -> 보안 -> SD카드에서 설치 -> 방금 만든 .cer 파일 실행

 

보안

 

 

SD 카드에서 설치

 

.cer

 

파일 실행하면 

 

이렇게 나옵니다.

 

저는 burp라 이름 정했습니다. 그리고 확인 누르면 비밀번호 설정하라고 나옵니다.

 

중요하니깐요

 

각자 원하는 걸로 하나만 설정하시면 됩니다. 저는 PIN에 간단하게 비밀번호를 설정했습니다.

 

그러면 설치가 완료가 되고 네이버 같은 https 홈페이지가 잘 들어가 지는 것을 확인 할 수 있습니다.

 

 

 

그래도 안되는 경우가 있습니다. 이거는 아마 안드로이드 7.0 버젼 이상이셔서 그러시는 겁니다.

그럼 시스템 내부로 직접 다운로드를 해야만 합니다.

 

https://itinformation.tistory.com/259

 

안드로이드(Nox) 버프 인증서 설치(7.0이상)

기존에는 모바일 취약점 진단 시 녹스 앱플래이어를 사용하게 되면 버프 실행 및 프록시 연결 후 http://burp에 접속해 인증서 다운 후 실행하면 되지만 안드로이드 버전 7.0 이상 버전에서 버프 인

itinformation.tistory.com

여기서 참고를 하시면 되는데 아마.. 이것도 안 되는 경우도 있습니다.

 

openssl 설치 하실 때 뭐.. 돈을 줘야되니 말아야 되니 말도 있으니깐요