Problem parsing irregular logs


#1

Hello everybody,

I have a problem for parsing some logs that are very different according to the type of log, they contain spaces in the keys and in the values which makes the parsing really difficult to do.

Here is an exemple of 5 types of logs i want to parse :

`Message=Un ticket de service Kerberos a été demandé.  Informations sur le compte :  Nom du compte :  USER@DOMAIN.SUB-DOMAIN  Domaine du compte :  DOMAIN.SUB-DOMAIN  GUID d’ouverture de session :  {9DF72FCD-C514-E27F-8D11-F1B3D663ED19}  Informations sur le service :  Nom du service :  TOTOTO$  ID du service :  DOMAIN\TOTOTO$  Informations sur le réseau :  Adresse du client :  ::ffff:1.1.1.1  Port client :  56938  Informations supplémentaires :  Options du ticket :  0x40810000  Type de chiffrement du ticket : 0x12  Code d’échec :  0x0  Services en transit : -  C’et événement est généré à chaque fois qu’un accès est demandé à une ressource comme un ordinateur ou un service Windows. 
Message=Le service Carte de performance WMI est entré dans l’état : en cours d’exécution.
Message=Un ticket d’authentification Kerberos (TGT) a été demandé.  Informations sur le compte :  Nom du compte :  USER  Nom du domaine Kerberos fourni : DOMAIN  ID de l’utilisateur :   DOMAIN\USER  Informations sur le service :  Nom du service :  krbtgt  ID du service :  DOMAIN\krbtgt  Informations sur le réseau :  Adresse du client :  ::ffff:1.1.1.1  Port client :  53206  Informations supplémentaires :  Options du ticket :  0x40810010  Code de résultat :  0x0  Type de chiffrement du ticket : 0x12  Type de pré-authentification : 2  Informations sur le certificat :  Nom de l’émetteur du certificat :    Numéro de série du certificat :    Empreinte numérique du certificat :    Les informations sur le certificat sont fournies uniquement si un certificat a été utilisé pour la pré-authentification.
Message=L’ordinateur a tenté de valider les informations d’identification d’un compte.  Package d’authentification : MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Compte d’ouverture de session : SD45S01P Station de travail source : HOSTNAME Code d’erreur : 0x0
Message=Échec d’ouverture de session d’un compte.  Sujet :  ID de sécurité :  NULL SID  Nom du compte :  -  Domaine du compte :  -  ID d’ouverture de session :  0x0  Type d’ouverture de session :   3  Compte pour lequel l’ouverture de session a échoué :  ID de sécurité :  NULL SID  Nom du compte :  AdminLuw  Domaine du compte :  SWZKFD  Informations sur l’échec :  Raison de l’échec :  Nom d’utilisateur inconnu ou mot de passe incorrect.  État :   0xc000006d  Sous-état :  0xc0000064  Informations sur le processus :  ID du processus de l’appelant : 0x0  Nom du processus de l’appelant : -  Informations sur le réseau :  Nom de la station de travail : SWZKFD  Adresse du réseau source : 1.1.1.1  Port source :  61159  Informations détaillées sur l’authentification :  Processus d’ouverture de session :  NtLmSsp   Package d’authentification : NTLM  Services en transit : -  Nom du package (NTLM uniquement) : -  Longueur de clé :  0  Cet événement est généré lorsqu’une demande d’ouverture de session échoue. Il est généré sur l’ordinateur sur lequel l’accès a été tenté.`

