10
juin
2011
VBS / WMI / Recherche de PC connectés à une file d’impression particulière
juin
2011
Cas de figure simple mais fréquent, une enquête de routine au sujet d’impressions fantômes…
Ces impressions fantômes sont probablement le fait d’un pc mal configuré, plus que de la malveillance…
Face à cela, à moins de disposer AVANT d’un écosystème de log, il faut prendre le problème à l’envers, et se demander qui est en mesure d’envoyer des jobs sur l’imprimante qui sort des documents que personne n’imprime …
En pré requis,
- Configurer un partage réseau avec ACL large (tout le monde en écriture)
- Rajouter l’exécution de ce bout de script dans le logon script des utilisateurs
Ensuite, tout le script repose sur une requête WMI extrêmement basique, et sur l’écriture d’un fichier.
B-a-s-i-q-u-e, mais éprouvé !
'Scan port IP pour recherche d'une cible et écriture des positifs dans un partage réseau '---------------------------------------------------------------------------------------
Set WshNetwork = WScript.CreateObject("WScript.Network")
NomMachine = WshNetwork.ComputerName
NomUtilisateur = WshNetwork.UserName
'Wscript.Echo "<debut> "
ipcible="XXX.XXX.XXX.XXX" ' <- inserer votre ip cible ici
partage="\\[votre serveur]\test_scan_port_ip\" '<-inserer votre partage réseau ici
strComputer = Nommachine
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPorts = objWMIService.ExecQuery _ ("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
'Wscript.Echo "Description: " & objPort.Description
'Wscript.Echo "Host Address: " & objPort.HostAddress
'Wscript.Echo "Name: " & objPort.Name
'Wscript.Echo "Port Number: " & objPort.PortNumber
'Wscript.Echo "Protocol: " & objPort.Protocol
'Wscript.Echo "SNMP Community: " & objPort.SNMPCommunity
'Wscript.Echo "SNMP Dev Index: " & objPort.SnMPDevIndex
'Wscript.Echo "SNMP Enabled: " & objPort.SNMPEnabled
'wscript.echo "-------------------------------------"
if objPort.HostAddress=ipcible then
'wscript.echo "BINGO NOUS AVONS UN GAGNANT : " & NomMachine & "\" & NomUtilisateur
'<<<<<<< ECRITURE dans un fichier >>>>>>>>>>>>
'déclaration file system object
Dim fso
'instanciation
Set FSO = CreateObject("Scripting.FileSystemObject")
'on instance le fichier texte dans lequel on veut ecrire
Set Ftxt = FSO.createTextFile(partage & NomMachine & "_" & NomUtilisateur & ".txt" ,true)
'true=ecrase 'On ecrit ce que l'on veut dans le fichier
Ftxt.writeline ("Description: " & objPort.Description)
Ftxt.writeline ("Host Address: " & objPort.HostAddress)
Ftxt.writeline ("Name: " & objPort.Name)
Ftxt.writeline ("Port Number: " & objPort.PortNumber)
Ftxt.writeline ("Protocol: " & objPort.Protocol)
Ftxt.writeline ("SNMP Community: " & objPort.SNMPCommunity)
Ftxt.writeline ("SNMP Dev Index: " & objPort.SnMPDevIndex)
Ftxt.writeline ("SNMP Enabled: " & objPort.SNMPEnabled)
Ftxt.Close end if
Next
'Wscript.Echo "<fin>"
Set WshNetwork = WScript.CreateObject("WScript.Network")
NomMachine = WshNetwork.ComputerName
NomUtilisateur = WshNetwork.UserName
'Wscript.Echo "<debut> "
ipcible="XXX.XXX.XXX.XXX" ' <- inserer votre ip cible ici
partage="\\[votre serveur]\test_scan_port_ip\" '<-inserer votre partage réseau ici
strComputer = Nommachine
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPorts = objWMIService.ExecQuery _ ("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
'Wscript.Echo "Description: " & objPort.Description
'Wscript.Echo "Host Address: " & objPort.HostAddress
'Wscript.Echo "Name: " & objPort.Name
'Wscript.Echo "Port Number: " & objPort.PortNumber
'Wscript.Echo "Protocol: " & objPort.Protocol
'Wscript.Echo "SNMP Community: " & objPort.SNMPCommunity
'Wscript.Echo "SNMP Dev Index: " & objPort.SnMPDevIndex
'Wscript.Echo "SNMP Enabled: " & objPort.SNMPEnabled
'wscript.echo "-------------------------------------"
if objPort.HostAddress=ipcible then
'wscript.echo "BINGO NOUS AVONS UN GAGNANT : " & NomMachine & "\" & NomUtilisateur
'<<<<<<< ECRITURE dans un fichier >>>>>>>>>>>>
'déclaration file system object
Dim fso
'instanciation
Set FSO = CreateObject("Scripting.FileSystemObject")
'on instance le fichier texte dans lequel on veut ecrire
Set Ftxt = FSO.createTextFile(partage & NomMachine & "_" & NomUtilisateur & ".txt" ,true)
'true=ecrase 'On ecrit ce que l'on veut dans le fichier
Ftxt.writeline ("Description: " & objPort.Description)
Ftxt.writeline ("Host Address: " & objPort.HostAddress)
Ftxt.writeline ("Name: " & objPort.Name)
Ftxt.writeline ("Port Number: " & objPort.PortNumber)
Ftxt.writeline ("Protocol: " & objPort.Protocol)
Ftxt.writeline ("SNMP Community: " & objPort.SNMPCommunity)
Ftxt.writeline ("SNMP Dev Index: " & objPort.SnMPDevIndex)
Ftxt.writeline ("SNMP Enabled: " & objPort.SNMPEnabled)
Ftxt.Close end if
Next
'Wscript.Echo "<fin>"