클로드 코드 버디 가챠 해킹하기 — 레전더리 뽑아드림

📺 원본 영상: 클로드 코드 버디 가챠 해킹하기. 레전더리 뽑아드림 🎙️ 채널: 코드팩토리 📅 정리 일자: 2026-04-02 ⚠️ Note: 본 리포트는 영상의 음성을 텍스트로 변환(STT)하여 정리한 것입니다. 화면에 표시된 자료(차트, 코드, 슬라이드 등)는 포함되지 않을 수 있습니다.


개요

이 영상은 두 개의 축으로 구성된다. 전반부는 Claude Code의 /buddy 시스템이 겉으로는 “가챠(뽑기)“처럼 보이지만 실제로는 사용자 ID와 솔트(salt) 문자열의 해시값으로 결과가 고정되어 있다는 사실을 파고들며, 이를 브루트포스(Brute Force) 방식으로 원하는 조합을 만들어내는 방법을 시연한다. 후반부는 이 원리를 이해하기 위한 배경 지식으로서 해싱(Hashing), 솔트(Salt), bcrypt, 레인보우 테이블(Rainbow Table) 공격까지 아우르는 인증 보안 강의로 확장된다. 단순한 “꼼수 소개”에 그치지 않고, 왜 그 꼼수가 작동하는지와 왜 한계가 있는지를 보안 원리 수준에서 설명한다는 점에서 실용성과 교육적 가치를 함께 갖춘 영상이다.


Part 1: 가챠가 아니었다 — 버디 시스템의 내부 구조

운명은 이미 정해져 있다

많은 사용자들이 Claude Code의 /buddy 명령어를 처음 실행하면 자신의 “버디 캐릭터”가 랜덤으로 결정된다고 생각한다. 강연자도 처음에는 언커먼(Uncommon) 티어라는 아쉬운 결과를 받았다고 털어놓는다. 그런데 커뮤니티 채널에서 레전더리 샤이니(Legendary Shiny) 티어 인증 사진들이 쏟아지기 시작하면서 강연자는 의문을 품게 된다 — 정말로 랜덤인가?

파고들어보니 구조는 단순하고 명확했다. 버디 시스템은 사용자 ID와 솔트 문자열을 조합하여 해싱하고, 그 결과값으로 버디의 종(species), 희귀도(rarity), 외형 등을 결정한다. 즉, 회원가입 순간부터 결과는 이미 확정되어 있고, 가챠처럼 실행할 때마다 새로 “뽑히는” 것이 아니다. 이것은 인증 시스템에서 흔히 쓰이는 방식과 동일한 원리이기도 하다.

브루트포스로 원하는 버디 만들기

여기서 강연자가 발견한 핵심 통찰은 이렇다: 사용자 ID는 바꿀 수 없지만, 솔트 문자열은 교체할 수 있다. 솔트를 반복적으로 바꿔가며 원하는 결과값이 나올 때까지 탐색하는 것, 이것이 바로 브루트포스 서치(Brute Force Search)다. 비밀번호를 탈취할 때 가장 원시적이면서도 확실한 방법으로 알려진 그 기법이 여기에 그대로 적용된다.

Claude Code 버디 커스터마이징 도구의 실행 명령어를 화면에 표시

00:38 - Claude Code 버디 커스터마이징 도구의 실행 명령어를 화면에 표시

시연 과정을 따라가면 구체적인 작동 흐름이 보인다. 명령어를 붙여넣고 실행하면 터미널 UI(TUI)가 열리며, 사용자는 종(예: 드래곤), 눈 모양, 희귀도, 모자 등을 직접 선택할 수 있다. 강연자는 드래곤 종에 반짝이는 눈, 레전더리 희귀도, 크라운 모자, 그리고 샤이니 옵션까지 선택했다. 샤이니는 기존 1% 확률에 1%를 추가로 곱하는 옵션이므로, 레전더리(1%)의 샤이니는 결과적으로 0.01%의 확률에 해당한다. 희귀도가 낮을수록 조건에 맞는 솔트를 찾아내는 데 시간이 더 걸리지만, 강연자에 따르면 레전더리 샤이니 조합도 1분 이내에 완료됐다.

명령어 실행 후 TUI(터미널 UI) 창이 열리며 종/눈/희귀도/모자 선택 화면

02:15 - 명령어 실행 후 TUI(터미널 UI) 창이 열리며 종/눈/희귀도/모자 선택 화면 표시

솔트 탐색 진행 상황 — 100만 번 시도, 8코어 CPU 활용 결과 및 버디 생성 완료 화면

03:14 - 솔트 탐색 진행 상황 — 100만 번 시도, 8코어 CPU 활용 결과 및 버디 생성 완료 화면

