% DO NOT COMPILE THIS FILE DIRECTLY!
% This is included by the other .tex files.

\begin{frame}[t,plain]
\titlepage
\end{frame}

\begin{frame}
    \frametitle{Bringing workflows into threat intelligence platform}
    After multiple years, MISP users have reach a significant maturity level:
    \begin{itemize}
        \item Events with {\bf complex TTPs, objects and attributes};
        \item Exhaustive context such as {\bf MITRE ATT\&CK}, tags and relationships;
        \item Availability of {\bf external modules and services} (e.g. from expansion services to third-party CTI);
        \item Comprehensive {\bf processing pipelines} for threat intelligence are available;
    \end{itemize}
\end{frame}

\begin{frame}
    \frametitle{Where is the glue?}
    \begin{itemize}
        \item Initial idea came from GeekWeek7.5
        \begin{center}
            \includegraphics[width=0.5\linewidth]{pictures/geekweek75.jpg}
        \end{center}
    \item Experienced users wanted to have a way to {\bf trigger actions and to modify to behavior of MISP} and especially leveraging what they have in their MISP platform.
    \item {\bf Creating workflows for any of the steps} in MISP (creating attributes/objects, publishing and sharing information, ...). 
    \end{itemize}
\end{frame}

\begin{frame}
    \frametitle{Simplistic overview}
    \begin{enumerate}
        \item \textbf{User Interacts} with MISP using the UI or API
        \item MISP handles the request, starts \textbf{preparing data} to perform the operation
        \item MISP checks if there are workflows \textbf{listening to the trigger}
        \item MISP fetches enabled workflows and \textbf{executes} them
        \item If all went fine, MISP \textbf{continue} to perform the operation
    \end{enumerate}
\end{frame}


\begin{frame}
    \frametitle{Terminology}
    \begin{enumerate}
        \item \textbf{workflow}: Sequence of actions to be executed
        \item \textbf{execution path}: A path composed of actions to be executed sequentially
        \begin{itemize}
            \item A workflow can contain more than one execution path
        \end{itemize}
        \item \textbf{trigger}: Starting point of an \texttt{execution path}. Triggers are called when specific action are done by MISP
        \begin{itemize}
            \item A workflow can contain more than one trigger, but only one per type
        \end{itemize}
    \end{enumerate}
    \begin{center}
        \includegraphics[width=1.0\linewidth]{pictures/workflow-view.png}
    \end{center}
\end{frame}


\begin{frame}
    \frametitle{Workflow execution in MISP}
    \begin{enumerate}
        \item A trigger is called;
        \item Collect workflows listening to called trigger;
        \item Execute workflows in the saved order;
    \end{enumerate}
    \begin{center}
        \includegraphics[width=0.5\linewidth]{pictures/execution-order-1.png}
    \end{center}
\end{frame}

\begin{frame}
    \frametitle{Execution Paths}
    Currently 2 types of execution path:
    \vspace{0.5em}
    \begin{itemize}
        \item {\bf Blocking}: Execution is stoped in case of error
        \begin{itemize}
            \item Current workflow's blocking execution path is {\bf stopped}
            \item Any other blocking path of next workflows {\bf will not be executed}
        \end{itemize}
        \vspace{0.5em}
        \item {\bf Non-blocking}/Deferred: Stop execution for current path only
        \begin{itemize}
            \item Current execution path is {\bf stopped}
            \item {\bf Resume} execution of remaining paths
            \item Paths from other workflow will be {\bf executed}
        \end{itemize}
    \end{itemize}
\end{frame}

\begin{frame}
    \frametitle{Execution Order and Execution Types}
    \begin{itemize}
        \item \textbf{Blocking} paths from all workflows are executed first in the saved order
        \item If any blocking executions failed, the action that called the trigger will \textbf{be stopped}
        \item \textbf{Parallel/Deferred} paths from all workflows are executed. The order is irrelevant
    \end{itemize}

    \begin{center}
        \includegraphics[width=0.35\linewidth]{pictures/execution-order-2.png}
        \includegraphics[width=0.40\linewidth]{pictures/trigger-outputs.png}
    \end{center}
\end{frame}

\begin{frame}
    \frametitle{Publishing example}
    Example:
    \begin{enumerate}
        \item An Event is published
        \item MISP starts the publishing process
        \item MISP executes a workflow listening to the trigger
        \begin{itemize}
            \item {\bf execution success}: Proceed publishing
            \item {\bf execution failure}: Stop publishing, log the reason and report the failure to the user
        \end{itemize}
    \end{enumerate}
\end{frame}

\begin{frame}
    \frametitle{Execution context}
    \begin{itemize}
        \item Workflow can be triggered by any users
        \item However, the user for which the workflow executes is the workflow creator
        \item This is to make sure users with a higher privilege will have their workflow correctly executed
    \end{itemize}
\end{frame}

\begin{frame}
    \frametitle{Workflow modules}
    \begin{center}
        \includegraphics[width=0.5\linewidth]{pictures/module-type.png}
    \end{center}
    \begin{itemize}
        \item 3 types of modules
        \begin{itemize}
            \item \texttt{trigger}: Entry point of the execution
            \begin{itemize}
                \item Event publish, email about to be sent, feed data about to be saved, ...
            \end{itemize}
            \item \texttt{logic}: Allow to redirect the execution flow.
            \begin{itemize}
                \item IF condition, fork the blocking execution into a non-blocking one, ...
            \end{itemize}
            \item \texttt{action}: Modules that can modify data, prevent execution or perform additional actions
            \begin{itemize}
                \item Publish to ZMQ, perform enrichments, block the execution, ...
            \end{itemize}
        \end{itemize}
    \end{itemize}
\end{frame}


\begin{frame}
    \frametitle{Creating a workflow with the editor}
    \begin{enumerate}
        \item Drag a \texttt{trigger} module from the side panel to the canvas
        \item Drag an \texttt{action} module from the side panel to the canvas
        \item From the \texttt{trigger} output, drag an arrow into the \texttt{action} input (left side)
        \begin{itemize}
            \item You can choose between a \texttt{blocking} and \texttt{non-blocking} execution path by using the associated trigger output
        \end{itemize}
    \end{enumerate}
    \begin{center}
        \includegraphics[width=1.0\linewidth]{pictures/editor-1.png}
    \end{center}
\end{frame}


\begin{frame}
    \frametitle{Workflow example with ATT\&CK}
    \begin{center}
        \includegraphics[width=0.9\linewidth]{pictures/ATT&CK-support.png}
    \end{center}

    \begin{enumerate}
        \item Automatically processing phishing cases from ATT\&CK context including enrichments and publishing pipelines. 
    \end{enumerate}
\end{frame}


\begin{frame}
    \frametitle{Workflow - advanced example}
    \vspace{-2em}
    \begin{center}
        \includegraphics[width=1.05\linewidth]{pictures/example-7.png}
    \end{center}
    \begin{center}
        \includegraphics[width=0.45\linewidth]{pictures/event-1.png}
    \end{center}
\end{frame}

\begin{frame}
    \frametitle{Ongoing developments}
    \begin{itemize}
        \item First release of the workflow in MISP for the FIRST.org annual conference in Dublin (end of June).
        \item {\bf Workflows are shareable} and a library of workflows will be available.
        \item Gathering ideas and requirements for new workflows from the threat intelligence community.
        \item Reviewing ATT\&CK techniques to be mapped in the MISP workflows.
    \end{itemize}
\end{frame}

