secator 0.0.1__tar.gz → 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of secator might be problematic. Click here for more details.

Files changed (170) hide show
  1. secator-0.1.0/.flake8 +3 -0
  2. secator-0.1.0/.gitignore +136 -0
  3. secator-0.1.0/CONTRIBUTING.md +88 -0
  4. secator-0.1.0/Dockerfile +47 -0
  5. secator-0.1.0/PKG-INFO +379 -0
  6. secator-0.0.1/secator.egg-info/PKG-INFO → secator-0.1.0/README.md +201 -78
  7. secator-0.1.0/SECURITY.md +21 -0
  8. secator-0.1.0/cloudbuild.yaml +12 -0
  9. secator-0.1.0/images/aliases.cast +444 -0
  10. secator-0.1.0/images/aliases.gif +0 -0
  11. secator-0.1.0/images/demo.cast +959 -0
  12. secator-0.1.0/images/demo.gif +0 -0
  13. secator-0.1.0/images/fmt.cast +672 -0
  14. secator-0.1.0/images/fmt.gif +0 -0
  15. secator-0.1.0/images/help.png +0 -0
  16. secator-0.1.0/images/input.cast +319 -0
  17. secator-0.1.0/images/input.gif +0 -0
  18. secator-0.1.0/images/pipe.cast +1310 -0
  19. secator-0.1.0/images/pipe.gif +0 -0
  20. secator-0.1.0/images/short_demo.cast +343 -0
  21. secator-0.1.0/images/short_demo.gif +0 -0
  22. secator-0.1.0/pyproject.toml +83 -0
  23. secator-0.1.0/scripts/download_cves.sh +15 -0
  24. secator-0.1.0/scripts/install.sh +21 -0
  25. secator-0.1.0/scripts/install_asciinema.sh +7 -0
  26. secator-0.1.0/scripts/install_go.sh +25 -0
  27. secator-0.1.0/scripts/install_ruby.sh +11 -0
  28. secator-0.1.0/scripts/msf/exploit_cve.rc +11 -0
  29. secator-0.1.0/scripts/msf/ftp_anonymous.rc +5 -0
  30. secator-0.1.0/scripts/msf/ftp_version.rc +5 -0
  31. secator-0.1.0/scripts/msf/ftp_vsftpd_234_backdoor.rc +5 -0
  32. secator-0.1.0/scripts/msf/redis.rc +4 -0
  33. secator-0.1.0/scripts/msfinstall.sh +6 -0
  34. secator-0.1.0/scripts/stories/STORY.md +81 -0
  35. secator-0.1.0/scripts/stories/aliases.sh +18 -0
  36. secator-0.1.0/scripts/stories/demo.sh +29 -0
  37. secator-0.1.0/scripts/stories/fmt.sh +18 -0
  38. secator-0.1.0/scripts/stories/input.sh +15 -0
  39. secator-0.1.0/scripts/stories/pipe.sh +11 -0
  40. secator-0.1.0/scripts/stories/short_demo.sh +13 -0
  41. secator-0.1.0/secator/.gitignore +162 -0
  42. {secator-0.0.1 → secator-0.1.0}/secator/celery.py +6 -67
  43. {secator-0.0.1 → secator-0.1.0}/secator/cli.py +479 -169
  44. {secator-0.0.1 → secator-0.1.0}/secator/decorators.py +43 -6
  45. {secator-0.0.1 → secator-0.1.0}/secator/definitions.py +36 -18
  46. {secator-0.0.1 → secator-0.1.0}/secator/exporters/csv.py +1 -2
  47. {secator-0.0.1 → secator-0.1.0}/secator/exporters/gdrive.py +1 -1
  48. {secator-0.0.1 → secator-0.1.0}/secator/exporters/json.py +1 -2
  49. {secator-0.0.1 → secator-0.1.0}/secator/exporters/txt.py +1 -2
  50. {secator-0.0.1 → secator-0.1.0}/secator/hooks/mongodb.py +12 -12
  51. {secator-0.0.1 → secator-0.1.0}/secator/report.py +2 -14
  52. {secator-0.0.1 → secator-0.1.0}/secator/rich.py +1 -2
  53. {secator-0.0.1 → secator-0.1.0}/secator/runners/_base.py +61 -21
  54. {secator-0.0.1 → secator-0.1.0}/secator/runners/_helpers.py +18 -17
  55. {secator-0.0.1 → secator-0.1.0}/secator/runners/command.py +69 -33
  56. {secator-0.0.1 → secator-0.1.0}/secator/runners/scan.py +3 -1
  57. {secator-0.0.1 → secator-0.1.0}/secator/runners/task.py +3 -2
  58. {secator-0.0.1 → secator-0.1.0}/secator/runners/workflow.py +12 -10
  59. {secator-0.0.1 → secator-0.1.0}/secator/tasks/_categories.py +9 -9
  60. {secator-0.0.1 → secator-0.1.0}/secator/tasks/cariddi.py +1 -1
  61. {secator-0.0.1 → secator-0.1.0}/secator/tasks/dalfox.py +1 -0
  62. {secator-0.0.1 → secator-0.1.0}/secator/tasks/dirsearch.py +5 -7
  63. {secator-0.0.1 → secator-0.1.0}/secator/tasks/feroxbuster.py +5 -7
  64. {secator-0.0.1 → secator-0.1.0}/secator/tasks/ffuf.py +1 -2
  65. {secator-0.0.1 → secator-0.1.0}/secator/tasks/gau.py +0 -4
  66. {secator-0.0.1 → secator-0.1.0}/secator/tasks/gf.py +2 -1
  67. secator-0.1.0/secator/tasks/grype.py +78 -0
  68. {secator-0.0.1 → secator-0.1.0}/secator/tasks/h8mail.py +5 -6
  69. {secator-0.0.1 → secator-0.1.0}/secator/tasks/httpx.py +23 -18
  70. {secator-0.0.1 → secator-0.1.0}/secator/tasks/katana.py +9 -14
  71. {secator-0.0.1 → secator-0.1.0}/secator/tasks/maigret.py +3 -3
  72. {secator-0.0.1 → secator-0.1.0}/secator/tasks/msfconsole.py +2 -0
  73. {secator-0.0.1 → secator-0.1.0}/secator/tasks/nmap.py +14 -17
  74. {secator-0.0.1 → secator-0.1.0}/secator/tasks/nuclei.py +3 -3
  75. {secator-0.0.1 → secator-0.1.0}/secator/tasks/searchsploit.py +3 -2
  76. {secator-0.0.1 → secator-0.1.0}/secator/tasks/wpscan.py +10 -12
  77. {secator-0.0.1 → secator-0.1.0}/secator/utils.py +39 -80
  78. {secator-0.0.1 → secator-0.1.0}/secator/utils_test.py +2 -2
  79. secator-0.1.0/tests/fixtures/h8mail_breach.txt +1 -0
  80. secator-0.1.0/tests/fixtures/msfconsole_input.rc +4 -0
  81. secator-0.1.0/tests/fixtures/nmap_output.xml +33 -0
  82. {secator-0.0.1 → secator-0.1.0}/tests/integration/outputs.py +1 -1
  83. secator-0.1.0/tests/integration/setup.sh +4 -0
  84. secator-0.1.0/tests/integration/teardown.sh +4 -0
  85. {secator-0.0.1 → secator-0.1.0}/tests/integration/test_scans.py +3 -3
  86. secator-0.1.0/tests/integration/wordlist.txt +14 -0
  87. secator-0.1.0/tests/integration/wordlist_dns.txt +4 -0
  88. secator-0.1.0/tests/integration/wordpress_toolbox/Dockerfile +17 -0
  89. secator-0.1.0/tests/integration/wordpress_toolbox/Makefile +27 -0
  90. {secator-0.0.1 → secator-0.1.0}/tests/performance/loadtester.py +0 -1
  91. {secator-0.0.1 → secator-0.1.0}/tests/unit/test_celery.py +2 -2
  92. {secator-0.0.1 → secator-0.1.0}/tests/unit/test_serializers.py +0 -1
  93. {secator-0.0.1 → secator-0.1.0}/tests/unit/test_tasks.py +3 -3
  94. {secator-0.0.1 → secator-0.1.0}/tests/unit/test_workflows.py +2 -23
  95. secator-0.0.1/MANIFEST.in +0 -3
  96. secator-0.0.1/PKG-INFO +0 -199
  97. secator-0.0.1/README.md +0 -149
  98. secator-0.0.1/secator/tasks/grype.py +0 -79
  99. secator-0.0.1/secator.egg-info/SOURCES.txt +0 -118
  100. secator-0.0.1/secator.egg-info/dependency_links.txt +0 -1
  101. secator-0.0.1/secator.egg-info/entry_points.txt +0 -2
  102. secator-0.0.1/secator.egg-info/requires.txt +0 -37
  103. secator-0.0.1/secator.egg-info/top_level.txt +0 -2
  104. secator-0.0.1/setup.cfg +0 -4
  105. secator-0.0.1/setup.py +0 -69
  106. {secator-0.0.1 → secator-0.1.0}/LICENSE +0 -0
  107. {secator-0.0.1 → secator-0.1.0}/secator/__init__.py +0 -0
  108. {secator-0.0.1 → secator-0.1.0}/secator/config.py +0 -0
  109. {secator-0.0.1 → secator-0.1.0}/secator/configs/__init__.py +0 -0
  110. {secator-0.0.1 → secator-0.1.0}/secator/configs/profiles/__init__.py +0 -0
  111. {secator-0.0.1 → secator-0.1.0}/secator/configs/profiles/aggressive.yaml +0 -0
  112. {secator-0.0.1 → secator-0.1.0}/secator/configs/profiles/default.yaml +0 -0
  113. {secator-0.0.1 → secator-0.1.0}/secator/configs/profiles/stealth.yaml +0 -0
  114. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/__init__.py +0 -0
  115. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/domain.yaml +0 -0
  116. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/host.yaml +0 -0
  117. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/network.yaml +0 -0
  118. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/subdomain.yaml +0 -0
  119. {secator-0.0.1 → secator-0.1.0}/secator/configs/scans/url.yaml +0 -0
  120. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/__init__.py +0 -0
  121. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/cidr_recon.yaml +0 -0
  122. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/code_scan.yaml +0 -0
  123. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/host_recon.yaml +0 -0
  124. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/port_scan.yaml +0 -0
  125. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/subdomain_recon.yaml +0 -0
  126. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/url_crawl.yaml +0 -0
  127. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/url_dirsearch.yaml +0 -0
  128. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/url_fuzz.yaml +0 -0
  129. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/url_nuclei.yaml +0 -0
  130. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/url_vuln.yaml +0 -0
  131. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/user_hunt.yaml +0 -0
  132. {secator-0.0.1 → secator-0.1.0}/secator/configs/workflows/wordpress.yaml +0 -0
  133. {secator-0.0.1 → secator-0.1.0}/secator/exporters/__init__.py +0 -0
  134. {secator-0.0.1 → secator-0.1.0}/secator/exporters/_base.py +0 -0
  135. {secator-0.0.1 → secator-0.1.0}/secator/exporters/table.py +0 -0
  136. {secator-0.0.1 → secator-0.1.0}/secator/hooks/__init__.py +0 -0
  137. {secator-0.0.1 → secator-0.1.0}/secator/output_types/__init__.py +0 -0
  138. {secator-0.0.1 → secator-0.1.0}/secator/output_types/_base.py +0 -0
  139. {secator-0.0.1 → secator-0.1.0}/secator/output_types/exploit.py +0 -0
  140. {secator-0.0.1 → secator-0.1.0}/secator/output_types/ip.py +0 -0
  141. {secator-0.0.1 → secator-0.1.0}/secator/output_types/port.py +0 -0
  142. {secator-0.0.1 → secator-0.1.0}/secator/output_types/progress.py +0 -0
  143. {secator-0.0.1 → secator-0.1.0}/secator/output_types/record.py +0 -0
  144. {secator-0.0.1 → secator-0.1.0}/secator/output_types/subdomain.py +0 -0
  145. {secator-0.0.1 → secator-0.1.0}/secator/output_types/tag.py +0 -0
  146. {secator-0.0.1 → secator-0.1.0}/secator/output_types/target.py +0 -0
  147. {secator-0.0.1 → secator-0.1.0}/secator/output_types/url.py +0 -0
  148. {secator-0.0.1 → secator-0.1.0}/secator/output_types/user_account.py +0 -0
  149. {secator-0.0.1 → secator-0.1.0}/secator/output_types/vulnerability.py +0 -0
  150. {secator-0.0.1 → secator-0.1.0}/secator/runners/__init__.py +0 -0
  151. {secator-0.0.1 → secator-0.1.0}/secator/serializers/__init__.py +0 -0
  152. {secator-0.0.1 → secator-0.1.0}/secator/serializers/dataclass.py +0 -0
  153. {secator-0.0.1 → secator-0.1.0}/secator/serializers/json.py +0 -0
  154. {secator-0.0.1 → secator-0.1.0}/secator/serializers/regex.py +0 -0
  155. {secator-0.0.1 → secator-0.1.0}/secator/tasks/__init__.py +0 -0
  156. {secator-0.0.1 → secator-0.1.0}/secator/tasks/dnsx.py +0 -0
  157. {secator-0.0.1 → secator-0.1.0}/secator/tasks/dnsxbrute.py +0 -0
  158. {secator-0.0.1 → secator-0.1.0}/secator/tasks/fping.py +0 -0
  159. {secator-0.0.1 → secator-0.1.0}/secator/tasks/gospider.py +0 -0
  160. {secator-0.0.1 → secator-0.1.0}/secator/tasks/mapcidr.py +0 -0
  161. {secator-0.0.1 → secator-0.1.0}/secator/tasks/naabu.py +0 -0
  162. {secator-0.0.1 → secator-0.1.0}/secator/tasks/subfinder.py +0 -0
  163. {secator-0.0.1 → secator-0.1.0}/tests/__init__.py +0 -0
  164. {secator-0.0.1 → secator-0.1.0}/tests/integration/__init__.py +0 -0
  165. {secator-0.0.1 → secator-0.1.0}/tests/integration/inputs.py +0 -0
  166. {secator-0.0.1 → secator-0.1.0}/tests/integration/test_tasks.py +0 -0
  167. {secator-0.0.1 → secator-0.1.0}/tests/integration/test_workflows.py +0 -0
  168. {secator-0.0.1 → secator-0.1.0}/tests/performance/__init__.py +0 -0
  169. {secator-0.0.1 → secator-0.1.0}/tests/unit/__init__.py +0 -0
  170. {secator-0.0.1 → secator-0.1.0}/tests/unit/test_scans.py +0 -0
