none
monitorar as portas usb da rede e gravar log RRS feed

  • Pergunta

  • Olá,

     

    eu procurei aqui na busca mais não achei, o que eu achei estava com respostas vagas ou não estava respondido.

    basicamente, eu estou tentando fazer um script pra monitorar o usb aqui na rede, caso o usuario espete o pendrive na maquina, o script geraria um log com data e hora dentro de uma pasta na maquina do suporte.gostaria também que o usuario fosse informado que ele não tem permissão para pendrive e que foi encaminhado um log ao administrador.

    o que eu cheguei mais perto de encontrar aqui no forum foi um script para monitorar usb so que ele envia via USB do Vinicius Canto, e um outro script do Rodriguinho que consta no final desse topico http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/4323d6a9-954c-4947-b234-49aa88337452

    mais achei confesso que entendi pouco pois estou começando agora a trabalhar com isso.

    no log teria que registrar a hora e a data, o nome de usuario e o nome da maquina.

    se alguém puder me explicar mais simplificado ai eu so vou usar GPO pra executar o script.

    desde já agradeço

    sábado, 26 de novembro de 2011 03:55

Respostas

  • Boa Noite,

    Localizei um Material bem bacana, no mesmo sentido de monitoração que deseja.
    No Blog do Vinicius Canto. 
    Fonte: http://viniciuscanto.blogspot.com.br/2006/07/how-to-monitor-when-user-pugs-usb.html
    User pugs a USB Storage Device
    Aqui segue uma das minhas obras primas. Trata-se de um script (WSH + VBScript) que fica rodando em background, monitorando quando alguém insere um dispositivo de armazenamento USB. Quando o usuário insere o dispositivo, o sistema envia um email pro administrador.
    Útil, não?

    Basta salvar em um arquivo texto com extensão .VBS e rodar. Cuidado com as quebras de linha...
    'USB Storage Monitor
    '
    'Vinicius Canto 
    'MVP Visual Developer - Scripting
    '
    'Grupo PET Computagco - Universidade de Sco Paulo - Brasil
    
    'Disabling error messages...
    On Error Resume Next
    
    
    'Main routine
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'Win32_PNPEntity' and TargetInstance.DeviceId like '%USBStor%'")
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Notifier(objLatestEvent.TargetInstance)
    Loop
    
    Sub Notifier(object)
    Set objNet = CreateObject("Wscript.Network")
    
    'You can change the function below to perform other actions
    SendMailWithoutSSL _
    "admin@network.com", _
    "USB storage detected on " & objNet.Computername, _
    "machine@network.com", _
    "The user " & objNet.Username & " connected an USB Storage device on computer.", _
    "smtp.network.com", _
    25, _
    "user", _
    "pass"
    End Sub
    
    
    
    
    ' CDOSYS official documentation: 
    ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_cdo_queue_top.asp
    '
    ' by Vinicius Canto 
    Sub SendMailWithoutSSL(strDestination, strTitle, strFrom, strMessage, strSMTP, intPort, strUsername, strPassword)
    set oMessage = CreateObject("CDO.Message")
    set oConf = CreateObject("CDO.Configuration")
    Set oFields = oConf.Fields
    
    
    
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = intPort
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic: Auth with user and password sent with plain text
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUsername
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/Smtpusessl") = false
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '1: Using local SMTP; 2: Using port; 3: Using Exchange
    oFields.Update
    
    oMessage.Fields.Item("urn:schemas:mailheader:to") = strDestination
    oMessage.Fields.Item("urn:schemas:mailheader:from") = strFrom
    oMessage.Fields.Item("urn:schemas:mailheader:sender") = strFrom 'reply-to
    oMessage.Fields.Item("urn:schemas:mailheader:subject")= strTitle
    oMessage.Fields.Item("urn:schemas:mailheader:x-mailer") = "Vinicius Small Mail System -- by Vinicius Canto "
    oMessage.Fields.Update
    
    oMessage.Configuration = oConf
    
    oMessage.TextBody = strMessage
    oMessage.Send
    End Sub
    

    Esse daí eu fiz a pedido de um amigo meu, Sérgio Dias, MVP e Analista Consultor na área de Segurança da Informação. Aliás, aqui vai o link pro blog dele, que necessita urgentemente de uma atualização: =)
    http://msmvps.com/blogs/sdias

    O mais legal disso tudo é que não existe nada parecido no mundo ainda. Vou mandar pra tudo quanto é lugar agora... ScriptCenter, Knowledge Base, etc...

    Abs


    * Ajude a organizar melhor o Fórum, dando Feedback sobre a dúvida solicitada, e marcando como Útil e como Resposta, a postagem dos colaboradores que resolveram o seu caso, ou foram úteis *

    segunda-feira, 4 de junho de 2012 00:27
    Moderador
  • Cara modifiquei um pouco o Cod do Vinicius, coloquei como vc sugeriu...

    faça um teste....

    'USB Storage Monitor
    'Vinicius Canto
    'MVP Visual Developer - Scripting
    'Grupo PET Computagco - Universidade de Sco Paulo - Brasil
    'Disabling error messages...
    On Error Resume Next
    'Main routine
    strComputer = "."
    Set objNet = CreateObject("Wscript.Network")
    Set objFileSys = CreateObject("Scripting.FileSystemObject")
    'Coleta o Ip da maquina
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
            IP_V4 = IPConfig.IPAddress(0)
    		IP_V6 = IPConfig.IPAddress(1)
    		Next
        End If
    Next
    'Captura o evento do USB
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'Win32_PNPEntity' and TargetInstance.DeviceId like '%USBStor%'")
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Notifier(objLatestEvent.TargetInstance)
    Loop
    Sub Notifier(object)
    
    'Mensagem de Notificação
    MsgBox "    Caro colaborador "& objNet.Username & chr(13)_
    & "Você Não esta autorizado a usar PenDrivers" & chr(13)_
    & "Foi encaminhado um log ao administrador" & chr(13)_
    & "Informando a ocorrêcia na data de hoje",48,".:: Segurança da Informação :: " & Date &" ::."
    
    'Caminho onde o Log será salvo
    nomeArquivo = "\\Server\Usb\" & objNet.Computername &".txt"
    
    If objFileSys.FileExists(nomeArquivo) Then
    Set arquivo = objFileSys.OpentextFile(nomeArquivo,8)
     Else
    Set arquivo = objFileSys.CreateTextFile(nomeArquivo)
     End If
    
    'Conteudo do Log
    arquivo.writeline "----------------------------------------------"
    arquivo.writeline "USB detectado em " & objNet.Computername
    arquivo.writeline "IPv 4 :"&IP_V4
    arquivo.writeline "IPv 6 :"&IP_V6
    arquivo.writeline "Usuário: " & objNet.Username
    arquivo.writeline "Finalizado: " & Date & " - " & time
    arquivo.writeline "----------------------------------------------"
    arquivo.close
    End Sub
    
    
    quarta-feira, 6 de junho de 2012 03:25

