Beispiel #1
0
    def import_domains(self):
        print('Importing domains!')
        for domain in self.get_file('domains')['domains']:  #['computers']:
            #pprint.pprint(domain)
            #input()

            di = ADInfo()
            di.name = domain['Name']
            di.objectSid = domain['Properties']['objectsid']

            self.db_session.add(di)
            self.db_session.commit()
            self.db_session.refresh(di)
            self.ad_id = di.id

            self.ads[di.objectSid] = di.id
            self.adn[di.name] = di.id
Beispiel #2
0
    def import_domains(self):
        gi = GraphInfo('bloodhound import')

        self.db_session.add(gi)
        self.db_session.commit()
        self.db_session.refresh(gi)
        self.graphid = gi.id
        aces = []

        meta = self.get_file('domains')['meta']
        if 'version' in meta:
            logger.debug('[BHIMPORT] Found version info in file!')
            self.bloodhound_version = str(meta['version'])
        logger.debug('[BHIMPORT] Selecting bloodhound file version %s' %
                     self.bloodhound_version)
        total = meta['count']
        for domain in tqdm(
                self.get_file('domains')['domains'],
                desc='Domains ',
                total=total,
                disable=self.disable_print_progress):  #['computers']:
            try:
                if self.debug is True:
                    pretty(domain)
                    input('a')
                di = ADInfo()
                if self.bloodhound_version == '2':
                    di.name = domain['Name']
                    di.objectSid = domain['Properties']['objectsid']
                    di.distinguishedName = 'DC='.join(
                        domain['Name'].split('.'))

                    #not importing: [Properties][functionallevel] , [Properties][description], [Links], [Trusts]

                else:
                    di.name = domain['Properties']['name']
                    di.objectSid = domain['Properties']['objectid']
                    di.distinguishedName = domain['Properties'][
                        'distinguishedname']

                    #not importing: [Properties][functionallevel] , [Properties][description], [ChildOus], [Links], [Trusts]

                self.db_session.add(di)
                self.db_session.commit()
                self.db_session.refresh(di)
                self.ad_id = di.id

                edgeinfo = EdgeLookup(di.id, di.objectSid, 'domain')
                self.db_session.add(edgeinfo)
                self.db_session.commit()

                self.ads[di.objectSid] = di.id
                self.adn[di.name] = di.id

                giad = GraphInfoAD(di.id, self.graphid)
                self.db_session.add(giad)
                self.db_session.commit()

                if domain['Aces'] is not None:
                    aces.append(
                        (di.objectSid, 'domain', domain['Aces'], di.id))

            except Exception as e:
                logger.debug(
                    '[BHIMPORT] Error while processing domain %s Reason: %s' %
                    (domain, e))
                raise e

        for objectSid, ot, aces, adid in aces:
            self.insert_acl(objectSid, ot, aces, adid)

        self.db_session.commit()
        logger.debug('[BHIMPORT] Domain import finished!')