본문 바로가기

해킹/Mobile application Hacking

Burp Suite로 Nox 패킷 보기 #1 - mount, 인증서 등록

Linux 및 UNIX 운영 체제에서는 mount 명령을 사용하여 파일 시스템 및 USB 플래시 드라이브와 같은

이동식 장치를 디렉토리 트리의 특정 마운트 지점에 연결할 수 있습니다.

 

반대로 unmount 명령은 마운트된 파일 시스템을 디렉토리 트리에서 분리합니다.

 

mount / unmount

mount 명령어는 보조기억장치를 디렉토리로서 사용할 수 있게 하는 명령어

 

우리에게 익숙한 윈도우에서는 USB나 외장하드같은 물리적 장치를 컴퓨터와 연결하면 자동으로 연결이 되지만

 

리눅스에서는 직접 연결한 물리적인 장치와 리눅스의 특정 디렉토리를 연결하여 사용해야 하는데, 이때 연결하는 이 행위를 마운트 (mount)라고 합니다.

사용법

mount [option] [file system] [device] [directory]

옵션 내 용
-a /etc/fstab에 지정한 모든 파일 시스템을 마운트 합니다.
-f 실제 시스템 호출은 하지 않고 마운트 할 수 있는지 점검합니다.
-r 파일을 읽기 전용으로 마운트 합니다.
-w 파일 시스템을 읽기/쓰기 형식으로 마운트 합니다.
-t 마운트 할 파티션의 파일 시스템 형식을 지정합니다. (adfs, affs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, gnx4, vfat, xenix, xfs, xiafs,
-t 옵션이 주어지지 않고 auto 타입이 지정되면 mount가 요구되는 파일 시스템을 추측하여 마운트한다.)

 

Burp Suite으로 Nox 패킷 잡는법

안드로이드 7 이상부터 MITM 공격 방지를 위해 SSL Pinning을 지원합니다. SSL Pinning이 걸려있는 웹이나 앱에서는 버프 스위트로 패킷이 잡히지 않습니다. 서버단에서 고정시킨 SSL 인증서가 존재하기 때문에 다른 사설 인증서로 아무리 인증하려해도 시스템 레벨에서 인증된 인증서가 있어야만 해당 통신을 수행하기 때문에, 버프스위트로 인증서를 다운받아 시스템이 신뢰하는 인증서 리스트에 인증서를 추가해야만 합니다.

(안드로이드 7.0 이상부터 인증서의 저장 위치가 시스템/사용자로 구분이 되어있습니다.)

(openssl을 써서 키를 생성한 후, 0파일을 adb로 push해도 되고, NOX 내의 브라우저를 통해 인증서를 받을 수도 있습니다)

 

후자의 방법이 더 좋은데, 그 이유는 내가 생성한 인증서는 결국 다시 버프스위트를 거쳐 변환해줘야 하기 때문이다. 처음부터 버프 스위트에서 다운받는 것이 편합니다.

 

아, 그렇다고 안드로이드 7이상 버전이 싫다고 인터넷에 나오는 글처럼 안드로이드 5를 멀티 플레이어로 설치해서 작업하는 건 좋지 않습니다. 만약 7이상에서만 호환이 되는 앱을 진단한다고 하면 결국 7로 돌아가야만 합니다.

 

인증서 다운로드

Nox에서 http://burp 로 들어가 인증서를 다운받아줍니다.

 

 

다운로드 탭에 들어갔더니 cacert.der이 잘 받아져있습니다.

 

아래 명령어로 가서 ls 명령어로 확인해보면 인증서가 있는지를 확인할 수 있습니다.

cd /sdcard/Download/

 

아래 명령어를 이용해서 확장자를 cer로 바꿔줍니다.

mv cacert.der cacert.cer

 

보안 > 자격증명 저장소 > SD 카드에서 설치를 클릭합니다.

 

클릭한 뒤, 다운로드 폴더에 있는 cacert.cer 파일을 클릭하고 인증서 이름은 cert로 설정해줍니다.

나머지는 그대

 

비밀번호는 입맛에 맞게 설정하시면 됩니다.

 

이까지 잘 따라오셨으면 이런 toast 메시지가 뜰 것입니다.

 

안드로이드 7이상에서 시스템 권한으로 인증서 넣어주기

아래 명령어를 입력하여 해당 폴더에 인증서 0파일이 있는지 확인합니다.

cd /data/misc/user/0/cacerts-added

 

mount 시키기

제가 처음에 mount에 대한 개념을 몰라서 엄청 헤맸던 부분입니다 ㅠㅠ!!

리눅스 기반은 mount를 시켜야만 연결된 단말기와 디렉토리를 수정할 수 있다고 합니다.

 

mount -o rw,remount /system
mv [인증서 0파일] /system/etc/security/cacerts

 

이렇게 하고 chown 이나 chmod를 줘서 권한을 따로 주지 않아도 신뢰할 수 있는 자격증명 리스트에 인증서가 잘 추가된 것을 볼 수 있습니다.

그럼 이제 인터넷에 접속하면 Burp Suite로 Nox 패킷을 잡을 수 있을까요?

아직 그건 아닙니다.

 

Nox에 인터넷 어플을 통해 들어가면 인증서에 문제가 있다고 합니다.

 

안드로이드 버전이 상승하면서 안드로이드 7이상부터는 시스템 권한인증 리스트에 인증서를 넣어줘야 올바른 패킷 진단이 가능합니다. 이 부분에 대해서 2편으로 포스팅 하도록 하겠습니다.


소스 참조

mount , unmount 명령어 및 옵션 블로그 : https://m.blog.naver.com/errorsoft666/222053426690

버프 스위트 (안드로이드 7이상버전에서)로 Nox 패킷잡기 : https://kinghy7.tistory.com/4 

버프인증서 설치하는 법 (안드로이드 7 이상) : https://ndw29.tistory.com/12

버프인증서 설치하는 법 2 : https://gomguk.tistory.com/99

안드로이드 버프 인증서 설치 : https://omoknooni.tistory.com/25