이것은 이제 SHARPHOUND를 위해 사용되지 않습니다. 이 방법으로 수집된 데이터는 BloodHound 4.1+에서 작동하지 않습니다.
SharpHound - BloodHound 수집기의 C# 재작성
SharpHound 다운로드
SharpHound의 최신 빌드는 항상 BloodHound 저장소 여기에 있습니다.
컴파일 지침
SharpHound는 C# 9.0 기능을 사용하여 작성되었습니다. 이 프로젝트를 쉽게 컴파일하려면 Visual Studio 2019를 사용하십시오.
이전 버전의 Visual Studio에서 컴파일하려면 Microsoft.Net.Compilers NuGet 패키지를 설치할 수 있습니다.
프로젝트를 빌드하면 실행 파일과 실행 파일을 캡슐화하는 PowerShell 스크립트가 생성됩니다. 모든 종속성은 바이너리에 통합됩니다.
요구 사항
SharpHound는 .NET 4.5를 대상으로 설계되었습니다. SharpHound는 도메인 사용자 컨텍스트에서 실행되어야 하며, 직접 로그온 또는 RUNAS와 같은 다른 방법을 통해 실행할 수 있습니다.
추가 정보
사용법
열거 옵션
- CollectionMethod - 사용할 수집 방법. 쉼표로 구분된 값 목록을 허용합니다. 가능한 값은 다음과 같습니다 (기본값: Default):
- Default - 그룹 멤버십 수집, 도메인 트러스트 수집, 로컬 그룹 수집, 세션 수집, ACL 수집, 개체 속성 수집, SPN 대상 수집을 수행합니다.
- Group - 그룹 멤버십 수집을 수행합니다.
- LocalAdmin - 로컬 관리자 수집을 수행합니다.
- RDP - 원격 데스크톱 사용자 수집을 수행합니다.
- DCOM - 분산 COM 사용자 수집을 수행합니다.
- PSRemote - 원격 관리 사용자 수집을 수행합니다.
- GPOLocalGroup - 그룹 정책 개체를 사용하여 로컬 관리자 수집을 수행합니다.
- Session - 세션 수집을 수행합니다.
- ComputerOnly - 로컬 관리자, RDP, DCOM 및 세션 수집을 수행합니다.
- LoggedOn - 권한 있는 세션 수집을 수행합니다 (대상 시스템에 대한 관리자 권한 필요).
- Trusts - 도메인 트러스트 열거를 수행합니다.
- ACL - ACL 수집을 수행합니다.
- Container - 컨테이너 수집을 수행합니다.
- DcOnly - LDAP만 사용하여 수집을 수행합니다. Group, Trusts, ACL, ObjectProps, Container 및 GPOLocalGroup을 포함합니다.
- ObjectProps - LastLogon 또는 PwdLastSet과 같은 속성에 대한 개체 속성 수집을 수행합니다.
- All - GPOLocalGroup을 제외한 모든 수집 방법을 수행합니다.
- Domain - 특정 도메인을 검색합니다. null이면 현재 도메인을 사용합니다 (기본값: null)
- Stealth - 은밀 수집 방법을 수행합니다. 모든 은밀 옵션은 단일 스레드입니다.
- ExcludeDomainControllers - 열거에서 도메인 컨트롤러를 제외합니다 (Microsoft ATA 플래그 회피 :) )
- ComputerFile - 컴퓨터 이름/IP를 로드할 파일을 지정합니다.
- LdapFilter - 검색에 추가할 LDAP 필터
- OverrideUserName - 세션 열거를 위한 사용자 이름을 재정의합니다 (고급)
- RealDNSName - API 호출을 위한 DNS 이름을 재정의합니다.
- CollectAllProperties - 하위 집합 대신 모든 문자열 LDAP 속성을 수집합니다.
- WindowsOnly - 운영 체제가 *Windows*와 일치하는 시스템으로 컴퓨터 수집을 제한합니다.
루프 옵션
- Loop - 컴퓨터 수집을 반복합니다.
- LoopDuration - 반복할 시간
- LoopInterval - 루프 사이 대기 시간
연결 옵션
- DomainController - 연결할 도메인 컨트롤러를 지정합니다 (기본값: null)
- LdapPort - LDAP 포트를 지정합니다 (기본값: 0)
- SecureLdap - 일반 LDAP 대신 보안 LDAP를 사용하여 AD에 연결합니다. 기본적으로 포트 636에 연결됩니다.
- LdapUsername - LDAP에 연결할 사용자 이름. LDAPPassword 매개변수도 필요합니다 (기본값: null)
- LdapPassword - LDAP에 연결할 사용자 비밀번호. LDAPUser 매개변수도 필요합니다 (기본값: null)
- DisableKerberosSigning - LDAP 암호화를 비활성화합니다. 권장되지 않습니다.
성능 옵션
- PortScanTimeout - ping 요청의 타임아웃을 밀리초 단위로 지정합니다 (기본값: 2000)
- SkipPortScan - 시스템이 켜져 있는지 확인하기 위해 ping 요청을 건너뛰도록 Sharphound에 지시합니다.
- Throttle - 컴퓨터에 각 요청 후 지연을 추가합니다. 값은 밀리초 단위입니다 (기본값: 0)
- Jitter - 스로틀에 백분율 지터를 추가합니다. (기본값: 0)
출력 옵션
- OutputDirectory - JSON 파일을 저장할 폴더 (기본값: .)
- OutputPrefix - JSON 파일에 추가할 접두사 (기본값: "")
- NoZip - JSON 파일을 zip 파일로 압축하지 않습니다. JSON 파일을 디스크에 남깁니다. (기본값: false)
- EncryptZip - zip 파일에 무작위로 생성된 비밀번호를 추가합니다.
- ZipFileName - zip 파일 이름을 지정합니다.
- RandomizeFilenames - 출력 파일 이름을 무작위로 지정합니다.
- PrettyJson - 가독성을 높이기 위해 여러 줄에 들여쓰기로 JSON을 출력합니다. 단점은 파일 크기가 증가합니다.
- DumpComputerStatus - 컴퓨터 연결 시 오류 코드를 덤프합니다.
캐시 옵션
- CacheFileName - SharpHound 캐시 파일 이름. (기본값: .bin)
- NoSaveCache - 캐시 파일을 디스크에 저장하지 않습니다. 이 플래그가 없으면 .bin이 디스크에 저장됩니다.
- InvalidateCache - 캐시 파일을 무효화하고 새 캐시를 구축합니다.
기타 옵션
- StatusInterval - 열거 중 진행 상황을 표시하는 간격 (밀리초) (기본값: 30000)