Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
profilehound — ProfileHound - 도메인 머신에 저장된 사용자 프로필을 수집하는 BloodHound OpenGraph 수집기입니다. 도메인 머신에서 활성 사용자 프로필을 식별하여 비밀 탈취에 대한 정보에 기반한 결정을 내릴 수 있습니다. | Kitploit
도구/GitHubGitHub/m4lwhere/profilehound
OSINT (Open Source Intelligence)ReconnaissanceLateral MovementInformation GatheringPost-ExploitationPenetration TestingRed Teaming
GitHubm4lwhere/profilehound

profilehound

ProfileHound - 도메인 머신에 저장된 사용자 프로필을 수집하는 BloodHound OpenGraph 수집기입니다. 도메인 머신에서 활성 사용자 프로필을 식별하여 비밀 탈취에 대한 정보에 기반한 결정을 내릴 수 있습니다.

저장소 보기
16393개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
root@kitploit:~
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/

ProfileHound

ProfileHound는 권한 상승 후(post-escalation) 도구로, 머신에서 도메인 사용자 프로필을 찾아 레드팀 목표를 달성하는 데 도움을 줍니다. BloodHound OpenGraph 형식을 사용하여 HasUserProfile이라는 새 엣지를 구축하며, 이 엣지는 컴퓨터에 사용자 프로필이 존재하는지 확인합니다. 이 엣지를 통해 운영자는 비밀을 약탈하기 위해 어떤 컴퓨터를 대상으로 할지 정보에 기반한 결정을 내릴 수 있습니다.

이 도구는 사용자 프로필을 열거하기 위해 대상 컴퓨터의 C$ 공유에 대한 관리자 액세스가 필요합니다.

Remi Gascou (@podalirius) 님의 ShareHound 및 bhopengraph 도구에 큰 감사를 드립니다. 이 데이터를 수집하는 도구를 오랫동안 만들고 싶었는데, 이 라이브러리들을 사용하여 기반 작업 대신 구축에 집중할 수 있었습니다.

[!WARNING] ProfileHound는 개발 초기 단계에 있으며 아직 모든 수집 모드가 구현되지 않았습니다. 프로덕션 환경에서 사용 시 주의하십시오. 이 도구 사용에 따른 위험은 사용자가 부담합니다.

Why?

Active Directory에서 포스트 익스플로잇 목표는 사내 데이터에서 SaaS 애플리케이션과 클라우드로 이동했습니다. 오프섹(offsec)에서 가치를 입증하려면 이러한 서비스에 대한 액세스가 어떻게 손상될 수 있는지 보여줘야 합니다. 대부분의 경우 이러한 서비스는 HR, 재무 등 특정 그룹이나 사용자만 사용합니다. 일부 시나리오에서는 특정 SaaS 애플리케이션에 특정 머신에서만 액세스할 수 있습니다.

BloodHound의 HasSession 엣지는 훌륭하지만, 사용자가 머신에 로그인한 경우에만 유용합니다. 데이터 수집 시점에 사용자가 머신에 로그인하지 않은 경우, 추가 익스플로잇을 용이하게 할 비밀이 포함된 컴퓨터를 찾기 어려울 수 있습니다. 사용자 프로필에는 DPAPI, 캐시된 자격 증명, SSH 키, 클라우드 키 등 상당량의 중요한 정보가 포함될 수 있습니다. 이러한 정보는 활성 사용자 세션이 없어도 액세스할 수 있습니다.

HasUserProfile Edge Example

ProfileHound는 BloodHound의 OpenGraph 형식을 사용하여 HasUserProfile이라는 새 그래프 엣지를 구축하며, 이 엣지는 도메인 머신에 사용자 프로필이 존재하는지 확인합니다. 이는 운영자가 고가치 사용자나 그룹의 프로필이 있는 컴퓨터에 집중할 수 있도록 도와줍니다.

HasUserProfile 엣지에는 프로필 생성일 및 최종 수정일 속성이 포함됩니다. 이 정보를 통해 다음을 판단할 수 있습니다.

  • 프로필이 활발히 사용되고 있는지 (최근 며칠 내 로그인)
  • 프로필이 수년간 사용되었는지 (많은 비밀이 포함될 가능성이 높음!)

HasUserProfile Edge Properties Example

Installation

pipx를 사용하여 ProfileHound 설치 (의존성 지옥을 피하려는 경우):

root@kitploit:~
pipx install profilehound

최신 버전을 사용하려면 소스에서 설치할 수 있습니다:

root@kitploit:~
pipx install git+https://github.com/m4lwhere/profilehound.git

Docker

