r/blueteamsec

GitHub has a serious fake engagement problem and I wanted to see how visible it actually is through the public API, its worse than I thought after I went down that rabbit hole...
▲ 238 r/blueteamsec+16 crossposts

GitHub has a serious fake engagement problem and I wanted to see how visible it actually is through the public API, its worse than I thought after I went down that rabbit hole...

Turns out: very visible. Yesterday's scan found 185 out of 185 engagers on a single repo were bots. Not 90%. Not "mostly suspicious". Every single one. The repo had zero legitimate stars.

What I built

phantomstars is a Python tool that runs daily via GitHub Actions (free, no servers):

  1. Scrapes GitHub Trending and searches for repos created in the last 7 days with sudden star spikes
  2. Pulls star and fork events from the last 24 hours per repo
  3. Bulk-fetches every engager's profile via the GraphQL API (account creation date, follower counts, repo history)
  4. Scores each account on a weighted model: account age (35%), profile completeness (30%), repo patterns (25%), activity history (10%)
  5. Detects coordinated campaigns using timestamp clustering and union-find: groups of 4+ suspicious accounts that engaged within a 3-hour window
  6. Files an issue directly on the targeted repo so the maintainer knows what's happening

Campaign IDs are deterministic SHA-256 fingerprints of the sorted member set, so the same group of bots gets the same ID across runs. You can track a farm across multiple days even as individual accounts get suspended.

What the pattern actually looks like

It's remarkably consistent. A fake engagement campaign in the raw data:

  • 40-200 accounts, all created within the same 1-2 week window
  • Zero original repositories, or only forks they never touched
  • No bio, no location, no followers, no following
  • All of them starring the same repo within a 90-minute window
  • The target repo usually has a name implying it's a tool, hack, executor, or generator

Today's scan: 53 active campaigns across 3,560 accounts profiled. 798 classified as likely_fake. The repos being targeted are mostly low-quality AI tools and "executor" software that needs manufactured credibility fast.

Notifying the affected repo

When a repo hits a 40%+ fake engagement ratio or a campaign is detected, phantomstars opens an issue on that repo with the full suspect table: account logins, creation dates, composite scores, campaign membership. The maintainer sees it in their own issue tracker without having to find this project first.

Worth noting: a lot of these repos have issues disabled, which is a red flag on its own. Those get skipped silently.

Why I built this

Stars are how developers decide what to evaluate, what to depend on, what to recommend. When that signal is bought, it affects real decisions downstream. This started as curiosity about how measurable the problem was. The answer was more measurable than I expected.

It's part of broader research into AI slop distribution at JS Labs: https://labs.jamessawyer.co.uk/ai-slop-intelligence-dashboards/

The fake engagement problem and the AI content quality problem are really the same problem. Fake stars are the distribution layer that gets garbage in front of real users.

All open source. The data is append-only JSONL committed back to the repo after every run, queryable with jq.

Repo: https://github.com/tg12/phantomstars

Findings are probabilistic, false positives exist, the README explains the full scoring model. If your account shows up and you're a real person, there's a false positive process.

Questions welcome on the detection approach, GraphQL batching, or campaign ID stability.

github.com
u/SyntaxOfTheDamned — 13 hours ago
▲ 5 r/blueteamsec+1 crossposts

Zer0Vuln Community Edition – open-source SIEM + SOAR + EDR with autonomous local LLM triage

Built this because I was frustrated with the same gap every small blue team hits: great alerting, zero autonomous response. You get paged at 2am, stare at a dashboard, and still have to manually decide what to do.

Zer0Vuln runs a local Ollama model (llama3.2:3b by default) that classifies every incoming event in real time. When the Defensive worker's confidence hits the threshold, it acts without waiting for a human: BLOCK_IP, ISOLATE_HOST, KILL_PROCESS, QUARANTINE_FILE, DISABLE_USER, CONTAINER_STOP, SUSPEND_PROCESS. All dispatched directly to the agent.

Three AI workers run continuously:

- Automation: real-time triage on every event

- Manual: operator-driven deep scan on demand

- Defensive: autonomous SOAR dispatch on high-confidence threats

Agents (Windows + Linux) cover: SIEM log collection, File Integrity Monitoring, installed package inventory, open port scanning, Docker container monitoring, WebSocket screen streaming.

