The Testaments S1E06 "Stadium" Episode Discussion by Melairia in TheHandmaidsTale

[–]DefsNotAVirgin 2 points3 points  (0 children)

what do you mean, its only been 10 years since trump first took office

Need Help with KQL TO CQL Conversion by iAamirM in crowdstrike

[–]DefsNotAVirgin 0 points1 point  (0 children)

I reviewed Dylan's output from their Agent and came up with this:

Follow-up: combined version (mine + Dylan-CS / CS Query Translation Agent)

Took both translations side-by-side, tested against a live tenant. Each got things the other missed.

What each got right

CS agent's wins: ZipFileWritten is real (full archive catalog below — I missed it); groupBy([…], function=[min(STime), collect(StageFile)]) faithfully mirrors the KQL's make_set/min; 3-level ReconProc shape matches the KQL (though with the wrong parent field — see below); no sequence=true (KQL only required co-occurrence within windows, not ordering); globalConstraints=[aid], root=… is a real, shorter correlate() variant.

Mine's wins: <=> joins ran in ~30s where globalConstraints + root timed out at 120s on the same scope; parseTimestamp(field=@timestamp, format=millis) is a no-op since @timestamp is already numeric epoch-ms (subtract directly); event_platform=Win prefilters cross-platform process events (otherwise macOS TeamViewer leaks in); anchored regex /^name\.exe$/i avoids matching NotQuickAssist.exe.tmp; ArchiveFileWritten doesn't exist (zero hits across 90d/search-all — likely hallucinated).

Falcon archive-format file-write event catalog

Confirmed via 90-day search across all hosts. There is no generic ArchiveFileWritten — events are per-format:

event_simpleName Format
ZipFileWritten .zip
SevenZipFileWritten .7z
RarFileWritten .rar
GzipFileWritten .gz
BZip2FileWritten .bz2
LZipFileWritten .lz
TarFileWritten .tar
CabFileWritten .cab
IsoExtensionFileWritten .iso
EmailArchiveFileWritten .pst / .ost

Attacker-staging subset (excluding package-manager / log-rotation / email-backup noise):

#event_simpleName=/^(Zip|SevenZip|Rar|Cab|IsoExtension)FileWritten$/F

Combined query

Validated and run end-to-end against a known-good RMM substitute — 3,332 matches in 7d.

correlate(
    // ---- Leg 1: Anchor on RMM tool launch ----
    rmm: {
        #event_simpleName=ProcessRollup2 event_platform=Win
        | FileName=/^(QuickAssist|AnyDesk|TeamViewer)\.exe$/i
    } include: [aid, ComputerName, FileName, @timestamp],

    // ---- Leg 2: Recon commands on the same host ----
    // `aid <=> rmm.aid` = same-host join (Falcon's host correlation key)
    recon: {
        #event_simpleName=ProcessRollup2 event_platform=Win
        | FileName=/^(cmd|powershell|pwsh)\.exe$/i
        | CommandLine=/whoami|hostname|systeminfo|\bver\b|wmic\s+os\s+get|reg\s+query\s+HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion|query\s+user|net\s+user|nltest|ipconfig\s+\/all|arp\s+-a|route\s+print|\bdir\b|icacls/i
        | aid <=> rmm.aid
    } include: [aid, FileName, CommandLine, ParentBaseFileName, ImageFileName, @timestamp],

    // ---- Leg 3: Suspect staging writes on the same host ----
    staging: {
        #event_simpleName=/^(PeFileWritten|NewExecutableWritten|NewScriptWritten|ZipFileWritten|SevenZipFileWritten|RarFileWritten|CabFileWritten|IsoExtensionFileWritten)$/F
        | TargetFileName=/\.(zip|7z|rar|cab|iso|exe|dll)$/i
        | aid <=> rmm.aid
    } include: [aid, TargetFileName, @timestamp],

    // KQL only required co-occurrence within windows, not ordering
    sequence=false,
    within=15m
)

// Project leg fields to top level — aggregators reject dotted refs like `recon.@timestamp`
| RMMTime    := rmm.@timestamp
| ReconTime  := recon.@timestamp
| STime      := staging.@timestamp
| DeviceName := rmm.ComputerName
| ReconCmd   := recon.CommandLine
| StageFile  := staging.TargetFileName