컨테이너화된 접근 방식을 사용하려면 다음 명령어로 이미지를 빌드하고 도구를 실행하십시오:

root@kitploit:~
docker build -t profilehound .
docker run --rm profilehound --help
docker run --rm -v ${PWD}:/profilehound profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --dns 192.168.57.10 --auth-dc-ip 192.168.57.10

Usage

예를 들어, 도메인 관리자 계정 sccm.lab\alice와 비밀번호 whiteRabbit을 사용하여 실행하려면:

root@kitploit:~
$ profilehound --auth-user alice --auth-password whiteRabbit --auth-domain sccm.lab --target 192.168.57.0/27
    ____             _____ __     __  __                      __
   / __ \_________  / __(_) /__  / / / /___  __  ______  ____/ /
  / /_/ / ___/ __ \/ /_/ / / _ \/ /_/ / __ \/ / / / __ \/ __  /
 / ____/ /  / /_/ / __/ / /  __/ __  / /_/ / /_/ / / / / /_/ /
/_/   /_/   \____/_/ /_/_/\___/_/ /_/\____/\__,_/_/ /_/\__,_/    v0.1.1
@m4lwhere

BloodHound CE OpenGraph collector for user profiles stored on domain machines.

[12/30/25 11:58:05] INFO     Loaded 32 targets
[12/30/25 11:58:08] INFO     Successful authentication on 192.168.57.10 (192.168.57.10) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.10\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.10\C$\Users\...
                    INFO         vagrant:    S-1-5-21-3016982856-3796307652-1246469985-1000  created:2025-11-07      modified:2025-11-07
                    INFO     Found 1 domain profile(s) for 192.168.57.10
                    INFO     Successful authentication on 192.168.57.11 (192.168.57.11) as sccm.lab\alice
[12/30/25 11:58:09] INFO     Successfully connected to share \\192.168.57.11\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.11\C$\Users\...
                    INFO         administrator:      S-1-5-21-3016982856-3796307652-1246469985-500   created:2025-11-07      modified:2025-11-07
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-11-07
                    INFO         eve:        S-1-5-21-3016982856-3796307652-1246469985-1116  created:2025-12-27      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.11
                    INFO     Successful authentication on 192.168.57.12 (192.168.57.12) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.12\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.12\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-28      modified:2025-12-28
                    INFO         franck:     S-1-5-21-3016982856-3796307652-1246469985-1117  created:2025-12-27      modified:2025-11-07
                    INFO         sccm-sql:   S-1-5-21-3016982856-3796307652-1246469985-1121  created:2025-11-07      modified:2025-11-07
                    INFO     Found 3 domain profile(s) for 192.168.57.12
                    INFO     Successful authentication on 192.168.57.13 (192.168.57.13) as sccm.lab\alice
                    INFO     Successfully connected to share \\192.168.57.13\C$ as sccm.lab\alice
                    INFO     Enumerating profiles in \\192.168.57.13\C$\Users\...
                    INFO         alice:      S-1-5-21-3016982856-3796307652-1246469985-1112  created:2025-12-26      modified:2025-12-28
                    INFO         sccm-account-da:    S-1-5-21-3016982856-3796307652-1246469985-1119  created:2025-12-26      modified:2025-11-07
                    INFO     Found 2 domain profile(s) for 192.168.57.13
[12/30/25 11:59:27] INFO     Found 4 machines with profiles
                    INFO     Exported OpenGraph intel to profilehound_20251230-115805.json

이렇게 하면 현재 디렉토리에 profilehound_20251230-115805.json 파일이 생성됩니다. 이 파일을 BloodHound UI로 드래그 앤 드롭하여 BHCE에 직접 가져올 수 있습니다. 자동으로 파싱되어 SID를 통해 노드를 연결합니다. 새 엣지 HasUserProfile이 생성되어 사용자와 프로필 간의 관계를 보여줍니다.

ProfileHound는 완료되면 콘솔에 작은 통계 요약을 추가로 출력합니다:

