{"id":25664,"date":"2025-05-20T05:00:00","date_gmt":"2025-05-20T13:00:00","guid":{"rendered":"https:\/\/www.sumologic.com\/?post_type=blog&#038;p=25664"},"modified":"2026-02-17T11:12:58","modified_gmt":"2026-02-17T19:12:58","slug":"monitor-slack-audit-logs-cloud-siem","status":"publish","type":"blog","link":"https:\/\/www.sumologic.com\/blog\/monitor-slack-audit-logs-cloud-siem","title":{"rendered":"Secure your Slack environment with Sumo Logic Cloud SIEM"},"content":{"rendered":"\n<section class=\"e-stn e-stn-0d652506f82b000a392973813b918ee25d5b4211 e-stn--glossary-inner-content e-stn--table-of-content\"><div class=\"container\">\n<div class=\"wp-block-b3rg-row e-row row\">\n<div class=\"wp-block-b3rg-column e-col e-col-1f7b3997080fc292474d26ff00c905d99d3520fa e-col--content-wrapper  col-sm-12 col-lg-12 col-xl-12\">\n<div class=\"e-div e-div-a1b32f66e1749758df41d5aea14f647cd10e362c e-div--card-btn-link\"><div class=\"e-img \">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"293\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2-1024x293.webp\" alt=\"Sumo Logic: Secure your Slack environment\" class=\"wp-image-25562\" title=\"\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2-1024x293.webp 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2-300x86.webp 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2-768x219.webp 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2-575x164.webp 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/Header-blog-ThreatLabs_Slack_700x200_V2.webp 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Slack has become integral for many organizations, powering everything from internal to external communication and project workflows. But as adoption grows, so does risk. Hackers are increasingly targeting Slack as it often contains intellectual property, credentials, and valuable reconnaissance information. <\/p>\n\n\n\n<p><a href=\"https:\/\/www.sumologic.com\/solutions\/cloud-siem\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.sumologic.com\/solutions\/cloud-siem\" rel=\"noreferrer noopener\">Sumo Logic Cloud SIEM now secures your Slack usage<\/a>&nbsp;against insider and third-party threats by monitoring&nbsp;<a href=\"https:\/\/www.sumologic.com\/glossary\/audit-log\">audit logs<\/a>&nbsp;for suspicious activity to keep your company and its data protected.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-a-10-stolen-slack-cookie-led-to-a-major-breach\">How a $10 stolen Slack cookie led to a major breach<\/h2>\n\n\n\n<p>Take the&nbsp;<a href=\"https:\/\/www.ea.com\/news\/ea-statement-on-june-11-security-incident\" target=\"_blank\" rel=\"noreferrer noopener\">Electronic Arts (EA) breach<\/a>&nbsp;as an example. In the data breach,&nbsp;<a href=\"https:\/\/www.vice.com\/en\/article\/how-ea-games-was-hacked-slack\/\" target=\"_blank\" rel=\"noreferrer noopener\">attackers bought a stolen Slack cookie for $10<\/a>. That purchase gave them access to an internal Slack channel, which they then used to socially engineer EA\u2019s IT team into giving them an access token to EA\u2019s internal network. Attackers then stole 780GB of data, including source code for the game FIFA 21 and proprietary software development kits.&nbsp;<\/p>\n\n\n\n<p>EA isn\u2019t alone. High-profile companies such as&nbsp;<a href=\"https:\/\/www.wsj.com\/business\/media\/internal-disney-communications-leaked-online-after-hack-b57baaeb\" target=\"_blank\" rel=\"noreferrer noopener\">Disney<\/a>,&nbsp;<a href=\"https:\/\/www.cpomagazine.com\/cyber-security\/rockstar-gta6-leak-came-from-cyber-attack-that-breached-internal-slack-channel\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rockstar<\/a>,&nbsp;<a href=\"https:\/\/www.cpomagazine.com\/cyber-security\/major-cybersecurity-incident-at-uber-network-breach-began-with-social-engineering-by-teenage-culprit-sensitive-information-stored-in-plaintext\/\" target=\"_blank\" rel=\"noreferrer noopener\">Uber<\/a>, and&nbsp;<a href=\"https:\/\/mashable.com\/article\/slack-key-to-twitter-hack\" target=\"_blank\" rel=\"noreferrer noopener\">Twitter<\/a>&nbsp;have suffered attacks where Slack has played a major role in the attack\u2019s success.&nbsp;<\/p>\n\n\n\n<p>It\u2019s not hard to understand why Slack is targeted as either an important pivot point or the final objective for an attacker, as it is ripe ground for attackers as they execute various tactics such as initial access, discovery, credential theft, and exfiltration.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-slack-s-audit-logs-are-key-for-better-security\">Why Slack\u2019s audit logs are key for better security<\/h2>\n\n\n\n<p>With Slack being such a highly appealing target, your Slack environment should be continuously monitored for malicious behavior.<\/p>\n\n\n\n<p>One way to begin monitoring is through logs.&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/integrations\/saas-cloud\/slack\/#log-types\" target=\"_blank\" rel=\"noreferrer noopener\">Slack provides several different types of logs<\/a>, from audit logs to access logs and more. For the purpose of this blog, we\u2019ll focus on&nbsp;<a href=\"https:\/\/api.slack.com\/admins\/audit-logs#what\" target=\"_blank\" rel=\"noreferrer noopener\">audit logs<\/a>, which Slack generates \u201cto ensure continued compliance, to safeguard against any inappropriate system access, and to allow you to audit suspicious behavior within your enterprise.\u201d<\/p>\n\n\n\n<p>These audit logs and the ability to access them via API are integral for a&nbsp;<a href=\"https:\/\/www.sumologic.com\/solutions\/cloud-siem\">SIEM solution like Sumo Logic<\/a>&nbsp;to perform security monitoring and integration.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"use-slack-s-audit-logs-to-perform-threat-detection\">Use Slack\u2019s audit logs to perform threat detection<\/h3>\n\n\n\n<p>A valuable feature of the&nbsp;<a href=\"https:\/\/slack.engineering\/slack-audit-logs-and-anomalies\/\" target=\"_blank\" rel=\"noreferrer noopener\">Slack audit logs<\/a>&nbsp;is anomaly events, which are automatically generated when Slack detects anomalous actions or behavior. Not all anomaly events require action, and different anomaly events have different confidence levels. If an anomaly event is triggered, you\u2019ll likely need to investigate further to qualify it and decide whether to act on it.<\/p>\n\n\n\n<p>Although Slack doesn\u2019t provide confidence levels along with their anomaly events, they\u2019ve made it clear that some events are considered high-confidence indicators of compromise.&nbsp;<\/p>\n\n\n\n<p>The&nbsp;<a href=\"https:\/\/slack.com\/help\/articles\/37193054707603-Configure-audit-log-anomaly-event-responses-in-Slack\" target=\"_blank\" rel=\"noreferrer noopener\">Anomaly event response feature<\/a>&nbsp;also provides a clue as to which anomaly events Slack considers high-confidence. The feature automatically ends user sessions if certain anomaly events are attributed to them. The two events chosen by default are \u201cAccessing Slack from a Tor exit node\u201d and \u201cData scraping,\u201d suggesting that Slack Engineering considers these two detections high-confidence.<\/p>\n\n\n\n<p>Slack anomaly events are especially useful for security teams because they can be ingested and analyzed in a SIEM. Sumo Logic Cloud SIEM fully supports Slack anomaly events. These events are&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/cse\/rules\/normalized-threat-rules\/\" target=\"_blank\" rel=\"noreferrer noopener\">normalized as threat alerts<\/a>&nbsp;and trigger a rule named \u201cNormalized Security Signal\u201d (MATCH-S00402). This means anomaly events can now contribute to an entity\u2019s&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/cse\/get-started-with-cloud-siem\/insight-generation-process\/#understanding-entity-activity-scores\" target=\"_blank\" rel=\"noreferrer noopener\">activity score<\/a>, helping analysts quickly identify users or systems exhibiting suspicious behavior.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"705\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1-1024x705.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1-300x206.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1-768x528.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1-575x396.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1.png 1404w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img1-1-1024x705.png\" alt=\"blog slack env img1 1\" title=\"\"><\/p>\n\n\n\n<p><em>Slack anomaly events are passed through as Sumo Cloud SIEM Signals<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"1024\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1-748x1024.png 748w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1-219x300.png 219w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1-768x1051.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1-575x787.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1.png 1046w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img2-1-748x1024.png\" alt=\"blog slack env img2 1\" title=\"\"><\/p>\n\n\n\n<p><em>Slack Anomaly event response default settings<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-collect-and-ingest-slack-audit-logs-with-sumo-logic\">How to collect and ingest Slack audit logs with Sumo Logic<\/h2>\n\n\n\n<p>Collecting Slack audit logs with Sumo Logic is a straightforward task. This<a href=\"https:\/\/help.sumologic.com\/docs\/send-data\/hosted-collectors\/cloud-to-cloud-integration-framework\/slack-source\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;thorough guide<\/a>&nbsp;shows how to collect logs from Slack, but here\u2019s an overview of the steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Confirm that you have a Slack Enterprise Grid account. Without an Enterprise Grid account, you won\u2019t be able to collect Slack audit logs.<\/li>\n\n\n\n<li>Create a Slack app that has&nbsp;<code>auditlogs:read<\/code>&nbsp;permission.<\/li>\n\n\n\n<li>Install the app on Enterprise Grid.<\/li>\n\n\n\n<li>Install and configure the Sumo Logic Slack Cloud-to-Cloud Connector.<\/li>\n\n\n\n<li>IMPORTANT NOTE: Ensure that the Slack log source is configured to forward logs to the SIEM by selecting the \u201cForward to SIEM\u201d checkbox.&nbsp;&nbsp;<\/li>\n<\/ol>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"784\" height=\"1024\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1-784x1024.png\" alt=\"blog slack env img3 1\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1-784x1024.png 784w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1-230x300.png 230w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1-768x1003.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1-575x751.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img3-1.png 812w\" title=\"\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-security-analysts-can-use-slack-logs-for-threat-detection-investigation-and-response\">How security analysts can use Slack logs for threat detection, investigation, and response&nbsp;<\/h2>\n\n\n\n<p>Slack is providing a valuable service to its customers by detecting anomalous behavior and generating anomaly events, as they\u2019re uniquely positioned to understand what types of behavior should be considered anomalous on their platform.<\/p>\n\n\n\n<p>However, Slack Engineering doesn\u2019t publicly share the detection criteria they use to generate anomaly events. It\u2019s not hard to understand why \u2014 if the criteria were public knowledge, attackers would have an easier time formulating defense evasion techniques.<\/p>\n\n\n\n<p>For security analysts, though, this can make things difficult. Without knowing exactly why an alert was triggered, you\u2019ll likely spend more time formulating queries to retrieve the audit logs that triggered the anomaly event. Tuning the analytics and assessing it for false negatives is also more challenging for similar reasons and may require guesswork.<\/p>\n\n\n\n<p>Some anomaly event reasons provide more clarity than others about what triggered the event. Others, such as \u201cexcessive_downloads,\u201d are murkier, requiring you to search for download activity leading up to the event, review either what was downloaded, or assess whether the download volume is \u201cnormal\u201d for the user compared to prior time periods.&nbsp;<\/p>\n\n\n\n<p>Now, let\u2019s dive into how to investigate some of these anomaly events in practice.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"investigating-potential-cookie-theft-in-slack\">Investigating potential cookie theft in Slack&nbsp;<\/h2>\n\n\n\n<p>Let\u2019s return to the EA breach example, where attackers used a stolen cookie to access internal systems. Which Slack anomaly events would we expect to see from the reuse of a stolen cookie? If anomaly events are logged, how can we investigate them?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"understanding-slack-session-ids\">Understanding Slack session IDs<\/h3>\n\n\n\n<p>Each time a user logs into Slack, a session ID is generated. That session persists as a cookie on the device. Our expectation is that each session ID should map to a single device. If a cookie is stolen and used on a different device, you\u2019ll likely see variations in artifacts like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>User agent string<\/li>\n\n\n\n<li>IP address and location<\/li>\n\n\n\n<li>TLS handshake (ja3 fingerprint)&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>These signals can help identify suspicious reuse, though it\u2019s important to note that Slack audit logs are only generated for interactive actions. Passive access (like reading messages without clicking or downloading) may not trigger log entries, so detecting cookie reuse depends on the nature of user activity.<\/p>\n\n\n\n<p>These differences will appear in the logs associated with that same session ID.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"186\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1-1024x186.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1-300x55.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1-768x140.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1-575x105.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1.png 1230w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img4-1-1024x186.png\" alt=\"blog slack env img4 1\" title=\"\"><\/p>\n\n\n\n<p><em>Example Slack session ID as seen in a Sumo Logic Cloud SIEM record<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"anomaly-events-that-could-signal-cookie-theft\">Anomaly events that could signal cookie theft<\/h3>\n\n\n\n<p>In reviewing the list of&nbsp;<a href=\"https:\/\/api.slack.com\/admins\/audit-logs-anomaly\" target=\"_blank\" rel=\"noreferrer noopener\">Slack anomaly events<\/a>&nbsp;that would be triggered by cookie theft, there are several candidates:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>asn<\/code><\/li>\n\n\n\n<li><code>ip_address<\/code><\/li>\n\n\n\n<li><code>session_fingerprint<\/code><\/li>\n\n\n\n<li><code>tor<\/code><\/li>\n\n\n\n<li><code>unexpected_client<\/code><\/li>\n\n\n\n<li><code>unexpected_user_agent<\/code><\/li>\n\n\n\n<li><code>user_agent<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"hunt-for-potential-cookie-theft-using-sumo-logic\">Hunt for potential cookie theft using Sumo Logic<\/h3>\n\n\n\n<p>With the above knowledge, we\u2019ll begin by casting a wide net and searching for all recent Slack anomaly events in our environment for the last two weeks. The following search will return all Slack anomaly events and group them by reason:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">_index=sec_record_notification metadata_vendor=\"Slack\" metadata_deviceEventId=\"anomaly\"\n| count by threat_signalName<\/pre>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"635\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1-1024x635.png\" alt=\"blog slack env img5 1\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1-1024x635.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1-300x186.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1-768x476.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1-575x356.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img5-1.png 1094w\" title=\"\"><\/p>\n\n\n\n<p><em>Figure 4: Slack anomaly events grouped by reason<\/em><\/p>\n\n\n\n<p>In our case, the search returned 323 results. Two items of note:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>More than one reason can be assigned to an anomaly, as made evident by results such as&nbsp;<code>asn|ip_address<\/code>&nbsp;and&nbsp;<code>unexpected_user_agent|user_agent<\/code>.<\/li>\n\n\n\n<li>The highest-volume anomaly reason is asn|ip_address. These events can be tuned by adding trusted autonomous system numbers (ASNs) and IP address ranges to an&nbsp;<a href=\"https:\/\/api.slack.com\/admins\/audit-logs-anomaly#exclude\" target=\"_blank\" rel=\"noreferrer noopener\">exclusion list via API<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>Our hunt for stolen cookies will continue by focusing on the events with the reasons&nbsp;<code>unexpected_user_agent<\/code>&nbsp;and&nbsp;<code>user_agent<\/code>. We retrieve those events and their session IDs via the following query:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">_index=sec_record_notification metadata_vendor=\"Slack\" metadata_deviceEventId=\"anomaly\"\n| where threat_signalName = \"Anomaly Event : unexpected_user_agent|user_agent\"\n| count by sessionId<\/pre>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"810\" height=\"410\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img6-1.png\" alt=\"blog slack env img6 1\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img6-1.png 810w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img6-1-300x152.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img6-1-768x389.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img6-1-575x291.png 575w\" title=\"\"><\/p>\n\n\n\n<p><em>Session IDs of&nbsp;<code>unexpected_user_agent<\/code>&nbsp;anomaly events<\/em><\/p>\n\n\n\n<p>Now that we have anomalies to research, let\u2019s drill into a few of them:<\/p>\n\n\n\n<p>Reviewing the details of the anomaly event provides some context about why the event was triggered:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"857\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1-1024x857.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1-300x251.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1-768x643.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1-575x481.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1.png 1432w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img7-1-1024x857.png\" alt=\"blog slack env img7 1\" title=\"\"><\/p>\n\n\n\n<p><em>Details of the&nbsp;<code>unexpected_user_agent|user_agent<\/code>&nbsp;anomaly event<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"analyzing-the-anomaly-event\">Analyzing the anomaly event<\/h3>\n\n\n\n<p>The&nbsp;<code>details<\/code>&nbsp;metadata of the anomaly event provides the reason for the event triggering: the IP address and user agent have changed.&nbsp;<\/p>\n\n\n\n<p><strong>The IP address change<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The current IP address:&nbsp;<code>172.59.222.55<\/code><\/li>\n\n\n\n<li>The previous IP address:&nbsp;<code>204.16.138.54<\/code><\/li>\n<\/ul>\n\n\n\n<p>Does the IP address change indicate that the device changed, perhaps from the user\u2019s to the attacker\u2019s? It\u2019s possible, but considering that it\u2019s a mobile device, and the geoIP information places both addresses in the Charlotte, North Carolina area, we don\u2019t suspect a change in devices.<\/p>\n\n\n\n<p><strong>The user agent change<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The current user agent: \u201c<code>AppleCoreMedia\/1.0.0.21F90 (iPhone; U; CPU OS 17_5_1 like Mac OS X; en_us)<\/code>\u201d<\/li>\n\n\n\n<li>The previous user agent: \u201c<code>com.tinyspeck.chatlyio\/25.04.10 (iPhone; iOS 17.5.1; Scale\/3.00)<\/code>\u201c<\/li>\n<\/ul>\n\n\n\n<p>Does the user agent change indicate that the device changed?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Assuming that the user agent strings weren\u2019t spoofed, an iPhone with OS version 18.4.&nbsp;<\/li>\n\n\n\n<li>Tiny Speck is the original name of the company that developed Slack. The user agent string&nbsp;<code>com.tinyspeck.chatlyio\/25.04.10<\/code>&nbsp;likely corresponds to the Slack iOS client.<br><code>AppleCoreMedia<\/code>&nbsp;is a framework used by iOS for handling streaming and media playback.<\/li>\n\n\n\n<li>Based on this, it\u2019s plausible that the AppleCoreMedia user agent appears when media files (such as videos) are streamed from within Slack, while the Tiny Speck agent reflects typical Slack usage. While we can\u2019t confirm this behavior from public documentation, our log analysis supports this interpretation.<\/li>\n\n\n\n<li>AppleCoreMedia is used by iOS for streaming media.<\/li>\n<\/ul>\n\n\n\n<p>So perhaps the Tiny Speck user agent is for normal Slack usage, and the AppleCoreMedia user agent is for streaming media from Slack?<\/p>\n\n\n\n<p>We can test this theory by reviewing the individual logs contributing to the anomaly event. We\u2019ll start by searching for the session ID and examining the user agent associated with the actions:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">(_index=sec_record_notification OR _index=sec_record_audit) metadata_vendor=\"Slack\" sessionId=8475310491012\n| fields action, http_userAgent<\/pre>\n\n\n\n<p>Remember, sessions can last a long time, and you should be generous when setting the time range for the search. The session investigated in this discussion lasted over 90 days.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-1024x387.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-300x113.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-768x290.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-1536x581.png 1536w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-575x217.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1.png 1600w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img8-1-1024x387.png\" alt=\"blog slack env img8 1\" title=\"\"><\/p>\n\n\n\n<p><em>Audited Slack actions and their associated user agent strings<\/em><\/p>\n\n\n\n<p>We\u2019ll focus on the days preceding the anomaly event on April 9, 2025. In the hour leading up to the anomaly event, the user agent changed from the Tiny Speck (Slack) agent to AppleCoreMedia. Why? Possibly because the file type involved in the&nbsp;<code>file_downloaded<\/code>&nbsp;actions required streaming. We\u2019ll add the&nbsp;<code>file_mimetype<\/code>&nbsp;field to the display of our search results by selecting the field name from the hidden fields section of the field list:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"664\" height=\"738\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img9-1.png 664w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img9-1-270x300.png 270w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img9-1-575x639.png 575w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img9-1.png\" alt=\"blog slack env img9 1\" title=\"\"><\/p>\n\n\n\n<p><em>Field 8: Adding the file_mimeType field to the display of search results<\/em><\/p>\n\n\n\n<p>With the&nbsp;<code>file_mimeType<\/code>&nbsp;displayed, we can see plainly that the user agent is AppleCoreMedia when downloading MP4 files and Tiny Speck when downloading a JPG file:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"351\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-1024x351.png 1024w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-300x103.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-768x263.png 768w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-1536x526.png 1536w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-575x197.png 575w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1.png 1600w\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img10-1-1024x351.png\" alt=\"blog slack env img10 1\" title=\"\"><\/p>\n\n\n\n<p><em>Figure 9: Analysis of user agent strings associated with downloaded file types<\/em><\/p>\n\n\n\n<p>In this case, the Slack Anomaly event didn\u2019t uncover malicious behavior. There was a session in which the user agent changed, but it was not because more than one device was using the same session cookie.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"using-slack-anomaly-event-types-for-custom-analytic-content\">Using Slack anomaly event types for custom analytic content<\/h2>\n\n\n\n<p>Slack doesn\u2019t reveal the exact logic behind their anomaly detection, which makes sense from a security standpoint. But the&nbsp;<a href=\"https:\/\/api.slack.com\/admins\/audit-logs-anomaly\" target=\"_blank\" rel=\"noreferrer noopener\">anomaly event types<\/a>&nbsp;themselves serve as inspiration for dashboards, hunts, and our own custom analytics.&nbsp;<\/p>\n\n\n\n<p>You can use them to monitor for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Administrative actions outside of the norm, with a&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/cse\/rules\/write-first-seen-rule\/\" target=\"_blank\" rel=\"noreferrer noopener\">First Seen rule<\/a><\/li>\n\n\n\n<li>Spikes in the volume of downloads, file shares or message deletions, with&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/cse\/rules\/write-outlier-rule\/\" target=\"_blank\" rel=\"noreferrer noopener\">Outlier Rules&nbsp;<\/a><\/li>\n<\/ul>\n\n\n\n<p>Going back to the topic of cookie theft, how can we hunt for Slack sessions that involve more than one user agent string? We can use the&nbsp;<a href=\"https:\/\/help.sumologic.com\/docs\/search\/search-query-language\/group-aggregate-operators\/count-count-distinct-and-count-frequent\/#count_distinct\" target=\"_blank\" rel=\"noreferrer noopener\">count_distinct operator<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">(_index=sec_record_notification OR _index=sec_record_audit) metadata_vendor=\"Slack\" metadata_product=\"Slack\"&nbsp;\n| count_distinct(http_userAgent) by sessionId\n| sort by _count_distinct<\/pre>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"616\" src=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img11-1.png\" alt=\"blog slack env img11 1\" srcset=\"https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img11-1.png 698w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img11-1-300x265.png 300w, https:\/\/www.sumologic.com\/wp-content\/uploads\/blog-slack-env-img11-1-575x507.png 575w\" title=\"\"><\/p>\n\n\n\n<p><em>Count of distinct user agent strings per <code>sessionId<\/code><\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Then, when we find sessions of interest, we can return all its logs via a query such as:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">(_index=sec_record_notification OR _index=sec_record_audit) metadata_vendor=\"Slack\" sessionId=[insert session ID here]\n| count by http_userAgent<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"stay-ahead-of-slack-based-threats\">Stay ahead of Slack-based threats<\/h2>\n\n\n\n<p>Slack is a rich source of company information, making it a desirable target for hackers. Monitoring Slack audit logs, including anomaly events, is crucial for detecting a compromise early.&nbsp;<\/p>\n\n\n\n<p>Sumo Logic makes it easy to collect, analyze, and act on these logs, so your team can stay one step ahead of threats.&nbsp;<\/p>\n\n\n\n<p>To learn more about Sumo Logic Cloud SIEM,&nbsp;<a href=\"https:\/\/www.sumologic.com\/demo\/complete-threat-detection-investigation-and-response-demo\">view our interactive Cloud SIEM demo.&nbsp;<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":332,"featured_media":25563,"template":"","meta":{"_acf_changed":false,"show_custom_date":false,"custom_date":"","featured":false,"featured_image":0,"learn_more_label":"","image_alt_text":"","learn_more_type":"","show_popup":false,"learn_more_link_file":0,"event_date":false,"event_start_date":"","event_end_date":"","place_holder_image_url":"","post_reading_time":"8","notification_enabled":false,"notification_text":"","notification_logo":"","notification_expiration_time":0,"is_enable_transparent_header":false,"selected_taxonomy_terms":{"blog-category":[126],"blog-tag":[],"translation_priority":[221]},"selected_primary_terms":{"blog-category":[]},"learn_more_link":[],"featured_page_list":[],"notification_enabled_post_list":[],"_gspb_post_css":"","_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"71176,71070,71043","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"blog-category":[126],"blog-tag":[],"class_list":["post-25664","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-cloud-siem"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/25664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/users\/332"}],"version-history":[{"count":9,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/25664\/revisions"}],"predecessor-version":[{"id":69852,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog\/25664\/revisions\/69852"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/media\/25563"}],"wp:attachment":[{"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/media?parent=25664"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog-category?post=25664"},{"taxonomy":"blog-tag","embeddable":true,"href":"https:\/\/www.sumologic.com\/wp-json\/wp\/v2\/blog-tag?post=25664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}