コード例 #1
0
 def test__get_client_and_urls_matched__url_pattern_empty(self):
     test_criteria_local = [
         {'org_id': 'org4',
          'asn_seq': [],
          'fqdn_seq': [''],
          'url_seq': ['wp.pl', u'wpą.pl'], }]
     body = self.prepare_mock(test_criteria_local)
     # test empty url_pattern unicode
     body[u'url_pattern'] = u''
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # test empty url_pattern string
     body[u'url_pattern'] = ''
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # # test empty url_pattern = None
     body[u'url_pattern'] = None
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
コード例 #2
0
 def test__get_client_and_urls_matched__many_url_seq(self):
     test_criteria_local = [
         {'org_id': 'org4',
          'asn_seq': [],
          'fqdn_seq': [''],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], }]
     body = self.prepare_mock(test_criteria_local)
     # test glob mach
     body[u'url_pattern'] = u'*.*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': ['example.com', 'http://aaa.pl/auth.php', u'wąska.pl']}))
     # test regexp mach
     body[u'url_pattern'] = u'.*aaa\\.pl\\/auth.*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': ['http://aaa.pl/auth.php']}))
     # test regexp mach
     body[u'url_pattern'] = u'.*example.*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': ['example.com']}))
     # test regexp mach
     body[u'url_pattern'] = u'wą[a-z][xkl]a\\..*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': [u'wąska.pl']}))
コード例 #3
0
    def test__get_client_and_urls_matched__2(self):
        body = {"category": "bots", "restriction": "public", "confidence": "medium",
                "sha1": "023a00e7c2ef04ee5b0f767ba73ee39734323432", "name": "virut",
                "proto": "tcp", "address": [{"cc": "XX", "ip": "1.1.1.1", "asn": "1"},
                                            {"cc": "XX", "ip": "100.71.83.178", "asn": "1"},
                                            {"cc": "XX", "ip": "102.71.83.178", "asn": "1"}],
                "fqdn": "domain.com", "url": "http://onet.pl", "source": "hpfeeds.dionaea",
                "time": "2013-07-01 20:37:20", "dport": "445",
                "rid": "023a00e7c2ef04ee5b0f767ba73ee397",
                "sport": "2147", "dip": "10.28.71.43", "id": "023a00e7c2ef04ee5b0f767ba73ee397"}

        # tested key:[test_value,[valid value]]
        input_data = {'ip': ['154.89.207.81', ['fdc']],
                      'cc': ['SU', ['decfba', 'fdc']],
                      'asn': ['45975', ['fdc']],
                      'fqdn': ['onetbrutalmikmokcert.eu', ['fdc']]}

        self.auth_api_mock._get_inside_criteria.return_value = TEST_CRITERIA

        for i in input_data:
            body = self.reset_body(body)
            if i == 'fqdn':
                body['fqdn'] = input_data[i][0]
            else:
                body['address'][0][i] = input_data[i][0]
            json_msg = json.dumps(body)
            record_dict = RecordDict.from_json(json_msg)
            self.assertItemsEqual(
                self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
                (input_data[i][1], {}))
コード例 #4
0
 def input_callback(self, routing_key, body, properties):
     data = RecordDict.from_json(body)
     with self.setting_error_event_info(data):
         enriched = self.enrich(data)
         rk = replace_segment(routing_key, 1, 'enriched')
         body = enriched.get_ready_json()
         self.publish_output(routing_key=rk, body=body)
コード例 #5
0
 def input_callback(self, routing_key, body, properties):
     record_dict = RecordDict.from_json(body)
     with self.setting_error_event_info(record_dict):
         data = dict(record_dict) ## FIXME?: maybe it could be just the record_dict?
         if '_group' not in data:
             raise n6QueueProcessingException("Hi-frequency source missing '_group' field.")
         self.process_event(data)
