Skip to content
academia.sh

Lesson 12 / 18

Test Distributions and Labs

Measuring legal practice labs in terms of scope: 13 of the 18 skill items produced by the topic's six lessons are covered by the union of three lab types, no single type exceeds 10, a security-focused test distribution covers zero skills on its own, and the five uncovered items stem from the absence of a real record and real risk.

Published Updated

In this lesson

  • Lists the skill items this topic produces and counts how many each practice lab covers
  • Gives the difference between the union of lab types and a real assessment, in items
  • Names the items no lab can cover and the structural reason for it
Contents

The previous lesson measured validation attempts by risk class, evidence strength, and the meaning of a negative result. All of these measures must have been learned somewhere; a step tried for the first time during validation puts both the target and the assessment itself at risk. A real institutional network is not the place to practice. An attempt pointed at someone else’s system without written permission is unauthorized access even if done for learning, and it carries legal consequences.

This lesson measures legal practice labs in terms of scope, and what it asks is not what they teach, it is what they do not teach. The skill items produced by the topic’s six lessons are listed, how many each environment type covers is counted, and the items none of them cover are written down separately.

Scope Is a Set Difference

Four environment types are considered. A self-built isolated lab is an environment set up on your own hardware that does not reach an outside network: you build the topology yourself, so you also choose where capture happens. A prebuilt vulnerable image set consists of pre-prepared targets; setup is cheap, the topology is given. A scenario-based practice lab is one run by a provider, with scope and rules defined in advance; the terms of use are a contract, and reading it is part of the exercise. A security-focused test distribution is a toolset; it shortens setup time.

The fifth row is the measure’s reference: an authorized real assessment. By definition it covers every item, requires no setup, and requires a written contract and a defined scope.

  • AT42. The skill list, environment types, and scope sets are a model; no real platform, distribution, or provider name is written.
  • AT43. The skill items were drawn from this topic’s six lessons; the four items sourced from process were not measured in any lesson and were put on the list as a limit.
  • AT44. An environment covering a skill means that skill can be worked through there along with its result; being able to run the tool is not enough.
  • AT45. Setup times were written by hand per environment type.
  • AT46. The union of labs covers three practice types; the real assessment does not join the union, it is the comparison side.
  • AT47. The real record produced and the real risk carried in a lab are zero.
// lab/scope.mjs — this is a SCOPE model of legal practice labs. No real platform,
// distribution, or product name is written; environments are referred to only by type.
// The skill list was drawn from this topic's six lessons; the ones sourced from 'process'
// were not measured in any lesson and were put here as a limit.
export const SKILL = `
  b01 capture-point-selection          01
  b02 field-class-separation           01
  b03 analyzer-label-validation        02
  b04 metadata-extraction-limit        02
  b05 validation-plan-building         03
  b06 request-risk-class-assignment    03
  b07 scope-check-running              03
  b08 sandbox-prep                     04
  b09 hidden-behavior-reading          04
  b10 majority-threshold-selection     05
  b11 privacy-class-decision           05
  b12 validation-option-selection      06
  b13 negative-result-interpretation   06
  b14 target-identity-verification     06
  b15 scope-negotiation           process
  b16 client-communication        process
  b17 production-impact-carrying  process
  b18 finding-reporting           process
`.trim().split('\n').map((r) => {
  const [name, skill, source] = r.trim().split(/\s+/);
  return { name, skill, source };
});

