현대의 적대적 환경에서 '프라이버시'는 작전 실패이며, '익명성'은 일시적인 비연관성 상태에 불과합니다. 엘리트 레드팀원이나 AI 보안 엔지니어에게 오픈 소스 인텔리전스(OSINT)의 목표는 숨겨진 정보를 찾는 것이 아니라 공개된 정보를 무기화하는 것입니다.
Ghunt 은 단순한 Python 스크립트에서 시작하여 Google 생태계를 조사하는 업계 표준 프레임워크로 자리 잡았습니다. 버그를 익스플로잇하는 것이 아니라 커넥티드 서비스의 기본 아키텍처를 익스플로잇합니다. 사용자 기기와 Google 서버 간의 API 호출을 분석하여 특히 플레이 서비스, 지도및 사람 API-고정된 이메일 주소를 동적인 '생활 패턴' 그래프로 변환하는 Ghunt.
이 포괄적인 기술 자료는 Ghunt V2의 내부 메커니즘을 분석하고, 프로덕션급 Python 자동화 전략을 제공하며, 다음과 같은 영향력이 큰 취약점 익스플로잇에서 Ghunt V2의 역할을 분석합니다. CVE-2026-21858 그리고 CVE-2025-68613를 사용하여 Penligent.ai 는 에이전틱 AI를 통해 이 전체 킬 체인을 자동화하고 있습니다.