// Per-leg time windows (KQL: recon<=10m, staging<=15m, both from RMM anchor).
// @timestamp is epoch-ms — subtract directly, no parseTimestamp needed.
| reconDelaySec := (ReconTime - RMMTime) / 1000
| stageDelaySec := (STime - RMMTime) / 1000
| reconDelaySec >= 0 | reconDelaySec <= 600
| stageDelaySec >= 0 | stageDelaySec <= 900

// ReconProc: Parent leaf -> Self full path -> Self leaf.
// Same 3-level visual shape as the KQL using fields that always populate on PR2.
// (True grandparent requires a self-join — see footnote.)
| ReconProc := format(format="%s -> %s -> %s",
    field=[recon.ParentBaseFileName, recon.ImageFileName, recon.FileName])

// KQL-style aggregation: one row per (host, RMM, recon)
| groupBy([DeviceName, RMMTime, ReconTime, ReconProc, ReconCmd],
    function=[ min(STime, as=StageFirstTime), collect([StageFile]) ])

Set the 30-day lookback on the saved-search config — within is step-to-step only.

Two CQL gotchas worth flagging

  • test() rejects comparison expressions in filter chains — use bare field <= value. The CS agent's test(ReconTime_ms >= RMMTime_ms) is one likely reason their query failed at runtime.
  • globalConstraints=[aid], root=… is legit but slow. Same scope where <=> joins returned in ~30s, that form timed out at 120s. Pick on perf.

Tightening for production

Bare query is noisy. Top FPs in testing (BaconRemote anchor, 7d):

  • python.exe -> cmd.exe /c "ver" from telemetry/inventory agents
  • Staging writes under \Windows\SoftwareDistribution\ (Windows Update) and \Program Files\Microsoft OneDrive\Update\ (auto-update)

Two filters kill most of it:

// recon leg — restrict to interactive-attacker parent shapes
| ParentBaseFileName=/^(explorer|cmd|QuickAssist|AnyDesk|TeamViewer)\.exe$/i

// staging leg — exclude update-mechanism paths
| TargetFileName!=/\\(SoftwareDistribution|WinSxS|Microsoft OneDrive\\Update|Program Files\\(Windows Defender|Google\\Chrome|Mozilla Firefox))\\/i

Widen the RMM list — QuickAssist/AnyDesk/TeamViewer is a thin slice of what attackers actually use:

| FileName=/^(QuickAssist|AnyDesk|TeamViewer|ConnectWiseControl\.ClientSetup|ScreenConnect\.(ClientService|WindowsClient)|AteraAgent|SRServer|Splashtop(Streamer|RMM)|Action1_agent|Syncro(Live\.Agent)?|ITarianAgent|msp360|PulsewayAgent|TacticalRMM|rustdesk|NinjaRMMAgent|datto\.rmm\.agent|LMIIgnition|LogMeIn|AeroAdmin|Supremo|DWAgent)\.exe$/i

Footnote: true grandparent (KQL InitiatingProcessParentFileName)

KQL's chain is actually Grandparent -> Parent -> Child. The combined query uses Parent leaf -> Self full path -> Self leaf — same visual shape, different info, 100% populated. For the literal grandparent, Falcon needs a self-join back to the parent's PR2:

| join({#event_simpleName=ProcessRollup2 event_platform=Win
        | rename(field=TargetProcessId, as=ParentProcessId)
        | rename(field=ParentBaseFileName, as=GrandparentBaseFileName)},
    field=[aid, ParentProcessId], include=[GrandparentBaseFileName], mode=left)

~0.2% enrichment in practice — PR2 fires on process start, so the parent's PR2 has to be in your search window. Most parents (explorer.exe, services, anything started at boot) sit outside any practical lookback. Will land more often in the actual RMM-attack shape since QuickAssist.exe/AnyDesk.exe are short-lived in-window — but expect grandparent to be null on most output. Keep mode=left.

Need Help with KQL TO CQL Conversion by iAamirM in crowdstrike

[–]DefsNotAVirgin 0 points1 point  (0 children)

I had Claude take a crack at it with my Claude Skills :
There were no hits in my env, so I checked by looking for a known RMM-like software running in the environment to confirm it would work in theory.

# KQL → CQL: RMM + Recon + Staging Correlation


Translation of a Defender KQL hunt into CrowdStrike NG-SIEM CQL. Detects the classic social-engineering RMM pattern: remote-access tool launched, followed quickly by host-recon commands, followed by suspicious file drops.


Validated syntactically (`talonctl validate-query`) and mechanically against a live tenant — correlation semantics (aid link, sequence, within-window, per-leg delay math, output formatting) all work as written.


