def get_netgroupmember(domain_controller, domain, user, password=str(), lmhash=str(), nthash=str(), do_kerberos=False, do_tls=False, queried_groupname=str(), queried_sid=str(), queried_domain=str(), ads_path=str(), recurse=False, use_matching_rule=False, full_data=False, custom_filter=str()): requester = NetRequester(domain_controller, domain, user, password, lmhash, nthash, do_kerberos, do_tls) return requester.get_netgroupmember(queried_groupname=queried_groupname, queried_sid=queried_sid, queried_domain=queried_domain, ads_path=ads_path, recurse=recurse, use_matching_rule=use_matching_rule, full_data=full_data, custom_filter=custom_filter)
def get_netgroupmember(domain_controller, domain, user, password=str(), lmhash=str(), nthash=str(), queried_groupname=str(), queried_sid=str(), queried_domain=str(), ads_path=str(), recurse=False, use_matching_rule=False, full_data=False, custom_filter=str()): requester = NetRequester(domain_controller, domain, user, password, lmhash, nthash) return requester.get_netgroupmember(queried_groupname=queried_groupname, queried_sid=queried_sid, queried_domain=queried_domain, ads_path=ads_path, recurse=recurse, use_matching_rule=use_matching_rule, full_data=full_data, custom_filter=custom_filter)
def find_gpocomputeradmin(self, queried_computername=str(), queried_ouname=str(), queried_domain=str(), recurse=False): results = list() if (not queried_computername) and (not queried_ouname): raise ValueError( 'You must specify either a computer name or an OU name') net_requester = NetRequester(self._domain_controller, self._domain, self._user, self._password, self._lmhash, self._nthash) if queried_computername: computers = net_requester.get_netcomputer( queried_computername=queried_computername, queried_domain=queried_domain, full_data=True) if not computers: raise ValueError( 'Computer {} not found'.format(queried_computername)) target_ous = list() for computer in computers: dn = computer.distinguishedname for x in dn.split(','): if x.startswith('OU='): target_ous.append(dn[dn.find(x):]) else: target_ous = [queried_ouname] gpo_groups = list() for target_ou in target_ous: ous = net_requester.get_netou(ads_path=target_ou, queried_domain=queried_domain, full_data=True) for ou in ous: for gplink in ou.gplink.strip('[]').split(']['): gplink = gplink.split(';')[0] gpo_groups = self.get_netgpogroup( queried_domain=queried_domain, ads_path=gplink) for gpo_group in gpo_groups: for member in gpo_group.members: obj = net_requester.get_adobject( queried_sid=member, queried_domain=queried_domain)[0] gpo_computer_admin = GPOComputerAdmin(list()) setattr(gpo_computer_admin, 'computername', queried_computername) setattr(gpo_computer_admin, 'ou', target_ou) setattr(gpo_computer_admin, 'gpodisplayname', gpo_group.gpodisplayname) setattr(gpo_computer_admin, 'gpopath', gpo_group.gpopath) setattr(gpo_computer_admin, 'objectname', obj.name) setattr(gpo_computer_admin, 'objectdn', obj.distinguishedname) setattr(gpo_computer_admin, 'objectsid', member) setattr(gpo_computer_admin, 'isgroup', (obj.samaccounttype != '805306368')) results.append(gpo_computer_admin) if recurse and gpo_computer_admin.isgroup: groups_to_resolve = [ gpo_computer_admin.objectsid ] while groups_to_resolve: group_to_resolve = groups_to_resolve.pop(0) group_members = net_requester.get_netgroupmember( queried_sid=group_to_resolve, queried_domain=queried_domain, full_data=True) for group_member in group_members: gpo_computer_admin = GPOComputerAdmin( list()) setattr(gpo_computer_admin, 'computername', queried_computername) setattr(gpo_computer_admin, 'ou', target_ou) setattr(gpo_computer_admin, 'gpodisplayname', gpo_group.gpodisplayname) setattr(gpo_computer_admin, 'gpopath', gpo_group.gpopath) setattr(gpo_computer_admin, 'objectname', group_member.samaccountname) setattr(gpo_computer_admin, 'objectdn', group_member.distinguishedname) setattr(gpo_computer_admin, 'objectsid', member) setattr(gpo_computer_admin, 'isgroup', (group_member.samaccounttype != '805306368')) results.append(gpo_computer_admin) if gpo_computer_admin.isgroup: groups_to_resolve.append( group_member.objectsid) return results
def find_gpocomputeradmin(self, queried_computername=str(), queried_ouname=str(), queried_domain=str(), recurse=False): results = list() if (not queried_computername) and (not queried_ouname): raise ValueError('You must specify either a computer name or an OU name') net_requester = NetRequester(self._domain_controller, self._domain, self._user, self._password, self._lmhash, self._nthash) if queried_computername: computers = net_requester.get_netcomputer(queried_computername=queried_computername, queried_domain=queried_domain, full_data=True) if not computers: raise ValueError('Computer {} not found'.format(queried_computername)) target_ous = list() for computer in computers: dn = computer.distinguishedname for x in dn.split(','): if x.startswith('OU='): target_ous.append(dn[dn.find(x):]) else: target_ous = [queried_ouname] gpo_groups = list() for target_ou in target_ous: ous = net_requester.get_netou(ads_path=target_ou, queried_domain=queried_domain, full_data=True) for ou in ous: for gplink in ou.gplink.strip('[]').split(']['): gplink = gplink.split(';')[0] gpo_groups = self.get_netgpogroup(queried_domain=queried_domain, ads_path=gplink) for gpo_group in gpo_groups: for member in gpo_group.members: obj = net_requester.get_adobject(queried_sid=member, queried_domain=queried_domain)[0] gpo_computer_admin = GPOComputerAdmin(list()) setattr(gpo_computer_admin, 'computername', queried_computername) setattr(gpo_computer_admin, 'ou', target_ou) setattr(gpo_computer_admin, 'gpodisplayname', gpo_group.gpodisplayname) setattr(gpo_computer_admin, 'gpopath', gpo_group.gpopath) setattr(gpo_computer_admin, 'objectname', obj.name) setattr(gpo_computer_admin, 'objectdn', obj.distinguishedname) setattr(gpo_computer_admin, 'objectsid', member) setattr(gpo_computer_admin, 'isgroup', (obj.samaccounttype != '805306368')) results.append(gpo_computer_admin) if recurse and gpo_computer_admin.isgroup: groups_to_resolve = [gpo_computer_admin.objectsid] while groups_to_resolve: group_to_resolve = groups_to_resolve.pop(0) group_members = net_requester.get_netgroupmember(queried_sid=group_to_resolve, full_data=True) for group_member in group_members: gpo_computer_admin = GPOComputerAdmin(list()) setattr(gpo_computer_admin, 'computername', queried_computername) setattr(gpo_computer_admin, 'ou', target_ou) setattr(gpo_computer_admin, 'gpodisplayname', gpo_group.gpodisplayname) setattr(gpo_computer_admin, 'gpopath', gpo_group.gpopath) setattr(gpo_computer_admin, 'objectname', group_member.samaccountname) setattr(gpo_computer_admin, 'objectdn', group_member.distinguishedname) setattr(gpo_computer_admin, 'objectsid', member) setattr(gpo_computer_admin, 'isgroup', (group_member.samaccounttype != '805306368')) results.append(gpo_computer_admin) if gpo_computer_admin.isgroup: groups_to_resolve.append(group_member.objectsid) return results