Skip to content

EddieIvan01/ntlmssp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c7812d1 · Aug 29, 2020

History

4 Commits
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Jun 11, 2020
Aug 29, 2020
Aug 29, 2020
Aug 29, 2020
Jun 11, 2020

Repository files navigation

NTLMSSP

Windows NTLMSSP library written in Go.

This library has very few wrapper and error handling. Read source code and make sure you understand the Windows NTLM before using this library.

Usage

Parse binary

bs, _ := base64.StdEncoding.DecodeString("TlRMTVNTUAADAAAAGAAYAFAAAAAwADAAaAAAAAYABgBKAAAACgAKAEAAAAAAAAAAAAAAAAAAAAAAAAAABTCJoGEAZABtAGkAbgBMAEEAQgDKWtAQahWyLGUi6N0I3Y89TQ//e2QL4SPYLBXpg00OEIk5edtauBUdAQEAAAAAAAArN+A/oD/WAQRU5zwV4quKAAAAAAAAAAA=")
type3 := ntlmssp.NewAuthenticateMsg(bs)
type3.Display()

OUTPUT:

Authenticate Message (type3)
Signature: [78 84 76 77 83 83 80 0] (NTLMSSP)
MessageType: 3
Response Version: NTLMv2
LmChallengeResponse: ca5ad0106a15b22c6522e8dd08dd8f3d4d0fff7b640be123
    (Len: 24  Offset: 80)
NtChallengeResponse: d82c15e9834d0e10893979db5ab8151d01010000000000002b37e03fa03fd6010454e73c15e2ab8a0000000000000000
    (Len: 48  offset: 104)
    Response: d82c15e9834d0e10893979db5ab8151d
    NTLMv2ClientChallenge:
      ChallengeFromClient: 0454e73c15e2ab8a
      RespType: 1
      HiRespType: 1
      TimeStamp: 132363196552984363
      AVPair:
DomainName: LAB
    (Len: 6  Offset: 74)
UserName: admin
    (Len: 10  Offset: 64)
Workstation:
    (Len: 0  Offset: 0)
EncryptedRandomSessionKey: []
    (Len: 0  Offset: 0)
1... .... .... .... .... .... .... ....   NEGOTIATE_56BIT_ENCRYPTION: Set
.0.. .... .... .... .... .... .... ....   NEGOTIATE_EXPLICIT_KEY_EXCHANGE: Not set
..1. .... .... .... .... .... .... ....   NEGOTIATE_128BIT_SESSION_KEY: Set
...0 .... .... .... .... .... .... ....   NEGOTIATE_R1_UNUSED: Not set
.... 0... .... .... .... .... .... ....   NEGOTIATE_R2_UNUSED: Not set
.... .0.. .... .... .... .... .... ....   NEGOTIATE_R3_UNUSED: Not set
.... ..0. .... .... .... .... .... ....   NEGOTIATE_VERSION: Not set
.... ...0 .... .... .... .... .... ....   NEGOTIATE_R4_UNUSED: Not set
.... .... 1... .... .... .... .... ....   NEGOTIATE_REQUEST_TARGET_INFO: Set
.... .... .0.. .... .... .... .... ....   NEGOTIATE_REQUEST_NON_NT_SESSION_KEY: Not set
.... .... ..0. .... .... .... .... ....   NEGOTIATE_R5_UNUSED: Not set
.... .... ...0 .... .... .... .... ....   NEGOTIATE_IDENTITY_LEVEL_TOKEN: Not set
.... .... .... 1... .... .... .... ....   NEGOTIATE_EXTENDED_SESSION_SECURITY: Set
.... .... .... .0.. .... .... .... ....   NEGOTIATE_R6_UNUSED: Not set
.... .... .... ..0. .... .... .... ....   NEGOTIATE_TARGET_TYPE_SERVER: Not set
.... .... .... ...1 .... .... .... ....   NEGOTIATE_TARGET_TYPE_DOMAIN: Set
.... .... .... .... 0... .... .... ....   NEGOTIATE_ALWAYS_SIGN: Not set
.... .... .... .... .0.. .... .... ....   NEGOTIATE_R7_UNUSED: Not set
.... .... .... .... ..1. .... .... ....   NEGOTIATE_OEM_WORKSTATION_SUPPLIED: Set
.... .... .... .... ...1 .... .... ....   NEGOTIATE_OEM_DOMAIN_SUPPLIED: Set
.... .... .... .... .... 0... .... ....   NEGOTIATE_ANONYMOUS: Not set
.... .... .... .... .... .0.. .... ....   NEGOTIATE_R8_UNUSED: Not set
.... .... .... .... .... ..0. .... ....   NEGOTIATE_NTLM: Not set
.... .... .... .... .... ...0 .... ....   NEGOTIATE_R9_UNUSED: Not set
.... .... .... .... .... .... 0... ....   NEGOTIATE_LM_SESSION_KEY: Not set
.... .... .... .... .... .... .0.. ....   NEGOTIATE_DATAGRAM_CONNECTIONLESS: Not set
.... .... .... .... .... .... ..0. ....   NEGOTIATE_SEAL: Not set
.... .... .... .... .... .... ...0 ....   NEGOTIATE_SIGN: Not set
.... .... .... .... .... .... .... 0...   NEGOTIATE_R10_UNUSED: Not set
.... .... .... .... .... .... .... .1..   NEGOTIATE_REQUEST_TARGET_NAME: Set
.... .... .... .... .... .... .... ..0.   NEGOTIATE_OEM_CHARSET: Not set
.... .... .... .... .... .... .... ...1   NEGOTIATE_UNICODE_CHARSET: Set

Generate NTLM message

type2 := ntlmssp.NewChallengeMsg(nil)
type2.NegotiateFlags |= ntlmssp.NEGOTIATE_56BIT_ENCRYPTION |
    ntlmssp.NEGOTIATE_128BIT_SESSION_KEY |
    ntlmssp.NEGOTIATE_EXTENDED_SESSION_SECURITY |
    ntlmssp.NEGOTIATE_UNICODE_CHARSET
type2.SetTargetName([]byte("SMB"))
type2.SetServerChallenge([]byte("\x00\x11\x22\x33\x44\x55\x66\x77"))
type2.SetTargetInfo(map[string]interface{}{
    "MsvAvNbComputerName":  "WIN-123456",
    "MsvAvNbDomainName":    "XYZ.LAB",
    "MsvAvDnsComputerName": "DC$",
    "MsvAvDnsDomainName":   "XYZ.LAB",
})
fmt.Println(type2.Marshal('<'))

OUTPUT:

[78 84 76 77 83 83 80 0 2 0 0 0 6 0 6 0 48 0 0 0 1 0 136 160 0 17 34 51 68 85 102 119 0 0 0 0 0 0 0 0 74 0 74 0 54 0 0 0 83 0 77 0 66 0 1 0 20 0 87 0 73 0 78 0 45 0 49 0 50 0 51 0 52 0 53 0 54 0 2 0 14 0 88 0 89 0 90 0 46 0 76 0 65 0 66 0 3 0 6 0 68 0 67 0 36 0 4 0 14 0 88 0 89 0 90 0 46 0 76 0 65 0 66 0 0 0 0 0]

Example

Reference documents

Releases

No releases published

Packages

No packages published

Languages