2026년 7월 16일, Group-IB가 공개한 macOS 악성코드 분석 보고서에는 낯선 장면이 하나 있다. 피해자가 비밀번호 입력을 거부한 뒤에 벌어지는 일이다.
악성코드는 물러나지 않았다. 대신 다음 로그인부터 Finder와 Dock과 Spotlight를 210밀리초마다 강제로 종료하기 시작했다. 터미널도, 활성 상태 보기도, 브라우저도 함께 죽었다. 화면에 남은 것은 비밀번호를 묻는 상자 하나뿐이었다.
버티면 이긴다는 계산이 아니었다. 버틸 수 없게 만드는 계산이었다.
배경: 취약점을 쓰지 않는 악성코드
ClickLock이라 이름 붙은 이 악성코드는 셸 스크립트 기반이며, 제로데이 취약점도 권한 상승 기법도 사용하지 않는다. 필요한 것은 사용자의 손가락 하나다.
유입 경로는 ClickFix로 알려진 수법이다. 정상적인 사이트처럼 보이는 페이지가 "사람인지 확인" 절차를 요구하고, 진행 표시줄 위에 가짜 Cloudflare 인증 배너를 띄운다. 그리고 확인을 마치려면 제시된 명령을 복사해 터미널에 붙여넣으라고 안내한다. 붙여넣는 순간 악성 셸 스크립트가 실행되고, 추가 모듈이 내려온다.
macOS 사용자가 상대적으로 안전하다고 여겨온 이유는 대부분 취약점 악용의 난이도에 근거했다. ClickLock은 그 전제를 우회한다. 시스템을 뚫는 대신 사용자를 설득하고, 설득이 안 되면 압박한다.
공격 전개: 거부가 방어가 되지 않는 구조
스크립트가 실행되면 악성코드는 곧바로 macOS 로그인 비밀번호를 요구한다. 시스템이 띄운 것처럼 보이는 대화상자를 위장해 쓰기 때문에, 이 시점에서 이상함을 알아채기는 쉽지 않다.
여기서 사용자가 취소를 누르면 어떻게 될까. 상식적으로는 공격이 실패한 것이다. 실제로는 아니다. 악성코드는 조용히 물러나면서 LaunchAgent 두 개를 심어둔다. 하나는 자격증명 탈취 모듈을, 다른 하나는 Keychain 탈취 모듈을 담당한다. 그리고 터미널을 닫아도, 맥을 재시작해도 다음 로그인에 다시 살아난다.
압박은 그다음부터다. 두 모듈은 각각 강제 종료 루프를 돌린다. 자격증명 탈취 쪽은 약 83시간, Keychain 쪽은 최대 34.7일까지 이어진다. 사흘 넘게, 길게는 한 달 넘게 맥이 정상적으로 쓰이지 않는다는 뜻이다.
동시에 알림 센터를 약 6시간 동안 종료해 시스템 경고가 눈에 띄지 않게 만든다. 사용자는 무엇이 잘못됐는지 알려주는 창구를 잃은 채, 앱이 계속 튕기는 화면과 비밀번호 입력란만 마주하게 된다.
사용자가 결국 비밀번호를 입력하면 수집이 시작된다. 브라우저 자격증명과 Keychain은 물론, 비밀번호 관리자 7종과 암호화폐 지갑 확장 31종, 데스크톱 지갑 8종, 셸 히스토리와 파일 전송 도구의 접속 정보까지 대상에 포함된다. 1Password와 Bitwarden, MetaMask와 Coinbase Wallet 같은 널리 쓰이는 도구들이 목록에 올라 있다.
피해와 결과
Group-IB의 원격 분석에 따르면 2026년 5월 이후 약 두 달 동안 33개국에서 최소 100명의 피해자가 확인됐다. 절반 이상이 유럽에 몰려 있다. 검체가 VirusTotal에 처음 올라온 시점은 2026년 6월 9일이다.
100명이라는 숫자는 대규모 유출 사고에 비하면 작다. 다만 이 수치는 지금까지 확인된 감염자이지 노출 가능한 대상의 규모가 아니다. ClickFix 계열 수법은 특정 기업이나 지역을 겨냥하지 않고 검색과 광고를 통해 무차별로 뿌려지며, 터미널에 명령을 붙여넣을 수 있는 맥 사용자라면 누구나 같은 자리에 설 수 있다.
피해의 성격도 짚어둘 만하다. 탈취 목록의 중심에 비밀번호 관리자와 암호화폐 지갑이 있다는 것은, 한 번의 붙여넣기가 단일 계정이 아니라 그 사람이 관리하던 자격증명 전체로 번질 수 있다는 뜻이다.
탐지 관점
이 악성코드는 은밀함보다 압박을 택했기 때문에 오히려 뚜렷한 흔적을 남긴다.
가장 눈에 띄는 것은 강제 종료 루프 자체다. 시스템 프로세스와 사용자 앱이 초 단위로 반복해 종료되고 재실행되는 패턴은 정상적인 사용 환경에서 나오지 않는다. 이 동작이 로그인 직후부터 며칠간 지속된다는 점도 일반적인 앱 충돌과 구분되는 특징이다.
지속성 확보 방식도 기록에 남는다. 로그인 시점에 실행되도록 등록된 사용자 LaunchAgent가 새로 생기고, 그 항목이 셸 스크립트를 가리키는 구성은 추적 가능한 변화다. 알림 센터가 장시간 종료된 상태로 유지되는 것 역시 정상 동작이 아니므로 함께 관찰된다.
유입 단계에서는 터미널 실행 이력이 단서가 된다. 사용자가 웹 페이지의 안내를 따라 명령을 붙여넣는 방식이므로, 브라우저 사용 직후 터미널에서 외부 주소로 연결하는 스크립트가 실행된 조합은 정상 작업 흐름에서 흔치 않다.
왜 이 사건이 중요한가
ClickLock이 보여주는 것은 새로운 취약점이 아니라 새로운 전제다. 지금까지 사용자의 거부는 방어의 마지막 선이었다. 수상한 창이 뜨면 취소를 누르는 것으로 충분하다고 배워왔다.
이 악성코드는 그 선을 공격 대상으로 삼는다. 거부를 실패로 받아들이지 않고, 거부한 사용자가 일상을 이어갈 수 없게 만든 다음 같은 질문을 반복한다. 기술적으로는 단순한 반복 종료 루프지만, 결과적으로는 사용자의 판단을 소모시켜 무너뜨리는 설계다.
국내 환경에도 적용되는 지점이 있다. 맥을 업무에 쓰는 개발자와 디자이너, 그리고 암호화폐 지갑과 비밀번호 관리자를 함께 쓰는 사용자층이 이 악성코드가 노리는 조합과 정확히 겹친다. 특히 ClickFix 계열 수법은 언어와 지역을 가리지 않고 퍼지기 때문에, 국내 사용자가 예외가 될 이유는 없다.
한 가지 더. 이 공격에는 뚫어야 할 취약점이 없었다. 패치로 막히는 종류의 문제가 아니라는 뜻이다.
참고 자료
관련 글 더 보기
안내 및 법적 고지
AI 활용 안내
이 글은 AI(Claude)의 도움을 받아 작성되었습니다.
인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항
본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다.
언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라
처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.