Todas as Respostas

  • Pra facilitar mais ainda pessoal pode ser tipo uma bat que vc digita o nome do computador na rede que vc quer verificar, ele verifica se existe unidade e: conectada.

    eu não sei como fazer isso funcionar.


    ---------------------------------//----------------------------------//----------------------------

    Conseguir fazer funcionar mais ou menos!

    usei o psinfo com seguinte comando:

    psinfo \\xx.xx.xx.xx -d " Volume Type"

    ele lista somente as unidades que estão conectadas.

    mais tem dois problemas:

    1 - ele lista todas as unidades e eu só quero saber da unidade e: , eu teria que ficar filtrando no log.

    2 - ele é lento.

    aqui ja existe o bloqueio de pendrive via registro, mais estamos desconfiados que tem gente que ta usando, então é pra pegar no flagra mesmo se houver.

    • Editado Miguel FP quarta-feira, 30 de novembro de 2011 02:19
    quarta-feira, 30 de novembro de 2011 02:04
  • Boa Noite,

    Localizei um Material bem bacana, no mesmo sentido de monitoração que deseja.
    No Blog do Vinicius Canto. 
    Fonte: http://viniciuscanto.blogspot.com.br/2006/07/how-to-monitor-when-user-pugs-usb.html
    User pugs a USB Storage Device
    Aqui segue uma das minhas obras primas. Trata-se de um script (WSH + VBScript) que fica rodando em background, monitorando quando alguém insere um dispositivo de armazenamento USB. Quando o usuário insere o dispositivo, o sistema envia um email pro administrador.
    Útil, não?

    Basta salvar em um arquivo texto com extensão .VBS e rodar. Cuidado com as quebras de linha...
    'USB Storage Monitor
    '
    'Vinicius Canto 
    'MVP Visual Developer - Scripting
    '
    'Grupo PET Computagco - Universidade de Sco Paulo - Brasil
    
    'Disabling error messages...
    On Error Resume Next
    
    
    'Main routine
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'Win32_PNPEntity' and TargetInstance.DeviceId like '%USBStor%'")
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Notifier(objLatestEvent.TargetInstance)
    Loop
    
    Sub Notifier(object)
    Set objNet = CreateObject("Wscript.Network")
    
    'You can change the function below to perform other actions
    SendMailWithoutSSL _
    "admin@network.com", _
    "USB storage detected on " & objNet.Computername, _
    "machine@network.com", _
    "The user " & objNet.Username & " connected an USB Storage device on computer.", _
    "smtp.network.com", _
    25, _
    "user", _
    "pass"
    End Sub
    
    
    
    
    ' CDOSYS official documentation: 
    ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_cdo_queue_top.asp
    '
    ' by Vinicius Canto 
    Sub SendMailWithoutSSL(strDestination, strTitle, strFrom, strMessage, strSMTP, intPort, strUsername, strPassword)
    set oMessage = CreateObject("CDO.Message")
    set oConf = CreateObject("CDO.Configuration")
    Set oFields = oConf.Fields
    
    
    
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = intPort
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic: Auth with user and password sent with plain text
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUsername
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/Smtpusessl") = false
    oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '1: Using local SMTP; 2: Using port; 3: Using Exchange
    oFields.Update
    
    oMessage.Fields.Item("urn:schemas:mailheader:to") = strDestination
    oMessage.Fields.Item("urn:schemas:mailheader:from") = strFrom
    oMessage.Fields.Item("urn:schemas:mailheader:sender") = strFrom 'reply-to
    oMessage.Fields.Item("urn:schemas:mailheader:subject")= strTitle
    oMessage.Fields.Item("urn:schemas:mailheader:x-mailer") = "Vinicius Small Mail System -- by Vinicius Canto "
    oMessage.Fields.Update
    
    oMessage.Configuration = oConf
    
    oMessage.TextBody = strMessage
    oMessage.Send
    End Sub
    

    Esse daí eu fiz a pedido de um amigo meu, Sérgio Dias, MVP e Analista Consultor na área de Segurança da Informação. Aliás, aqui vai o link pro blog dele, que necessita urgentemente de uma atualização: =)
    http://msmvps.com/blogs/sdias

    O mais legal disso tudo é que não existe nada parecido no mundo ainda. Vou mandar pra tudo quanto é lugar agora... ScriptCenter, Knowledge Base, etc...

    Abs


    * Ajude a organizar melhor o Fórum, dando Feedback sobre a dúvida solicitada, e marcando como Útil e como Resposta, a postagem dos colaboradores que resolveram o seu caso, ou foram úteis *

    segunda-feira, 4 de junho de 2012 00:27
    Moderador
  • Cara modifiquei um pouco o Cod do Vinicius, coloquei como vc sugeriu...

    faça um teste....

    'USB Storage Monitor
    'Vinicius Canto
    'MVP Visual Developer - Scripting
    'Grupo PET Computagco - Universidade de Sco Paulo - Brasil
    'Disabling error messages...
    On Error Resume Next
    'Main routine
    strComputer = "."
    Set objNet = CreateObject("Wscript.Network")
    Set objFileSys = CreateObject("Scripting.FileSystemObject")
    'Coleta o Ip da maquina
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
            IP_V4 = IPConfig.IPAddress(0)
    		IP_V6 = IPConfig.IPAddress(1)
    		Next
        End If
    Next
    'Captura o evento do USB
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'Win32_PNPEntity' and TargetInstance.DeviceId like '%USBStor%'")
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Notifier(objLatestEvent.TargetInstance)
    Loop
    Sub Notifier(object)
    
    'Mensagem de Notificação
    MsgBox "    Caro colaborador "& objNet.Username & chr(13)_
    & "Você Não esta autorizado a usar PenDrivers" & chr(13)_
    & "Foi encaminhado um log ao administrador" & chr(13)_
    & "Informando a ocorrêcia na data de hoje",48,".:: Segurança da Informação :: " & Date &" ::."
    
    'Caminho onde o Log será salvo
    nomeArquivo = "\\Server\Usb\" & objNet.Computername &".txt"
    
    If objFileSys.FileExists(nomeArquivo) Then
    Set arquivo = objFileSys.OpentextFile(nomeArquivo,8)
     Else
    Set arquivo = objFileSys.CreateTextFile(nomeArquivo)
     End If
    
    'Conteudo do Log
    arquivo.writeline "----------------------------------------------"
    arquivo.writeline "USB detectado em " & objNet.Computername
    arquivo.writeline "IPv 4 :"&IP_V4
    arquivo.writeline "IPv 6 :"&IP_V6
    arquivo.writeline "Usuário: " & objNet.Username
    arquivo.writeline "Finalizado: " & Date & " - " & time
    arquivo.writeline "----------------------------------------------"
    arquivo.close
    End Sub
    
    
    quarta-feira, 6 de junho de 2012 03:25