Esempio n. 1
0
    async def get_all_users(self):
        try:
            async for user_data, err in self.ldap.get_all_users():
                if err is not None:
                    raise err
                try:
                    user = ADUser.from_aduser(user_data)
                except:
                    await self.agent_out_q.put((LDAPAgentCommand.EXCEPTION,
                                                str(traceback.format_exc())))
                    continue
                spns = []
                if user_data.servicePrincipalName is not None:
                    for spn in user_data.servicePrincipalName:
                        spns.append(
                            JackDawSPN.from_spn_str(spn, user.objectSid))

                await self.agent_out_q.put((LDAPAgentCommand.USER, {
                    'user': user,
                    'spns': spns
                }))
        except:
            await self.agent_out_q.put(
                (LDAPAgentCommand.EXCEPTION, str(traceback.format_exc())))
        finally:
            await self.agent_out_q.put((LDAPAgentCommand.USERS_FINISHED, None))
Esempio n. 2
0
    def enum_user(self, user_data):
        user_data = MSADUser.from_ldap(user_data)
        user = ADUser.from_aduser(user_data)
        user.ad_id = self.ad_id
        self.session.add(user)
        self.session.commit()
        self.session.refresh(user)

        for spn in getattr(user, 'allowedtodelegateto', []):
            con = JackDawUserConstrainedDelegation()
            con.spn = spn
            con.targetaccount = LDAPEnumeratorManager.spn_to_account(spn)
            user.allowedtodelegateto.append(con)

        self.session.commit()

        membership_attr = {
            'dn': str(user.dn),
            'cn': str(user.cn),
            'guid': str(user.objectGUID),
            'sid': str(user.objectSid),
            'type': 'user'
        }

        self.member_ctr += 1
        job = LDAPAgentJob(LDAPAgentCommand.MEMBERSHIPS, membership_attr)
        self.agent_in_q.put(job)

        self.sd_ctr += 1
        job = LDAPAgentJob(LDAPAgentCommand.SDS, {
            'dn': user.dn,
            'obj_type': 'user'
        })
        self.agent_in_q.put(job)
Esempio n. 3
0
 async def get_all_users(self):
     try:
         async for user_data in self.ldap.get_all_user_objects():
             user = ADUser.from_aduser(user_data)
             await self.agent_out_q.coro_put((LDAPAgentCommand.USER, user))
     except:
         await self.agent_out_q.coro_put(
             (LDAPAgentCommand.EXCEPTION, str(traceback.format_exc())))
     finally:
         await self.agent_out_q.coro_put(
             (LDAPAgentCommand.USERS_FINISHED, None))
Esempio n. 4
0
	def get_all_users(self):
		for user in self.ldap.get_all_user_objects():
			#TODO: fix this ugly stuff here...
			if user.sAMAccountName[-1] == "$":
				continue
			yield (user, ADUser.from_aduser(user))