And that's what i want to obtain, a couple key/value :

     `Message=Un ticket de service Kerberos a été demandé.  
Informations sur le compte :  
Nom du compte :  USER@DOMAIN.SUB-DOMAIN  
Domaine du compte :  DOMAIN.SUB-DOMAIN  
GUID d’ouverture de session :  {9DF72FCD-C514-E27F-8D11-F1B3D663ED19} 
Informations sur le service :  
Nom du service :  TOTOTO$  
ID du service :  DOMAIN\TOTOTO$  
Informations sur le réseau :  
Adresse du client :  ::ffff:1.1.1.1  
Port client :  56938  
Informations supplémentaires :  
Options du ticket :  0x40810000  
Type de chiffrement du ticket : 0x12  
Code d’échec :  0x0  
Services en transit : -  
C’et événement est généré à chaque fois qu’un accès est demandé à une ressource comme un ordinateur ou un service Windows. Le nom du service indique la ressource à laquelle l’accès à été demandé.
 
Message=Le service Carte de performance WMI est entré dans l’état : en cours d’exécution.
 
Message=Un ticket d’authentification Kerberos (TGT) a été demandé.  
Informations sur le compte :  
Nom du compte :  USER  
Nom du domaine Kerberos fourni : DOMAIN  
ID de l’utilisateur :   DOMAIN\USER  
Informations sur le service :  
Nom du service :  krbtgt  
ID du service : DOMAIN\krbtgt  
Informations sur le réseau :  
Adresse du client :  ::ffff:1.1.1.1  
Port client :  53206  
Informations supplémentaires :  
Options du ticket :  0x40810010  
Code de résultat :  0x0  
Type de chiffrement du ticket : 0x12  
Type de pré-authentification : 2  
Informations sur le certificat :  
Nom de l’émetteur du certificat :    
Numéro de série du certificat :    
Empreinte numérique du certificat :    
Les informations sur le certificat sont fournies uniquement si un certificat a été utilisé pour la pré-authentification.  Les types de pré-authentification, les options de ticket, les types de chiffrement et les codes de résultats sont définis dans la RFC 4120.
 
Message=L’ordinateur a tenté de valider les informations d’identification d’un compte.  
Package d’authentification : MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Compte d’ouverture de session : USER 
Station de travail source : HOSTNAME 
Code d’erreur : 0x0
 
Message=Échec d’ouverture de session d’un compte.  
Sujet :  
ID de sécurité :  NULL 
SID  Nom du compte :  -  
Domaine du compte :  -  
ID d’ouverture de session :  0x0  
Type d’ouverture de session :   3  
Compte pour lequel l’ouverture de session a échoué :  
ID de sécurité :  NULL SID  
Nom du compte :  Admin  
Domaine du compte :  DOMAIN
Informations sur l’échec :  
Raison de l’échec : 
Nom d’utilisateur inconnu ou mot de passe incorrect.  
État :   0xc000006d  
Sous-état :  0xc0000064  
Informations sur le processus :  
ID du processus de l’appelant : 0x0  
Nom du processus de l’appelant : -  
Informations sur le réseau :  
Nom de la station de travail : DOMAIN
Adresse du réseau source : 1.1.1.1  
Port source :  61159  
Informations détaillées sur l’authentification :  
Processus d’ouverture de session :  NtLmSsp   
Package d’authentification : NTLM  
Services en transit : -  
Nom du package (NTLM uniquement) : -  
Longueur de clé :  0  
Cet événement est généré lorsqu’une demande d’ouverture de session échoue. Il est généré sur l’ordinateur sur lequel l’accès a été tenté.  Le champ Objet indique le compte sur le système local qui a demandé l’ouverture de session.`

Hope you can help me with that problem..

Thanks a lot


#2

I of course already test before but i tried with "kv" an "mutate" but it didn't worked :

mutate { gsub => [ "[@metadata][reste]", "= ", "= - " ] }
kv {source => "[@metadata][reste]" field_split => " " value_split => " : "}

#3

