Skip to content

A research platform to develop Cyberdefense Multi-Agent Systems combining Multi-Agent-Reinforcement Learning to assist designers to find a suited organization regarding constraints and goals

License

Notifications You must be signed in to change notification settings

julien6/CybMASDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WARNING : this projet is a work in progress, onging changes are likely to break some of the functionalities

Cyberdefense Multi-Agent System Development Environment

Cyberdefense Multi-Agent System Development Environment (CybMASDE) is intended to implement the Dec-POMDP model of an environment made up from node network on which attack and defender agents are interacting each other and modifying the same environment.

Project Goals

This project is largely inspired by the context of CyberBattleSim in a multi-agent approach.

It aims to provide a way to simulate a network of nodes on which attack actions are coordinately applied by attacking agents according to a realistic based attack scenario.

Additionally, like cyber-attackers, it also aims to implement defenders whose behaviors result in different organization (whether pre-determined or not).

Consequences of applied action brings out a new environment state, optionally changing the agent knowledge and observations and bringing agents closer or further from their local goals.

Requirements

  • Python version >= 3.9

  • Node version >= v18.14.x

Installation

In "backend", type: "python install requirements.txt"

Then, in "backend/src", type: "python -m flask --app server run"

In "frontend", type "npm install"

Then, in "frontend", type "npm run start"

Open a webpage at http://localhost:4200/

The user interface should be displayed

Basic interface usage

When using terminal, avaialbe command lines are

  • ls : list avaialbe environment scenarios

  • load [environment_file.json]

alt text

  • next : so next agent plays to interact with environment / other agents

alt text

  • iterate_over [number of iteration] : so several iteration can occur in a single command

alt text

Environment creation

An simulation saving file describes:

  • The nodes (such as firewalls, workstation, server...) with their properties including deployed agents' ones as well :

Nodes environement skeleton :

{
	"meta_data": {},
	"nodes_properties": {
		"employee_workstation": {
			"installed_operating_system": "Windows/12",
			"installed_softwares": "MSOffice/2021",
			...
			"processes": {
				"agents": {
					...
				}
			}
			...
		},
		"db_server": {
			...
		}
	},
	"actions": {
		...
	}
}

Example of agents :

{
	"attacker1": {
		"behaviour": "idle",
		"observations": {
			"found_password_file": "pwd.txt",
			...
		},
		"running": true,
		"binary_file_location": "C:\\Users\\mwlr.exe",
		...
	},
	"defender1": {
		"behaviour": "idle",
		"observations": {
			"is_anomaly_in_log": true,
			...
		},
		"running": true,
		"root_privilege": "root",
		"binary_file_location": "C:\\Users\\dfdr.exe"
		...
	}
}
  • The actions to interact with nodes
"example_Action": {
    "cost": 15,
    "description": "Example action description",
    "precondition": "({{agent}}.property_id1.property_id1_1 == 'v1' and {{node}}.id2 == 'v2) or {{include(precondition_file)}}",
    "postcondition": {
        "{{agent}}.knowledge.reimagable": "{{node}}.reimagable",
        "{{node}}.logs.{{last_index}}": "'{{agent}} observed \"reimagable\" of {{node}} at {{current_time}}'"
    },
    "success_probability": 1
}

A full example is given below :

{
	"meta_data": {},
	"nodes_properties": {
		"node1_id": {
			"installed_operating_system": "Windows/12",
			"installed_softwares": "MSOffice/2021",
			...
			"processes": {
				"agents": {
					"attacker1": {
						"behaviour": "idle",
						"observations": {
							"found_password_file": "pwd.txt",
							...
						},
						"running": true,
						"binary_file_location": "C:\\Users\\mwlr.exe",
						...
					},
					"defender1": {
						"behaviour": "idle",
						"observations": {
							"is_anomaly_in_log": true,
							...
						},
						"running": true,
						"root_privilege": "root",
						"binary_file_location": "C:\\Users\\dfdr.exe"
						...
					}
				}
				...
			}
		},
		"node2_id": {
			...
		}
	},
	"actions": {
		"example_action": {
	        "cost": 15,
	        "description": "Example action description",
	        "precondition": "({{agent}}.property_id1.property_id1_1 == 'v1' and {{node}}.id2 == 'v2) or {{include(precondition_file)}}",
	        "postcondition": {
	            "{{agent}}.knowledge.reimagable": "{{node}}.reimagable",
	            "{{node}}.logs.{{last_index}}": "'{{agent}} observed \"reimagable\" of {{node}} at {{current_time}}'"
	        },
	        "success_probability": 1
        }
	}
}

About

A research platform to develop Cyberdefense Multi-Agent Systems combining Multi-Agent-Reinforcement Learning to assist designers to find a suited organization regarding constraints and goals

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published