root@kitploit:~
╭───────────────────────── General Summary ──────────────────────────────╮
│        ProfileHound Statistics                                         │
│  Total Targets with Profiles    4                                      │
│  Total Unique Profiles (Users)  7                                      │
│  Average Profiles per Target    2.25                                   │
╰────────────────────────────────────────────────────────────────────────╯
       Top Connected Users
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ 3             │
│ vagrant       │ 1             │
│ administrator │ 1             │
│ eve           │ 1             │
│ franck        │ 1             │
└───────────────┴───────────────┘
     Top Populated Machines
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Machine       ┃ Profile Count ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ 192.168.57.11 │ 3             │
│ 192.168.57.12 │ 3             │
│ 192.168.57.13 │ 2             │
│ 192.168.57.10 │ 1             │
└───────────────┴───────────────┘
                       Oldest User Profiles
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User            ┃ Machine         ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ vagrant         │ DC.sccm.lab     │ 2025-11-07 │ 2025-11-07    │
│ sccm-sql        │ MSSQL.sccm.lab  │ 2025-11-07 │ 2025-11-07    │
│ administrator   │ MECM.sccm.lab   │ 2025-11-07 │ 2025-11-07    │
│ sccm-account-da │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-11-07    │
│ alice           │ CLIENT.sccm.lab │ 2025-12-26 │ 2025-12-28    │
└─────────────────┴─────────────────┴────────────┴───────────────┘
                Longest Lived Profiles (Created -> Modified)
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ User          ┃ Machine         ┃ Age (Days) ┃ Created    ┃ Last Modified ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ alice         │ CLIENT.sccm.lab │ 1.8        │ 2025-12-26 │ 2025-12-28    │
│ alice         │ MSSQL.sccm.lab  │ 0.0        │ 2025-12-28 │ 2025-12-28    │
│ sccm-sql      │ MSSQL.sccm.lab  │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ administrator │ MECM.sccm.lab   │ 0.0        │ 2025-11-07 │ 2025-11-07    │
│ vagrant       │ DC.sccm.lab     │ 0.0        │ 2025-11-07 │ 2025-11-07    │
└───────────────┴─────────────────┴────────────┴────────────┴───────────────┘
                     Top 5 Machines to Focus On (Hubs)
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Machine         ┃ Score ┃ Reason                                         ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ MECM.sccm.lab   │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ MSSQL.sccm.lab  │ 4.5   │ Has 3 profiles, potential lateral movement hub │
│ CLIENT.sccm.lab │ 3.5   │ Has 2 profiles, potential lateral movement hub │
│ DC.sccm.lab     │ 1.0   │ Has 1 profiles, potential lateral movement hub │
└─────────────────┴───────┴────────────────────────────────────────────────┘

How it Works

ProfileHound는 C$ 공유를 사용하여 \\<target>\C$\Users\에서 도메인 머신의 사용자 프로필을 열거합니다. 사용자의 NTUSER.DAT 파일을 읽어 파일 메타데이터에서 SID를 검색하여 도메인 계정인지 로컬 계정인지 확인합니다. 예를 들어, \\<target>\C$\Users\의 모든 사용자 디렉토리를 수집한 다음 각 디렉토리를 반복하여 \\<target>\C$\Users\<username>\NTUSER.DAT에서 NTUSER.DAT 파일을 찾습니다. NTUSER.DAT 파일이 잘 알려진 SID(well-known SID)에 소유된 경우, DPAPI 디렉토리(예: \\<target>\C$\Users\<username>\AppData\Roaming\Microsoft\Protect\<SID>)를 읽어 사용자의 SID를 찾으려고 시도합니다.

C$ 공유에 접근하므로 대상 머신에 인증하려면 관리자 계정이 필요합니다. ProfileHound는 제공된 자격 증명을 사용하여 대상 머신에 인증합니다. 도메인 계정을 사용하는 경우 --auth-domain 옵션으로 도메인을 지정할 수 있습니다. 로컬 계정을 사용하는 경우 --smb-local-auth 옵션을 사용하십시오.

기본적으로 ProfileHound는 계정 잠금 위험을 줄이기 위해 SMB 도메인 인증 실패 시 중지됩니다. 일부 엔드포인트가 도메인 인증을 거부할 것으로 예상되고 나머지 대상 스캔을 계속하려면 --smb-ignore-failed-domain-auth를 사용하십시오.

프로필이 이미 발견된 후 SMB 데이터 수집 중 ProfileHound가 중지되면, 종료 전에 부분적인 OpenGraph 결과를 내보내려고 시도합니다.

NTUSER.DAT 파일의 생성 시간과 최종 수정 시간이 수집되며, 이를 사용하여 프로필이 활성 상태인지 확인할 수 있습니다. 이 상관관계는 엣지 속성에 대한 cypher 쿼리 내에서 처리됩니다. 아래에 예시가 있습니다.

흥미로운 점은 NTUSER.DAT 파일의 최종 수정 시간이 생성 시간보다 이전인 경우, 프로필이 생성되었지만 실질적으로 사용되지 않았을 가능성이 높다는 것입니다. 이 조건은 새 사용자 프로필이 생성될 때 NTUSER.DAT 파일이 C:\Users\Default 프로필에서 복사되어 생성 시간이 더 나중임에도 동일한 수정 시간을 유지하기 때문에 발생합니다. 따라서 특정 프로필에 비밀이 포함되지 않을 것이라고 상당히 확신할 수 있습니다.

