
Un ingestor basé sur Python pour BloodHound
J'avais besoin de BloodHound avec la prise en charge de Kerberos et j'ai trouvé ce commentaire. Il s'avère qu'il y avait une branche supportant l'authentification Kerberos depuis le début ! Je me suis permis de fusionner cette branche dans master pour obtenir ces superbes exports BloodHound 4.2+. Tout le crédit revient aux personnes qui ont réellement écrit le code :)
Comme l'a dit M. Dirkjan lui-même, cela "nécessite plus de travail et de tests". Cela pourrait ne pas fonctionner dans tous les cas, alors veuillez signaler tout problème rencontré et nous pourrons essayer de les corriger. Peut-être qu'un jour nous pourrons soumettre ceci en tant que PR au dépôt principal.
$ python3 /opt/BloodHound.py/bloodhound.py -u redacted -k -d absolute.htb -dc dc.absolute.htb -ns 10.129.202.227 --dns-tcp --zip -no-pass -c All
INFO: Found AD domain: absolute.htb
INFO: Using TGT from cache
INFO: Found TGT with correct principal in ccache file.
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 18 users
INFO: Found 55 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.absolute.htb
INFO: Ignoring host dc.absolute.htb since its reported name does not match
INFO: Done in 00M 02S
INFO: Compressing output into 20220926135518_bloodhound.zip
Si vous obtenez des erreurs DNS, vous pouvez essayer de pointer le DNS vers vous-même avec -ns 127.0.0.1 tout en exécutant dnschef :
python3 dnschef.py --fakeip <dc ip> --fakedomains <domain> -q
BloodHound.py est un ingestor basé sur Python pour BloodHound, basé sur Impacket.
Cette version de BloodHound.py est uniquement compatible avec BloodHound 4.2 ou plus récent. Pour la gamme 3.x, utilisez la version 1.1.1 via pypi. Depuis la version 1.3, BloodHound.py ne prend en charge que Python 3 ; Python 2 n'est plus testé et pourrait casser à l'avenir.
BloodHound.py présente actuellement les limitations suivantes :
Vous pouvez installer l'ingestor via pip avec pip install bloodhound, ou en clonant ce dépôt et en exécutant python setup.py install, ou avec pip install ..
BloodHound.py nécessite impacket, ldap3 et dnspython pour fonctionner.
L'installation ajoutera un outil en ligne de commande bloodhound-python à votre PATH.
Pour utiliser l'ingestor, vous aurez besoin au minimum des identifiants du domaine dans lequel vous vous connectez.
Vous devrez spécifier l'option -u avec un nom d'utilisateur de ce domaine (ou username@domain pour un utilisateur dans un domaine approuvé). Si votre DNS est correctement configuré et que le domaine AD est dans votre liste de recherche DNS, BloodHound.py détectera automatiquement le domaine pour vous. Sinon, vous devez le spécifier manuellement avec l'option -d.
Par défaut, BloodHound.py interrogera LDAP et les ordinateurs individuels du domaine pour énumérer les utilisateurs, les ordinateurs, les groupes, les relations d'approbation (trusts), les sessions et les administrateurs locaux.
Si vous souhaitez restreindre la collecte, spécifiez le paramètre --collectionmethod, qui prend en charge les options suivantes (similaire à SharpHound) :
Plusieurs méthodes de collecte doivent être séparées par une virgule, par exemple : -c Group,LocalAdmin
Vous pouvez remplacer certaines options de détection automatique, comme le nom d'hôte du contrôleur de domaine principal si vous souhaitez utiliser un autre contrôleur de domaine avec -dc, ou spécifier votre propre catalogue global avec -gc.
docker build -t bloodhound .docker run -v ${PWD}:/bloodhound-data -it bloodhoundbloodhound-python dans le conteneur ; toutes les données seront stockées dans le chemin à partir duquel vous démarrez le conteneur.