コード例 #6
0
ファイル: test_filter.py プロジェクト: CERT-Polska/n6
    def test__get_client_and_urls_matched__1(self):
        body = {"category": "bots", "restriction": "public", "confidence": "medium",
                "sha1": "023a00e7c2ef04ee5b0f767ba73ee39734323432", "name": "virut",
                "proto": "tcp", "address": [{"cc": "XX", "ip": "139.33.220.192", "asn": "1"},
                                            {"cc": "XX", "ip": "100.71.83.178", "asn": "1"},
                                            {"cc": "XX", "ip": "102.71.83.178", "asn": "1"}],
                "fqdn": "domain.com", "url": "http://onet.pl", "source": "hpfeeds.dionaea",
                "time": "2013-07-01 20:37:20", "dport": "445",
                "rid": "023a00e7c2ef04ee5b0f767ba73ee397",
                "sport": "2147", "dip": "10.28.71.43", "id": "023a00e7c2ef04ee5b0f767ba73ee397"}

        # tested key:[test_value,[valid value]]
        input_data = {'ip': ['139.33.220.192', ['afbc']],
                      'cc': ['AL', ['afbc', 'eabf']],
                      'asn': ['43756', ['afbc']],
                      'fqdn': ['mycertbridgeonetalamakotawpmikmoknask.org', ['afbc']]}

        self.per_test_inside_criteria = TEST_CRITERIA

        for i in input_data:
            body = self.reset_body(body)
            if i == 'fqdn':
                body['fqdn'] = input_data[i][0]
            else:
                body['address'][0][i] = input_data[i][0]
            json_msg = json.dumps(body)
            record_dict = RecordDict.from_json(json_msg)
            self.assertEqual(
                self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
                (input_data[i][1], {}))
コード例 #7
0
ファイル: filter.py プロジェクト: CERT-Polska/n6
 def input_callback(self, routing_key, body, properties):
     record_dict = RecordDict.from_json(body)
     with self.setting_error_event_info(record_dict):
         client, urls_matched = self.get_client_and_urls_matched(
             record_dict, self.fqdn_only_categories)
         record_dict['client'] = client
         if urls_matched:
             record_dict['urls_matched'] = urls_matched
         self.publish_event(record_dict, routing_key)
コード例 #8
0
    def test__get_client_and_urls_matched__fqdn_seq(self):
        test_criteria_local = [
            {'org_id': 'cli16bit',
             'cc_seq': ['PL'],
             'asn_seq': [21467],
             'fqdn_seq': [u'ala.eu', u'xxx.org', u'aaa.aa'],
             'ip_min_max_seq': TEST_CRITERIA[-1]['ip_min_max_seq'], }]
        body = self.prepare_mock(test_criteria_local)

        body['fqdn'] = 'ala.eu'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['fqdn'] = 'xxx.org'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['fqdn'] = 'aaa.aa'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['fqdn'] = u'aaa.aa'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        # test outside the network
        body['fqdn'] = 'xxx.eu'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))
コード例 #9
0
 def test__get_client_and_urls_matched__with_idna_fqdn(self):
     self.auth_api_mock._get_inside_criteria.return_value = [
         {'org_id': 'org1000',
          'fqdn_seq': [u'xn--krlgr-1tac.pl'],  # `królgór.pl`, IDNA-encoded + coerced to unicode
          }]
     body = {"category": "bots", "restriction": "public", "confidence": "medium",
             "name": "virut", "address": [{"cc": "XX", "ip": "1.1.1.1"}],
             "source": "hpfeeds.dionaea", "time": "2013-07-01 20:37:20",
             "fqdn": u'test.królgór.pl'}
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org1000'], {}))
コード例 #10
0
 def test__get_client_and_urls_matched__with_unicode_url_pattern(self):
     self.auth_api_mock._get_inside_criteria.return_value = [
         {'org_id': 'org11',
          'url_seq': [u'władcażlebów.pl'],
          }]
     body = {"category": "bots", "restriction": "public", "confidence": "medium",
             "name": "virut", "address": [{"cc": "XX", "ip": "1.1.1.1"}],
             "source": "hpfeeds.dionaea", "time": "2013-07-01 20:37:20",
             u'url_pattern': u'*ów.*'}
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org11'], {'org11': [u'władcażlebów.pl']}))
コード例 #11
0
 def test__get_client_and_urls_matched__url_seq_empty(self):
     test_criteria_local = [
         {'org_id': 'org4',
          'asn_seq': [],
          'fqdn_seq': [''],
          'url_seq': [''], }]
     body = self.prepare_mock(test_criteria_local)
     # test glob mach
     body[u'url_pattern'] = u'*.*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
