forked from p15670423/monkey
87 lines
4.7 KiB
Plaintext
87 lines
4.7 KiB
Plaintext
{
|
|
"id": "AzD8XysWg1BBXCjCDkfq",
|
|
"name": "Add a new configuration setting to the Agent ⚙",
|
|
"task": {
|
|
"dod": "Make the max victim number that Monkey will find before stopping configurable by the user instead of constant.",
|
|
"tests": [],
|
|
"hints": [
|
|
"Look for `victims_max_exploit` - it's rather similar."
|
|
]
|
|
},
|
|
"content": [
|
|
{
|
|
"type": "text",
|
|
"text": "# Make something configurable\n\nIn this unit, you will learn how to add a configuration option to Monkey and how to use it in the Monkey Agent code. \n\n![computer fire](https://media.giphy.com/media/7J4P7cUur2DlErijp3/giphy.gif \"computer fire\")\n\n## Why is this important?\n\nEnabling users to configure the Monkey's behaviour gives them a lot more freedom in how they want to use the Monkey and enables more use cases.\n\n## What is \"Max victims to find\"?\n\nThe Monkey has a function which finds \"victim\" machines on the network for the Monkey to try and exploit. It's called `get_victim_machines`. This function accepts an argument which limits how many machines the Monkey should find.\n\nWe want to make that value editable by the user instead of constant in the code.\n\n## Manual testing\n\n1. After you've performed the required changes, reload the Server and check your value exists in the Internal tab of the config (see image).\n\n![](https://i.imgur.com/e0XAxuV.png)\n\n2. Set the new value to 1, and run Monkey locally (from source). See that the Monkey only scans one machine."
|
|
},
|
|
{
|
|
"type": "snippet",
|
|
"path": "monkey/infection_monkey/config.py",
|
|
"comments": [],
|
|
"firstLineNumber": 103,
|
|
"lines": [
|
|
" exploiter_classes = []",
|
|
" system_info_collector_classes = []",
|
|
" ",
|
|
"* # how many victims to look for in a single scan iteration",
|
|
"* victims_max_find = 100",
|
|
" ",
|
|
" # how many victims to exploit before stopping",
|
|
" victims_max_exploit = 100"
|
|
]
|
|
},
|
|
{
|
|
"type": "snippet",
|
|
"path": "monkey/infection_monkey/monkey.py",
|
|
"comments": [],
|
|
"firstLineNumber": 220,
|
|
"lines": [
|
|
" if not WormConfiguration.alive:",
|
|
" logger.info(\"Marked not alive from configuration\")",
|
|
" ",
|
|
"* machines = self._network.get_victim_machines(",
|
|
"* max_find=WormConfiguration.victims_max_find,",
|
|
"* stop_callback=ControlClient.check_for_stop,",
|
|
"* )",
|
|
" for machine in machines:",
|
|
" if ControlClient.check_for_stop():",
|
|
" break"
|
|
]
|
|
},
|
|
{
|
|
"type": "snippet",
|
|
"path": "monkey/monkey_island/cc/services/config_schema/internal.py",
|
|
"comments": [],
|
|
"firstLineNumber": 28,
|
|
"lines": [
|
|
" \"title\": \"Monkey\",",
|
|
" \"type\": \"object\",",
|
|
" \"properties\": {",
|
|
"* \"victims_max_find\": {",
|
|
"* \"title\": \"Max victims to find\",",
|
|
"* \"type\": \"integer\",",
|
|
"* \"default\": 100,",
|
|
"* \"description\": \"Determines the maximum number of machines the monkey is \"",
|
|
"* \"allowed to scan\",",
|
|
"* },",
|
|
" \"victims_max_exploit\": {",
|
|
" \"title\": \"Max victims to exploit\",",
|
|
" \"type\": \"integer\","
|
|
]
|
|
},
|
|
{
|
|
"type": "text",
|
|
"text": "* When changing config schema by adding or deleting keys, you need to update the Blackbox Test configurations as well [here](https://github.com/guardicore/monkey/tree/develop/envs/monkey_zoo/blackbox/config_templates)."
|
|
}
|
|
],
|
|
"symbols": {},
|
|
"file_version": "2.0.3",
|
|
"meta": {
|
|
"app_version": "0.6.6-2",
|
|
"file_blobs": {
|
|
"monkey/infection_monkey/config.py": "8f4984ba6563564343282765ab498efca5d89ba8",
|
|
"monkey/infection_monkey/monkey.py": "4160a36e0e624404d77526472d51dd07bba49e5a",
|
|
"monkey/monkey_island/cc/services/config_schema/internal.py": "86318eaf19b9991a8af5de861a3eb085238e17a4"
|
|
}
|
|
}
|
|
}
|