This may get you started. The only pattern I can see in the line I chose to parse is that you have some text followed by space, colon, space, space, then a value which does not contain a space, followed by space, space.

    # You will several more of these to normalize lines that do not fit the pattern
    mutate { gsub => [
                "message", "(Informations sur le compte :  )", "
\1-  ",
                "message", "(Informations sur le service :  )", "
\1-  "
        ]
    }
    mutate { gsub => [
                "message", "( :  [^[:space:]]+)  ", "\1
" ] }
    mutate { split => { "message" => "
" } }
ruby {
    code => '
        event.get("message").each { |s|
            m = /(?<k>[^:]+) :  (?<v>.*)/.match(s)
            unless m.nil?
                event.set(m[:k], m[:v])
            end

        }
    '
}

#4

Thank you for your help, i will try that :slight_smile:


#5

Hello,

I tried with the code you gave me but i can't reach my goal.

The logs changed a bit since last time, they are a bit more standardized, now they are formated like that, maybe it would be more simple to help me..

Informations sur le compte : Nom du compte : USER@SUBDOMAIN.DOMAIN Domaine du compte : SUBDOMAIN.DOMAIN GUID d’ouverture de session : {8612DE0D-5FD9-3055-6E18-11C8E87EE2C1} Informations sur le service : Nom du service : SERVICE$ ID du service : SUBDOMAIN\SERVICE$ Informations sur le réseau : Adresse du client : ::ffff:1.1.1.1 Port client : 59406 Informations supplémentaires : Options du ticket : 0x40810000 Type de chiffrement du ticket : 0x12 Code d’échec : 0x0 Services en transit : - C’et événement est généré à chaque fois qu’un accès est demandé à une ressource comme un ordinateur ou un service Windows. Le nom du service indique la ressource à laquelle l’accès à été demandé. Cet événement peut être associé à des événements de connexion Windows en comparant les champs GUID d’ouverture de session de chaque événement. L’événement de connexion se produit sur l’ordinateur sur lequel l’accès s’est effectué, qui souvent n’est pas le même ordinateur que le contrôleur de domaine qui a émis le ticket de service.
Informations sur le compte : Nom du compte : ACCOUNT$ Nom du domaine Kerberos fourni : SUBDOMAIN.DOMAIN ID de l’utilisateur : SUBDOMAIN\ACCOUNT$ Informations sur le service : Nom du service : krbtgt ID du service : SUBDOMAIN\krbtgt Informations sur le réseau : Adresse du client : 1.1.1.1 Port client : 43995 Informations supplémentaires : Options du ticket : 0x10 Code de résultat : 0x0 Type de chiffrement du ticket : 0x12 Type de pré-authentification : 2 Informations sur le certificat : Nom de l’émetteur du certificat : Numéro de série du certificat : Empreinte numérique du certificat : Les informations sur le certificat sont fournies uniquement si un certificat a été utilisé pour la pré-authentification. Les types de pré-authentification, les options de ticket, les types de chiffrement et les codes de résultats sont définis dans la RFC 4120.
Sujet : ID de sécurité : NULL SID Nom du compte : - Domaine du compte : - ID d’ouverture de session : 0x0 Type d’ouverture de session : 3 Compte pour lequel l’ouverture de session a échoué : ID de sécurité : NULL SID Nom du compte : COMPUTER$ Domaine du compte : SUBDOMAIN Informations sur l’échec : Raison de l’échec : Nom d’utilisateur inconnu ou mot de passe incorrect. État : 0xc000006d Sous-état : 0xc0000064 Informations sur le processus : ID du processus de l’appelant : 0x0 Nom du processus de l’appelant : - Informations sur le réseau : Nom de la station de travail : COMPUTER Adresse du réseau source : 1.1.1.1 Port source : 63126 Informations détaillées sur l’authentification : Processus d’ouverture de session : NtLmSsp Package d’authentification : NTLM Services en transit : - Nom du package (NTLM uniquement) : - Longueur de clé : 0 Cet événement est généré lorsqu’une demande d’ouverture de session échoue. Il est généré sur l’ordinateur sur lequel l’accès a été tenté. Le champ Objet indique le compte sur le système local qui a demandé l’ouverture de session.

What could also be a solution for me is to only match and parse some fields and their value like "Nom du compte : USER@SUBDOMAIN.DOMAIN" in the first log without parsing the rest of the log but only some field in the midle of the log..

Thanks a lot


(system) #6

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.