T-X-half — Combined, ½ day

Lab guide · Isla Mercantile Group · 195m net (09:00–12:30)

Schedule

TimeBlockMinutes
09:00C0 — Engagement kickoff15
09:15I-M3 — Dashboard tour40
09:55I-TAG — Tag teams: build the chain45
10:40Break15
10:55K-1 — Outside-in with Kartis30
11:25X1 — Inside-out meets outside-in30
11:55C8 — Report & readout30
12:25Wrap-up5

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.

SystemAddressLoginUsed in
Eon Insightshttps://insights.edu.eoncore.nettraineeNNI-blocks, I-TAG, X1
Eon Centerhttps://center.edu.eoncore.nettraineeNN (org_admin of team-NN)C-blocks, K-blocks, X1
Center, Kartis pages onlyhttps://center.edu.eoncore.netkNN (kartis_only)K-blocks in the Insights + Kartis tracks
Isla public siteshttps://<vhost>.isla.edu.eoncore.netnoneI-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

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 hostsSubnetPublic vhosts
webshopshop, api, db, pay .webshop.isla.test10.20.1.0/24www, shop, api, pay
intranetsso, portal, cache .intranet.isla.test10.20.2.0/24intranet
paymentsgw, vpn, hsm .payments.isla.test10.20.3.0/24none
loyaltyapp, api, old .loyalty.isla.test10.20.4.0/24loyalty, 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

C0 — Engagement kickoff

09:00 · 15 min

ExerciseTaskFinding
C0.1Read the client brief in pairs: the two engagement questions, one judging criterion per stakeholder, two statements you would not accept without evidenceF08, F11
C0.2Log 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—

I-M3 — Dashboard tour

09:15 · 40 min

ExerciseTaskFinding
I-M3.1Hosts: filter insecure + weak, search isla.test, last 7 days. List host and levelF01, F02, F05, F07, F08, F13
I-M3.2HostDetails db.webshop.isla.test: worst TLS version, insecure suite, cert key. Why insecure, not weak?F01
I-M3.3Certificates, sort Valid until ascending: first Isla certificate, days left, hostF03

I-TAG — Tag teams: build the chain

09:55 · 45 min

ExerciseTaskFinding
I-TAG.1Find every host of your app; split the list; tag each with app:, tier:, env:, owner: via HostTagsEdit—
I-TAG.2Build the chain view through the Chat (appendix A.1), fix missing tags, Save as View, note the view id—
I-TAG.3One minute per team: weakest link, finding, owner, whyF01, F03, F05, F08

K-1 — Outside-in with Kartis

10:55 · 30 min

ExerciseTaskFinding
K-1.1Log in to Center, switch to EN, start a discovery for isla.edu.eoncore.net on Scorecard; after 30 s note the scorecard countersF03, F04, F08
K-1.2Certificates: which host expires first, issuer, days left, scorecard bucket, owning teamF03
K-1.3DNS / 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.4Technology: CDN and cloud provider per vhost; in the brief? What does a CDN in front of www mean for TLS keys?—

X1 — Inside-out meets outside-in

11:25 · 30 min

ExerciseTaskFinding
X1.1Fill 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 liveF01–F14
X1.2Add the unregistered asset to register.xlsx, upload, rerun posture. What happens to the finding? Which inside-only assets belong in the internal register?F08

C8 — Report & readout

11:55 · 30 min

ExerciseTaskFinding
C8.1Generate 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.3One 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

Live checks

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.

B.1 3DES on pay (I-M2.3, K-1.6, C6.1)

openssl s_client -connect pay.isla.edu.eoncore.net:443 -servername pay.isla.edu.eoncore.net \
  -tls1_2 -cipher 'DES-CBC3-SHA:@SECLEVEL=0' </dev/null

B.1b Control: can your client speak TLS 1.0? (C6.2, K-1.5, I-M11)

openssl s_client -connect pay.isla.edu.eoncore.net:443 -servername pay.isla.edu.eoncore.net \
  -tls1 -cipher 'DEFAULT:@SECLEVEL=0' </dev/null

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.

B.2 TLS versions on intranet (K-1.5, C6.2, I-M11)

openssl s_client -connect intranet.isla.edu.eoncore.net:443 -servername intranet.isla.edu.eoncore.net -tls1 -cipher 'DEFAULT:@SECLEVEL=0' </dev/null
openssl s_client -connect intranet.isla.edu.eoncore.net:443 -servername intranet.isla.edu.eoncore.net -tls1_2 </dev/null

Templates

C.2 Inside/outside matrix (X1.1)

IDFindingInsightsKartisLive web-a/web-bClass
F01
F02
F03
F04
F05
F06
F07
F08
F09
F10
F11
F12
F13
F14