탐색이 완료되면 찾아낸 솔트값이 즉시 적용되고, 그 결과로 “잉크블라시(Inkblasi)“라는 이름의 드래곤 타입 버디가 화면 하단에 나타나는 것을 확인할 수 있다.

한계와 후크(Hook) 적용

그러나 이 방법에는 명확한 한계가 있다. 강연자가 직접 강조하듯, 이 변경은 영구적이지 않다. 버디는 계정에 바인딩된 해시값으로 결정되기 때문에, Claude Code가 업데이트될 때마다 원래 값으로 리셋될 수 있다. 이를 우회하는 방법으로 오토패치 후크(Auto Patch Hook) 설정이 제공된다. 이 후크를 활성화하면 Claude Code가 업데이트될 때마다 자동으로 솔트를 재적용하여 커스텀 버디를 유지한다. 강연자 본인은 후크를 적용하지 않는 것을 선택했지만, 원한다면 설정 가능하다고 안내한다.


Part 2: 왜 그렇게 작동하는가 — 해싱과 인증 보안의 원리

비밀번호를 저장하지 않는다는 것의 의미

버디 시스템의 원리를 이해하려면 먼저 인증 시스템에서 해싱이 왜 필요한지를 알아야 한다. 강연자는 이를 주니어 개발자 교육에서 오랫동안 사용해온 스토리라인으로 풀어낸다.

시나리오는 이렇다. 사용자가 A 사이트와 B 사이트에 동일한 이메일과 비밀번호 조합으로 가입했다고 가정하자. A 사이트의 데이터베이스가 해킹당해 이메일과 비밀번호가 평문(plain text)으로 유출된다면, 해커는 그 조합을 그대로 B 사이트에 입력해 로그인을 시도할 수 있다. 실제로 많은 사람들이 여러 사이트에 동일한 자격증명을 사용하기 때문에, 하나의 데이터베이스 침해가 사용자의 모든 계정 침해로 이어지는 연쇄 피해가 발생한다.

A 사이트와 B 사이트의 동일 이메일·비밀번호 조합 재사용 문제를 설명하는 슬라이드

05:09 - A 사이트와 B 사이트의 동일 이메일·비밀번호 조합 재사용 문제를 설명하는 슬라이드

이 문제를 해결하기 위해 도입된 것이 해싱이다. 해싱 알고리즘은 임의의 입력값을 받아 고정된 길이의 완전히 다른 문자열로 변환한다. 중요한 특성은 두 가지다. 첫째, 동일한 입력은 항상 동일한 출력을 낸다. 둘째, 역방향 연산이 사실상 불가능하다 — 기술적으로 복원 가능성이 0은 아니지만, 현실적인 시간 안에 되돌릴 수 없다. 이 단방향성이 블록체인의 무결성 보장 방식과도 유사한 원리라고 강연자는 덧붙인다.

원본 비밀번호 123123이 해싱 알고리즘을 거쳐 완전히 다른 문자열로 변환되는 예시 슬라이드

06:01 - 원본 비밀번호 123123이 해싱 알고리즘을 거쳐 완전히 다른 문자열로 변환되는 예시 슬라이드

따라서 현대적인 시스템은 원본 비밀번호를 데이터베이스에 저장하지 않는다. 사용자가 비밀번호를 입력하면 이를 해시로 변환해 저장하고, 로그인 시에는 입력된 비밀번호를 다시 해시한 뒤 저장된 해시값과 비교한다. 이 때문에 서비스 제공자조차 사용자의 원본 비밀번호를 알 수 없으며, 비밀번호를 분실했을 때 “알려드리는” 것이 불가능하고 “재설정”만 가능한 이유가 여기에 있다.

레인보우 테이블 공격과 솔트의 등장

해싱만으로는 완전하지 않다. 해커들은 “딕셔너리 어택(Dictionary Attack)“이라는 기법으로 이를 우회한다. 핵심 아이디어는 사전 계산이다. 123123, password, abcabc 처럼 전 세계에서 가장 많이 쓰이는 수천억 개의 비밀번호를 미리 전부 해시해두고, 이를 레인보우 테이블(Rainbow Table)이라는 대조표로 만들어두는 것이다. 탈취한 데이터베이스의 해시값과 레인보우 테이블의 해시값을 비교하면, 일치하는 항목에서 원본 비밀번호를 역으로 찾아낼 수 있다.

레인보우 테이블의 구조 — 미리 해시된 비밀번호 조합 목록과 탈취 데이터베이스 비교 과정 슬라이드

08:37 - 레인보우 테이블의 구조 — 미리 해시된 비밀번호 조합 목록과 탈취 데이터베이스 비교 과정 슬라이드

