Principais conclusões
- Monitoramento de dispositivos USB: O script é essencial para detectar e alertar os profissionais de TI sobre conexões de dispositivos USB.
- Melhoria de segurança: Ajuda a impedir o acesso e a transferência não autorizados de dados por meio de pen drives.
- Alertas personalizáveis: Oferece flexibilidade com o registro opcional de campos personalizados para alertas e gravações sob medida.
- Compatibilidade entre versões: É compatível com o PowerShell 5 e versões posteriores, garantindo ampla compatibilidade com os sistemas Windows.
- Alertas em tempo real: Envia notificações imediatas assim que o dispositivo USB é conectado, permitindo respostas rápidas em matéria de segurança.
- Dependência minimizada: Elimina a necessidade de software de monitoramento de terceiros, integrando-se diretamente às operações do sistema.
- Coleta de dados: Reúne informações abrangentes sobre dispositivos USB conectados, auxiliando na análise de segurança e na tomada de decisões.
- simples, mas eficaz: O script tem uma abordagem simples, mas é muito eficaz na área de segurança de TI.
- Integração com ferramentas de gestão: Pode ser integrado perfeitamente a estruturas de gerenciamento como o NinjaOne para aprimorar as operações de TI.
- Fundamental para a infraestrutura de TI: Uma ferramenta essencial no arsenal dos profissionais de TI e dos MSPs para manter a segurança e a integridade da rede.
Contexto
Os dispositivos USB são onipresentes, práticos e, infelizmente, um vetor comum para ameaças à segurança. Para profissionais de TI e MSPs, o monitoramento das conexões de dispositivos USB é fundamental para impedir o acesso ou a transferência não autorizada de dados. O script do PowerShell em questão foi desenvolvido para essa finalidade. Ele avisa os administradores quando uma unidade USB é conectada a um sistema e, opcionalmente, registra o evento, aumentando a segurança e o controle em ambientes de rede.
O roteiro:
<#
.SYNOPSIS
Alerts when a USB drive is detected and optionally saves the results to a Custom Field.
.DESCRIPTION
Alerts when a USB drive is detected and optionally saves the results to a Custom Field.
.EXAMPLE
(No Parameters)
No USB Drives are present.
.EXAMPLE
(No Parameters)
C:\Users\KyleBohlander\Documents\bitbucket_clientscripts\client_scripts\src\Test-USBDrive.ps1 : A USB Drive has been detected!
At line:1 char:1
+ .\src\Test-USBDrive.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : LimitsExceeded: (:) [Write-Error], Exception
+ FullyQualifiedErrorId : System.Exception,Test-USBDrive.ps1
Index Caption SerialNumber Partitions
----- ------- ------------ ----------
1 Samsung Flash Drive USB Device AA00000000000489 1
PARAMETER: -CustomFieldName "replaceMeWithACustomFieldName"
Name of a custom field to save the results to. This is optional; results will also output to the activity log.
.OUTPUTS
None
.NOTES
Minimum supported OS: Windows 10, Server 2012 R2
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).
#>
[CmdletBinding()]
param (
[Parameter()]
[String]$CustomFieldName
)
begin {
# Grab CustomFieldName from dynamic script form
if ($env:customFieldName -and $env:customFieldName -notlike "null") { $CustomFieldName = $env:customFieldName }
# Initialize exit code
$ExitCode = 0
# Initialize generic list for the report
$Report = New-Object System.Collections.Generic.List[String]
$CustomFieldReport = New-Object System.Collections.Generic.List[String]
}
process {
# Get a list of USB drives
$USBDrives = if ($PSVersionTable.PSVersion.Major -ge 5) {
Get-CimInstance win32_diskdrive | Where-Object { $_.InterfaceType -eq 'USB' }
}
else {
Get-WmiObject win32_diskdrive | Where-Object { $_.InterfaceType -eq 'USB' }
}
# Alert if a USB drive is detected
if ($USBDrives) {
Write-Error -Message "A USB Drive has been detected!" -Category LimitsExceeded -Exception (New-Object -TypeName System.Exception)
# Grab relevant information about the USB Drive
$USBDrives | ForEach-Object {
$Report.Add( ($_ | Format-Table Index, Caption, SerialNumber, Partitions | Out-String) )
if ($CustomFieldName) { $CustomFieldReport.Add( ($_ | Format-List Index, Caption, SerialNumber, Partitions | Out-String) ) }
$Report.Add( (Get-Partition -DiskNumber $_.Index | Get-Volume | Format-Table DriveLetter, FriendlyName, DriveType, HealthStatus, SizeRemaining, Size | Out-String) )
if ($CustomFieldName) { $CustomFieldReport.Add( (Get-Partition -DiskNumber $_.Index | Get-Volume | Format-List DriveLetter, FriendlyName, DriveType, HealthStatus, SizeRemaining, Size | Out-String) ) }
}
# Change exit code to indicate failure/alert
$ExitCode = 1
}
else {
# If no drives were found we'll need to indicate that.
$Report.Add("No USB Drives are present.")
if ($CustomFieldName) { $CustomFieldReport.Add("No USB Drives are present.") }
}
# Write to the activity log
Write-Host $Report
# Save to custom field if given one
if ($CustomFieldName) {
Write-Host ""
Ninja-Property-Set -Name $CustomFieldName -Value $CustomFieldReport
}
# Exit with appropriate exit code
Exit $ExitCode
}
end {
}
Acesse mais de 300 scripts no NinjaOne Dojo
Discriminação detalhada
O script funciona em três fases: Inicialização, processamento e encerramento.
- e de inicialização: Primeiro, verifica se o nome de um campo personalizado foi fornecido por meio da variável de ambiente $env:customFieldName. O nome deste campo personalizado é utilizado para fins de registro em log. O script inicializa duas listas: $Report e $CustomFieldReport, para armazenar informações sobre as unidades USB detectadas.
- Processando… O script utiliza Get-CimInstance ou Get-WmiObject (dependendo da versão do PowerShell) para listar as unidades USB conectadas ao sistema. Se for detectada alguma unidade, isso gera um erro com uma mensagem indicando a detecção de uma unidade USB. Em seguida, o script coleta informações detalhadas sobre cada unidade, incluindo índice, legenda, número de série, partições e outros detalhes do volume. Esses dados são adicionados às listas $Report e $CustomFieldReport.
- Rescisão O script conclui exibindo o conteúdo de $Report no log de atividades. Se for fornecido um nome de campo personalizado, essa informação também será definida no campo personalizado especificado por meio de Ninja-Property-Set.
Possíveis casos de uso
Imagine um administrador de TI em uma instituição financeira. Eles precisam garantir que dados confidenciais não vazem por meio de dispositivos USB. Ao implementar esse script, eles podem receber alertas imediatos assim que um dispositivo USB for conectado, o que permite uma ação rápida para mitigar possíveis riscos à segurança.
Comparações
Os métodos tradicionais de monitoramento das atividades USB envolvem verificações manuais ou o uso de softwares de terceiros. Este script do PowerShell oferece uma abordagem mais integrada e personalizável, fornecendo alertas em tempo real sem a necessidade de instalações de software adicionais.
Implicações
A capacidade do script de detectar dispositivos USB em tempo real é fundamental para manter a integridade e a segurança dos dados. Dispositivos USB não autorizados podem servir como vetores de malware ou ferramentas para a exfiltração de dados. A detecção precoce permite que as equipes de TI respondam rapidamente a possíveis ameaças.
Recomendações
- Atualizações periódicas Mantenha o script e o ambiente do PowerShell atualizados para garantir compatibilidade e segurança.
- Personalização: Adapte o roteiro para atender às necessidades e políticas específicas da organização.
- Testando Teste regularmente o script em um ambiente controlado para garantir sua eficácia.
Considerações finais
No contexto da segurança e gestão de TI, a NinjaOne oferece soluções robustas que complementam os scripts do PowerShell d , como este aqui:. Ao integrar esses scripts em estruturas mais amplas de gerenciamento de TI do tipo “ ”, o NinjaOne ajuda a otimizar as operações, aprimorar a segurança e garantir o funcionamento contínuo das infraestruturas de TI. Este script é uma prova do poder do PowerShell no conjunto de ferramentas modernas de TI, oferecendo recursos essenciais para o monitoramento e a proteção de ambientes de TI.