Description
While reading Bloodhound.py, a Linux alternative to Sharphound, we observed that object collection is performed on a case-by-case basis. Specific conditions are evaluated to determine the most relevant information for each collected object, and tailored actions are taken accordingly.
We sought to follow a similar logic while implementing Soaphound.py, aiming to collect the most valuable information during object enumeration through ADWS. In addition, as users' session on machines are not collected throught LDAP, we reused Bloodhound.py way to perform this collect.
The tool is currently being improved to cover all specific data collection scenarios. At the time of writing, it is capable of collecting Active Directory objects via the ADWS service and retrieving remote session data similar to what BloodHound.py achieves. Alternatively, it can operate in a mode restricted to collecting only AD objects through ADWS (using option -c ADWSOnly).
More informations: you may check out the short blog post
Usage
usage: soaphound [-h] [-c COLLECTIONMETHOD] -d DOMAIN [-v] [--ts] -u USERNAME [-p PASSWORD] [--hashes HASHES] -dc HOST [--zip] [-op PREFIX_NAME] [-wk NUM_WORKERS] [--output-dir OUTPUT_DIR]
Python based ingestor for BloodHound using ADWS
options:
-h, --help show this help message and exit
-c COLLECTIONMETHOD, --collectionmethod COLLECTIONMETHOD
Which information to collect : Default or ADWSOnly (no computer connections).
-d DOMAIN, --domain DOMAIN
Domain to query.
-v Enable verbose output.
--ts Add timestamp to logs.
authentication options:
NTLM is the only method supported at the moment.
-u USERNAME, --username USERNAME
Username. Format: username[@domain]; If the domain is unspecified, the current domain is used.
-p PASSWORD, --password PASSWORD
Password
--hashes HASHES LM:NLTM hashes
collection options:
-dc HOST, --domain-controller HOST
DC to query (hostname)
--zip Compress the JSON output files into a zip archive.
-op PREFIX_NAME, --outputprefix PREFIX_NAME
String to prepend to output file names.
-wk NUM_WORKERS, --worker_num NUM_WORKERS
Number of workers, default 100
--output-dir OUTPUT_DIR
Output folder (default .).
Installation
With poetry
poetry install
Example Usage
Perform ADWS collection with session enumerations
poetry run soaphound -d <domain> -u <user> -p <password> -dc <dc-ip> --output-dir output
Perform only ADWS collection
poetry run soaphound -d <domain> -u <user> -p <password> -dc <dc-ip> --output-dir output -c ADWSOnly
References
- Falcon Force Team for the initial inspiration.
- Bloodhound.py, for this amazing implementation of Bloodhound ingestor.
- Microsoft for the official protocol documentation.
- ERNW for the initial boost.
- X-force Red for their brilliant implementation of NBFX and research insights.
- Rabobank red team for sharing valuable resources and operational insights.
Metadata
Release files for soaphound 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| soaphound-0.1.2.tar.gz | 222.4 kB | Without provenance | Details for soaphound-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| soaphound-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for soaphound-0.1.2-py3-none-any.whl |
Total release size: 382.0 kB
Release files / soaphound-0.1.2.tar.gz
| Download URL | soaphound-0.1.2.tar.gz |
|---|---|
| Size | 222.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34fe37337f8bc73b50a2bf4e4d6742df6d6580a417365d66ced6f36015b7ab6c
|
|
BLAKE2b-256 checksum How to use checksums |
72a66ffcddc4051eb842bf3998d1715a913ebf6d0d9458a515bd78c6397f2bfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / soaphound-0.1.2-py3-none-any.whl
| Download URL | soaphound-0.1.2-py3-none-any.whl |
|---|---|
| Size | 159.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cee8dcc85293cac91f8560ab0a62318a86886bc8892e5f45254508cb23ba22f2
|
|
BLAKE2b-256 checksum How to use checksums |
2f6c32bc4b4916fdbfe5feceb60e129656f21a1db39fcd181feced9d82c6cbdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for soaphound 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.