diff --git a/checksecsysvol6.ps1 b/checksecsysvol6.ps1 new file mode 100644 index 0000000..3f0ff7c --- /dev/null +++ b/checksecsysvol6.ps1 @@ -0,0 +1,119 @@ + +function Find-SMSClearTextPassword { + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false)] + [String]$dnsDomain = $env:USERDNSDOMAIN + ) + +# Suppression de runspace "fantomes" +$PreviousRS = get-runspace | where-object {($_.id -ne 1)} +if ($PreviousRS) { $PreviousRS.dispose() } + +$Results = $null + + + #region getxmlcontenant + # Récupérer les extensions de fichiers à partir du fichier XML + $xmlFileExtensions = "C:\temp\file_extensions.xml" + $extensionsXML = [xml](Get-Content $xmlFileExtensions) + $fileExtensions = $extensionsXML.FileExtensions.Extension + + # Récupérer les motifs de mots de passe à partir du fichier XML + $xmlPasswordPatterns = "C:\temp\password_patterns.xml" + $passwordPatternsXML = [xml](Get-Content $xmlPasswordPatterns) + $passwordPatterns = $passwordPatternsXML.PasswordPatterns.Pattern + + # Récupérer les fichiers dans les dossiers Sysvol du domaine DNS spécifié + #$sysvolFolders = Get-ChildItem -Path "\\$dnsDomain\sysvol" -Recurse -File -Include $fileExtensions -ErrorAction SilentlyContinue + + # Initialiser une liste pour stocker les résultats + $Results = @() + + #endregion getxmlcontenant + +# définition du Pool (creation des slots) +$pool = [RunspaceFactory]::CreateRunspacePool(1,10) +$pool.ApartmentState = "MTA" +$pool.Open() +$runspaces = @() + +# définition des commandes à executer dans les jobs +$scriptblock = { + Param ( + [string]$sysfiles, + [string[]]$passwordPatterns + ) + + $content = Get-Content -Path $sysfiles -Raw; + $results = @() # Initialisation de la variable $results dans le scriptblock + + foreach ($pattern in $passwordPatterns) { + if ($content -match $pattern) { + $result = [PSCustomObject]@{ + FilePath = $sysfiles + #Pattern = $pattern + Word = $Matches[0] + } + $results += $result # Ajoute chaque résultat à la variable $results + } + } + + $results # Retourne tous les résultats à la fin du scriptblock +} + + +# creation des jobs par machine et lancement des jobs +#foreach ($sysfiles in $sysvolFolders) +Get-ChildItem -Path "\\$dnsDomain\sysvol" -Recurse -File -Include $fileExtensions -Force -ErrorAction SilentlyContinue | ForEach-Object { + +$sysfiles = $_.fullname + +#clear +Write-Host nous traitons $sysfiles + +$runspace = [PowerShell]::Create() +$null = $runspace.AddScript($scriptblock) +$null = $runspace.AddArgument($sysfiles) +$null = $runspace.AddArgument($passwordPatterns) +$runspace.RunspacePool = $pool +$runspaces += [PSCustomObject]@{ Pipe = $runspace; Status = $runspace.BeginInvoke() } +} + + +# Afficher les slots + statistiques en cours +while ($runspaces.Status -ne $null) +{ +start-sleep 1 +cls +get-runspace | where-object {($_.id -ne 1) -and ($_.runspaceisremote -eq $false) -and ($_.runspaceAvailability -like "Available")} +get-runspace | where-object {($_.id -ne 1) -and ($_.runspaceisremote -eq $true)} +$slt_encours = get-runspace | where-object {($_.id -ne 1) -and ( $_.runspaceisremote -eq $true)} +$slt_tot = get-runspace | where-object {($_.id -ne 1) -and ($_.runspaceisremote -eq $false)} + +write-host "Nbre Objets total= " $runspaces.count +write-host "Nbre slots totaux= " $slt_tot.count +write-host "Nbre slots utilisés= " $slt_encours.count +write-host "Nbre objets restants =" $runspaces.Status.IsCompleted.count + +$completed = $runspaces | Where-Object { $_.Status.IsCompleted -eq $true } + +foreach ($runspace in $completed) +{ + $Results += $runspace.Pipe.EndInvoke($runspace.Status) + $runspace.Status = $null +} + +} + +$Results | Out-GridHtml + +# Fermeture les connexions et suppression des slots du Pool +$pool.Close() +$pool.Dispose() + + +} + +# Appeler la fonction pour trouver les mots de passe en texte clair dans les fichiers Sysvol +Find-SMSClearTextPassword \ No newline at end of file diff --git a/file_extensions.xml b/file_extensions.xml new file mode 100644 index 0000000..e39c79b --- /dev/null +++ b/file_extensions.xml @@ -0,0 +1,11 @@ + + *.txt + *.csv + *.docx + *.ps1 + *.bat + *.ini + *.psm1 + *.xml + *.vbs + diff --git a/password_patterns.xml b/password_patterns.xml new file mode 100644 index 0000000..81563f4 --- /dev/null +++ b/password_patterns.xml @@ -0,0 +1,22 @@ + + \bpass\b + \bmdp\b + \bsecret\b + \bssh-key\b + \bprivate-key\b + \bapikey\b + \baccesskey\b + \btoken\b + \buser\b + \busername\b + \blogin\b + \bidentifiant\b + \bauth\b + \bcredentials\b + \bcred\b + \bpwd\b + \bmotdepasse\b + \bmdpass\b + \bmotdepasse\b + password +