Skip to content

Commit 0caaa5d

Browse files
committed
Parse and display the flags field
1 parent 4aedaaa commit 0caaa5d

File tree

2 files changed

+43
-3
lines changed

2 files changed

+43
-3
lines changed

lib/rex/proto/ms_crtd.rb

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,26 @@ module Rex::Proto
55
module MsCrtd
66
# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/4c6950e4-1dc2-4ae3-98c3-b8919bb73822
77

8+
# [2.4 flags Attribute](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/6cc7eb79-3e84-477a-b398-b0ff2b68a6c0)
9+
CT_FLAG_AUTO_ENROLLMENT = 0x00000020
10+
CT_FLAG_MACHINE_TYPE = 0x00000040
11+
CT_FLAG_IS_CA = 0x00000080
12+
CT_FLAG_ADD_TEMPLATE_NAME = 0x00000200
13+
CT_FLAG_IS_CROSS_CA = 0x00000800
14+
CT_FLAG_IS_DEFAULT = 0x00010000
15+
CT_FLAG_IS_MODIFIED = 0x00020000
16+
CT_FLAG_DONOTPERSISTINDB = 0x00001000
17+
CT_FLAG_ADD_EMAIL = 0x00000002
18+
CT_FLAG_PUBLISH_TO_DS = 0x00000008
19+
CT_FLAG_EXPORTABLE_KEY = 0x00000010
20+
821
# [2.26 msPKI-Enrollment-Flag Attribute](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/ec71fd43-61c2-407b-83c9-b52272dec8a1)
922
CT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS = 0x00000001
1023
CT_FLAG_PEND_ALL_REQUESTS = 0x00000002
1124
CT_FLAG_PUBLISH_TO_KRA_CONTAINER = 0x00000004
12-
CT_FLAG_PUBLISH_TO_DS = 0x00000008
25+
#CT_FLAG_PUBLISH_TO_DS = 0x00000008
1326
CT_FLAG_AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATE = 0x00000010
14-
CT_FLAG_AUTO_ENROLLMENT = 0x00000020
27+
#CT_FLAG_AUTO_ENROLLMENT = 0x00000020
1528
CT_FLAG_PREVIOUS_APPROVAL_VALIDATE_REENROLLMENT = 0x00000040
1629
CT_FLAG_USER_INTERACTION_REQUIRED = 0x00000100
1730
CT_FLAG_REMOVE_INVALID_CERTIFICATE_FROM_PERSONAL_STORE = 0x00000400
@@ -26,7 +39,7 @@ module MsCrtd
2639

2740
# [2.27 msPKI-Private-Key-Flag Attribute](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-crtd/f6122d87-b999-4b92-bff8-f465e8949667)
2841
CT_FLAG_REQUIRE_PRIVATE_KEY_ARCHIVAL = 0x00000001
29-
CT_FLAG_EXPORTABLE_KEY = 0x00000010
42+
#CT_FLAG_EXPORTABLE_KEY = 0x00000010
3043
CT_FLAG_STRONG_KEY_PROTECTION_REQUIRED = 0x00000020
3144
CT_FLAG_REQUIRE_ALTERNATE_SIGNATURE_ALGORITHM = 0x00000040
3245
CT_FLAG_REQUIRE_SAME_KEY_RENEWAL = 0x00000080

modules/auxiliary/admin/ldap/ad_cs_cert_template.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,29 @@ def action_read
346346
print_status(" objectGUID: #{object_guid}")
347347
end
348348

349+
pki_flag = obj['flags']&.first
350+
if pki_flag.present?
351+
pki_flag = [obj['flags'].first.to_i].pack('l').unpack1('L')
352+
print_status(" flags: 0x#{pki_flag.to_s(16).rjust(8, '0')}")
353+
%w[
354+
CT_FLAG_AUTO_ENROLLMENT
355+
CT_FLAG_MACHINE_TYPE
356+
CT_FLAG_IS_CA
357+
CT_FLAG_ADD_TEMPLATE_NAME
358+
CT_FLAG_IS_CROSS_CA
359+
CT_FLAG_IS_DEFAULT
360+
CT_FLAG_IS_MODIFIED
361+
CT_FLAG_DONOTPERSISTINDB
362+
CT_FLAG_ADD_EMAIL
363+
CT_FLAG_PUBLISH_TO_DS
364+
CT_FLAG_EXPORTABLE_KEY
365+
].each do |flag_name|
366+
if pki_flag & Rex::Proto::MsCrtd.const_get(flag_name) != 0
367+
print_status(" * #{flag_name}")
368+
end
369+
end
370+
end
371+
349372
pki_flag = obj['mspki-certificate-name-flag']&.first
350373
if pki_flag.present?
351374
pki_flag = [obj['mspki-certificate-name-flag'].first.to_i].pack('l').unpack1('L')
@@ -481,6 +504,10 @@ def action_read
481504
print_status(" pKIMaxIssuingDepth: #{obj['pkimaxissuingdepth'].first.to_i}")
482505
end
483506

507+
if obj['showinadvancedviewonly'].present?
508+
print_status(" showInAdvancedViewOnly: #{obj['showinadvancedviewonly'].first}")
509+
end
510+
484511
{ object: obj, file: stored }
485512
end
486513

0 commit comments

Comments
 (0)