Question Event securite: nombre de faute de frappe
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
il y a 16 ans 1 mois #6176
par rodriguez
Event securite: nombre de faute de frappe a été créé par rodriguez
ce script est la finalité d'un script déja créé pour compter le nombre d'évènements dans un journal sécurité
[code:1]
Remove-Item c:\systools\bat\temp\event.txt
Remove-Item c:\systools\bat\temp\login.txt
Remove-Item c:\systools\bat\temp\comptes.txt
$preevent= 00
#intervalle represente le nb de jour à examinier.. rétention du journal maxi est de 3 jours
$intervalle = 3
$logs = [System.Diagnostics.EventLog]::GetEventLogs('nom-machine.**.***.local')
#logs[7] représent lors du \"get-eventlog -list\" la place du security sur le serveur, ceci peut
#varier celon le serveur.
$colItems = $logs[7].entries
$Now = Get-Date
$lastWrite = $Now.AddDays(-$intervalle)
#numero de l'event à chercher. 529 c'est mot de passe faux.
$events = 529
foreach ($item in $colItems){
if (( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)){
if ($item.TimeWritten -notlike $preevent){
#“Serveur incriminé : ” + $item.MachineName
#”====================================================” >> c:\systools\bat\temp\event.txt
#“Event ID: ” + $item.EventID >> c:\systools\bat\temp\event.txt
$preevent = “” + $item.TimeWritten
“Date de l'évènement: ” + $item.TimeWritten >> c:\systools\bat\temp\event.txt
#“Categorie: ” + $item.Category
#“Type de l'entrée: ” + $item.EntryType
#“Nom utilisateur: ” + $item.UserName
#“Data: ” + $item.Data
#“Source: ” + $item.Source
#“Date de l'écriture de l'évènement: ” + $item.TimeGenerated
“Message: ” + $item.Message >> c:\systools\bat\temp\event.txt
#“====================================================” >> c:\systools\bat\temp\event.txt
#“ ”
#$preevent = '$item.TimeWritter'
#Write-Host $preevent
}
}
}
#Lecture du fichier Event.txt
$comptes = get-content c:\systools\bat\temp\event.txt
for ($i=0; $i -lt $comptes.length; $i++)
{
if ($comptes[$i] -match \" Nom de l'utilisateur : \"«»)
{
#récuperation du nom situé avec le terme Nom de l'utilisateur
$user = $comptes[$i].Split()[-1]
}
if ($comptes[$i] -match \"Package d'authentification :\"«»)
{
$result = $comptes[$i].split()[-1]
# protocole definissant que les ouverture de sessions.
if ($result -eq \"Negotiate\" )
{
#write-Host journal event Negociate : $user
#Initialisation des paramètres de l'active directory
$ldapquery = [ADSI] 'LDAP://OU=Utilisateurs,DC=****,DC=***,DC=local'
$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter='(&(objectCategory=person)(objectClass=user))'
# on rentre dans la boucle active directory pour alle rechercher l'age du password de l'utilisateur
$boucle = $objrechercher.findall()
foreach ($utilisateur in $boucle)
{
#recherche du login de l'utilisateur ainsi que son nom afin de rechercher les propriétés
# de l'utilisateur dans l'AD
$login = $utilisateur.properties.samaccountname
$name = $utilisateur.properties.name
# Write-Host AD $login
if ($login -eq $user)
{
$name >> c:\systools\bat\temp\login.txt
}
}
}
}
}
#compte le nombre fois que le login apparait
get-content c:\systools\bat\temp\login.txt | group-object >> c:\systools\bat\temp\comptes.txt
# Envois du fichier à G_wintel
$expediteur = \" JournalSecuriteAD@****.fr\"
$destinataire = \"*@**.fr\"
#$destinataire = \"stephane.rodriguez@****.fr\"
$serveur = \"smtp**.****.**\"
$fichier = \"c:\systools\bat\temp\comptes.txt\"
$objet = \"Journal de sécurité AD.\" + [System.DateTime]::Now
$texte = \"Bonjour,
Ce fichier TXT regroupe les erreurs d'ouverture de session,
cumulées par profil sur 3 jours. Le chiffre devant le nom
de l'utilisateur est le nombre d'echec d'ouverture de session.
Mail automatique ne pas répondre.\"
$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
$attachment = new-object System.Net.Mail.Attachment $fichier
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials
$client.Send($message)
#rodriguez stephane.
[/code:1]<br><br>Message édité par: noxydius, à: 16/02/10 13:39
[code:1]
Remove-Item c:\systools\bat\temp\event.txt
Remove-Item c:\systools\bat\temp\login.txt
Remove-Item c:\systools\bat\temp\comptes.txt
$preevent= 00
#intervalle represente le nb de jour à examinier.. rétention du journal maxi est de 3 jours
$intervalle = 3
$logs = [System.Diagnostics.EventLog]::GetEventLogs('nom-machine.**.***.local')
#logs[7] représent lors du \"get-eventlog -list\" la place du security sur le serveur, ceci peut
#varier celon le serveur.
$colItems = $logs[7].entries
$Now = Get-Date
$lastWrite = $Now.AddDays(-$intervalle)
#numero de l'event à chercher. 529 c'est mot de passe faux.
$events = 529
foreach ($item in $colItems){
if (( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)){
if ($item.TimeWritten -notlike $preevent){
#“Serveur incriminé : ” + $item.MachineName
#”====================================================” >> c:\systools\bat\temp\event.txt
#“Event ID: ” + $item.EventID >> c:\systools\bat\temp\event.txt
$preevent = “” + $item.TimeWritten
“Date de l'évènement: ” + $item.TimeWritten >> c:\systools\bat\temp\event.txt
#“Categorie: ” + $item.Category
#“Type de l'entrée: ” + $item.EntryType
#“Nom utilisateur: ” + $item.UserName
#“Data: ” + $item.Data
#“Source: ” + $item.Source
#“Date de l'écriture de l'évènement: ” + $item.TimeGenerated
“Message: ” + $item.Message >> c:\systools\bat\temp\event.txt
#“====================================================” >> c:\systools\bat\temp\event.txt
#“ ”
#$preevent = '$item.TimeWritter'
#Write-Host $preevent
}
}
}
#Lecture du fichier Event.txt
$comptes = get-content c:\systools\bat\temp\event.txt
for ($i=0; $i -lt $comptes.length; $i++)
{
if ($comptes[$i] -match \" Nom de l'utilisateur : \"«»)
{
#récuperation du nom situé avec le terme Nom de l'utilisateur
$user = $comptes[$i].Split()[-1]
}
if ($comptes[$i] -match \"Package d'authentification :\"«»)
{
$result = $comptes[$i].split()[-1]
# protocole definissant que les ouverture de sessions.
if ($result -eq \"Negotiate\" )
{
#write-Host journal event Negociate : $user
#Initialisation des paramètres de l'active directory
$ldapquery = [ADSI] 'LDAP://OU=Utilisateurs,DC=****,DC=***,DC=local'
$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter='(&(objectCategory=person)(objectClass=user))'
# on rentre dans la boucle active directory pour alle rechercher l'age du password de l'utilisateur
$boucle = $objrechercher.findall()
foreach ($utilisateur in $boucle)
{
#recherche du login de l'utilisateur ainsi que son nom afin de rechercher les propriétés
# de l'utilisateur dans l'AD
$login = $utilisateur.properties.samaccountname
$name = $utilisateur.properties.name
# Write-Host AD $login
if ($login -eq $user)
{
$name >> c:\systools\bat\temp\login.txt
}
}
}
}
}
#compte le nombre fois que le login apparait
get-content c:\systools\bat\temp\login.txt | group-object >> c:\systools\bat\temp\comptes.txt
# Envois du fichier à G_wintel
$expediteur = \" JournalSecuriteAD@****.fr\"
$destinataire = \"*@**.fr\"
#$destinataire = \"stephane.rodriguez@****.fr\"
$serveur = \"smtp**.****.**\"
$fichier = \"c:\systools\bat\temp\comptes.txt\"
$objet = \"Journal de sécurité AD.\" + [System.DateTime]::Now
$texte = \"Bonjour,
Ce fichier TXT regroupe les erreurs d'ouverture de session,
cumulées par profil sur 3 jours. Le chiffre devant le nom
de l'utilisateur est le nombre d'echec d'ouverture de session.
Mail automatique ne pas répondre.\"
$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
$attachment = new-object System.Net.Mail.Attachment $fichier
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials
$client.Send($message)
#rodriguez stephane.
[/code:1]<br><br>Message édité par: noxydius, à: 16/02/10 13:39
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #6178
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Event securite: nombre de faute de frappe
Salut Noxydius,
Merci pour ton script !
Ceci étant, afin qu'il puisse être utile à un plus grand nombre, pourrais tu donner un exemple d'utilisation ainsi que le résultat retourné s'il te plait ?
Je le déplace dans les contributions.
Encore merci,
Arnaud
Merci pour ton script !
Ceci étant, afin qu'il puisse être utile à un plus grand nombre, pourrais tu donner un exemple d'utilisation ainsi que le résultat retourné s'il te plait ?
Je le déplace dans les contributions.
Encore merci,
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
il y a 16 ans 1 mois #6190
par rodriguez
Réponse de rodriguez sur le sujet Re:Event securite: nombre de faute de frappe
Bonjour,
Ce Script permet de définir si un utilisateur mal veillant est en train d'essayer de craquer un compte en chainant les ouvertures de sessions.
Pour cela je filtre sur deux évènements le numero de l'ID de l'erreur et a l'interieur du champs de l'ID sur \"Negociate\" qui définit seulement les ouvertures de session car l'ID prend aussi les connections réseaux qui sont pas pertinents pour mon script.
la Résultante est un fichier TXT avec devant le Username de la personne le cumule de fois qu'elle apparait dans le journal de sécurité sur 3 jours.
Count Name Group
----
1 Olivier BACOUEL {Olivier BACOUEL}
2 Vincent SPI {Vincent SPI, Vincent SPI}
2 Pierric CARREAU {Pierric CARREAU, Pierric CARREAU}
2 Richard CAMILLO {Richard CAMILLO, Richard CAMILLO}
1 Christophe MANDIANT {Christophe MANDIANT}
3 Gaelle MOUSTIQUE {Gaelle MOUSTIQUE, Gaelle MOUSTIQUE, Gaelle MO...
2 Patrice PORCHE {Patrice PORCHE, Patrice PORCHE}
En dessous de 10 erreurs c'est encore anaudin.
A+
Message édité par: noxydius, à: 17/02/10 09:05
Message édité par: noxydius, à: 18/02/10 08:50
Message édité par: noxydius, à: 18/02/10 08:50<br><br>Message édité par: noxydius, à: 22/02/10 10:45
Ce Script permet de définir si un utilisateur mal veillant est en train d'essayer de craquer un compte en chainant les ouvertures de sessions.
Pour cela je filtre sur deux évènements le numero de l'ID de l'erreur et a l'interieur du champs de l'ID sur \"Negociate\" qui définit seulement les ouvertures de session car l'ID prend aussi les connections réseaux qui sont pas pertinents pour mon script.
la Résultante est un fichier TXT avec devant le Username de la personne le cumule de fois qu'elle apparait dans le journal de sécurité sur 3 jours.
Count Name Group
----
1 Olivier BACOUEL {Olivier BACOUEL}
2 Vincent SPI {Vincent SPI, Vincent SPI}
2 Pierric CARREAU {Pierric CARREAU, Pierric CARREAU}
2 Richard CAMILLO {Richard CAMILLO, Richard CAMILLO}
1 Christophe MANDIANT {Christophe MANDIANT}
3 Gaelle MOUSTIQUE {Gaelle MOUSTIQUE, Gaelle MOUSTIQUE, Gaelle MO...
2 Patrice PORCHE {Patrice PORCHE, Patrice PORCHE}
En dessous de 10 erreurs c'est encore anaudin.
A+
Message édité par: noxydius, à: 17/02/10 09:05
Message édité par: noxydius, à: 18/02/10 08:50
Message édité par: noxydius, à: 18/02/10 08:50<br><br>Message édité par: noxydius, à: 22/02/10 10:45
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 1 mois #6199
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Event securite: nombre de faute de frappe
Salut,
tu devrais masquer les noms !!!
tu devrais masquer les noms !!!
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 1 mois #6221
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Event securite: nombre de faute de frappe
Certes les noms sont masques mais le resultat est maintenant incomprehensible 
Le mieux aurait peut etre ete d'employer des noms fictifs.
Arnaud
Le mieux aurait peut etre ete d'employer des noms fictifs.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 61
- Remerciements reçus 0
il y a 16 ans 3 semaines #6226
par rodriguez
Réponse de rodriguez sur le sujet Re:Event securite: nombre de faute de frappe
Voila les noms sont inventés, en espérant que ceci est plus clair à comprendre.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.059 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Event securite: nombre de faute de frappe