Extensión y personalización
- Ejecutar varios scripts para el mismo correo electrónico.
- Modificar el script suministrado.
Añadir más scripts es mejor que añadir más complejidad a un solo script. La aplicación Orchestration & Automation puede ingerir varias categorías de mensajes de correo electrónico de distintas aplicaciones. Parte del proceso de los mensajes de correo electrónico podría ser común y parte del proceso podría ser específico de la categoría o de la aplicación. Conservar el proceso común en un script y el proceso especializado en otros permite una implementación más limpia y fácil de mantener.
Cada ejecución de script se ejecuta dentro de límites de cuota de cálculo definidos, que es de 5 segundos de tiempo de ejecución o de 50.000 líneas de Python ejecutadas. El proceso de expresiones regulares se realiza mediante el módulo Python "re" (expresión regular); su ejecución se considera parte de la cuota. Es posible crear una expresión regular compleja cuya ejecución requiera interpretar una gran cantidad de líneas de Python en un mensaje de correo electrónico determinado. La ejecución de muchas expresiones regulares de este tipo podría desbordar el límite de 50.000 líneas.
Ejemplo: tratar con informes de phishing
Escenario: los correos electrónicos que llegan a un buzón determinado reflejan que hay individuos reenviando mensajes de phishing sospechosos. Los scripts que operan en estos mensajes de correo electrónico deben, además del proceso común del script de ejemplo, registrar la dirección de correo electrónico del informante como posible objetivo de un ataque de phishing y registrar el remitente del correo electrónico de phishing reenviado como sospechoso.
import re
def addArtifact(regex, artifactType, description):
"""This method adds new artifacts to the incident derived from matches of the the regular expression parameter within the email body contents.
Parameter "regex" - a regular expression to match against the email body contents. Parameter "artifactType" - the type of the artifact(s).
Parameter "description" - the description of the artifact(s). """
# Using a set to enforce uniqueness
dataList = set(re.findall(regex, emailmessage.body.content))
if dataList is not None and len(dataList) > 0:
map(lambda theArtifact: incident.addArtifact(
artifactType, theArtifact, description), dataList)
###
# Mainline starts here
###
# Add "Phishing" as an incident type for the associated incident
incident.incident_type_ids.append("Phishing")
# Add the email sender information to the incident as the recipient of the phishing attempt
reportingUserInfo = emailmessage.from.address
if emailmessage.from.name is not None:
reportingUserInfo = "{0} <{1}>".format(emailmessage.from.name, emailmessage.from.address)
incident.addArtifact("Email Recipient", reportingUserInfo,
"Recipient of suspicious email")
# Extract email sender information on the assumption that a fishing email is being forwarded
if not emailmessage.body.content is None:
addArtifact(r"From: (.*)\n", "Email Sender", "Suspicious email sender")
addArtifact(r"Reply-To: (.*)\n", "Email Sender",
"Suspicious email sender (Reply-To)")- El script específico de phishing debe ejecutarse como el segundo script de una regla de varios scripts que ejecuta en primer lugar el script estándar.
- El script específico de phishing debe ejecutarse en una regla aparte que se ejecute posteriormente.
En cualquier caso, el script específico de phishing sólo debe ejecutarse con la condición de que el mensaje de correo electrónico que se ha creado indique que se trata de un informe de phishing.
incident.incident_type_ids.append("Phishing")Ejemplo: identificador de campaña
Escenario: es posible que el asunto del mensaje de correo electrónico no sea suficiente por sí solo para reunir los correos electrónicos relacionados en una incidencia.
Es posible que el asunto del mensaje de correo electrónico no sea lo suficientemente específico o fiable como para poder recopilar correos electrónicos relacionados. En particular, puede haber un ataque en curso en el que se estén empleando varios vectores de ataque en una sola campaña, lo que puede dar lugar a la recepción de muchos tipos diferentes de mensajes de correo electrónico para esta campaña.
Una solución al problema consiste en crear un nuevo campo en una incidencia que contenga un identificador de campaña. Este identificador se puede derivar del contenido de los mensajes de correo electrónico, o bien se puede elegir de una lista codificada cuando el script de análisis reconoce la campaña.
- Crear un campo de incidencia de incidencia para el identificador de campaña, que debe ser de tipo Texto.
- Copiar el script de análisis de ejemplo en un script nuevo.
- Modificar el nuevo script para crear un valor para el identificador de campaña seleccionando un texto del contenido de los mensajes de correo electrónico o seleccionando de una lista codificada de identificadores de campaña si se cumplen determinados criterios.
- Para asociar el mensaje de correo electrónico con una incidencia existente, buscar incidencias cuyo campo de identificador de campaña sea el mismo que el valor de identificador de campaña del mensaje de correo electrónico. Esto sustituirá la búsqueda basada en el asunto del mensaje de correo electrónico.
- Si no se encuentra ninguna incidencia adecuada, crear una incidencia y establecer su campo de identificador de campaña de modo que sea el valor de identificador de campaña.
- Modificar las reglas de modo que se ejecute el script nuevo en lugar del script de ejemplo.