diff --git a/core/main/client/browser.js b/core/main/client/browser.js
index 9a243aad4..2e82f5de6 100644
--- a/core/main/client/browser.js
+++ b/core/main/client/browser.js
@@ -551,6 +551,19 @@ beef.browser = {
},
+ /**
+ * Checks if the Phonegap API is available from the hooked domain.
+ * @return: {Boolean} true or false.
+ *
+ * @example: if(beef.browser.hasJava()) { ... }
+ */
+ hasPhonegap: function() {
+ var result = false;
+ try { if (!!device.phonegap) result = true; else result = false; }
+ catch(e) { result = false; }
+ return result;
+ },
+
/**
* Checks if the zombie has Java installed and enabled.
* @return: {Boolean} true or false.
@@ -773,6 +786,7 @@ beef.browser = {
var java_enabled = (beef.browser.javaEnabled())? "Yes" : "No";
var vbscript_enabled=(beef.browser.hasVBScript())? "Yes" : "No";
var has_flash = (beef.browser.hasFlash())? "Yes" : "No";
+ var has_phonegap = (beef.browser.hasPhonegap())? "Yes" : "No";
var has_googlegears=(beef.browser.hasGoogleGears())? "Yes":"No";
var has_web_socket=(beef.browser.hasWebSocket())? "Yes":"No";
var has_activex = (typeof(window.ActiveXObject) != "undefined") ? "Yes":"No";
@@ -799,6 +813,7 @@ beef.browser = {
if(java_enabled) details['JavaEnabled'] = java_enabled;
if(vbscript_enabled) details['VBScriptEnabled'] = vbscript_enabled
if(has_flash) details['HasFlash'] = has_flash
+ if(has_phonegap) details['HasPhonegap'] = has_phonegap
if(has_web_socket) details['HasWebSocket'] = has_web_socket
if(has_googlegears) details['HasGoogleGears'] = has_googlegears
if(has_activex) details['HasActiveX'] = has_activex;
diff --git a/core/main/handlers/browserdetails.rb b/core/main/handlers/browserdetails.rb
index 1ca83f165..9a5f27946 100644
--- a/core/main/handlers/browserdetails.rb
+++ b/core/main/handlers/browserdetails.rb
@@ -230,6 +230,14 @@ module BeEF
self.err_msg "Invalid value for HasFlash returned from the hook browser's initial connection."
end
+ # get and store the yes|no value for HasPhonegap
+ has_phonegap = get_param(@data['results'], 'HasPhonegap')
+ if BeEF::Filters.is_valid_yes_no?(has_phonegap)
+ BD.set(session_id, 'HasPhonegap', has_phonegap)
+ else
+ self.err_msg "Invalid value for HasPhonegap returned from the hook browser's initial connection."
+ end
+
# get and store the yes|no value for HasGoogleGears
has_googlegears = get_param(@data['results'], 'HasGoogleGears')
if BeEF::Filters.is_valid_yes_no?(has_googlegears)
diff --git a/extensions/admin_ui/controllers/modules/modules.rb b/extensions/admin_ui/controllers/modules/modules.rb
index 827f6c241..6fce2a02c 100644
--- a/extensions/admin_ui/controllers/modules/modules.rb
+++ b/extensions/admin_ui/controllers/modules/modules.rb
@@ -346,6 +346,21 @@ class Modules < BeEF::Extension::AdminUI::HttpController
summary_grid_hash['results'].push(page_name_row) # add the row
end
+ # set and add the yes|no value for hasPhonegap
+ has_phonegap = BD.get(zombie_session, 'hasPhonegap')
+ if not has_phonegap.nil?
+ encoded_has_phonegap = CGI.escapeHTML(has_phonegap)
+ encoded_has_phonegap_hash = { 'Has Phonegap' => encoded_has_phonegap }
+
+ page_name_row = {
+ 'category' => 'Browser',
+ 'data' => encoded_has_phonegap_hash,
+ 'from' => 'Initialization'
+ }
+
+ summary_grid_hash['results'].push(page_name_row) # add the row
+ end
+
# set and add the yes|no value for HasGoogleGears
has_googlegears = BD.get(zombie_session, 'HasGoogleGears')
if not has_googlegears.nil?
diff --git a/extensions/admin_ui/controllers/panel/panel.rb b/extensions/admin_ui/controllers/panel/panel.rb
index 56b6a708c..6c101681a 100644
--- a/extensions/admin_ui/controllers/panel/panel.rb
+++ b/extensions/admin_ui/controllers/panel/panel.rb
@@ -85,17 +85,19 @@ class Panel < BeEF::Extension::AdminUI::HttpController
# create a hash of simple hooked browser details
def get_simple_hooked_browser_hash(hooked_browser)
- browser_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'BrowserName')
- browser_version = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'BrowserVersion')
- browser_icon = BeEF::Core::Models::BrowserDetails.browser_icon(hooked_browser.session)
- os_icon = BeEF::Core::Models::BrowserDetails.os_icon(hooked_browser.session)
- os_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'OsName')
- hw_icon = BeEF::Core::Models::BrowserDetails.hw_icon(hooked_browser.session)
- hw_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'Hardware')
- domain = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HostName')
- has_flash = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasFlash')
- has_web_sockets = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasWebSocket')
- date_stamp = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'DateStamp')
+ browser_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'BrowserName')
+ browser_version = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'BrowserVersion')
+ browser_icon = BeEF::Core::Models::BrowserDetails.browser_icon(hooked_browser.session)
+ os_icon = BeEF::Core::Models::BrowserDetails.os_icon(hooked_browser.session)
+ os_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'OsName')
+ hw_icon = BeEF::Core::Models::BrowserDetails.hw_icon(hooked_browser.session)
+ hw_name = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'Hardware')
+ domain = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HostName')
+ has_flash = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasFlash')
+ has_web_sockets = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasWebSocket')
+ has_googlegears = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasGoogleGears')
+ has_phonegap = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'HasPhonegap')
+ date_stamp = BeEF::Core::Models::BrowserDetails.get(hooked_browser.session, 'DateStamp')
return {
'session' => hooked_browser.session,
@@ -111,6 +113,8 @@ class Panel < BeEF::Extension::AdminUI::HttpController
'hw_name' => hw_name,
'has_flash' => has_flash,
'has_web_sockets' => has_web_sockets,
+ 'has_googlegears' => has_googlegears,
+ 'has_phonegap' => has_phonegap,
'date_stamp' => date_stamp
}
diff --git a/extensions/admin_ui/media/javascript/ui/panel/ZombiesMgr.js b/extensions/admin_ui/media/javascript/ui/panel/ZombiesMgr.js
index 6f7d02f50..e161c8209 100644
--- a/extensions/admin_ui/media/javascript/ui/panel/ZombiesMgr.js
+++ b/extensions/admin_ui/media/javascript/ui/panel/ZombiesMgr.js
@@ -21,34 +21,38 @@ var ZombiesMgr = function(zombies_tree_lists) {
// this is a helper class to create a zombie object from a JSON hash index
this.zombieFactory = function(index, zombie_array){
- var ip = zombie_array[index]["ip"];
- var session = zombie_array[index]["session"];
- var browser_name = zombie_array[index]["browser_name"];
- var browser_version = zombie_array[index]["browser_version"];
- var browser_icon = zombie_array[index]["browser_icon"];
- var os_icon = zombie_array[index]["os_icon"];
- var os_name = zombie_array[index]["os_name"];
- var hw_name = zombie_array[index]["hw_name"];
- var hw_icon = zombie_array[index]["hw_icon"];
- var domain = zombie_array[index]["domain"];
- var port = zombie_array[index]["port"];
- var has_flash = zombie_array[index]["has_flash"];
- var has_web_sockets = zombie_array[index]["has_web_sockets"];
- var date_stamp = zombie_array[index]["date_stamp"];
+ var ip = zombie_array[index]["ip"];
+ var session = zombie_array[index]["session"];
+ var browser_name = zombie_array[index]["browser_name"];
+ var browser_version = zombie_array[index]["browser_version"];
+ var browser_icon = zombie_array[index]["browser_icon"];
+ var os_icon = zombie_array[index]["os_icon"];
+ var os_name = zombie_array[index]["os_name"];
+ var hw_name = zombie_array[index]["hw_name"];
+ var hw_icon = zombie_array[index]["hw_icon"];
+ var domain = zombie_array[index]["domain"];
+ var port = zombie_array[index]["port"];
+ var has_flash = zombie_array[index]["has_flash"];
+ var has_web_sockets = zombie_array[index]["has_web_sockets"];
+ var has_googlegears = zombie_array[index]["has_googlegears"];
+ var has_phonegap = zombie_array[index]["has_phonegap"];
+ var date_stamp = zombie_array[index]["date_stamp"];
text = "
";
text+= "
";
text+= "
";
text+= ip;
- balloon_text = "IP: "+ip;
- balloon_text+= "
Browser: " + browser_name + " " + browser_version;
- balloon_text+= "
System: " + os_name;
- balloon_text+= "
Hardware: " + hw_name;
- balloon_text+= "
Domain: " + domain + ":" + port;
- balloon_text+= "
Flash: " + has_flash;
- balloon_text+= "
Web Sockets: " + has_web_sockets;
- balloon_text+= "
Date: " + date_stamp;
+ balloon_text = "IP: " + ip;
+ balloon_text+= "
Browser: " + browser_name + " " + browser_version;
+ balloon_text+= "
System: " + os_name;
+ balloon_text+= "
Hardware: " + hw_name;
+ balloon_text+= "
Domain: " + domain + ":" + port;
+ balloon_text+= "
Flash: " + has_flash;
+ balloon_text+= "
Web Sockets: " + has_web_sockets;
+ balloon_text+= "
Google Gears: " + has_googlegears;
+ balloon_text+= "
Phonegap API: " + has_phonegap;
+ balloon_text+= "
Date: " + date_stamp;
var new_zombie = {
'id' : index,
diff --git a/extensions/console/lib/shellinterface.rb b/extensions/console/lib/shellinterface.rb
index 4251347cd..f810c042e 100644
--- a/extensions/console/lib/shellinterface.rb
+++ b/extensions/console/lib/shellinterface.rb
@@ -550,6 +550,21 @@ class ShellInterface
summary_grid_hash['results'].push(page_name_row) # add the row
end
+ # set and add the yes|no value for HasPhonegap
+ has_phonegap = BD.get(self.targetsession, 'HasPhonegap')
+ if not has_phonegap.nil?
+ encoded_has_phonegap = CGI.escapeHTML(has_phonegap)
+ encoded_has_phonegap_hash = { 'Has Phonegap' => encoded_has_phonegap }
+
+ page_name_row = {
+ 'category' => 'Browser',
+ 'data' => encoded_has_phonegap_hash,
+ 'from' => 'Initialization'
+ }
+
+ summary_grid_hash['results'].push(page_name_row) # add the row
+ end
+
# set and add the yes|no value for HasGoogleGears
has_googlegears = BD.get(self.targetsession, 'HasGoogleGears')
if not has_googlegears.nil?
diff --git a/modules/browser/hooked_domain/mobilesafari_address_spoofing/config.yaml b/modules/browser/hooked_domain/mobilesafari_address_spoofing/config.yaml
index b4a20fe33..3aa49f32f 100644
--- a/modules/browser/hooked_domain/mobilesafari_address_spoofing/config.yaml
+++ b/modules/browser/hooked_domain/mobilesafari_address_spoofing/config.yaml
@@ -24,7 +24,7 @@ beef:
target:
working:
S:
- os: ["iPhone"]
+ os: ["iOS"]
not_working:
ALL:
os: ["All"]
diff --git a/modules/host/detect_google_desktop/config.yaml b/modules/host/detect_google_desktop/config.yaml
index 4a0d23f18..ba611bf45 100644
--- a/modules/host/detect_google_desktop/config.yaml
+++ b/modules/host/detect_google_desktop/config.yaml
@@ -24,5 +24,5 @@ beef:
target:
not_working:
ALL:
- os: ["iPhone"]
+ os: ["iOS"]
working: ["ALL"]
diff --git a/modules/host/get_system_info/config.yaml b/modules/host/get_system_info/config.yaml
index 802db1695..7902a2381 100644
--- a/modules/host/get_system_info/config.yaml
+++ b/modules/host/get_system_info/config.yaml
@@ -24,6 +24,6 @@ beef:
target:
not_working:
ALL:
- os: ["iPhone", "Macintosh"]
+ os: ["iOS", "Macintosh"]
working: ["O", "FF", "S", "IE"]
user_notify: ["C"]
diff --git a/modules/host/hook_default_browser/config.yaml b/modules/host/hook_default_browser/config.yaml
index 0033717ba..56c276653 100644
--- a/modules/host/hook_default_browser/config.yaml
+++ b/modules/host/hook_default_browser/config.yaml
@@ -24,6 +24,6 @@ beef:
target:
not_working:
ALL:
- os: ["iPhone"]
+ os: ["iOS"]
working: ["All"]
user_notify: ["FF", "C"]
diff --git a/modules/host/iphone_tel/config.yaml b/modules/host/iphone_tel/config.yaml
index d3bb15769..783637ed4 100644
--- a/modules/host/iphone_tel/config.yaml
+++ b/modules/host/iphone_tel/config.yaml
@@ -24,7 +24,7 @@ beef:
target:
user_notify:
S:
- os: ["iPhone"]
+ os: ["iOS"]
not_working:
ALL:
os: ["All"]