diff --git a/Gemfile b/Gemfile index 07b1b93b5..ff1ed012c 100644 --- a/Gemfile +++ b/Gemfile @@ -36,6 +36,7 @@ gem 'digest-sha3', :git => "http://github.com/izetex/digest-sha3-ruby" gem 'packetfu' gem 'net-ntp' gem 'CFPropertyList' +gem 'artii' #development only gems go here group :test, :development do diff --git a/Gemfile.lock b/Gemfile.lock index 1868009da..02838b4b9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,6 +26,7 @@ GEM i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) + artii (2.1.2) bases (1.0.2) bcrypt (3.1.13) chunky_png (1.3.11) @@ -151,6 +152,7 @@ PLATFORMS DEPENDENCIES CFPropertyList + artii bases bcrypt braille! diff --git a/modules/encoders/format/ascii_art/ascii_art.pp b/modules/encoders/format/ascii_art/ascii_art.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/encoders/format/ascii_art/manifests/.no_puppet b/modules/encoders/format/ascii_art/manifests/.no_puppet new file mode 100644 index 000000000..e69de29bb diff --git a/modules/encoders/format/ascii_art/secgen_local/local.rb b/modules/encoders/format/ascii_art/secgen_local/local.rb new file mode 100644 index 000000000..d64c903d9 --- /dev/null +++ b/modules/encoders/format/ascii_art/secgen_local/local.rb @@ -0,0 +1,37 @@ +#!/usr/bin/ruby +require_relative '../../../../../lib/objects/local_string_encoder.rb' +require 'artii' + +class ASCIIArtEncoder < StringEncoder + attr_accessor :font + + def initialize + super + self.module_name = 'Ascii Art Encoder' + self.font = [] + end + + def encode(str) + # if more than one font is specified, randomly choose one for every string that is encoded + artii = Artii::Base.new :font => self.font.sample + artii.asciify(str) + end + + def process_options(opt, arg) + super + case opt + # Removes any non-alphabet characters + when '--font' + self.font << arg + else + # do nothing + end + end + + def get_options_array + super + [['--font', GetoptLong::OPTIONAL_ARGUMENT]] + end + +end + +ASCIIArtEncoder.new.run diff --git a/modules/encoders/format/ascii_art/secgen_metadata.xml b/modules/encoders/format/ascii_art/secgen_metadata.xml new file mode 100644 index 000000000..09c4cfda5 --- /dev/null +++ b/modules/encoders/format/ascii_art/secgen_metadata.xml @@ -0,0 +1,61 @@ + + + + Text to ASCII Art + Z. Cliffe Schreuders + MIT + Outputs an ASCII art version of the text. Works best with short strings. + + + string_format_encoder + linux + windows + + strings_to_encode + font + + + + + banner + big + bubble + bulbhead + contessa + doom + drpepper + fourtops + invita + italic + larry3d + maxfour + mini + moscow + ntgreek + ogre + pawp + pebbles + puffy + rectangles + serifcap + short + slant + slscript + small + smisome1 + smslant + speed + standard + straight + twopoint + + + + + + + encoded_strings + + diff --git a/modules/utilities/unix/system/after_login_message/manifests/init.pp b/modules/utilities/unix/system/after_login_message/manifests/init.pp index ab814ddaa..d95987c56 100644 --- a/modules/utilities/unix/system/after_login_message/manifests/init.pp +++ b/modules/utilities/unix/system/after_login_message/manifests/init.pp @@ -1,11 +1,11 @@ class after_login_message::init { $secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file) - $leaked_strings = join($secgen_parameters['$leaked_strings'], "/n") - - file_line { "$leaked_strings leak login": - path => '/etc/bashrc', - line => "cat <<'EOF'\n$leaked_strings\nEOF", + $strings_to_leak = join($secgen_parameters['strings_to_leak'], "\n") + + file_line { "$strings_to_leak leak login": + path => '/etc/bash.bashrc', + line => "cat <<'EOF'\n$strings_to_leak\nEOF", } } diff --git a/modules/utilities/unix/system/after_login_message/secgen_metadata.xml b/modules/utilities/unix/system/after_login_message/secgen_metadata.xml index 8ea6d81ca..b4b7596f9 100644 --- a/modules/utilities/unix/system/after_login_message/secgen_metadata.xml +++ b/modules/utilities/unix/system/after_login_message/secgen_metadata.xml @@ -11,9 +11,9 @@ system linux - leaked_strings + strings_to_leak - + diff --git a/modules/utilities/unix/system/before_login_message/manifests/init.pp b/modules/utilities/unix/system/before_login_message/manifests/init.pp index f5e81b402..a62f006bc 100644 --- a/modules/utilities/unix/system/before_login_message/manifests/init.pp +++ b/modules/utilities/unix/system/before_login_message/manifests/init.pp @@ -1,14 +1,14 @@ class before_login_message::init { $secgen_parameters = secgen_functions::get_parameters($::base64_inputs_file) - $leaked_strings = join($secgen_parameters['$leaked_strings'], "/n") - - file_line { "$leaked_strings leak": + $strings_to_leak = join($secgen_parameters['strings_to_leak'], "\n") + + file_line { "$strings_to_leak leak": path => '/etc/issue', - line => $leaked_strings, + line => $strings_to_leak, } - file_line { "$leaked_strings net leak": + file_line { "$strings_to_leak net leak": path => '/etc/issue.net', - line => $leaked_strings, + line => $strings_to_leak, } } diff --git a/scenarios/examples/services_utilities_examples/shell_login_messages.xml b/scenarios/examples/services_utilities_examples/shell_login_messages.xml new file mode 100644 index 000000000..a23fa9460 --- /dev/null +++ b/scenarios/examples/services_utilities_examples/shell_login_messages.xml @@ -0,0 +1,32 @@ + + + + + + system + + + + + + + Hacktivity + + + You are logged out + + + + + + + SecGen + + + Welcome! You are logged in. + + + +