Fix host domain display output when specifying domain in smb

main
Alexander Neff 2023-12-23 16:46:34 +01:00
parent 303a051003
commit 02bdbef712
1 changed files with 18 additions and 11 deletions

View File

@ -214,8 +214,23 @@ class smb(connection):
# no ntlm supported # no ntlm supported
self.no_ntlm = True self.no_ntlm = True
self.domain = self.conn.getServerDNSDomainName() if not self.no_ntlm else self.args.domain # self.domain is the attribute we authenticate with
self.hostname = self.conn.getServerName() if not self.no_ntlm else self.host # self.targetDomain is the attribute which gets displayed as host domain
if not self.no_ntlm:
self.hostname = self.conn.getServerName()
self.targetDomain = self.conn.getServerDNSDomainName()
if not self.targetDomain: # Not sure if that can even happen but now we are safe
self.targetDomain = self.hostname
else:
self.hostname = self.host
self.targetDomain = self.hostname
self.domain = self.targetDomain if not self.args.domain else self.args.domain
if self.args.local_auth:
self.domain = self.hostname
self.targetDomain = self.hostname
self.server_os = self.conn.getServerOS() self.server_os = self.conn.getServerOS()
self.logger.extra["hostname"] = self.hostname self.logger.extra["hostname"] = self.hostname
@ -230,9 +245,6 @@ class smb(connection):
self.os_arch = self.get_os_arch() self.os_arch = self.get_os_arch()
self.output_filename = os.path.expanduser(f"~/.nxc/logs/{self.hostname}_{self.host}_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}".replace(":", "-")) self.output_filename = os.path.expanduser(f"~/.nxc/logs/{self.hostname}_{self.host}_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}".replace(":", "-"))
if not self.domain:
self.domain = self.hostname
self.db.add_host( self.db.add_host(
self.host, self.host,
self.hostname, self.hostname,
@ -248,11 +260,6 @@ class smb(connection):
except Exception as e: except Exception as e:
self.logger.debug(f"Error logging off system: {e}") self.logger.debug(f"Error logging off system: {e}")
if self.args.domain:
self.domain = self.args.domain
if self.args.local_auth:
self.domain = self.hostname
def laps_search(self, username, password, ntlm_hash, domain): def laps_search(self, username, password, ntlm_hash, domain):
self.logger.extra["protocol"] = "LDAP" self.logger.extra["protocol"] = "LDAP"
self.logger.extra["port"] = "389" self.logger.extra["port"] = "389"
@ -348,7 +355,7 @@ class smb(connection):
def print_host_info(self): def print_host_info(self):
signing = colored(f"signing:{self.signing}", host_info_colors[0], attrs=["bold"]) if self.signing else colored(f"signing:{self.signing}", host_info_colors[1], attrs=["bold"]) signing = colored(f"signing:{self.signing}", host_info_colors[0], attrs=["bold"]) if self.signing else colored(f"signing:{self.signing}", host_info_colors[1], attrs=["bold"])
smbv1 = colored(f"SMBv1:{self.smbv1}", host_info_colors[2], attrs=["bold"]) if self.smbv1 else colored(f"SMBv1:{self.smbv1}", host_info_colors[3], attrs=["bold"]) smbv1 = colored(f"SMBv1:{self.smbv1}", host_info_colors[2], attrs=["bold"]) if self.smbv1 else colored(f"SMBv1:{self.smbv1}", host_info_colors[3], attrs=["bold"])
self.logger.display(f"{self.server_os}{f' x{self.os_arch}' if self.os_arch else ''} (name:{self.hostname}) (domain:{self.domain}) ({signing}) ({smbv1})") self.logger.display(f"{self.server_os}{f' x{self.os_arch}' if self.os_arch else ''} (name:{self.hostname}) (domain:{self.targetDomain}) ({signing}) ({smbv1})")
if self.args.laps: if self.args.laps:
return self.laps_search(self.args.username, self.args.password, self.args.hash, self.domain) return self.laps_search(self.args.username, self.args.password, self.args.hash, self.domain)
return True return True