-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
269d058
commit dc47191
Showing
30 changed files
with
275 additions
and
176 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,4 @@ | ||
alabaster==0.7.12 | ||
attrs==22.1.0 | ||
Babel==2.10.3 | ||
bleach==5.0.1 | ||
cffi==1.15.1 | ||
charset-normalizer==2.1.0 | ||
cloudpickle==2.1.0 | ||
commonmark==0.9.1 | ||
cycler==0.11.0 | ||
docutils==0.17.1 | ||
fonttools==4.34.4 | ||
gym==0.25.1 | ||
gym-notices==0.0.7 | ||
idna==3.3 | ||
imagesize==1.4.1 | ||
importlib-metadata==4.12.0 | ||
iniconfig==1.1.1 | ||
jeepney==0.8.0 | ||
Jinja2==3.1.2 | ||
keyring==23.7.0 | ||
kiwisolver==1.4.4 | ||
MarkupSafe==2.1.1 | ||
matplotlib==3.5.2 | ||
networkx==2.8.5 | ||
numpy==1.23.1 | ||
packaging==21.3 | ||
pkginfo==1.8.3 | ||
pluggy==1.0.0 | ||
prettytable==3.3.0 | ||
py==1.11.0 | ||
pycparser==2.21 | ||
Pygments==2.12.0 | ||
pyparsing==3.0.9 | ||
pytest==7.1.2 | ||
python-dateutil==2.8.2 | ||
pytz==2022.1 | ||
PyYAML==6.0 | ||
readme-renderer==35.0 | ||
requests==2.28.1 | ||
requests-toolbelt==0.9.1 | ||
rfc3986==2.0.0 | ||
rich==12.5.1 | ||
SecretStorage==3.3.2 | ||
six==1.16.0 | ||
snowballstemmer==2.2.0 | ||
Sphinx==5.1.1 | ||
sphinx-rtd-theme==1.0.0 | ||
sphinxcontrib-applehelp==1.0.2 | ||
sphinxcontrib-devhelp==1.0.2 | ||
sphinxcontrib-htmlhelp==2.0.0 | ||
sphinxcontrib-jsmath==1.0.1 | ||
sphinxcontrib-qthelp==1.0.3 | ||
sphinxcontrib-serializinghtml==1.1.5 | ||
tomli==2.0.1 | ||
twine==4.0.1 | ||
typing_extensions==4.3.0 | ||
urllib3==1.26.11 | ||
wcwidth==0.2.5 | ||
webencodings==0.5.1 | ||
zipp==3.8.1 | ||
nasim | ||
sphinx | ||
sphinx-autobuild | ||
sphinx-rtd-theme |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,3 +9,4 @@ More technical explanations related to NASim. | |
:maxdepth: 1 | ||
|
||
scenario_generation | ||
sim_to_real |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
.. _sim_to_real_explanation: | ||
|
||
Sim-to-Real Gap Considerations | ||
============================== | ||
|
||
NASim is a fairly simplified simulator of network penetration testing. It's main goal is to capture some of the key features of network pentesting in a easy-to-use and fast simulator so that it can be used for rapid testing and prototyping of algorithms before these algorithms are tested on more realistic environments. That is to say there is a bit of gap between the scenarios in NASim and the real world. | ||
|
||
In this document we wanted to lay down some considerations to think about when trying to extend your algorithm beyond NASim. This is by no means an exhaustive list, but will hopefully give you something to think about for the next steps, and also give an explanation of some of the design decisions made in NASim. | ||
|
||
.. note:: This document is a work in progress so if you have any thoughts, useful references, etc on the topic of applying autonomous penetration testing in the real-world please reach out via email or open an issue on github. | ||
|
||
Handling Partial Observability | ||
------------------------------ | ||
|
||
One of the big assumptions made by NASim is that the pentester agent has access to the network addresses of every host in the network, even in partially observable mode. This information is given to the agent in it's list of actions. In practice in the real-world, depending on the scenario, this assumption may be invalid, and part of the challenge for the pentester is to be able to discover new hosts as they navigate through the network. | ||
|
||
The main reason NASim is implemented with the network addresses being known is so that the action space size could be fixed, making it simpler to use with typical Deep Reinforcement Learning algorithms (i.e. with neural nets with fixed size input and output layers). | ||
|
||
One of the research challenges is to develop algorithms that can handle action spaces that change as the pentester discovers more network addresses, or perhaps more realistic would be that the pentester's action space is mult-dimensional and includes choosing an address and exploit/scan/etc separately. There actually is some support for this built into NASim with the nasim.envs.action.ParameterisedActionSpace action space (see :ref:`actions`), but even using that action space some information about the size of the network is given to the pentester. | ||
|
||
At this stage there is no plans to update NASim to support the no-information action space. This is partially due to time, but also to keep NASim simple and stable and because there are a lot of even better and more realistic environments being developed now (e.g. `CybORG <https://github.com/cage-challenge/CybORG>`_.) | ||
|
||
One avenue for handling changing action space is to use auto-regressive actions as was done by `AlphaStar <https://www.deepmind.com/blog/alphastar-mastering-the-real-time-strategy-game-starcraft-ii>`_. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.