
प्रूफ ऑफ कॉन्सेप्ट उपकरण ADFS को लक्षित करने वाले NTLM रिले हमलों के अनुसंधान के लिए विकसित किए गए
इस रिपॉजिटरी में दो उपयोगिताएं शामिल हैं: NTLMParse और ADFSRelay। NTLMParse एक उपयोगिता है जो base64-एन्कोडेड NTLM संदेशों को डिकोड करती है और संदेश के अंतर्निहित गुणों और फ़ील्ड के बारे में जानकारी प्रिंट करती है। इन NTLM संदेशों की जांच करना किसी विशिष्ट NTLM कार्यान्वयन के व्यवहार पर शोध करते समय सहायक होता है। ADFSRelay एक प्रूफ-ऑफ-कॉन्सेप्ट उपयोगिता है जो ADFS सेवा को लक्षित करने वाले NTLM रिलेइंग हमलों की व्यवहार्यता पर शोध करते हुए विकसित की गई थी। इस उपयोगिता का उपयोग ADFS को लक्षित करने वाले NTLM रिलेइंग हमलों को करने के लिए किया जा सकता है। हमने ADFS रिलेइंग हमलों पर अधिक विस्तार से चर्चा करने वाला एक ब्लॉग पोस्ट भी जारी किया है [1]।
NTLMParse उपयोगिता का उपयोग करने के लिए आपको बस एप्लिकेशन को एक Base64-एन्कोडेड संदेश पास करना होगा और यह संदेश के भीतर प्रासंगिक फ़ील्ड और संरचनाओं को डिकोड करेगा। नीचे दिया गया स्निपेट NTLMParse को आह्वान करने पर अपेक्षित आउटपुट दिखाता है:
➜ ~ pbpaste | NTLMParse
(ntlm.AUTHENTICATE_MESSAGE) {
Signature: ([]uint8) (len=8 cap=585) {
00000000 4e 54 4c 4d 53 53 50 00 |NTLMSSP.|
},
MessageType: (uint32) 3,
LmChallengeResponseFields: (struct { LmChallengeResponseLen uint16; LmChallengeResponseMaxLen uint16; LmChallengeResponseBufferOffset uint32; LmChallengeResponse []uint8 }) {
LmChallengeResponseLen: (uint16) 24,
LmChallengeResponseMaxLen: (uint16) 24,
LmChallengeResponseBufferOffset: (uint32) 160,
LmChallengeResponse: ([]uint8) (len=24 cap=425) {
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 |........|
}
},
NtChallengeResponseFields: (struct { NtChallengeResponseLen uint16; NtChallengeResponseMaxLen uint16; NtChallengeResponseBufferOffset uint32; NtChallengeResponse []uint8; NTLMv2Response ntlm.NTLMv2_RESPONSE }) {
NtChallengeResponseLen: (uint16) 384,
NtChallengeResponseMaxLen: (uint16) 384,
NtChallengeResponseBufferOffset: (uint32) 184,
NtChallengeResponse: ([]uint8) (len=384 cap=401) {
00000000 30 eb 30 1f ab 4f 37 4d 79 59 28 73 38 51 19 3b |0.0..O7MyY(s8Q.;|
00000010 01 01 00 00 00 00 00 00 89 5f 6d 5c c8 72 d8 01 |........._m\.r..|
00000020 c9 74 65 45 b9 dd f7 35 00 00 00 00 02 00 0e 00 |.teE...5........|
00000030 43 00 4f 00 4e 00 54 00 4f 00 53 00 4f 00 01 00 |C.O.N.T.O.S.O...|
00000040 1e 00 57 00 49 00 4e 00 2d 00 46 00 43 00 47 00 |..W.I.N.-.F.C.G.|
नीचे एक नमूना NTLM AUTHENTICATE_MESSAGE संदेश है जिसका उपयोग परीक्षण के लिए किया जा सकता है:
TlRMTVNTUAADAAAAGAAYAKAAAACAAYABuAAAABoAGgBYAAAAEAAQAHIAAAAeAB4AggAAABAAEAA4AgAAFYKI4goAYUoAAAAPqfU7N7/JSXVfIdKvlIvcQkMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwAQQBDAHIAbwBzAHMAZQByAEQARQBTAEsAVABPAFAALQBOAEkARAA0ADQANQBNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDrMB+rTzdNeVkoczhRGTsBAQAAAAAAAIlfbVzIctgByXRlRbnd9zUAAAAAAgAOAEMATwBOAFQATwBTAE8AAQAeAFcASQBOAC0ARgBDAEcAVQA0AEcASABPADAAOAA0AAQAGgBDAE8ATgBUAE8AUwBPAC4ATABPAEMAQQBMAAMAOgBXAEkATgAtAEYAQwBHAFUANABHAEgATwAwADgANAAuAEMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwABQAaAEMATwBOAFQATwBTAE8ALgBMAE8AQwBBAEwABwAIAIlfbVzIctgBBgAEAAIAAAAIADAAMAAAAAAAAAABAAAAACAAABQaOHb4nG5F2JL1tA5kL+nKQXJSJLDWljeBv+/XlPXpCgAQAON+EDXYnla0bjpwA8gfVEgJAD4ASABUAFQAUAAvAHMAdABzAC4AYwBvAG4AdABvAHMAbwBjAG8AcgBwAG8AcgBhAHQAaQBvAG4ALgBjAG8AbQAAAAAAAAAAAKDXom0m65knt1NeZF1ZxxQ=
ADFSRelay के लिए एकमात्र आवश्यक तर्क NTLM रिलेइंग हमले के लिए लक्षित ADFS सर्वर का URL है। तीन वैकल्पिक तर्क हैं: -debug डिबगिंग मोड को सक्षम करने के लिए, -port सेवा को सुनने के लिए पोर्ट को परिभाषित करने के लिए, और -help सहायता मेनू प्रदर्शित करने के लिए। एक उदाहरण सहायता मेनू नीचे दिया गया है:
➜ ~ ADFSRelay -h
Usage of ADFSRelay:
-debug
Enables debug output
-help
Show the help menu
-port int
The port the HTTP listener should listen on (default 8080)
-targetSite string
The ADFS site to target for the relaying attack (e.g. https://sts.contoso.com)
➜ ~
[1] https://www.praetorian.com/blog/relaying-to-adfs-attacks/