Research Article
An Automatic Planning-Based Attack Path Discovery Approach from IT to OT Networks
Algorithm 3
Attack graph generation in a multithreading manner.
| | Input: number of threads thread_num | | | Output: attack graph AG; adding exploit and attack edges in a graph database | | (1) | create an empty attack graph AG | | (2) | get domain.pddl and problem.pddl via GENERATE PDDL FILE (domain_temp, problem_temp, hg) | | (3) | get all subgraphs from GENERATE SUBGRAPHS (G, subg_size) | | (4) | create threads pool threads_pool and set maxim workers corresponding to thread_num | | (5) | foreach subgraph in subgraphs do | | (6) | modify problem.pddl and domain.pddl based on subgraph | | (7) | create a thread and bind it to enumerate attack paths using a planner | | (8) | submit this thread to threads_pool | | (9) | while True do | | (10) | check the status of threads in threads_pool | | (11) | if all tasks in threads_pool have done do | | (12) | break | | (13) | generate subag from paths returned from each thread and merge them into AG | | (14) | get ag_edges from AG | | (15) | create attack and exploit edges in a graph database according to ag_edges |
|