전 세계가 증강현실 포켓몬 트레이너들로 뒤덮였습니다. 수백만 명의 사람들이 자신이 사는 동네 곳곳을 누비며 '모두 잡기'에 열을 올리고 있죠. 오랜 기다림 끝에 공개된 포켓몬 시리즈의 신작은 소파에만 앉아 있던 예비 트레이너들을 거리로 불러냈고, 포켓몬 열풍이 이미 끝났다고 여겼던 어른들의 추억심장을 크게 흔들어 놓았습니다.
포켓몬 GO와 그 전신인 Ingress를 개발한 나이앤틱(Niantic)은 지금 경험하고 있는 전례 없는 성공에 들뜬 기분일 것입니다. 물론 Ingress도 나름의 인기를 얻었지만, 포켓몬 GO가 이룬 글로벌한 성공에는 한참 미치지 못했습니다. 역시 브랜드 인지도란 강력한 무기인 모양입니다.
하지만 성공 뒤에는 시련이 따르기 마련입니다. 나이앤틱은 Ingress 초기의 시행착오에서 교훈을 제대로 얻지 못한 듯 보입니다. 갑작스러운 성공이 그들 스스로도 놀라웠던 것 같습니다. 닌텐도의 시가총액을 약 90억 달러나 끌어올렸음에도 불구하고, 여전히 풀어야 할 숙제들이 많이 남아 있습니다.
'어떻게 하면 거실에 리자몽을 불러낼 수 있을까', '왜 우리 동네엔 두두밖에 없지?' 같은 가벼운 질문들 사이에는 훨씬 심각한 문제들도 도사리고 있습니다. 재패키징된 포켓몬 GO APK를 통해 퍼지는 안드로이드 악성코드에 대한 광범위한 신고와, 익숙하지 않은 지역까지 포켓몬을 찾아 나섰다가 고가의 스마트폰을 강탈당했다는 사건들이 그것입니다.
지금부터 하나씩 자세히 살펴보겠습니다.
악성 포켓몬 GO APK 조심
포켓몬은 저에게 굉장히 특별한 추억입니다. 레드와 블루 버전을 몇 년씩 매달려 플레이했고, TV 애니메이션도 빠짐없이 챙겨봤으며, 최초의 150마리 포켓몬이 담긴 '세상에서 제일 멋진' 포스터를 벽에 자랑스럽게 걸어두기도 했습니다. 하지만 지금 상황은 다릅니다.
저와 비슷한 배경을 가진 많은 사람들이 게임에 대한 열망을 오랫동안 접어뒀다가, 증강현실 버전의 등장에 마음의 방어선이 무너졌습니다. 그런데 문제는 나이앤틱이 포켓몬 GO를 지역별로 잠가놓았다는 점입니다. 미국, 호주, 뉴질랜드 외의 지역 사용자들은 공식 버전이 각국 앱 스토어에 출시될 때까지는 원칙적으로 플레이할 수 없었습니다.
물론 이런 제약이 잘 통할 리 만무했습니다. 영국에서는 구글 플레이 스토어나 앱 스토어에 게임이 올라오지 않았지만, 사용자들은 금방 우회 방법을 알아냈습니다. 수많은 포켓몬 GO APK(안드로이드 애플리케이션 패키지)가 각종 APK 저장소에 업로드되었고, 심지어 'APK'로 검색하면 포켓몬 GO 관련 링크만 주르륵 나올 정도였습니다.
그리고 해커들은 이 상황을 절호의 기회로 삼았습니다. 공식 출시를 기다리지 못하는 사용자들을 노려, 심각하게 악성화된 코드가 심어진 APK를 올린 것입니다.
경각심 없는 사용자의 기기에 일단 다운로드되면, APK가 설치되는 순간 악성코드가 즉시 실행됩니다. 여러분이 잡은 건 포켓몬이 아니라 전혀 다른 무언가일지도 모릅니다.
RAT를 잡았다!
꼬렛이 아니라 Remote Access Tool, 즉 원격 접속 도구(RAT)입니다. 보안업체 Proofpoint의 연구원들이 발견한 이 악성코드의 이름은 'Droidjack'으로, 'SandroRAT'라고도 불립니다. 시만텍(Symantec)과 카스퍼스키(Kaspersky)가 과거에 상세히 분석한 바 있는 이 안드로이드 악성코드는, 감염된 APK가 설치된 안드로이드 기기 전체에 대한 원격 접근 권한을 공격자에게 넘겨줍니다. Proofpoint는 자신의 안드로이드 기기가 감염되었는지 확인하는 두 가지 방법을 제시했습니다.
- APK의 SHA256 해시값 확인: 정상 포켓몬 GO APK의 해시값은 8bf2b0865bef06906cd854492dece202482c04ce9c5e881e02d2b6235661ab67이어야 합니다. Proofpoint가 발견한 악성 APK의 해시값은 15db22fd7d961f4d4bd96052024d353b3ff4bd135835d2644d94d74c925af3c4입니다.
- 권한 설정 확인: 안드로이드 기기에서 설정 > 애플리케이션 > 포켓몬 GO로 이동한 뒤 아래로 스크롤하여 권한 항목을 확인합니다. 정상 APK가 요구하는 권한 목록과, 악성 APK가 추가로 획득한 권한을 비교해 보면 됩니다.
정상적인 포켓몬 GO가 요구하는 권한은 다음과 같습니다.
반면 악성 포켓몬 GO의 권한 첫 번째 페이지는 이렇습니다.
그리고 두 번째 페이지입니다.
감염 사실을 확인했다면 즉시 해당 앱을 삭제하고 악성 APK 파일까지 완전히 제거하세요. 이후 구글 플레이 스토어에서 Avast Mobile Security를 내려받아 기기를 검사하고, 이어서 Malwarebytes Anti-Malware도 설치해 한 번 더 검사하는 것이 좋습니다.
두 검사에서 발견된 악성 요소는 모두 삭제하시기 바랍니다. 평소 안드로이드 기기 백업을 성실히 해왔다면 시스템 전체 이미지를 복원할 수도 있습니다. 이 경우라면 악성코드를 말끔히 없애는 또 하나의 훌륭한 선택지가 됩니다.
SHA256 해시 확인 방법
윈도우 사용자라면 별도 프로그램을 다운로드하거나 설치할 필요 없이 간편하게 확인할 수 있습니다.
관리자 권한으로 명령 프롬프트를 연 뒤, 아래 명령어로 해시값을 생성합니다.
certUtil -hashfile 파일경로입력 [해시 알고리즘]
해시 알고리즘은 MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512 중에서 선택할 수 있습니다. 이번 경우에는 SHA256 옵션을 사용하세요.
생성된 해시값을 Proofpoint가 공개한 값과 비교하면 됩니다.
기타 문제: iOS 권한 논란
여러 문제 중에서도 가장 큰 화두는 iOS 기기에서의 포켓몬 GO 앱 권한이었습니다. 대부분의 앱이 정상 작동을 위해 어느 정도의 권한을 요청하지만, 포켓몬 GO는 프라이버시 경계를 크게 넘어선 것으로 보였습니다(다만 실제로는 오해였습니다! 당황하기 전에 다음 섹션을 먼저 읽어주세요). 통상적으로 요구되는 이름, 이메일 주소, 위치 정보 수준을 넘어, 포켓몬 GO와 나이앤틱이 사용자의 구글 계정 전체에 접근 권한을 요청하고 얻어낸 것으로 밝혀졌기 때문입니다. 이는 구글 드라이브, 개인 지메일 계정, 휴대폰 내용물 등에 접근할 수 있고, 심지어 해당 사용자 명의로 이메일을 보낼 수도 있다는 의미였습니다.
나이앤틱은 Gizmodo에 다음과 같은 공식 입장문을 냈습니다.
"최근 iOS에서 포켓몬 GO 계정 생성 과정이 사용자의 구글 계정에 대한 전체 접근 권한을 잘못 요청한다는 사실을 확인했습니다. 그러나 포켓몬 GO는 기본적인 구글 프로필 정보(사용자 ID와 이메일 주소)에만 접근하며, 그 외의 구글 계정 정보는 접근하거나 수집한 적이 없습니다. 이 오류를 인지한 후, 저희는 실제로 접근하는 데이터 범위에 맞춰 기본 프로필 정보만 요청하도록 클라이언트 측 수정 작업을 시작했습니다. 구글은 포켓몬 GO나 나이앤틱이 다른 정보를 받거나 접근한 사실이 없음을 확인해 주었습니다. 구글은 곧 포켓몬 GO의 권한을 필요한 기본 프로필 데이터 수준으로 축소할 예정이며, 사용자가 직접 조치할 필요는 없습니다."
'안심이 되지만, 그래서 어떻게 이런 일이 생긴 거지?' 하는 양날의 느낌이 드는 대응이지만, 적어도 빠르게 수정될 예정이라는 점은 다행입니다. 이제 다음 섹션을 읽으면 좀 더 마음이 편해질 겁니다.
구글 기술 지원팀의 답변
보안업체 Trail of Bits의 CEO인 댄 귀도(Dan Guido)는 이 주장에 의문을 제기했습니다. 나이앤틱이 조사 결과와 클라이언트 측 수정 계획을 담은 공식 발표를 내놓았음에도, 귀도는 "해당 블로그 포스트의 상당 부분이 틀렸을 수 있다"고 보았습니다.
실제로 Slack의 제품 엔지니어가 해당 서비스가 제공하는 OAuth 토큰을 직접 테스트한 결과, 이 토큰이 사용자의 구글 계정에 연결된 비공개 서비스나 추가 데이터에 대한 어떠한 접근 권한도 부여하지 않는다는 사실이 확인되었습니다.
기타 문제: 치안과 안전
포켓몬 GO와 직접 관련된 사건·사고에 경찰이 출동하는 일이 여러 차례 있었습니다. 대부분의 사건은 포켓몬 트레이너가 사람 드문 곳까지 포켓몬을 잡으러 갔다가, 기습적으로 덮친 도둑에게 스마트폰을 빼앗기는 형태였습니다.
일부 신고에 따르면 도둑들은 포켓몬 GO 앱 자체를 활용하기도 했습니다. 지역 지도에 포켓몬이 나타나는 위치를 파악한 뒤 그 장소로 이동해 매복하는 방식입니다. 또 다른 사례들은 평소에는 접근조차 하지 않을 지역까지, 희귀 포켓몬이나 평소 잘 만나지 못하는 포켓몬을 노리고 들어갔다가 피해를 입은 경우입니다.
제가 Ingress를 플레이하던 시절에도 이런 불쾌한 사건은 드물지만 종종 있었습니다. 다만 대개는 진영 간의 견제 놀이 수준이었지, 외부인이 플레이어를 털거나 반짝반짝한 스마트폰을 든 사람의 위치를 앱으로 추적·감시하는 경우는 드물었습니다. 물론 제가 그의 홈 포탈을 파괴한 뒤 어느 날 밤 내 차 옆에서 기다리고 있던 남자가 있었다는 얘기는... 다음 기회에 하겠습니다.
조언: 부디 현명하게 행동하세요. 포켓몬은 허구의 존재라서 없어도 삶에 지장이 없지만, 목숨은 이야기가 다릅니다. 그리고 폭력적인 강도 사건이 기대수명을 크게 단축시킨다는 것은 누구나 아는 사실이죠. 농담은 이쯤 하고, 포켓몬 GO 스캐너만 들여다보며 길을 걷지 마세요. 실제 세계의 주변 상황을 항상 인지하고, 평소에 가지 않을 장소는 탐험하지 않는 것이 좋습니다. 포켓몬은 현실 세계에서 여러분을 지켜주지 못합니다.
훈훈한 경찰 이야기
반대로 웃픈(?) 에피소드도 있습니다. 배회하는 플레이어들을 불심 검문하러 나온 경찰이 상황을 파악하고는 함께 포켓몬 사냥에 동참했다는 이야기들이 전해졌습니다. 증강현실 게임은 아직도 많은 사람들에게, 그리고 경찰관들에게도 낯선 것이니까요. 평소 마약상들이 드나드는 묘지 주변을 어슬렁거린다면 당연히 물음을 받을 겁니다. 그럴 땐 정중하게 자신이 무엇을 하는지 설명해 주세요.
Droidjack은 사이드로드를 사용한다… 치명타다!
서명되지 않고 검증되지 않은 APK를 안드로이드 기기에 받아들이는 순간, 여러분은 악성코드를 집 앞까지 초대하는 셈입니다. 구글 플레이 스토어 밖에서 APK를 즐겨 받는 사용자들에게 "절대 하지 마세요, 100% 악성코드에 걸립니다"라고 말하고 싶지는 않습니다. 그건 사실이 아니니까요.
하지만 Proofpoint의 지적에는 동의합니다. "이것은 극도로 위험한 행위이며, 사용자가 자신의 모바일 기기에 악성 앱을 손쉽게 설치하게 만들 수 있습니다… 백도어가 심어진 APK, 예컨대 우리가 발견한 것과 같은 파일을 제3자로부터 다운로드하는 순간, 그 기기는 이미 장악당한 것과 다름없습니다."
결국 신뢰할 수 없는 출처에서 소프트웨어를 내려받고 설치하기 전에 충분히 검증할 책임은 사용자 본인에게 있습니다. 과거 웨어즈(warez)로 유통되는 소프트웨어가 바이러스 감염의 지름길로 여겨졌던 시절에도, 결정적인 변수는 결국 유통 경로였습니다. APK 배포 사이트도 마찬가지입니다.
마찬가지로, 출처를 알 수 없는 APK를 사용자에게 적극적으로 권유하는 사이트들은 분명히 더 신중해야 마땅합니다.
로켓단을 피하세요
로켓단의 로이와 로사(그리고 나옹!)는 실제 게임에는 등장하지 않지만, 여러분 스스로 불행한 상황에 빠지지 않도록 각별히 주의하시기 바랍니다. 한마디로 정리하면: 그런 수고는 감수할 가치가 없습니다.
언젠가 여러분도 '진짜 최고의 트레이너'가 될 날이 올 겁니다.
포켓몬 GO를 비공식 경로로 받아본 적이 있으신가요? 혹시 곤란한 일을 겪으셨나요? 여러분의 이야기를 댓글로 들려주세요!