Server-side OSV vulnerability scanner reads each agent's installed packages and queries OSV (or your on-prem mirror) for CVE matches. Findings are persisted per agent.

Visual SOAR playbook engine with multi-node execution and per-step result tracking.

Air-gap ready: local Fernet keys, no external CDN, optional OSV mirror, zero telemetry. Fully offline capable.

No caps on agents, retention, or features. AGPL-3.0.

https://github.com/0giv/Zer0Vuln-Community-Edition

Would genuinely love feedback from people who have dealt with real SOC workflows, especially around the autonomous action confidence tuning.

u/RevolutionaryPie4948 — 16 hours ago

5 credential access detection rules beyond LSASS — KQL + Sigma, production-ready

Every detection program starts with LSASS dump detection. Most stop there.

The problem: an attacker who hits ASR LSASS protection, PPL, or Credential Guard pivots to techniques that never touch LSASS. Kerberoasting, DCSync, SAM hive extraction, and DPAPI abuse each target a different credential store, generate different telemetry, and need a different rule. If you only detect LSASS access, you detect only the attacker who didn't adapt.

I wrote up the 5 credential access techniques we see most often in real environments, with the actual KQL and Sigma rules for each:

1. LSASS memory access — filtering on GrantedAccess mask (0x1010 vs 0x1000) instead of process name. Process name exclusions break on renamed binaries. The access mask doesn't lie.

2. Kerberoasting — Event ID 4769 with encryption type 0x17 (RC4). Legitimate Kerberos uses AES. A burst of RC4 TGS requests from one source = Kerberoasting. Threshold: >3 unique services in 5 minutes.

3. DCSync — Event ID 4662 with the three replication GUIDs, from a non-DC. This is near-zero false positive if you maintain a DC allowlist. Any non-DC requesting DS-Replication-Get-Changes is a confirmed incident.

4. SAM/NTDS extraction — command-line patterns: reg save targeting SAM/SECURITY/SYSTEM hives, ntdsutil IFM creation, vssadmin create shadow, esentutl copying ntds.dit. DeviceProcessEvents with ProcessCommandLine matching.

5. DPAPI secrets — the one nobody covers. Browser passwords, WiFi creds, RDP saved passwords are all DPAPI-protected and all extractable without touching LSASS. Credential Guard doesn't protect DPAPI. Monitor access to %APPDATA%\Microsoft\Protect\ by non-system processes.

Full writeup with copy-paste KQL, a Sigma rule for Kerberoasting, MDE IdentityQueryEvents alternatives (for environments without DC log forwarding), and false positive analysis for each:

https://training.ridgelinecyber.com/blog/credential-access-detection-beyond-lsass/

Happy to answer questions on any of the rules or tuning approaches.

u/ridgelinecyber — 1 day ago

Built a Linux persistence hunting & artifact collection tool in Bash - persisthunt

I’ve been working on a Bash-based Linux persistence detection and artifact collection script called persisthunt.

The goal is to help defenders and incident responders quickly identify suspicious persistence mechanisms and collect relevant artifacts during investigations without immediately jumping into full disk forensics.

The script currently hunts for a variety of Linux persistence techniques including:

  • suspicious network listeners/reverse shells
  • eBPF based raw network socket persistence (bpfdoor)
  • hidden processes
  • systemd services/timers/generators
  • cron jobs
  • shell profile persistence
  • ld.so.preload
  • SSH authorized_keys abuse
  • world-writable SUID/SGID files
  • references to /tmp, /dev/shm, /dev/tcp, curl, wget, nc, etc. in autorun locations
  • more...

Findings are categorized as:

  • High
  • Low
  • Informational

based on confidence and severity.

The project is designed to be lightweight and easily customizable depending on the environment and threat model.

Would appreciate feedback, ideas for additional persistence mechanisms to cover, and suggestions from others doing Linux IR/threat hunting.

GitHub: https://github.com/raj3shp/persisthunt

▲ 34 r/blueteamsec+15 crossposts

48 saatlik HASBLCTF'26 CTF yarışması

Öncelikle bu konunun bir reklam olmadığını, sadece liseli gençler olarak düzenlediğimiz bu etkinliğin daha fazla kişiye duyurulması amacıyla paylaşıldığını belirtmek isterim.

