-
Notifications
You must be signed in to change notification settings - Fork 5
feat: add azure variant of ares golden image and update source repo #249
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
dbfd9d4
4c7f325
acdecb4
86968e0
535946b
3258b2f
1076e35
336b62e
5fc9aee
9541bfa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,34 @@ | ||||||||||||||||||||||||||||||||||||
| # ares-golden-azure | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| Azure variant of the Ares golden image. Builds a Kali Linux image via Azure | ||||||||||||||||||||||||||||||||||||
| VM Image Builder and publishes a version into the `warpgateTestGallery` Compute | ||||||||||||||||||||||||||||||||||||
| Gallery, with feature parity against the AWS `ares-golden-image` AMI. | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| Ships the same red-team toolchain installed by | ||||||||||||||||||||||||||||||||||||
| `ansible/playbooks/ares/goad_attack_box.yml`: | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| - recon, credential access, privilege escalation | ||||||||||||||||||||||||||||||||||||
| - password cracking (hashcat from source, GPU-accelerated) | ||||||||||||||||||||||||||||||||||||
| - lateral movement, ACL abuse, coercion | ||||||||||||||||||||||||||||||||||||
| - Alloy telemetry agent | ||||||||||||||||||||||||||||||||||||
| - NVIDIA driver + CUDA toolkit for T4 GPU acceleration | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| ## Prerequisites | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| Provisioned manually (one-time): | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| - Resource group `warpgate-test-rg` in `eastus` | ||||||||||||||||||||||||||||||||||||
| - Compute Gallery `warpgateTestGallery` | ||||||||||||||||||||||||||||||||||||
| - Image definition `ares-golden-azure` (Linux, Generalized, HyperV V2, | ||||||||||||||||||||||||||||||||||||
| publisher=`dreadnode`, offer=`ares`, sku=`golden`) | ||||||||||||||||||||||||||||||||||||
| - User-assigned managed identity `warpgate-aib-uami` | ||||||||||||||||||||||||||||||||||||
| with Contributor on `warpgate-test-rg` | ||||||||||||||||||||||||||||||||||||
|
Comment on lines
+18
to
+25
|
||||||||||||||||||||||||||||||||||||
| Provisioned manually (one-time): | |
| - Resource group `warpgate-test-rg` in `eastus` | |
| - Compute Gallery `warpgateTestGallery` | |
| - Image definition `ares-golden-azure` (Linux, Generalized, HyperV V2, | |
| publisher=`dreadnode`, offer=`ares`, sku=`golden`) | |
| - User-assigned managed identity `warpgate-aib-uami` | |
| with Contributor on `warpgate-test-rg` | |
| Provisioned manually (one-time). These values match the checked-in | |
| `warpgate.yaml` and should be kept in sync if the template values change: | |
| - Resource group `WARPGATE-TEST-RG` in `centralus` | |
| - Compute Gallery `warpgateTestGallery` | |
| - Image definition `ares-golden-azure` (Linux, Generalized, HyperV V2, | |
| publisher=`dreadnode`, offer=`ares`, sku=`golden`) | |
| - User-assigned managed identity `warpgate-aib-uami` | |
| with Contributor on `WARPGATE-TEST-RG` |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,104 @@ | ||||||||||||||||||||||||||||||
| # yaml-language-server: $schema=https://raw.githubusercontent.com/cowdogmoo/warpgate/main/schema/warpgate-template.json | ||||||||||||||||||||||||||||||
| metadata: | ||||||||||||||||||||||||||||||
| name: ares-golden-azure | ||||||||||||||||||||||||||||||
| version: 1.0.0 | ||||||||||||||||||||||||||||||
| description: Azure variant of the Ares golden image with all red team tools - recon, credential access, privesc, cracking, lateral movement, ACL abuse, and coercion | ||||||||||||||||||||||||||||||
| author: Dreadnode <info@dreadnode.io> | ||||||||||||||||||||||||||||||
| license: MIT | ||||||||||||||||||||||||||||||
| tags: | ||||||||||||||||||||||||||||||
| - ares | ||||||||||||||||||||||||||||||
| - golden-image | ||||||||||||||||||||||||||||||
| - azure | ||||||||||||||||||||||||||||||
| - red-team | ||||||||||||||||||||||||||||||
| - reconnaissance | ||||||||||||||||||||||||||||||
| - credential-access | ||||||||||||||||||||||||||||||
| - privilege-escalation | ||||||||||||||||||||||||||||||
| - password-cracking | ||||||||||||||||||||||||||||||
| - lateral-movement | ||||||||||||||||||||||||||||||
| - acl | ||||||||||||||||||||||||||||||
| - coercion | ||||||||||||||||||||||||||||||
| requires: | ||||||||||||||||||||||||||||||
| warpgate: '>=1.0.0' | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| name: ares-golden-azure | ||||||||||||||||||||||||||||||
| version: latest | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| base: | ||||||||||||||||||||||||||||||
| image: kali-linux/kali/kali-last:latest | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
| image: kali-linux/kali/kali-last:latest | |
| image: kali-linux/kali/kali-last:latest@sha256:<REPLACE_WITH_VERIFIED_KALI_IMAGE_DIGEST> |
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This step installs nvidia-driver/firmware, but the later CUDA step also installs nvidia-driver again alongside headers/dkms/CUDA. This duplication increases build time and failure surface. Consider consolidating into a single install step (or keep this step as only a probe like nvidia-smi without installing packages twice).
| # Install NVIDIA drivers for GPU-accelerated hashcat on NCas T4 v3 (T4 GPU) | |
| - type: shell | |
| inline: | |
| - apt-get update | |
| - apt-get install -y --no-install-recommends nvidia-driver firmware-misc-nonfree | |
| # Probe for NVIDIA tooling during image build; the actual driver/CUDA | |
| # installation happens later in a single consolidated step. | |
| - type: shell | |
| inline: |
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This template only defines an azure target. The repo CI workflows (e.g. test-template-builds.yaml / build-and-push-templates.yaml) assume non-AMI templates can be built as containers and will attempt warpgate build ... --registry ... --push unless explicitly skipped. As-is, this new template is likely to break those workflows. Either add a container target (if feasible) or update the workflows’ template discovery logic to skip templates that don’t include a container target (similar to the existing AMI-only skip).
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Azure target configuration hard-codes a specific subscription ID, resource group, gallery name, and managed identity resource ID. This makes the template hard to reuse across environments and may unintentionally expose internal Azure identifiers in a public repo. Prefer parameterizing these fields via variables (e.g. ${AZURE_SUBSCRIPTION_ID}, ${AZURE_RESOURCE_GROUP}, ${AZURE_IDENTITY_ID}) and documenting the required values in the README, or clearly marking these as placeholders.
| subscription_id: 70a9c8a4-6bc6-4a48-ae24-27996cea8c02 | |
| location: centralus | |
| resource_group: WARPGATE-TEST-RG | |
| gallery: warpgateTestGallery | |
| gallery_image_definition: ares-golden-azure | |
| identity_id: /subscriptions/70a9c8a4-6bc6-4a48-ae24-27996cea8c02/resourcegroups/warpgate-test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/warpgate-aib-uami | |
| vm_size: Standard_D4s_v3 | |
| subscription_id: ${AZURE_SUBSCRIPTION_ID} | |
| location: ${AZURE_LOCATION} | |
| resource_group: ${AZURE_RESOURCE_GROUP} | |
| gallery: ${AZURE_GALLERY_NAME} | |
| gallery_image_definition: ares-golden-azure | |
| identity_id: ${AZURE_IDENTITY_ID} | |
| vm_size: ${AZURE_VM_SIZE} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| # yaml-language-server: $schema=https://raw.githubusercontent.com/cowdogmoo/warpgate/main/schema/warpgate-template.json | ||
| metadata: | ||
| name: ares-golden-image | ||
|
|
@@ -36,7 +36,8 @@ | |
| sources: | ||
| - name: nimbus_range | ||
| git: | ||
| repository: https://github.com/dreadnode/ansible-collection-nimbus_range.git | ||
| repository: https://github.com/dreadnode/ares.git | ||
| ref: feat/more-attack-cov | ||
| depth: 1 | ||
|
Comment on lines
36
to
41
|
||
| auth: | ||
| token: ${GITHUB_TOKEN} | ||
|
|
@@ -60,7 +61,7 @@ | |
| - type: shell | ||
| inline: | ||
| - mkdir -p /root/.ansible/collections/ansible_collections/dreadnode/nimbus_range | ||
| - cp -r /tmp/nimbus_range/* /root/.ansible/collections/ansible_collections/dreadnode/nimbus_range/ | ||
| - cp -r /tmp/nimbus_range/ansible/. /root/.ansible/collections/ansible_collections/dreadnode/nimbus_range/ | ||
| - rm -rf /tmp/nimbus_range | ||
|
|
||
| # Install NVIDIA drivers for GPU-accelerated hashcat on g4dn (T4 GPU) | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WARPGATE_VERSIONwas bumped to v4.6.0, but the JSON schema download later in this workflow is still hard-coded tov4.4.0(schema_url = .../v4.4.0/schema/warpgate-template.json). This can lead to misleading schema validation warnings/errors when templates use fields added/changed in newer versions. Consider constructingschema_urlfromWARPGATE_VERSION(or updating it to v4.6.0) so schema validation stays in sync.