コード例 #1
0
ファイル: setup.py プロジェクト: zkbupt/monkey
def store_mitigations_on_mongo():
    stix2_mitigations = MitreApiInterface.get_all_mitigations()
    mongo_mitigations = AttackMitigations.dict_from_stix2_attack_patterns(
        MitreApiInterface.get_all_attack_techniques())
    mitigation_technique_relationships = MitreApiInterface.get_technique_and_mitigation_relationships(
    )
    for relationship in mitigation_technique_relationships:
        mongo_mitigations[relationship['target_ref']].add_mitigation(
            stix2_mitigations[relationship['source_ref']])
    for relationship in mitigation_technique_relationships:
        mongo_mitigations[relationship['target_ref']].\
            add_no_mitigations_info(stix2_mitigations[relationship['source_ref']])
    for key, mongo_object in mongo_mitigations.items():
        mongo_object.save()
コード例 #2
0
 def test_get_all_mitigations(self):
     mitigations = MitreApiInterface.get_all_mitigations()
     self.assertIsNotNone((len(mitigations.items()) >= 282))
     mitigation = next(iter(mitigations.values()))
     self.assertEqual(mitigation['type'], "course-of-action")
     self.assertIsNotNone(mitigation['name'])
     self.assertIsNotNone(mitigation['description'])
     self.assertIsNotNone(mitigation['external_references'])
コード例 #3
0
def test_get_all_mitigations():
    mitigations = MitreApiInterface.get_all_mitigations()
    assert len(mitigations.items()) >= 282
    mitigation = next(iter(mitigations.values()))
    assert mitigation["type"] == "course-of-action"
    assert mitigation["name"] is not None
    assert mitigation["description"] is not None
    assert mitigation["external_references"] is not None
コード例 #4
0
ファイル: attack_mitigations.py プロジェクト: vanyell/monkey
 def add_no_mitigations_info(self, mitigation: CourseOfAction):
     mitigation_external_ref_id = MitreApiInterface.get_stix2_external_reference_id(
         mitigation)
     if mitigation_external_ref_id.startswith("T") and len(
             self.mitigations) == 0:
         mitigation_mongo_object = Mitigation.get_from_stix2_data(
             mitigation)
         mitigation_mongo_object["description"] = mitigation_mongo_object[
             "description"].splitlines()[0]
         mitigation_mongo_object["url"] = ""
         self.mitigations.append(mitigation_mongo_object)
コード例 #5
0
ファイル: mitigation.py プロジェクト: vanyell/monkey
 def get_from_stix2_data(mitigation: CourseOfAction):
     name = mitigation["name"]
     description = mitigation["description"]
     url = MitreApiInterface.get_stix2_external_reference_url(mitigation)
     return Mitigation(name=name, description=description, url=url)
コード例 #6
0
ファイル: attack_mitigations.py プロジェクト: vanyell/monkey
 def mitigations_from_attack_pattern(attack_pattern: AttackPattern):
     return AttackMitigations(
         technique_id=MitreApiInterface.get_stix2_external_reference_id(
             attack_pattern),
         mitigations=[],
     )
コード例 #7
0
ファイル: attack_mitigations.py プロジェクト: vanyell/monkey
 def add_mitigation(self, mitigation: CourseOfAction):
     mitigation_external_ref_id = MitreApiInterface.get_stix2_external_reference_id(
         mitigation)
     if mitigation_external_ref_id.startswith("M"):
         self.mitigations.append(Mitigation.get_from_stix2_data(mitigation))