{"id":316,"date":"2020-01-30T23:32:54","date_gmt":"2020-01-30T23:32:54","guid":{"rendered":"https:\/\/www.unsafehex.com\/?p=316"},"modified":"2024-09-27T17:29:17","modified_gmt":"2024-09-27T17:29:17","slug":"tstats-afterburners-for-your-splunk-threat-hunting","status":"publish","type":"post","link":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/","title":{"rendered":"tstats: afterburners for your Splunk threat hunting"},"content":{"rendered":"\n<p>Recently, @da_667 posted <a href=\"https:\/\/www.hurricanelabs.com\/splunk-tutorials\/on-the-hunt-part-2-process-creation-log-analysis\">an excellent introduction<\/a> to threat hunting in Splunk. The information in Sysmon EID 1 and Windows EID 4688 process execution events is invaluable for this task. Depending on your environment, however, you might find these searches frustratingly slow, especially if you are trying to look at a large time window. You may also have noticed that although these logs concern the same underlying event, you are using two different searches to find the same thing. Is there anything we can do to improve our searches? Spoiler: yes!<\/p>\n\n\n\n<p>One of the biggest advantages Splunk grants is in the way it turns the traditional model of indexing SIEM events on its head. Instead of parsing all the fields from every event as they arrive for insertion into a behemoth of a SQL database, they decided it was far more efficient to just sort them by the originating host, source type, and time, and extract everything else on the fly when you search. It&#8217;s a superb model, but does come with some drawbacks. <\/p>\n\n\n\n<p>Some searches that might have been fast in a database are not so rapid here. Again, because there is no database, you are not constrained to predefined fields set by the SIEM vendor &#8211; but there is nothing to keep fields with similar data having the same name, so every type of data has its own naming conventions. Putting together a search that covers three different sources for similar data can mean having to know three different field names, event codes specific to the products&#8230; it can get to be quite a hassle!<\/p>\n\n\n\n<p>The answer to these problems is <a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.1\/SearchReference\/Datamodel\">datamodels<\/a>, and in particular, Splunk&#8217;s <a href=\"https:\/\/docs.splunk.com\/Documentation\/CIM\/latest\/User\/Overview\">Common Information Model<\/a> (CIM). Datamodels allow you to define a schema to address similar events across diverse sources. For example, instead of searching <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">index=wineventlog EventCode=4688 New_Process_Name=\"*powershell.exe\" <\/pre>\n\n\n\n<p>and <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">index=sysmon EventCode=1 Image=*powershell.exe <\/pre>\n\n\n\n<p>separately, you can search the <em>Endpoint.Processes<\/em> datamodel for <code>process_name=powershell.exe<\/code> and get results for both. The CIM is a set of predefined datamodels for, as the name implies, types of information that are common. Once you have defined a datamodel and mapped a sourcetype to it, you can &#8220;accelerate&#8221; it, which generates indexes of the fields in the model. This process carries a storage, CPU and RAM cost and is not on by default, so you need to understand the implications before enabling it.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Turn it up to 11<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"402\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-1024x402.png\" alt=\"\" class=\"wp-image-324\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-1024x402.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-300x118.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-768x301.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-1536x603.png 1536w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-624x245.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1.png 1904w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Let&#8217;s take this example, based on the fourth search in @da_667&#8217;s blog. In my (very limited) data set, according to the Job Inspector, it took 10.232 seconds to search 30 days&#8217; worth of data. That&#8217;s not so bad, but I only have a few thousand events here, and you might be searching millions, or tens of millions &#8211; or more!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/2-powershell-search-time.png\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"365\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/2-powershell-search-time.png\" alt=\"\" class=\"wp-image-320\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/2-powershell-search-time.png 723w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/2-powershell-search-time-300x151.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/2-powershell-search-time-624x315.png 624w\" sizes=\"(max-width: 723px) 100vw, 723px\" \/><\/a><figcaption>Splunk Job Inspector showing search time and cost breakdown<\/figcaption><\/figure>\n\n\n\n<p>What happens if we try searching an accelerated datamodel instead? Is there much of a difference?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/3-powershell-tstats-time.png\"><img loading=\"lazy\" decoding=\"async\" width=\"693\" height=\"370\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/3-powershell-tstats-time.png\" alt=\"\" class=\"wp-image-321\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/3-powershell-tstats-time.png 693w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/3-powershell-tstats-time-300x160.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/3-powershell-tstats-time-624x333.png 624w\" sizes=\"(max-width: 693px) 100vw, 693px\" \/><\/a><figcaption>Splunk Job Inspector information for accelerated datamodel search<\/figcaption><\/figure>\n\n\n\n<p>Holy shitballs yes it does. This search returned in 0.038 seconds, that&#8217;s nearly 270x faster! What sorcery is this? Well, the command used was:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">| tstats summariesonly=true count from datamodel=Endpoint.Processes where Processes.process_name=powershell.exe by Processes.process_path Processes.process<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-1024x392.png\" alt=\"\" class=\"wp-image-323\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-1024x392.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-300x115.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-768x294.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-1536x588.png 1536w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1-624x239.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/4-tstats-search-1.png 1903w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>What&#8217;s going on in this command? First of all, instead of going to a Splunk index and running all events that match the time range through filters to find &#8220;<em>*.powershell.exe<\/em>&#8220;, my <em><a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.1\/SearchReference\/Tstats\">tstats<\/a><\/em> command is telling it to search just the <em>tsidx<\/em> files &#8211; the accelerated indexes mentioned earlier &#8211; related to the <em>Endpoint<\/em> datamodel. Part of the indexing operation has broken out the process name in to a separate field, so we can search for an explicit name rather than wildcarding the path. <\/p>\n\n\n\n<p>The statistics argument <em>count<\/em> and the <em>by<\/em> clause work similarly to the traditional <em>stats<\/em> command, but you will note that the search specifies <em>Processes.process_name<\/em> &#8211; a quirk of the structure of data models means that where you are searching a subset of a datamodel (a <em>dataset<\/em> in Splunk parlance), you need to specify your search in the form <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">datamodel=DatamodelName[.DatasetName] where [DatasetName.]field_name=somevalue by [DatasetName.]field2_name [DatasetName.]field3_name<\/pre>\n\n\n\n<p>The DatasetName components are not always needed &#8211; it depends whether you&#8217;re searching fields that are part of the root datamodel or not (it took me <strong>ages<\/strong> to get the hang of this so please don&#8217;t feel stupid if you&#8217;re struggling with it).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Filtered, like my coffee<\/h4>\n\n\n\n<p>Just as with the Hurricane Labs blog, options for filtering and manipulating <em>tstats<\/em> output can be managed with the same operations.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">| tstats summariesonly=true count from datamodel=Endpoint.Processes where Processes.process_name=powershell.exe NOT Processes.parent_process_name IN (\"code.exe\", \"officeclicktorun.exe\") by Processes.process_path Processes.process | `drop_dm_object_name(\"Processes\")`<\/pre>\n\n\n\n<p>You can filter on any of the fields present in the data model, and also by time, and the original index and sourcetype. The resulting data can be piped to whatever other manipulation\/visualisation commands you want, which is particularly handy for charts and other dashboard features &#8211; your dashboards will be vastly sped up if you can base them on <em>tstats<\/em> searches.<\/p>\n\n\n\n<p>You&#8217;ll also note the macro <em>drop_dm_object_name <\/em>&#8211; this reformats the field names to exclude the <em>Processes<\/em> prefix, which is handy when you want to manipulate the data further as it makes the field names simpler to reference.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">A need for speed<\/h4>\n\n\n\n<p>How do I get me some of this sweet, sweet acceleration I hear you ask? The first thing to understand is that it needs to be done carefully. You will see an increase in CPU and I\/O on your indexers and search heads. This is because the method involves the search head running background searches that populate the index. There will be a noticeable increase in storage use, with the amount depending on the summary range (i.e. time period covered by detailed indexing) and how busy your data sources are.<\/p>\n\n\n\n<p>With this in mind, you can start looking at the <a href=\"https:\/\/splunkbase.splunk.com\/app\/1621\/\">Common Information Model<\/a> app and the documentation on <a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.1\/Knowledge\/Acceleratedatamodels\">accelerating data models<\/a>. I highly recommend consulting Splunk&#8217;s Professional Services before forging ahead, unless your admins are particularly experienced. The basic process is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ensure that your sourcetypes are CIM compliant. For most Splunk-supported apps, this is already done.<\/li><li>Ensure that you have sufficient resources to handle the increased load<\/li><li> Deploy the CIM app<\/li><li>Enable acceleration for the desired datamodels, and specify the indexes to be included (blank = all indexes. Inefficient &#8211; do not do this)<\/li><li>Wait for the summary indexes to build &#8211; you can view progress in <em>Settings &gt; Data models<\/em><\/li><li>Start your glorious <em>tstats <\/em>journey<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-1024x588.png\" alt=\"\" class=\"wp-image-325\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-1024x588.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-300x172.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-768x441.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-1536x883.png 1536w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup-624x359.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/5-CIM-setup.png 1655w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Configuration for Endpoint datamodel in Splunk CIM app<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/6-Datamodel-acceleration.png\"><img loading=\"lazy\" decoding=\"async\" width=\"520\" height=\"379\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/6-Datamodel-acceleration.png\" alt=\"\" class=\"wp-image-326\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/6-Datamodel-acceleration.png 520w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/6-Datamodel-acceleration-300x219.png 300w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/a><figcaption>Detail from Settings &gt; Data models<\/figcaption><\/figure>\n\n\n\n<p>Datamodels are hugely powerful and if you skim through the documentation you will see they can be applied to far more than just process execution. You can gather all of your IDS platforms under one roof, no matter the vendor. Get email logs from both Exchange and another platform? No problem! One search for all your email! One search for all your proxy logs, inbound and outbound! Endless possibilities are yours.<\/p>\n\n\n\n<p>One search to rule them all, one search to find them&#8230; happy Splunking!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, @da_667 posted an excellent introduction to threat hunting in Splunk. The information in Sysmon EID 1 and Windows EID 4688 process execution events is invaluable for this task. Depending on your environment, however, you might find these searches frustratingly slow, especially if you are trying to look at a large time window. You may [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,12],"tags":[96,97,95,98],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-logging","category-tutorials-and-guides","tag-indexing","tag-searching","tag-splunk","tag-threat-hunting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>tstats: afterburners for your Splunk threat hunting &#8211; unsafehex<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"tstats: afterburners for your Splunk threat hunting &#8211; unsafehex\" \/>\n<meta property=\"og:description\" content=\"Recently, @da_667 posted an excellent introduction to threat hunting in Splunk. The information in Sysmon EID 1 and Windows EID 4688 process execution events is invaluable for this task. Depending on your environment, however, you might find these searches frustratingly slow, especially if you are trying to look at a large time window. You may [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/\" \/>\n<meta property=\"og:site_name\" content=\"unsafehex\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-30T23:32:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-27T17:29:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-1024x402.png\" \/>\n<meta name=\"author\" content=\"http_error_418\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:site\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"http_error_418\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/\",\"url\":\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/\",\"name\":\"tstats: afterburners for your Splunk threat hunting &#8211; unsafehex\",\"isPartOf\":{\"@id\":\"https:\/\/www.unsafehex.com\/#website\"},\"datePublished\":\"2020-01-30T23:32:54+00:00\",\"dateModified\":\"2024-09-27T17:29:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.unsafehex.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"tstats: afterburners for your Splunk threat hunting\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.unsafehex.com\/#website\",\"url\":\"https:\/\/www.unsafehex.com\/\",\"name\":\"unsafehex\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.unsafehex.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\",\"name\":\"http_error_418\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"caption\":\"http_error_418\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"tstats: afterburners for your Splunk threat hunting &#8211; unsafehex","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/","og_locale":"en_GB","og_type":"article","og_title":"tstats: afterburners for your Splunk threat hunting &#8211; unsafehex","og_description":"Recently, @da_667 posted an excellent introduction to threat hunting in Splunk. The information in Sysmon EID 1 and Windows EID 4688 process execution events is invaluable for this task. Depending on your environment, however, you might find these searches frustratingly slow, especially if you are trying to look at a large time window. You may [&hellip;]","og_url":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/","og_site_name":"unsafehex","article_published_time":"2020-01-30T23:32:54+00:00","article_modified_time":"2024-09-27T17:29:17+00:00","og_image":[{"url":"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2020\/01\/1-powershell-search-1-1024x402.png"}],"author":"http_error_418","twitter_card":"summary_large_image","twitter_creator":"@http_error_418","twitter_site":"@http_error_418","twitter_misc":{"Written by":"http_error_418","Estimated reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/","url":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/","name":"tstats: afterburners for your Splunk threat hunting &#8211; unsafehex","isPartOf":{"@id":"https:\/\/www.unsafehex.com\/#website"},"datePublished":"2020-01-30T23:32:54+00:00","dateModified":"2024-09-27T17:29:17+00:00","author":{"@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652"},"breadcrumb":{"@id":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.unsafehex.com\/index.php\/2020\/01\/30\/tstats-afterburners-for-your-splunk-threat-hunting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.unsafehex.com\/"},{"@type":"ListItem","position":2,"name":"tstats: afterburners for your Splunk threat hunting"}]},{"@type":"WebSite","@id":"https:\/\/www.unsafehex.com\/#website","url":"https:\/\/www.unsafehex.com\/","name":"unsafehex","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unsafehex.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652","name":"http_error_418","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","caption":"http_error_418"}}]}},"_links":{"self":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/316"}],"collection":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/comments?post=316"}],"version-history":[{"count":9,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":351,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/316\/revisions\/351"}],"wp:attachment":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/media?parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/categories?post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/tags?post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}