コード例 #12
0
 def test__get_client_and_urls_matched__no_fqdn_seq(self):
     test_criteria_local = [
         {'org_id': 'org4',
          'asn_seq': [21467],
          'fqdn_seq': [''], }]
     body = self.prepare_mock(test_criteria_local)
     # test outside network
     body['address'][0]['cc'] = 'GU'
     body['address'][0]['asn'] = 21467
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {}))
コード例 #13
0
    def test__get_client_and_urls_matched__empty_cc(self):
        test_criteria_local = [
            {'org_id': 'befa',
             'cc_seq': ['CX', 'US'],
             'asn_seq': [31110, 26648],
             'fqdn_seq': [u'makabimikmokvirutonet.biz'],
             'ip_min_max_seq': [(3228707569, 3228707578)],
             },
        ]
        body = {"category": "bots", "restriction": "public", "confidence": "medium",
                "sha1": "023a00e7c2ef04ee5b0f767ba73ee39734323432", "name": "virut",
                "proto": "tcp", "address": [{"cc": "XX", "ip": "1.1.1.1", "asn": "1"},
                                            {"cc": "XX", "ip": "100.71.83.178", "asn": "1"},
                                            {"cc": "XX", "ip": "102.71.83.178", "asn": "1"}],
                "fqdn": "domain.com", "url": "http://onet.pl", "source": "hpfeeds.dionaea",
                "time": "2013-07-01 20:37:20", "dport": "445",
                "rid": "023a00e7c2ef04ee5b0f767ba73ee397",
                "sport": "2147", "dip": "10.28.71.43", "id": "023a00e7c2ef04ee5b0f767ba73ee397"}

        # tested key:[test_value,[valid value]]
        input_data = {'ip': ['192.114.42.241', ['befa']],
                      # 'cc':['CX', ['befa']],
                      'asn': ['31110', ['befa']],
                      'fqdn': ['makabimikmokvirutonet.biz', ['befa']]}

        self.auth_api_mock._get_inside_criteria.return_value = test_criteria_local
        for i in input_data:
            body = self.reset_body(body)
            if i == 'fqdn':
                body['fqdn'] = input_data[i][0]
            else:
                body['address'][0][i] = input_data[i][0]
            json_msg = json.dumps(body)
            record_dict = RecordDict.from_json(json_msg)
            self.assertItemsEqual(
                self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
                (input_data[i][1], {}))
コード例 #14
0
 def test__get_client_and_urls_matched__only_fqdn(self):
     # domain is ok, category 'leak'
     test_criteria_local = [
         {'org_id': 'org77',
          'asn_seq': [],
          'fqdn_seq': [u'spa.pl', u'ham.com', u'egg.pl', u'domain.com'],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], },
         {'org_id': 'org78',
          'asn_seq': [],
          'fqdn_seq': [u'domain.com', u'kotpiesiwiewiorka.pl'],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], }
     ]
     body = self.prepare_mock(test_criteria_local)
     body['category'] = 'leak'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org77', 'org78'], {}))
     # asn is ok, but category is 'leak' and domain is fake
     for test_criteria in test_criteria_local:
         test_criteria['asn_seq'] = [777, 888, 999]
         test_criteria['fqdn_seq'] = [u'domaincert.com', u'kot.pl']
     body = self.prepare_mock(test_criteria_local)
     body['category'] = 'leak'
     for adr in body['address']:
         adr['asn'] = 888
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # in first element test_criteria_local fqdn_seq is fake, asn_seq in all elements is ok.
     test_criteria_local = [
         {'org_id': 'org77',
          'asn_seq': [888],
          'fqdn_seq': [u'spam.pl', u'ham.pl', u'egg.pl'],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], },
         {'org_id': 'org78',
          'asn_seq': [666, 777, 888],
          'fqdn_seq': [u'domain.com', u'kotpiesiwiewiorka.pl'],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], }
     ]
     body = self.prepare_mock(test_criteria_local)
     body['category'] = 'leak'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org78'], {}))
     # test do not use check_pattern if category is 'leak'
     test_criteria_local = [
         {'org_id': 'org22',
          'asn_seq': [],
          'fqdn_seq': [''],
          'url_seq': [u'wąska.pl', 'example.com', 'http://aaa.pl/auth.php'], }]
     body = self.prepare_mock(test_criteria_local)
     body[u'url_pattern'] = u'*.*'
     body['category'] = 'leak'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