// Environment type: which skills it covers, how many hours to set up, what its legal condition is.
// 'security-focused-test-distribution' is a toolset, not a practice lab: it shortens
// setup time and covers no skill on its own.
export const ENVIRONMENT = {
  'self-built-isolated-lab': { setupHours: 24, legal: 'your-own-hardware',
    covers: ['b01', 'b02', 'b03', 'b04', 'b05', 'b06', 'b08', 'b09', 'b12', 'b13'] },
  'prebuilt-vulnerable-image-set': { setupHours: 3, legal: 'your-own-hardware',
    covers: ['b03', 'b04', 'b05', 'b06', 'b12', 'b13'] },
  'scenario-based-practice-environment': { setupHours: 0, legal: 'provider-terms-of-use',
    covers: ['b03', 'b04', 'b05', 'b06', 'b07', 'b09', 'b10', 'b12', 'b13', 'b14'] },
  'security-focused-test-distribution': { setupHours: 1, legal: 'your-own-hardware', covers: [] },
  'authorized-real-assessment': { setupHours: 0, legal: 'written-contract-and-scope',
    covers: SKILL.map((b) => b.name) },
};

export const LAB = Object.keys(ENVIRONMENT).filter((o) => o !== 'authorized-real-assessment');

export function union(environments) {
  const k = new Set();
  for (const o of environments) for (const b of ENVIRONMENT[o].covers) k.add(b);
  return k;
}

export function perLesson(covered) {
  const m = new Map();
  for (const b of SKILL) {
    if (!m.has(b.source)) m.set(b.source, { total: 0, covered: 0 });
    const s = m.get(b.source);
    s.total += 1;
    if (covered.has(b.name)) s.covered += 1;
  }
  return m;
}

Eighteen Skills, Four Environments

// lab/measure.mjs — four environment types and a real assessment, across eighteen skills.
import { SKILL, ENVIRONMENT, LAB, union, perLesson } from './scope.mjs';

const y = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd());

console.log(`${SKILL.length} skill items, ${Object.keys(ENVIRONMENT).length} environment types; ` +
  `skills were drawn from this topic's six lessons and from process`);

const A = [-38, 10, 11, 28];
console.log('\n1. coverage per environment');
y(A, 'environment', 'covered', 'setup h', 'legal condition');
for (const [o, v] of Object.entries(ENVIRONMENT))
  y(A, o, `${v.covers.length}/${SKILL.length}`, v.setupHours, v.legal);

const lab = union(LAB);
const open = SKILL.filter((b) => !lab.has(b.name));

const B = [-10, 9, 11, 12];
console.log('\n2. coverage per source lesson (union of three lab types)');
y(B, 'source', 'skill', 'covered', 'not covered');
for (const [k, s] of perLesson(lab)) y(B, k, s.total, s.covered, s.total - s.covered);

const C = [-8, -32, 8, 17];
console.log('\n3. skill covered by no lab');
y(C, 'item', 'skill', 'source', 'where it exists');
for (const b of open) y(C, b.name, b.skill, b.source, 'real only');

console.log('\n4. lab vs. real assessment difference');
console.log(`  union of three lab types             ${lab.size} / ${SKILL.length}`);
console.log(`  difference                           ${open.length} items`);
console.log(`  broadest single lab type              ` +
  `${Math.max(...LAB.map((o) => ENVIRONMENT[o].covers.length))} / ${SKILL.length}`);
console.log(`  distribution's coverage on its own    ${ENVIRONMENT['security-focused-test-distribution'].covers.length}`);
console.log(`  total setup time (four environments)  ` +
  `${LAB.reduce((t, o) => t + ENVIRONMENT[o].setupHours, 0)} hours`);

console.log('\n5. trace and result');
console.log(`  real record produced in the lab       0`);
console.log(`  real risk carried in the lab          0`);
console.log(`  authorization condition in a real assessment  ` +
  `${ENVIRONMENT['authorized-real-assessment'].legal}`);
console.log(`  source of the ${open.length} uncovered items: ` +
  `${[...new Set(open.map((b) => b.source))].join(', ')}`);
18 skill items, 5 environment types; skills were drawn from this topic's six lessons and from process

1. coverage per environment
environment                              covered    setup h             legal condition
self-built-isolated-lab                    10/18         24           your-own-hardware
prebuilt-vulnerable-image-set               6/18          3           your-own-hardware
scenario-based-practice-environment        10/18          0       provider-terms-of-use
security-focused-test-distribution          0/18          1           your-own-hardware
authorized-real-assessment                 18/18          0  written-contract-and-scope

