From b8c36b206beea0edf98dc9a3cd006365470f1696 Mon Sep 17 00:00:00 2001 From: antisnatchor Date: Mon, 22 Oct 2012 15:52:15 +1100 Subject: [PATCH] Added first implementation of the IPEC extension, including the malicious FirefoxExtension. --- extensions/ipec/config.yaml | 21 +++++ extensions/ipec/extension.rb | 60 ++++++++++++ extensions/ipec/files/LinkTargetFinder.xpi | Bin 0 -> 8844 bytes .../files/LinkTargetFinder/chrome.manifest | 8 ++ .../chrome/content/browser.xul | 22 +++++ .../chrome/content/linkTargetFinder.js | 37 ++++++++ .../chrome/content/options.xul | 31 ++++++ .../defaults/preferences/prefs.js | 21 +++++ .../ipec/files/LinkTargetFinder/install.rdf | 23 +++++ .../locale/en-US/translations.dtd | 1 + .../ipec/files/LinkTargetFinder/skin/skin.css | 12 +++ .../LinkTargetFinder/skin/status-bar.png | Bin 0 -> 423 bytes .../LinkTargetFinder/skin/toolbar-large.png | Bin 0 -> 1067 bytes extensions/ipec/junk_calculator.rb | 40 ++++++++ extensions/ipec/models/ipec_exploits.rb | 37 ++++++++ extensions/ipec/models/ipec_exploits_run.rb | 36 +++++++ extensions/ipec/rest/ipec.rb | 88 ++++++++++++++++++ 17 files changed, 437 insertions(+) create mode 100644 extensions/ipec/config.yaml create mode 100644 extensions/ipec/extension.rb create mode 100644 extensions/ipec/files/LinkTargetFinder.xpi create mode 100644 extensions/ipec/files/LinkTargetFinder/chrome.manifest create mode 100644 extensions/ipec/files/LinkTargetFinder/chrome/content/browser.xul create mode 100644 extensions/ipec/files/LinkTargetFinder/chrome/content/linkTargetFinder.js create mode 100644 extensions/ipec/files/LinkTargetFinder/chrome/content/options.xul create mode 100644 extensions/ipec/files/LinkTargetFinder/defaults/preferences/prefs.js create mode 100644 extensions/ipec/files/LinkTargetFinder/install.rdf create mode 100644 extensions/ipec/files/LinkTargetFinder/locale/en-US/translations.dtd create mode 100644 extensions/ipec/files/LinkTargetFinder/skin/skin.css create mode 100644 extensions/ipec/files/LinkTargetFinder/skin/status-bar.png create mode 100644 extensions/ipec/files/LinkTargetFinder/skin/toolbar-large.png create mode 100644 extensions/ipec/junk_calculator.rb create mode 100644 extensions/ipec/models/ipec_exploits.rb create mode 100644 extensions/ipec/models/ipec_exploits_run.rb create mode 100644 extensions/ipec/rest/ipec.rb diff --git a/extensions/ipec/config.yaml b/extensions/ipec/config.yaml new file mode 100644 index 000000000..28b9dde4b --- /dev/null +++ b/extensions/ipec/config.yaml @@ -0,0 +1,21 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +beef: + extension: + ipec: + enable: true + name: 'Inter-Protocol Exploitation' + authors: ["antisnatchor"] diff --git a/extensions/ipec/extension.rb b/extensions/ipec/extension.rb new file mode 100644 index 000000000..b8464e0d6 --- /dev/null +++ b/extensions/ipec/extension.rb @@ -0,0 +1,60 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +module BeEF +module Extension + + #todo remove it from here: + # Handlers + #require 'extensions/ipec/fingerprinter' + #require 'extensions/ipec/launcher' + require 'extensions/ipec/junk_calculator' + + module Ipec + extend BeEF::API::Extension + + @short_name = 'Ipec' + @full_name = 'Inter-Protocol Exploitation' + @description = "Use the Inter-Protocol Exploitation technique to send shellcode to daemons implementing 'tolerant' protocols." + + module RegisterIpecRestHandler + def self.mount_handler(server) + server.mount('/api/ipec', BeEF::Extension::Ipec::IpecRest.new) + end + end + + BeEF::API::Registrar.instance.register(BeEF::Extension::Ipec::RegisterIpecRestHandler, BeEF::API::Server, 'mount_handler') + + #todo remove it from here, and make it dynamic. + BeEF::Extension::Ipec::JunkCalculator.instance.bind_junk_calculator("imapeudora1") + end +end +end + +# Models +# todo: to be used when we'll have more IPEC exploits +#require 'extensions/ipec/models/ipec_exploits' +#require 'extensions/ipec/models/ipec_exploits_run' + +# RESTful api endpoints +require 'extensions/ipec/rest/ipec' + + + + + + + + diff --git a/extensions/ipec/files/LinkTargetFinder.xpi b/extensions/ipec/files/LinkTargetFinder.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3fadfa9c2419213df4bb78d510da982ad639dc40 GIT binary patch literal 8844 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 Lg6S$H^3(qSqQF(L literal 0 HcmV?d00001 diff --git a/extensions/ipec/files/LinkTargetFinder/chrome.manifest b/extensions/ipec/files/LinkTargetFinder/chrome.manifest new file mode 100644 index 000000000..f9ad9ab4c --- /dev/null +++ b/extensions/ipec/files/LinkTargetFinder/chrome.manifest @@ -0,0 +1,8 @@ +content linktargetfinder chrome/content/ +content linktargetfinder chrome/content/ contentaccessible=yes +overlay chrome://browser/content/browser.xul chrome://linktargetfinder/content/browser.xul + +locale linktargetfinder en-US locale/en-US/ + +skin linktargetfinder classic/1.0 skin/ +style chrome://global/content/customizeToolbar.xul chrome://linktargetfinder/skin/skin.css \ No newline at end of file diff --git a/extensions/ipec/files/LinkTargetFinder/chrome/content/browser.xul b/extensions/ipec/files/LinkTargetFinder/chrome/content/browser.xul new file mode 100644 index 000000000..5b63810a8 --- /dev/null +++ b/extensions/ipec/files/LinkTargetFinder/chrome/content/browser.xul @@ -0,0 +1,22 @@ + + + + +