Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/CyberBattleSim
Path: blob/main/notebooks/random_active_directory.py
597 views
1
# ---
2
# jupyter:
3
# jupytext:
4
# formats: ipynb,py:percent
5
# text_representation:
6
# extension: .py
7
# format_name: percent
8
# format_version: '1.3'
9
# jupytext_version: 1.16.4
10
# kernelspec:
11
# display_name: Python 3 (ipykernel)
12
# language: python
13
# name: python3
14
# ---
15
16
# %% [markdown]
17
# Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License.
18
#
19
# # Randomly generated CyberBattle network environment for Active Directory
20
21
# %%
22
import cyberbattle.samples.active_directory.generate_ad as ad
23
import cyberbattle.simulation.commandcontrol as commandcontrol
24
import logging, sys, random
25
26
random.seed(1)
27
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(levelname)s: %(message)s")
28
# %matplotlib inline
29
30
# %%
31
env = ad.new_random_environment(42)
32
env.plot_environment_graph()
33
34
# %%
35
c2 = commandcontrol.CommandControl(env)
36
dbg = commandcontrol.EnvironmentDebugging(c2)
37
38
# 1 - Start from client
39
dbg.plot_discovered_network()
40
c2.print_all_attacks()
41
42
# %%
43
outcome = c2.run_attack("workstation_0", "FindDomainControllers")
44
dbg.plot_discovered_network()
45
c2.print_all_attacks()
46
47
# %%
48
outcome = c2.run_attack("workstation_0", "EnumerateFileShares")
49
dbg.plot_discovered_network()
50
c2.print_all_attacks()
51
52
# %%
53
outcome = c2.run_attack("workstation_0", "AuthorizationSpoofAndCrack")
54
dbg.plot_discovered_network()
55
c2.print_all_attacks()
56
57
# %%
58
c2.connect_and_infect("workstation_0", "workstation_4", "SHELL", "user_28")
59
dbg.plot_discovered_network()
60
c2.print_all_attacks()
61
62
# %%
63
c2.run_attack("workstation_4", "ScanForCreds")
64
dbg.plot_discovered_network()
65
c2.print_all_attacks()
66
67
# %%
68
c2.connect_and_infect("workstation_0", "domain_controller_1", "AD", "dc_1")
69
dbg.plot_discovered_network()
70
c2.print_all_attacks()
71
72
# %%
73
c2.run_attack("domain_controller_1", "DumpNTDS")
74
dbg.plot_discovered_network()
75
c2.print_all_attacks()
76
77