// ServiceSignatureB.jsx — per-service signature sections (part 2) + dispatcher // Relies on helpers from part A (useInView, useCountUp, SigSection, SigPanel, sevColor). // ═══════════════ CLOUD — multi-cloud posture board + privesc chain ═══════════════ const CloudSignature = () => { const [ref, seen] = useInView(); const clouds = [ { n: 'AWS', icon: 'aws', score: 72, rows: [['IMDSv2 enforced', false], ['Root MFA', true], ['CloudTrail org-wide', true], ['Public S3 blocked', false], ['KMS key rotation', true]] }, { n: 'Azure', icon: 'azure', score: 84, rows: [['Defender for Cloud', true], ['NSG egress filtered', true], ['Key Vault soft-delete', true], ['Storage public access', false], ['PIM for admins', true]] }, { n: 'GCP', icon: 'gcp', score: 66, rows: [['Org policy: VM ext IP', false], ['CMEK on buckets', true], ['Audit logs sink', true], ['SA key expiry', false], ['VPC SC perimeter', false]] }, ]; return (
{clouds.map((c, ci) => (
{c.n} = 80 ? '#27a644' : c.score >= 70 ? '#d98326' : '#e8543a' }}>{c.score}
{c.rows.map(([l, ok], i) => (
{l}
))}
))}
IAM privilege-escalation chain · demonstrated
{['user/dev', 'role/ReadTfState', 'role/cicd-runner', 'role/OrgAdmin'].map((h, i, arr) => (
{h}
{i < arr.length - 1 && sts:AssumeRole →}
))}
); }; // ═══════════════ RED TEAM — MITRE ATT&CK kill-chain matrix ═══════════════ const RedTeamSignature = () => { const [ref, seen] = useInView(); const [sweep, setSweep] = React.useState(-1); const tactics = [ { t: 'Initial Access', cells: ['Spearphish', 'Valid Accts', 'OAuth'] }, { t: 'Execution', cells: ['CmdLine', 'WMI', 'BOF'] }, { t: 'Persistence', cells: ['Sched Task', 'Registry'] }, { t: 'Priv Esc', cells: ['Kerberoast', 'ESC1', 'Token'] }, { t: 'Lateral', cells: ['PtH', 'WinRM', 'RDP'] }, { t: 'Exfil', cells: ['HTTPS C2', 'DNS'] }, ]; const lit = [[0, 0], [1, 2], [2, 0], [3, 1], [4, 0], [5, 0]]; // the path taken React.useEffect(() => { if (!seen) return; const t = setInterval(() => setSweep(s => (s + 1) % (tactics.length + 2)), 700); return () => clearInterval(t); }, [seen]); const ttps = useCountUp(18, seen); const isLit = (col, row) => lit.some(([c, r]) => c === col && r === row) && sweep >= col; return (
{tactics.map((col, ci) => (
= ci ? '#828fff' : '#62666d', textTransform: 'uppercase', letterSpacing: 0.3, fontWeight: 500, marginBottom: 8, textAlign: 'center', transition: 'color 300ms', minHeight: 28 }}>{col.t}
{col.cells.map((cell, ri) => { const on = isLit(ci, ri); return (
{cell}
); })}
))}
{Math.round(ttps)} techniques used this operation
0 alerts raised before the objective
every technique becomes a detection rule at readout
); }; // ═══════════════ PENETRATION TESTING — severity burndown chart ═══════════════ const VaptSignature = () => { const [ref, seen] = useInView(); // weeks of an engagement; open findings declining const weeks = ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8']; const series = [38, 41, 36, 28, 22, 14, 8, 3]; const W = 620, H = 240, pad = 30; const maxV = 44; const x = (i) => pad + (i / (weeks.length - 1)) * (W - pad * 2); const y = (v) => H - pad - (v / maxV) * (H - pad * 2); const linePath = series.map((v, i) => `${i === 0 ? 'M' : 'L'} ${x(i)} ${y(v)}`).join(' '); const areaPath = `${linePath} L ${x(weeks.length - 1)} ${H - pad} L ${x(0)} ${H - pad} Z`; return (
{[0, 11, 22, 33, 44].map(v => ( {v} ))} {weeks.map((w, i) => {w})} {series.map((v, i) => )}
{[ { v: '38 → 3', l: 'Open findings, week 1 to week 8', c: '#828fff' }, { v: '92%', l: 'Closed before final report', c: '#27a644' }, { v: '90 days', l: 'Free retest window', c: '#d0d6e0' }, ].map(s => (
{s.v}
{s.l}
))}
); }; // ═══════════════ CONTINUOUS — testing cadence heatmap ═══════════════ const PtaasSignature = () => { const [ref, seen] = useInView(); const weeks = 26, days = 5; // deterministic intensity pattern const intensity = (w, d) => { const n = (w * 7 + d * 13 + (w % 3) * 5) % 10; return n; }; const color = (n) => n === 0 ? '#0e0f12' : n < 3 ? 'rgba(94,105,210,0.25)' : n < 5 ? 'rgba(94,105,210,0.45)' : n < 7 ? 'rgba(94,105,210,0.7)' : '#828fff'; return (
Testing activity · last 26 weeks
{Array.from({ length: weeks }).map((_, w) => (
{Array.from({ length: days }).map((_, d) => { const n = intensity(w, d); return
; })}
))}
less {['#0e0f12', 'rgba(94,105,210,0.25)', 'rgba(94,105,210,0.45)', 'rgba(94,105,210,0.7)', '#828fff'].map((c, i) =>
)} more
{[ { v: '1 hour', l: 'Critical finding SLA', c: '#e8543a' }, { v: '4', l: 'Surfaces under continuous test', c: '#f7f8f8' }, { v: 'Always-on', l: 'Retest as fixes land', c: '#27a644' }, ].map(s => (
{s.v}
{s.l}
))}
); }; // ── Dispatcher ── const ServiceSignature = ({ slug }) => { const C = (window.SERVICE_SIGNATURES || {})[slug]; return C ? : null; }; Object.assign(window, { CloudSignature, RedTeamSignature, VaptSignature, PtaasSignature, ServiceSignature, }); window.SERVICE_SIGNATURES['cloud'] = CloudSignature; window.SERVICE_SIGNATURES['red-team'] = RedTeamSignature; window.SERVICE_SIGNATURES['vapt'] = VaptSignature; window.SERVICE_SIGNATURES['ptaas'] = PtaasSignature;