diff --git a/atomic_red_team/atomic_doc_template.md.erb b/atomic_red_team/atomic_doc_template.md.erb index d6a522f5b64..b0a97513b66 100644 --- a/atomic_red_team/atomic_doc_template.md.erb +++ b/atomic_red_team/atomic_doc_template.md.erb @@ -1,24 +1,24 @@ # <%= technique['identifier'] %> - <%= technique['name'] -%> -## [Description from ATT&CK](https://attack.mitre.org/techniques/<%= technique['identifier'].gsub(/\./, '/') %>) -
+## Description from ATT&CK -<%= technique['description'].gsub("%\\<", "%<").gsub(/.*?<\/code>/) { |match| match.gsub('~', '\~') } %> +<% attack_description_lines = technique['description'].gsub("%\\<", "%<").gsub(/.*?<\/code>/) { |match| match.gsub('~', '\~') } %> +<% attack_description_lines.each do |desc_line| %>> <%= desc['line'].strip %> +<% end %> -
+[Source](https://attack.mitre.org/techniques/<%= technique['identifier'].gsub(/\./, '/') %>) ## Atomic Tests + <% atomic_yaml['atomic_tests'].each_with_index do |test, test_number| -%> -<% title = "Atomic Test ##{test_number+1} - #{test['name']}" %> -- [<%= title %>](#<%= title.downcase.gsub(/ /, '-').gsub(/[`~!@#$%^&*()+=<>?,.\/:;"'|{}\[\]\\–—]/, '') %>) +<% title = "Atomic Test ##{test_number+1} - #{test['name']}" %>- [<%= title %>](#<%= title.downcase.gsub(/ /, '-').gsub(/[`~!@#$%^&*()+=<>?,.\/:;"'|{}\[\]\\–—]/, '') %>) <% end %> <% atomic_yaml['atomic_tests'].each_with_index do |test, test_number| -%> -
-## Atomic Test #<%= test_number+1 %> - <%= test['name'] %> -<%= test['description'].strip -%> +### Atomic Test #<%= test_number+1 %> - <%= test['name'] %> +<%= test['description'].strip -%> **Supported Platforms:** <%= test['supported_platforms'].collect do |p| case p @@ -29,9 +29,7 @@ end end.join(', ') %> - -**auto_generated_guid:** <%= test['auto_generated_guid'] %> - +**auto_generated_guid:** `<%= test['auto_generated_guid'] %>` <%def cleanup(input) input.to_s.strip.gsub(/\\/,"\") @@ -39,6 +37,7 @@ end%> <% if test['input_arguments'].to_a.count > 0 %> #### Inputs: + | Name | Description | Type | Default Value | |------|-------------|------|---------------| <% test['input_arguments'].each do |arg_name, arg_options| -%> @@ -52,7 +51,7 @@ end%> <%= test['executor']['steps'] %> <%- else -%> -#### Attack Commands: Run with `<%= test['executor']['name'] %>`! <%- if test['executor']['elevation_required'] -%> Elevation Required (e.g. root or admin) <%- end -%> +##### Attack Commands: Run with `<%= test['executor']['name'] %>`! <%- if test['executor']['elevation_required'] -%> Elevation Required (e.g. root or admin) <%- end -%> <%def get_language(executor) language = executor @@ -70,7 +69,8 @@ end%> <%- end -%> <%- if test['executor']['cleanup_command'] != nil -%> -#### Cleanup Commands: +##### Cleanup Commands: + ```<%= get_language(test['executor']['name']) %> <%= test['executor']['cleanup_command'].to_s.strip %> ``` @@ -79,21 +79,20 @@ end%> <% if test['dependencies'].to_a.count > 0 %> <% dependency_executor = test['executor']['name'] %> #### Dependencies: Run with `<%- if test['dependency_executor_name'] != nil%><% dependency_executor = test['dependency_executor_name'] %><%= test['dependency_executor_name'] %><%- else -%><%= test['executor']['name'] %><%- end -%>`! + <% test['dependencies'].each do | dep | -%> ##### Description: <%= dep['description'].strip %> -##### Check Prereq Commands: + +###### Check Prereq Commands: + ```<%= get_language(dependency_executor) %> <%= dep['prereq_command'].strip %> ``` -##### Get Prereq Commands: +###### Get Prereq Commands: + ```<%= get_language(dependency_executor) %> <%= dep['get_prereq_command'].strip %> ``` <% end -%> <% end -%> - - - - -
<%- end -%>