All Posts

Find Answers
Ask questions. Get answers. Find technical product solutions from passionate members of the Splunk community.

All Posts

@richgalloway , How we can correlate data across different languages or datasets. For the specific case of merging "Approuvé" (French) and "Approved" (English) fields..  english :    Approved Sa... See more...
@richgalloway , How we can correlate data across different languages or datasets. For the specific case of merging "Approuvé" (French) and "Approved" (English) fields..  english :    Approved Sachin tendulakr from 11/25/2023 07:03 AM until 11/25/2023 03:03 PM.   french : Approuvé - Approuvé Salmon du 11/23/2023 02:10 PM au 12/23/2023 02:10 PM .  English           French Approved     Approuvé from                du until                au Thanks      
Could you please help me to know how to change the mode of alerts from "private" mode to "app" mode?
@tscroggins  Thank you very much for your valuable help
Hi @splunkcol, If you're using Splunk Enterprise Security, see <https://community.splunk.com/t5/Splunk-Enterprise-Security/Splunk-ES-issue/m-p/579751/highlight/true#M10519>, but review the latest do... See more...
Hi @splunkcol, If you're using Splunk Enterprise Security, see <https://community.splunk.com/t5/Splunk-Enterprise-Security/Splunk-ES-issue/m-p/579751/highlight/true#M10519>, but review the latest documentation. With that knowledge in hand, you may prefer to use the OTX TAXII feed. If you're not using Splunk Enterprise Security and simply want to cross-reference your events with the output of the checkotx generating command, use the map command with an existing search. E.g.: index=firewall | dedup src_ip | map search="checkotx $src_ip$" maxsearches=10 ``` increase maxsearches as needed ``` The map command will run one search for each src_ip value (up to 10 values in this example). If you're feeling adventurous, you could clone and modify checkotx.py to function as an external lookup command. See <https://dev.splunk.com/enterprise/docs/devtools/externallookups/>. You could then use the Splunk lookup command to correlate src_ip to IOCs: index=firewall | lookup checkotx ip as src_ip If written correctly, the external lookup command could add multi-valued created, id, ioc, and name fields to each event with matching IOCs. (Apologies if you're not feeling adventurous. I like to tinker.) You may also want to look at Add-on for Open Threat Exchange <https://splunkbase.splunk.com/app/4336>. The add-on will index IOCs, from which you can write a scheduled search to generate a local lookup file or KV store collection. The end result would provide functionality similar to the proposed external lookup command described above. (Edit: I have a vague memory of maybe having written an OTX lookup command one afternoon for a client. If you're interested, we could probably whip one up from scratch pretty quickly in this thread.)
For reference: 1. Microsoft Corporation. "About Event Logging." Windows App Development, 7 January 2021, https://learn.microsoft.com/en-us/windows/win32/eventlog/about-event-logging. 2. Splunk Inc.... See more...
For reference: 1. Microsoft Corporation. "About Event Logging." Windows App Development, 7 January 2021, https://learn.microsoft.com/en-us/windows/win32/eventlog/about-event-logging. 2. Splunk Inc. "inputs.conf Event Log allow list and deny list formats." Splunk Enterprise Admin Manual, 16 November 2023, https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf#Event_Log_allow_list_and_deny_list_formats.
Hello I have installed the add-on "Alien Vault Check OTX". I would like to know if out of this command where I can query an IP, HASH or domain for indicators of compromise, could someone give me an... See more...
Hello I have installed the add-on "Alien Vault Check OTX". I would like to know if out of this command where I can query an IP, HASH or domain for indicators of compromise, could someone give me an idea if it is possible to associate it for example to the src_ip or dest_ip field of my firewall logs? https://apps.splunk.com/app/5422/#/details  
Hi All, Can someone help me understand which .conf file is responsible to control the connectivity to/from Internet. Wanted to make sure that the so called pure ON Prem Splunk Enterprise solution i... See more...
Hi All, Can someone help me understand which .conf file is responsible to control the connectivity to/from Internet. Wanted to make sure that the so called pure ON Prem Splunk Enterprise solution is unreachable from Internet and most importantly not sending data outside e.g. 1.5 DTI? Thanks in advance.
Hello community, Can anyone please help me understand if the newest vulnerability can exploit a pure on prem Splunk Enterprise clustered solution? Can an arbitrary code be pushed remotely via any m... See more...
Hello community, Can anyone please help me understand if the newest vulnerability can exploit a pure on prem Splunk Enterprise clustered solution? Can an arbitrary code be pushed remotely via any means? Splunk documentation and advisory are not very clear and just saying SE but not mentioning anything about 1.5 DTI and non publicity connected SE instance. Thank you.
You don't appear to be doing anything wrong, given the example you have shared. | makeresults | eval _raw="2023-11-25T21:18:54.244444 [ info ] I am a log message request = GET /api/myendpoi... See more...
You don't appear to be doing anything wrong, given the example you have shared. | makeresults | eval _raw="2023-11-25T21:18:54.244444 [ info ] I am a log message request = GET /api/myendpoint request_id = ff223452" | rex "(?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.\d+\s+\[\s*(?<loglevel>\w+)\s*\]\s+"
I have the following log structure:   2023-11-25T21:18:54.244444  [  info      ]  I am a log message  request = GET /api/myendpoint    request_id = ff223452 I can capture the date and time (without... See more...
I have the following log structure:   2023-11-25T21:18:54.244444  [  info      ]  I am a log message  request = GET /api/myendpoint    request_id = ff223452 I can capture the date and time (without the 244444 part) using: rex field=myfield "(?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.\d+" and timestamp is properly captured. But if I try to extend this and want to capture the log level as well with for example: rex field=myfield "(?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.\d+\s+\[\s*(?<loglevel>\w+)\s*\]\s+" It didn't work; none of the timestamp nor the loglevel is captured. What am I doing wrong?
I often simplify time deltas using stats range(): | stats range(eval(strptime(Time, "%Y-%m-%dT%H:%M:%S.%3N%:z"))) as duration by Employee Country | fieldformat duration=round(duration/86400, 0)."d"... See more...
I often simplify time deltas using stats range(): | stats range(eval(strptime(Time, "%Y-%m-%dT%H:%M:%S.%3N%:z"))) as duration by Employee Country | fieldformat duration=round(duration/86400, 0)."d" ``` or ``` ``` | fieldformat duration=tostring(duration, "duration") ``` ``` for Splunk-normalized [D+]HH:MM:SS display ```
Hi @AL3Z, Windows event log events are stored by Windows in a language-independent format. When using renderXml = true, Splunk does not forward the locale-specific message string. You can further op... See more...
Hi @AL3Z, Windows event log events are stored by Windows in a language-independent format. When using renderXml = true, Splunk does not forward the locale-specific message string. You can further optimize forwarder resource usage by also setting the suppress_* settings to true. In the case of the security event log Microsoft-Windows-Security-Auditing provider/source, event identifier 4688 will have no Message field beginning with "A new process has been created." You must instead use whitelist and blacklist values that reference $XmlRegex and match against the raw XML event. For example: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"><System><Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-a5ba-3e3b0328c30d}" /><EventID>4688</EventID><Version>2</Version><Level>0</Level><Task>13312</Task><Opcode>0</Opcode><Keywords>0x8020000000000000</Keywords><TimeCreated SystemTime="2023-11-19T16:06:34.0318973Z" /><EventRecordID>139624</EventRecordID><Correlation /><Execution ProcessID="4" ThreadID="344" /><Channel>Security</Channel><Computer>titan</Computer><Security /></System><EventData><Data Name="SubjectUserSid">S-1-5-18</Data><Data Name="SubjectUserName"></Data><Data Name="SubjectDomainName"></Data><Data Name="SubjectLogonId">0x3e7</Data><Data Name="NewProcessId">0x320</Data><Data Name="NewProcessName">C:\Windows\System32\lsass.exe</Data><Data Name="TokenElevationType">%%1936</Data><Data Name="ProcessId">0x1c8</Data><Data Name="CommandLine" /><Data Name="TargetUserSid">S-1-0-0</Data><Data Name="TargetUserName"></Data><Data Name="TargetDomainName"></Data><Data Name="TargetLogonId">0x0</Data><Data Name="ParentProcessName">C:\Windows\System32\wininit.exe</Data><Data Name="MandatoryLabel">S-1-16-16384</Data></EventData></Event> The raw XML event contains a series of <Data> elements, one of which is <Data Name="NewProcessName">. To exclude a specific NewProcessName value, e.g. C:\Windows\System32\lsass.exe, we can construct a blacklist value using the $XmlRegex key. I'll use percent (%) as the regular expression delimiter. You can use one $XmlRegex key to match multiple parts of the raw XML or multiple $XmlRegex keys to make your matches easier to maintain. I've used three $XmlRegex keys to match the Provider, EventID, and Data elements: blacklist3 = $XmlRegex=%<Provider[^>]+Name="Microsoft-Windows-Security-Auditing"% $XmlRegex=%<EventID>4688<\/EventID>% $XmlRegex=%<Data Name="NewProcessName">C:\\Windows\\System32\\lsass\.exe<\/Data>% Note that I've included the provider/source because all Windows events are uniquely identified by a three-tuple of log, provider/source, and event identifier, e.g. Security, Microsoft-Windows-Security-Auditing, and 4688. You can add additional processes to your blacklist by using a regular expression group construct within the NewProcessName match: blacklist3 = $XmlRegex=%<Provider[^>]+Name="Microsoft-Windows-Security-Auditing"% $XmlRegex=%<EventID>4688<\/EventID>% $XmlRegex=%<Data Name="NewProcessName">(C:\\Windows\\System32\\lsass\.exe|C:\\Program Files\\MyApp\\MyProgram\.exe)<\/Data>% This setting would be added to C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_windows\local\inputs.conf. Note that the default blacklist1 and blacklist2 values provided by Splunk Add-on for Windows do not work when renderXML = true, so we'll modify those as well. I did not include the provider in the modifications; it's a direct translation of the default. [WinEventLog://Security] disabled = 0 start_from = oldest current_only = 0 evt_resolve_ad_obj = 1 checkpointInterval = 5 renderXml = true suppress_keywords = true suppress_opcode = true suppress_sourcename = true suppress_task = true suppress_text = true suppress_type = true blacklist1 = $XmlRegex=%<EventID>4662<\/EventID>% $XmlRegex=%<Data Name="ObjectType">(?!\s*groupPolicyContainer)% blacklist2 = $XmlRegex=%<EventID>566<\/EventID>% $XmlRegex=%<Data Name="ObjectType">(?!\s*groupPolicyContainer)% blacklist3 = $XmlRegex=%<Provider[^>]+Name="Microsoft-Windows-Security-Auditing"% $XmlRegex=%<EventID>4688<\/EventID>% $XmlRegex=%<Data Name="NewProcessName">(C:\\Windows\\System32\\lsass\.exe|C:\\Program Files\\MyApp\\MyProgram\.exe)<\/Data>% Deploy inputs.conf and restart Splunk Universal Forwarder using your configuration management tool of choice, e.g. a Splunk deployment server.
It would help to know what you've tried already so we don't suggest something that doesn't work. A thing to remember is Splunk can't compare timestamps in text form - they must be converted to epoch... See more...
It would help to know what you've tried already so we don't suggest something that doesn't work. A thing to remember is Splunk can't compare timestamps in text form - they must be converted to epoch (integer) form, first. | makeresults format=csv data="Employee, Time, Country John Doe, 2023-11-15T20:05:31.000+00:00, France John Doe, 2023-11-18T10:00:31.000+00:00, France John Doe, 2023-11-20T10:05:31.000+00:00, United States John Doe, 2023-11-25T20:05:31.000+00:00, United States" ``` Above creates demo data. Delete IRL ``` ``` Convert Time to epoch ``` | eval eTime=strptime(Time, "%Y-%m-%dT%H:%M:%S.%3N%:z") ``` Find the lowest and highest time for each employee/country pair ``` | stats min(eTime) as start, max(eTime) as end by Employee,Country ``` Calculate the duration in days. Add "d" suffix for display ``` | eval duration=round((end-start)/86400,0) . "d" | table Employee duration Country
It will work as it is, but it is poor practice.  Your changes will be lost the next time Splunk_TA_windows is upgraded.
I need help with an employee travel analysis report. I have an index containing information about employee office check-ins in various countries. Events have fields Employee, Time, Country For exam... See more...
I need help with an employee travel analysis report. I have an index containing information about employee office check-ins in various countries. Events have fields Employee, Time, Country For example John Doe, 2023-11-15T20:05:31.000+00:00, France ... John Doe, 2023-11-18T10:00:31.000+00:00, France ... John Doe, 2023-11-20T10:05:31.000+00:00, United States ... John Doe, 2023-11-25T20:05:31.000+00:00, United States   At the end I would like to get the result showing duration in days between first checkin and last checkin per employee per country John Doe, 3d, France John Doe, 5d, United States
@richgalloway  I have made changes to local inputs.conf on this app and deployed it to over 3k servers so we need to move these configurations from local to default to get it work ? Thanks..
Firstly, it's a Cisco-provided app. Vendor-created app are, unfortunately, often sub-par written. They do understand their own products but they often do not understand Splunk well enough. Secondly,... See more...
Firstly, it's a Cisco-provided app. Vendor-created app are, unfortunately, often sub-par written. They do understand their own products but they often do not understand Splunk well enough. Secondly, while you probably could edit app's files, pack it and try to deploy in Cloud, the app would probably not pass appinspect. Thirdly, the description in splunkbase says clearly that it's meant to be installed on a forwarder.
If you have a private link, your Splunk account management team and Splunk support may assist with sizing and configuration; however, I would recommend a heavy forwarder to 1) manage infrastructure a... See more...
If you have a private link, your Splunk account management team and Splunk support may assist with sizing and configuration; however, I would recommend a heavy forwarder to 1) manage infrastructure and transit costs and 2) limit network access to your FMC to devices under your control. The eStreamer client can also be unstable, and having direct access to the heavy forwarder will reduce your MTTR.
    Hi @Arpit-Dwivedi, A description of your call graph may better illustrate the problem, but given your SPL, I would expect the following output, where [] represents a list or array:   R.exp-i... See more...
    Hi @Arpit-Dwivedi, A description of your call graph may better illustrate the problem, but given your SPL, I would expect the following output, where [] represents a list or array:   R.exp-inbound-call R.count L.sapi-outbound-call[] L.count[]   You can often reduce joins to one or more stats commands. This may produce the expected output:   index=sample message.process IN (*app-name1 *app-name2) message.flowName="*| *" | rex field=message.correlationId "(?<UUID>^[0-9a-z-]{0,36})" | eval call-type=case(like('message.process', "%app-name1"), "sapi-outbound-call", like('message.process', "%app-name2"), "exp-inbound-call") | eval {call-type}='message.flowName' | stats list(exp-inbound-call) as exp-inbound-call list(sapi-outbound-call) as sapi-outbound-call by UUID | stats count by exp-inbound-call sapi-outbound-call | stats max(count) as exp-inbound-call-count list(sapi-outbound-call) as sapi-outbound-call list(count) as sapi-outbound-call-count by exp-inbound-call    
Hi Splunkers, I do see 5-6 apps to update in my Splunk cloud, it's asking for restart whenever I'm hovering over update, I don't want to restart it each time, what's the way to update all the apps a... See more...
Hi Splunkers, I do see 5-6 apps to update in my Splunk cloud, it's asking for restart whenever I'm hovering over update, I don't want to restart it each time, what's the way to update all the apps at once and restart once? Thank you! @gcusello