Kısaca: Biz 4 kişi HASBL CTF adında Jeopardy formatında olacak bir CTF düzenliyoruz, katılım linki en aşağıda mevcuttur.

Peki CTF nedir? CTF yani; Capture The Flag (Bayrağı Yakala), siber güvenlik alanında farklı kategorilerdeki becerilerimizi test etmek ve geliştirmek amacı güden bir yarışma formatıdır. Amacımız kategoriye göre verilen sorudaki açığı bularak cevaba (flag'e) erişmektir:

Kendimizden bahsetmem gerekirse biz sosyal bilimler lisesinde 11. sınıf öğrencisi olan 4 kişiyiz ve birçok CTF'e katıldıktan sonra; "Neden soru yazmayı da denemiyoruz?" dedik ve kendi CTF yarışmamızı yapmak istedik. Elimizden gelenin en iyisini yaparak bir şeyler yaptık işte...

Etkinlik detaylarına geçmek gerekirse:

Kategoriler:​

  • Web: Açtığınız Instance'da zafiyet bulup flag'e ulaşmak.
  • OSINT (Açık Kaynaklı Bilgi/İstihbarat): Soruda verilen foto/video, sosyal medya hesap adı vb. ortamlarda kanıt inceleme ve analiz ederek flag'e ulaşmak.
  • Cryptography (Kriptografi): Şifre kırma diyebiliriz basitçe. Kod ve/veya verinin mantığını çözerek şifrelenmiş flag'i okunabilir hale getirerek flag'e ulaşmak.
  • Reverse/Reverse Engineering (Tersine Mühendislik): Derlenmiş bir yazılımı yada makine kodunun bazı programları kullanarak nasıl çalıştığını çözüp okunabilir hale getirme ve flag'e ulaşmak.
  • Pwn (Zaafiyet/Sömürü): Hedef olarak verilen sistemin güvenlik açıklarını bularak sisteme sızıp yetki yükseltme ve flag'e ulaşmak.
  • Forensic (Adli Bilişim): Dijital kanıtların (log, disk görüntüsü, wireshark vb.) inceleyerek flag'e ulaşmak.

Kategorilerin tanımını yaparken ben bile kötü bir şey yapıyormuş hissiyatına kapıldım ama emin olun öyle bir şey yapmıyoruz kesinlikle 

Tarih:​

  • 29 - 30 - 31 Mayıs tarihlerinde 48 saat sürecek.

Platform:​

  • CTFd altyapısı üzerinden kendi sunucularımızda (Google Cloud) gerçekleşecek.
  • CTF Time üzerinden de yarışma duyurusu yaptık ama kabul bekliyoruz, CTF'lerde önemli olduğu için kabul aldığında eklerim buraya.

Kurallar: Kurallar sitemizde yer almakta ama kısaca önemli birkaç kurala değineyim.​

  • Takımlar en az 1, en fazla 4 kişilik olabilir.
  • Flag paylaşımı yapmak yasak.
  • Yarışma boyunca write-up yayınlamak yasak.
  • Yarışma sürecinde yarışmacıların birbirine saygılı olması ve sportmen olması önem arz etmekte.

Kayıt ve Daha fazla bilgi için:​

  • Kayıt ve daha fazla bilgi için sitemizi bağlantı kımından ziyaret edebilirsiniz.
  • Yarışma sürecince kayıtlar açık olacak ve belirli bir şart olmaksızın isteyen herkes katılabilecek.
  • Ödüller daha belli değil (TBA) maalesef..
  • Lise düzeyinde kısıtlı süre ve bütçede hazırladığımız bu etkinlikte hata olacaktır ama bunları düzeltmeye ve kendimizi geliştirmeye özen gösteriyoruz.
  • Sitede ve yarışma genelinde bir öneriniz, sorunuz olursa; bunları duymakta, cevaplamakta ve geliştirmekten memnuniyet duyarız.

Şimdiden ilgi gösteren herkese ve CuteTopia Sub'ına bu konuyu açamama izin verdiği için teşekkür ederim.

hasblctf.tech
u/Rav3nnd — 2 days ago
▲ 3 r/blueteamsec+3 crossposts

Im working toward a SOC Analyst role and looking for feedback, opportunities, or referrals.

Background:

  • 8+ years in aviation (Flight Operations, real-time decision making under pressure)
  • Transitioned into tech in my mid-30s
  • Experience in SQA & DevOps/Release Engineering

What I hav built recently:

SOC Homelab (2-node setup)

  • Endpoint telemetry: Sysmon
  • Network monitoring: Suricata
  • Centralized logging in Elastic SIEM
  • Built and tested detection rules mapped to MITRE ATT&CK
  • Simulated multi-stage attacks and investigated them end-to-end
  • Documented incident reports from real telemetry

Projects:

  • Built a small investigation tool to convert raw alerts into structured cases (to reduce manual triage effort)

What I’m looking for:

  • Entry-level SOC / Security Analyst role (remote or Onsite)
  • Or feedback on what I’m missing to be job-ready

Github: SOC Homelab

u/Fantastic-Average-25 — 5 days ago
▲ 6 r/blueteamsec+1 crossposts

OtterCookie: the JavaScript RAT that turned developer compromise into live surveillance

OtterCookie is not “BeaverTail but again.”

That is the part I think matters.

BeaverTail mostly grabbed saved stuff from a developer machine.

OtterCookie keeps watching the machine after that: Socket.IO / Engine.IO, live victim rosters, clipboard, keystrokes, screenshots, browser data, wallet artifacts, dev secrets.

Less “dump the box once.” More “sit on the box while the dev keeps working.”

The annoying detection problem:

developer workstations are already garbage fires.

Node tooling, random high ports, local services, package installs, Vercel/npm traffic, Socket.IO noise. A lot of this looks dumb but normal.

So where is the line?

What would make you look at outbound Socket.IO / Engine.IO from a dev workstation and say: yeah, this is not normal Node nonsense anymore?

No creds / victim names / live paths / exploit steps in the write-up.

redasgard.com
u/_redasgard — 5 days ago
▲ 25 r/blueteamsec+1 crossposts

KQLab - open-source query manager for SOC teams

Hey everyone,

I've been working on a side project for a few months and figured it was time to share it and get some outside perspective.
Not sure this belongs here. If it's not the right place, let me know and I'll take it down.

The problem I was trying to solve: my team's KQL queries were scattered everywhere. Shared drives, OneNote, Notions, Teams messages, random text files....
Every time we had an incident, someone would ask "do we have a query for that?" and we'd spend 15 minutes digging.

So I started building a centralized place to store them. It grew from there.

It's called KQLab (self-hosted, Node.js + SQLite, open-source under MIT)

It handles KQL, SPL, and ELK queries. You can tag them with MITRE tactics, set severity and target environment, auto-import from public GitHub repos (Bert-JanP, Azure Sentinel, reprise99), and check if a query will actually work with your specific licenses and connectors.

It's still a work in progress.. There are rough edges and probably things I got wrong. That's why I'm posting here.

Github : https://github.com/vinsk0h/KQLab

If you work in a SOC and can spare a few minutes to take a look, I’d really appreciate your feedback.
What’s useful? What isn’t? What’s missing from your daily workflow that a tool like this should cover?

Thanks to anyone who takes the time.

u/VinSkoh — 7 days ago

SentinelOne. Backup delete attempt at 06:28, Kill process mitigation action at 06:31. Was the deletion blocked or not?

Hi everyone, I'm reviewing a "Critical - Ransomware" alert ("VSS Shadow Copies Deletion Attempt detected") and I have a question about the timestamps and mitigation logic.

Here is the timeline from the report:

  • 06:28:24 - vssadmin.exe executes delete shadows /for=C: /oldest
  • 06:30:28 - diskshadow.exe is executed (presumably a fallback)
  • 06:31:06 - SentinelOne executes "Kill" (11/11 processes) and "Quarantine". Mitigation status is "Success / Mitigated".

The dilemma: There is a 3-minute gap between the first execution and the final Kill action.

Does the SentinelOne agent intercept and block the deletion command at the kernel level in real-time (06:28), or is there a risk the shadow copies were actually purged before the Kill at 06:31?

SentinelOne, in the alert, consistently uses the word "attempted", which implies the deletion failed... but is Sentinel just being optimistic, or can I trust that "attempted" means the backups are 100% safe despite the delayed Kill?

reddit.com
u/allexj — 7 days ago
▲ 14 r/blueteamsec+4 crossposts

WAF Evasion Engine

I know WAFs can get annoying during pen tests and CTFs. So I built a WAF evasion engine. It mutates and persists, allowing you to even use it as a proxy. It's meant to be chained with other tools like Nuclei or SQLmap. I thought it might be useful.

Happy Hacking!

https://github.com/santhsecurity/wafrift

u/MT_Carnage — 7 days ago

I analyzed 196k+ Sysmon events and found APT29 staging malware in Temp. Here is my detection logic.

Most detection rules focus on obvious indicators, such as hashes or C2 domains. Advanced actors like APT29 do not play that game.

NOTE: Keep your feedback focused strictly on the detection rule and the telemetry. I am sharing this research to contribute to the community, not to compete with anyone. If you are just going to derail the thread with off topic arguments, I do not need your feedback.

WHAT I FOUND:

Adversaries are running unsigned executables from C:\Windows\Temp\ and loading Python compiled modules ((dot)pyd files) from AppData\Local\Temp. In isolation this looks like normal software installation. In context it is adversary staging.

THE DETECTION LOGIC:

I built my alerts based on the exact path and signature correlations from my lab notes. The alert triggers on these specific combinations:

  • Temp: An image executing from Temp or Image loading module or DLL from Temp.
  • ProgramData: A process in ProgramData loading image or image loading from ProgramData.
  • Legit + Unsigned: A signed legitimate process loading an unsigned .exe or .pyd module.
  • Temp + Legit: Execution from Temp loading legitimate signed System32 DLLs.

WHY EVENTID 7 MATTERS: Process Creation (EventID 1) tells you WHAT ran. Image Load (EventID 7) tells you WHAT IT IS LOADING.

Example from the telemetry: Image: C:\Windows\Temp\python(dot)exe ImageLoaded: C:\Users\pbeesly\AppData\Local\Temp_MEI29522_ctypes(dot)pyd Signed: false

APT29 staged python.exe and loaded modules BEFORE executing the final payload. Most rules miss this because they only watch process creation.

TOOLS WORTH MONITORING (even if legitimate):

  • PsExec64(dot)exe for remote execution
  • sdelete64(dot)exe for anti forensics
  • PSEXESVC(dot)exe for lateral movement

FALSE POSITIVES: Software installers, portable apps, and Python development environments will trigger this. That is standard tuning for your specific environment.

SIGMA RULE:-

title: Suspicious Executable Activity from Temp Directories
id: 42461076-ab43-408d-bc8d-97016a04e2cf
description: Detects unsigned executables in Temp loading modules or DLLs, common in APT29 and malware staging
status: experimental
date: 2026/05/11
author: Manish Rawat
references:
   - https://attack.mitre.org/techniques/T1574
   - https://github.com/OTRF/Security-Datasets

logsource:
 product: windows
 category: Image loaded
detection:
 selection:
   EventID: 
     - 7
   Image|contains:
     - \\ProgramData\\
     - \\Temp\\
     - \\temp\\
 selection_ImageLoaded_location:
     ImageLoaded|contains:
       - \\Temp\\
       - \\temp\\
       - \\ProgramData\\
 selection_ImageLoaded_exe:
     ImageLoaded|endswith:
       - .exe
       - .pyd
 selection_signaturestatus:
     SignatureStatus: 
        - 'Unsigned'
        - 'Unavailable'
        - 'Invalid'
 selection_Signed:
     Signed: 
       - 'false'
       - '-'
 condition: 
       (selection or selection_ImageLoaded_location) 
       or (selection_ImageLoaded_exe and (selection_ImageLoaded_location or selection )) 
       or (selection_signaturestatus and (selection or selection_ImageLoaded_exe or selection_ImageLoaded_location)) 
       or (selection_Signed and (selection or selection_ImageLoaded_exe or selection_ImageLoaded_location)) 

falsepositives:
 - Software installers using temporary directories
 - Legitimate portable applications
 - Python development environments 
severity: medium
tags:
 - attack.t1059.006
 - attack.t1574

This is the raw lab logic. I am still tuning it for production.

Note: Detecting only double \\Temp\\ logic is making this detection weak (only 24 events triggered), but with individual \\Temp\\ detection, it is getting much more results (300+ events triggered). I know individual \\Temp\\ detection can lead to false positives, but we can narrow it down based on a 90 days or 30 days baseline.

SPL:

(EventID=7 Image IN ("\*\\\\ProgramData\\\\\*", "\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*")) OR ImageLoaded IN ("\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*", "\*\\\\ProgramData\\\\\*") OR (ImageLoaded IN ("\*.exe", "\*.pyd") ImageLoaded IN ("\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*", "\*\\\\ProgramData\\\\\*") OR (EventID=7 Image IN ("\*\\\\ProgramData\\\\\*", "\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*"))) OR (SignatureStatus IN ("Unsigned", "Unavailable", "Invalid") (EventID=7 Image IN ("\*\\\\ProgramData\\\\\*", "\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*")) OR ImageLoaded IN ("\*.exe", "\*.pyd") OR ImageLoaded IN ("\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*", "\*\\\\ProgramData\\\\\*")) OR (Signed IN ("false", "-") (EventID=7 Image IN ("\*\\\\ProgramData\\\\\*", "\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*")) OR ImageLoaded IN ("\*.exe", "\*.pyd") OR ImageLoaded IN ("\*\\\\Temp\\\\\*", "\*\\\\temp\\\\\*", "\*\\\\ProgramData\\\\\*"))  

If you've some suggestion or feedback, please feel free to DM. Detection insights are valuable to me. If you hate this post, then do what you want to do.

reddit.com
u/manishrawat21 — 10 days ago
▲ 21 r/blueteamsec+1 crossposts

126 Chrome extensions, all secretly the same product, taking 148K users' WhatsApp data and ad cookies

A Brazilian company (wascript.com.br) runs one platform that 126 different Chrome extensions all share. They look like separate products, WaSeller, waTidy, FR VENDAS PRO, ENOCRM, Cliente Flow, and dozens more, but it's one codebase, one backend, one set of hidden behaviors.

WaSeller alone has 100K users.

I found this network using my own tool for detecting malicious browser extensions, which flagged the cluster by shared code and infrastructure across all 126 listings.

None of the listings tell you that:

  • When you log into WhatsApp Web, the extension sends your name, email, device ID, and your Facebook/Google/TikTok tracking cookies to a server run by whoever sold you the extension.
  • Every voice message you send goes through their servers before it reaches the person you're sending it to.
  • The extension downloads and runs JavaScript from a different Brazilian company's server. Google never checks this code.
  • The 100K-user version has a live Google Tag Manager tag built in. The operator can push any new code to every user from a dashboard with no Chrome Web Store update.
  • A bridge inside WhatsApp Web gives the extension full access to your contacts, your messages, and the ability to send messages as you.

No privacy policy on any listing. The manifest only asks for tabsstoragealarms.

Full list of all 126 extension IDs (check if you have one), tech details, and IOCs: MalExt Sentry - Malicious Browser Extension Tracker

reddit.com
u/Huge-Skirt-6990 — 8 days ago
▲ 16 r/blueteamsec+1 crossposts

AI+DFIR Challenge: Share Your Disasters and Successes

There is a lot of non-data driven discussions around using AI in investigations. Some people think it will be amazing. Some think its a disaster. A lot of other people are undecided.

The community needs data to help navigate this and I'm hoping you can help.

We launched a challenge a couple of weeks back.

  1. Submit anonymized screen shots of where AI was amazing, where it was a disaster, and where it was "meh...."
  2. Our panel of judges (skeptics and advocates) will review them
  3. The public will vote
  4. Winners get bragging rights
  5. All anonymous submissions are posted on github.

Judges:

  • Heather Barnhart (SANS)
  • Alexis Brignoni (LEAPPS)
  • Eric Capuano (Digital Defense Institute)
  • Brian Carrier (Sleuth Kit Labs – Organizer)
  • Filip Stojkovski (BlinkOps)

Full details are here:

https://www.cybertriage.com/blog/aidfir-2026-challenge-the-good-vs-the-ugly/

Please send in your best submissions!

u/brian_carrier — 9 days ago