From 790bb8607d20e15d2bfff297a162b1415976e888 Mon Sep 17 00:00:00 2001 From: frikky Date: Wed, 2 Mar 2022 13:39:59 +0100 Subject: [PATCH] Fixed workflow X use case info --- backend/go-app/go.mod | 4 +- docker-compose.yml | 2 +- frontend/public/images/detectionframework.png | Bin 0 -> 111592 bytes frontend/src/components/NestedMenuItem.jsx | 202 ++++++++ frontend/src/components/WorkflowPaper.jsx | 287 ++++++++++ frontend/src/views/Dashboard.jsx | 490 ++++++++---------- frontend/src/views/Workflows.jsx | 8 +- functions/onprem/orborus/build.sh | 2 +- 8 files changed, 712 insertions(+), 283 deletions(-) create mode 100644 frontend/public/images/detectionframework.png create mode 100644 frontend/src/components/NestedMenuItem.jsx create mode 100644 frontend/src/components/WorkflowPaper.jsx diff --git a/backend/go-app/go.mod b/backend/go-app/go.mod index 533ca908..a0289ae9 100644 --- a/backend/go-app/go.mod +++ b/backend/go-app/go.mod @@ -2,7 +2,7 @@ module main go 1.16 -replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared +//replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared //replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi //replace github.com/frikky/go-elasticsearch => ../../../../git/go-elasticsearch @@ -24,7 +24,7 @@ require ( github.com/h2non/filetype v1.1.3 github.com/nirasan/go-oauth-pkce-code-verifier v0.0.0-20170819232839-0fbfe93532da // indirect github.com/satori/go.uuid v1.2.0 - github.com/shuffle/shuffle-shared v0.2.6 + github.com/shuffle/shuffle-shared v0.2.7 go4.org v0.0.0-20201209231011-d4a079459e60 // indirect golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce google.golang.org/api v0.65.0 diff --git a/docker-compose.yml b/docker-compose.yml index 39a64851..02e07e9a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: depends_on: - backend backend: - build: ./backend + #build: ./backend image: ghcr.io/frikky/shuffle-backend:nightly container_name: shuffle-backend hostname: ${BACKEND_HOSTNAME} diff --git a/frontend/public/images/detectionframework.png b/frontend/public/images/detectionframework.png new file mode 100644 index 0000000000000000000000000000000000000000..30da65a54f14521474a7a01588cbe44e75f5c2bd GIT binary patch literal 111592 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 literal 0 HcmV?d00001 diff --git a/frontend/src/components/NestedMenuItem.jsx b/frontend/src/components/NestedMenuItem.jsx new file mode 100644 index 00000000..e48c2988 --- /dev/null +++ b/frontend/src/components/NestedMenuItem.jsx @@ -0,0 +1,202 @@ +import React, {useState, useRef, useImperativeHandle} from 'react' +import {makeStyles} from '@material-ui/core/styles' +import Menu, {MenuProps} from '@material-ui/core/Menu' +import MenuItem, {MenuItemProps} from '@material-ui/core/MenuItem' +import ArrowRight from '@material-ui/icons/ArrowRight' +import clsx from 'clsx' + +export interface NestedMenuItemProps extends Omit { + /** + * Open state of parent ``, used to close decendent menus when the + * root menu is closed. + */ + parentMenuOpen: boolean + /** + * Component for the container element. + * @default 'div' + */ + component?: React.ElementType + /** + * Effectively becomes the `children` prop passed to the `` + * element. + */ + label?: React.ReactNode + /** + * @default + */ + rightIcon?: React.ReactNode + /** + * Props passed to container element. + */ + ContainerProps?: React.HTMLAttributes & + React.RefAttributes + /** + * Props passed to sub `` element + */ + MenuProps?: Omit + /** + * @see https://material-ui.com/api/list-item/ + */ + button?: true | undefined +} + +const TRANSPARENT = 'rgba(0,0,0,0)' +const useMenuItemStyles = makeStyles((theme) => ({ + root: (props: any) => ({ + backgroundColor: props.open ? theme.palette.action.hover : TRANSPARENT + }) +})) + +/** + * Use as a drop-in replacement for `` when you need to add cascading + * menu elements as children to this component. + */ +const NestedMenuItem = React.forwardRef< + HTMLLIElement | null, + NestedMenuItemProps +>(function NestedMenuItem(props, ref) { + const { + parentMenuOpen, + component = 'div', + label, + rightIcon = , + children, + className, + tabIndex: tabIndexProp, + MenuProps = {}, + ContainerProps: ContainerPropsProp = {}, + ...MenuItemProps + } = props + + const {ref: containerRefProp, ...ContainerProps} = ContainerPropsProp + + const menuItemRef = useRef(null) + useImperativeHandle(ref, () => menuItemRef.current) + + const containerRef = useRef(null) + useImperativeHandle(containerRefProp, () => containerRef.current) + + const menuContainerRef = useRef(null) + + const [isSubMenuOpen, setIsSubMenuOpen] = useState(false) + + const handleMouseEnter = (event: React.MouseEvent) => { + setIsSubMenuOpen(true) + + if (ContainerProps?.onMouseEnter) { + ContainerProps.onMouseEnter(event) + } + } + const handleMouseLeave = (event: React.MouseEvent) => { + setIsSubMenuOpen(false) + + if (ContainerProps?.onMouseLeave) { + ContainerProps.onMouseLeave(event) + } + } + + // Check if any immediate children are active + const isSubmenuFocused = () => { + const active = containerRef.current?.ownerDocument?.activeElement + for (const child of menuContainerRef.current?.children ?? []) { + if (child === active) { + return true + } + } + return false + } + + const handleFocus = (event: React.FocusEvent) => { + if (event.target === containerRef.current) { + setIsSubMenuOpen(true) + } + + if (ContainerProps?.onFocus) { + ContainerProps.onFocus(event) + } + } + + const handleKeyDown = (event: React.KeyboardEvent) => { + if (event.key === 'Escape') { + return + } + + if (isSubmenuFocused()) { + event.stopPropagation() + } + + const active = containerRef.current?.ownerDocument?.activeElement + + if (event.key === 'ArrowLeft' && isSubmenuFocused()) { + containerRef.current?.focus() + } + + if ( + event.key === 'ArrowRight' && + event.target === containerRef.current && + event.target === active + ) { + const firstChild = menuContainerRef.current?.children[0] as + | HTMLElement + | undefined + firstChild?.focus() + } + } + + const open = isSubMenuOpen && parentMenuOpen + const menuItemClasses = useMenuItemStyles({open}) + + // Root element must have a `tabIndex` attribute for keyboard navigation + let tabIndex + if (!props.disabled) { + tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1 + } + + return ( +
+ + {label} + {rightIcon} + + { + setIsSubMenuOpen(false) + }} + > +
+ {children} +
+
+
+ ) +}) + +export default NestedMenuItem diff --git a/frontend/src/components/WorkflowPaper.jsx b/frontend/src/components/WorkflowPaper.jsx new file mode 100644 index 00000000..5d3b68cb --- /dev/null +++ b/frontend/src/components/WorkflowPaper.jsx @@ -0,0 +1,287 @@ +import React, { useState, useEffect, useLayoutEffect } from "react"; +import theme from '../theme'; + +import { + Chip, + Typography, + Paper, + Avatar, + Grid, + Tooltip, +} from "@material-ui/core"; + +import { + AvatarGroup, +} from "@mui/material" + +import { + Restore as RestoreIcon, + Edit as EditIcon, + BubbleChart as BubbleChartIcon, + MoreVert as MoreVertIcon, +} from '@material-ui/icons'; + +import { useNavigate, Link, useParams } from "react-router-dom"; + +const workflowActionStyle = { + display: "flex", + width: 160, + height: 44, + justifyContent: "space-between", +} + +const paperAppStyle = { + minHeight: 130, + maxHeight: 130, + overflow: "hidden", + width: "100%", + color: "white", + backgroundColor: theme.palette.surfaceColor, + padding: "12px 12px 0px 15px", + borderRadius: 5, + display: "flex", + boxSizing: "border-box", + position: "relative", +} + +const chipStyle = { + backgroundColor: "#3d3f43", + marginRight: 5, + paddingLeft: 5, + paddingRight: 5, + height: 28, + cursor: "pointer", + borderColor: "#3d3f43", + color: "white", +} + +const WorkflowPaper = (props) => { + const { data } = props; + let navigate = useNavigate(); + + const [open, setOpen] = React.useState(false); + const [anchorEl, setAnchorEl] = React.useState(null); + const appGroup = data.action_references === undefined || data.action_references === null ? [] : data.action_references + + //console.log("Workflow: ", data) + var boxColor = "#86c142"; + + var parsedName = data.name; + if ( + parsedName !== undefined && + parsedName !== null && + parsedName.length > 20 + ) { + parsedName = parsedName.slice(0, 21) + ".."; + } + + + const imageStyle = { + width: 24, + height: 24, + marginRight: 10, + border: "1px solid rgba(255,255,255,0.3)", + } + var image = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.image !== undefined && data.creator_info.image !== null && data.creator_info.image.length > 0 ? : + const creatorname = data.creator_info !== undefined && data.creator_info !== null && data.creator_info.username !== undefined && data.creator_info.username !== null && data.creator_info.username.length > 0 ? data.creator_info.username : "" + var orgName = ""; + var orgId = ""; + if ((data.objectID === undefined || data.objectID === null) && data.id !== undefined && data.id !== null) { + data.objectID = data.id + } + + //console.log("IMG: ", data) + + return ( +
+ +
+ + + +
{ + if (data.creator_info !== undefined) { + navigate("/creators/"+data.creator_info.username) + } + }} + > + {image} +
+
+ + + + {parsedName} + + + +
+ + {appGroup.length > 0 ? +
+ + {appGroup.map((app, index) => { + return ( +
{ + navigate("/apps/"+app.id) + }} + > + + + +
+ ) + })} +
+
+ : + + + + + {data.actions === undefined || data.actions === null ? 1 : data.actions.length} + + + + } + + + + + {data.triggers === undefined || data.triggers === null ? 1 : data.triggers.length} + + + + + { + }} + > + + + + + {0} + + + +
+ + {data.tags !== undefined && data.tags !== null + ? data.tags.map((tag, index) => { + if (index >= 3) { + return null; + } + + return ( + + ); + }) + : null} + +
+ +
+ ) + } + +export default WorkflowPaper diff --git a/frontend/src/views/Dashboard.jsx b/frontend/src/views/Dashboard.jsx index 9d75f7c2..395680b5 100644 --- a/frontend/src/views/Dashboard.jsx +++ b/frontend/src/views/Dashboard.jsx @@ -9,12 +9,21 @@ import theme from '../theme'; import { useAlert } from "react-alert"; import { + Tooltip, + IconButton, Typography, Grid, Paper, Chip, } from "@material-ui/core"; +import { + Close as CloseIcon, + DoneAll as DoneAllIcon, +} from "@material-ui/icons"; + +import WorkflowPaper from "../components/WorkflowPaper.jsx" + // core components //import { // chartExample1, @@ -41,267 +50,9 @@ import { TreeMapRect, } from 'reaviz'; -const categorydata = [ - { - "name": "1. Collect & Distribute", - "list": [ - { - "name": "2-way Ticket synchronization", - "items": {} - }, - { - "name": "Email management", - "items": { - "name": "Release a quarantined message", - "items": {} - } - }, - { - "name": "EDR to ticket", - "items": { - "name": "Get host information", - "items": {} - } - }, - { - "name": "SIEM to ticket", - "items": {} - }, - { - "name": "ChatOps", - "items": {} - }, - { - "name": "Threat Intel received", - "items": {} - }, - { - "name": "Domain investigation with LetsEncrypt", - "items": {} - }, - { - "name": "Botnet tracker", - "items": {} - }, - { - "name": "Get running containers", - "items": {} - }, - { - "name": "Assign tickets", - "items": {} - }, - { - "name": "Firewall alerts", - "items": { - "name": "URL filtering", - "items": {} - } - }, - { - "name": "IDS/IPS alerts", - "items": { - "name": "Manage policies", - "items": {} - } - }, - { - "name": "Deduplicate information", - "items": {} - }, - { - "name": "Correlate information", - "items": {} - } - ] - }, - { - "name": "3. Detect", - "list": [ - { - "name": "Search SIEM (Sigma)", - "items": { - "name": "Endpoint", - "items": {} - } - }, - { - "name": "Search EDR (OSQuery)", - "items": {} - }, - { - "name": "Search emails (Phish)", - "items": { - "name": "Check headers and IOCs", - "items": {} - } - }, - { - "name": "Search IOCs (ioc-finder)", - "items": {} - }, - { - "name": "Search files (Yara)", - "items": {} - }, - { - "name": "Correlate tickets", - "items": {} - }, - { - "name": "Honeypot access", - "items": { - "name": "...", - "items": {} - } - } - ] - }, - { - "name": "Verify", - "list": [ - { - "name": "Discover vulnerabilities", - "items": {} - }, - { - "name": "Discover assets", - "items": {} - }, - { - "name": "Ensure policies are followed", - "items": {} - }, - { - "name": "Find Inactive users", - "items": {} - }, - { - "name": "Ensure access rights match HR systems", - "items": {} - }, - { - "name": "Ensure onboarding is followed", - "items": {} - }, - { - "name": "Third party apps in SaaS", - "items": {} - }, - { - "name": "Devices used for your cloud account", - "items": {} - }, - { - "name": "Too much access in GCP/Azure/AWS/ other clouds", - "items": {} - }, - { - "name": "Certificate validation", - "items": {} - }, - { - "name": "Monitor new DNS entries for domain with passive DNS", - "items": {} - }, - { - "name": "Monitor and track password dumps", - "items": {} - }, - { - "name": "Monitor for mentions of domain on darknet sites", - "items": {} - }, - { - "name": "Reporting", - "items": { - "name": "Monthly reports", - "items": { - "name": "...", - "items": {} - } - } - } - ] - }, - { - "name": "4. Respond", - "list": [ - { - "name": "Eradicate malware", - "items": {} - }, - { - "name": "Quarantine host(s)", - "items": {} - }, - { - "name": "Trigger scans", - "items": {} - }, - { - "name": "Update indicators (FW, EDR, SIEM...)", - "items": {} - }, - { - "name": "Autoblock activity when threat intel is received", - "items": {} - }, - { - "name": "Lock/Delete/Reset account", - "items": {} - }, - { - "name": "Lock vault", - "items": {} - }, - { - "name": "Increase authentication", - "items": {} - }, - { - "name": "Trigger scans", - "items": {} - }, - { - "name": "Get policies from assets", - "items": {} - } - ] - }, - { - "name": "2. Enrich", - "list": [ - { - "name": "Internal Enrichment", - "items": { - "name": "...", - "items": {} - } - }, - { - "name": "External historical Enrichment", - "items": { - "name": "...", - "items": {} - } - }, - { - "name": "Realtime", - "items": { - "name": "Analyze screenshots", - "items": {} - } - }, - { - "name": "Ticketing webhook verification", - "items": {} - } - ] - } -] - -const UsecaseListComponent = ({keys}) => { +const UsecaseListComponent = ({keys, isCloud}) => { + const [expandedIndex, setExpandedIndex] = useState(-1); + const [expandedItem, setExpandedItem] = useState(-1); if (keys === undefined || keys === null || keys.length === 0) { return null } @@ -322,14 +73,112 @@ const UsecaseListComponent = ({keys}) => { {usecase.list.map((subcase, subindex) => { + if (subcase.matches === undefined || subcase.matches === null) { + subcase.matches = [] + } + + const selectedItem = subindex === expandedItem && index === expandedIndex + const finished = subcase.matches.length > 0 + //const backgroundColor = selectedItem ? "inherit" : finished ? "inherit" : usecase.color + const backgroundColor = "inherit" + const itemBorder = `${selectedItem ? "3px" : expandedItem >= 0 ? "0px" : "1px"} solid ${usecase.color}` + return ( - - { - console.log("Clicked: ", subcase.name) + { + if (selectedItem) { + } else { + setExpandedIndex(index) + setExpandedItem(subindex) + } + }}> + { + console.log("Clicked: ", subcase) }}> - - {subcase.name} - + {!selectedItem ? +
+ + {subcase.name} + + {finished ? + + { + }} + > + + + + : null} +
+ : +
+ + {subcase.name} + + + Description: {subcase.description} + + + { + setExpandedItem(-1) + setExpandedIndex(-1) + }} + > + + + +
+ {subcase.name} +
+ + Your workflow{subcase.matches.length === 1 ? "" : "s"} ({subcase.matches.length}) + + {subcase.matches.length > 0 ? + + {subcase.matches.map((workflow, workflowindex) => { + return ( + + + + ) + })} + + : +
+ + No workflow selected yet. + +
+ } + {isCloud !== false ? + + Public workflows + + : null} +
+
+
+ }
) @@ -403,7 +252,6 @@ const RadialChart = ({keys, setSelectedCategory}) => { { - console.log("Color: ", colorInput) return '#f86a3e' }} animated={false} @@ -473,7 +321,7 @@ const RadialChart = ({keys, setSelectedCategory}) => { // This is the start of a dashboard that can be used. // What data do we fill in here? Idk const Dashboard = (props) => { - const { globalUrl } = props; + const { globalUrl, isLoggedIn } = props; const alert = useAlert(); const [bigChartData, setBgChartData] = useState("data1"); const [dayAmount, setDayAmount] = useState(7); @@ -487,6 +335,44 @@ const Dashboard = (props) => { const [selectedUsecaseCategory, setSelectedUsecaseCategory] = useState(""); const [selectedUsecases, setSelectedUsecases] = useState([]); const [usecases, setUsecases] = useState([]); + const [workflows, setWorkflows] = useState([]); + + const isCloud = + window.location.host === "localhost:3002" || + window.location.host === "shuffler.io"; + + const getAvailableWorkflows = () => { + fetch(globalUrl + "/api/v1/workflows", { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + credentials: "include", + }) + .then((response) => { + if (response.status !== 200) { + fetchUsecases() + console.log("Status not 200 for workflows :O!: ", response.status); + return; + } + + return response.json(); + }) + .then((responseJson) => { + fetchUsecases(responseJson) + + console.log("Resp: ", responseJson) + if (responseJson !== undefined) { + //setWorkflows(responseJson); + //fetchUsecases(responseJson) + } + }) + .catch((error) => { + fetchUsecases() + //alert.error(error.toString()); + }); + } useEffect(() => { console.log("Changed: ", selectedUsecaseCategory) @@ -521,7 +407,7 @@ const Dashboard = (props) => { setTreeKeys(treeCategories) } - const fetchUsecases = () => { + const fetchUsecases = (workflows) => { fetch(globalUrl + "/api/v1/workflows/usecases", { method: "GET", headers: { @@ -540,9 +426,62 @@ const Dashboard = (props) => { .then((responseJson) => { if (responseJson.success !== false) { console.log("Usecases: ", responseJson) - handleKeysetting(responseJson) - setUsecases(responseJson) - setSelectedUsecases(responseJson) + if (workflows !== undefined && workflows !== null && workflows.length > 0) { + console.log("Got workflows: ", workflows) + var categorydata = responseJson + + var newcategories = [] + for (var key in categorydata) { + var category = categorydata[key] + category.matches = [] + + for (var subcategorykey in category.list) { + var subcategory = category.list[subcategorykey] + subcategory.matches = [] + + for (var workflowkey in workflows) { + const workflow = workflows[workflowkey] + + if (workflow.usecase_ids !== undefined && workflow.usecase_ids !== null) { + for (var usecasekey in workflow.usecase_ids) { + if (workflow.usecase_ids[usecasekey].toLowerCase() === subcategory.name.toLowerCase()) { + console.log("Got match: ", workflow.usecase_ids[usecasekey]) + + category.matches.push({ + "workflow": workflow.id, + "category": subcategory.name, + }) + + subcategory.matches.push(workflow) + break + } + } + } + + if (subcategory.matches.length > 0) { + break + } + } + } + + newcategories.push(category) + } + + console.log("Categories: ", newcategories) + if (newcategories !== undefined && newcategories !== null && newcategories.length > 0) { + handleKeysetting(newcategories) + setUsecases(newcategories) + setSelectedUsecases(newcategories) + } else { + handleKeysetting(responseJson) + setUsecases(responseJson) + setSelectedUsecases(responseJson) + } + } else { + handleKeysetting(responseJson) + setUsecases(responseJson) + setSelectedUsecases(responseJson) + } } }) .catch((error) => { @@ -552,7 +491,8 @@ const Dashboard = (props) => { }; useEffect(() => { - fetchUsecases() + getAvailableWorkflows() + //fetchUsecases() }, []); const fetchdata = (stats_id) => { @@ -845,7 +785,7 @@ const Dashboard = (props) => {
: null} - + {treeKeys.length > 0 ? diff --git a/frontend/src/views/Workflows.jsx b/frontend/src/views/Workflows.jsx index 7167fdf2..434a9287 100644 --- a/frontend/src/views/Workflows.jsx +++ b/frontend/src/views/Workflows.jsx @@ -930,7 +930,7 @@ const Workflows = (props) => { //workflows[0].usecase_ids = ["Correlate tickets"] if (workflows !== undefined && workflows !== null) { - const newcategories = [] + var newcategories = [] for (var key in categorydata) { var category = categorydata[key] category.matches = [] @@ -2493,7 +2493,7 @@ const Workflows = (props) => { None
{usecases.map((usecase, index) => { - console.log(usecase) + //console.log(usecase) return ( { {isCloud ? null : (