secator-0.1.0/.flake8 ADDED
@@ -0,0 +1,3 @@
1
+ [flake8]
2
+ extend-ignore = W191,E101,E128,E265,W605
3
+ max-line-length = 120
@@ -0,0 +1,136 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ #*.txt
6
+ #*.sh
7
+
8
+ # Others
9
+ *.json
10
+ *.yml
11
+ resume.cfg
12
+
13
+ # C extensions
14
+ *.so
15
+
16
+ # Distribution / packaging
17
+ .Python
18
+ build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ wheels/
30
+ pip-wheel-metadata/
31
+ share/python-wheels/
32
+ *.egg-info/
33
+ .installed.cfg
34
+ *.egg
35
+ MANIFEST
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .nox/
51
+ .coverage
52
+ .coverage.*
53
+ .cache
54
+ nosetests.xml
55
+ coverage.xml
56
+ *.cover
57
+ *.py,cover
58
+ .hypothesis/
59
+ .pytest_cache/
60
+
61
+ # Translations
62
+ *.mo
63
+ *.pot
64
+
65
+ # Django stuff:
66
+ *.log
67
+ local_settings.py
68
+ db.sqlite3
69
+ db.sqlite3-journal
70
+
71
+ # Flask stuff:
72
+ instance/
73
+ .webassets-cache
74
+
75
+ # Scrapy stuff:
76
+ .scrapy
77
+
78
+ # Sphinx documentation
79
+ docs/_build/
80
+
81
+ # PyBuilder
82
+ target/
83
+
84
+ # Jupyter Notebook
85
+ .ipynb_checkpoints
86
+
87
+ # IPython
88
+ profile_default/
89
+ ipython_config.py
90
+
91
+ # pyenv
92
+ .python-version
93
+
94
+ # pipenv
95
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
96
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
97
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
98
+ # install all needed dependencies.
99
+ #Pipfile.lock
100
+
101
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
102
+ __pypackages__/
103
+
104
+ # Celery stuff
105
+ celerybeat-schedule
106
+ celerybeat.pid
107
+
108
+ # SageMath parsed files
109
+ *.sage.py
110
+
111
+ # Environments
112
+ .env
113
+ .venv
114
+ env/
115
+ venv/
116
+ ENV/
117
+ env.bak/
118
+ venv.bak/
119
+
120
+ # Spyder project settings
121
+ .spyderproject
122
+ .spyproject
123
+
124
+ # Rope project settings
125
+ .ropeproject
126
+
127
+ # mkdocs documentation
128
+ /site
129
+
130
+ # mypy
131
+ .mypy_cache/
132
+ .dmypy.json
133
+ dmypy.json
134
+
135
+ # Pyre type checker
136
+ .pyre/
@@ -0,0 +1,88 @@
1
+
2
+ Please read this document before opening a new pull request.
3
+
4
+ ## Create a dev environment
5
+
6
+ To create a dev environment, you can either use `pipx` or `virtualenv` + `pip`:
7
+
8
+ <details>
9
+ <summary>Pipx</summary>
10
+
11
+ ```sh
12
+ git clone https://github.com/freelabz/secator
13
+ cd secator
14
+ pipx install -e .[dev]
15
+ ```
16
+
17
+ </details>
18
+
19
+ <details>
20
+ <summary>Pip</summary>
21
+
22
+ ```sh
23
+ git clone https://github.com/freelabz/secator
24
+ cd secator
25
+ virtualenv .venv
26
+ source .venv/bin/activate
27
+ pip install -e .[dev]
28
+ ```
29
+
30
+ </details>
31
+
32
+
33
+ ## Contribute a new task
34
+
35
+ To contribute a new task back to `secator` repository, it needs to validate some requirements:
36
+
37
+ - Verify your **task class definition**:
38
+ - It MUST have an `input_type` key.
39
+ - It MUST have an `output_types` key.
40
+ - It MUST have an `install_cmd` key.
41
+
42
+ - Add your **task definition** to the `tasks/` directory. If your task class is named `MyAwesomeTask`, call it `my_awesome_task.py`
43
+
44
+ - [Optional] Add your output type(s) to `secator`:
45
+ - Add your type(s) definition(s) to `output_types/` directory. If your output type is named `MyAwesomeType`, call the file `my_awesome_type.py`
46
+ - Import your type class in `__init__.py`
47
+
48
+ - Add a **unit test** for your task:
49
+ - `tests/fixtures/<TASK_NAME>_output.(json|xml|rc|txt)`: add a fixture for the original command output.
50
+ - Make sure it is anonymized from PII data
51
+ - Run `secator x <TASK_NAME> <HOST>` to make sure the output is shown correctly on the CLI. Also run with `-json` to
52
+ verify the output schema
53
+ - This fixture will be used by unit tests to emulate data sent by your task
54
+ - Validate your unit test by running: `secator test unit --task <TASK_NAME> --test test_tasks`
55
+
56
+ - Add an **integration test** for your task:
57
+ - `tests/integration/inputs.py` - to modify integration inputs
58
+ - `tests/integration/outputs.py` - to modify expected outputs
59
+ - Validate your integration test by running: `secator test integration --task <TASK_NAME> --test test_tasks`
60
+
61
+ - Run the lint tests: `secator test lint`
62
+
63
+ - Open a new pull request with your changes.
64
+
65
+ ### New workflow / scan
66
+
67
+ - Add your workflow / scan YAML definition `awesome_work.yml` to `configs/workflows/`
68
+
69
+ - Make sure the `name` YAML key is the same as your workflow's file name.
70
+
71
+ - Make sure the `type` YAML key is set to `workflow` or `scan`.
72
+
73
+ - Add some integration tests:
74
+ - `inputs.py`: add inputs for your workflow
75
+ - `outputs.py`: add some expected outputs of your workflow
76
+
77
+ - Run the integration tests:
78
+ - For workflows: `secator test integration --test test_workflows --workflows <WORKFLOW_NAME>`
79
+ - For scans: `secator test integration --test test_scans --scans <SCAN_NAME>`
80
+
81
+ - Open a new pull request with your changes.
82
+
83
+ ## Other code
84
+
85
+ - Make sure you pass the `lint` and `unit` tests:
86
+ - `secator test unit`
87
+ - `secator test lint`
88
+ - Open a new pull request with your changes.
@@ -0,0 +1,47 @@
1
+ FROM kalilinux/kali-rolling
2
+
3
+ ENV PATH="${PATH}:/root/go/bin:/root/.local/bin"
4
+
5
+ RUN apt update -y && \
6
+ apt install -y \
7
+ curl \
8
+ gcc \
9
+ git \
10
+ golang-go \
11
+ make \
12
+ pipx \
13
+ python3 \
14
+ python3-pip \
15
+ python3-venv \
16
+ ruby-full \
17
+ rubygems \
18
+ sudo \
19
+ vim \
20
+ wget \
21
+ chromium \
22
+ jq \
23
+ openssl \
24
+ proxychains \
25
+ proxychains-ng \
26
+ && rm -rf /var/lib/apt/lists/*
27
+
28
+ # Install Metasploit framework
29
+ RUN curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
30
+ RUN chmod 755 msfinstall
31
+ RUN ./msfinstall
32
+
33
+ # Copy code
34
+ WORKDIR /code
35
+ COPY . /code/
36
+
37
+ # Install secator
38
+ RUN pipx install .
39
+ RUN secator install tools
40
+ RUN secator install addons worker
41
+ RUN secator install addons google
42
+ RUN secator install addons mongodb
43
+ RUN secator install addons redis
44
+ RUN secator install addons dev
45
+
46
+ # Set entrypoint
47
+ ENTRYPOINT ["secator"]
secator-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,379 @@
1
+ Metadata-Version: 2.3
2
+ Name: secator
3
+ Version: 0.1.0
4
+ Summary: The pentester's swiss knife.
5
+ Project-URL: Homepage, https://github.com/freelabz/secator
6
+ Project-URL: Issues, https://github.com/freelabz/secator/issues
7
+ Author-email: FreeLabz <sales@freelabz.com>
8
+ License-File: LICENSE
9
+ Keywords: automation,cybersecurity,pentest,recon,vulnerability
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Information Technology
13
+ Classifier: License :: Free for non-commercial use
14
+ Classifier: Operating System :: Unix
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Requires-Dist: bs4<1
22
+ Requires-Dist: celery<6
23
+ Requires-Dist: cpe<2
24
+ Requires-Dist: dotmap<2
25
+ Requires-Dist: free-proxy<2
26
+ Requires-Dist: furl<3
27
+ Requires-Dist: humanize<5
28
+ Requires-Dist: ifaddr<1
29
+ Requires-Dist: jinja2<4
30
+ Requires-Dist: python-dotenv<2
31
+ Requires-Dist: pyyaml<7
32
+ Requires-Dist: requests<3
33
+ Requires-Dist: rich-click<1.7
34
+ Requires-Dist: rich<14
35
+ Requires-Dist: validators<1
36
+ Requires-Dist: xmltodict<1
37
+ Provides-Extra: dev
38
+ Requires-Dist: asciinema-automation<1; extra == 'dev'
39
+ Requires-Dist: coverage<8; extra == 'dev'
40
+ Requires-Dist: flake8<8; extra == 'dev'
41
+ Requires-Dist: watchdog<3; extra == 'dev'
42
+ Provides-Extra: google
43
+ Requires-Dist: google-api-python-client<3; extra == 'google'
44
+ Requires-Dist: gspread<7; extra == 'google'
45
+ Provides-Extra: mongodb
46
+ Requires-Dist: pymongo<5; extra == 'mongodb'
47
+ Provides-Extra: redis
48
+ Requires-Dist: redis<6; extra == 'redis'
49
+ Provides-Extra: trace
50
+ Requires-Dist: memray<2; extra == 'trace'
51
+ Requires-Dist: pyinstrument<5; extra == 'trace'
52
+ Provides-Extra: worker
53
+ Requires-Dist: eventlet<1; extra == 'worker'
54
+ Requires-Dist: flower<3; extra == 'worker'
55
+ Requires-Dist: gevent<25; extra == 'worker'
56
+ Description-Content-Type: text/markdown
57
+
58
+ <h1 align="center">
59
+ <img src="https://github.com/freelabz/secator/assets/9629314/ee203af4-e853-439a-af01-edeabfc4bf07/" width="400">
60
+ </h1>
61
+
62
+ <h4 align="center">The pentester's swiss knife.</h4>
63
+
64
+ <p align="center">
65
+ <!-- <a href="https://goreportcard.com/report/github.com/freelabz/secator"><img src="https://goreportcard.com/badge/github.com/freelabz/secator"></a> -->
66
+ <img src="https://img.shields.io/badge/python-3.6-blue.svg">
67
+ <a href="https://github.com/freelabz/secator/releases"><img src="https://img.shields.io/github/release/freelabz/secator"></a>
68
+ <a href="https://github.com/freelabz/secator/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-brightgreen.svg"></a>
69
+ <a href="https://pypi.org/project/secator/"><img src="https://img.shields.io/pypi/dm/secator"></a>
70
+ <a href="https://twitter.com/freelabz"><img src="https://img.shields.io/twitter/follow/freelabz.svg?logo=twitter"></a>
71
+ <a href="https://youtube.com/@FreeLabz"><img src="https://img.shields.io/youtube/channel/subscribers/UCu-F6SpU0h2NP18zBBP04cw?style=social&label=Subscribe%20%40FreeLabz"></a>
72
+ <!-- <a href="https://discord.gg/freelabz"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a> -->
73
+ </p>
74
+
75
+
76
+ <p align="center">
77
+ <a href="#features">Features</a> •
78
+ <a href="#supported-commands">Supported commands</a> •
79
+ <a href="#install-secator">Installation</a> •
80
+ <a href="#usage">Usage</a> •
81
+ <a href="https://docs.freelabz.com">Documentation</a>
82
+ </p>
83
+
84
+ `secator` is a task and workflow runner used for security assessments. It supports dozens of well-known security tools
85
+ and it is designed to improve productivity for pentesters and security researchers.
86
+
87
+ # Features
88
+
89
+ ![](images/short_demo.gif)
90
+
91
+ * **Curated list of commands**
92
+
93
+ * **Unified input options**
94
+
95
+ * **Unified output schema**
96
+
97
+ * **CLI and library usage**
98
+
99
+ * **Distributed options with Celery**
100
+
101
+ * **Complexity from simple tasks to complex workflows**
102
+
103
+ * **Customizable**
104
+
105
+
106
+ ## Supported tools
107
+
108
+ `secator` integrates the following tools:
109
+
110
+ | Name | Description | Category |
111
+ |---------------------------------------------------------------|--------------------------------------------------------------------------------|----------------|
112
+ | [httpx](https://github.com/projectdiscovery/httpx) | Fast HTTP prober. | `http` |
113
+ | [cariddi](https://github.com/edoardottt/cariddi) | Fast crawler and endpoint secrets / api keys / tokens matcher. | `http/crawler` |
114
+ | [gau](https://github.com/lc/gau) | Offline URL crawler (Alien Vault, The Wayback Machine, Common Crawl, URLScan). | `http/crawler` |
115
+ | [gospider](https://github.com/jaeles-project/gospider) | Fast web spider written in Go. | `http/crawler` |
116
+ | [katana](https://github.com/projectdiscovery/katana) | Next-generation crawling and spidering framework. | `http/crawler` |
117
+ | [dirsearch](https://github.com/maurosoria/dirsearch) | Web path discovery. | `http/fuzzer` |
118
+ | [feroxbuster](https://github.com/epi052/feroxbuster) | Simple, fast, recursive content discovery tool written in Rust. | `http/fuzzer` |
119
+ | [ffuf](https://github.com/ffuf/ffuf) | Fast web fuzzer written in Go. | `http/fuzzer` |
120
+ | [h8mail](https://github.com/khast3x/h8mail) | Email OSINT and breach hunting tool. | `osint` |
121
+ | [dnsx](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit designed for running DNS queries. | `recon/dns` |
122
+ | [dnsxbrute](https://github.com/projectdiscovery/dnsx) | Fast and multi-purpose DNS toolkit designed for running DNS queries (bruteforce mode). | `recon/dns` |
123
+ | [subfinder](https://github.com/projectdiscovery/subfinder) | Fast subdomain finder. | `recon/dns` |
124
+ | [fping](https://fping.org/) | Find alive hosts on local networks. | `recon/ip` |
125
+ | [mapcidr](https://github.com/projectdiscovery/mapcidr) | Expand CIDR ranges into IPs. | `recon/ip` |
126
+ | [naabu](https://github.com/projectdiscovery/naabu) | Fast port discovery tool. | `recon/port` |
127
+ | [maigret](https://github.com/soxoj/maigret) | Hunt for user accounts across many websites. | `recon/user` |
128
+ | [gf](https://github.com/tomnomnom/gf) | A wrapper around grep to avoid typing common patterns. | `tagger` |
129
+ | [grype](https://github.com/anchore/grype) | A vulnerability scanner for container images and filesystems. | `vuln/code` |
130
+ | [dalfox](https://github.com/hahwul/dalfox) | Powerful XSS scanning tool and parameter analyzer. | `vuln/http` |
131
+ | [msfconsole](https://docs.rapid7.com/metasploit/msf-overview) | CLI to access and work with the Metasploit Framework. | `vuln/http` |
132
+ | [wpscan](https://github.com/wpscanteam/wpscan) | WordPress Security Scanner | `vuln/multi` |
133
+ | [nmap](https://github.com/nmap/nmap) | Vulnerability scanner using NSE scripts. | `vuln/multi` |
134
+ | [nuclei](https://github.com/projectdiscovery/nuclei) | Fast and customisable vulnerability scanner based on simple YAML based DSL. | `vuln/multi` |
135
+ | [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Exploit searcher. | `exploit/search` |
136
+
137
+ Feel free to request new tools to be added by opening an issue, but please
138
+ check that the tool complies with our selection criterias before doing so. If it doesn't but you still want to integrate it into `secator`, you can plug it in (see the [dev guide](https://docs.freelabz.com/for-developers/writing-custom-tasks)).
139
+
140
+
141
+ ## Installation
142
+
143
+ ### Installing secator
144
+
145
+ <details>
146
+ <summary>Pipx</summary>
147
+
148
+ ```sh
149
+ pipx install secator
150
+ ```
151
+
152
+ </details>
153
+
154
+ <details>
155
+ <summary>Pip</summary>
156
+
157
+ ```sh
158
+ pip install secator
159
+ ```
160
+
161
+ </details>
162
+
163
+ <details>
164
+ <summary>Bash</summary>
165
+
166
+ ```sh
167
+ wget -O - https://raw.githubusercontent.com/freelabz/secator/main/scripts/install.sh | sh
168
+ ```
169
+
170
+ </details>
171
+
172
+ <details>
173
+ <summary>Docker</summary>
174
+
175
+ ```sh
176
+ docker run -it freelabz/secator --help
177
+ ```
178
+
179
+ </details>
180
+
181
+ <details>
182
+ <summary>Docker Compose</summary>
183
+
184
+ ```sh
185
+ git clone https://github.com/freelabz/secator
186
+ cd secator
187
+ docker-compose up -d
188
+ docker-compose exec secator secator --help
189
+ ```
190
+
191
+ </details>
192
+
193
+ ***Note:*** If you chose the Bash, Docker or Docker Compose installation methods, you can skip the next sections and go straight to [Usage](#usage).
194
+
195
+ ### Installing languages
196
+
197
+ `secator` uses external tools, so you might need to install languages used by those tools assuming they are not already installed on your system.
198
+
199
+ We provide utilities to install required languages if you don't manage them externally:
200
+
201
+ <details>
202
+ <summary>Go</summary>
203
+
204
+ ```sh
205
+ secator install langs go
206
+ ```
207
+
208
+ </details>
209
+
210
+ <details>
211
+ <summary>Ruby</summary>
212
+
213
+ ```sh
214
+ secator install langs ruby
215
+ ```
216
+
217
+ </details>
218
+
219
+ ### Installing tools
220
+
221
+ `secator` does not install any of the external tools it supports by default.
222
+
223
+ We provide utilities to install or update each supported tool which should work on all systems supporting `apt`:
224
+
225
+ <details>
226
+ <summary>All tools</summary>
227
+
228
+ ```sh
229
+ secator install tools
230
+ ```
231
+
232
+ </details>
233
+
234
+ <details>
235
+ <summary>Specific tools</summary>
236
+
237
+ ```sh
238
+ secator install tools <TOOL_NAME>
239
+ ```
240
+
241
+ For instance, to install `httpx`, use:
242
+
243
+ ```sh
244
+ secator install tools httpx
245
+ ```
246
+
247
+ </details>
248
+
249
+ Please make sure you are using the latest available versions for each tool before you run secator or you might run into parsing / formatting issues.
250
+
251
+ ### Installing addons
252
+
253
+ `secator` comes installed with the minimum amount of dependencies.
254
+
255
+ There are several addons available for `secator`:
256
+
257
+ <details>
258
+ <summary>worker</summary>
259
+
260
+ Add support for Celery workers (see [Distributed runs with Celery](https://docs.freelabz.com/in-depth/distributed-runs-with-celery)).
261
+ ```sh
262
+ secator install addons worker
263
+ ```
264
+
265
+ </details>
266
+
267
+
268
+ <details>
269
+ <summary>google</summary>
270
+
271
+ Add support for Google Drive exporter (`-o gdrive`).
272
+
273
+ ```sh
274
+ secator install addons google
275
+ ```
276
+
277
+ </details>
278
+
279
+ <details>
280
+ <summary>mongodb</summary>
281
+
282
+ Add support for MongoDB driver (`-driver mongodb`).
283
+ ```sh
284
+ secator install addons mongodb
285
+ ```
286
+
287
+ </details>
288
+
289
+ <details>
290
+ <summary>redis</summary>
291
+
292
+ Add support for Redis backend (Celery).
293
+
294
+ ```sh
295
+ secator install addons redis
296
+ ```
297
+
298
+ </details>
299
+
300
+ <details>
301
+ <summary>dev</summary>
302
+
303
+ Add development tools like `coverage` and `flake8` required for running tests.
304
+
305
+ ```sh
306
+ secator install addons dev
307
+ ```
308
+
309
+ </details>
310
+
311
+ <details>
312
+ <summary>trace</summary>
313
+
314
+ Add tracing tools like `memray` and `pyinstrument` required for tracing functions.
315
+
316
+ ```sh
317
+ secator install addons trace
318
+ ```
319
+
320
+ </details>
321
+
322
+ ### Checking installation health
323
+
324
+ To figure out which languages or tools are installed on your system (along with their version):
325
+ ```sh
326
+ secator health
327
+ ```
328
+
329
+ ## Usage
330
+ ```sh
331
+ secator --help
332
+ ```
333
+ ![](images/help.png)
334
+
335
+
336
+ ### Usage examples
337
+
338
+ Run a fuzzing task (`ffuf`):
339
+
340
+ ```sh
341
+ secator x ffuf http://testphp.vulnweb.com/FUZZ
342
+ ```
343
+
344
+ Run a url crawl workflow:
345
+
346
+ ```sh
347
+ secator w url_crawl http://testphp.vulnweb.com
348
+ ```
349
+
350
+ Run a host scan:
351
+
352
+ ```sh
353
+ secator s host mydomain.com
354
+ ```
355
+
356
+ and more... to list all tasks / workflows / scans that you can use:
357
+ ```sh
358
+ secator x --help
359
+ secator w --help
360
+ secator s --help
361
+ ```
362
+
363
+ ## Learn more
364
+
365
+ To go deeper with `secator`, check out:
366
+ * Our complete [documentation](https://docs.freelabz.com)
367
+ * Our getting started [tutorial video](https://youtu.be/-JmUTNWQDTQ?si=qpAClDWMXo2zwUK7)
368
+ * Our [Medium post](https://medium.com/p/09333f3d3682)
369
+ * Follow us on social media: [@freelabz](https://twitter.com/freelabz) on Twitter and [@FreeLabz](https://youtube.com/@FreeLabz) on YouTube
370
+
371
+ ## Stats
372
+
373
+ <a href="https://star-history.com/#freelabz/secator&Date">
374
+ <picture>
375
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date&theme=dark" />
376
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
377
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
378
+ </picture>
379
+ </a>