From 40240662dbe2b456016c0e76e11a661e55023dbf Mon Sep 17 00:00:00 2001 From: darkbushido Date: Wed, 27 Jul 2016 10:49:33 -0500 Subject: [PATCH] converting enable password to create_credentials --- lib/msf/core/auxiliary/cisco.rb | 59 +++++++++++++---------- spec/lib/msf/core/auxiliary/cisco_spec.rb | 56 +++++++++++---------- 2 files changed, 64 insertions(+), 51 deletions(-) diff --git a/lib/msf/core/auxiliary/cisco.rb b/lib/msf/core/auxiliary/cisco.rb index 3dd2a96d19..cc34ad18be 100644 --- a/lib/msf/core/auxiliary/cisco.rb +++ b/lib/msf/core/auxiliary/cisco.rb @@ -9,7 +9,6 @@ module Msf module Auxiliary::Cisco include Msf::Auxiliary::Report - def cisco_ios_decrypt7(inp) xlat = [ 0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f, @@ -39,19 +38,29 @@ module Auxiliary::Cisco # # Create a template hash for cred reporting # - cred_info = { - :host => thost, - :port => tport, - :user => "", - :pass => "", - :type => "", - :collect_type => "", - :active => true + # cred_info = { + # :host => thost, + # :port => tport, + # :user => "", + # :pass => "", + # :type => "", + # :collect_type => "", + # :active => true + # } + + credential_data = { + address: thost, + port: tport, + protocol: 'tcp', + workspace_id: myworkspace_id, + + origin_type: :service, + module_fullname: self.fullname, } # Default SNMP to UDP if tport == 161 - cred_info[:proto] = 'udp' + credential_data[:protocol] = 'udp' end store_loot("cisco.ios.config", "text/plain", thost, config.strip, "config.txt", "Cisco IOS Configuration") @@ -76,34 +85,32 @@ module Auxiliary::Cisco print_good("#{thost}:#{tport} Enable Password: #{shash}") store_loot("cisco.ios.enable_pass", "text/plain", thost, shash, "enable_password.txt", "Cisco IOS Enable Password") - cred = cred_info.dup - cred[:pass] = shash - cred[:type] = "password" - cred[:collect_type] = "password" - store_cred(cred) + cred = credential_data.dup + cred[:private_data] = shash + cred[:private_type] = :password_hash + create_credential(cred) + end if stype == 7 shash = cisco_ios_decrypt7(shash) rescue shash print_good("#{thost}:#{tport} Decrypted Enable Password: #{shash}") store_loot("cisco.ios.enable_pass", "text/plain", thost, shash, "enable_password.txt", "Cisco IOS Enable Password") - - cred = cred_info.dup - cred[:pass] = shash - cred[:type] = "password" - cred[:collect_type] = "password" - store_cred(cred) + + cred = credential_data.dup + cred[:private_data] = shash + cred[:private_type] = :password + create_credential(cred) end when /^\s*enable password (.*)/i spass = $1.strip print_good("#{thost}:#{tport} Unencrypted Enable Password: #{spass}") - cred = cred_info.dup - cred[:pass] = spass - cred[:type] = "password" - cred[:collect_type] = "password" - store_cred(cred) + cred = credential_data.dup + cred[:private_data] = spass + cred[:private_type] = :password + create_credential(cred) # # SNMP diff --git a/spec/lib/msf/core/auxiliary/cisco_spec.rb b/spec/lib/msf/core/auxiliary/cisco_spec.rb index 76a87472ca..9c380e1e7c 100644 --- a/spec/lib/msf/core/auxiliary/cisco_spec.rb +++ b/spec/lib/msf/core/auxiliary/cisco_spec.rb @@ -14,10 +14,13 @@ RSpec.describe Msf::Auxiliary::Cisco do ) end def print_good(str=nil) - raise StandardError("This method needs to be stubbed.") + raise StandardError.new("This method needs to be stubbed.") end def store_cred(hsh=nil) - raise StandardError("This method needs to be stubbed.") + raise StandardError.new("This method needs to be stubbed.") + end + def fullname + "Dummy Class / Dummy Ref" end end @@ -55,15 +58,16 @@ RSpec.describe Msf::Auxiliary::Cisco do expect(aux_cisco).to receive(:store_loot).with( "cisco.ios.config", "text/plain", "127.0.0.1", "enable password 0 password0", "config.txt", "Cisco IOS Configuration" ) - expect(aux_cisco).to receive(:store_cred).with( + expect(aux_cisco).to receive(:create_credential).with( { - :host=>"127.0.0.1", - :port=>1337, - :user=>"", - :pass=>"password0", - :type=>"password", - :collect_type=>"password", - :active=>true + address: "127.0.0.1", + port: 1337, + protocol: "tcp", + workspace_id: nil, + origin_type: :service, + module_fullname: "Dummy Class / Dummy Ref", + private_data: "password0", + private_type: :password } ) aux_cisco.cisco_ios_config_eater('127.0.0.1',1337,'enable password 0 password0') @@ -82,15 +86,16 @@ RSpec.describe Msf::Auxiliary::Cisco do expect(aux_cisco).to receive(:store_loot).with( "cisco.ios.config", "text/plain", "127.0.0.1", "enable password 7 1511021F0725", "config.txt", "Cisco IOS Configuration" ) - expect(aux_cisco).to receive(:store_cred).with( + expect(aux_cisco).to receive(:create_credential).with( { - :host=>"127.0.0.1", - :port=>1337, - :user=>"", - :pass=>"cisco", - :type=>"password", - :collect_type=>"password", - :active=>true + address: "127.0.0.1", + port: 1337, + protocol: "tcp", + workspace_id: nil, + origin_type: :service, + module_fullname: "Dummy Class / Dummy Ref", + private_data: "cisco", + private_type: :password } ) aux_cisco.cisco_ios_config_eater('127.0.0.1',1337,'enable password 7 1511021F0725') @@ -103,15 +108,16 @@ RSpec.describe Msf::Auxiliary::Cisco do expect(aux_cisco).to receive(:store_loot).with( "cisco.ios.config", "text/plain", "127.0.0.1", "enable password 1511021F0725", "config.txt", "Cisco IOS Configuration" ) - expect(aux_cisco).to receive(:store_cred).with( + expect(aux_cisco).to receive(:create_credential).with( { - host: "127.0.0.1", + address: "127.0.0.1", port: 1337, - user: "", - pass: "1511021F0725", - type: "password", - collect_type: "password", - active: true + protocol: "tcp", + workspace_id: nil, + origin_type: :service, + module_fullname: "Dummy Class / Dummy Ref", + private_data: "1511021F0725", + private_type: :password } ) aux_cisco.cisco_ios_config_eater('127.0.0.1',1337,'enable password 1511021F0725')