|
334 | 334 | font-family: var(--mono); |
335 | 335 | font-size: .8rem; |
336 | 336 | line-height: 1.8; |
| 337 | + white-space: pre; |
337 | 338 | -webkit-overflow-scrolling: touch; |
338 | 339 | } |
339 | 340 |
|
|
449 | 450 | padding-left: .75rem; |
450 | 451 | margin-bottom: 1.5rem; |
451 | 452 | } |
| 453 | + h2.section-group-heading { |
| 454 | + border-left-color: var(--red); |
| 455 | + margin-top: 2.5rem; |
| 456 | + } |
452 | 457 |
|
453 | 458 | h3 { |
454 | 459 | font-size: 1rem; |
@@ -863,8 +868,8 @@ <h1 class="hero-title"> |
863 | 868 | <span class="terminal-title">do-manager</span> |
864 | 869 | </div> |
865 | 870 | <div class="terminal-body" id="hero-term" style="min-height:220px"> |
866 | | - <span class="p">$ </span><span id="type-line" class="c"></span><span class="cursor" id="cursor"></span> |
867 | | - </div> |
| 871 | +<span class="p">$ </span><span id="type-line" class="c"></span><span class="cursor" id="cursor"></span> |
| 872 | +</div> |
868 | 873 | </div> |
869 | 874 | </div> |
870 | 875 | </div> |
@@ -1669,35 +1674,6 @@ <h2>Firewalls</h2> |
1669 | 1674 | </div> |
1670 | 1675 | </div> |
1671 | 1676 |
|
1672 | | - <h3 id="fw-presets">Firewall Presets</h3> |
1673 | | - <p>Apply a named opinionated ruleset for common Red Team roles. Use <code>--operator-ip</code> to restrict SSH to your IP only.</p> |
1674 | | - |
1675 | | - <div class="table-scroll"> |
1676 | | - <table class="compare-table"> |
1677 | | - <thead><tr><th>Profile</th><th>Inbound</th><th>Outbound</th><th>Use case</th></tr></thead> |
1678 | | - <tbody> |
1679 | | - <tr><td><code>c2</code></td><td>443, 80, 53, SSH(op-ip)</td><td>all</td><td>Command & Control server</td></tr> |
1680 | | - <tr><td><code>phishing</code></td><td>443, 80, 8080, SSH(op-ip)</td><td>all</td><td>GoPhish / evilginx2</td></tr> |
1681 | | - <tr><td><code>redirector</code></td><td>443, 80, SSH(op-ip)</td><td>443, 80</td><td>Traffic redirector (socat/nginx)</td></tr> |
1682 | | - <tr><td><code>bastion</code></td><td>SSH(op-ip) only</td><td>all</td><td>Jump host</td></tr> |
1683 | | - <tr><td><code>lockdown</code></td><td>SSH(op-ip) only</td><td>none</td><td>Fully locked node</td></tr> |
1684 | | - </tbody> |
1685 | | - </table> |
1686 | | - </div> |
1687 | | - |
1688 | | - <div class="terminal"> |
1689 | | - <div class="terminal-bar"><span class="tl tl-r"></span><span class="tl tl-y"></span><span class="tl tl-g"></span><span class="terminal-title">terminal</span><button class="copy-btn" onclick="copyTerminal(this)"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"/></svg>copy</button></div> |
1690 | | - <div class="terminal-body"> |
1691 | | -<span class="dm"># Apply the c2 preset - SSH restricted to your IP only</span> |
1692 | | -<span class="p">$ </span><span class="c">do-manager firewall preset c2 \</span> |
1693 | | -<span class="o"> --name c2-fw \</span> |
1694 | | -<span class="o"> --droplets 12345678 \</span> |
1695 | | -<span class="o"> --operator-ip 203.0.113.1</span> |
1696 | | -<span class="ok">✓ Firewall preset c2 applied</span> |
1697 | | -<span class="o"> ID: abc-123</span> |
1698 | | -<span class="o"> Rules: 5 inbound 3 outbound</span> |
1699 | | - </div> |
1700 | | - </div> |
1701 | 1677 | </section> |
1702 | 1678 |
|
1703 | 1679 | <hr /> |
@@ -1843,6 +1819,8 @@ <h3>Commands</h3> |
1843 | 1819 |
|
1844 | 1820 | <hr /> |
1845 | 1821 |
|
| 1822 | + <h2 class="section-group-heading">Red Team</h2> |
| 1823 | + |
1846 | 1824 | <!-- CAMPAIGN --> |
1847 | 1825 | <section id="campaign" class="reveal"> |
1848 | 1826 | <h2>Campaign</h2> |
@@ -1990,6 +1968,41 @@ <h3>Rebuild a burned node</h3> |
1990 | 1968 |
|
1991 | 1969 | <hr /> |
1992 | 1970 |
|
| 1971 | + <!-- FIREWALL PRESETS --> |
| 1972 | + <section id="fw-presets" class="reveal"> |
| 1973 | + <h2>Firewall Presets</h2> |
| 1974 | + <p>Apply a named opinionated ruleset for common Red Team roles. Use <code>--operator-ip</code> to restrict SSH to your IP only.</p> |
| 1975 | + |
| 1976 | + <div class="table-scroll"> |
| 1977 | + <table class="compare-table"> |
| 1978 | + <thead><tr><th>Profile</th><th>Inbound</th><th>Outbound</th><th>Use case</th></tr></thead> |
| 1979 | + <tbody> |
| 1980 | + <tr><td><code>c2</code></td><td>443, 80, 53, SSH(op-ip)</td><td>all</td><td>Command & Control server</td></tr> |
| 1981 | + <tr><td><code>phishing</code></td><td>443, 80, 8080, SSH(op-ip)</td><td>all</td><td>GoPhish / evilginx2</td></tr> |
| 1982 | + <tr><td><code>redirector</code></td><td>443, 80, SSH(op-ip)</td><td>443, 80</td><td>Traffic redirector (socat/nginx)</td></tr> |
| 1983 | + <tr><td><code>bastion</code></td><td>SSH(op-ip) only</td><td>all</td><td>Jump host</td></tr> |
| 1984 | + <tr><td><code>lockdown</code></td><td>SSH(op-ip) only</td><td>none</td><td>Fully locked node</td></tr> |
| 1985 | + </tbody> |
| 1986 | + </table> |
| 1987 | + </div> |
| 1988 | + |
| 1989 | + <div class="terminal"> |
| 1990 | + <div class="terminal-bar"><span class="tl tl-r"></span><span class="tl tl-y"></span><span class="tl tl-g"></span><span class="terminal-title">terminal</span><button class="copy-btn" onclick="copyTerminal(this)"><svg width="12" height="12" viewBox="0 0 16 16" fill="currentColor"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"/></svg>copy</button></div> |
| 1991 | + <div class="terminal-body"> |
| 1992 | +<span class="dm"># Apply the c2 preset - SSH restricted to your IP only</span> |
| 1993 | +<span class="p">$ </span><span class="c">do-manager firewall preset c2 \</span> |
| 1994 | +<span class="o"> --name c2-fw \</span> |
| 1995 | +<span class="o"> --droplets 12345678 \</span> |
| 1996 | +<span class="o"> --operator-ip 203.0.113.1</span> |
| 1997 | +<span class="ok">✓ Firewall preset c2 applied</span> |
| 1998 | +<span class="o"> ID: abc-123</span> |
| 1999 | +<span class="o"> Rules: 5 inbound 3 outbound</span> |
| 2000 | +</div> |
| 2001 | + </div> |
| 2002 | + </section> |
| 2003 | + |
| 2004 | + <hr /> |
| 2005 | + |
1993 | 2006 | <!-- TEMPLATES --> |
1994 | 2007 | <section id="templates" class="reveal"> |
1995 | 2008 | <h2>Templates</h2> |
@@ -2294,14 +2307,17 @@ <h2>Library Usage</h2> |
2294 | 2307 | document.querySelectorAll('.reveal').forEach(el => revealObs.observe(el)); |
2295 | 2308 |
|
2296 | 2309 | /* ---- Sidebar scroll spy ---- */ |
2297 | | - const sections = document.querySelectorAll('section[id]'); |
2298 | | - const slinks = document.querySelectorAll('.sidebar .slink'); |
| 2310 | + const slinks = document.querySelectorAll('.sidebar .slink'); |
| 2311 | + const targets = [...slinks] |
| 2312 | + .map(l => document.getElementById(l.getAttribute('href').slice(1))) |
| 2313 | + .filter(Boolean) |
| 2314 | + .sort((a, b) => a.offsetTop - b.offsetTop); |
2299 | 2315 |
|
2300 | 2316 | function updateSpy() { |
2301 | 2317 | const offset = 80; |
2302 | 2318 | let current = null; |
2303 | | - sections.forEach(s => { |
2304 | | - if (s.getBoundingClientRect().top <= offset) current = s.id; |
| 2319 | + targets.forEach(el => { |
| 2320 | + if (el.getBoundingClientRect().top <= offset) current = el.id; |
2305 | 2321 | }); |
2306 | 2322 | slinks.forEach(l => l.classList.remove('active')); |
2307 | 2323 | if (current) { |
|
0 commit comments