한국 남성이라면 아마 설치해봤지 않을까 싶은… 그만 알아보자.
카메라 보안 앱의 작동 구조를 알아보자.
카메라 보안 앱의 작동 구조는 다음과 같다.
[차단/허용 프로파일 설치]
- 어플리케이션 설치 시, 보안 코드를 요구한다.
- 올바른 보안코드가 입력되면, 설치 일자가 기록된다.
- 카메라 차단 버튼을 클릭하면, 근처 블루투스 비콘을 찾는다.
- 해당하는 비콘이 있으면, 앱 내에서 로컬 웹 서버를 활성화한다.
- 웹 서버의 포트는 무작위로 생성된다.
- 해당 URL의 형식은 [http://127.0.0.1:포트/랜덤코드] 이다.
- 로컬 웹 서버에 저장되어 있는 mobileconfig 파일 주소로 리다이렉트 시킨다.
- N초 뒤, 웹 서버를 종료시킨다.
[이후 앱 실행 시]
- 앱을 실행할 때, 기기에 프로파일이 설치되어있는지 확인한다.
- 기존에 설치가 되어 있었으나 감지되지 않으면 이를 로그에 기록한다.
- 허용 비콘을 찍어 성공한 기록이 있다면, 기록하지 않고 정상 해제한 것으로 처리한다.
생각보다 간단한 구조임을 알 수 있다.
그런데 [5] 의 mobileconfig는 무엇인가?
도와줘요 챗지피티!
mobileconfig는 Apple에서 사용되는 설정 파일 형식입니다. 이 파일은 iOS 기기에서 사용자 정의 설정 및 프로필을 구성하는 데 사용됩니다. mobileconfig 파일은 XML 형식으로 작성되며, 다양한 설정을 포함할 수 있습니다. 이 파일을 사용하여 네트워크 설정, 보안 정책, 암호화 설정 등을 구성할 수 있으며, 프로파일 관리자를 통해 iOS 기기에 배포할 수 있습니다. mobileconfig 파일은 iOS 기기의 설정 앱에서 설치되어 사용자가 액세스할 수 있는 설정을 변경하거나 제한하는 데 사용됩니다.
아하. 그렇다고 한다. 고마워요, 스피드웨건!
카메라 보안 앱에서 사용하는 프로파일은, 기기를 제어할 수 있는 MDM 프로파일이다. 원래는 기업 등에서 회사 디바이스를 중앙제어하기 위해 존재하는 솔루션이지만, 이를 이용해서 카메라를 차단하는 것이다.
MDM 프로파일을 사용하는 것 이라면, 허용 프로파일은 대체 무엇인가?
당신이 든 그 의문, 당연히 드는 것이 맞다. MDM 프로파일은 애초에 [차단]을 위해 존재하는 것이므로, [허용] 프로파일 자체가 필요 없다.
카메라 보안 앱에서 제공하는 [허용] 프로파일을 사실, [차단] 프로파일을 지우는 용도의 프로파일이다. 한마디로, 그냥 아이폰 설정에서 제거[설정 → 일반 → 프로파일 및 기기관리 → 프로파일 → 제거] 하는 것과 동일하다는 뜻이다!
어라, 그러면 앱을 실행하지 않으면 프로파일의 변화를 감지하지 못하는 것 아닌가?
헉. 그렇다.
차단 프로파일을 설치한 뒤, 삭제했다가 앱을 실행하지 않고 다시 차단 프로파일을 임의의 경로로 설치하면, 기존에 차단했던 시간 기록이 그대로 남아있고, 앱은 프로파일이 다시 설치 되었음을 알아낼 수 없다.
잉 이거 알아낼 방법 없나?
결론부터 말하자면, 없다. 애플에선 프로파일 설치 시간 같은 상세 정보를 제공해주지 않기에, 유일한 방법은 앱을 백그라운드로 계속 실행해서 프로파일이 지워지는지 여부를 체크하는 것이다. 하지만, IOS는 백그라운드로 앱을 계속 실행하는 것이 불가능하다.
그렇다면, 프로파일만 있으면 내 마음대로 할 수 있을까?
그렇다. 비콘을 찍었을 때 설치되는 프로파일을 추출해서 따로 사이드로드한다면, 내 마음대로 카메라를 잠궜다 풀었다 할 수 있다.
비콘을 찍은 뒤, 웹 서버가 열리는 잠시동안, 사파리가 아닌 다른 브라우저로 해당 주소로 접속하면 mobileconfig 가 설치되지 않고 Xml 형식의 문서로 열려 내용이 출력된다. 해당 Xml 문서를 저장하는 것으로 단순하게 프로파일을 추출할 수 있다.
그럴 줄 알고…! 업데이트
이 문제점을 드디어 깨달아버린 업체에서 업데이트를 진행했다.
카메라 비콘 활성화 버튼을 클릭했을 때, 프로파일 내 인증서의 생성 값을 이용해 시간을 대조하여 인증하는 방법이다. 다만, 이 방법도 뚫을 방법이 많아보이기는 한다.
그렇다면 해결 방법은?
앱 제작자의 관점에서, 가장 확실한 해결 방법은 서버를 두고 클라이언트의 프로파일 설치 여부를 체크하는 것이 가장 바람직하다. 가장 좋은 해결 방법이기도 하고, MDM의 본래의 사용법이기도 하다.
서버 상의 문제나, 표면 상의 문제로 해당 기능을 사용하기 어렵다면, 이중으로 프로파일을 만들어 배포하는 것이 좋은 대안이 될 수 있다. 예를 들어, 처음 설치 된 프로파일은, 프로파일을 설치하기 위한 프로파일이다. A 프로파일에서 해쉬 값을 추가하여 B 프로파일을 생성 후, 설치한다. 이때 앱에서 생성한 해쉬, A프로파일의 해쉬, B프로파일의 해쉬가 모두 동일해야한다. 그리고 이를 검사하는 것이다.
A프로파일을 받아두고 새로 B를 생성한다면 해쉬 값을 생성하는 시간의 오차가 발생하여 B 프로파일의 해쉬 값이 달라지게 된다. 이렇게 된다면 이를 앱 내에서 쉽게 감지할 수 있을 것이다.
'정보' 카테고리의 다른 글
[공식] 갤럭시 버즈 시리즈 윈도우와 연결 시키기 [PC버전 갤럭시 웨어러블] (0) | 2021.05.20 |
---|---|
신경망기반 이미지 업스케일링 프로그램 [waifu2x-caffee] (3) | 2021.05.16 |
카카오톡 광고 차단하기 (+ 카톡과 동시에 실행시키기) (0) | 2021.05.15 |