mirror of
https://github.com/mvt-project/mvt.git
synced 2026-02-25 14:45:15 +00:00
Add basic support for IP indicators in MVT (#556)
* Add prelimary ipv4-addr ioc matching support under collection domains * Add IP addresses as a valid IOC type This currently just supports IPv4 addresses which are treated as domains internally in MVT. --------- Co-authored-by: renini <renini@local>
This commit is contained in:
committed by
GitHub
parent
5ef19a327c
commit
81b647beac
@@ -107,6 +107,13 @@ class Indicators:
|
|||||||
ioc_coll=collection,
|
ioc_coll=collection,
|
||||||
ioc_coll_list=collection["domains"],
|
ioc_coll_list=collection["domains"],
|
||||||
)
|
)
|
||||||
|
if key == "ipv4-addr:value":
|
||||||
|
# We treat IP addresses as simple domains here to ease checks.
|
||||||
|
self._add_indicator(
|
||||||
|
ioc=value.strip(),
|
||||||
|
ioc_coll=collection,
|
||||||
|
ioc_coll_list=collection["domains"],
|
||||||
|
)
|
||||||
elif key == "process:name":
|
elif key == "process:name":
|
||||||
self._add_indicator(
|
self._add_indicator(
|
||||||
ioc=value, ioc_coll=collection, ioc_coll_list=collection["processes"]
|
ioc=value, ioc_coll=collection, ioc_coll_list=collection["processes"]
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ def generate_test_stix_file(file_path):
|
|||||||
os.remove(file_path)
|
os.remove(file_path)
|
||||||
|
|
||||||
domains = ["example.org"]
|
domains = ["example.org"]
|
||||||
|
ip_addresses = ["198.51.100.1"]
|
||||||
processes = ["Launch"]
|
processes = ["Launch"]
|
||||||
emails = ["foobar@example.org"]
|
emails = ["foobar@example.org"]
|
||||||
filenames = ["/var/foobar/txt"]
|
filenames = ["/var/foobar/txt"]
|
||||||
@@ -33,6 +34,15 @@ def generate_test_stix_file(file_path):
|
|||||||
res.append(i)
|
res.append(i)
|
||||||
res.append(Relationship(i, "indicates", malware))
|
res.append(Relationship(i, "indicates", malware))
|
||||||
|
|
||||||
|
for a in ip_addresses:
|
||||||
|
i = Indicator(
|
||||||
|
indicator_types=["malicious-activity"],
|
||||||
|
pattern="[ipv4-addr:value='{}']".format(a),
|
||||||
|
pattern_type="stix",
|
||||||
|
)
|
||||||
|
res.append(i)
|
||||||
|
res.append(Relationship(i, "indicates", malware))
|
||||||
|
|
||||||
for p in processes:
|
for p in processes:
|
||||||
i = Indicator(
|
i = Indicator(
|
||||||
indicator_types=["malicious-activity"],
|
indicator_types=["malicious-activity"],
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ class TestIndicators:
|
|||||||
ind = Indicators(log=logging)
|
ind = Indicators(log=logging)
|
||||||
ind.load_indicators_files([indicator_file], load_default=False)
|
ind.load_indicators_files([indicator_file], load_default=False)
|
||||||
assert len(ind.ioc_collections) == 1
|
assert len(ind.ioc_collections) == 1
|
||||||
assert ind.ioc_collections[0]["count"] == 8
|
assert ind.ioc_collections[0]["count"] == 9
|
||||||
assert len(ind.ioc_collections[0]["domains"]) == 1
|
assert len(ind.ioc_collections[0]["domains"]) == 2
|
||||||
assert len(ind.ioc_collections[0]["emails"]) == 1
|
assert len(ind.ioc_collections[0]["emails"]) == 1
|
||||||
assert len(ind.ioc_collections[0]["file_names"]) == 1
|
assert len(ind.ioc_collections[0]["file_names"]) == 1
|
||||||
assert len(ind.ioc_collections[0]["processes"]) == 1
|
assert len(ind.ioc_collections[0]["processes"]) == 1
|
||||||
@@ -74,6 +74,10 @@ class TestIndicators:
|
|||||||
assert ind.check_url("https://github.com") is None
|
assert ind.check_url("https://github.com") is None
|
||||||
assert ind.check_url("https://example.com/") is None
|
assert ind.check_url("https://example.com/") is None
|
||||||
|
|
||||||
|
# Test detecting IP address indicators from STIX.
|
||||||
|
assert ind.check_url("https://198.51.100.1:8080/")
|
||||||
|
assert ind.check_url("https://1.1.1.1/") is None
|
||||||
|
|
||||||
def test_check_file_hash(self, indicator_file):
|
def test_check_file_hash(self, indicator_file):
|
||||||
ind = Indicators(log=logging)
|
ind = Indicators(log=logging)
|
||||||
ind.load_indicators_files([indicator_file], load_default=False)
|
ind.load_indicators_files([indicator_file], load_default=False)
|
||||||
@@ -98,4 +102,4 @@ class TestIndicators:
|
|||||||
os.environ["MVT_STIX2"] = indicator_file
|
os.environ["MVT_STIX2"] = indicator_file
|
||||||
ind = Indicators(log=logging)
|
ind = Indicators(log=logging)
|
||||||
ind.load_indicators_files([], load_default=False)
|
ind.load_indicators_files([], load_default=False)
|
||||||
assert ind.total_ioc_count == 8
|
assert ind.total_ioc_count == 9
|
||||||
|
|||||||
Reference in New Issue
Block a user