<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chad Ray</title>
    <description>The latest articles on DEV Community by Chad Ray (@chad_ray_7d6ba00911308ded).</description>
    <link>https://dev.to/chad_ray_7d6ba00911308ded</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4124159%2Fc4906426-59ef-41af-bdee-e12b503b9166.png</url>
      <title>DEV Community: Chad Ray</title>
      <link>https://dev.to/chad_ray_7d6ba00911308ded</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chad_ray_7d6ba00911308ded"/>
    <language>en</language>
    <item>
      <title>When Every Event Looks Normal: Logster and the Context Gap in Endpoint Detection</title>
      <dc:creator>Chad Ray</dc:creator>
      <pubDate>Mon, 14 Sep 2026 08:39:40 +0000</pubDate>
      <link>https://dev.to/chad_ray_7d6ba00911308ded/when-every-event-looks-normal-logster-and-the-context-gap-in-endpoint-detection-o2b</link>
      <guid>https://dev.to/chad_ray_7d6ba00911308ded/when-every-event-looks-normal-logster-and-the-context-gap-in-endpoint-detection-o2b</guid>
      <description>&lt;p&gt;A PowerShell process starts. A script appears in a temporary directory. A scheduled task is registered. A connection goes out to an unfamiliar address.&lt;/p&gt;

&lt;p&gt;An analyst could find a reasonable explanation for each of those actions. Software deployment, perhaps. A maintenance job. An administrator troubleshooting a workstation.&lt;/p&gt;

&lt;p&gt;But were they part of the same operation? Did the process that downloaded the script also arrange for it to run at the next login? Was that process launched by the expected management agent, or by something that had no reason to start a shell?&lt;/p&gt;

&lt;p&gt;Those questions change the investigation. The challenge is getting enough context to answer them before the activity disappears into another day of logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeways&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Legitimate tools can perform malicious actions; their names alone rarely settle an investigation.&lt;/li&gt;
&lt;li&gt;Relationships between processes, files, and connections help distinguish routine work from suspicious behavior.&lt;/li&gt;
&lt;li&gt;Automated analysis is useful when it preserves evidence and reduces the work needed to investigate a finding.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Familiar tools leave ambiguous evidence
&lt;/h2&gt;

&lt;p&gt;Living off the land means abusing tools and capabilities already available in the environment. Their legitimate uses give attackers room to blend into routine administration.&lt;/p&gt;

