Question Event securite: nombre de faute de frappe

Plus d'informations
il y a 16 ans 1 mois #6176 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 mois #6178 par Arnaud Petitjean
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

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.

Plus d'informations
il y a 16 ans 1 mois #6190 par rodriguez
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 \&quot;Negociate\&quot; 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.

Plus d'informations
il y a 16 ans 1 mois #6199 par Laurent Dardenne
Salut,
tu devrais masquer les noms !!!

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 1 mois #6221 par Arnaud Petitjean
Certes les noms sont masques mais le resultat est maintenant incomprehensible :)

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.

Plus d'informations
il y a 16 ans 3 semaines #6226 par rodriguez
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
Propulsé par Kunena