From 94d53ce1e62b58fca1b15b46ef4dade79cbe8d5e Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:51:43 +0100 Subject: [PATCH 001/115] Update README.md --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cae0cd2..b3985f2 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,8 @@ -# Get-bADpasswords -Get insights into the actual strength and quality of passwords in Active Directory. - ![MIT License](https://img.shields.io/badge/License-MIT-green.svg) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) -# Password Strength Insights +# Get-bADpasswords -One Paragraph of project description goes here +Get insights into the actual strength and quality of passwords in Active Directory. ## Getting Started @@ -41,6 +38,7 @@ End with an example of getting some data out of the system or using it for a lit Explain how to run the automated tests for this system + ### Break down into end to end tests Explain what these tests test and why From ef74104c32b57599d0eecc0dcece4970d9bfaa67 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:54:21 +0100 Subject: [PATCH 002/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3985f2..6bad673 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![MIT License](https://img.shields.io/badge/License-MIT-green.svg) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) +[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) # Get-bADpasswords From 9c48e2e0cf3cb96c921d423879f37fa77ca73c0c Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:55:12 +0100 Subject: [PATCH 003/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6bad673..ff60ce9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) +[![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) # Get-bADpasswords From 1920c94be2efe3083a0709b8a8edc2618ac7d9b8 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:57:07 +0100 Subject: [PATCH 004/115] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index ff60ce9..6f3a539 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -[![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) - # Get-bADpasswords +[![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) Get insights into the actual strength and quality of passwords in Active Directory. From 57111642b29c2a64de239c3a5d2a5d53d47001a4 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 10:58:32 +0100 Subject: [PATCH 005/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f3a539..058bd7d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Get-bADpasswords -[![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) +[![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://opensource.org/licenses/BSD-3-Clause) ![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg) ![Windows Server 2008 R2 | 2012 R2 | 2016](https://img.shields.io/badge/Windows%20Server-2008%20R2%20|%202012%20R2%20|%202016-007bb8.svg) ![.NET Framework 4.5.1+](https://img.shields.io/badge/.NET%20Framework-4.5.1%2B-007FFF.svg) ![Visual Studio 2017](https://img.shields.io/badge/Visual%20Studio-2017-383278.svg) Get insights into the actual strength and quality of passwords in Active Directory. From cee8dac0cc1c9199bc8059138a9cb0254ee91c18 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:32:34 +0100 Subject: [PATCH 006/115] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 058bd7d..54dfb8a 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ These instructions will get you a copy of the project up and running on your loc ### Prerequisites +#### Swiggity What things you need to install the software and how to install them ``` From af2e4d7b1d0a6e2573c3ec9dbd246197a4aa7cc3 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:39:38 +0100 Subject: [PATCH 007/115] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 54dfb8a..57c213c 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,12 @@ Get insights into the actual strength and quality of passwords in Active Directo These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system. + ### Prerequisites +#### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 +* Go to [swiggity linkity](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) +* Download the latest version of Visual C++ Redistributable Package for Visual Studio 2017 -#### Swiggity What things you need to install the software and how to install them ``` From 3430f2840852d98e853ea9685908ab36052c65a2 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:40:07 +0100 Subject: [PATCH 008/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 57c213c..2d0f59c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ These instructions will get you a copy of the project up and running on your loc ### Prerequisites #### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 -* Go to [swiggity linkity](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) +* Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download the latest version of Visual C++ Redistributable Package for Visual Studio 2017 What things you need to install the software and how to install them From f3af17c2e5f5a2a4fab19b67df190713c1ffbc54 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:41:27 +0100 Subject: [PATCH 009/115] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d0f59c..02c5cc6 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,9 @@ These instructions will get you a copy of the project up and running on your loc ### Prerequisites #### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) -* Download the latest version of Visual C++ Redistributable Package for Visual Studio 2017 +* Download the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform +..* For 32-bit systems: vc_redist.x86.exe +..* For 64-bit systems: vc_redist.x64.exe What things you need to install the software and how to install them From ac73659966e4b65ef8214130ebd8e3d7b059062c Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:41:51 +0100 Subject: [PATCH 010/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 02c5cc6..18d9cec 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ These instructions will get you a copy of the project up and running on your loc #### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform -..* For 32-bit systems: vc_redist.x86.exe -..* For 64-bit systems: vc_redist.x64.exe +⋅⋅* For 32-bit systems: vc_redist.x86.exe +⋅⋅* For 64-bit systems: vc_redist.x64.exe What things you need to install the software and how to install them From e90d743244e4bca73fe24037f389357735368431 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:42:21 +0100 Subject: [PATCH 011/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 18d9cec..783cf42 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ These instructions will get you a copy of the project up and running on your loc #### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform -⋅⋅* For 32-bit systems: vc_redist.x86.exe -⋅⋅* For 64-bit systems: vc_redist.x64.exe + * For 32-bit systems: vc_redist.x86.exe + * For 64-bit systems: vc_redist.x64.exe What things you need to install the software and how to install them From ff404b740bbd099f98107cbbb301aa34545c3f82 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:47:09 +0100 Subject: [PATCH 012/115] Update README.md --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 783cf42..661a6b7 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,18 @@ These instructions will get you a copy of the project up and running on your loc ### Prerequisites #### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) -* Download the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform +* Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe * For 64-bit systems: vc_redist.x64.exe +* No restart required -What things you need to install the software and how to install them +#### .NET Framework 4.5.1+ +* Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) +* Download and install the .NET Framework 4.5 in your preferred language +* (Restart? No restart?) required + +#### DSInternals PowerShell Modules +* Go to [DSInternals by Michael Grafnetter](https://github.com/MichaelGrafnetter/DSInternals) ``` Give examples @@ -79,8 +86,9 @@ Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c6 We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). ## Authors - -* **Billie Thompson** - *Initial work* - [PurpleBooth](https://github.com/PurpleBooth) +* **Jakob H. Heidelberg** ([ZilentJack](https://github.com/PurpleBooth)) - *Initial work* - +* **Valdemar Carøe** ([VirtualPuppet](https://github.com/PurpleBooth)) - *Initial work* - +* **Nichlas Falk** ([SwiggitySwooty](https://github.com/PurpleBooth)) - *Initial work* - See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. From e7900530230cc876ba985149a78c34acbc3e35d5 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:56:16 +0100 Subject: [PATCH 013/115] Update README.md --- README.md | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 661a6b7..3ef65b5 100644 --- a/README.md +++ b/README.md @@ -9,23 +9,27 @@ These instructions will get you a copy of the project up and running on your loc ### Prerequisites -#### Microsoft Visual C++ Redistributable Package for Visual Studio 2017 + +#### Microsoft Visual C++ Redistributable Package + * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe * For 64-bit systems: vc_redist.x64.exe * No restart required -#### .NET Framework 4.5.1+ +#### Microsoft .NET Framework 4.5.1+ + * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) * Download and install the .NET Framework 4.5 in your preferred language * (Restart? No restart?) required #### DSInternals PowerShell Modules -* Go to [DSInternals by Michael Grafnetter](https://github.com/MichaelGrafnetter/DSInternals) + +* Go to [DSInternals Reposity](https://github.com/MichaelGrafnetter/DSInternals) by Michael Grafnetter ``` -Give examples +Example script woohoo!! ``` ### Installing @@ -81,23 +85,17 @@ Add additional notes about how to deploy this on a live system Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. -## Versioning - -We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). - ## Authors -* **Jakob H. Heidelberg** ([ZilentJack](https://github.com/PurpleBooth)) - *Initial work* - -* **Valdemar Carøe** ([VirtualPuppet](https://github.com/PurpleBooth)) - *Initial work* - -* **Nichlas Falk** ([SwiggitySwooty](https://github.com/PurpleBooth)) - *Initial work* - -See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. +* **Jakob H. Heidelberg** ([ZilentJack](https://github.com/ZilentJack)) - *Initial work* - +* **Valdemar Carøe** ([VirtualPuppet](https://github.com/VirtualPuppet)) - *Initial work* - +* **Nichlas Falk** ([...](https://github.com/...)) - *Initial work* - ## License -This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details +This project is licensed under the BSD 3-Clause License - see the [LICENSE.md](LICENSE.md) file for details ## Acknowledgments -* Hat tip to anyone whose code was used -* Inspiration -* etc +* Michael Grafnetter for the amazing DSInternals framework +* Troy Hunt for the amazing PwnedPasswords list of leaked password hashes From 759daedb603908df6681bccb6e707407651f64b8 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:57:13 +0100 Subject: [PATCH 014/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3ef65b5..aa6bdba 100644 --- a/README.md +++ b/README.md @@ -97,5 +97,5 @@ This project is licensed under the BSD 3-Clause License - see the [LICENSE.md](L ## Acknowledgments -* Michael Grafnetter for the amazing DSInternals framework -* Troy Hunt for the amazing PwnedPasswords list of leaked password hashes +* [Michael Grafnetter](https://github.com/MichaelGrafnetter) for the amazing DSInternals framework +* [Troy Hunt](https://github.com/troyhunt) for the amazing PwnedPasswords list of leaked password hashes From 793c249435662d530a6cb363e0ee53c34db929b2 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 11:59:28 +0100 Subject: [PATCH 015/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa6bdba..acaf97a 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c6 ## Authors -* **Jakob H. Heidelberg** ([ZilentJack](https://github.com/ZilentJack)) - *Initial work* - +* [**Jakob H. Heidelberg**](https://github.com/ZilentJack)) - *Initial work* - * **Valdemar Carøe** ([VirtualPuppet](https://github.com/VirtualPuppet)) - *Initial work* - * **Nichlas Falk** ([...](https://github.com/...)) - *Initial work* - From 815b6132176a2767ec6fa9b9d6ddac3e39467128 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:00:00 +0100 Subject: [PATCH 016/115] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index acaf97a..134426e 100644 --- a/README.md +++ b/README.md @@ -87,9 +87,9 @@ Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c6 ## Authors -* [**Jakob H. Heidelberg**](https://github.com/ZilentJack)) - *Initial work* - -* **Valdemar Carøe** ([VirtualPuppet](https://github.com/VirtualPuppet)) - *Initial work* - -* **Nichlas Falk** ([...](https://github.com/...)) - *Initial work* - +* [**Jakob H. Heidelberg**](https://github.com/ZilentJack) - *Initial work* - +* [**Valdemar Carøe**](https://github.com/VirtualPuppet) - *Initial work* - +* [**Nichlas Falk**](https://github.com/...) - *Initial work* - ## License From 7291fbafcc51e59329557892332e432636ba10f5 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:09:27 +0100 Subject: [PATCH 017/115] Create LICENSE.md --- LICENSE.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..f86f6b4 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2018, Improsec ApS +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 5b6c960542c774b016411b29464f95515e7ccfc4 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:10:15 +0100 Subject: [PATCH 018/115] Update README.md --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index 134426e..0177038 100644 --- a/README.md +++ b/README.md @@ -75,12 +75,6 @@ Give an example Add additional notes about how to deploy this on a live system -## Built With - -* [Dropwizard](http://www.dropwizard.io/1.0.2/docs/) - The web framework used -* [Maven](https://maven.apache.org/) - Dependency Management -* [ROME](https://rometools.github.io/rome/) - Used to generate RSS Feeds - ## Contributing Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. @@ -97,5 +91,5 @@ This project is licensed under the BSD 3-Clause License - see the [LICENSE.md](L ## Acknowledgments -* [Michael Grafnetter](https://github.com/MichaelGrafnetter) for the amazing DSInternals framework +* [Michael Grafnetter](https://github.com/MichaelGrafnetter) for the amazing [DSInternals](https://github.com/MichaelGrafnetter/DSInternals) framework * [Troy Hunt](https://github.com/troyhunt) for the amazing PwnedPasswords list of leaked password hashes From 6cad7e634f843b0ce6a54f1868699004e02dff57 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:12:16 +0100 Subject: [PATCH 019/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0177038..b9bc379 100644 --- a/README.md +++ b/README.md @@ -92,4 +92,4 @@ This project is licensed under the BSD 3-Clause License - see the [LICENSE.md](L ## Acknowledgments * [Michael Grafnetter](https://github.com/MichaelGrafnetter) for the amazing [DSInternals](https://github.com/MichaelGrafnetter/DSInternals) framework -* [Troy Hunt](https://github.com/troyhunt) for the amazing PwnedPasswords list of leaked password hashes +* [Troy Hunt](https://github.com/troyhunt) for the amazing [PwnedPasswords list](https://haveibeenpwned.com/Passwords) of leaked password hashes From bde6b02daa6d87809f4fcbded024139581a423fa Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:32:35 +0100 Subject: [PATCH 020/115] Update README.md --- README.md | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index b9bc379..038f05d 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,13 @@ These instructions will get you a copy of the project up and running on your loc #### DSInternals PowerShell Modules -* Go to [DSInternals Reposity](https://github.com/MichaelGrafnetter/DSInternals) by Michael Grafnetter +* Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) +* Download and install the DSInternals 3.0 Powershell Modules + * Alternatively, just run the following script: + ``` + Install-Module -Name DSInternals + ``` +* No restart required ``` Example script woohoo!! @@ -50,35 +56,10 @@ until finished End with an example of getting some data out of the system or using it for a little demo -## Running the tests - -Explain how to run the automated tests for this system - - -### Break down into end to end tests - -Explain what these tests test and why - -``` -Give an example -``` - -### And coding style tests - -Explain what these tests test and why - -``` -Give an example -``` - ## Deployment Add additional notes about how to deploy this on a live system -## Contributing - -Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us. - ## Authors * [**Jakob H. Heidelberg**](https://github.com/ZilentJack) - *Initial work* - @@ -92,4 +73,4 @@ This project is licensed under the BSD 3-Clause License - see the [LICENSE.md](L ## Acknowledgments * [Michael Grafnetter](https://github.com/MichaelGrafnetter) for the amazing [DSInternals](https://github.com/MichaelGrafnetter/DSInternals) framework -* [Troy Hunt](https://github.com/troyhunt) for the amazing [PwnedPasswords list](https://haveibeenpwned.com/Passwords) of leaked password hashes +* [Troy Hunt](https://github.com/troyhunt) for the amazing [PwnedPasswords list](https://haveibeenpwned.com/Passwords) From b16444fa7bcccfd1f5b05fd257bb2fadf0fc44e9 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:33:16 +0100 Subject: [PATCH 021/115] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 038f05d..58be901 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,10 @@ These instructions will get you a copy of the project up and running on your loc * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules - * Alternatively, just run the following script: - ``` - Install-Module -Name DSInternals - ``` + * Alternatively, just run the following script: + ``` + Install-Module -Name DSInternals + ``` * No restart required ``` From e3eabc9c052d7063ad403d32e82384548efe574b Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:33:33 +0100 Subject: [PATCH 022/115] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 58be901..f17ffdc 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ These instructions will get you a copy of the project up and running on your loc * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules * Alternatively, just run the following script: - ``` - Install-Module -Name DSInternals - ``` + ``` + Install-Module -Name DSInternals + ``` * No restart required ``` From 1f333dc587e9609a642729c38c1a4dc56330add4 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:33:45 +0100 Subject: [PATCH 023/115] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f17ffdc..62ec3d7 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ These instructions will get you a copy of the project up and running on your loc * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules * Alternatively, just run the following script: - ``` - Install-Module -Name DSInternals - ``` + ``` + Install-Module -Name DSInternals + ``` * No restart required ``` From 838e5f639ef0a26d8c6578bd9ad5bad2c14b4539 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:34:19 +0100 Subject: [PATCH 024/115] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 62ec3d7..2fb2901 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,10 @@ These instructions will get you a copy of the project up and running on your loc * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules - * Alternatively, just run the following script: - ``` - Install-Module -Name DSInternals - ``` + * Alternatively, run the following PowerShellGet command through PowerShell: +``` +Install-Module -Name DSInternals +``` * No restart required ``` From 2b3733c20d46b1a3865833715edca146d5557d5f Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:35:46 +0100 Subject: [PATCH 025/115] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2fb2901..ebb67c0 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,12 @@ These instructions will get you a copy of the project up and running on your loc * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules - * Alternatively, run the following PowerShellGet command through PowerShell: -``` +* No restart required + +Alternatively, you can install DSInternals through PowerShellGet by running the following PowerShell command: +```powershell Install-Module -Name DSInternals ``` -* No restart required ``` Example script woohoo!! From f5c3d4e9d8f14edeed41cf38b13764a3dd85ffed Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:36:02 +0100 Subject: [PATCH 026/115] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ebb67c0..9129431 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ These instructions will get you a copy of the project up and running on your loc * Download and install the DSInternals 3.0 Powershell Modules * No restart required + Alternatively, you can install DSInternals through PowerShellGet by running the following PowerShell command: ```powershell Install-Module -Name DSInternals From ec3da46df5f879d853ebfca0452196fed20e4f18 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:38:38 +0100 Subject: [PATCH 027/115] Update README.md --- README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9129431..49c7906 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,7 @@ Get insights into the actual strength and quality of passwords in Active Directory. -## Getting Started - -These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system. - - -### Prerequisites +## Dependencies #### Microsoft Visual C++ Redistributable Package @@ -24,7 +19,7 @@ These instructions will get you a copy of the project up and running on your loc * Download and install the .NET Framework 4.5 in your preferred language * (Restart? No restart?) required -#### DSInternals PowerShell Modules +#### DSInternals 3.0 PowerShell Modules * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) * Download and install the DSInternals 3.0 Powershell Modules @@ -40,7 +35,7 @@ Install-Module -Name DSInternals Example script woohoo!! ``` -### Installing +## Installing A step by step series of examples that tell you how to get a development env running From d890607fc8ec68debce9cb5a8196959542054f14 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:38:52 +0100 Subject: [PATCH 028/115] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 49c7906..8f377c4 100644 --- a/README.md +++ b/README.md @@ -31,10 +31,6 @@ Alternatively, you can install DSInternals through PowerShellGet by running the Install-Module -Name DSInternals ``` -``` -Example script woohoo!! -``` - ## Installing A step by step series of examples that tell you how to get a development env running From f462c17fa931f296921354c8276813238e8cae79 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:43:56 +0100 Subject: [PATCH 029/115] Update README.md --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8f377c4..579c2b9 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,13 @@ Get insights into the actual strength and quality of passwords in Active Directory. -## Dependencies +## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package +**Why?** +We use it! wooh! +**How?** * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe @@ -25,12 +28,15 @@ Get insights into the actual strength and quality of passwords in Active Directo * Download and install the DSInternals 3.0 Powershell Modules * No restart required - -Alternatively, you can install DSInternals through PowerShellGet by running the following PowerShell command: +Alternatively, you can install DSInternals 3.0 through PowerShellGet by running the following PowerShell command: ```powershell Install-Module -Name DSInternals ``` +### Leaked password list + +* Go to [] + ## Installing A step by step series of examples that tell you how to get a development env running From f4520ba4e87c160659b28ca22f719c3b0eb99e9e Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:44:26 +0100 Subject: [PATCH 030/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 579c2b9..b6fb3cb 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package -**Why?** +##### Why? We use it! wooh! -**How?** +##### How? * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe From 3da0a99ea93f36f1e41fecc6a59ee6828ee5114f Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:44:51 +0100 Subject: [PATCH 031/115] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b6fb3cb..d24b6c2 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,9 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package -##### Why? We use it! wooh! -##### How? +##### Step-by-step * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe From ab48cccb1347630fa1031f7453fd75fafdaf6eba Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:47:08 +0100 Subject: [PATCH 032/115] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d24b6c2..8c958c1 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package -We use it! wooh! +Microsoft Visual C++ Redistributable Package is required by our PSI DLLs, which are responsible for parsing the leaked-password binary file and performing comparisons against the list. ##### Step-by-step * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) @@ -17,6 +17,7 @@ We use it! wooh! #### Microsoft .NET Framework 4.5.1+ +##### Step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) * Download and install the .NET Framework 4.5 in your preferred language * (Restart? No restart?) required From 01373582dc5c55d7a8f68a43fc0ef7fc13f3457e Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:47:30 +0100 Subject: [PATCH 033/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c958c1..b462f23 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package -Microsoft Visual C++ Redistributable Package is required by our PSI DLLs, which are responsible for parsing the leaked-password binary file and performing comparisons against the list. +Microsoft Visual C++ Redistributable Package is required by our PSI DLL, which is responsible for parsing the leaked-password binary file and performing comparisons against the list. ##### Step-by-step * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) From 82b56c0bfc9297d104c5ce5cbb705b96d3837efc Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:49:08 +0100 Subject: [PATCH 034/115] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b462f23..7b2b8df 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Prerequisites (dependencies) #### Microsoft Visual C++ Redistributable Package -Microsoft Visual C++ Redistributable Package is required by our PSI DLL, which is responsible for parsing the leaked-password binary file and performing comparisons against the list. +Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DLL is reponsible for parsing the leaked-password binary file and performing comparisons against it. The source code for the DLL can be found [here](./Source). ##### Step-by-step * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) @@ -16,6 +16,7 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL, which i * No restart required #### Microsoft .NET Framework 4.5.1+ +Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. ##### Step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) From eb189024fd860590bbc8ef24ec7d58111ab5c957 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:51:20 +0100 Subject: [PATCH 035/115] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7b2b8df..43f3b3b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Get insights into the actual strength and quality of passwords in Active Directory. -## Prerequisites (dependencies) +## Dependencies #### Microsoft Visual C++ Redistributable Package Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DLL is reponsible for parsing the leaked-password binary file and performing comparisons against it. The source code for the DLL can be found [here](./Source). @@ -16,13 +16,15 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DL * No restart required #### Microsoft .NET Framework 4.5.1+ -Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. +Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. This PowerShell module is used to fetch user information from the Active Directory database. The source code for the module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). ##### Step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) * Download and install the .NET Framework 4.5 in your preferred language * (Restart? No restart?) required +## Prerequisites (dependencies) + #### DSInternals 3.0 PowerShell Modules * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) From acfb44f39dea5bbe5e0f353666da0792abc2b544 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:51:46 +0100 Subject: [PATCH 036/115] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 43f3b3b..8f8a2e8 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Get insights into the actual strength and quality of passwords in Active Directo #### Microsoft Visual C++ Redistributable Package Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DLL is reponsible for parsing the leaked-password binary file and performing comparisons against it. The source code for the DLL can be found [here](./Source). -##### Step-by-step +##### Installation step-by-step * Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) * Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform * For 32-bit systems: vc_redist.x86.exe @@ -18,12 +18,12 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DL #### Microsoft .NET Framework 4.5.1+ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. This PowerShell module is used to fetch user information from the Active Directory database. The source code for the module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). -##### Step-by-step +##### Installation step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) * Download and install the .NET Framework 4.5 in your preferred language * (Restart? No restart?) required -## Prerequisites (dependencies) +## Prerequisites #### DSInternals 3.0 PowerShell Modules From 6aaf2d0ff104647c533f5deb694ac7ee42fc8408 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 12:52:37 +0100 Subject: [PATCH 037/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f8a2e8..e7d2372 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DL * No restart required #### Microsoft .NET Framework 4.5.1+ -Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. This PowerShell module is used to fetch user information from the Active Directory database. The source code for the module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). +Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. This PowerShell module is used to fetch user information from the Active Directory. The source code for the module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). ##### Installation step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) From 1b567dce80cd6a4ce9bd2e83e431c2d887302f14 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:02:39 +0100 Subject: [PATCH 038/115] Update README.md --- README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e7d2372..54a1342 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DL * No restart required #### Microsoft .NET Framework 4.5.1+ -Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. This PowerShell module is used to fetch user information from the Active Directory. The source code for the module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). +Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. ##### Installation step-by-step * Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) @@ -25,10 +25,12 @@ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell mo ## Prerequisites -#### DSInternals 3.0 PowerShell Modules +#### DSInternals 3.0 PowerShell Module +This module is used to query the Active Directory and fetch user information (SAM Account Name, E-mail, Password Hash, etc.). The source code for this module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). +##### Installation step-by-step * Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) -* Download and install the DSInternals 3.0 Powershell Modules +* Download and install the DSInternals 3.0 PowerShell Module * No restart required Alternatively, you can install DSInternals 3.0 through PowerShellGet by running the following PowerShell command: @@ -37,8 +39,13 @@ Install-Module -Name DSInternals ``` ### Leaked password list +This file contains a binary packed list of leaked password hashes from the Troy Hunt PwnedPasswords list. The file is too big (8 GB) for GitHub (max 25 MB), so we host it on our SharePoint instead. -* Go to [] +##### Installation step-by-step +* Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh) + * SHA1: 334E236FEA9DB781BE646BB2F80394D9C039BE02 +* Download the _leaked-passwords.bin_ file +* Place the file in the same folder as the rest of this project ## Installing From 4bb7a0175849fa7685d5ee0db217244f85d64432 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:02:53 +0100 Subject: [PATCH 039/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54a1342..d0e758a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Dependencies -#### Microsoft Visual C++ Redistributable Package +### Microsoft Visual C++ Redistributable Package Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DLL is reponsible for parsing the leaked-password binary file and performing comparisons against it. The source code for the DLL can be found [here](./Source). ##### Installation step-by-step From 108017988b085454d27cfa595ff8cd35f48d3421 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:03:10 +0100 Subject: [PATCH 040/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d0e758a..05d2aa9 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DL * For 64-bit systems: vc_redist.x64.exe * No restart required -#### Microsoft .NET Framework 4.5.1+ +### Microsoft .NET Framework 4.5.1+ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. ##### Installation step-by-step @@ -25,7 +25,7 @@ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell mo ## Prerequisites -#### DSInternals 3.0 PowerShell Module +### DSInternals 3.0 PowerShell Module This module is used to query the Active Directory and fetch user information (SAM Account Name, E-mail, Password Hash, etc.). The source code for this module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). ##### Installation step-by-step From 19e34164af1fb471591644c10f95678e68df33a8 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:04:12 +0100 Subject: [PATCH 041/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 05d2aa9..36e6c15 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Install-Module -Name DSInternals ``` ### Leaked password list -This file contains a binary packed list of leaked password hashes from the Troy Hunt PwnedPasswords list. The file is too big (8 GB) for GitHub (max 25 MB), so we host it on our SharePoint instead. +This file contains a binary packed list of leaked password hashes from the PwnedPasswords list published by Troy Hunt. The file is too big (8 GB) for GitHub (max 25 MB), so we host it on our SharePoint instead. ##### Installation step-by-step * Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh) From 4fb06d80cadef63106143f2ded6308dbd71eaf99 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:10:23 +0100 Subject: [PATCH 042/115] Update README.md --- README.md | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 36e6c15..2184f00 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ Get insights into the actual strength and quality of passwords in Active Directory. +## Introduction + + ## Dependencies ### Microsoft Visual C++ Redistributable Package @@ -43,28 +46,21 @@ This file contains a binary packed list of leaked password hashes from the Pwned ##### Installation step-by-step * Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh) - * SHA1: 334E236FEA9DB781BE646BB2F80394D9C039BE02 * Download the _leaked-passwords.bin_ file + * SHA1: 334E236FEA9DB781BE646BB2F80394D9C039BE02 * Place the file in the same folder as the rest of this project ## Installing - -A step by step series of examples that tell you how to get a development env running - -Say what the step will be - -``` -Give the example -``` - -And repeat - -``` -until finished +* Install this entire repository +* (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking +* Open 'Get-bADpasswords.ps1' + * Navigate to +```powershell +# ================ # +# CONFIGURATION => # +# ================ # ``` -End with an example of getting some data out of the system or using it for a little demo - ## Deployment Add additional notes about how to deploy this on a live system From 8633254b50b0de8909c0b80ba823b0f6549c0081 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:11:49 +0100 Subject: [PATCH 043/115] Update README.md --- README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2184f00..a140ba1 100644 --- a/README.md +++ b/README.md @@ -52,14 +52,9 @@ This file contains a binary packed list of leaked password hashes from the Pwned ## Installing * Install this entire repository -* (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking * Open 'Get-bADpasswords.ps1' - * Navigate to -```powershell -# ================ # -# CONFIGURATION => # -# ================ # -``` + * Navigate to the configuration-section and modify the variables to fit your needs +* (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking ## Deployment From 679770366e118f49432858b81617f858ccfe8e3d Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:13:09 +0100 Subject: [PATCH 044/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a140ba1..8e22ba0 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,12 @@ This file contains a binary packed list of leaked password hashes from the Pwned * Place the file in the same folder as the rest of this project ## Installing -* Install this entire repository +Installing this framework is really easy - simply download the respository. However, there is some manual configuration required, see below: * Open 'Get-bADpasswords.ps1' * Navigate to the configuration-section and modify the variables to fit your needs * (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking -## Deployment +## Usage Add additional notes about how to deploy this on a live system From 6c2135623bc2247cd84c95b268ce946d6b245d06 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:14:10 +0100 Subject: [PATCH 045/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e22ba0..d9a6a04 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ This file contains a binary packed list of leaked password hashes from the Pwned * Place the file in the same folder as the rest of this project ## Installing -Installing this framework is really easy - simply download the respository. However, there is some manual configuration required, see below: +Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1' * Navigate to the configuration-section and modify the variables to fit your needs * (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking From cac02f665c0941a32e2b246e317a82e706f314ae Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:14:30 +0100 Subject: [PATCH 046/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d9a6a04..4383d88 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ This file contains a binary packed list of leaked password hashes from the Pwned ##### Installation step-by-step * Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh) * Download the _leaked-passwords.bin_ file - * SHA1: 334E236FEA9DB781BE646BB2F80394D9C039BE02 + * SHA1: `334E236FEA9DB781BE646BB2F80394D9C039BE02` * Place the file in the same folder as the rest of this project ## Installing From 79bf84fbd861478780ee62c5b2c8b53f39a818c1 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:19:08 +0100 Subject: [PATCH 047/115] Update README.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4383d88..9f473a9 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ This module is used to query the Active Directory and fetch user information (SA Alternatively, you can install DSInternals 3.0 through PowerShellGet by running the following PowerShell command: ```powershell -Install-Module -Name DSInternals +PS> Install-Module -Name DSInternals ``` ### Leaked password list @@ -57,8 +57,11 @@ Installing this framework is as simple as downloading the entire respository. Ho * (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking ## Usage - -Add additional notes about how to deploy this on a live system +Since the desired options has already been selected during the configuration part of the install-section, you can go ahead and run the script: +```powershell +PS> ./Get-bADpassword.ps1 +``` +Note: Please be aware that you need to have privileges equal to that of a Domain Administrator to succesfully fetch passwords from the Active Directory. ## Authors From a58322961a3bbbe2e717899f1ef0b8b50099b167 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:25:33 +0100 Subject: [PATCH 048/115] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f473a9..981526d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,11 @@ Get insights into the actual strength and quality of passwords in Active Directory. ## Introduction - +This module is able to compare password hashes of enabled Active Directory users against bad/weak/non-compliant passwords (e.g. hackers first guess in brute-force attacks). +* Performs comparison against one or multiple wordlist(s). + * Please keep in mind that this script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. +* Performs additional comparison against previously leaked passwords. +* Requires privileges equal to (or higher than) that of 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. ## Dependencies @@ -61,7 +65,6 @@ Since the desired options has already been selected during the configuration par ```powershell PS> ./Get-bADpassword.ps1 ``` -Note: Please be aware that you need to have privileges equal to that of a Domain Administrator to succesfully fetch passwords from the Active Directory. ## Authors From 2f8d3e1345a2b795cb8cd6c14cbaa8cf5d2fd82b Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:25:47 +0100 Subject: [PATCH 049/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 981526d..0fbd79d 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Introduction This module is able to compare password hashes of enabled Active Directory users against bad/weak/non-compliant passwords (e.g. hackers first guess in brute-force attacks). * Performs comparison against one or multiple wordlist(s). - * Please keep in mind that this script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. + * This script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. * Performs additional comparison against previously leaked passwords. * Requires privileges equal to (or higher than) that of 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. From 34d9b96185647b72ca4fa11e63520bda368e81e4 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:27:39 +0100 Subject: [PATCH 050/115] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fbd79d..eb14050 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ Get insights into the actual strength and quality of passwords in Active Directo This module is able to compare password hashes of enabled Active Directory users against bad/weak/non-compliant passwords (e.g. hackers first guess in brute-force attacks). * Performs comparison against one or multiple wordlist(s). * This script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. -* Performs additional comparison against previously leaked passwords. +* Performs additional comparison against publicly leaked passwords. +* Performs password comparison against 'null' in the Active Directory (i.e. finds empty/null passwords) +* Performs password comparison between users in the Active Directory (i.e. finds shared passwords) * Requires privileges equal to (or higher than) that of 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. ## Dependencies From 1bc8799da1ef7837155b6166f7fa5cf5dda0b44c Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:27:56 +0100 Subject: [PATCH 051/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb14050..98b9da5 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This module is able to compare password hashes of enabled Active Directory users * Performs additional comparison against publicly leaked passwords. * Performs password comparison against 'null' in the Active Directory (i.e. finds empty/null passwords) * Performs password comparison between users in the Active Directory (i.e. finds shared passwords) -* Requires privileges equal to (or higher than) that of 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. +* Requires privileges equal to (or higher than) that of a 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. ## Dependencies From 5418a9801be511fb983ac5f3d986104240589b7c Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:28:52 +0100 Subject: [PATCH 052/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 98b9da5..9b7ee84 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ This file contains a binary packed list of leaked password hashes from the Pwned Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1' * Navigate to the configuration-section and modify the variables to fit your needs -* (Optional) Modify the wordlists at '/Accessible/Wordlists/*.txt' to your own liking +* (Optional) Modify the wordlists at './Accessible/Wordlists/*.txt' to your own liking ## Usage Since the desired options has already been selected during the configuration part of the install-section, you can go ahead and run the script: From f262bc76db91a51edf6b9530ff2c7ee55ee400ee Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:29:39 +0100 Subject: [PATCH 053/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b7ee84..9326efa 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ This file contains a binary packed list of leaked password hashes from the Pwned Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1' * Navigate to the configuration-section and modify the variables to fit your needs -* (Optional) Modify the wordlists at './Accessible/Wordlists/*.txt' to your own liking +* (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking ## Usage Since the desired options has already been selected during the configuration part of the install-section, you can go ahead and run the script: From 0481759ef317e874f93a8ce72d8700eb627a7907 Mon Sep 17 00:00:00 2001 From: ImproNinja <79981713+ImproNinja@users.noreply.github.com> Date: Wed, 12 Dec 2018 13:31:03 +0100 Subject: [PATCH 054/115] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9326efa..4bd0c1b 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ This file contains a binary packed list of leaked password hashes from the Pwned * SHA1: `334E236FEA9DB781BE646BB2F80394D9C039BE02` * Place the file in the same folder as the rest of this project -## Installing +## Installation Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1' * Navigate to the configuration-section and modify the variables to fit your needs From fc89cbd92836dafaf650cd41c10ebece9f17a998 Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:27:49 +0100 Subject: [PATCH 055/115] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4bd0c1b..c7bb5c2 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ Get insights into the actual strength and quality of passwords in Active Directo ## Introduction This module is able to compare password hashes of enabled Active Directory users against bad/weak/non-compliant passwords (e.g. hackers first guess in brute-force attacks). * Performs comparison against one or multiple wordlist(s). - * This script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. -* Performs additional comparison against publicly leaked passwords. + * This script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. A PoC-script has been included (New-bADpasswordLists_EN.ps1) for basic wordlist generation. +* Performs additional comparison against publicly leaked passwords, see [acknowledgements](#acknowledgements) below. * Performs password comparison against 'null' in the Active Directory (i.e. finds empty/null passwords) * Performs password comparison between users in the Active Directory (i.e. finds shared passwords) * Requires privileges equal to (or higher than) that of a 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. From 908e24bd66cdaae9e8d9ef80ae5cd4e31f51eaae Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:37:54 +0100 Subject: [PATCH 056/115] Update README.md --- README.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index c7bb5c2..98fc371 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ Get insights into the actual strength and quality of passwords in Active Directo This module is able to compare password hashes of enabled Active Directory users against bad/weak/non-compliant passwords (e.g. hackers first guess in brute-force attacks). * Performs comparison against one or multiple wordlist(s). * This script does not transform input from the wordlists (such as transforming between upper/lower case). Each input from the wordlist is used as-is. Use other tools to generate more specialized wordlists if necessary. A PoC-script has been included (New-bADpasswordLists_EN.ps1) for basic wordlist generation. -* Performs additional comparison against publicly leaked passwords, see [acknowledgements](#acknowledgements) below. -* Performs password comparison against 'null' in the Active Directory (i.e. finds empty/null passwords) -* Performs password comparison between users in the Active Directory (i.e. finds shared passwords) -* Requires privileges equal to (or higher than) that of a 'Domain Admin' or 'Domain Controller' to succesfully fetch passwords from the Active Directory. +* Performs additional comparison against publicly leaked passwords, see acknowledgements below. +* Performs password comparison against 'null' in the Active Directory (i.e. finds empty/null passwords). +* Performs password comparison between users in the Active Directory (i.e. finds shared passwords). +* Requires 'Domain Admin' privileges or similar, e.g. 'Domain Controller' or delegated Domain-level permissions for both "Replicating Directory Changes All" and "Replicating Directory Changes All", to succesfully fetch passwords from the Active Directory database. ## Dependencies @@ -18,19 +18,19 @@ This module is able to compare password hashes of enabled Active Directory users Microsoft Visual C++ Redistributable Package is required by our PSI DLL. This DLL is reponsible for parsing the leaked-password binary file and performing comparisons against it. The source code for the DLL can be found [here](./Source). ##### Installation step-by-step -* Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) -* Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform +* Go to [Microsoft Latest Supported Visual C++ Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads). +* Download and install the Visual Studio 2017 version of the Visual C++ Redistributable Package for your target platform: * For 32-bit systems: vc_redist.x86.exe - * For 64-bit systems: vc_redist.x64.exe -* No restart required + * For 64-bit systems: vc_redist.x64.exe (recommended) +* No restart required. ### Microsoft .NET Framework 4.5.1+ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell module by Michael Grafnetter. ##### Installation step-by-step -* Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653) -* Download and install the .NET Framework 4.5 in your preferred language -* (Restart? No restart?) required +* Go to [Microsoft .NET Framework 4.5 Download](https://www.microsoft.com/en-us/download/details.aspx?id=30653). +* Download and install the .NET Framework 4.5 in your preferred language. +* Might require a restart. ## Prerequisites @@ -38,9 +38,9 @@ Microsoft .NET Framework 4.5.1+ is required by the DSInternals 3.0 PowerShell mo This module is used to query the Active Directory and fetch user information (SAM Account Name, E-mail, Password Hash, etc.). The source code for this module can be found [here](https://github.com/MichaelGrafnetter/DSInternals). ##### Installation step-by-step -* Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0) -* Download and install the DSInternals 3.0 PowerShell Module -* No restart required +* Go to [DSInternals 3.0 PowerShell Module Download](https://www.powershellgallery.com/packages/DSInternals/3.0). +* Download and install the DSInternals 3.0 PowerShell Module. +* No restart required. Alternatively, you can install DSInternals 3.0 through PowerShellGet by running the following PowerShell command: ```powershell @@ -51,16 +51,16 @@ PS> Install-Module -Name DSInternals This file contains a binary packed list of leaked password hashes from the PwnedPasswords list published by Troy Hunt. The file is too big (8 GB) for GitHub (max 25 MB), so we host it on our SharePoint instead. ##### Installation step-by-step -* Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh) -* Download the _leaked-passwords.bin_ file - * SHA1: `334E236FEA9DB781BE646BB2F80394D9C039BE02` -* Place the file in the same folder as the rest of this project +* Go to [Improsec Leaked Password List](https://improsec-my.sharepoint.com/:u:/p/jhh/EdyYIoFELcZBle_0OQX6D1MB51mgZLZQqNx1ELrBs3D_DQ?e=waNigh). +* Download the _leaked-passwords.bin_ file: + * SHA1: `334E236FEA9DB781BE646BB2F80394D9C039BE02`. +* Place the file in the same folder as the rest of this project. ## Installation Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: -* Open 'Get-bADpasswords.ps1' - * Navigate to the configuration-section and modify the variables to fit your needs -* (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking +* Open 'Get-bADpasswords.ps1': + * Navigate to the configuration-section and modify the variables to fit your needs. +* (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking. ## Usage Since the desired options has already been selected during the configuration part of the install-section, you can go ahead and run the script: @@ -71,8 +71,8 @@ PS> ./Get-bADpassword.ps1 ## Authors * [**Jakob H. Heidelberg**](https://github.com/ZilentJack) - *Initial work* - -* [**Valdemar Carøe**](https://github.com/VirtualPuppet) - *Initial work* - -* [**Nichlas Falk**](https://github.com/...) - *Initial work* - +* [**Valdemar Carøe**](https://github.com/VirtualPuppet) - *Script improvement & PSI-module development* - +* **Nichlas Falk** - *Script improvement* - ## License From a7088c0bbfa1b63f6f054b49dc506daff648af3e Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:40:06 +0100 Subject: [PATCH 057/115] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 98fc371..f670593 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,9 @@ This file contains a binary packed list of leaked password hashes from the Pwned ## Installation Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1': - * Navigate to the configuration-section and modify the variables to fit your needs. + * Navigate to the configuration-section and modify the variables to fit your needs, at least: + * sasd + * (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking. ## Usage From 5acd52a436a70caa69c3f169eca36cbd6cf2d860 Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:43:09 +0100 Subject: [PATCH 058/115] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f670593..7530625 100644 --- a/README.md +++ b/README.md @@ -60,8 +60,10 @@ This file contains a binary packed list of leaked password hashes from the Pwned Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1': * Navigate to the configuration-section and modify the variables to fit your needs, at least: - * sasd - + * $strDomain + * $naming_context + * $mail_smtp + * $mail_recipient * (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking. ## Usage From 655021332f352ec15937eebc44a83dd85f0679de Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:46:57 +0100 Subject: [PATCH 059/115] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7530625..22ff0ad 100644 --- a/README.md +++ b/README.md @@ -60,10 +60,10 @@ This file contains a binary packed list of leaked password hashes from the Pwned Installing this framework is as simple as downloading the entire respository. However, you have to manually configure the following: * Open 'Get-bADpasswords.ps1': * Navigate to the configuration-section and modify the variables to fit your needs, at least: - * $strDomain - * $naming_context - * $mail_smtp - * $mail_recipient + * $strDomain + * $naming_context + * $mail_smtp + * $mail_recipient * (Optional) Modify the wordlists at `./Accessible/Wordlists/*.txt` to your own liking. ## Usage From 6412229bbdef7edee4e1fcbcf580915fdee4ad2c Mon Sep 17 00:00:00 2001 From: Improsec ApS Date: Wed, 12 Dec 2018 14:48:59 +0100 Subject: [PATCH 060/115] Add files via upload --- Get-bADpasswords_2.jpg | Bin 0 -> 177250 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Get-bADpasswords_2.jpg diff --git a/Get-bADpasswords_2.jpg b/Get-bADpasswords_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f7d2406d18f9653d9a9f110ffa1d605ff6f12b2 GIT binary patch literal 177250 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 z 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