icon/x Created with Sketch.

Splunk Cookie Policy

We use our own and third-party cookies to provide you with a great online experience. We also use these cookies to improve our products and services, support our marketing campaigns, and advertise to you on our website and other websites. Some cookies may continue to collect information after you have left our website. Learn more (including how to update your settings) here.
Accept Cookie Policy

Accept License Agreements

This app is provided by a third party and your right to use the app is in accordance with the license provided by that third-party licensor. Splunk is not responsible for any third-party apps and does not provide any warranty or support. If you have any questions, complaints or claims with respect to this app, please contact the licensor directly.

Thank You

Downloading Sunburst DGA Decode
SHA256 checksum (sunburst-dga-decode_100.tgz) 5a5460116c41514932a9100d3bbae2f710727e3628b88b66052a94939ee305c6
To install your download
For instructions specific to your download, click the Details tab after closing this window.

Flag As Inappropriate

Sunburst DGA Decode

Admins: Please read about Splunk Enterprise 8.0 and the Python 2.7 end-of-life changes and impact on apps and upgradeshere.
Decodes known substitution, custom base32, and activity date/antivirus info used by the Sunburst DGA algorithms.


The sunburst_decode and sunburst_stage2 custom lookups decode Sunburst encoded DNS requests.



The special lookups expect specific data that has already been cleaned and/or aggregated.

Because some data spans multiple requests, the data should be aggregated as much as possible beforehand to have the best results.

This increases the amount of SPL required to decode the DGA queries, but it provides more flexibility.

| lookup sunburst_decode encoded AS query OUTPUT decoded
| makemv delim=";" decoded 
| eval guid = mvindex(decoded, 0) 
| eval decoded_domain = case(mvcount(decoded)=4, mvindex(decoded, 1)) 
| eval decode_method = case(mvcount(decoded)=4, mvindex(decoded, 2)) 
| eval decode_index = case(mvcount(decoded)=4, mvindex(decoded, 3))
| eval stage2_time = case(mvcount(decoded)=3, mvindex(decoded, 1))
| eval stage2_info = case(mvcount(decoded)=3, mvindex(decoded, 2))
| makemv delim="|" stage2_info
| fieldformat stage2_time = strftime(stage2_time, "%c")
| eval encoded_values = case(isnotnull(decode_index), substr(mvindex(split(encoded, "."), 0), 17, 64)) 
| eventstats values(encoded_values) as encoded_values by guid
| eval subs_encoded = case(NOT match(encoded_values, "^00"), encoded_values)
| eval base32_encoded = case(match(encoded_values, "^00"), encoded_values)
| mvcombine delim="|" base32_encoded
| nomv base32_encoded
| lookup sunburst_b32_decode_list encoded AS base32_encoded OUTPUT decoded AS b32_decoded
| lookup sunburst_subs_decode_list encoded AS subs_encoded OUTPUT decoded AS subs_decoded
| makemv delim=";" decoded_b32
| makemv delim=";" subs_decoded


This is an open source project, no support provided, public repository available.


The modified splunklib will be removed when the related issue with leading spaces is resolved.



- Initial release

Release Notes

Version 1.0.0
Jan. 8, 2021


Subscribe Share

AppInspect Tooling

Splunk AppInspect evaluates Splunk apps against a set of Splunk-defined criteria to assess the validity and security of an app package and components.

Are you a developer?

As a Splunkbase app developer, you will have access to all Splunk development resources and receive a 10GB license to build an app that will help solve use cases for customers all over the world. Splunkbase has 1000+ apps and add-ons from Splunk, our partners and our community. Find an app or add-on for most any data source and user need, or simply create your own with help from our developer portal.

Follow Us:
© 2005-2021 Splunk Inc. All rights reserved.
Splunk®, Splunk>®, Listen to Your Data®, The Engine for Machine Data®, Hunk®, Splunk Cloud™, Splunk Light™, SPL™ and Splunk MINT™ are trademarks and registered trademarks of Splunk Inc. in the United States and other countries. All other brand names, product names, or trademarks belong to their respective owners.