diff --git a/lib/msf/core/exploit/remote/kerberos/client/as_response.rb b/lib/msf/core/exploit/remote/kerberos/client/as_response.rb index c2dae9919f..8b3c9ccfb7 100644 --- a/lib/msf/core/exploit/remote/kerberos/client/as_response.rb +++ b/lib/msf/core/exploit/remote/kerberos/client/as_response.rb @@ -42,16 +42,14 @@ module Msf # # @param res [Rex::Proto::Kerberos::Model::KdcResponse] # @param key [String] - # @return [Integer] + # @return [Time] # @see Rex::Proto::Kerberos::Model::KdcResponse # @see Rex::Proto::Kerberos::Model::EncryptedData.decrypt # @see Rex::Proto::Kerberos::Model::EncKdcResponse # @see Rex::Proto::Kerberos::Model::EncKdcResponse.decode def extract_logon_time(res, key) kdc_res = decrypt_kdc_as_rep_enc_part(res, key) - auth_time = kdc_res.auth_time - - auth_time.to_i + kdc_res.auth_time end # Format from diff --git a/modules/auxiliary/admin/kerberos/ms14_068_kerberos_checksum.rb b/modules/auxiliary/admin/kerberos/ms14_068_kerberos_checksum.rb index 424e014266..86fd27a674 100644 --- a/modules/auxiliary/admin/kerberos/ms14_068_kerberos_checksum.rb +++ b/modules/auxiliary/admin/kerberos/ms14_068_kerberos_checksum.rb @@ -92,7 +92,7 @@ class MetasploitModule < Msf::Auxiliary print_status("#{peer} - Parsing AS-REP...") session_key = extract_session_key(res, password_digest) - logon_time = decrypt_kdc_as_rep_enc_part(res, password_digest).auth_time + logon_time = extract_logon_time(res, password_digest) ticket = res.ticket pre_auth = [] diff --git a/spec/lib/msf/core/exploit/remote/kerberos/client/as_response_spec.rb b/spec/lib/msf/core/exploit/remote/kerberos/client/as_response_spec.rb index d74f7fe1b3..e700b1d038 100644 --- a/spec/lib/msf/core/exploit/remote/kerberos/client/as_response_spec.rb +++ b/spec/lib/msf/core/exploit/remote/kerberos/client/as_response_spec.rb @@ -173,13 +173,13 @@ RSpec.describe Msf::Exploit::Remote::Kerberos::Client::AsResponse do context "when using a valid key" do it "returns the extracted Rex::Proto::Kerberos::CredentialCache::Cache" do response = Rex::Proto::Kerberos::Model::KdcResponse.decode(as_response) - expect(subject.extract_logon_time(response, valid_key)).to be_a(Integer) + expect(subject.extract_logon_time(response, valid_key)).to be_a(Time) end it "extracts the correct time" do response = Rex::Proto::Kerberos::Model::KdcResponse.decode(as_response) time = subject.extract_logon_time(response, valid_key) - expect(time).to eq(1419128917) + expect(time).to eq(Time.new(2014, 12, 21, 02, 28, 37, "+00:00")) end end