-
Notifications
You must be signed in to change notification settings - Fork 28
Troubleshooting and FAQ
Run with module entrypoint:
python -m gcpwnIf installed via pip, confirm the Python environment and PATH.
Install optional table dependency:
pip install prettytable==3.17.0Then:
configs set std_output_format tableInstall optional dependency:
pip install xlsxwriter==3.2.9Then rerun:
data export excelGoogle retired both the Game Servers (gameservices) and Cloud Life Sciences APIs.
Game Servers was enumerable during early development but has been removed — the API
returns 404 and the client library no longer imports on Python 3.12+ — so there is no
enum_gameservers module. These are dead upstream APIs, nothing to enumerate.
enum_asset_inventory is opt-in. A bare modules run enum_all deliberately skips it
because org-wide CAI scans are slow. It is additive: run modules run enum_all --asset-inventory
to do everything PLUS the CAI scan, or run modules run enum_asset_inventory on its own.
When it runs it upserts into the shared tables (IAM allow policies, hierarchy, service
accounts/keys/roles, compute instances, WIF), so it doubles as a fallback when per-service
enumeration is denied but cloudasset.* is granted.
The Google Workspace modules need a service account with domain-wide delegation and an
admin subject to impersonate. Set it once with configs set workspace_admin_subject admin@yourdomain.com, or pass --impersonate admin@yourdomain.com on the module. See
Authentication Reference.
If you have a Cloud Asset Inventory export (NDJSON from gcloud asset export, or a JSON
array of assets), you can build the BloodHound OpenGraph graph directly from that file —
no prior enumeration and no SQLite required:
modules run process_og_gcpwn_data --cai-file ./cai_export.json -o ./bh_outThe graph is exported to the -o/--out directory but is not persisted to the
workspace's opengraph tables.
Run IAM policy collection first:
modules run enum_gcp_policy_bindings --ensure-treeCause: required permissions in a rule are not in gcpwn/mappings/og_permission_to_roles_map.json.
Fix:
- Add missing permissions to your permission-role mapping workflow input.
- Rebuild/update
og_permission_to_roles_map.json. - Re-run OpenGraph.
See OpenGraph - Add Your Own Content.
Current conditionals engine is placeholder / pass-through:
- condition metadata is preserved and propagated. A conditioned binding gets a
deterministic node-id suffix
#cond:<10-hex-hash>plusconditional=true,condition_expr_raw, andcondition_hashproperties. - the CEL expression itself is not evaluated. The same expression always hashes to the same node (dedup); distinct expressions become distinct nodes.
-
--cond-evalruns the conditional workflow in pass-through mode only — it does not narrow resources yet, so output is identical whether it is on or off.
Use condition fields as context, not a guaranteed deny/allow evaluator.
There is no single "findings" module — practical analysis today runs through:
-
process_gcp_iam_bindings(the materialized who-can-do-what report) - OpenGraph output + BloodHound queries (attack-path modeling)
- Authentication Reference
- Workspace Instructions
- Google Workspace Enumeration
- CLI Module Reference
- Enumeration Module Reference
- Exploit Module Reference
- Downloads to Disk
- Logging & Verbosity
- Data View/Export
- IAM Enumeration and Analysis Workflow
- Troubleshooting and FAQ