Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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
Esempio n. 4
0
    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