コード例 #15
0
 def test__get_client_and_urls_matched__url_pattern(self):
     test_criteria_local = [
         {'org_id': 'org4',
          'asn_seq': [],
          'fqdn_seq': [''],
          'url_seq': ['wp.pl', u'wpą.pl'], }]
     body = self.prepare_mock(test_criteria_local)
     # test glob mach
     body[u'url_pattern'] = u'*.*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': ['wp.pl', u'wpą.pl']}))
     # test regexp match
     body[u'url_pattern'] = u'^w.*\\.[pu][ls]'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': ['wp.pl', u'wpą.pl']}))
     # test glob, not match
     body[u'url_pattern'] = u'*/*'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # test regexp not mach
     body[u'url_pattern'] = u'^w.*\\.[au][ls]'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # test bad regexp
     body[u'url_pattern'] = u'^w.*\\.[au][ls'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # test bad glob
     body[u'url_pattern'] = u'??!xx%$2ąść„ŋ…'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         ([], {}))
     # test glob with unicode, match
     body[u'url_pattern'] = u'??ą.pl'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': [u'wpą.pl']}))
     # test regexp with unicode, match
     body[u'url_pattern'] = u'..*ą\\.pl'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': [u'wpą.pl']}))
     # test regexp with unicode, match
     body[u'url_pattern'] = u'\w+(?<=ą)\\.[p]'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': [u'wpą.pl']}))
     # test regexp with unicode, match
     body[u'url_pattern'] = u'\w+(?<!ą)\\.[p]'
     json_msg = json.dumps(body)
     record_dict = RecordDict.from_json(json_msg)
     self.assertEqual(
         self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
         (['org4'], {'org4': [u'wp.pl']}))