&lt;p&gt;CISA and its partners describe this detection challenge in their joint guidance, &lt;em&gt;Identifying and Mitigating Living Off the Land Techniques&lt;/em&gt;. They emphasize detailed logging, established baselines, and correlation to distinguish malicious activity from legitimate operations. Recognizing an executable is only one part of understanding its use. (&lt;a href="https://www.ic3.gov/CSA/2024/240207-2.pdf" rel="noopener noreferrer"&gt;CISA and partners, February 2024&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The wider threat data reinforces why signatures alone are insufficient. CrowdStrike's 2026 Global Threat Report states that &lt;strong&gt;82% of detections in 2025 were malware-free&lt;/strong&gt;. That describes CrowdStrike's observed detections, not all attacks worldwide, and malware-free activity is broader than living off the land. It does, however, show why detection cannot depend entirely on finding a malicious file. (&lt;a href="https://www.crowdstrike.com/en-us/global-threat-report/" rel="noopener noreferrer"&gt;CrowdStrike, 2026 Global Threat Report&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Consider this hypothetical Windows sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A process launches PowerShell with an encoded command.&lt;/li&gt;
&lt;li&gt;PowerShell writes a script into a temporary directory.&lt;/li&gt;
&lt;li&gt;A child process registers a scheduled task that references that script.&lt;/li&gt;
&lt;li&gt;The same process tree contacts an external destination and queries domain accounts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is an illustration, not a captured incident. It also isn't proof of compromise: administration software can perform similar operations. Some of the individual actions may already trigger good detections.&lt;/p&gt;

&lt;p&gt;What makes the sequence worth investigating is the connection between the actions. A newly written script, a persistence mechanism pointing to it, and related discovery activity give an analyst a more specific question than “Was PowerShell running?”&lt;/p&gt;

&lt;h2&gt;
  
  
  Collecting the events is only the beginning
&lt;/h2&gt;

&lt;p&gt;A searchable log store can contain every relevant record and still leave considerable work for the analyst.&lt;/p&gt;

&lt;p&gt;The process creation event may live in one view, the file write in another, and the network connection in a third. Before making a judgment, someone has to establish which process performed each action, reconstruct its ancestry, and align the timestamps. Missing identifiers or incomplete collection make that harder.&lt;/p&gt;

&lt;p&gt;Existing tools already address parts of this problem. Event correlation is an established capability: Elastic's EQL rules, for example, can match ordered sequences and join events through shared fields such as process or host identifiers. It would be inaccurate to say that rules only understand isolated events. (&lt;a href="https://www.elastic.co/docs/solutions/security/detect-and-alert/eql" rel="noopener noreferrer"&gt;Elastic, Event correlation rules&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The practical challenge is coverage. A correlation rule describes a relationship its author anticipated. Detection engineers still have to choose which sequences matter, tune them against legitimate operations, and maintain them as the environment changes.&lt;/p&gt;

&lt;p&gt;A useful additional capability would preserve the surrounding behavior even when it doesn't match a prewritten sequence. That gives both automated analysis and the person reviewing its result more evidence to work with.&lt;/p&gt;

&lt;h2&gt;
  
  
  A process tree helps, but the activity extends beyond it
&lt;/h2&gt;

&lt;p&gt;A behavior graph connects the entities involved in an operation. Processes, files, and network destinations become nodes; actions such as spawning, writing, and connecting become edges. Timestamps help retain the order in which those actions occurred.&lt;/p&gt;

&lt;p&gt;The value becomes clearer when you compare the questions available at each level:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Recorded activity&lt;/th&gt;
&lt;th&gt;Context that helps explain it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PowerShell started&lt;/td&gt;
&lt;td&gt;Which parent launched it, with what command line and account?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A script was written&lt;/td&gt;
&lt;td&gt;Which process wrote it, and was it subsequently executed?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A scheduled task was registered&lt;/td&gt;
&lt;td&gt;What does it run, and how does that target relate to earlier activity?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An outbound connection occurred&lt;/td&gt;
&lt;td&gt;Which process opened it, and what else did that process do?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A graph does not make these actions malicious. It makes their relationships available for analysis. A management agent carrying out an expected deployment and an unexpected shell arranging persistence may use overlapping tools while producing different surrounding behavior.&lt;/p&gt;

&lt;p&gt;Nor does proximity prove causation. Two events on the same host within a minute are not automatically related. Reliable process identity, explicit file references, and observed parent-child relationships matter more than simply drawing lines between nearby timestamps. This also connects detection quality to collection quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the context available before an analyst opens the alert
&lt;/h2&gt;

&lt;p&gt;Once activity has been organized into a graph, a detector can assess a connected set of actions. Rules, graph models, and language models offer different ways to do that; the representation and the method used to evaluate it are separate choices.&lt;/p&gt;

&lt;p&gt;A language model can receive a textual representation of the graph alongside instructions about suspicious behavior and legitimate operating patterns. The intended benefit is contextual assessment: examining what the connected actions suggest, then returning a structured result that the surrounding system can process.&lt;/p&gt;

&lt;p&gt;Logster is one implementation of this approach. It is an endpoint threat detection platform for SOC teams, with ingestion paths for Windows Sysmon and PowerShell logs and Linux auditd and eBPF telemetry. Its pipeline normalizes incoming records and builds activity graphs over per-endpoint windows.&lt;/p&gt;

&lt;p&gt;In the current implementation, an LLM classifier evaluates the serialized graph and supplies the verdict, subject to configured thresholds. The platform also provides alerts, graph views, and process trees for investigation. This brings the connection between collection, detection, and investigation into the same workflow: the relationships assembled for analysis can also help the analyst understand the finding.&lt;/p&gt;

&lt;p&gt;That is the useful idea here. Instead of beginning every investigation by reconstructing how disconnected records fit together, the analyst can start with an assembled account of the observed activity and test whether the conclusion is supported.&lt;/p&gt;

&lt;p&gt;The architecture alone does not establish detection accuracy or time saved. Those outcomes need to be measured against representative attacks and legitimate workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  The context still has limits
&lt;/h2&gt;

&lt;p&gt;Any verdict is bounded by the evidence the system collected and retained.&lt;/p&gt;

&lt;p&gt;A short activity window may miss an earlier action that explains what happened next. An endpoint graph cannot, by itself, establish the full story of an operation spanning several hosts. Missing script content or incomplete process ancestry can leave crucial questions unanswered.&lt;/p&gt;

&lt;p&gt;Model input limits add another constraint. Logster's serializer includes mechanisms to compact and truncate oversized graphs to fit the available input budget. A model may therefore receive less detail than the complete collected window. Evaluating what survives that reduction matters as much as evaluating the model's answer.&lt;/p&gt;

&lt;p&gt;A language model can also produce a plausible explanation that the records do not support. Its reported confidence should not be treated as a calibrated probability of correctness without validation. An analyst needs a way to inspect the evidence behind the conclusion.&lt;/p&gt;

&lt;p&gt;Operational failures deserve equally clear treatment. In Logster's current classifier resolution path, a failed model call or missing verdict is reported as an error. Separately, model attack verdicts that fall below the configured probability or confidence thresholds are demoted to benign, with a suppression reason recorded. Both behaviors matter when measuring coverage: an unavailable decision and a suppressed finding need to be visible during evaluation.&lt;/p&gt;

&lt;p&gt;These constraints leave plenty of room for conventional controls. Known malicious artifacts and well-understood behaviors still warrant direct detection. Contextual analysis adds value when the ambiguity lies in how otherwise familiar actions fit together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluate the investigation, not just the alert
&lt;/h2&gt;

&lt;p&gt;A practical evaluation should pair a suspicious sequence with a legitimate workflow that uses similar tools. A scripted software deployment is a useful comparison for a sequence involving script execution, downloads, and scheduled tasks.&lt;/p&gt;

&lt;p&gt;Ask the system to show what distinguishes them. Then inspect the evidence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it preserve the process ancestry and relevant command lines?&lt;/li&gt;
&lt;li&gt;Can the reviewer follow a file from creation to later use?&lt;/li&gt;
&lt;li&gt;Are the claimed relationships observed, or inferred only from timing?&lt;/li&gt;
&lt;li&gt;What happens when activity crosses a window boundary or telemetry is missing?&lt;/li&gt;
&lt;li&gt;How often does it flag legitimate work, miss the test attack, or fail to produce a verdict?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Measure time to a supported decision alongside detection results. An alert that names a technique but leaves the analyst to reconstruct everything may offer less operational value than its demo suggests.&lt;/p&gt;

&lt;p&gt;The next time a detection fires on a familiar administrative tool, follow the actions around it. Check who launched it, what it changed, and what followed. A useful endpoint detection system should make that investigation easier to begin and easier to verify.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: Endpoint Detection, Living off the Land, Security Operations, Behavioral Analysis, Logster&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
  </channel>
</rss>
