유저네임 하나만 알면 그 사람의 온라인 행적 전체를 역추적할 수 있다. 과장이 아니다. GitHub 스타 7만 4천 개를 넘긴 오픈소스 OSINT(공개출처정보) 도구 Sherlock은 단 한 줄의 명령어로 400개 이상의 소셜 네트워크와 웹사이트에서 해당 유저네임의 존재 여부를 동시에 조회한다.
사이버 보안 연구자, 법 집행 기관 수사관, 디지털 포렌식 전문가뿐 아니라 자신의 디지털 발자국(digital footprint)을 점검하려는 일반 사용자까지 폭넓게 활용하는 이 도구는, 인터넷에서 "진짜 익명"이 얼마나 어려운지를 적나라하게 보여준다.
이 글에서는 Sherlock의 작동 원리부터 설치 방법, 핵심 명령어, 유사 도구와의 비교, 그리고 이 도구가 개인 프라이버시에 던지는 근본적인 질문까지 다룬다.
| 항목 | 내용 |
|---|---|
| 도구명 | Sherlock (sherlock-project) |
| 최신 버전 | 0.16.0 (2025년 9월 공개) |
| 지원 사이트 수 | 400개 이상 |
| GitHub 스타 | 74,000개 이상 |
| 라이선스 | MIT (완전 무료·오픈소스) |
| 개발 언어 | Python |
| 원작자 | Siddharth Dushantha |
| 기여자 수 | 200명 이상 |
| 설치 방법 | pipx, pip, Docker, Homebrew, APT(Kali), DNF(Fedora) |
| 주요 기능 | 멀티 유저 검색, Tor 라우팅, 프록시, CSV/XLSX 출력, 와일드카드 |
Sherlock은 어떻게 유저네임을 추적하는가
Sherlock의 작동 방식은 단순하면서도 강력하다. 사용자가 입력한 유저네임을 기반으로 각 사이트의 예상 프로필 URL을 자동 생성한 뒤, HTTP 요청을 보내 응답 코드와 페이지 내용을 분석한다. 200 OK 응답이 돌아오고 해당 프로필이 실제로 존재한다면 "발견(Found)"으로 표시하고, 404나 리다이렉트가 발생하면 "미발견(Not Found)"으로 분류한다.
이 과정에서 API 키나 로그인 자격증명이 전혀 필요하지 않다. Sherlock은 오직 공개적으로 접근 가능한 URL만 확인하며, 비공개 프로필이나 인증 벽(authentication wall) 뒤의 데이터에는 접근하지 않는다. Facebook처럼 자동화된 유저네임 열거를 차단하는 플랫폼이나, Discord처럼 공개 프로필 URL 자체가 없는 서비스는 검색 대상에서 제외된다.
핵심 데이터는 data.json 파일에 정의되어 있다. 각 사이트별로 URL 패턴, 오류 유형(status_code, message, response_url), 예상 응답 등이 기록되어 있으며, 커뮤니티의 200명 이상 기여자가 지속적으로 이 파일을 업데이트한다.
Sherlock은 정확한 유저네임 일치(exact match)만 검색한다. 유사 변형을 찾고 싶다면 {?} 와일드카드를 활용하면 된다. 예를 들어 sherlock john{?}doe를 실행하면 john_doe, john-doe, john.doe를 모두 검색한다.
설치부터 실전 사용까지 — 5분 안에 끝내는 Sherlock 실행
Sherlock은 Python 3.9 이상이 설치된 모든 환경(Windows, macOS, Linux)에서 구동된다. 설치 경로는 크게 네 가지다.
| 설치 방법 | 명령어 | 특징 |
|---|---|---|
| pipx (권장) | pipx install sherlock-project | 가상환경 자동 격리, 충돌 방지 |
| pip | pip install --user sherlock-project | 가장 간단하지만 의존성 충돌 가능 |
| Docker | docker run -it --rm sherlock/sherlock user123 | Python 설치 불필요, 즉시 실행 |
| Homebrew (macOS) | brew install sherlock | macOS 사용자에게 편리 |
| APT (Kali Linux) | sudo apt install sherlock | Kali에 사전 탑재, 보안 테스트 환경에 최적 |
기본 명령어
단일 유저네임 검색은 sherlock user123 한 줄이면 된다. 결과는 터미널에 실시간으로 출력되며, 동시에 user123.txt 파일로 자동 저장된다. 복수 유저네임을 한 번에 조회하려면 sherlock alice bob charlie처럼 공백으로 구분해 입력한다.
출력 옵션
텍스트 파일 외에 --csv 플래그로 CSV, --xlsx 플래그로 엑셀 파일 출력이 가능하다. 대규모 조사에서 결과를 스프레드시트로 관리해야 할 때 유용하다. 저장 경로는 --output(단일 유저)이나 --folderoutput(복수 유저)으로 지정한다.
네트워크 옵션
조사자의 IP 노출을 방지하려면 Tor 라우팅(--tor)이나 프록시(--proxy socks5://127.0.0.1:1080)를 사용한다. --unique-tor 옵션은 각 요청마다 새로운 Tor 회로를 생성해 추적 가능성을 더욱 낮추지만, 속도가 상당히 느려진다.
특정 사이트만 집중 조회하고 싶다면 --site 플래그를 반복 사용한다. sherlock user123 --site GitHub --site Instagram처럼 입력하면 지정한 사이트만 빠르게 확인할 수 있어, 전체 400개 이상을 스캔하는 것보다 훨씬 효율적이다.
ParrotOS와 Ubuntu 24.04의 서드파티 패키지는 정상 작동하지 않는 사례가 보고되었다. 해당 환경에서는 pipx 또는 Docker 설치를 권장한다.
클라우드 실행 — 설치 없이 브라우저에서
Apify 플랫폼의 Sherlock Actor를 이용하면 로컬 설치 없이 웹 브라우저에서 바로 검색을 실행할 수 있다. Apify 무료 등급 범위 내에서 사용 가능하며, API와 Python/JS SDK를 통한 프로그래밍 방식 연동도 지원한다.
Sherlock vs Maigret vs WhatsMyName — OSINT 유저네임 도구 비교
Sherlock만이 유일한 유저네임 열거 도구는 아니다. 대표적인 대안으로 Maigret과 WhatsMyName이 있으며, 각각 강점이 다르다.
| 비교 항목 | Sherlock | Maigret | WhatsMyName |
|---|---|---|---|
| 지원 사이트 수 | 400개 이상 | 2,500개 이상 | 600개 이상 |
| 설치 난이도 | 낮음 (pipx 한 줄) | 보통 (의존성 다수) | 매우 낮음 (웹 앱 제공) |
| 출력 형식 | TXT, CSV, XLSX | TXT, CSV, HTML, PDF | JSON, 웹 UI |
| 프로필 분석 | 미지원 (URL만 반환) | 부분 지원 (태그, 메타 정보 추출) | 미지원 |
| Tor/프록시 | 지원 | 지원 | 미지원 (웹 앱) |
| 거짓 양성(False Positive) 처리 | 커뮤니티 기반 지속 업데이트 | 자동 필터링 내장 | 커뮤니티 기반 |
| 오프라인 사용 | 가능 (--local) | 가능 | 불가 (웹 전용) |
| 유지보수 상태 | 활발 (200명 이상 기여자) | 활발 | 활발 |
Maigret은 Sherlock에서 포크(fork)되어 탄생한 프로젝트로, 사이트 커버리지가 2,500개 이상으로 대폭 확대되었다. HTML 리포트 생성, 프로필 태그 추출 등 심층 분석 기능도 갖추고 있어, 수사 목적의 정밀 조사에 더 적합하다는 평가를 받는다.
WhatsMyName은 웹 브라우저에서 바로 접근 가능한 GUI를 제공하므로 CLI에 익숙하지 않은 사용자에게 진입 장벽이 가장 낮다. 다만 Tor 라우팅이나 프록시 같은 고급 네트워크 옵션은 제공하지 않는다.
실무에서는 단일 도구에 의존하지 않고 Sherlock + Maigret + WhatsMyName을 조합해 교차 검증하는 것이 정확도를 높이는 핵심 전략이다. Sherlock으로 빠르게 1차 스캔을 돌리고, Maigret으로 누락된 사이트를 보완한 뒤, WhatsMyName으로 최종 확인하는 파이프라인이 보안 전문가 사이에서 널리 쓰인다.
유저네임 재사용의 위험성 — 왜 Sherlock이 프라이버시 경고등인가
2026년 집계 기준, 동일 유저네임을 3개 이상의 플랫폼에서 사용하는 비율은 약 41%에 달한다. 5개 이상 플랫폼에서 같은 유저네임을 쓰는 사용자도 28%나 된다. Instagram과 TikTok에서 동일 유저네임이 발견되는 쌍(pair)은 전체의 68%에 이른다.
이 수치가 왜 위험한가? Sherlock 같은 도구가 존재하기 때문이다. 한 플랫폼에서 유저네임 하나만 알아내면, 나머지 수백 개의 서비스에서 동일 인물의 계정을 자동으로 연결할 수 있다. 계정 조사, 사기 추적, 신원 확인은 물론이고, 악의적 행위자에 의한 스토킹이나 도킹(doxing)에도 악용될 수 있다.
비밀번호 재사용 문제는 이미 널리 인식되어 있다. 조사에 따르면 약 65 - 78%의 사용자가 여러 사이트에서 동일한 비밀번호를 쓴다. 하지만 유저네임 재사용의 위험성은 상대적으로 덜 주목받고 있다. 비밀번호는 눈에 보이지 않지만, 유저네임은 공개 프로필에 그대로 노출되기 때문에 수집 난이도가 훨씬 낮다.
온라인 뱅킹 유저네임의 47%가 비금융 사이트에서도 동일하게 사용된다는 연구 결과가 있다. 금융 계정의 유저네임은 반드시 다른 서비스와 분리해야 한다.
OPSEC(운영 보안) 관점에서의 자기 방어
디지털 익명성을 유지하려면 다음 원칙이 필요하다.
- 플랫폼별 고유 유저네임 사용: 랜덤 유저네임 생성기를 활용해 각 서비스마다 다른 이름을 쓴다.
- 이메일 분리: 가명(pseudonym) 계정에는 별도의 이메일 주소를 연결한다.
- VPN/Tor 사용: 계정 생성 시 IP 주소가 교차 연결되지 않도록 네트워크를 분리한다.
- 주기적 자가 점검: Sherlock으로 자신의 유저네임을 직접 검색해 어떤 계정이 노출되는지 확인한다.
Sherlock의 한계와 윤리적 고려사항
Sherlock은 강력하지만 만능은 아니다. 도구의 한계를 정확히 이해해야 결과를 올바르게 해석할 수 있다.
거짓 양성(False Positive) 문제는 가장 빈번한 한계점이다. 일부 사이트는 존재하지 않는 프로필에도 200 OK를 반환하거나, 모호한 에러 페이지를 보여준다. 최근 버전(0.16.0)에서 자동 필터링이 상당히 개선되었지만, 중요한 결과는 반드시 수동으로 검증해야 한다.
거짓 음성(False Negative)도 발생한다. 사이트 구조가 변경되거나, data.json의 패턴이 오래된 경우 실제 존재하는 프로필을 놓칠 수 있다. Sherlock은 커뮤니티 기반으로 유지되므로, 모든 사이트 변경사항이 즉시 반영되지는 않는다.
속도 제한과 차단도 고려해야 한다. 400개 이상의 사이트에 동시 요청을 보내면 일부 사이트에서 CAPTCHA를 요구하거나 IP를 일시 차단할 수 있다. 기본 타임아웃은 60초이며, --timeout 옵션으로 조절 가능하다.
| 한계점 | 영향 | 대응 방법 |
|---|---|---|
| 거짓 양성 | 존재하지 않는 계정을 "발견"으로 표시 | 수동 검증, 브라우저에서 직접 확인 |
| 거짓 음성 | 실제 계정을 누락 | Maigret 등 다른 도구로 교차 검증 |
| 속도 제한/차단 | 일부 사이트에서 응답 거부 | Tor/프록시 사용, --timeout 조절 |
| 비공개 프로필 미접근 | 인증 벽 뒤의 정보 확인 불가 | OSINT 도구의 본질적 한계, 공개 정보만 대상 |
| 프로필 분석 미지원 | 동일 인물 여부 판단 불가 | 수사관의 추가 분석 필요 |
윤리적·법적 경계
Sherlock이 수집하는 정보는 모두 공개된(publicly accessible) 데이터다. 하지만 "접근 가능"하다고 해서 "사용해도 된다"는 의미는 아니다. EU의 GDPR, 미국의 CFAA(컴퓨터 사기 및 남용에 관한 법률), 한국의 개인정보보호법 등 각 국가의 법률에 따라 자동화된 개인정보 수집은 규제 대상이 될 수 있다.
합법적인 활용 사례로는 자기 자신의 디지털 발자국 점검, 기업의 위협 표면 평가, 법 집행 기관의 수사(적법한 절차 하에서), 보안 연구자의 취약점 분석 등이 있다. 반면 동의 없는 타인 추적, 스토킹, 괴롭힘 목적의 사용은 명백한 법적·윤리적 위반이다.
Sherlock은 각 사이트에 자동화된 HTTP 요청을 대량으로 전송한다. 일부 서비스의 이용약관(Terms of Service)은 이러한 자동화 접근을 명시적으로 금지하고 있다. 조사 목적이라 하더라도 해당 서비스의 정책을 사전에 확인하는 습관이 필요하다.
Sherlock 활용 시나리오 — 누가, 왜 쓰는가
이 도구의 실질적인 활용 영역은 생각보다 넓다.
보안 전문가와 침투 테스터(Penetration Tester)는 정찰(reconnaissance) 단계에서 대상 조직의 직원 유저네임을 수집하고, 이를 기반으로 추가적인 공격 표면을 식별한다. Kali Linux와 BlackArch에 Sherlock이 기본 탑재되어 있는 것도 이 때문이다.
법 집행 기관은 사기 피의자의 온라인 활동을 추적하거나, 실종자의 디지털 흔적을 찾는 데 활용한다. 유저네임 하나로 수백 개의 플랫폼을 동시에 조회할 수 있어, 수작업 대비 수사 효율이 비약적으로 높아진다.
저널리스트와 OSINT 연구자는 공익 목적의 탐사 보도에서 인물의 온라인 활동 범위를 파악하는 데 사용한다. 탐사 보도 전문 기관 Bellingcat의 온라인 조사 도구 목록에도 Sherlock이 포함되어 있다.
일반 사용자는 자신의 디지털 발자국을 점검하고, 오래전 만들어 놓고 잊어버린 계정을 찾아 삭제하거나 비활성화하는 데 활용할 수 있다. 데이터 유출(breach) 사고가 빈번한 현재, 사용하지 않는 계정을 방치하는 것 자체가 보안 위험이다.
자신의 유저네임을 Sherlock으로 검색할 때는 --print-all 옵션을 추가하면 "미발견" 사이트까지 모두 출력되어, 커버리지 범위를 한눈에 확인할 수 있다. --browse 플래그를 함께 쓰면 발견된 프로필을 기본 브라우저에서 자동으로 열어준다.
디지털 익명성의 미래, Sherlock이 던지는 질문
Sherlock은 단순한 CLI 도구 그 이상의 의미를 가진다. 인터넷 초창기에는 유저네임이 개인을 보호하는 "가면"이었다. 하지만 수백 개의 플랫폼에 동일한 가면을 쓰고 다니는 순간, 그 가면은 오히려 신원을 특정하는 "지문"이 된다.
AI와 자동화 기술의 발전은 이 추적 능력을 더욱 강화하고 있다. Sherlock 같은 도구가 무료로 공개되어 있다는 사실은, 이보다 훨씬 정교한 도구가 이미 비공개로 운용되고 있을 가능성을 시사한다.
디지털 환경에서 개인 프라이버시를 지키려면 적극적인 행동이 필요하다. 지금 당장 자신의 주요 유저네임을 Sherlock으로 검색해 보라. 어떤 계정이 어디에 연결되어 있는지 파악하는 것이 방어의 첫 번째 단계다. 불필요한 계정은 삭제하고, 앞으로는 플랫폼마다 서로 다른 유저네임을 사용하는 습관을 들이는 것이 핵심이다.