이 공격을 무력화하기 위해 도입된 것이 솔트(Salt)다. 솔트는 원본 비밀번호 뒤에 덧붙이는 추가적인 임의 문자열이다. 예를 들어 123123이라는 비밀번호에 코드팩토리라는 솔트를 붙이면 123123코드팩토리라는 전혀 다른 문자열이 되고, 이를 해시한 결과는 기존 레인보우 테이블 어디에도 존재하지 않는다. 솔트가 무엇인지 모르는 이상 수천억 개의 조합을 미리 계산해두는 것 자체가 불가능해지기 때문이다.

bcrypt의 “고의적 느림”이라는 역발상

그런데 솔트값을 알아낸다면 어떨까? 이론적으로는 솔트를 포함한 조합으로 새 레인보우 테이블을 만들 수 있다. 이 가능성을 차단하는 것이 bcrypt 알고리즘의 핵심 설계 철학이다.

강연자에 따르면, bcrypt는 전 세계에서 가장 널리 쓰이는 비밀번호 해싱 알고리즘 중 하나인데 그 이유가 독특하다. bcrypt는 고의적으로 느리게 설계되어 있다. 컴퓨터 과학에서 대부분의 알고리즘은 빠를수록 좋지만, 암호 해싱에서만큼은 느림이 미덕이 된다. bcrypt는 “라운드(round)” 수를 설정할 수 있는데, 라운드를 높일수록 하나의 해시를 생성하는 데 더 많은 시간이 걸린다. 통상 10~12 라운드를 사용하지만, 31 라운드로 설정하면 해시 하나를 만드는 데만 2~3일이 소요된다고 한다.

bcrypt 알고리즘의 라운드 설정과 고의적 느림 원리를 설명하는 슬라이드

10:34 - bcrypt 알고리즘의 라운드 설정과 고의적 느림 원리를 설명하는 슬라이드

이 “느림의 미학”이 레인보우 테이블 공격을 현실적으로 불가능하게 만든다. 수천억 개의 조합을 사전에 해시해두려면 각각 며칠씩 걸리므로, 전체 테이블을 만드는 데 수백 년 혹은 수천 년이 필요해진다. 이 때문에 bcrypt 해시값 안에는 솔트가 평문으로 공개되어 있음에도 불구하고 보안에 문제가 없다고 강연자는 설명한다 — 솔트를 알아도 레인보우 테이블을 만드는 것이 물리적으로 불가능하기 때문이다.

인증 설계의 본질적 목적

강연자는 마지막으로 이 모든 원리가 수렴하는 핵심 목적을 정리한다. 비밀번호를 해시해서 저장하는 것은 자신의 데이터베이스를 직접적으로 보호하는 수단이 아니다. 데이터베이스 자체의 보안은 별도의 인프라 영역에서 다뤄야 한다. 해싱의 진짜 역할은, 데이터베이스가 털렸을 때 그 피해가 다른 서비스로 전파되는 것을 막는 것이다. 한 사이트가 침해당하더라도 같은 자격증명으로 다른 사이트까지 연쇄 침해되는 최악의 상황을 방어하는 것이 해싱의 존재 이유다.


마무리 — 원리를 알면 도구를 이해할 수 있다

이 영상의 진짜 메시지는 “레전더리 버디를 뽑는 방법”에 있지 않다. 강연자가 커스터마이징 도구를 시연하면서 곧바로 그 동작 원리를 해싱 강의로 연결한 것은 의도적인 구성이다. 클로드 코드 버디 해킹이라는 흥미로운 훅(hook)으로 시작해, 실제로는 해시, 솔트, bcrypt, 레인보우 테이블로 이어지는 인증 보안의 핵심 개념들을 자연스럽게 전달한다.

강연자의 마지막 당부도 이 맥락에 있다. AI가 인증 코드를 척척 생성해주는 시대일수록, 그 코드가 다루는 보안 원리를 개발자가 이해하고 있어야 한다. AI가 생성한 코드에서 보안 관련 냄새가 난다면 쉬운 말로 설명을 요청하고, 플래닝 단계에서 반드시 검토해야 한다. 이해 없이 복붙(copy-paste)된 인증 코드가 어떤 결과를 낳을 수 있는지, 이 영상이 작은 사례로 보여준다.


📚 출처 및 참고

구분내용
원본 영상클로드 코드 버디 가챠 해킹하기. 레전더리 뽑아드림
채널코드팩토리
리포트 작성2026-04-02
작성 방식YouTube 영상 STT 변환 후 에디팅

💬 본 리포트는 영상 내용을 바탕으로 재구성되었습니다. 정확한 내용은 원본 영상을 참조해 주세요.