O cenário em constante evolução da TI exige vigilância em termos de segurança, principalmente no âmbito da proteção de dados. À medida que a transformação digital leva as empresas a dependerem cada vez mais de dados, a proteção de informações confidenciais torna-se fundamental. Um aspecto fundamental da proteção de dados é entender o status da criptografia de disco. Isso nos leva ao nosso ponto principal: um script do PowerShell que pode identificar o número de unidades desbloqueadas e totalmente descriptografadas.
Histórico
A criptografia de disco é, há muito tempo, a pedra angular da segurança das informações, especialmente em empresas que armazenam grandes volumes de dados confidenciais. Os profissionais de TI e os provedores de serviços gerenciados (MSPs) se esforçam para garantir que as unidades de disco permaneçam criptografadas para impedir o acesso não autorizado. O monitoramento do status da criptografia torna-se uma tarefa crítica, daí a necessidade de scripts eficientes que esclareçam quais unidades podem estar vulneráveis. Nosso script atende exatamente a essa necessidade.
O roteiro
#Requires -Version 2.0
<#
.SYNOPSIS
Returns the number of drives in the Unlocked and FullyDecrypted state.
.DESCRIPTION
Returns the number of drives in the Unlocked and FullyDecrypted state.
.EXAMPLE
No parameters needed.
.EXAMPLE
PS C:> Get-UnencryptedDiskCount.ps1
No Parameters needed
.OUTPUTS
int
.NOTES
Minimum OS Architecture Supported: Windows 7, Windows Server 2012
Uses manage-bde.exe or Get-BitLockerVolume depending on the version of PowerShell
Release Notes:
Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms.
Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party.
Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider.
Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations.
Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks.
Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script.
EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
Misc
#>
[CmdletBinding()]
param ()
begin {
function Test-IsElevated {
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
{ Write-Output $true }
else
{ Write-Output $false }
}
function Get-DriveLetter {
param()
Get-Disk | Where-Object { $_.bustype -ne 'USB' } | Get-Partition | Where-Object { $_.DriveLetter } | Select-Object -ExpandProperty DriveLetter
}
function Invoke-ManageBDE {
[CmdletBinding()]
param ()
# Check if manage-bde.exe is available
if ((Get-Command -Name "manage-bde.exe" -ErrorAction SilentlyContinue)) {
# Get physical drives
Get-DriveLetter | ForEach-Object {
$DriveLetter = $_
$ReturnObj = [PSCustomObject]@{
MountPoint = "$_`:"
}
# Get data from manage-bde.exe and convert the text to objects for easier processing
(manage-bde.exe -status "$_`:") -split "`n" | Where-Object { $_ -like "*:*" } | ForEach-Object {
$First = ($_ -split ":")[0].Trim() -replace ' '
$Last = ($_ -split ":")[1].Trim() -replace ' '
if ($First -notlike "Name" -and $First -notlike "BitLocker Drive Encryption" -and $First -notlike "Volume $DriveLetter") {
if ($First -like "ConversionStatus") {
# Renames ConversionStatus to VolumeStatus to match Get-BitLockerVolume's output
$ReturnObj | Add-Member -MemberType NoteProperty -Name "VolumeStatus" -Value $Last
}
else {
$ReturnObj | Add-Member -MemberType NoteProperty -Name $First -Value $Last
}
}
}
$ReturnObj
} | Select-Object MountPoint, LockStatus, VolumeStatus
}
else {
Write-Host "Windows Feature BitLocker is not install."
Write-Output 0
}
}
}
process {
if (-not (Test-IsElevated)) {
Write-Error -Message "Access Denied. Please run with Administrator privileges."
exit 1
}
$Result = if ($PSVersionTable.PSVersion.Major -le 4) {
Invoke-ManageBDE
}
else {
try {
Get-DriveLetter | Get-BitLockerVolume | Select-Object MountPoint, LockStatus, VolumeStatus
}
catch {
Write-Output "Falling back on manage-bde.exe"
Invoke-ManageBDE
}
}
$UnencryptedDisks = if ($Result) {
(($Result | Where-Object { "Unlocked" -like $_.LockStatus -and "FullyDecrypted" -like $_.VolumeStatus }).LockStatus).Count
}
else {
(Get-DriveLetter).Count
}
# Return a count of Unlocked drives
Write-Host "Unencrypted Disk Count: $UnencryptedDisks"
# Return an exit code of 2 if more than 1 disk is unencrypted
if ($UnencryptedDisks -gt 0) {
exit 2
}
exit 0
}
end {}
Acesse mais de 300 scripts no NinjaOne Dojo
Detalhamento
O script é estruturado meticulosamente para fornecer uma contagem de discos não criptografados. Veja como ele atinge seu objetivo:
- Verificação da elevação: Inicialmente, o script garante que seja executado com privilégios de administrador. Isso garante que ele possa acessar as informações necessárias do disco sem restrições.
- Recuperação de letras de unidade: O script obtém as letras de unidade de todas as unidades não conectadas à USB.
- Status da criptografia: Dependendo da versão do PowerShell e da disponibilidade de utilitários específicos, o script verifica o status da criptografia por meio de manage-bde.exe ou Get-BitLockerVolume.
- Agrupamento e exibição de resultados: O script conta o número de unidades que estão“Unlocked” (desbloqueadas) e“FullyDecrypted” (totalmente descriptografadas) e exibe o resultado.
- Códigos de saída: Ele oferece códigos de saída para indicar o resultado. Um código de saída de “2” significa mais de um disco não criptografado, enquanto “0” indica que está tudo limpo.
Casos de uso em potencial
Imagine um profissional de TI, Alex, trabalhando em uma empresa de saúde com centenas de computadores. Cada dispositivo contém dados confidenciais do paciente, o que torna a criptografia crucial. Periodicamente, Alex precisa garantir que as unidades de cada máquina sejam criptografadas. Usando esse script, ele pode coletar dados de forma eficiente e, assim, lidar rapidamente com possíveis vulnerabilidades.
Comparações
Embora existam outros métodos, como soluções de software de terceiros que oferecem monitoramento de criptografia de disco, nosso script se destaca por sua simplicidade e integração direta com utilitários nativos do Windows. Enquanto muitas soluções exigem uma configuração prolongada ou taxas de licenciamento, esse script do PowerShell é leve, econômico e pode ser executado instantaneamente.
Implicações
Embora o script seja uma ferramenta formidável, é fundamental compreender seus resultados. Os discos não criptografados em um ambiente corporativo podem levar a violações de dados. Assim, o script não apenas informa, mas é um sistema de alerta antecipado.
Recomendações
- Sempre execute o script periodicamente, especialmente após a introdução de novas unidades ou sistemas em sua rede.
- Integre seus resultados a outras ferramentas de monitoramento para obter um painel de segurança abrangente.
- Considere a automação que alerta a equipe de TI imediatamente se uma unidade não criptografada for detectada.
Considerações finais
No contexto da criptografia de disco, uma ferramenta que fornece insights como o nosso script do PowerShell é inestimável. Para plataformas como a NinjaOne, que se concentra no gerenciamento integrado de TI, a incorporação desses scripts pode oferecer aos usuários uma visão mais holística da segurança de TI. Em uma época em que as violações de dados estão se tornando mais frequentes, as ferramentas que podem oferecer insights em tempo real sobre vulnerabilidades, como unidades não criptografadas, não são apenas úteis, mas essenciais.