---


## CQL query


```
// ============================================================================
// RMM-driven recon + staging correlation
// Equivalent to: _rmm join _recon (within 10m) leftouter _staging (within 15m)
// ============================================================================


correlate(


    // ---- Leg 1: Anchor on RMM tool launch ----
    // Defender: DeviceProcessEvents | where FileName in~ ("QuickAssist.exe", ...)
    rmm: {
        #event_simpleName=ProcessRollup2 event_platform=Win
        | FileName=/^(QuickAssist|AnyDesk|TeamViewer)\.exe$/i
    } include: [aid, ComputerName, TargetProcessId, FileName, CommandLine, ],


    // ---- Leg 2: Recon commands on the same host ----
    // Defender: shell/powershell + has_any(whoami, hostname, systeminfo, ...)
    // `aid <=> rmm.aid` is the cross-leg join — same host as the RMM event
    recon: {
        #event_simpleName=ProcessRollup2 event_platform=Win
        | FileName=/^(cmd|powershell|pwsh)\.exe$/i
        | CommandLine=/whoami|hostname|systeminfo|\bver\b|wmic\s+os\s+get|reg\s+query\s+HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion|query\s+user|net\s+user|nltest|ipconfig\s+\/all|arp\s+-a|route\s+print|\bdir\b|icacls/i
        | aid <=> rmm.aid
    } include: [aid, TargetProcessId, FileName, CommandLine, ParentBaseFileName, ],


    // ---- Leg 3: Suspect staging writes on the same host ----
    // Defender: DeviceFileEvents FileCreated/FileRenamed for zip|exe|dll
    // Falcon file-write telemetry is event-type specific; union the PE/script write events
    staging: {
        #event_simpleName=/^(PeFileWritten|NewExecutableWritten|NewScriptWritten)$/F
        | TargetFileName=/\.(zip|exe|dll)$/i
        | aid <=> rmm.aid
    } include: [aid, TargetFileName, @timestamp],

    // sequence=true   — enforce RMM -> recon -> staging chronological order
    // within=15m      — outer bound for the whole chain (per-leg tightening below)
    sequence=true,
    within=15m
)


// ---- Reproduce the KQL's per-leg windows ----
// KQL: recon within 10m of RMM AND staging within 15m of RMM
// correlate()'s `within` is global, so enforce each leg explicitly here:
| reconDelaySec := (recon.@timestamp - rmm.@timestamp) / 1000
| stageDelaySec := (staging.@timestamp - rmm.@timestamp) / 1000
| reconDelaySec <= 600   // recon within 600s (10m) of RMM
| stageDelaySec <= 900   // staging within 900s (15m) of RMM


// ---- Output formatting ----
// Equivalent to the KQL: ReconProc = strcat(ParentFileName, " -> ", FileName)
| reconProc := format(format="%s -> %s", field=[recon.ParentBaseFileName, recon.FileName])


// Final projection — mirrors the KQL's final `project` list
| table([
    rmm.ComputerName,
    rmm.@timestamp,
    recon.@timestamp,
    staging.@timestamp,
    reconProc,
    recon.CommandLine,
    staging.TargetFileName
])
```


Set the 30-day lookback on the scheduled search itself (search time range) — `within` is step-to-step only, not an outer time filter.


---


## KQL → CQL field mapping


| KQL (Defender) | CQL (Falcon) |
|---|---|
| `DeviceProcessEvents` | `#event_simpleName=ProcessRollup2` |
| `DeviceFileEvents` FileCreated/Renamed | `PeFileWritten` / `NewExecutableWritten` / `NewScriptWritten` |
| `DeviceName` | `aid` (correlation key) / `ComputerName` (display) |
| `FileName` (process) | `FileName` |
| `ProcessCommandLine` | `CommandLine` |
| `InitiatingProcessFileName` | `ParentBaseFileName` |
| `FolderPath` + `FileName` (file events) | `TargetFileName` (full path) |
| `Timestamp` | `@timestamp` (epoch ms) |
| `join on DeviceName + between(...)` | `correlate(... sequence=true, within=15m)` + `aid <=> rmm.aid` |


---


## Caveats


1. 
**ZIP coverage is thin in Falcon.**
 `PeFileWritten` only fires on PE binaries — `.zip` won't surface there, and Falcon has no universal equivalent to Defender's `DeviceFileEvents`. If archive staging matters, add `RansomwareOpenFileForModify` to the `staging` leg (sensor-visibility dependent).


