mirror of
https://github.com/DISARMFoundation/DISARMframeworks.git
synced 2024-12-19 21:04:19 -05:00
c11e9d06ad
Added framework objects: - Added technique T0066 "Degrade adversary" to TA02 - Added technique T0067 "Plan to discredit credible sources" to TA02 - Added technique T0068 "respond to breaking news event" to TA02 - Added technique T0069 "respond to active crisis" to TA02 - Added technique T0070 "Analyze existing communities" to TA02 - Added technique T0071 "Find echo chambers" to TA13 - Added technique T0072 "Segment audiences" to TA13 Added STIX generator from repo DISARM-stix2, and added code to generate github files, databases, and STIX from the same Jupyter notebook.
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
from stix2 import CustomObject, properties, ExternalReference
|
|
|
|
import objects.marking_definition
|
|
from objects import identity, marking_definition
|
|
|
|
|
|
@CustomObject('x-mitre-tactic', [
|
|
('name', properties.StringProperty(required=True)),
|
|
('description', properties.StringProperty(required=True)),
|
|
('x_mitre_shortname', properties.StringProperty(required=True)),
|
|
('external_references', properties.ListProperty(ExternalReference))
|
|
])
|
|
class Tactic(object):
|
|
def __init__(self, x_mitre_shortname=None, **kwargs):
|
|
if x_mitre_shortname and x_mitre_shortname not in ["strategic-planning", "objective-planning",
|
|
"develop-people", "develop-persona",
|
|
"develop-networks", "microtargeting", "develop-content",
|
|
"channel-selection", "pump-priming", "exposure",
|
|
"go-physical",
|
|
"persistence", "measure-effectiveness"]:
|
|
# raise ValueError("'%s' is not a recognized DISARM Tactic." % x_mitre_shortname)
|
|
print("'%s' is not a recognized DISARM Tactic." % x_mitre_shortname)
|
|
|
|
|
|
def make_disarm_tactics(data):
|
|
"""Create all DISARM tactic objects.
|
|
|
|
Args:
|
|
data: The xlsx tactic sheet.
|
|
|
|
Returns:
|
|
A list of Tactics.
|
|
|
|
"""
|
|
tactics = []
|
|
for t in data["tactics"].values.tolist():
|
|
external_references = [
|
|
{
|
|
'external_id': f'{t[0]}',
|
|
'source_name': 'DISARM',
|
|
'url': f'https://github.com/DISARMFoundation/DISARM_framework/blob/master/tactics/{t[0]}.md'
|
|
}
|
|
]
|
|
|
|
tactic = Tactic(
|
|
name=f"{t[1]}",
|
|
description=f"{t[5]}",
|
|
x_mitre_shortname=f'{t[1].lower().replace(" ", "-")}',
|
|
external_references=external_references,
|
|
object_marking_refs=objects.marking_definition.make_disarm_marking_definition(),
|
|
created_by_ref=objects.identity.make_disarm_identity()
|
|
)
|
|
|
|
tactics.append(tactic)
|
|
|
|
return tactics
|
|
|