|
| 1 | +# Inject chaining and transfer |
| 2 | + |
| 3 | +This page covers two features that help you organize Injects beyond simple one-shot execution: **conditional chaining** |
| 4 | +to model multi-stage attacks, and **export/import** to reuse Injects across Scenarios and instances. |
| 5 | + |
| 6 | +## Conditional execution |
| 7 | + |
| 8 | +Conditional execution (also called **logical chaining**) lets you link Injects together so that a child Inject only |
| 9 | +runs if specific conditions on its parent are met at execution time. Conditions can be based on Expectation results |
| 10 | +(prevention, detection) or execution success/failure. |
| 11 | + |
| 12 | +### Why chain Injects? |
| 13 | + |
| 14 | +- **Model real attack chains**: execute lateral movement only if initial access succeeded. |
| 15 | +- **Reduce noise**: skip follow-up Injects when a prerequisite was blocked. |
| 16 | +- **Test decision trees**: simulate branching attacker behavior depending on defensive outcomes. |
| 17 | + |
| 18 | +### Option 1: from the Inject update form |
| 19 | + |
| 20 | +1. Open an Inject and go to the **Logical Chains** tab. |
| 21 | +2. Assign a **Parent**. The current Inject will only execute if the Parent's conditions are met. |
| 22 | +3. Assign **Children**. They will execute only if the current Inject's conditions are satisfied. |
| 23 | +4. Select the conditions: choose the relevant Expectation and toggle **Success** or **Fail**. |
| 24 | +5. Toggle the **AND / OR** operator to control whether all conditions must be met or just one. |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | +!!! note |
| 30 | + |
| 31 | + The AND/OR setting applies globally to all conditions of the Inject. You cannot mix operators. |
| 32 | + |
| 33 | +### Option 2: from the timeline |
| 34 | + |
| 35 | +1. Switch to the **timeline view** of the Injects list. |
| 36 | +2. Hover over the connection point (small dot) on the left or right of an Inject. |
| 37 | +3. Drag and drop a link to another Inject. |
| 38 | + |
| 39 | + |
| 40 | + |
| 41 | +Links created this way default to the condition **"Execution is Success"**. Edit them via the Inject update form to set |
| 42 | +more specific conditions. You can reposition or remove links by dragging them to an empty area. |
| 43 | + |
| 44 | +### In practice |
| 45 | + |
| 46 | +You are simulating a multi-stage attack: |
| 47 | + |
| 48 | +1. **Inject 1**: phishing email with a malicious attachment. |
| 49 | +2. **Inject 2**: Payload execution on the endpoint (child of Inject 1, condition: *Prevention expectation = Fail*). |
| 50 | +3. **Inject 3**: lateral movement (child of Inject 2, condition: *Execution = Success*). |
| 51 | + |
| 52 | +If the EDR blocks the attachment (Prevention = Success), Inject 2 and 3 are automatically skipped. |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## Export and import |
| 57 | + |
| 58 | +The export/import feature transfers Injects, along with their configuration (arguments, content, tags, Expectations), |
| 59 | +between Simulations, Scenarios, and Atomic tests, even across different OpenAEV instances. |
| 60 | + |
| 61 | +### Why export/import? |
| 62 | + |
| 63 | +- **Reuse proven Injects**: export a well-tuned phishing Inject and import it into a new Scenario. |
| 64 | +- **Share across teams**: distribute standardized Injects to other operators. |
| 65 | +- **Migrate between environments**: move Injects from a lab instance to production. |
| 66 | + |
| 67 | +### Export |
| 68 | + |
| 69 | +1. Navigate to the Injects list in your Simulation, Scenario, or Atomic test. |
| 70 | +2. Select the Injects to export (or use the contextual menu for a single Inject). |
| 71 | +3. Choose whether to include **Teams/Players** in the export. |
| 72 | +4. Download the export file. |
| 73 | + |
| 74 | +| Rule | Detail | |
| 75 | +|------|--------| |
| 76 | +| Multiple Injects | Supported for Scenarios and Simulations | |
| 77 | +| Atomic testing | Only **one** Inject per export | |
| 78 | +| Teams/Players | Optional, opt in during export | |
| 79 | +| Assets | **Never** exported | |
| 80 | +| Permissions | Read access on the source Scenario/Simulation; Admin for Atomic tests | |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | + |
| 89 | +### Import |
| 90 | + |
| 91 | +1. Navigate to the Injects list in the destination Simulation, Scenario, or Atomic test. |
| 92 | +2. Click the **import** action. |
| 93 | +3. Select the export file. Injects are created with their original configuration. |
| 94 | + |
| 95 | +| Rule | Detail | |
| 96 | +|------|--------| |
| 97 | +| Cross-type import | Import from any source type into any destination type | |
| 98 | +| Permissions | Write access on the destination Scenario/Simulation; Admin for Atomic tests | |
| 99 | + |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +### In practice |
| 106 | + |
| 107 | +Your red team built a set of credential-dumping Injects in a lab Scenario: |
| 108 | + |
| 109 | +1. **Export** the Injects from the lab Scenario (include Teams). |
| 110 | +2. **Import** them into the production Simulation targeting the finance department. |
| 111 | +3. Adjust target Assets and timing. The rest of the configuration carries over. |
| 112 | + |
| 113 | +## Go further |
| 114 | + |
| 115 | +- Build complete attack chains with [Scenarios](scenario.md). |
| 116 | +- Import Injects from threat intelligence using [Scenario generation from OpenCTI](scenario/security-coverage.md). |
| 117 | +- Understand [Inject statuses](inject-status.md) to interpret execution results. |
| 118 | + |
0 commit comments