Lab guide · Isla Mercantile Group · 3 days, 1135m net
Schedule
Time
Block
Minutes
09:00
I-M0 — Welcome & client brief
15
09:15
I-M1 — Crypto 101
60
10:15
I-M2 — How Insights sees (live)
45
11:00
Break
15
11:15
I-M3 — Dashboard tour
75
12:30
Lunch
45
13:15
I-TAG — Tag teams: build the chain
45
14:00
I-M4 — Compliance & risk
40
14:40
Break
15
14:55
I-M5 — Hands-on lab
40
15:35
I-M9 — Beyond TLS
35
16:10
Wrap-up
20
09:00
I-M6 — Crypto deep-dive
60
10:00
I-M7 — Threat on the wire
50
10:50
Break
15
11:05
K-1 — Outside-in with Kartis
45
11:50
K-2 — Is the C2 ours?
35
12:25
Lunch
45
13:10
I-M8 — Quantum & CBOM
50
14:00
A1 — Crypto agility
10
14:10
X1 — Inside-out meets outside-in
30
14:40
Break
15
14:55
I-M11 — Capstone (inside + outside)
50
15:45
Quiz
30
16:15
Wrap-up
15
09:00
C0 — Engagement kickoff
15
09:15
C1 — The consultancy craft
30
09:45
C2 — Maturity quick-scan (CMB)
25
10:10
Break
15
10:25
C3 — Baseline assessment (CBA)
70
11:35
C4 — Inventory intake
40
12:15
Lunch
40
12:55
C5 — Outside-in view: register versus reality
45
13:40
C6 — Verify in the field
25
14:05
C9 — Supplier crypto risk (TPRM)
40
14:45
Break
10
14:55
C7 — Design & policy
35
15:30
A1 — Crypto agility
10
15:40
C8 — Report & readout
40
16:20
Wrap-up
10
Before you start
Log in
Your slip has your own credentials. Nobody shares a login; working in pairs on one login (one drives, one checks) is fine.
System
Address
Login
Used in
Eon Insights
https://insights.edu.eoncore.net
traineeNN
I-blocks, I-TAG, X1
Eon Center
https://center.edu.eoncore.net
traineeNN (org_admin of team-NN)
C-blocks, K-blocks, X1
Center, Kartis pages only
https://center.edu.eoncore.net
kNN (kartis_only)
K-blocks in the Insights + Kartis tracks
Isla public sites
https://<vhost>.isla.edu.eoncore.net
none
I-M2, K-1, C6, I-M11
In Center, switch the UI to EN on first login. Your Center organisation team-NN has one customer: Isla Mercantile Group (team-NN). traineeNN and kNN are both members of team-NN and work on that same customer.
Shared environment
One Insights for the whole group. Tags are shared: every team sees the others' tags appear.
Custom views are shared: every view you save is in everyone's list. Prefix the name with your team or login (webshop — chain); do not change or delete a view you did not create.
There is no personal reset. Do not delete data, uploads or tags you did not create.
Tag rule: tag only hosts of your own app, one person per host, never remove tags you did not set. Full convention: Tag convention.
Center and the Kartis pages keep state per team customer: register upload, posture runs, finding status and labels are shared by traineeNN and kNN of the same team, and invisible to other teams.
Traffic replays (probe chapters) are started by the trainer. You need no shell on the server.
AI: the Insights Chat is available in the Insights blocks. The Kartis pages have no AI.
Isla at a glance
Client: Isla Mercantile Group, retail and payments, Curaçao. Internal names <host>.<app>.isla.test in 10.20.0.0/16; public names <vhost>.isla.edu.eoncore.net.
App (team)
Internal hosts
Subnet
Public vhosts
webshop
shop, api, db, pay.webshop.isla.test
10.20.1.0/24
www, shop, api, pay
intranet
sso, portal, cache.intranet.isla.test
10.20.2.0/24
intranet
payments
gw, vpn, hsm.payments.isla.test
10.20.3.0/24
none
loyalty
app, api, old.loyalty.isla.test
10.20.4.0/24
loyalty, loyalty-old
Hosts outside isla.test and isla.edu.eoncore.net are background noise. Search isla.test to hide them.
Client documents (handed out per block): client brief, ckm-intake.xlsx, register.xlsx, register-flawed.xlsx.
Exercises
I-M0 — Welcome & client brief
09:00 · 15 min
Exercise
Task
Finding
I-M0.1
Log in to Insights; note the number of unique hosts on Home. Ask the Chat which hosts under isla.test have the lowest level. Center tracks: also log in to Center
—
I-M1 — Crypto 101
09:15 · 60 min
Exercise
Task
Finding
I-M1.1
Classify ten algorithms and suites as insecure, weak, secure or recommended, one sentence each (standard: items 1, 2, 5, 6, 10)
F01, F02, F08
I-M1.2 (full)
Ask the Chat why 3DES is weak; check for SWEET32, 64-bit block, mitigation
F02
I-M2 — How Insights sees (live)
10:15 · 45 min
Exercise
Task
Finding
I-M2.1
Note your source IP and the time. Browse to https://www.isla.edu.eoncore.net and https://pay.isla.edu.eoncore.net. Find your own handshakes in Handshakes (last 15 min, filter SNI); note TLS version, cipher, JA3
F02
I-M2.2
Compare your JA3 with a neighbour on the same browser and one on another browser
—
I-M2.3 (full)
Force a 3DES handshake with openssl (appendix B.1) and find it in Insights
F02
I-M3 — Dashboard tour
11:15 · 75 min
Exercise
Task
Finding
I-M3.1
Hosts: filter insecure + weak, search isla.test, last 7 days. List host and level
Certificates, sort Valid until ascending: first Isla certificate, days left, host
F03
I-M3.4 (full)
Copy a client's JA3, search Handshakes for it, count source IPs
—
I-TAG — Tag teams: build the chain
13:15 · 45 min
Exercise
Task
Finding
I-TAG.1
Find every host of your app; split the list; tag each with app:, tier:, env:, owner: via HostTagsEdit
—
I-TAG.2
Build the chain view through the Chat (appendix A.1), fix missing tags, Save as View, note the view id
—
I-TAG.3
One minute per team: weakest link, finding, owner, why
F01, F03, F05, F08
I-M4 — Compliance & risk
14:00 · 40 min
Exercise
Task
Finding
I-M4.1
Compliance, severity critical: host, framework, rule per row. Standard: open the TLS 1.0 host (first seen, guidance, owner); filter high for 3DES and the certificate finding
F01, F02, F03
I-M4.2 (standard)
Ask the Chat for a remediation plan for TLS 1.0 on db.webshop.isla.test, then for 3DES on pay.webshop.isla.test
F01, F02
I-M5 — Hands-on lab
14:55 · 40 min
Exercise
Task
Finding
I-M5.1
One per team: upload webshop.pcap (the webshop chapter file from the trainer). Everyone: find your team's upload and the webshop hosts
—
I-M5.2
Hosts insecure + weak, search isla.test; worst host per app
F01, F02, F05, F07, F08, F13
I-M5.3
Compliance, pay.webshop.isla.test: frameworks, severity, remediation of the 3DES finding
F02
I-M5.4
First expiring Isla certificate: days left, host, tier and owner tags, impact
F03
I-M5.5
Quiz: en/assessment/quiz.md or the quiz app. Alone
—
I-M9 — Beyond TLS
15:35 · 35 min
Exercise
Task
Finding
I-M9.1
IKE and OpenVPN traffic of vpn.payments.isla.test (appendix A.4): weak or insecure per parameter, and why
F05, F06
I-M9.2
SSH traffic to hsm.payments.isla.test (appendix A.5): weak kex, cipher, MAC, HASSH. Why is diffie-hellman-group1-sha1 weak twice?
F07
I-M6 — Crypto deep-dive
09:00 · 60 min
Exercise
Task
Finding
I-M6.A
Parse TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 and TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256; verdict per suite
—
I-M6.B
Match BEAST, Lucky13, FREAK, SWEET32, ROBOT to the component they exploit
—
I-M6.C
Find which Isla hosts expose each attack class (appendix A.2); host FQDN and IP
F01, F02, F08, F13
I-M7 — Threat on the wire
10:00 · 50 min
The trainer plays the beacon chapter at the start of the block.
Exercise
Task
Finding
I-M7.A
Handshakes: find recent handshakes to an unknown external SNI. Note source, destination, SNI, JA3, fingerprint verdict. Measure the interval (appendix A.3). Standard/full: check the client for other traffic; write two or three sentences for a colleague
F10
I-M7.B (standard, full)
Ask the Chat what the beacon means and what the SOC does now, with your own values; note the two most useful recommendations
F10
K-1 — Outside-in with Kartis
11:05 · 45 min
Exercise
Task
Finding
K-1.1
Log in to Center, switch to EN, start a discovery for isla.edu.eoncore.net on Scorecard; after 30 s note the scorecard counters
F03, F04, F08
K-1.2
Certificates: which host expires first, issuer, days left, scorecard bucket, owning team
F03
K-1.3
DNS / Email for isla.edu.eoncore.net: map every SPF include and DKIM selector to a party; compare with the brief; is spoofing covered?
F11, F12
K-1.4
Technology: CDN and cloud provider per vhost; in the brief? What does a CDN in front of www mean for TLS keys?
—
K-1.5 (full)
Hosts shows intranet on TLS 1.0. Check live (appendix B.1b, B.2), label false_positive with a note, compare Scorecard, remove the label again
F03, F04
K-1.6 (full)
Upload register.xlsx in Central register, run Crypto posture, filter Findings on drift: which finding concerns pay?
F02
K-2 — Is the C2 ours?
11:50 · 35 min
Exercise
Task
Finding
K-2.1
Look up the C2 domain and IP from I-M7 in Hosts, Domains, Certificates, DNS / Email and the Scorecard apex list. Part of Isla's perimeter? What do you ask the client?
F10
K-2.2
Central register → Generate draft, run Crypto posture, Findings with verdict rogue: name, issuer, since when, action, owner
F09
K-2.3
In pairs, one line each for F10 and F09: whose asset, response owner, first three actions, message to the CISO
F09, F10
I-M8 — Quantum & CBOM
13:10 · 50 min
Exercise
Task
Finding
I-M8.1
CBOM page: quantumVulnerable, quantumSafeCount, readiness ratio, two weak algorithms, protocol versions, any hybrid KEX, first host to migrate
F01, F02, F05, F07, F08, F14
I-M8.2 (full)
Ask the Chat for a PQC migration order for Isla, with data horizon and HNDL; then the three actions with most risk reduction per hour
F14
The hook to A1 (crypto agility) follows this block in some tracks.
A1 — Crypto agility
14:00 · 10 min
No exercise. Discussion question: NIST deprecates an algorithm Isla uses for card payments. Who at Isla knows how long replacing it takes, and where is that written down?
X1 — Inside-out meets outside-in
14:10 · 30 min
Exercise
Task
Finding
X1.1
Fill the matrix (appendix C.2): for F01–F14 mark Insights / Kartis / live and classify inside only, outside only or both. Check at least two cells live
F01–F14
X1.2
Add the unregistered asset to register.xlsx, upload, rerun posture. What happens to the finding? Which inside-only assets belong in the internal register?
F08
I-M11 — Capstone (inside + outside)
14:55 · 50 min
The trainer plays the capstone chapter (and beacon if not played earlier). Per team, for your own app:
Step
Task
1 Inside
Insights: filter Hosts on your app: tag, open the weakest host; check Compliance and the Chat for non-TLS traffic
2 Outside
Center Kartis pages: hosts, certificates, DNS / Email, posture (upload register.xlsx, run posture, read shadow / rogue / drift)
3 Match
Put each finding in one column: inside only, outside only, both
4 Verify
Check every outside finding you report against the live server or the inside data
5 Tag and view
Tag the hosts you report; save a view of your app ordered by level, named <team> — capstone
6 Readout
3 minutes, template in appendix C.1
Expected: one inside-only, one outside-only and one both finding per app, plus the weakest link.
C0 — Engagement kickoff
09:00 · 15 min
Exercise
Task
Finding
C0.1
Read the client brief in pairs: the two engagement questions, one judging criterion per stakeholder, two statements you would not accept without evidence
F08, F11
C0.2
Log in to Center, open Isla Mercantile Group (team-NN), copy its customer ID, set journey milestone "Maturity intake (CMB)" to In progress with a note
—
C1 — The consultancy craft
09:15 · 30 min
Exercise
Task
Finding
C1.1
Definition of done for D1 and D5 (standard/full: D1, D2, D5): who accepts, what it contains, what not; add as journey notes
—
C1.2 (standard, full)
Four claims from the brief: claim type, the evidence that settles it, the block that produces it
F01, F02, F03, F08, F11
C2 — Maturity quick-scan (CMB)
09:45 · 25 min
Exercise
Task
Finding
C2.1
From the brief alone: which two CMB categories lowest, which one highest?
—
C2.2
/cmb/results → Isla — CMB self-assessment: overall score, band, three lowest and two highest categories; who does the work behind the highest
—
C2.3
Two answers to treat as claims to verify, one answer whose score misrepresents Isla; which block produces the evidence
F01, F02, F08
C3 — Baseline assessment (CBA)
10:25 · 70 min
Exercise
Task
Finding
C3.1
Interview the CISO (trainer). Short: the 10 marked questions; full: all 36, your pair's subcategories. Write her answers in her words; probe at least three
—
C3.2
Set a maturity level per question with a one-line reason; create assessment Isla — PQC baseline for team-NN and import the workbook
—
C3.3
Run the AI assessor on question 17 (full: also 33); compare its level with yours, edit, decide on Approve
F03
C3.4
Gap table per subcategory: current level, 12-month target, gap, driver (DORA / NIS2 article or PQC exposure)
F14
C3.5 (full)
Mark each AI advice recommendation as supported (name the question) or generic; which one do you drop?
—
C4 — Inventory intake
11:35 · 40 min
Exercise
Task
Finding
C4.1
Review ckm-intake.xlsx without Center: row, issue, proposed action, who at Isla answers; note what is already a finding
F03, F08
C4.2
Create Inventory design Isla CKM intake, upload the workbook, read the consolidation report: components per layer vs rows vs distinct systems
—
C4.3
Central registry: two entries (full: four) for assets that need an owner or a decision; owner unknown → unknown — ask <name>
F02, F03, F07
C5 — Outside-in view: register versus reality
12:55 · 45 min
Exercise
Task
Finding
C5.2
Start a discovery for isla.edu.eoncore.net if needed, upload register.xlsx, compare registered hosts with Hosts: which external host is missing?
F08
C5.3
Run Crypto posture; list every finding with verdict, severity, subject, evidence; which one not to report yet?
F02, F03, F04, F08, F09
C5.4 (standard, full)
Set a status per finding, name the owner at Isla and the next action; unverified stays open with a note
F02, F03, F04, F08, F09
C6 — Verify in the field
13:40 · 25 min
Exercise
Task
Finding
C6.1
3DES check against pay (appendix B.1): protocol and cipher; does it confirm the Kartis drift? Which Insights finding matches?
F02
C6.2
TLS 1.0 and 1.2 against intranet (appendix B.2), with the TLS 1.0 control on pay (B.1b); what does the server say, what was the scan date?
F03, F04
C6.3
Set the intranetweak_tls_version finding to false_positive (leave cert_expiring open); add a Labels note (scan date, check, result, initials); leave pay open
F04
C6.4 (standard, full)
Two evidence-log lines: command, date and time, result, confirmed / refuted
F02, F04
C9 — Supplier crypto risk (TPRM)
14:05 · 40 min
Exercise
Task
Finding
C9.1
DNS / Email and Technology: list every third party (SPF, DKIM, mail provider, CDN, cloud), match to the brief; who handles Isla data or keys and is missing?
F11
C9.2
Decision tree for the five suppliers in the brief plus the one you found: crypto role, tier, one-line reason (five minutes)
F11
C9.3
Per team one supplier (PayCarib, IdentiQ or Mailfuel): five questions before renewal (key custody, evidence, rotation, incidents, migration and exit) and the two clauses you would not sign without
—
C9.4 (full)
PayCarib refuses the agility clause T1.5.1. In pairs: what Isla loses, what it can accept instead, who decides
—
C7 — Design & policy
14:55 · 35 min
Exercise
Task
Finding
C7.1
Generate a Cryptography Baseline in Polgen for Isla (template Financieel EU, sector financial, English, NIS2 / DORA / ISO 27001 / NIST, Enterprise); download as Markdown
—
C7.2
Per gap from C3: the clause that covers it or "not covered"; then two clauses that answer no Isla gap
F01, F02, F03, F07, F08, F11, F14
A1 — Crypto agility
15:30 · 10 min
No exercise. Discussion question: NIST deprecates an algorithm Isla uses for card payments. Who at Isla knows how long replacing it takes, and where is that written down?
C8 — Report & readout
15:40 · 40 min
Exercise
Task
Finding
C8.1
Generate the Kartis management report: which of F02, F03, F08, F09, F11, F12 appear, in which counter, which is missing and why?
F02, F03, F08, F09, F11, F12
C8.2 (standard, full)
Top five actions in the remediation tracker: title, domain, owner at Isla, priority, deadline
—
C8.3
One page per group: where we stand (Q1, Q2), what it costs (hours), what first (three actions, owner, date); read out to the CISO
—
Queries, live checks and templates
Queries
Run these through the Insights Chat. The Chat only accepts SELECT/WITH and rejects any query containing words such as INSERT, UPDATE, DELETE, ALTER, CREATE, REPLACE, SET anywhere in the text.
A.1 Chain view (I-TAG.2, I-M11)
Replace app:webshop with your app.
SELECT
hostname,
toString(any(ipv4)) AS ip,
arrayDistinct(groupArrayArray(tags)) AS all_tags,
arrayFirst(t -> startsWith(t, 'tier:'), all_tags) AS tier,
arrayFirst(t -> startsWith(t, 'owner:'), all_tags) AS owner,
anyLast(security_level) AS level,
multiIf(level = 'insecure', 1, level = 'weak', 2,
level = 'secure', 3, level = 'recommended', 4, 5) AS ladder_rank
FROM hosts
GROUP BY hostname
HAVING has(all_tags, 'app:webshop')
ORDER BY ladder_rank, tier
A.2 Negotiated suites per Isla host (I-M6.C)
SELECT h.dst_ip, h.sni, h.tls_version, c.name AS cipher, c.security, count() AS n
FROM tls_hellos AS h
LEFT JOIN ciphersuites AS c ON c.hex = h.negotiated_cipher
WHERE h.dst_ip LIKE '10.20.%'
GROUP BY h.dst_ip, h.sni, h.tls_version, cipher, c.security
ORDER BY h.dst_ip
SELECT src_ip, dst_ip, sni, ja3, count() AS beacons,
arrayDifference(arraySort(groupArray(toUnixTimestamp(timestamp)))) AS intervals_s
FROM tls_hellos
WHERE sni = 'cdn-update-check.net'
GROUP BY src_ip, dst_ip, sni, ja3
A.4 IKE and OpenVPN of vpn.payments (I-M9.1)
SELECT src_ip, dst_ip, ike_version, exchange_type_name, dh_groups,
encryption_algs, integrity_algs, vendor_ids,
has_weak_dh, has_weak_encryption, has_weak_integrity
FROM ipsec_connections
WHERE '10.20.3.11' IN (src_ip, dst_ip)
ORDER BY timestamp DESC
LIMIT 10
SELECT src_ip, dst_ip, dst_port, vpn_type, openvpn_version, tls_auth_enabled
FROM vpn_connections
WHERE '10.20.3.11' IN (src_ip, dst_ip)
LIMIT 10
Against the Isla public sites. Always pass -servername: web-b routes by SNI, and a client without SNI lands on pay. OpenSSL 3 needs @SECLEVEL=0 in the cipher string for 3DES and TLS 1.0; drop :@SECLEVEL=0 on LibreSSL (openssl version tells you which one you have). Some Linux distributions block TLS 1.0 in the system crypto policy even with @SECLEVEL=0; B.1b shows whether yours does. If it does, use testssl.sh or pair with someone whose client can.
Handshake succeeds: your client can test TLS 1.0. no protocols available or a failure before any server answer: your client refuses TLS 1.0, and B.2 proves nothing.