コード例 #16
0
    def test__get_client_and_urls_matched__empty_fileds_asn_ip_cc_fqdn_address(self):
        test_criteria_local = [{'org_id': 'org1',
                                'cc_seq': ["PL", "DE", "US"],
                                'asn_seq': [42, 555, 12312],
                                'fqdn_seq': [u"nask.pl", u"onet.pl"],
                                'ip_min_max_seq': TEST_CRITERIA[-1]['ip_min_max_seq'], },
                               {'org_id': 'org2',
                                'cc_seq': ["RU", "DE", "US"],
                                'asn_seq': [4235],
                                'fqdn_seq': [u"nask.pl", u"cert.pl"],
                                'ip_min_max_seq': [(0, 4194303),
                                                   (4294901760, 4294901792)], }]

        body = {"category": "bots", "restriction": "public", "confidence": "medium",
                "sha1": "023a00e7c2ef04ee5b0f767ba73ee39734323432", "name": "virut",
                "proto": "tcp", "address": [{"cc": "XX", "ip": "1.1.1.1", "asn": "1"}],
                "fqdn": "domain.com", "url": "http://onet.pl", "source": "hpfeeds.dionaea",
                "time": "2013-07-01 20:37:20", "dport": "445",
                "rid": "023a00e7c2ef04ee5b0f767ba73ee397",
                "sport": "2147", "dip": "10.28.71.43", "id": "023a00e7c2ef04ee5b0f767ba73ee397"}

        # test_all_fields
        self.auth_api_mock._get_inside_criteria.return_value = test_criteria_local
        body['fqdn'] = 'onet.pl'
        body['address'][0]['cc'] = 'GH'
        body['address'][0]['asn'] = '1234'
        body['address'][0]['ip'] = '73.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_fqdn
        if 'fqdn' in body:
            del body['fqdn']
        body['address'][0]['cc'] = 'GH'
        body['address'][0]['asn'] = '1234'
        body['address'][0]['ip'] = '73.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        # test test_empty_cc
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        body['fqdn'] = 'onet.pl'
        body['address'][0]['asn'] = '4235'
        body['address'][0]['ip'] = '73.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1', 'org2'], {}))

        # test test_empty_asn
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        body['fqdn'] = 'www.onet.pl'
        body['address'][0]['cc'] = 'XX'
        body['address'][0]['ip'] = '73.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_ip
        if 'ip' in body['address'][0]:
            del body['address'][0]['ip']
        body['fqdn'] = 'www.onet.com'
        body['address'][0]['cc'] = 'XX'
        body['address'][0]['asn'] = '1234'
        json_msg = json.dumps(body)
        self.assertRaises(AdjusterError, RecordDict.from_json, json_msg)

        # test test_empty_address
        if 'address' in body:
            del body['address']
        body['fqdn'] = 'www.onet.pl'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_all
        if 'address' in body:
            del body['address']
        if 'fqdn' in body:
            del body['fqdn']
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertItemsEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        body = {"category": "bots", "restriction": "public", "confidence": "medium",
                "sha1": "023a00e7c2ef04ee5b0f767ba73ee39734323432", "name": "virut",
                "proto": "tcp", "address": [{"cc": "XX", "ip": "1.1.1.1", "asn": "1"}],
                "fqdn": "domain.com", "url": "http://onet.pl", "source": "hpfeeds.dionaea",
                "time": "2013-07-01 20:37:20", "dport": "445",
                "rid": "023a00e7c2ef04ee5b0f767ba73ee397",
                "sport": "2147", "dip": "10.28.71.43", "id": "023a00e7c2ef04ee5b0f767ba73ee397"}
        # test test_empty_ip_asn
        if 'ip' in body['address'][0]:
            del body['address'][0]['ip']
        if 'asn' in body['address']:
            del body['address'][0]['asn']
        body['fqdn'] = 'www.onet.pl'
        body['address'][0]['cc'] = 'PL'
        json_msg = json.dumps(body)
        self.assertRaises(AdjusterError, RecordDict.from_json, json_msg)

        # test test_empty_ip_cc
        if 'ip' in body['address'][0]:
            del body['address'][0]['ip']
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        body['fqdn'] = 'www.onet.pl'
        body['address'][0]['asn'] = '1234'
        json_msg = json.dumps(body)
        self.assertRaises(AdjusterError, RecordDict.from_json, json_msg)

        # test test_empty_ip_fqdn
        if 'ip' in body['address'][0]:
            del body['address'][0]['ip']
        if 'fqdn' in body:
            del body['fqdn']
        body['address'][0]['asn'] = '1234'
        body['address'][0]['cc'] = 'PL'
        json_msg = json.dumps(body)
        self.assertRaises(AdjusterError, RecordDict.from_json, json_msg)

        # test test_empty_asn_cc
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        body['fqdn'] = 'www'
        body['address'][0]['ip'] = '77.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_asn_cc
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        if 'fqdn' in body:
            del body['fqdn']
        body['address'][0]['cc'] = 'PL'
        body['address'][0]['ip'] = '77.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_fqdn_cc
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        if 'fqdn' in body:
            del body['fqdn']
        body['address'][0]['asn'] = '42'
        body['address'][0]['ip'] = '7.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_asn_ip_fqdn
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        if 'fqdn' in body:
            del body['fqdn']
        if 'ip' in body['address'][0]:
            del body['address'][0]['ip']
        body['address'][0]['cc'] = 'PL'
        json_msg = json.dumps(body)
        self.assertRaises(AdjusterError, RecordDict.from_json, json_msg)

        # test test_empty_asn_cc_fqdn
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        if 'fqdn' in body:
            del body['fqdn']
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        body['address'][0]['ip'] = '77.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))

        # test test_empty_asn_cc_fqdn
        if 'asn' in body['address'][0]:
            del body['address'][0]['asn']
        if 'fqdn' in body:
            del body['fqdn']
        if 'cc' in body['address'][0]:
            del body['address'][0]['cc']
        body['address'][0]['ip'] = '77.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['org1'], {}))
コード例 #17
0
    def test__get_client_and_urls_matched__range_ip(self):
        test_criteria_local = [
            {
                'org_id': 'cli16bit',
                'cc_seq': ['PL'],
                'asn_seq': [21467],
                'fqdn_seq': [u'ala.eu'],
                'ip_min_max_seq': TEST_CRITERIA[-1]['ip_min_max_seq'],
            }
        ]
        body = self.prepare_mock(test_criteria_local)

        body['address'][0]['ip'] = '77.2.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['address'][0]['ip'] = '77.2.233.250'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['address'][0]['ip'] = '77.2.254.250'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['address'][0]['ip'] = '77.3.100.1'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        body['address'][0]['ip'] = '77.3.255.255'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            (['cli16bit'], {}))

        # test outside the network
        body['address'][0]['ip'] = '77.2.233.170'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        body['address'][0]['ip'] = '77.2.233.0'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        body['address'][0]['ip'] = '77.1.233.171'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        body['address'][0]['ip'] = '77.3.0.0'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))

        body['address'][0]['ip'] = '77.4.0.0'
        json_msg = json.dumps(body)
        record_dict = RecordDict.from_json(json_msg)
        self.assertEqual(
            self.filter.get_client_and_urls_matched(record_dict, self.fqdn_only_categories),
            ([], {}))