1부: 추출의 메커니즘(후드 안쪽)
Ghunt를 효과적으로 사용하는 방법을 이해하려면 Ghunt가 유선에서 수행하는 작업을 이해해야 합니다. Ghunt의 핵심은 합법적인 Google 애플리케이션을 에뮬레이션하는 인증된 API 클라이언트입니다.
1. 자격 증명 컨텍스트: 세션의 해부학
Ghunt는 익명으로 작동하지 않습니다. Google의 '동의 범프'와 스크래핑 방지 휴리스틱을 우회하려면 유효한 세션 상태가 필요합니다. '마법'은 주로 특정 쿠키에 있습니다:
__Secure-1PSID&__Secure-3PSID: 영구 Google 세션의 기본 식별자입니다. '개인 검색' 컨텍스트에 대한 액세스 권한을 부여합니다.OAuth_토큰: 전체 OAuth 동의 화면을 트리거하지 않고 Google 사람들 API에 대한 호출을 승인하기 위해 추출되는 경우가 많습니다.
실행 시 헌트 로그인를 사용하면 기본적으로 브라우저 컨텍스트에서 이 암호화 상태를 파이썬으로 내보내는 것입니다. httpx 세션으로 이동합니다. 그런 다음 이 도구는 X-Goog-AuthUser 헤더를 사용하여 계정 간을 전환하여 사용자가 Chrome에서 개인 프로필과 회사 프로필을 전환하는 동작을 모방합니다.
2. 매트릭스 디코딩하기: 프로토콜 버퍼(Protobuf)
깨끗한 JSON을 반환하는 표준 REST API와 달리, 많은 내부 Google 엔드포인트(특히 지도 및 Play 스토어)는 다음과 같이 직렬화된 데이터를 반환합니다. 프로토콜 버퍼(Protobuf).
- 도전 과제: Protobuf는 바이너리 형식입니다. 이 형식이 없으면
.proto정의 파일(Google은 비공개로 유지)에 저장된 데이터는 읽을 수 없는 바이트의 스트림입니다. - 건트 솔루션: Ghunt의 개발자들은 와이어 형식을 리버스 엔지니어링했습니다. 이 도구에는 이러한 바이너리 스트림을 재귀적으로 역직렬화하는 사용자 정의 파서가 포함되어 있습니다.
- 예시: 사용자의 지도 기여를 쿼리할 때 Ghunt는 Protobuf 블롭을 받습니다. 와이어 헤더를 제거하고, 필드 태그(예: field
1는 검토 ID, 필드2는 타임스탬프)를 읽어들여 읽을 수 있는 객체를 재구성합니다. 원시 내부 바이너리 트래픽을 구문 분석하는 이 기능은 Ghunt를 기본 HTML 스크래퍼와 구분 짓는 요소입니다.
- 예시: 사용자의 지도 기여를 쿼리할 때 Ghunt는 Protobuf 블롭을 받습니다. 와이어 헤더를 제거하고, 필드 태그(예: field

2부: 모듈형 공격 표면
Ghunt V2는 모듈식 아키텍처로 작동합니다. 각 모듈은 Google 인프라 내의 특정 데이터 사일로를 대상으로 합니다.
모듈 A: 이메일 피벗 엔진(ghunt 이메일)
이것이 가장 일반적인 진입 지점입니다. 피드 [email protected]를 사용하여 내부 엔드포인트를 쿼리합니다. https://clients6.google.com/rpc.
- GAIA ID 해상도: 모듈은 이메일을 GAIA ID (Google 계정 및 ID 관리). 이 21자리 정수는 사용자 ID의 불변의 핵심입니다. 사용자가 이메일 주소나 표시 이름을 변경하더라도 GAIA ID는 그대로 유지됩니다.
- 서비스 열거: 사진, 지도, 캘린더에 공개 프로필이 있는지 확인합니다.
- 클라우드 IAM 누출: 결정적으로, 사용자가 구글 클라우드 플랫폼(GCP)에서 활동 중인지 확인할 수 있습니다. 레드팀원에게 있어 타깃이 'GCP 관리자'라는 것은 곧바로 다음 타깃을 대상으로 하는 피싱 캠페인의 우선순위로 지정됩니다.
gcloud자격 증명.
모듈 B: 지리적 위치 삼자화(헌트 맵)
이 모듈은 타겟이 게시한 '리뷰'와 '사진'을 집계합니다.
- 타임스탬프 분석: Ghunt는 리뷰의 타임스탬프와 리뷰된 비즈니스의 지리적 좌표를 연관시켜 속도 지도를 구축합니다.
- 시나리오: 타겟이 샌프란시스코의 커피숍을 09:00에, 팔로알토의 레스토랑을 12:00에 리뷰합니다. 이를 통해 실제 위치와 이동 가능 여부가 확인됩니다.
- 자신감 점수: Ghunt V2는 리뷰 밀도를 클러스터링하여 사용자의 '홈베이스'에 대한 신뢰도 점수를 계산합니다.
모듈 C: 디바이스 원격 측정 및 Play API(헌트 플레이)
아마도 하드웨어 익스플로잇에 가장 위험한 모듈일 것입니다. 구글 플레이 라이브러리를 쿼리하여 계정에 연결된 디바이스를 나열합니다.
- 추출된 데이터: 제조사(삼성, 픽셀, 샤오미), 모델 번호(SM-S918B), '마지막으로 본' 타임스탬프.
- 무기화: 이것은 단순한 상식이 아닙니다. 하드웨어별 원격 코드 실행(RCE)을 위한 전제 조건입니다.
파트 III: 고급 엔지니어링 - 헌팅 자동화
수동 CLI 사용은 엔터프라이즈 규모의 정찰에는 충분하지 않습니다. 아래는 더 큰 파이프라인에 통합하기에 적합한 비동기 클래스 구조로 Ghunt를 감싸는 강력하고 프로덕션에 바로 사용할 수 있는 Python 구현입니다.
그리고 GhuntAutomator 클래스
Python
`임포트 asyncio 임포트 제이슨 임포트 타이핑에서 로깅 임포트 딕트, 옵션 임포트 ghunt.api에서 GHuntAPI 임포트 ghunt.객체에서 Target 임포트 ghunt.utils에서 get_httpx_client 임포트
파이프라인에 대한 구조화된 로깅 구성하기
logging.basicConfig(level=logging.INFO형식='%(asctime)s - %(levelname)s - %(message)s')
GhuntAutomator 클래스: def init(self): self.client = get_httpx_client() self.api = GHuntAPI(self.client) self.is_authenticated = False
async def authenticate(self) -> bool:
"""
저장된 자격 증명을 사용하여 세션을 초기화합니다.
쿠키가 기본 경로에 이미 직렬화되어 있다고 가정합니다.
"""
try:
self.is_authenticated = await self.api.login()
if self.is_authenticated:
logging.info("[+] Google 내부 API에 성공적으로 인증되었습니다.")
return True
else:
logging.error("[-] 인증에 실패했습니다. 쿠키 유효성을 확인하세요.")
반환 False
예외는 e로 예외를 제외합니다:
logging.critical(f"[-] 치명적인 인증 오류: {e}")
반환 False
async def scan_target(self, email: str) -> Optional[Dict]:
self.is_authenticated가 아니라면:
logging.warning("[-] 스캔할 수 없음: 인증되지 않았습니다.")
반환 없음
logging.info(f "[*] {이메일}에 대한 심층 스캔 시작: {이메일}")
try:
target = Target(self.api, email)
found = await target.hunt()
찾을 수 없는 경우
logging.info(f"[-] Target {이메일}을 찾을 수 없거나 숨겨졌습니다.")
반환 없음
# 1. 기본 인텔리전스
intel_package = {
"GAIA_ID": target.person.GAIA_ID,
"name": target.person.name,
"profile_pic": target.person.profile_pic,
"last_active": target.person.last_active_service,
"devices": [],
"위치": []
}
# 2. 디바이스 원격 측정 추출(CVE 매핑에 중요)
if target.person.devices:
대상.person.devices의 장치에 대해
intel_package["devices"].append({
"model": device.model,
"last_seen": str(device.last_seen)
})
# 3. 지도에서 지리적 위치 데이터 추출
if target.person.maps_contribs:
에서 검토를 위해 target.person.maps_contribs[:5]: # 최근 리뷰 상위 5개
intel_package["locations"].append({
"venue": review.venue_name,
"rating": review.rating,
"timestamp": str(review.date)
})
반환 인텔_패키지
예외를 e로 제외합니다:
logging.error(f"[-] 스캔 로직 중 오류: {e}")
반환 없음
비동기 def cleanup(self):
await self.client.aclose()

실행 하네스
async def main(): automator = GhuntAutomator() if await automator.authenticate(): result = await automator.scan_target("[email protected]") if result: print(json.dumps(result, indent=4)) await automator.cleanup()
만약 이름 == “메인": asyncio.run(main())`
이 코드는 다음과 같습니다. 파이프라인 지원. 여기에는 오류 처리, 구조화된 JSON 출력, 모듈식 설계가 포함됩니다. 컨테이너화하여 대규모 분산 시스템의 메시지 큐(예: Kafka 또는 RabbitMQ)에 의해 트리거될 수 있습니다.
4부: 킬 체인 - OSINT와 CVE의 교차점
Ghunt의 진정한 가치는 2026년의 CVE(공통 취약점 및 노출) 환경과 겹쳐질 때 드러납니다.
1. 하드웨어 벡터: CVE-2026-21858(CoreAudio RCE)
컨텍스트: CVE-2026-21858 은 Android 15 및 이전 버전의 미디어 처리 엔진에서 발생하는 심각한 원격 코드 실행 취약점입니다. 이 취약점을 악용하면 공격자가 MMS 또는 WhatsApp을 통해 변조된 오디오 파일을 전송하여 임의의 코드를 실행할 수 있습니다.
- 문제: 이 익스플로잇은 하드웨어에 따라 달라집니다. 잘못된 아키텍처에 잘못된 페이로드를 전송하면(예: 엑시노스 페이로드를 스냅드래곤 디바이스로 전송) 충돌이 발생하여 사용자에게 경고가 표시됩니다.
- 건트 솔루션: 실행하여
헌트 플레이를 입력하면 공격자는 정확한 모델(예: "Pixel 7 Pro")을 검색합니다. 공격자는 이를 CVE-2026-21858 호환성 매트릭스와 상호 참조합니다. - 결과: 100%의 신뢰할 수 있는 제로 클릭 보안. Ghunt는 타겟팅 솔루션 미사일의 경우
2. 신원 벡터: CVE-2025-68613(OAuth 토큰 유출)
컨텍스트: CVE-2025-68613 는 특정 타사 통합이 Google OAuth 새로 고침 토큰을 처리하는 방식에 결함이 있습니다.
- 문제: 공격자는 다음을 알아야 합니다. 어느 통합을 허용하지 않습니다. 블라인드 익스플로잇을 뿌리는 것은 시끄럽습니다.
- 건트 솔루션: Ghunt의 "SpiderDAL"(디지털 자산 링크) 및 "사진" 모듈은 종종 타사 연결을 유추할 수 있습니다. 사용자가 특정 타사 앱에서 사진을 게시하는 것으로 Ghunt에 표시되면 공격자는 해당 통합에 유효한 OAuth 토큰이 존재한다는 것을 알 수 있습니다.
- 결과: 공격자는 CVE-2025-68613 흐름에 대해 특별히 Ghunt가 식별한 앱에 대해 영구적인
새로고침_토큰영구 계정 인수(ATO)를 달성합니다.
파트 5: 미래 - 스크립트에서 에이전트 AI로(Penligent.ai)
위의 Python 스크립트는 강력하지만 보안의 '수동 시대'를 상징합니다. 사람이 JSON을 해석하고, CVE를 조회하고, 페이로드를 제작해야 합니다. 2026년에는 속도가 결정적인 요소입니다. 바로 여기에서 에이전트 AI 가 대신합니다.
Penligent.ai세계 최초로 에이전트 AI 해커는 Ghunt와 같은 도구의 로직을 인지 아키텍처로 흡수합니다. 단순히 Ghunt를 '실행'하는 것이 아니라 그 결과를 '이해'합니다.

펜리젠트 에이전트의 인지 루프:
- 관찰(센서): 에이전트는 기업 이메일 목록에 대해 Ghunt와 유사한 센서를 자율적으로 배포합니다.
- 오리엔테이션(컨텍스트):
- 원시 데이터: "사용자 A는 삼성 S24를 사용합니다."
- 지식 검색: 에이전트는 내부 벡터 데이터베이스에 취약점을 쿼리합니다. "Samsung S24" + "Android 15"를 다음과 같이 일치시킵니다. CVE-2026-21858.
- 결정(전략): 에이전트가 최소 저항 경로를 계산합니다.
- 옵션 A: 피싱 이메일? (성공률 12%).
- 옵션 B: CVE-2026-21858을 통한 모바일 RCE? (성공률 95%).
- 선택: 상담원이 옵션 B를 선택합니다.
- 액션(유효성 검사)을 클릭합니다: 에이전트는 안전한 개념 증명(PoC) 아티팩트. 기기를 악의적으로 익스플로잇하지 않으며, 기기가 잘못된 헤더를 허용하는지 확인하는 등 취약점이 존재하는지 확인하고 발견 사항을 기록합니다.
이것이 도구와 팀원의 차이점입니다. 펜리전트는 추론뿐만 아니라 실행. 보안 팀에게 이는 며칠이 아닌 몇 분 안에 침해의 핵심 경로를 찾는 것을 의미합니다.
6부: 방어적 대응책 및 OpSec
레드 팀인 경우 인프라를 보호해야 합니다. 블루팀이라면 공격자의 눈을 멀게 해야 합니다.
운영자(OpSec)의 경우
- 도커화는 필수입니다: 호스트 OS에서 Ghunt를 실행하지 마세요. Google은 파일 시스템에 "이동 경로"를 남깁니다. 공식 Docker 이미지 사용: docker run -v $(pwd)/resources:/usr/src/app/resources mxrch/ghunt 로그인
- 주거용 프록시: 데이터센터 IP(AWS, DigitalOcean)는 Google에서 즉시 플래그가 지정됩니다. 정상 사용자 트래픽을 모방하려면 평판이 높은 주거용 프록시를 통해 헌트 트래픽을 터널링해야 합니다.
- 계정 에이징: 정찰을 위해 새로운 Gmail 계정을 사용하지 마세요. Google은 기록이 있는 계정을 신뢰합니다. "노련한" 버너 계정을 사용하세요.
수비수(완화)
- '차단' 목록: 정상적인 트래픽처럼 보이므로 Ghunt를 직접 차단할 수 없습니다. 데이터 표면을 줄여야 합니다.
- 기업 정책:
- "웹 및 앱 활동" 비활성화: 모든 기업 사용자에 대해 Google Workspace 관리자 정책을 통해 이를 적용합니다. 이렇게 하면 지도 리뷰 및 위치 기록 수집이 중지됩니다.
- 섀도 IT 감사: 정기적으로 건트를 실행하여 own 임원. 임원의 개인 디바이스가 목록에 있는 경우, 개인과 회사의 신원을 혼용하는 것으로 '업무 분리' 원칙을 위반하는 것입니다.
- 엔드포인트 격리: 회사 데이터에 액세스하는 모바일 장치를 관리(MDM)하세요. 장치가 다음에 취약한 것으로 확인된 경우 CVE-2026-21858로 설정하면 MDM은 패치가 적용될 때까지 액세스 토큰을 자동으로 취소해야 합니다.
결론
Ghunt V2는 초연결 세상에서 우리 모두가 데이터를 유출하고 있다는 사실을 증명합니다. 보안 엔지니어에게는 정교한 위협 행위자를 시뮬레이션하는 데 필요한 세분성을 제공합니다.
그러나 OSINT 데이터와 다음과 같은 복잡한 취약성 체인의 수동 상관 관계는 다음과 같습니다. CVE-2026-21858 그리고 CVE-2025-68613 는 인간 팀에게는 지속 불가능해지고 있습니다. 미래는 다음과 같은 플랫폼에 있습니다. Penligent.ai와 같은 도구의 정밀성과 에이전틱 AI의 추론 능력을 융합하여 기계의 속도로 이러한 노출 창을 식별하고 닫을 수 있습니다.
참조:

