Initial Commit
This commit is contained in:
1
__init__.py
Normal file
1
__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__iris_module_interface = "IrisScoring"
|
||||
77
buildnpush2iris.sh
Normal file
77
buildnpush2iris.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
# Courtesy of SOCFortress
|
||||
|
||||
# Help
|
||||
Help()
|
||||
{
|
||||
# Display Help
|
||||
echo "This script builds the DFIR-IRIS module of the current directory and installs it to DFIR-IRIS. If you run it for the first time or change something in the module configuration template make sure to run the -a switch."
|
||||
echo
|
||||
echo "Syntax: ./buildnpush2iris [-a|h]"
|
||||
echo "options:"
|
||||
echo "a Also install the module to the iris-web_app_1 container. Only required on initial install or when changes to config template were made."
|
||||
echo "h Print this Help."
|
||||
echo
|
||||
}
|
||||
|
||||
Run()
|
||||
{
|
||||
echo "[BUILDnPUSH2IRIS] Starting the build and push process.."
|
||||
SEARCH_DIR='./dist'
|
||||
get_recent_file () {
|
||||
FILE=$(ls -Art1 ${SEARCH_DIR} | tail -n 1)
|
||||
if [ ! -f ${FILE} ]; then
|
||||
SEARCH_DIR="${SEARCH_DIR}/${FILE}"
|
||||
get_recent_file
|
||||
fi
|
||||
echo $FILE
|
||||
exit
|
||||
}
|
||||
|
||||
python3.9 setup.py bdist_wheel
|
||||
|
||||
latest=$(get_recent_file)
|
||||
module=${latest#"./dist/"}
|
||||
|
||||
echo "[BUILDnPUSH2IRIS] Found latest module file: $latest"
|
||||
echo "[BUILDnPUSH2IRIS] Copy module file to worker container.."
|
||||
docker cp $latest iris-web-worker-1:/iriswebapp/dependencies/$module
|
||||
echo "[BUILDnPUSH2IRIS] Installing module in worker container.."
|
||||
docker exec -it iris-web-worker-1 /bin/sh -c "pip3 install dependencies/$module --force-reinstall"
|
||||
echo "[BUILDnPUSH2IRIS] Restarting worker container.."
|
||||
docker restart iris-web-worker-1
|
||||
|
||||
if [ "$a_Flag" = true ] ; then
|
||||
echo "[BUILDnPUSH2IRIS] Copy module file to app container.."
|
||||
docker cp $latest iris-web-app-1:/iriswebapp/dependencies/$module
|
||||
echo "[BUILDnPUSH2IRIS] Installing module in app container.."
|
||||
docker exec -it iris-web-app-1 /bin/sh -c "pip3 install dependencies/$module --force-reinstall"
|
||||
echo "[BUILDnPUSH2IRIS] Restarting app container.."
|
||||
docker restart iris-web-app-1
|
||||
fi
|
||||
|
||||
echo "[BUILDnPUSH2IRIS] Completed!"
|
||||
}
|
||||
|
||||
a_Flag=false
|
||||
|
||||
while getopts ":ha" option; do
|
||||
case $option in
|
||||
h) # display Help
|
||||
Help
|
||||
exit;;
|
||||
a) # Enter a name
|
||||
echo "[BUILDnPUSH2IRIS] Pushing to Worker and App container!"
|
||||
a_Flag=true
|
||||
Run
|
||||
exit;;
|
||||
\?) # Invalid option
|
||||
echo "ERROR: Invalid option"
|
||||
exit;;
|
||||
|
||||
esac
|
||||
done
|
||||
|
||||
echo "[BUILDnPUSH2IRIS] Pushing to Worker container only!"
|
||||
Run
|
||||
exit
|
||||
26
iris_scoring_config.py
Normal file
26
iris_scoring_config.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from iris_interface.IrisModuleInterface import IrisModuleTypes
|
||||
|
||||
module_name = "IrisScoring"
|
||||
|
||||
module_description = "Module to check through abuseipdb, virustotal and more"
|
||||
|
||||
interface_version = 1.1
|
||||
|
||||
module_version = 1.0
|
||||
|
||||
module_type = IrisModuleTypes.module_processor
|
||||
|
||||
pipeline_support = False
|
||||
|
||||
pipeline_info = {}
|
||||
|
||||
module_configuration = [
|
||||
{
|
||||
"param_name": "log_received_hook",
|
||||
"param_human_name": "Log received hook",
|
||||
"param_description": "Logs a message upon hook receiving if set to true. Otherwise do nothing.",
|
||||
"default": True,
|
||||
"mandatory": True,
|
||||
"type": "bool"
|
||||
}
|
||||
]
|
||||
36
iris_scoring_module.py
Normal file
36
iris_scoring_module.py
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from iris_interface.IrisModuleInterface import IrisModuleInterface
|
||||
|
||||
class IrisScoringModule(IrisModuleInterface):
|
||||
_module_name = interface_conf.module_name
|
||||
_module_description = interface_conf.module_description
|
||||
_interface_version = interface_conf.interface_version
|
||||
_module_version = interface_conf.module_version
|
||||
_pipeline_support = interface_conf.pipeline_support
|
||||
_pipeline_info = interface_conf.pipeline_info
|
||||
_module_configuration = interface_conf.module_configuration
|
||||
_module_type = interface_conf.module_type
|
||||
|
||||
def register_hooks(self, module_id: int):
|
||||
"""
|
||||
Called by IRIS indicating it's time to register hooks.
|
||||
:param module_id: Module ID provided by IRIS.
|
||||
"""
|
||||
status = self.register_to_hook(module_id, iris_hook_name='on_postload_ioc_create')
|
||||
if status.is_failure():
|
||||
self.log.error(status.get_message())
|
||||
else:
|
||||
self.log.info(f"Successfully subscribed to on_postload_ioc_create hook")
|
||||
|
||||
|
||||
def hooks_handler(self, hook_name: str, data):
|
||||
"""
|
||||
Called by IRIS each time one of our hook is triggered.
|
||||
"""
|
||||
|
||||
if self._dict_conf.get('log_received_hook') is True:
|
||||
self.log.info(f'Received {hook_name}')
|
||||
self.log.info(f'Received data of type {type(data)}')
|
||||
|
||||
return InterfaceStatus.I2Success(data=data, logs=list(self.message_queue))
|
||||
Reference in New Issue
Block a user