|
10 | 10 | </p> |
11 | 11 |
|
12 | 12 | <p align="center"> |
13 | | -<a href="https://github.com/silverhack/monkey365/issues"><img alt="Issues" src="https://img.shields.io/github/issues/silverhack/monkey365"></a> |
14 | | -<a href="https://github.com/silverhack/monkey365/blob/main/LICENSE"><img src="https://img.shields.io/github/license/silverhack/monkey365" alt="License"></a> |
| 13 | + <a href="https://github.com/silverhack/monkey365/issues"><img alt="Issues" src="https://img.shields.io/github/issues/silverhack/monkey365"></a> |
| 14 | + <a href="https://github.com/silverhack/monkey365/blob/main/LICENSE"><img src="https://img.shields.io/github/license/silverhack/monkey365" alt="License"></a> |
15 | 15 | </p> |
16 | 16 |
|
17 | 17 | <p align="center"> |
18 | 18 | <a href="https://github.com/silverhack/monkey365/releases"><img src="https://img.shields.io/github/downloads/silverhack/monkey365/total?style=flat&logo=powershell&label=GitHub%20Release%20Download" alt="GitHub Downloads"></a> |
19 | 19 | <a href="https://www.powershellgallery.com/packages/monkey365"><img src="https://img.shields.io/powershellgallery/dt/monkey365.svg?style=flat&logo=powershell&label=PSGallery%20Download" alt="PowerShell Gallery Downloads"></a> |
20 | 20 | </p> |
21 | 21 |
|
22 | | -*Monkey365* is an Open Source security tool that can be used to easily conduct not only Microsoft 365, but also Azure subscriptions and Microsoft Entra ID security configuration reviews without the significant overhead of learning tool APIs or complex admin panels from the start. To help with this effort, Monkey365 also provides several ways to identify security gaps in the desired tenant setup and configuration. Monkey365 provides valuable recommendations on how to best configure those settings to get the most out of your Microsoft 365 tenant or Azure subscription. |
| 22 | +Monkey365 is an open-source security assessment tool for Microsoft 365, Azure, and Microsoft Entra ID. It helps administrators, consultants, and security professionals identify misconfigurations, review cloud security posture, and evaluate environments against industry security best practices and compliance standards. |
| 23 | + |
| 24 | +Monkey365 is designed to simplify Microsoft cloud security assessments without requiring users to learn complex APIs or navigate multiple administration portals. |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +# Features |
| 29 | + |
| 30 | +- Self-contained PowerShell module with bundled dependencies |
| 31 | +- No external module installation required |
| 32 | +- No additional Microsoft PowerShell modules required |
| 33 | +- Security posture assessment for Microsoft 365, Azure, and Microsoft Entra ID |
| 34 | +- CIS benchmark and compliance checks |
| 35 | +- HTML, JSON, and CSV reporting |
| 36 | +- Support for Azure Public, China, and Government cloud environments |
| 37 | +- Collector-based and extensible architecture |
| 38 | +- Easy deployment across workstations, jump boxes, and assessment environments |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +# Quick Start |
| 43 | + |
| 44 | +Install Monkey365 from the PowerShell Gallery: |
| 45 | + |
| 46 | +```powershell |
| 47 | +Install-Module -Name monkey365 -Scope CurrentUser |
| 48 | +``` |
| 49 | + |
| 50 | +Import the module: |
| 51 | + |
| 52 | +```powershell |
| 53 | +Import-Module monkey365 |
| 54 | +``` |
| 55 | + |
| 56 | +Run a basic assessment: |
| 57 | + |
| 58 | +```powershell |
| 59 | +$options = @{ |
| 60 | + Instance = 'Microsoft365'; |
| 61 | + Collect = 'SharePointOnline'; |
| 62 | + PromptBehavior = 'SelectAccount'; |
| 63 | + IncludeEntraID = $true; |
| 64 | + ExportTo = 'HTML'; |
| 65 | +} |
| 66 | +$assets = Invoke-Monkey365 @options |
| 67 | +``` |
| 68 | + |
| 69 | +Get available options and examples: |
| 70 | + |
| 71 | +```powershell |
| 72 | +Get-Help Invoke-Monkey365 -Detailed |
| 73 | +``` |
| 74 | + |
| 75 | +--- |
23 | 76 |
|
24 | 77 | # Introduction |
25 | 78 |
|
26 | | -Monkey365 is a collector-based PowerShell module that can be used to review the security posture of your cloud environment. With Monkey365 you can scan for potential misconfigurations and security issues in public cloud accounts according to security best practices and compliance standards, across Azure, Microsoft Entra ID, and Microsoft 365 core applications. |
| 79 | +Monkey365 is a collector-based PowerShell module used to review the security posture of cloud environments. It scans Microsoft 365, Azure, and Microsoft Entra ID for potential security issues, configuration weaknesses, and deviations from security best practices. |
| 80 | + |
| 81 | +The tool provides recommendations to help organizations strengthen their cloud security posture and improve compliance readiness. |
| 82 | + |
| 83 | +--- |
27 | 84 |
|
28 | | -## Installation |
| 85 | +# Installation |
29 | 86 |
|
30 | | -### PowerShell Gallery |
| 87 | +## PowerShell Gallery |
31 | 88 |
|
32 | | -You can install Monkey365 using the built-in `Install-Module` command. The examples below will install Monkey365 in your <a href="https://learn.microsoft.com/en-us/powershell/module/powershellget/install-module?view=powershellget-3.x#-scope" target="_blank">installation scope</a> depending on your PowerShell version. You can control this using the `-Scope <AllUsers/CurrentUser>` parameter. |
| 89 | +Install the latest stable version: |
33 | 90 |
|
34 | | -``` powershell |
| 91 | +```powershell |
35 | 92 | Install-Module -Name monkey365 -Scope CurrentUser |
36 | 93 | ``` |
37 | 94 |
|
38 | | -To install a beta version, you can use the following command: |
| 95 | +Install the latest prerelease version: |
39 | 96 |
|
40 | | -``` powershell |
| 97 | +```powershell |
41 | 98 | Install-Module -Name monkey365 -Scope CurrentUser -AllowPrerelease |
42 | 99 | ``` |
43 | 100 |
|
44 | | -To update monkey365: |
| 101 | +Update Monkey365: |
45 | 102 |
|
46 | | -``` powershell |
| 103 | +```powershell |
47 | 104 | Update-Module -Name monkey365 -Scope CurrentUser |
48 | 105 | ``` |
49 | 106 |
|
50 | | -To force install monkey365: |
| 107 | +Force reinstall Monkey365: |
51 | 108 |
|
52 | | -``` powershell |
| 109 | +```powershell |
53 | 110 | Install-Module -Name monkey365 -Scope CurrentUser -Force |
54 | 111 | ``` |
55 | 112 |
|
56 | | -### GitHub |
| 113 | +> [!NOTE] |
| 114 | +> Monkey365 is distributed as a self-contained PowerShell module and includes all required dependencies. No additional Microsoft PowerShell modules are required. |
57 | 115 |
|
58 | | -You can download the latest release by clicking [here](https://github.com/silverhack/monkey365/releases). Once downloaded, you must extract the file and extract the files to a suitable directory. |
| 116 | +## GitHub Releases |
59 | 117 |
|
60 | | -Once downloaded, you must extract the files to a suitable directory. Once you have unzipped the zip file, you can use the PowerShell V3 Unblock-File cmdlet to unblock files: |
| 118 | +Download the latest release from the following page: |
61 | 119 |
|
62 | | -``` powershell |
63 | | -Get-ChildItem -Recurse c:\monkey365 | Unblock-File |
| 120 | +https://github.com/silverhack/monkey365/releases |
| 121 | + |
| 122 | +After downloading the release package, extract the archive to a suitable directory. |
| 123 | + |
| 124 | +Use the PowerShell `Unblock-File` cmdlet to unblock extracted files if required: |
| 125 | + |
| 126 | +```powershell |
| 127 | +Get-ChildItem -Recurse C:\monkey365 | Unblock-File |
64 | 128 | ``` |
65 | 129 |
|
66 | | -Once you have installed the monkey365 module on your system, you will likely want to import the module with the Import-Module cmdlet. Assuming that Monkey365 is located in the ```PSModulePath```, PowerShell would load monkey365 into active memory: |
67 | | -``` powershell |
| 130 | +Import the module: |
| 131 | + |
| 132 | +```powershell |
68 | 133 | Import-Module monkey365 |
69 | 134 | ``` |
70 | | -If Monkey365 is not located on a ```PSModulePath``` path, you can use an explicit path to import: |
71 | | -``` powershell |
| 135 | + |
| 136 | +If Monkey365 is not located in a `PSModulePath` directory, import it using an explicit path: |
| 137 | + |
| 138 | +```powershell |
72 | 139 | Import-Module C:\temp\monkey365 |
73 | 140 | ``` |
74 | | -You can also use the ```Force``` parameter in case you want to reimport the Monkey365 module into the same session |
75 | | -``` powershell |
| 141 | + |
| 142 | +Reimport the module into the current PowerShell session: |
| 143 | + |
| 144 | +```powershell |
76 | 145 | Import-Module C:\temp\monkey365 -Force |
77 | 146 | ``` |
78 | 147 |
|
79 | | -## Basic Usage |
| 148 | +--- |
80 | 149 |
|
81 | | -The following command will provide the list of available command line options: |
| 150 | +# Basic Usage |
82 | 151 |
|
83 | | -``` powershell |
| 152 | +Display available command options: |
| 153 | + |
| 154 | +```powershell |
84 | 155 | Get-Help Invoke-Monkey365 |
85 | 156 | ``` |
86 | 157 |
|
87 | | -To get a list of examples use: |
| 158 | +Display usage examples: |
88 | 159 |
|
89 | | -``` powershell |
| 160 | +```powershell |
90 | 161 | Get-Help Invoke-Monkey365 -Examples |
91 | 162 | ``` |
92 | 163 |
|
93 | | -To get a list of all options and examples with detailed info use: |
94 | | - |
| 164 | +Display detailed help information: |
95 | 165 |
|
96 | | -``` powershell |
| 166 | +```powershell |
97 | 167 | Get-Help Invoke-Monkey365 -Detailed |
98 | 168 | ``` |
99 | 169 |
|
100 | | -The following example will retrieve data and metadata from Azure AD and SharePoint Online and then print results. If credentials are not supplied, Monkey365 will prompt for credentials. |
101 | | - |
| 170 | +Example assessment: |
102 | 171 |
|
103 | | -``` powershell |
| 172 | +```powershell |
104 | 173 | $options = @{ |
105 | | - Instance = 'Microsoft365'; |
106 | | - Collect = 'ExchangeOnline'; |
107 | | - PromptBehavior = 'SelectAccount'; |
108 | | - IncludeEntraID = $true; |
109 | | - ExportTo = 'CSV'; |
| 174 | + Instance = 'Microsoft365' |
| 175 | + Collect = 'ExchangeOnline' |
| 176 | + PromptBehavior = 'SelectAccount' |
| 177 | + IncludeEntraID = $true |
| 178 | + ExportTo = 'HTML' |
110 | 179 | } |
| 180 | +
|
111 | 181 | Invoke-Monkey365 @options |
112 | 182 | ``` |
113 | 183 |
|
114 | | -### Running Monkey365 in a National or Gov Cloud Environments |
| 184 | +If credentials are not supplied, Monkey365 prompts for authentication. |
115 | 185 |
|
116 | | -The `-Environment` parameter can be used on `Invoke-Monkey365` to specify the name of the cloud environment to connect to. By default the global cloud (AzurePublic) is used. |
| 186 | +--- |
117 | 187 |
|
118 | | -Allowed values include: |
| 188 | +# Running Monkey365 in National or Government Cloud Environments |
119 | 189 |
|
120 | | -- AzurePublic (default, if `Environment` parameter is not specified) |
121 | | -- AzureChina |
122 | | -- AzureUSGovernment |
| 190 | +Use the `-Environment` parameter with `Invoke-Monkey365` to specify the target cloud environment. |
| 191 | + |
| 192 | +Supported environments: |
| 193 | + |
| 194 | +- `AzurePublic` (default) |
| 195 | +- `AzureChina` |
| 196 | +- `AzureUSGovernment` |
| 197 | + |
| 198 | +Example: |
123 | 199 |
|
124 | 200 | ```powershell |
125 | 201 | $options = @{ |
126 | | - Environment = "AzureUSGovernment"; |
127 | | - Instance = 'Microsoft365'; |
128 | | - Collect = @('ExchangeOnline','SharePointOnline'); |
129 | | - PromptBehavior = 'SelectAccount'; |
130 | | - IncludeEntraID = $true; |
131 | | - ExportTo = "JSON","HTML"; |
| 202 | + Environment = 'AzureUSGovernment' |
| 203 | + Instance = 'Microsoft365' |
| 204 | + Collect = @('ExchangeOnline', 'SharePointOnline') |
| 205 | + PromptBehavior = 'SelectAccount' |
| 206 | + IncludeEntraID = $true |
| 207 | + ExportTo = @('JSON', 'HTML') |
132 | 208 | } |
| 209 | +
|
133 | 210 | Invoke-Monkey365 @options |
134 | 211 | ``` |
135 | 212 |
|
136 | | -## Regulatory compliance checks |
| 213 | +--- |
137 | 214 |
|
138 | | -Monkey365 helps streamline the process of performing not only Microsoft 365, but also Azure subscriptions and Microsoft Entra ID Security Reviews. |
| 215 | +# Regulatory Compliance Checks |
139 | 216 |
|
140 | | -160+ checks covering industry defined security best practices for Microsoft 365, Azure and Entra ID. |
| 217 | +Monkey365 helps streamline Microsoft 365, Azure, and Microsoft Entra ID security reviews through hundreds of built-in checks aligned with industry security best practices. |
141 | 218 |
|
142 | | -Monkey365 will help consultants to assess cloud environment and to analyze the risk factors according to controls and best practices. The report will contain structured data for quick checking and verification of the results. |
| 219 | +The tool helps consultants, administrators, and security teams identify security gaps, validate tenant configurations, and assess risk exposure across cloud environments. |
| 220 | + |
| 221 | +Assessment reports include structured and actionable data for rapid analysis and verification. |
143 | 222 |
|
144 | 223 | <p align="center"> |
145 | 224 | <img src="https://silverhack.github.io/monkey365/assets/images/htmlreport.png" /> |
146 | 225 | </p> |
147 | 226 |
|
148 | | -## Supported standards |
| 227 | +--- |
| 228 | + |
| 229 | +# Supported Standards |
| 230 | + |
| 231 | +By default, the HTML report displays CIS (Center for Internet Security) benchmark mappings for Microsoft Azure and Microsoft 365 environments. |
| 232 | + |
| 233 | +Currently supported standards include: |
| 234 | + |
| 235 | +- CIS Microsoft Azure Foundations Benchmark v3.0.0 |
| 236 | +- CIS Microsoft Azure Database Services Benchmark v2.0.0 |
| 237 | +- CIS Microsoft Azure Compute Services Benchmark v2.0.0 |
| 238 | +- CIS Microsoft 365 Foundations Benchmark v3.0.0 |
| 239 | +- CIS Microsoft 365 Foundations Benchmark v4.0.0 |
| 240 | +- CIS Microsoft 365 Foundations Benchmark v5.0.0 |
| 241 | + |
| 242 | +Additional standards and frameworks may be added in future releases, including: |
149 | 243 |
|
150 | | -By default, the HTML report shows you the CIS (Center for Internet Security) Benchmark. The CIS Benchmarks for Azure and Microsoft 365 are guidelines for security and compliance best practices. |
| 244 | +- NIST |
| 245 | +- HIPAA |
| 246 | +- GDPR |
| 247 | +- PCI-DSS |
151 | 248 |
|
152 | | -The following standards are supported by Monkey365: |
| 249 | +--- |
153 | 250 |
|
154 | | -* CIS Microsoft Azure Foundations Benchmark v3.0.0 |
155 | | -* CIS Microsoft Azure Database Services Benchmark v2.0.0 |
156 | | -* CIS Microsoft 365 Foundations Benchmark v3.0.0, v4.0.0 and V5.0.0 |
| 251 | +# Documentation |
157 | 252 |
|
158 | | -More standards will be added in next releases (NIST, HIPAA, GDPR, PCI-DSS, etc..) as they are available. |
| 253 | +Detailed installation guides, advanced usage examples, configuration references, and additional documentation are available at: |
159 | 254 |
|
160 | | -Additional information such as Installation or advanced usage can be found in the following [link](https://silverhack.github.io/monkey365/) |
| 255 | +https://silverhack.github.io/monkey365/ |
161 | 256 |
|
| 257 | +--- |
162 | 258 |
|
163 | 259 | > [!TIP] |
164 | | -> **Give us a Star!** If you find this tool useful, please consider giving it a [star ⭐ on GitHub](https://github.com/silverhack/monkey365)! It helps more people discover the project and keeps it evolving. |
| 260 | +> **Give us a Star!** If you find Monkey365 useful, please consider starring the repository on GitHub. It helps improve visibility and supports ongoing development. |
165 | 261 |
|
| 262 | +--- |
166 | 263 |
|
167 | | -## Star History |
| 264 | +# Star History |
168 | 265 |
|
169 | 266 | <a href="https://www.star-history.com/#silverhack/monkey365&type=date&legend=top-left"> |
170 | | - <picture> |
171 | | - <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&theme=dark&legend=top-left" /> |
172 | | - <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&legend=top-left" /> |
173 | | - <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&legend=top-left" /> |
174 | | - </picture> |
| 267 | + <picture> |
| 268 | + <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&theme=dark&legend=top-left" /> |
| 269 | + <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&legend=top-left" /> |
| 270 | + <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=silverhack/monkey365&type=date&legend=top-left" /> |
| 271 | + </picture> |
175 | 272 | </a> |
0 commit comments