FortiSIEM Discussions
george_omondi
New Contributor II

Custom Parser Error

custom app.pngHello Team,

I am new to FortiSIEM and i could be making some obvious mistake but kindly help. We onboarded a custom application onto FSM and wanted to build custom parser so that we can get notified of failed logins. I tried building one and i Keep running into the same issue "Failed to execute node: collectFieldsByRegex. Please check the usage of API and attribute name." Not sure why.. My xml is as below:

<eventFormatRecognizer><![CDATA[SOE: BAD\s+]]></eventFormatRecognizer>
<parsingInstructions>
<collectFieldsByRegex src="$_rawmsg">
<regex><![CDATA[<:gPatSyslogPRI><_mon:gPatMon>\s+<_day:gPatDay>\s+<_time:gPatTime>\s+<reptDevName:gPatHostName>\s+SOE:\s+<_body:gPatMesgBody>]]></regex>
</collectFieldsByRegex>
<collectFieldsByRegex src="$_body">
<regex><![CDATA[?:SIGN-ON <srcIpAddr:gPatIpAddr>\s+\(<:gPatStr>\)\s+<:gPatStr>\s+-\s+d+\s+<:gPatStr>\.<:gPatStr>:\s+<:gPatStr>\s+<:gPatStr>]]></regex>
</collectFieldsByRegex>
<setEventAttribute attr="eventType">Custom App: Failed Login</setEventAttribute>
<setEventAttribute attr="eventSeverity">1</setEventAttribute>
</parsingInstructions>

 

The Logs am trying to Parse are as below. Changed a few things due to privacy reasons

<134>Apr 20 19:53:14 computerA SOE: BAD SIGN-ON 0T2.2.2.2.1 (CAP34.2.1) CAP34.2 - 1 APP1.MIS: APP1    USERNAME1
<134>Apr 20 19:05:22 computerA SOE: BAD SIGN-ON 9N0T2.3.3.3.1 (THOR1.3.1) THOR1.3 - 1 MICRO PC APP2.MIS: APP2  USERNAME3 USERNAME3 USERNAME3
<134>Apr 19 19:24:29 computerC SOE: BAD SIGN-ON 9N0T1.1.14.1.1 (SPI2.1.1) SPI2.1 - 1 APP3.MIS: APP3  USERNAME44 USERNAME44 USERNAME44
<134>Apr 19 16:42:45 computerD SOE: BAD SIGN-ON 7N0T4.1.4.1.2 (IRN22.1.2) IRN22.1 - 2 APP3.MIS: APP3  USERNAME55 USERNAME55 USERNAME55

 

G.O
G.O
2 Solutions
cdurkin_FTNT

Hard to say .. but the line -1 seems ominous.

 

Try clearing the parser window completely.. save ..
Re add the parser and try again

View solution in original post

cdurkin_FTNT

Just update this line...

 

<regex><![CDATA[BAD SIGN-ON .*<srcIpAddr:gPatIpAddr>\.<dbSessionCount:gPatInt>\s+<_body2:gPatMesgBody>]]></regex>

 

And choose an appropriate attribute to extract the session count in to ..  (I used DB Session Count in the example above)

View solution in original post

5 REPLIES 5
cdurkin_FTNT
Staff
Staff

To keep it simple, try this to get you started...

 

<eventFormatRecognizer><![CDATA[SOE: BAD\s+]]></eventFormatRecognizer>
<parsingInstructions>

 

<!-- Sample Events
<134>Apr 20 19:53:14 computerA SOE: BAD SIGN-ON 0T2.2.2.2.1 (CAP34.2.1) CAP34.2 - 1 APP1.MIS: APP1 USERNAME1
<134>Apr 20 19:05:22 computerA SOE: BAD SIGN-ON 9N0T2.3.3.3.1 (THOR1.3.1) THOR1.3 - 1 MICRO PC APP2.MIS: APP2 USERNAME3 USERNAME3 USERNAME3
<134>Apr 19 19:24:29 computerC SOE: BAD SIGN-ON 9N0T1.1.14.1.1 (SPI2.1.1) SPI2.1 - 1 APP3.MIS: APP3 USERNAME44 USERNAME44 USERNAME44
<134>Apr 19 16:42:45 computerD SOE: BAD SIGN-ON 7N0T4.1.4.1.2 (IRN22.1.2) IRN22.1 - 2 APP3.MIS: APP3 USERNAME55 USERNAME55 USERNAME55
-->

 

<collectFieldsByRegex src="$_rawmsg">
<regex><![CDATA[<:gPatSyslogPRI><_mon:gPatMon>\s+<_day:gPatDay>\s+<_time:gPatTime>\s+<reptDevName:gPatHostName>\s+SOE:\s+<_body:gPatMesgBody>]]></regex>
</collectFieldsByRegex>

 

<collectFieldsByRegex src="$_body">
<regex><![CDATA[BAD SIGN-ON .*<srcIpAddr:gPatIpAddr>\s+<_body2:gPatMesgBody>]]></regex>
</collectFieldsByRegex>

 

<setEventAttribute attr="eventType">Custom App: Failed Login</setEventAttribute>
<setEventAttribute attr="eventSeverity">1</setEventAttribute>

</parsingInstructions>

 

george_omondi

Thank You @cdurkin_FTNT  for the response. Not sure if its my Side but now i am running into the below error:

 

2024-05-15 03_56_01-FortiSIEM.png

G.O
G.O
cdurkin_FTNT

Hard to say .. but the line -1 seems ominous.

 

Try clearing the parser window completely.. save ..
Re add the parser and try again

george_omondi

This worked. Much much appreciated. One more thing.. this "7N0T172.18.5.21.2" wanted to extract the IP which is "172.18.5.21" the last 2 is the session count and the "7N0T" is just a random string appended by the app.. how can i extract that?

G.O
G.O
cdurkin_FTNT

Just update this line...

 

<regex><![CDATA[BAD SIGN-ON .*<srcIpAddr:gPatIpAddr>\.<dbSessionCount:gPatInt>\s+<_body2:gPatMesgBody>]]></regex>

 

And choose an appropriate attribute to extract the session count in to ..  (I used DB Session Count in the example above)

Announcements

Welcome to your new Fortinet Community!

You'll find your previous forum posts under "Forums"