From bc709db733df26145447fdc8a1fa4ae57c7086d4 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Thu, 4 Jan 2018 19:00:07 +1000 Subject: [PATCH 1/9] Breif checking for Epiphany browser Only recognises the browser -- not yet looking for a version. --- core/main/client/browser.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index e1b119cc5..f926858d1 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -646,6 +646,15 @@ beef.browser = { return this.isS4() || this.isS5() || this.isS6() || this.isS7() || this.isS8(); }, + /** + * Return true if Epiphany + * @example: beef.browser.isEph() + */ + isEpi: function () { + return this.isS() && window.navigator.userAgent.match(/Epiphany\//) != null; + }, + + /** * Returns true if Chrome 5. * @example: beef.browser.isC5() @@ -1647,6 +1656,8 @@ beef.browser = { O12: this.isO12(), // Opera 12.xx O: this.isO(), // Opera any version + Ep: this.isEpi(), // Epiphany any version + S4: this.isS4(), // Safari 4.xx S5: this.isS5(), // Safari 5.xx S6: this.isS6(), // Safari 6.x @@ -2379,6 +2390,10 @@ beef.browser = { return 'O' } ; // Opera any version + if (this.isEpi()) { + return 'EP' + } + ; // Ephipany any version if (this.isS()) { return 'S' } From 5a35b1cde284ffde44953cac04c22876400694e4 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sat, 6 Jan 2018 10:22:03 +1000 Subject: [PATCH 2/9] Recognising Epiphany as an indendant browser Added 'EP' as a browser name, to be recognised on response. --- core/main/constants/browsers.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/main/constants/browsers.rb b/core/main/constants/browsers.rb index 181abed24..2cdffa01f 100644 --- a/core/main/constants/browsers.rb +++ b/core/main/constants/browsers.rb @@ -15,6 +15,7 @@ module Constants IE = 'IE' # Internet Explorer E = 'E' # Microsoft Edge S = 'S' # Safari + EP = 'EP' # Epiphany K = 'K' # Konqueror C = 'C' # Chrome O = 'O' # Opera @@ -30,6 +31,7 @@ module Constants FRIENDLY_IE_NAME = 'Internet Explorer' FRIENDLY_E_NAME = 'Microsoft Edge' FRIENDLY_S_NAME = 'Safari' + FRIENDLY_EP_NAME = 'Epiphany' FRIENDLY_K_NAME = 'Konqueror' FRIENDLY_C_NAME = 'Chrome' FRIENDLY_O_NAME = 'Opera' @@ -50,6 +52,7 @@ module Constants when IE; return FRIENDLY_IE_NAME when E ; return FRIENDLY_E_NAME when S ; return FRIENDLY_S_NAME + when EP; return FRIENDLY_EP_NAME when K ; return FRIENDLY_K_NAME when C ; return FRIENDLY_C_NAME when O ; return FRIENDLY_O_NAME From 4595f0d2ed72d351770af92c38f09bab2f745394 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sat, 6 Jan 2018 12:31:54 +1000 Subject: [PATCH 3/9] Minor corrections to comments and return value for browser type Make the hooked browser name and browser types consistent. modified: core/main/client/browser.js --- core/main/client/browser.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index f926858d1..a432c961e 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -648,9 +648,10 @@ beef.browser = { /** * Return true if Epiphany - * @example: beef.browser.isEph() + * @example: beef.browser.isEpi() */ isEpi: function () { + // based on webkit -- therefore should look a bit like Safari return this.isS() && window.navigator.userAgent.match(/Epiphany\//) != null; }, @@ -1656,7 +1657,7 @@ beef.browser = { O12: this.isO12(), // Opera 12.xx O: this.isO(), // Opera any version - Ep: this.isEpi(), // Epiphany any version + EP: this.isEpi(), // Epiphany any version S4: this.isS4(), // Safari 4.xx S5: this.isS5(), // Safari 5.xx From 86c3212e2ee1bb140f5a95e42093f8b5fd14a7e5 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sat, 6 Jan 2018 12:36:03 +1000 Subject: [PATCH 4/9] Whitespace changes - indentation consistency Clearing the noise from the commit diff - editor imposed whitespace style changes. modified: core/main/client/browser.js --- core/main/client/browser.js | 63 +++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index a432c961e..c330b5ada 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -1679,47 +1679,47 @@ beef.browser = { if (this.isC5()) { return '5' } - ; // Chrome 5 + ; // Chrome 5 if (this.isC6()) { return '6' } - ; // Chrome 6 + ; // Chrome 6 if (this.isC7()) { return '7' } - ; // Chrome 7 + ; // Chrome 7 if (this.isC8()) { return '8' } - ; // Chrome 8 + ; // Chrome 8 if (this.isC9()) { return '9' } - ; // Chrome 9 + ; // Chrome 9 if (this.isC10()) { return '10' } - ; // Chrome 10 + ; // Chrome 10 if (this.isC11()) { return '11' } - ; // Chrome 11 + ; // Chrome 11 if (this.isC12()) { return '12' } - ; // Chrome 12 + ; // Chrome 12 if (this.isC13()) { return '13' } - ; // Chrome 13 + ; // Chrome 13 if (this.isC14()) { return '14' } - ; // Chrome 14 + ; // Chrome 14 if (this.isC15()) { return '15' } - ; // Chrome 15 + ; // Chrome 15 if (this.isC16()) { return '16' } @@ -1996,7 +1996,7 @@ beef.browser = { return '51' } ; // Chrome 51 for iOS - if (this.isC52()) { + if (this.isC52()) { return '52' } ;// Chrome 52 @@ -2374,7 +2374,7 @@ beef.browser = { if (this.isC()) { return 'C' } - ; // Chrome any version + ; // Chrome any version if (this.isFF()) { return 'FF' } @@ -2878,8 +2878,9 @@ beef.browser = { */ getPluginsIE: function () { var results = ''; - var plugins = {'AdobePDF6': { - 'control': 'PDF.PdfCtrl', + var plugins = { + 'AdobePDF6': { + 'control': 'PDF.PdfCtrl', 'return': function (control) { version = control.getVersions().split(','); version = version[0].split('='); @@ -2997,14 +2998,14 @@ beef.browser = { var page_referrer = (document.referrer) ? document.referrer : "Unknown"; var hostname = (document.location.hostname) ? document.location.hostname : "Unknown"; switch (document.location.protocol) { - case "http:": - var default_port = "80"; - break; - case "https:": - var default_port = "443"; - break - default: - var default_port = ""; + case "http:": + var default_port = "80"; + break; + case "https:": + var default_port = "443"; + break + default: + var default_port = ""; } var hostport = (document.location.port) ? document.location.port : default_port; var browser_plugins = beef.browser.getPlugins(); @@ -3191,13 +3192,13 @@ beef.browser = { * @from: https://github.com/idofilin/webgl-by-example/blob/master/detect-webgl/detect-webgl.js * */ hasWebGL: function () { - try { - var canvas = document.createElement("canvas"); - var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); - return !!(gl && gl instanceof WebGLRenderingContext); - } catch(e) { - return false; - } + try { + var canvas = document.createElement("canvas"); + var gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); + return !!(gl && gl instanceof WebGLRenderingContext); + } catch(e) { + return false; + } }, /** @@ -3355,7 +3356,7 @@ beef.browser = { if (scope == 'PER_DOMAIN') testUrl = "http://browserspy.dk/connections.php?img=1&random="; else - // The token will be replaced by a different number with each request (different origin). + // The token will be replaced by a different number with each request (different origin). testUrl = "http://.browserspy.dk/connections.php?img=1&random="; var imagesLoaded = 0; // Number of responding images before timeout. From 628ddb8dc2172d648fc18bad299acb1dd4ffc2f0 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sat, 6 Jan 2018 12:37:52 +1000 Subject: [PATCH 5/9] Epiphany version returned. Basing the Epiphany version of UserAgant name - for want of a better way of determining this at this stage. modified: core/main/client/browser.js --- core/main/client/browser.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index c330b5ada..dc4238e54 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -2317,6 +2317,18 @@ beef.browser = { } ; // Microsoft Edge + if (this.isEpi()) { + // beleive the UserAgent string - until whenever + var epiphanyRe = /Epiphany\/(\d+)/; + var versionDetails = epiphanyRe.exec( beef.browser.getBrowserReportedName()); + if (versionDetails.length > 1) { + return versionDetails[1]; + } else { + return "UNKNOWN"; + } + } + ; // Epihany + if (this.isS4()) { return '4' } From 190b425a3038ff9955ab0bb28f3bb96d0fc0bfd9 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sat, 6 Jan 2018 13:12:46 +1000 Subject: [PATCH 6/9] Update epiphany browser icon, and let it be seen New epiphany icon from : https://wiki.gnome.org/Apps/Web Resized to 10% for space. Added discovery details, to constants and models. modified: core/main/models/browserdetails.rb modified: extensions/admin_ui/constants/agents.rb modified: extensions/admin_ui/media/images/icons/epiphany.png --- core/main/models/browserdetails.rb | 23 +++++++++--------- extensions/admin_ui/constants/agents.rb | 4 ++- .../admin_ui/media/images/icons/epiphany.png | Bin 631 -> 5197 bytes 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/core/main/models/browserdetails.rb b/core/main/models/browserdetails.rb index e4e2a5d1c..3209d90a7 100644 --- a/core/main/models/browserdetails.rb +++ b/core/main/models/browserdetails.rb @@ -65,21 +65,22 @@ module Models def self.browser_icon(session_id) browser = get(session_id, 'BrowserName') - - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_IE_IMG if browser.eql? 'IE' # Internet Explorer - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_EDGE_IMG if browser.eql? 'E' # Microsoft Edge - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_IMG if browser.eql? 'FF' # Firefox - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_SAFARI_IMG if browser.eql? 'S' # Safari - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_CHROME_IMG if browser.eql? 'C' # Chrome - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_OPERA_IMG if browser.eql? 'O' # Opera - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_MIDORI_IMG if browser.eql? 'MI' # Midori - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_ODYSSEY_IMG if browser.eql? 'OD' # Odyssey - return BeEF::Extension::AdminUI::Constants::Agents::AGENT_BRAVE_IMG if browser.eql? 'BR' # Brave + + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_IE_IMG if browser.eql? 'IE' # Internet Explorer + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_EDGE_IMG if browser.eql? 'E' # Microsoft Edge + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_FIREFOX_IMG if browser.eql? 'FF' # Firefox + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_EPIPHANY_IMG if browser.eql? 'EP' # Epiphany + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_SAFARI_IMG if browser.eql? 'S' # Safari + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_CHROME_IMG if browser.eql? 'C' # Chrome + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_OPERA_IMG if browser.eql? 'O' # Opera + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_MIDORI_IMG if browser.eql? 'MI' # Midori + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_ODYSSEY_IMG if browser.eql? 'OD' # Odyssey + return BeEF::Extension::AdminUI::Constants::Agents::AGENT_BRAVE_IMG if browser.eql? 'BR' # Brave BeEF::Extension::AdminUI::Constants::Agents::AGENT_UNKNOWN_IMG end - + # # Returns the icon representing the os type the # zombie is running (i.e. Windows, Linux) diff --git a/extensions/admin_ui/constants/agents.rb b/extensions/admin_ui/constants/agents.rb index 2e68fcfc2..839d63433 100644 --- a/extensions/admin_ui/constants/agents.rb +++ b/extensions/admin_ui/constants/agents.rb @@ -7,7 +7,7 @@ module BeEF module Extension module AdminUI module Constants - + # The User Agent strings for browser detection module Agents @@ -20,6 +20,8 @@ module Constants AGENT_IE_IMG = 'msie.png' AGENT_EDGE_UA_STR = 'Edge' AGENT_EDGE_IMG = 'edge.png' + AGENT_EPIPHANY_UA_STR = 'Epiphany' + AGENT_EPIPHANY_IMG = 'epiphany.png' AGENT_SAFARI_UA_STR = 'Safari' AGENT_SAFARI_IMG = 'safari.png' AGENT_KONQ_UA_STR = 'Konqueror' diff --git a/extensions/admin_ui/media/images/icons/epiphany.png b/extensions/admin_ui/media/images/icons/epiphany.png index dc87718c5cc82d11d1047cf4da7b33c225ceca10..9861d1226b40dbf1dfa8e781498f7597b4e2d8fe 100644 GIT binary patch literal 5197 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 literal 631 zcmV--0*L*IP)Tc6K+L!bWoZstDwdBNt4WTFtu|%#`s}34l0x5ZJjyZXs_H89l@Sw~2~*efwxPCY_-{{RH%cmWA72gq zj9cc))vX-FGx8+s@bceFej>-oKm-p2$7e7wANk%&ZYJ01(m5{>PS?xPPtH>&<5( z8)ou6>8;JRC^U8g0JD@rDYY4nq^G$y!jVwKGJ-2<$=dC!EmEdtL{y4|5Cu7z zzoYTK;kOS*jMBVA9W6D{m_7StnMffbGYdonU_`voa7HDpSbQ)0fL32sZhZRMdHq4p z-NBumh_j^(1OkXi%tt(KT@$Y-XTpE}g?{{cGxd4#+j?U~X>CP0GXerSA7Ex8mQuVJ zpL+CcY;|)hX`eWIy5!2Gb15mQ%!G)Ji5yMXHZ$7^Yi#nv^z1w{GqY04f&bUCJ9haz R&@})6002ovPDHLkV1n?(9o7H< From a2c097a47ff5641761cc2089bd6bb2ec4d863f71 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Sun, 7 Jan 2018 15:22:21 +1000 Subject: [PATCH 7/9] Code review updates, speeling, and removed reliance on isS modified: core/main/client/browser.js --- core/main/client/browser.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index dc4238e54..6f5200f7f 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -652,7 +652,7 @@ beef.browser = { */ isEpi: function () { // based on webkit -- therefore should look a bit like Safari - return this.isS() && window.navigator.userAgent.match(/Epiphany\//) != null; + return window.navigator.userAgent.match(/Epiphany\//) != null; }, @@ -2318,16 +2318,16 @@ beef.browser = { ; // Microsoft Edge if (this.isEpi()) { - // beleive the UserAgent string - until whenever + // believe the UserAgent string for version info - until whenever var epiphanyRe = /Epiphany\/(\d+)/; var versionDetails = epiphanyRe.exec( beef.browser.getBrowserReportedName()); if (versionDetails.length > 1) { return versionDetails[1]; } else { - return "UNKNOWN"; + return "UNKNOWN"; // returns from here or it may take Safari version details } } - ; // Epihany + ; // Epiphany if (this.isS4()) { return '4' @@ -2406,7 +2406,7 @@ beef.browser = { if (this.isEpi()) { return 'EP' } - ; // Ephipany any version + ; // Epiphany any version if (this.isS()) { return 'S' } From f92aed46c25330f5d74ad5bcb1003d5a001804cd Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Mon, 8 Jan 2018 09:44:59 +1000 Subject: [PATCH 8/9] Restore webkit checking. Additional comments. Added `isWebKitBased` function. Due to who knows what version is being used -- this primarily checks for Safari. Eliminating code duplication and bugs. Corrected getBrowserVersion comment. modified: core/main/client/browser.js --- core/main/client/browser.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index 6f5200f7f..4193fa6eb 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -646,13 +646,24 @@ beef.browser = { return this.isS4() || this.isS5() || this.isS6() || this.isS7() || this.isS8(); }, + /** + * Returns true if Webkit based + */ + isWebKitBased: function () { + // Currently, [2018-01-08], safari checks isS* provide evidence of webkit + // to avoid duplicating code and hence bugs, use the existing checks for Safari. + return this.isS4() || this.isS5() || this.isS6() || this.isS7() || this.isS8(); + }, + /** * Return true if Epiphany * @example: beef.browser.isEpi() */ isEpi: function () { - // based on webkit -- therefore should look a bit like Safari - return window.navigator.userAgent.match(/Epiphany\//) != null; + // Epiphany is based on webkit + // due to the uncertainty of webkit version vs Epiphany versions tracking. + // -- do webkit based checking (i.e. do safari checks) + return this.isWebKitBased() && window.navigator.userAgent.match(/Epiphany\//) != null; }, @@ -1669,8 +1680,8 @@ beef.browser = { }, /** - * Returns the type of browser being used. - * @return: {String} User agent software and version. + * Returns the major version of the browser being used. + * @return: {String} version number || 'UNKNOWN'. * * @example: beef.browser.getBrowserVersion() */ From c09e6405e2fea1fb6ef468ba78f0991b46faa658 Mon Sep 17 00:00:00 2001 From: Bucky Wilson Date: Tue, 9 Jan 2018 09:16:30 +1000 Subject: [PATCH 9/9] Make Webkit fingerprinting more explicit. Copied common code from /isS\d\>/ functions into isWebKitBased modified: core/main/client/browser.js --- core/main/client/browser.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/main/client/browser.js b/core/main/client/browser.js index 4193fa6eb..ee3cfe9ca 100644 --- a/core/main/client/browser.js +++ b/core/main/client/browser.js @@ -648,11 +648,15 @@ beef.browser = { /** * Returns true if Webkit based + * + * **** DUPLICATE WARNING **** Changes here may aldo need addressed in /isS\d+/ functions. */ isWebKitBased: function () { - // Currently, [2018-01-08], safari checks isS* provide evidence of webkit - // to avoid duplicating code and hence bugs, use the existing checks for Safari. - return this.isS4() || this.isS5() || this.isS6() || this.isS7() || this.isS8(); + return (!window.opera && !window.chrome + && window.navigator.userAgent.match(/ Version\/\d/) != null + && !window.globalStorage + && !!window.getComputedStyle + && !("MozWebSocket" in window)); }, /**