도구 #23: Sherlock을 통해 Halo에게 탐정 놀이 가르치기
요약
자율 침투 테스트 에이전트인 Halo에 OSINT 도구인 Sherlock을 통합하여 사용자 이름 기반의 정찰 기능을 강화했습니다. 이를 통해 에이전트가 타겟의 디지털 발자국을 추적하고 더 정교한 보안 테스트를 수행할 수 있게 되었습니다.
핵심 포인트
- Halo 에이전트에 23번째 도구인 Sherlock 통합 완료
- Sherlock을 통한 사용자 이름 기반 OSINT 정찰 능력 확보
- MCP 서버 기반으로 다양한 보안 도구들을 에이전트 루프에 노출
- 에이전트가 도구 체이닝을 통해 스스로 계획 및 실행 가능
요약 버전:
어제 저는 Halo의 mcp_server.py에 23번째 도구 통합으로 Sherlock을 추가했고, 릴리스 버전을 v0.2.0으로 태깅했으며, 그 과정에서 성가셨던 git remote 문제를 해결했습니다 (알고 보니 origin이 어긋나 있었는데, 다시 GEMMA-by-GOOGLE을 올바르게 가리키도록 수정했습니다). 작은 정리 작업이었지만, 큰 기능적 해방을 가져왔습니다.
처음 오신 분들을 위해 설명하자면: Halo (이전 명칭 PenMaster)는 제가 지난 1년 동안 단독으로 구축해 온 자율 침투 테스트 (pentesting) 에이전트입니다. 이는 Flask 기반의 MCP 서버로, 점점 늘어나는 보안 도구 군단을 LLM 기반의 에이전트 루프에 노출하여, 에이전트가 스스로 침투 테스트를 계획, 실행 및 추론할 수 있도록 합니다.
왜 Sherlock인가?
자동화되었든 사람이 주도하든, 모든 침투 테스트는 본격적인 작업(스캐닝, 브루트 포싱 (brute-forcing), 익스플로잇 (exploitation))이 시작되기 전 견고한 정찰 (reconnaissance) 단계로부터 이득을 얻습니다. 지금까지 Halo의 정찰 툴킷은 subfinder, httpx, nuclei, katana, ffuf와 같은 인프라 측면의 도구에 크게 의존해 왔습니다. 공격 표면 (attack surface)을 매핑하는 데는 훌륭하지만, 타겟의 인간적인 측면 — 사용자 이름 (usernames), 별칭 (aliases), 그리고 그와 관련된 디지털 발자국 (digital footprint) — 에 대해서는 무지했습니다.
그것이 바로 Sherlock의 영역입니다. 사용자 이름을 지정하면 Sherlock은 웹의 방대한 영역 — 수십 개의 플랫폼 — 을 훑으며, 인간 분석가가 수동으로 작업하는 데 필요한 시간의 아주 일부분 만에 계정 존재 여부를 확인합니다. 타겟 조직이나 개인에 대한 완전한 그림을 그리려는 에이전트에게, 이는 의사 결정 루프에 공급되는 의미 있는 새로운 신호원 (signal source) 입니다. 87개의 플랫폼은 설계상 종착점이 아닙니다. Sherlock은 그 기능 면에서 훨씬 더 많은 것, 훨씬 더 많은 일을 수행합니다. 이는 단지 타겟 사용자 이름이 얼마나 많은 공간에서 발견되느냐에 달려 있습니다. 이전 테스트에서 타겟 사용자 이름은 92개의 별도 플랫폼에서 발견되었습니다.
내부적으로 무엇이 바뀌었나
• mcp_server.py는 이제 Sherlock을 일급 도구 (first-class tool)로 노출하며, 기존 라인업(nmap, masscan, sqlmap, nikto, hydra, gobuster, enum4linux, medusa, ncrack, searchsploit, subfinder, nuclei, katana, ffuf, httpx 등)에 합류했습니다.
• v0.2.0으로 버전 업데이트 — 이제 23개의 도구가 에이전트의 의사 결정(decision-making) 뒤에 배치되며, 모두 동일한 실패 캐싱 레이어(agent_cache.py)를 통해 라우팅됩니다. 따라서 한 번의 작업(engagement)에서 Sherlock 실행이 실패하더라도 다음 작업에서 조용히 블랙리스트에 등록되지 않습니다.
이것이 전체적인 관점에서 중요한 이유
Halo의 핵심 논제는 LLM 기반 에이전트가 인간 운영자처럼 정찰(reconnaissance), 스캐닝(scanning), 익스플로잇(exploitation) 도구들을 체인처럼 연결할 수 있다는 것입니다. 즉, 문맥을 구축하고, 반복되는 막다른 길을 피하며, 지능적으로 에스컬레이션(escalating)할 수 있습니다. 모든 새로운 도구는 단순히 "하나 더 추가된 통합"이 아니라, 에이전트가 행동하기 전에 추론할 수 있는 타겟의 차원을 하나 더 늘려주는 것입니다.
OSINT 수준의 사용자 이름 정찰(recon)은 작은 부분이지만, 타겟을 단순히 스캔하는 에이전트와 타겟을 실제로 이해하는 에이전트 사이의 차이를 만드는 바로 그런 요소입니다.
결과(RESULTS):
sherlock torvalds --print-found --output sherlock_results.txt
[*] Checking username torvalds on:
[⭐] 9GAG: [https://www.9gag.com/u/torvalds]
[⭐] Arduino Forum: [https://forum.arduino.cc/u/torvalds/summary]
[⭐] Audiojungle: [https://audiojungle.net/user/torvalds]
[⭐] BitBucket: [https://bitbucket.org/torvalds/]
[⭐] Bluesky: [https://bsky.app/profile/torvalds.bsky.social]
[⭐] Chess: [https://www.chess.com/member/torvalds]
[⭐] Codeberg: [https://codeberg.org/torvalds]
[⭐] Codecademy: [https://www.codecademy.com/profiles/torvalds]
[⭐] Codechef: [https://www.codechef.com/users/torvalds]
[⭐] Codeforces: [https://codeforces.com/profile/torvalds]
[⭐] DailyMotion: [https://www.dailymotion.com/torvalds]
[⭐] DeviantArt: [https://www.deviantart.com/torvalds]
[⭐] Discord: [https://discord.com]
[⭐] Disqus: [https://disqus.com/torvalds]
[⭐] Docker Hub: [https://hub.docker.com/u/torvalds/]
[⭐] Dribbble: [https://dribbble.com/torvalds]
[⭐] Duolingo: [https://www.duolingo.com/profile/torvalds]
[⭐] Flickr: [https://www.flickr.com/people/torvalds]
[⭐] Flipboard: [https://flipboard.com/@torvalds]
[⭐] Freelancer: [https://www.freelancer.com/u/torvalds]
[⭐] Freesound: [https://freesound.org/people/torvalds/]
[−] GitHub: https://www.github.com/torvalds
[+] Gitea: https://gitea.com/torvalds
[+] Gitee: https://gitee.com/torvalds
[+] Hackaday: https://hackaday.io/torvalds
[+] HackerRank: https://hackerrank.com/torvalds
[+] Hive Blog: https://hive.blog/@torvalds
[+] HudsonRock: https://cavalier.hudsonrock.com/api/json/v2/osint-tools/search-by-username?username=torvalds
[+] Hugging Face: https://huggingface.co/torvalds
[+] IFTTT: https://www.ifttt.com/p/torvalds
[+] Imgur: https://imgur.com/user/torvalds
[+] Instagram: https://instagram.com/torvalds
[+] kaskus: https://www.kaskus.co.id/@torvalds
[+] Keybase: https://keybase.io/torvalds
[+] Kick: https://kick.com/torvalds
[+] Launchpad: https://launchpad.net/~torvalds
[+] Lichess: https://lichess.org/@/torvalds
[+] LiveJournal: https://torvalds.livejournal.com
[+] Medium: https://medium.com/@torvalds
[+] Memrise: https://www.memrise.com/user/torvalds/
[+] MixCloud: https://www.mixcloud.com/torvalds/
[+] Naver: https://blog.naver.com/torvalds
[+] Pastebin: https://pastebin.com/u/torvalds
[⬺+] Patreon: https://www.patreon.com/torvalds
[⬺+] Periscope: https://www.periscope.tv/torvalds/
[⬺+] pixelfed.social: https://pixelfed.social/torvalds/
[⬺+] Plurk: https://www.plurk.com/torvalds
[⬺+] Pokemon Showdown: https://pokemonshowdown.com/users/torvalds
[⬺+] Redbubble: https://www.redbubble.com/people/torvalds
[⬺+] RubyGems: https://rubygems.org/profiles/torvalds
[⬺+] Scratch: https://scratch.mit.edu/users/torvalds
[⬺+] Snapchat: https://www.snapchat.com/add/torvalds
[⬺+] SoundCloud: https://soundcloud.com/torvalds
[⬺+] SpaceHey: https://spacehey.com/torvalds
[⬺+] Steam Community (사용자): https://steamcommunity.com/id/torvalds/
[⬺+] Substack: https://torvalds.substack.com/
[⬺+] TETR.IO: https://ch.tetr.io/u/torvalds
[⬺+] TheMovieDB: https://www.themoviedb.org/u/torvalds
[⬺+] TikTok: https://www.tiktok.com/@torvalds
[⬺+] Telegram: https://t.me/torvalds
[⬺+] ThemeForest: https://themeforest.net/user/torvalds
[⬺+] TradingView: https://www.tradingview.com/u/torvalds/
[⬺+] Twitch: https://www.twitch.tv/torvalds
[⬺+] Trovo: https://trovo.live/s/torvalds/
[⬺+] VK: https://vk.com/torvalds
[⭐+] VirusTotal: [https://www.virustotal.com/gui/user/torvalds]
[⭐+] Wikipedia: [https://en.wikipedia.org/wiki/Special:CentralAuth/torvalds?uselang=qqx]
[⭐+] WordPress: [https://torvalds.wordpress.com/]
[⭐+] Wykop: [https://www.wykop.pl/ludzie/torvalds]
[⭐+] Xbox Gamertag: [https://xboxgamertag.com/search/torvalds]
[⭐+] couchsurfing: [https://www.couchsurfing.com/people/torvalds]
[⭐+] datingRU: [http://dating.ru/torvalds]
[⭐+] devRant: [https://devrant.com/users/torvalds]
[⭐+] drive2: [https://www.drive2.ru/users/torvalds]
[⭐+] fl: [https://www.fl.ru/users/torvalds]
[⭐+] geocaching: [https://www.geocaching.com/p/default.aspx?u=torvalds]
[⭐+] habr: [https://habr.com/ru/users/torvalds]
[⭐+] jbzd.com.pl: [https://jbzd.com.pl/uzytkownik/torvalds]
[⭐+] jeuxvideo: [https://www.jeuxvideo.com/profil/torvalds]
[⭐+] last.fm: [https://last.fm/user/torvalds]
[⭐+] livelib: [https://www.livelib.ru/reader/torvalds]
[⭐+] osu!: [https://osu.ppy.sh/users/torvalds]
[⭐+] pikabu: [https://pikabu.ru/@torvalds]
[⭐+] Pinterest: [https://www.pinterest.com/torvalds/]
[⭐+] threads: [https://www.threads.net/@torvalds]
[+] tumblr: https://torvalds.tumblr.com/
[+] Wowhead: https://wowhead.com/user=torvalds
[*] 87개의 결과로 검색 완료
다음 단계
도구 #23이 출시되었지만, 할 일 목록(to-do list)은 멈추지 않았습니다. 캐시 정리(cache cleanup), 워드리스트(wordlist) 검토, 그리고 README 개편이 다음 대기 목록에 올라와 있으며, 서버에 선별적으로 채택할 만한 가치가 있는 커뮤니티 프로젝트들을 평가하는 작업도 예정되어 있습니다. 이에 대해서는 곧 더 자세히 다루겠습니다.
지금으로서는: 23개의 도구, 하나의 에이전트(agent), 수동 정찰(manual recon)은 0입니다. 계속 나아갑시다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기