Files
SecGen/lib/CyBOK/template_CyBOK_scenarios.md.erb
Z. Cliffe Schreuders ba48cf2e29 CyBOK updates
2024-04-11 11:02:56 +01:00

83 lines
3.4 KiB
Plaintext

# <%= scenario_type == "CTF" ? "CTF" : "Lab" %> Scenarios and CyBOK
The Cyber Security Body of Knowledge (CyBOK) is a body of knowledge that aims to encapsulate the various knowledge areas present within cyber security. Scenarios within SecGen now contain XML elements linking them to CyBOK knowledge areas and specific topics within those knowledge areas. Additionally, video lectures for scenarios are tagged with CyBOK associations.
This file is an autogenerated index and cross referencing of the <%= SCENARIOS_HASH.length %> SecGen <%= scenario_type %> scenarios that have CyBOK metadata.
You can browse the list below in terms of the [CyBOK Knowledge Areas, and Topics](#scenarios-indexed-by-cybok-knowledge-area-ka). The [list of scenarios](#scenario-cybok-keywords) in the second half of this document includes keywords (also known as "indicative topics" in CyBOK terminology).
> The all lowercase topics and keywords are provided by NCSC for CyBOK mapping, while all caps indicates it is taken from the [CyBOK mapping reference](https://www.cybok.org/media/downloads/CyBOk-mapping-reference-v1.1.pdf), mixed case keywords are ones that we have added.
> Cyber Security Body of Knowledge (CyBOK) Issue 1.1 is Crown Copyright, The National Cyber Security Centre 2021, licensed under the Open Government Licence http://www.nationalarchives.gov.uk/doc/open-government-licence/.
# Scenarios Indexed By CyBOK Knowledge Area (KA)
<%
KA_TOPIC_SCENARIOS_HASH.each{|ka,hash|
ka_title = "#{CyBOK_ACRONYMS[ka]} (#{ka})"
-%>
[<%= ka_title %>](#<%= ka_title.downcase.gsub(/&amp;/, '').delete('&\/().').gsub(/ /, '-') %>)</br>
<%
} -%>
<%
KA_TOPIC_SCENARIOS_HASH.each{|ka,hash|
ka_title = "#{CyBOK_ACRONYMS[ka]} (#{ka})"
%>
## <%= ka_title %>
### <%= ka %> Scenarios
<% @ka_hash[ka].uniq.each {|scenario| -%>
[<%= scenario %>](#<%= scenario.delete('\/().') %>)</br><% } -%>
### <%= ka %> Scenarios by Topics
| Topic | Scenario |
| --- | --- |<%
hash.each{|topic,hash|%>
<%= topic %> | <% hash.keys.uniq.each {|scenario| -%>
[<%= scenario %>](#<%= scenario.delete('\/().') %>)</br><%
}
}
}
%>
# Scenario CyBOK Keywords
<%
SCENARIOS_HASH.keys.each{|scenario|
%>
## <%= scenario %>
### Details
| Key | Data |
| --- | --- |
|Name | <%= SCENARIOS_FULL_HASH[scenario][0]["name"].to_s %> |
|Description | <%= SCENARIOS_FULL_HASH[scenario][0]["description"].to_s.delete('#').gsub(/\n/,'</br>') %> |
|Lab sheet | <%= SCENARIOS_FULL_HASH[scenario][0]["lab_sheet_url"].to_s.delete('#').gsub(/\n/,'</br>') if SCENARIOS_FULL_HASH[scenario] && SCENARIOS_FULL_HASH[scenario][0]["lab_sheet_url"] %> |
|Type | <%= SCENARIOS_FULL_HASH[scenario][0]["type"].to_s.gsub(/"|\[|\]/, '').gsub(',',';') %> |
|Author | <%= SCENARIOS_FULL_HASH[scenario][0]["author"].to_s %> |
|Linked videos| <%= SCENARIOS_FULL_HASH[scenario][0].dig_deep(:url).to_s.gsub(/"|\[|\]/, '').gsub(',',';') %> |
|VM names| <%=
systems = SCENARIOS_FULL_HASH[scenario][0].dig_deep(:system_name).to_s.gsub(/"|\[|\]/, '').gsub(',',';') %> |
### CyBOK KAs, Topics, and Keywords
| KA | Topic | Keywords
| --- | --- | --- |
<%SCENARIOS_HASH[scenario].each{|arr| -%>
| <%= CyBOK_ACRONYMS[arr["@KA"]] %> (<%= arr["@KA"] %>) | <%= arr["@topic"] %> | <%= arr["keyword"].to_s.gsub(/"|\[|\]/, '').gsub(',',';') %> |
<%} -%>
Command to build VMs and start scenario:
```ruby secgen.rb -s <%= scenarios_dir %>/<%= scenario %> run```
[View source](<%= scenarios_dir %>/<%= scenario %>)
<%
} %>