- 개발이 끝난 앱이라도 업데이터는 백그라운드 서비스로 남아 주인 없는 서버에 계속 접속할 수 있어요. 누가 그 도메인을 차지하느냐에 따라 내 PC가 봇넷의 일원이 될 수도 있어요.
- Popcorn Time 포크인 Time4Popcorn의 업데이터는 암호화되지 않은 HTTP와 낡은 크롬 엔진으로 돌고 있었어요. Eye Security는 도메인을 직접 등록해서 업데이터를 스스로 끄게 하는 업데이트를 200만 건 넘게 내려보냈어요.
- 안 쓰는 앱의 업데이터는 운영체제마다 찾는 곳이 달라요. 윈도우는 services.msc와 작업 스케줄러, 맥은 로그인 항목과 LaunchAgents 폴더, 안드로이드는 앱 목록에서 찾아 끄고 지우면 돼요.
앱 개발은 여러 해 전에 멈췄는데 업데이터는 멀쩡히 살아 있었어요. 토렌트 영상을 넷플릭스처럼 바로 틀어 주던 Popcorn Time의 포크, Time4Popcorn 얘기예요. 이 앱의 업데이터는 윈도우, macOS, 안드로이드 기기에 남아 버려진 도메인에 꼬박꼬박 접속하고 있었어요. 보안 업체 Eye Security는 이 업데이터를 ‘끄려고’ 업데이트를 직접 만들어 내려보냈고, 다운로드는 200만 건을 넘겼어요. 기능을 고치는 업데이트가 아니라 끄는 업데이트가 200만 건. 다운로드 횟수가 곧 기기 수는 아니지만, 이 업데이터가 아직 얼마나 많은 곳에서 돌고 있었는지 짐작하기엔 충분한 숫자예요.
해적판 앱 하나의 일로 넘기기 어려운 이유가 있어요. 예전에 깔아 놓고 잊은 프로그램의 업데이터가 서비스나 예약 작업 형태로 여러분 PC에도 남아 있을 수 있거든요. 순서는 이렇게 갈게요. 방치된 업데이터가 왜 위험한지 먼저 보고, 그다음 윈도우·맥·안드로이드에서 어디를 열어야 찾아서 끌 수 있는지.
도메인 하나만 잡으면 업데이터 전체가 손에 들어온다
데스크톱 앱 상당수는 본체 말고도 ‘업데이터’라는 작은 프로그램을 하나 더 깔아요. 윈도우에서는 부팅과 함께 켜지는 서비스나 예약 작업으로, 맥에서는 로그인할 때 뜨는 백그라운드 항목으로 등록되는 경우가 많죠. 앱 창을 한 번도 안 열어도 업데이터는 정해진 주소에 접속해 새 버전이 있는지 묻고, 있으면 받아서 설치해요. 개발자가 관리하는 동안에는 이만큼 편한 기능도 드물어요.
탈은 개발이 끝난 뒤에 나요. 개발자가 도메인 갱신을 멈추면 그 주소는 누구나 새로 등록할 수 있는 상태가 되거든요. 업데이터는 그런 사정을 모르고 같은 주소에 계속 질문을 보내요. 새 주인이 “이 파일을 설치해”라고 답하면? 평소 하던 대로 따르는 거죠. Eye Security가 Time4Popcorn 업데이터에서 확인한 위험 요소는 크게 세 가지였어요. 하나씩 떼어 놓고 봐도 문제인데, 셋이 한 프로그램 안에 한꺼번에 겹쳐 있었다는 게 더 고약해요.
- 주인 없는 도메인: 업데이터가 접속하는 도메인이 버려진 상태였어요. 그중 하나만 차지해도 업데이터가 깔린 기기 전체에 명령을 내릴 수 있어요. 봇넷을 꾸리는 데 별도의 해킹이 거의 필요 없는 셈이죠. 공격자 입장에선 도메인 등록이 사실상 침투 과정의 전부예요.
- 암호화되지 않은 HTTP 통신: 통신이 암호화돼 있지 않으면 중간에서 내용을 바꿔치기할 틈이 생겨요. 연구진 설명으로는 도메인을 차지하지 않아도 중간자 공격으로 특정 기기만 골라 노릴 수 있었어요. 첫 번째가 ‘전체를 한 번에’ 잡는 길이라면, 이쪽은 ‘한 대만 정확히’ 노리는 길이에요.
- 낡은 크롬 엔진: 이 소프트웨어는 오래되고 보안상 취약한 버전의 크롬 위에서 돌고 있었어요. 앱 안에 브라우저 엔진을 통째로 넣어 만든 프로그램은 PC에 깔린 크롬과 따로 움직여요. PC의 크롬을 아무리 최신으로 유지해도 앱 속 엔진에 알려진 취약점은 그대로 열려 있다는 얘기예요.
Eye Security의 Niels Teusink는 이 업데이터로 사실상 어떤 소프트웨어든 전체 권한으로 설치하고 실행할 수 있었다고 설명해요. 감시 용도로도 쓸 수 있었고요. 업데이터가 접속해 오는 기기만 봐도 누가 이 소프트웨어를 쓰는지 알아낼 수 있으니까요. 하나 더 짚어 둘게요. 윈도우 서비스는 일반 사용자보다 높은 권한의 시스템 계정으로 도는 경우가 많아요. 이런 업데이터가 뚫리면 피해가 앱 하나에서 끝나지 않는다는 점, 꼭 기억해 두세요.
공격자보다 한발 먼저 도메인을 등록한 연구진
연구진이 고른 방법은 단순해요. 공격자가 할 법한 일을 먼저 해 버리는 것. 버려진 도메인 하나를 직접 등록하고, 거기서 ‘스스로 꺼지라’는 내용의 업데이트를 내려보냈어요. 동의 없이 남의 컴퓨터에서 코드를 실행시키는 방식이라 윤리적 논란이 있다는 건 연구진도 알고 있었어요. 연구진 입장은 남은 선택지가 “아무것도 하지 않는 것”뿐이었다는 거예요. 업데이트 과정은 어차피 아무 기능도 하지 않으면서 사용자에게 위험만 만들고 있었다는 거죠. 수긍이 가는 논리예요. 손을 놓고 있으면 그 도메인은 언제든 다른 누군가가 등록할 수 있는 상태로 남으니까요. 전례도 있어요. FBI가 70만 대 넘는 컴퓨터를 감염시킨 봇넷을 스스로 제거하게 만든 사례처럼, 감염된 기기를 원격으로 ‘청소’하는 방식은 이전에도 쓰인 적이 있어요.
운영체제별 결과는 꽤 달랐어요. 표에서 ‘그대로 남은 것’ 칸을 눈여겨보세요. 연구진이 대신 처리해 준 일과 사용자가 직접 치워야 할 일이 거기서 갈려요.
| 운영체제 | 연구진 업데이트가 한 일 | 그대로 남은 것 | 사용자가 직접 할 일 |
|---|---|---|---|
| 윈도우 | 서비스 제어 관리자(Service Control Manager)로 업데이터 서비스를 중지하고 비활성화 | 파일은 하나도 지우지 않음 | 프로그램 제거, 서비스 상태 확인 |
| macOS | 셸 스크립트로 명령을 실행해 업데이트 프로세스가 시작되지 못하게 차단 | 앱 본체(지웠다는 설명 없음) | 앱과 백그라운드 항목 삭제 |
| 안드로이드 | 조치하지 않음(업데이트를 설치하려면 사용자가 직접 조작해야 해서) | 업데이터를 포함한 앱 전체 | 앱 직접 삭제 |
중간에 웃지 못할 일도 있었어요. 연구진의 업데이트 파일이 VirusTotal에 올라가면서 보안 프로그램들이 이걸 악성코드로 판정해 막기 시작한 거예요. 위험한 업데이터는 멀쩡히 돌고, 그걸 끄려는 업데이트만 차단되는 상황. 연구진은 업데이트를 고쳐야 했어요. 백신 입장에서는 ‘모르는 서버가 보낸, 서비스를 건드리는 실행 파일’이라 선의인지 악의인지 가리기 어려웠던 것으로 보여요. 백신을 탓하기도 애매한 대목이에요. 하는 동작만 놓고 보면 악성코드와 다를 게 별로 없으니까요. 연구진은 업데이트 다운로드가 200만 건을 넘긴 뒤 배포를 멈췄고, 쓰던 도메인은 웹 보안 비영리단체인 Shadowserver Foundation에 넘겼어요.
윈도우는 services.msc와 작업 스케줄러 두 곳을 본다
연구진이 윈도우에서 한 일, 그러니까 서비스를 멈추고 ‘사용 안 함’으로 바꾸는 건 손으로도 똑같이 할 수 있어요. 아래 경로는 윈도우 11 기준이고 윈도우 10 표기는 괄호에 적었어요. 운영체제 업데이트를 거치며 표기가 조금씩 바뀌기도 하니, 이름이 딱 맞지 않으면 비슷한 항목을 찾아보면 돼요.
- 설치된 앱부터 훑기: 설정 → 앱 → 설치된 앱(윈도우 10: 설정 → 앱 → 앱 및 기능)으로 가세요. 정렬을 ‘설치 날짜’로 바꾸면 오래전에 깔고 잊은 프로그램이 아래쪽에 모여요. 이름이 기억나지 않거나 게시자가 비어 있는 프로그램은 따로 메모해 두세요. 다음 단계에서 서비스 목록과 맞춰 볼 때 쓸 거예요.
- 서비스 확인: Win+R을 누르고
services.msc를 입력하세요. 목록에서 앱 이름이나 ‘Update’, ‘Updater’가 들어간 항목을 더블클릭하면 ‘일반’ 탭의 ‘실행 파일 경로’에 어느 프로그램 소속인지 나와요. 지울 앱의 업데이터가 맞다면 ‘시작 유형’을 ‘사용 안 함’으로 바꾸고 ‘중지’, ‘확인’ 순서로 누르면 끝. - 경로를 한 번에 보기: 서비스를 하나씩 열어 보기 번거로우면 PowerShell에서
Get-CimInstance Win32_Service | Where-Object StartMode -eq 'Auto' | Select-Object Name, State, PathName을 실행해 보세요. 자동으로 시작되는 서비스와 실행 파일 경로가 한 화면에 나와요. 볼 건 경로예요. C:\Windows\System32가 아니라 낯선 프로그램 폴더나 사용자 폴더 아래에 있는 항목부터 확인하면 돼요. - 명령어로 끄기: 관리자 권한 PowerShell에서
sc.exe stop 서비스이름을 실행한 다음sc.exe config 서비스이름 start= disabled를 실행하세요. 여기서 두 군데가 자주 걸려요. 하나, PowerShell에서 그냥sc라고 쓰면 파일에 내용을 쓰는 Set-Content의 별칭으로 처리되니 꼭sc.exe로 써야 해요. 둘,start=뒤에는 공백을 한 칸 넣어야 해요. 붙여 쓰면 명령이 먹히지 않아요. - 작업 스케줄러: 서비스만 보고 끝내면 반쪽짜리 점검이에요. 서비스 대신 예약 작업으로 업데이트를 확인하는 프로그램도 많거든요. 시작 메뉴에서 ‘작업 스케줄러’를 검색해 열고, 왼쪽 ‘작업 스케줄러 라이브러리’에서 앱 이름이 들어간 작업을 골라 오른쪽 ‘사용 안 함’을 누르면 돼요.
- 시작 앱: Ctrl+Shift+Esc로 작업 관리자를 열고 ‘시작 앱’(윈도우 10: ‘시작 프로그램’ 탭)에서 모르는 항목을 ‘사용 안 함’으로 바꾸세요.
주의할 점이 하나 있어요. 모르는 서비스라고 전부 꺼 버리면 그래픽 드라이버나 보안 프로그램이 고장 날 수 있어요. 경로로 소속 확인, 끄기, 재부팅 후 며칠 사용, 문제없으면 앱 제거. 이 순서가 안전해요. 앱을 지우면 딸린 서비스도 대개 같이 지워지는데, 서비스 목록에 여전히 남아 있다면 위 방법으로 꺼 두면 돼요.
맥은 LaunchAgents까지, 안드로이드는 직접 지우는 수밖에
맥에서 연구진은 업데이트 프로세스가 아예 시작되지 못하게 막았어요. 손으로 할 일도 방향은 같아요. 로그인할 때 저절로 뜨는 항목을 찾아서 끄는 것.
- 로그인 항목: 시스템 설정 → 일반 → 로그인 항목(macOS 15 이상: ‘로그인 항목 및 확장 프로그램’, macOS 12 이하: 시스템 환경설정 → 사용자 및 그룹 → 로그인 항목)으로 가세요. 아래쪽 ‘백그라운드에서 허용’ 목록에서 안 쓰는 앱의 스위치를 끄면 돼요.
- LaunchAgents 폴더: Finder → 이동 → 폴더로 이동(⇧⌘G)에서
~/Library/LaunchAgents,/Library/LaunchAgents,/Library/LaunchDaemons를 차례로 열어 보세요. 파일 이름에 앱 이름이나 제작사 이름이 들어간 .plist 파일이 자동 실행 설정이에요. 스위치만 끄는 1번보다 한 단계 더 깊이 들어가는 셈이죠. - 터미널로 내리기: 먼저
launchctl list | grep -i 앱이름으로 돌고 있는지 확인하세요. 사용자 폴더에 있는 항목은launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/파일이름.plist로, 시스템 폴더에 있는 항목은sudo launchctl bootout system /Library/LaunchDaemons/파일이름.plist로 내리면 돼요. /Library/LaunchAgents에 있는 항목은 로그인한 사용자 쪽에서 실행되니 첫 번째 명령에서 경로만 바꿔 쓰면 되고요. 그다음 plist 파일을 휴지통으로 옮기세요. - 앱 본체 삭제: 응용 프로그램 폴더에서 앱을 휴지통으로 옮기세요. 응용 프로그램 → 유틸리티 → 활성 상태 보기에서 같은 이름의 프로세스가 남아 있는지도 한 번 더 확인해 보고요.
안드로이드는 연구진이 아예 손대지 못한 영역이에요. 업데이트를 설치하려면 사용자가 직접 승인해야 해서 원격으로 끄는 방법이 통하지 않았거든요. 폰에 남아 있는 앱은 누가 대신 치워 주지 않는다는 뜻이에요. 사용자가 직접 지워야만 없어져요.
- 설정 → 애플리케이션(순정 안드로이드 계열: 설정 → 앱 → 모든 앱 보기) → 해당 앱 → 삭제.
- 설정 → 애플리케이션 → 오른쪽 위 ⋮ → 특별한 접근 → 출처를 알 수 없는 앱 설치로 가세요. 삼성 갤럭시 기준 경로이고, One UI 버전에 따라 ⋮ 메뉴 없이 목록에 바로 보이기도 해요. 순정 계열은 설정 → 앱 → 특별한 앱 액세스 → 알 수 없는 앱 설치예요. 여기서 파일 관리자나 브라우저에 준 설치 권한을 꺼 두세요. 앱을 지워도 이 권한이 열려 있으면 같은 경로로 또 들어올 수 있으니까요.
- Play 스토어 → 프로필 아이콘 → Play 프로텍트 → 스캔을 눌러 스토어 밖에서 설치한 앱까지 한 번 검사하세요.
Popcorn Time을 깔았던 PC, 서비스는 꺼져도 파일은 남는다
Popcorn Time은 ‘해적판의 넷플릭스’로 불렸고, 개발이 멈춘 뒤에도 수백만 대 기기에 설치된 채 남아 있어요. 업데이터가 돌던 기기도 세계 곳곳에 퍼져 있었고요. 그중 국내 기기가 몇 대였는지는 알려지지 않았어요. 숫자를 모른다고 안심할 일은 아니에요. 해외 토렌트 스트리밍 앱을 깔아 본 적이 있다면 점검 대상이라고 생각하는 게 맞아요.
- 윈도우에서 연구진 업데이트를 받았다면 업데이터 서비스만 꺼졌을 뿐 파일은 지워지지 않았어요. 프로그램 목록에 앱이 그대로 있다면 직접 제거해야 해요. 파일이 남아 있으니 앱 속 낡은 크롬 엔진도 그대로 있다고 보는 게 자연스러워요(추측). 앱을 다시 실행하면 그 엔진도 다시 돌 거예요.
- 백신이 연구진 업데이트를 막았을 수도 있어요. 수정 전 업데이트가 악성코드로 분류돼 차단된 기기라면 업데이터가 아직 켜져 있을 수 있어요(추측). 백신 기록에 관련 파일을 차단한 이력이 보이면 서비스 목록부터 열어 보세요.
- 안드로이드 폰은 아무 조치도 받지 않았어요. 스토어 밖에서 APK 파일로 앱을 설치한 적이 있다면 앱 목록부터 확인하세요.
- 해적판 앱만의 문제도 아니에요. 한국 PC에는 은행·공공기관 사이트를 쓰면서 깔린 보안 프로그램이나 예전 업무용 유틸리티처럼 서비스로 상주하는 프로그램이 많이 쌓이는 편이에요. 이런 프로그램이 위험하다는 뜻은 아니에요. 더는 쓰지 않는 사이트용이라면 같은 방법으로 정리해 두는 편이 공격받을 틈을 줄이는 길이라는 얘기예요.
확인된 것과 아직 불확실한 것
확인된 것
- Time4Popcorn 업데이터는 윈도우·macOS·안드로이드 기기에서 동작하면서 버려진 도메인에 암호화되지 않은 HTTP로 접속하고 있었다.
- 이 소프트웨어는 오래되고 보안상 취약한 버전의 크롬으로 돌고 있었다.
- 연구진은 도메인 하나를 등록해 업데이터를 스스로 비활성화하는 업데이트를 보냈다. 윈도우에서는 파일을 지우지 않고 서비스만 멈추고 비활성화했고, macOS에서는 업데이트 프로세스가 시작되지 못하게 막았다.
- 안드로이드는 업데이트를 설치하려면 사용자가 직접 조작해야 해서 조치 대상에서 빠졌다.
- VirusTotal에 업로드된 뒤 보안 프로그램들이 연구진 업데이트를 악성으로 분류해서 연구진이 업데이트를 고쳐야 했다.
- 업데이트 다운로드가 200만 건을 넘긴 뒤 배포를 멈췄고, 쓰던 도메인은 Shadowserver Foundation에 넘어갔다.
아직 불확실한 것
- 실제로 위험에 노출됐던 기기 수. 200만 건은 다운로드 횟수라서 기기 수와 같다고 볼 수 없다.
- 업데이터가 접속하던 도메인이 전부 확보됐는지. 원문에는 연구진이 도메인 하나를 등록했고, 쓰던 도메인을 넘겼다는 내용만 있다.
- 연구진보다 먼저 누군가 이 업데이터를 악용한 적이 있는지.
- 백신 차단 때문에 비활성화 업데이트를 받지 못한 기기가 얼마나 되는지.
남길 앱과 지울 앱을 가르는 네 가지 기준
방치된 업데이터 문제는 ‘이 프로그램을 아직 누가 관리하고 있나’라는 질문 하나로 모여요. 점검하다가 지울지 말지 애매한 프로그램이 나오면 아래 네 가지를 차례로 따져 보세요.
- 마지막 배포가 언제였나: 공식 사이트나 배포 페이지에서 마지막 버전이 언제 나왔는지 확인하세요. 몇 년째 새 버전이 없다면 업데이터도 관리되지 않고 있을 가능성이 커요.
- 공식 도메인이 살아 있나: 앱에 적힌 홈페이지 주소에 들어갔는데 도메인 판매 페이지나 전혀 엉뚱한 내용이 뜬다면 위험 신호예요. Time4Popcorn처럼 업데이터가 접속하는 주소도 이미 남의 손에 넘어갔을 수 있어요.
- 디지털 서명이 있나: 윈도우에서는 실행 파일을 오른쪽 클릭 → 속성 → ‘디지털 서명’ 탭에서 서명한 곳을 확인할 수 있어요. 이 탭이 아예 없으면 서명되지 않은 파일이에요. 맥에서는 터미널에서
spctl -a -vv /Applications/앱이름.app을 실행하면 승인 여부와 출처가 나와요. - 업데이터를 꺼도 불편한 게 없나: 개발이 끝난 앱의 업데이터는 받아 올 새 버전 자체가 없어요. Eye Security 연구진 말대로 기능은 없고 위험만 남은 상태라면 망설일 이유가 없어요. 끄세요.
거창한 보안 도구까지 갈 필요는 없어요. 몇 달에 한 번 ‘설치된 앱’을 설치 날짜순으로 정렬해서 아래쪽을 훑어보는 것. 그 습관만 들여도 주인 잃은 업데이터가 PC에 몇 년씩 눌러앉는 일은 대부분 막을 수 있어요.
출처: The Verge