2. coverage per source lesson (union of three lab types)
source        skill    covered not covered
01                2          2           0
02                2          2           0
03                3          3           0
04                2          2           0
05                2          1           1
06                3          3           0
process           4          0           4

3. skill covered by no lab
item    skill                             source  where it exists
b11     privacy-class-decision                05        real only
b15     scope-negotiation                process        real only
b16     client-communication             process        real only
b17     production-impact-carrying       process        real only
b18     finding-reporting                process        real only

4. lab vs. real assessment difference
  union of three lab types             13 / 18
  difference                           5 items
  broadest single lab type              10 / 18
  distribution's coverage on its own    0
  total setup time (four environments)  28 hours

5. trace and result
  real record produced in the lab       0
  real risk carried in the lab          0
  authorization condition in a real assessment  written-contract-and-scope
  source of the 5 uncovered items: 05, process

A Distribution Is Not an Environment

The first table’s clearest row is its fourth: a security-focused test distribution covers zero of eighteen skill items. This is not a shortfall, it is a matter of definition. A distribution is a toolset; it cuts the time to install the tools down to an hour and stops there. Having installed the tools is not a skill; the skill is being able to separate the candidate a tool produces from evidence, and that requires a target, a scope, and a result.

The remaining three rows show an unexpected relationship between setup and coverage. Your own lab, which needs twenty-four hours of setup, covers 10 items; the scenario-based environment, which needs zero setup, also covers 10 items. But the items they cover are not the same. In your own lab, because you build the topology yourself, capture-point selection and field-class separation can be worked through; in a prebuilt scenario the topology is given, and those two items drop out. In return, because a scenario carries a scope definition, scope-check running, target-identity verification, and majority-threshold selection can be worked through; your own lab has no concept of scope, because everything in it is yours.

When the two are used together, the union rises to 13 items. The prebuilt vulnerable image set adds no new item to the union; its contribution is not coverage, it is cheapening repetition through a three-hour setup. The total setup time of twenty-eight hours is the combined cost of the three lab types and the distribution, and it is a one-time cost.

It is worth saying here that the coverage count does not measure a skill. The table says an item can be worked through, not how well it was worked through. Building a validation plan is an item covered in all three environments; having built one plan is not the same as having built twenty and having seen which ones got shorter. This is exactly where the prebuilt image set’s contribution lies: it adds nothing to the coverage column, it cheapens repetition. Coverage is a precondition, not sufficiency.

The second table groups skills by source lesson and shows that almost all of the technical side can be worked through in a lab: in five of six lessons, there is no uncovered item. The one exception is the fifth lesson, and even there the uncovered item is not technical. This distribution confirms that the lab’s limit has nothing to do with tool capability.

The Five Items the Lab Cannot Teach

The third table is this lesson’s result. Five items are covered by no lab, and four of them come straight from process: scope negotiation, client communication, production-impact carrying, finding reporting. The fifth comes from a technical lesson, and stands out for exactly that reason: privacy-class decision.

A lab has no subscriber data. Deciding not to send a file outside is a free choice there; what makes the decision hard is what happens if you send it, and in a lab, nothing happens. The same structure shows up in the other four items. Scope negotiation only means something when there is an organization on the other side. Carrying production impact is only learned when there is a service that actually goes down. Reporting a finding is only learned when someone reading the report has their budget shift.

The fifth block gives this in a single line: the real record produced in the lab is zero, the real risk carried is zero. What the lab cannot teach is the reason it is a lab. Zero risk makes the exercise legal and repeatable; that same zero leaves consequential decisions off the list.

The practical conclusion here is not about environment choice. Even if all three lab types are used, five items stay open, and these items come not from the next environment but from a process. The authorized real assessment row’s coverage is 18, but its condition is a written contract and a defined scope; doing the same work without that condition is not practice, it is a crime.

What the Lab Gives on Its Own

