Agent: Add `SUPPORTED_OS` dict for exploiters and change checking logic in master

This commit is contained in:
Shreya Malviya 2022-06-22 08:34:55 -07:00
parent 26ece213a2
commit fd41d9179e
1 changed files with 14 additions and 1 deletions

View File

@ -7,6 +7,7 @@ from queue import Queue
from threading import Event
from typing import Callable, Dict, List, Mapping
from common import OperatingSystems
from infection_monkey.custom_types import PropagationCredentials
from infection_monkey.i_puppet import ExploiterResultData, IPuppet
from infection_monkey.model import VictimHost
@ -20,6 +21,18 @@ ExploiterName = str
Callback = Callable[[ExploiterName, VictimHost, ExploiterResultData], None]
SUPPORTED_OS = {
"HadoopExploiter": [OperatingSystems.LINUX.value, OperatingSystems.WINDOWS.value],
"Log4ShellExploiter": [OperatingSystems.LINUX.value, OperatingSystems.WINDOWS.value],
"MSSQLExploiter": [OperatingSystems.WINDOWS.value],
"PowerShellExploiter": [OperatingSystems.WINDOWS.value],
"SSHExploiter": [OperatingSystems.LINUX.value],
"SmbExploiter": [OperatingSystems.WINDOWS.value],
"WmiExploiter": [OperatingSystems.WINDOWS.value],
"ZerologonExploiter": [OperatingSystems.WINDOWS.value],
}
class Exploiter:
def __init__(
self,
@ -118,7 +131,7 @@ class Exploiter:
victim_os = victim_host.os.get("type")
# We want to try all exploiters if the victim's OS is unknown
if victim_os is not None and victim_os not in exploiter["supported_os"]:
if victim_os is not None and victim_os not in SUPPORTED_OS[exploiter_name]:
logger.debug(
f"Skipping {exploiter_name} because it does not support "
f"the victim's OS ({victim_os})"