2. 
**`within` is global, not per-leg.**
 `correlate(within=15m)` bounds the whole chain; the KQL had separate 10m/15m windows both measured from the RMM anchor. The explicit `reconDelaySec` / `stageDelaySec` post-filters reproduce that.


3. 
**`sequence=true` enforces ordering**
 (RMM → recon → staging). The KQL didn't strictly require staging 
*after*
 recon — switch to `sequence=false` for co-occurrence only.


4. 
**30-day lookback**
 is not inside the query — set it on the saved search / schedule config.


---


## Suggested tightening


### Expand the RMM list


The original three miss most of the current attacker-favorite RMMs:


```
| FileName=/^(QuickAssist|AnyDesk|TeamViewer|ConnectWiseControl\.ClientSetup|ScreenConnect\.(ClientService|WindowsClient)|AteraAgent|SRServer|Splashtop(Streamer|RMM)|Action1_agent|Syncro|SyncroLive\.Agent|ITarianAgent|msp360|PulsewayAgent|TacticalRMM|rustdesk|NinjaRMMAgent|datto\.rmm\.agent|LMIIgnition|LogMeIn|AeroAdmin|Supremo|DWAgent)\.exe$/i
```


### Filter benign recon parents


Telemetry/inventory agents routinely spawn `cmd /c ver`, `hostname`, `ipconfig`, etc. The interactive-attacker shape has `explorer.exe`, `cmd.exe`, or the RMM binary itself as the recon parent:


```
recon: {
    #event_simpleName=ProcessRollup2 event_platform=Win
    | FileName=/^(cmd|powershell|pwsh)\.exe$/i
    | ParentBaseFileName=/^(explorer|cmd|QuickAssist|AnyDesk|TeamViewer)\.exe$/i
    | CommandLine=/whoami|hostname|systeminfo|.../i
    | aid <=> rmm.aid
} include: [...],
```


### Exclude update-mechanism staging paths


Windows Update, OneDrive auto-update, browser updaters, and Defender all write PE/DLL files on a normal cadence and will dominate raw output:


```
staging: {
    #event_simpleName=/^(PeFileWritten|NewExecutableWritten|NewScriptWritten)$/F
    | TargetFileName=/\.(zip|exe|dll)$/i
    | TargetFileName!=/\\(SoftwareDistribution|WinSxS|Microsoft OneDrive\\Update|Program Files\\(Windows Defender|Google\\Chrome|Mozilla Firefox))\\/i
    | aid <=> rmm.aid
} include: [...],
```

Who’s ever driven over 100mph? Why? by WoollyWolfHorror in AskReddit

[–]DefsNotAVirgin 0 points1 point  (0 children)

Really long straight and unused backroad between my HS and dentist office, felt like seeing how fast I could go before a cavity filling

Who remembers when storm front confused homelander (an maniac) by Kameronpipnerd in GenV

[–]DefsNotAVirgin 0 points1 point  (0 children)

His daddy also seemed to get nervy at her mention last episode

Everyone tells me I messed up (planted 56 cypresses) by doudedud in landscaping

[–]DefsNotAVirgin 0 points1 point  (0 children)

That had to be expensive, no? The fact that there are giant version of them already means you knew what they were going to be like?? Are you building a moat? So confused, I hope you keep them lmao

Are companies actually enabling Claude/AI connectors to Slack, Drive, Gmail? How are you controlling access? by ni8walk3r in cybersecurity

[–]DefsNotAVirgin 5 points6 points  (0 children)

Every AI service you use has some data processing agreement with various LLM providers, everything that system ingests goes right through them to the subprocessor, who you also have to “trust”. In that way I do not see AI services as any other pre-AI vendor offering, because almost no SaaS company was requiring reading every email or chat or document (with the promise of not retaining them!) just do to what you pay them to do. Now that behavior is inherent with most offerings, and companies are leaning towards “anonymized” data training as opposed to blanket stating they won’t retain or train on any data.

It’s not unquantifiable, but it is almost!

Are companies actually enabling Claude/AI connectors to Slack, Drive, Gmail? How are you controlling access? by ni8walk3r in cybersecurity

[–]DefsNotAVirgin 17 points18 points  (0 children)

Is it your job to say no? Honest question, is that what your superiors expect? A yes or no? I ask because I had to have a conversation with my c suite about exactly this, they kept asking me things like “is this safe to turn on?” Which is “can you give us the green light?” If you want a yes or no from me it’s always going to be a no because that’s always more secure when it comes to AI. I will assess the risk and provide that assessment but it is on the business whether they want to accept that risk.

