示例#1
0
def migrate_backdoors(self):
    """
    Create backdoor objects from backdoors on samples.
    """

    if not self.unsupported_attrs:
        return

    if 'backdoor' not in self.unsupported_attrs:
        return

    from crits.backdoors.handlers import add_new_backdoor
    backdoor = self.unsupported_attrs['backdoor']
    name = backdoor.get('name', '')
    version = backdoor.get('version', None)
    if not name:
        return

    # Create a new backdoor family, and if we have a version the more specific
    # backdoor will be created too. Use source and campaign of the current
    # Sample.
    result = add_new_backdoor(name,
                              version=version,
                              source=self.source,
                              campaign=self.campaign)
    if result['success']:
        self.add_relationship(result['object'],
                              RelationshipTypes.RELATED_TO,
                              rel_reason="Migrated")
        # Save the object after relationship was created.
        self.save()
    else:
        print "\n\tError migrating %s: %s" % (self.id, result['message'])
示例#2
0
文件: migrate.py 项目: 0x3a/crits
def migrate_backdoors(self):
    """
    Create backdoor objects from backdoors on samples.
    """

    if not self.unsupported_attrs:
        return

    if 'backdoor' not in self.unsupported_attrs:
        return

    print "Migrating backdoor for %s" % self.id

    from crits.backdoors.handlers import add_new_backdoor
    backdoor = self.unsupported_attrs['backdoor']
    name = backdoor.get('name', '')
    version = backdoor.get('version', None)
    if not name:
        return

    # Create a new backdoor family, and if we have a version the more specific
    # backdoor will be created too. Use source and campaign of the current
    # Sample.
    result = add_new_backdoor(name,
                              version=version,
                              source=self.source,
                              campaign=self.campaign)
    if result['success']:
        self.add_relationship(result['object'],
                              "Related_To",
                              rel_reason="Migrated")
        # Save the object after relationship was created.
        self.save()
    else:
        print "Error migrating %s: %s" % (self.id, result['message'])
示例#3
0
文件: api.py 项目: crits/crits
    def obj_create(self, bundle, **kwargs):
        """
        Handles creating Backdoors through the API.

        :param bundle: Bundle containing the information to create the Backdoor.
        :type bundle: Tastypie Bundle object.
        :returns: HttpResponse object.
        """

        user = bundle.request.user
        data = bundle.data
        name = data.get('name', None)
        version = data.get('version', '')
        aliases = data.get('aliases', '')
        description = data.get('description', None)
        source = data.get('source', None)
        reference = data.get('reference', None)
        method = data.get('method', None)
        tlp = data.get('tlp', 'amber')
        campaign = data.get('campaign', None)
        confidence = data.get('confidence', None)
        bucket_list = data.get('bucket_list', None)
        ticket = data.get('ticket', None)

        if user.has_access_to(BackdoorACL.WRITE):
            result = add_new_backdoor(name,
                                      version,
                                      aliases,
                                      description=description,
                                      source=source,
                                      source_method=method,
                                      source_reference=reference,
                                      source_tlp=tlp,
                                      campaign=campaign,
                                      confidence=confidence,
                                      user=user,
                                      bucket_list=bucket_list,
                                      ticket=ticket)

        else:
            result = {'success':False,
                      'message':'User does not have permission to create Object.'}

        content = {'return_code': 0,
                   'type': 'Backdoor',
                   'message': result.get('message', ''),
                   'id': result.get('id', '')}
        if result.get('id'):
            url = reverse('api_dispatch_detail',
                          kwargs={'resource_name': 'backdoors',
                                  'api_name': 'v1',
                                  'pk': result.get('id')})
            content['url'] = url
        if not result['success']:
            content['return_code'] = 1
        self.crits_response(content)
示例#4
0
def add_backdoor(request):
    """
    Add a backdoor. Should be an AJAX POST.

    :param request: Django request.
    :type request: :class:`django.http.HttpRequest`
    :returns: :class:`django.http.HttpResponse`
    """

    if request.method == "POST" and request.is_ajax():
        data = request.POST
        form = AddBackdoorForm(request.user, data)
        if form.is_valid():
            cleaned_data = form.cleaned_data
            name = cleaned_data['name']
            aliases = cleaned_data['aliases']
            description = cleaned_data['description']
            version = cleaned_data['version']
            source = cleaned_data['source']
            reference = cleaned_data['source_reference']
            method = cleaned_data['source_method']
            campaign = cleaned_data['campaign']
            confidence = cleaned_data['confidence']
            user = request.user.username
            bucket_list = cleaned_data.get(form_consts.Common.BUCKET_LIST_VARIABLE_NAME)
            ticket = cleaned_data.get(form_consts.Common.TICKET_VARIABLE_NAME)
            related_id = cleaned_data['related_id']
            related_type = cleaned_data['related_type']
            relationship_type = cleaned_data['relationship_type']

            result = add_new_backdoor(name,
                                      version=version,
                                      aliases=aliases,
                                      description=description,
                                      source=source,
                                      source_method=method,
                                      source_reference=reference,
                                      campaign=campaign,
                                      confidence=confidence,
                                      user=user,
                                      bucket_list=bucket_list,
                                      ticket=ticket,
                                      related_id=related_id,
                                      related_type=related_type,
                                      relationship_type=relationship_type)
            return HttpResponse(json.dumps(result, default=json_handler),
                                content_type="application/json")
        return HttpResponse(json.dumps({'success': False,
                                        'form':form.as_table()}),
                            content_type="application/json")
    return render_to_response("error.html",
                              {'error': 'Expected AJAX/POST'},
                              RequestContext(request))
示例#5
0
    def obj_create(self, bundle, **kwargs):
        """
        Handles creating Backdoors through the API.

        :param bundle: Bundle containing the information to create the Backdoor.
        :type bundle: Tastypie Bundle object.
        :returns: HttpResponse object.
        """

        user = bundle.request.user.username
        data = bundle.data
        name = data.get('name', None)
        version = data.get('version', '')
        aliases = data.get('aliases', '')
        description = data.get('description', None)
        source = data.get('source', None)
        reference = data.get('reference', None)
        method = data.get('method', None)
        campaign = data.get('campaign', None)
        confidence = data.get('confidence', None)
        bucket_list = data.get('bucket_list', None)
        ticket = data.get('ticket', None)

        result = add_new_backdoor(name,
                                  version,
                                  aliases,
                                  description=description,
                                  source=source,
                                  source_method=method,
                                  source_reference=reference,
                                  campaign=campaign,
                                  confidence=confidence,
                                  user=user,
                                  bucket_list=bucket_list,
                                  ticket=ticket)

        content = {'return_code': 0,
                   'type': 'Backdoor',
                   'message': result.get('message', ''),
                   'id': result.get('id', '')}
        if result.get('id'):
            url = reverse('api_dispatch_detail',
                          kwargs={'resource_name': 'backdoors',
                                  'api_name': 'v1',
                                  'pk': result.get('id')})
            content['url'] = url
        if not result['success']:
            content['return_code'] = 1
        self.crits_response(content)