The difference list should not be read one-sidedly. The lab has an advantage the real assessment does not, and it connects directly to this topic’s measurement axis: in a lab, the actual state is known.

Every model in this topic carried an actual field — whether the item was open, whether it was bad. The model carried that field only so it could compute the result; a real assessment has no such field. When a candidate is not proven, it is unknown whether the vulnerability exists and just could not be shown, or never existed at all. In a lab, the target’s state is known in advance, so it is possible to measure your own false-positive and false-negative rate.

This is the only measurable form of practice. How many of ten targets got the right decision, how many candidates got needlessly validated, which step got skipped how many times — all countable in a lab; in a real assessment it is only understood years later, when an incident is read back retroactively. The 13-item section of the coverage table is therefore worked through not as “less” but as “measurable.”

A rule of use follows from this. The lab’s job is not to see a technique, it is to learn your own error rate at that technique. Running the same target set twice and reaching the same decision both times teaches nothing; changing the target set and comparing the decision distribution does.

The three lab types do not share a legal condition. In an environment set up on your own hardware, the limit is the limit of your own hardware; even a single outbound connection crosses it, and that is the reason isolation is built. In a scenario-based environment the limit is drawn by the provider’s terms of use: which targets can be touched, which techniques are forbidden, and how a found vulnerability is to be reported are written there. Reading that text is part of the exercise itself — because its counterpart in a real assessment is the rules of engagement, and not reading it produces the same consequence.

Failing to build isolation in your own lab is not just a legal problem; it also breaks the measurement. The fourth lesson showed that an environment hint cannot be hidden under any configuration, because hiding it required the item under examination to reach a real target. The same limit stands the same way in a practice lab: letting one item reach outside removes both the isolation and the legal ground at the same time. Controlling the lab’s outbound connection is part of the exercise itself, and its counterpart in a real assessment is the scope document.

This draws the topic’s seven lessons together into a single line. Tools produced candidates, validation steps turned some of those candidates into evidence, every step left a trace on the defense side, and at every stage a scope limit wrote down how many items it left off the list. The scope limit behaved the same way in all seven lessons: it measured not a tool’s capability, but the permission to use that capability.

Summary

  • Thirteen of eighteen skill items are covered by the union of three lab types; no single type exceeds 10, and the difference is five items.
  • A security-focused test distribution covers zero skills on its own: a toolset shortens setup time, it does not substitute for a practice lab.
  • Your own lab and the scenario-based environment cover the same number of items but different ones: the first gives you the topology, the second gives you a scope definition.
  • Four of the five uncovered items come from process, one from a privacy decision; what they share is requiring a decision with a consequence.
  • Real record and real risk are zero in a lab; that zero makes the exercise legal and repeatable, and the same zero leaves five items off the list.
  • The legal limit varies by environment type: the limit of your own hardware, or a provider’s terms of use. Reading the terms of use is the counterpart of the rules of engagement in a real assessment.

Next Step

This topic counted what seven tool classes produce and what they cannot prove. Packet capture split claims into three classes, the protocol analyzer dropped to metadata in an encrypted flow, the intercepting proxy measured validation in terms of request count and risk class, the sandbox counted suppressed behavior, the reputation service showed the limit of the majority decision, the exploitation framework wrote down what it does not prove, and this lesson measured where all of it can be learned, in terms of scope.

The same column stayed missing in every lesson. The scope limit kicked in again and again — the request to an out-of-scope target was held at zero, two flows were left unresolved, ten items were never queried, two targets were never touched — but who drew that limit, with what authority, and with what document was never written down. Nor was it written down in what form each measured permission, each alert, and each piece of evidence is to be reported.

The next topic, Testing Process, fills this gap: turning the rules of engagement into measurable items, the difference between black-box, gray-box, and white-box assessments, eliminating false positives, expressing a finding in terms of business impact, writing reproduction steps, and the timeline of responsible disclosure.

To keep your progress and take notes, Log in

My notes

Log in to take notes.

Start typing to search.

↑↓ ↵ Esc navigate · open · close