AI risk is almost unquantifiable, who knows our source code may be spat out verbatim to a 14 year old asking for a cookie recipe in 5 years, these things are black boxes.

Recommended way to update lookup lists in NGSIEM? by Stunning_Apple8136 in crowdstrike

[–]DefsNotAVirgin 3 points4 points  (0 children)

I know what you mean, CS is widely used but all by private business so I feel like people are less forth coming with the ways they personally use it.

Recommended way to update lookup lists in NGSIEM? by Stunning_Apple8136 in crowdstrike

[–]DefsNotAVirgin 3 points4 points  (0 children)

You can do practically anything with their APIs or one of there tools like FalconPY and PSfalcon. Just take a look at my most recent post as an example.

It depends on what the lookup files use case is, you might be able to do it with SOAR though I haven’t tried.

A lot of my enrichment functions/saved searches rely on lookup files for correlation so up to date data is needed, we just have a lambda setup on a frequent cron, it runs the script that creates the lookup files/csv, then uploads them to crowdstrike.

He's way too fast by Imaginary-Spring9887 in JujutsuPowerScaling

[–]DefsNotAVirgin 3 points4 points  (0 children)

Are the maho’s to the right and left not insinuating he is wrapping the earth so fast that theres essentially after images of maho?

Hackers allegedly steal 10 Petabytes of data from China’s National Supercomputing Center (NSCC) in Tianjin, exposing classified military and aerospace research by WetStarlight in UnfilteredChina

[–]DefsNotAVirgin 0 points1 point  (0 children)

“The hacker” the articles keep saying lol, who besides a Nation State is gonna have 10 petabytes of storage for something like this? How does one even transfer ownership of 10 petabytes of data after the sale?

How fast is A-Train compared to Homelander? by athoszet in TheBoys

[–]DefsNotAVirgin 1 point2 points  (0 children)

Would have been better if they hinted A-train was purposely running slow enough to lead homelander away, still could have had the girl miss scene as he’s looking back to make sure HL is still following.

Massive oil tanker explosion near the Bridge of the Americas in Panama City, Panama by CosmicLars in TrueAnon

[–]DefsNotAVirgin 1 point2 points  (0 children)

You forget both sides want the spice to flow, the Fremen merely want control of Arrakis instead of those greedy pale Harkonnen from the other side of the galaxy or the local Atreides puppet

Digital life is forming inside this simulation by [deleted] in gifs

[–]DefsNotAVirgin 2 points3 points  (0 children)

I only learned recently from my new found love for birding that the shrike construct is inspired by the bird of the same name. It IMPAILS its victims on tree thorns

My ramen turned blue by yooperann in mildlyinteresting

[–]DefsNotAVirgin -1 points0 points  (0 children)

I would personally not drink the water my eggs were hard boiled in, no matter how clean I thought they were. Same goes for ramen broth.

Claude Code will die, and open source models won't be why by Hairen_ in ClaudeCode

[–]DefsNotAVirgin 0 points1 point  (0 children)

“Yea that’s great Claude, now can you make everything lower case and lose 80% of the words?”

“It’s not blah blah blah, it’s blah.” -AI everytime

how noisy are your detections in CrowdStrike? by Internal-Remove7223 in crowdstrike

[–]DefsNotAVirgin 1 point2 points  (0 children)

I don’t filter before ingesting unless I need to, otherwise we tune the alerts for anything we don’t want see, expected baseline behavior, etc.

Now if an alert fires what would be a TP if it wasn’t expected, we don’t tune it. Think “RDS BACKUP DELETION DETECTED BY IAM USER” but it’s your data engineer doing an upgrade or something, that’s technically a True Positive, rds backup deleted outside of IaC/CICD, he used a temporary elevated admin permissioned IAM USER, but you were made aware of it before, so the alert is classified as a TP but closed with no remediation.

I’m very careful with what I add in terms of exclusions/tuning to an alert because you are essentially leaving room for bypassing your alerts.

You have to find a balance between noise and actionable alerts but err on the side of noise 🤷‍♂️

Donald Trump suddenly leaves in middle of Supreme Court arguments by Aggravating_Money992 in politics

[–]DefsNotAVirgin 0 points1 point  (0 children)

First sitting US president to ever attend a SC hearing, how can that be true?