Selecting Targets

ProfileHound는 @podalirius_ 의 ShareHound를 라이브러리로 사용하여 대상을 열거합니다. --target 또는 --target-file 옵션이 제공되지 않으면 ProfileHound는 LDAP에 연결하여 도메인의 모든 머신 FQDN을 자동으로 수집합니다.

Fun Queries

이 데이터에서 많은 강력한 결론을 도출할 수 있으며, 주의를 집중해야 할 위치를 알려줍니다. 이 모든 쿼리는 ProfileHound_Cypher_Queries.zip 파일을 BloodHound UI의 저장된 쿼리 페이지에서 가져오기 버튼을 사용하여 드래그 앤 드롭하면 BloodHound로 가져올 수 있습니다. 다음은 몇 가지 예시입니다:

모든 사용자 프로필 엣지 찾기

이는 그래프에서 모든 사용자 프로필을 찾는 간단한 쿼리입니다.

root@kitploit:~
MATCH p=(u:User)-[:HasUserProfile]->(c:Computer)
RETURN p

그룹 이름으로 사용자 프로필 찾기

이는 도메인 "Administrators" 그룹의 구성원인 모든 사용자 프로필을 찾습니다.

root@kitploit:~
MATCH p=(g:Group)<-[:MemberOf*1..]-(u:User)-[:HasUserProfile]->(c:Computer)
WHERE toLower(g.samaccountname) = "administrators"
RETURN p

최근 3일 이내에 활성화된 사용자 프로필 찾기

이는 지난 3일 이내에 수정된 모든 사용자 프로필을 찾습니다. 이는 사용자 프로필이 사용자의 기본 머신일 가능성이 높고 좋은 전리품이 있을 수 있는 위치를 파악하는 데 도움이 됩니다.

root@kitploit:~
WITH 3 as active_days
MATCH p = (u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400))
RETURN p

특정 그룹 내에서 활성화된 사용자 프로필 (강력함)

이는 특정 그룹의 구성원에 대해 지난 3일 이내에 사용된 특정 사용자 프로필을 찾는 매우 강력한 쿼리입니다.

root@kitploit:~
WITH 3 as active_days, "administrators" as group_name
MATCH p = (g:Group)<-[:MemberOf*1..]-(u:User)-[e:HasUserProfile]-(c:Computer)
WHERE e.profileModified > (datetime().epochseconds - (active_days * 86400)) AND toLower(g.samaccountname) = group_name
RETURN p

사용되지 않은 사용자 프로필 제거

이는 NTUSER.DAT 파일의 수정 시간이 생성 시간보다 이전인 모든 사용자 프로필을 제거합니다. 이는 프로필이 생성되었지만 실질적으로 사용되지 않았음을 나타냅니다. 이 조건은 새 사용자 프로필이 생성될 때 NTUSER.DAT 파일이 C:\Users\Default 프로필에서 복사되어 생성 시간이 더 나중임에도 동일한 수정 시간을 유지하기 때문에 발생합니다.

root@kitploit:~
match p = (u:User)-[e:HasUserProfile]-(c:Computer)
where e.profileCreated < e.profileModified
return p

Credits

이 작업은 Remi Gascou (@podalirius) 님의 ShareHound 및 bhopengraph 라이브러리가 없었다면 불가능했을 것입니다.

Future Improvements

이 도구의 초점은 특정 사용자에 대한 비밀이 포함될 가능성이 가장 높은 머신을 결정하는 것입니다. 향후 개선 사항은 다음과 같습니다:

  • @garrettfoster13의 SCCMHunter를 라이브러리로 구현하여 데이터 수집을 개선합니다.
    • get_lastlogon 함수를 사용하여 머신에서 HasUserProfile 엣지를 생성합니다.
    • get_puser 함수를 사용하여 도메인 사용자를 특정 머신의 주요 장치 소유자로 연결합니다.
  • AzureHound에서 Azure AD 장치 소유권 상관 관계를 구현합니다.
    • 이는 이미 .data.owners[owner.DeviceOwner.onPremisesSecurityIdentifier]에서 AZDeviceOwner 객체로 수집되는 것으로 보입니다.
  • ShareHound를 사용하여 일치하는 프로필에서 민감한 파일을 스파이더링하고 그래프에 수집합니다.
  • NTUSER.DAT 파일에서 최근 프로그램, 문서 및 브라우저 활동을 마이닝합니다.
도구 다운로드