def import_groups(self): print('Importing groups!') for groups in self.get_file('groups')['groups']: #pprint.pprint(groups) #input() try: ad_name = groups['Name'].rsplit('@', 1)[1] m = Group() m.ad_id = self.adn[ad_name] m.name = groups['Name'].split('@', 1)[0] m.objectSid = groups['Properties']['objectsid'] m.description = groups['Properties'].get('description', None) self.db_session.add(m) except Exception as e: print(e) pprint.pprint(groups) input() continue self.db_session.commit()
def import_groups(self): logger.debug('[BHIMPORT] Importing groups') meta = self.get_file('groups')['meta'] total = meta['count'] for groups in tqdm(self.get_file('groups')['groups'], desc='Groups ', total=total, disable=self.disable_print_progress): if self.debug is True: pretty(groups) input() try: if self.bloodhound_version == '2': ad_name = groups['Name'].rsplit('@', 1)[1] m = Group() m.ad_id = self.adn[ad_name] m.name = groups['Name'].split('@', 1)[0] m.sAMAccountName = m.name m.objectSid, _, m.oid, is_domainsid = self.breakup_groupsid( groups['Properties']['objectsid'], m.ad_id) if is_domainsid is False: print('localgroup! %s' % m.oid) m.description = groups['Properties'].get( 'description', None) m.adminCount = groups['Properties'].get('admincount') if groups['Properties'].get('highvalue') is True: hvt = ADObjProps(self.graphid, m.objectSid, 'HVT') self.db_session.add(hvt) else: ad_name = groups['Properties']['name'].rsplit('@', 1)[1] m = Group() m.ad_id = self.adn[ad_name] m.name = groups['Properties']['name'].split('@', 1)[0] m.sAMAccountName = m.name m.objectSid, _, m.oid, is_domainsid = self.breakup_groupsid( groups['ObjectIdentifier'], m.ad_id) if is_domainsid is False: print('localgroup! %s' % m.oid) m.description = groups['Properties'].get( 'description', None) m.dn = groups['Properties'].get('distinguishedname') m.adminCount = groups['Properties'].get('admincount') if groups['Properties'].get('highvalue') is True: hvt = ADObjProps(self.graphid, m.objectSid, 'HVT') self.db_session.add(hvt) self.db_session.add(m) edgeinfo = EdgeLookup(m.ad_id, m.objectSid, 'group') self.db_session.add(edgeinfo) if self.bloodhound_version == '2': for item in groups['Members']: q_ad_name = groups['Name'].rsplit('@', 1)[1] q_ad_id = self.adn[q_ad_name] q_groupname = groups['Name'].split('@', 1)[0] res = self.db_session.query(Group).filter_by( name=q_groupname).filter( Group.ad_id == q_ad_id).first() if res is None: raise Exception('Group not found ! %s ' % groups['Name']) self.add_edge( res.objectSid, BHImport.member_type_lookup(item['MemberType']), m.oid, 'group', 'member', self.adn[ad_name]) else: for item in groups['Members']: self.add_edge( item['MemberId'], BHImport.member_type_lookup(item['MemberType']), m.oid, 'group', 'member', self.adn[ad_name]) if groups['Aces'] is not None: self.insert_acl(m.oid, 'group', groups['Aces'], m.ad_id) except Exception as e: logger.debug( '[BHIMPORT] Error while processing group %s Reason: %s' % (groups, e)) continue self.db_session.commit()