TX-C0RE // PORTGUARD
← Všechny nástroje
TX-C0RE Security Research · Blue team
PORTGUARD

Pozná rozdíl mezi provozem, o který jste si řekli, a provozem, který hledá cestu dovnitř.

Síťový senzor pro jeden stroj. Sleduje provoz na tomhle počítači, každé vzdálené adrese dá skóre 0 až 100, každý přidělený bod vysvětlí — a pravidlo do firewallu si napíše sám.

// ZACHYŤ  >  OHODNOŤ  >  ZABLOKUJ  >  OHLAS
Základní myšlenka

Jedna věta, ze které plyne všechno ostatní

Nevyžádaný příchozí provoz je signál skenu. Vaše vlastní spojení a odpovědi na ně jsou normální.

PortGuard sleduje spojení, která otevřete, a ta už otevřená si při startu načte z operačního systému — vracející se odpovědi tak nikdy neskóruje jako útok. Ze systému si čte i porty, na kterých stroj opravdu naslouchá, takže provoz na službu, kterou jste spustili před pěti minutami, neodepíše jako zatoulanou odpověď.

13
detektorů, každý s vlastním signálem
17 000+
řádků Pythonu
503
automatizovaných testů
44
útočných scénářů v simulátoru
Detekce

Co PortGuard skutečně hledá

Čtyři skupiny signálů: průzkum a útoky zvenčí, podvod na lokálním segmentu a odchozí provoz, který říká, že tenhle stroj už je kompromitovaný. Každý práh níže je ten, se kterým nástroj opravdu běží.

Příchozí: průzkum

Někdo si tenhle stroj mapuje, ještě než na něj zaútočí.

Skenování portů60 b

Mnoho různých portů z jednoho zdroje. Plná síla kolem 50 portů, okamžitý blok už při 20.

Stealth příznaky25 b

Pakety NULL, XMAS a FIN nesou kombinace příznaků, které žádné skutečné spojení nepoužívá. Blokují se na první pohled.

Polootevřená spojení15 b

Spojení, která někdo začal a nikdy nedokončil — podpis SYN skenu.

Pomalý sken70 b

Porty si pamatuje pro každý zdroj 24 hodin, takže i sken rozprostřený přes celý den se nasčítá. Stačí 8 portů.

poráží nmap -T0
Koordinovaný sken65 b

Zdroje seskupuje podle /24 a shodného TTL, takže návnady i distribuovaný sken pozná jako jednu kampaň. Potřebuje 4 zdroje a 12 portů během 120 sekund.

poráží nmap -D
Fragmentované sondy45 b

Rozsekání TCP hlavičky do IP fragmentů schová cílový port. PortGuard ho obnoví z prvního fragmentu — a záplava drobných fragmentů je signál sama o sobě.

poráží nmap -f

Skóruje se i rychlost a entropie portů a IPv4 s IPv6 procházejí naprosto stejnými pravidly. Kampaň s návnadami skóruje záměrně níž než sken z jedné sítě: u nmap -D jsou návnady skutečné adresy nevinných třetích stran, takže se kampaň nahlásí, místo aby se zablokoval každý její člen.

Příchozí: útoky

Mapování skončilo. Teď se někdo zkouší dostat dovnitř.

Brute force60 b

Opakované pokusy proti jednomu autentizačnímu portu — SSH, RDP, SMB, databáze. PortGuard jich zná 26.

Signatury exploitůmax 35 b

Kontrola payloadu na Log4Shell, Shellshock, reverse shelly, Meterpreter a webshelly — jen na nevyžádaném provozu, takže čtení článku o Log4Shellu vám ten web nikdy nezablokuje. Obecné řetězce mají strop a zásah během 5 minut vyprchá.

Threat intelligence95 b

Zdroj porovná s vaším seznamem známých škodlivých adres a CIDR rozsahů, který se načítá za běhu. Stačí to na blok hned u prvního paketu.

Otisk TLSJA3 / JA4

Otisky JA3 a JA4 z TLS ClientHello porovnané s blocklistem. Tenhle detektor funguje i na šifrovaném provozu, protože samotný handshake šifrovaný není.

Lokální síť

Útoky, které se portu ani nedotknou — někdo na vašem segmentu lže o tom, kdo je.

Objevování hostů68 / 60 b

ARP sweep od 8 cílů a sondování přes ICMP nebo ICMPv6. Tohle je první fáze každého skenu, ještě než někdo sáhne na jediný port.

ARP spoofing90 b

Vazbu adresy na MAC se učí z ARP. Poplach spustí, když adresa přeskakuje mezi MAC adresami nebo si ji nárokuje záplava odpovědí, o které nikdo nežádal. U brány je bodů víc.

arpspoof · ettercap · bettercap
Otrava jmen85 b

Stroj, který odpovídá na LLMNR, mDNS nebo NBT-NS pro 5 a více různých jmen, si neřeší vlastní jméno. To někdo sbírá hashe hesel.

Responder
Proč mlčí zbytek časubez šumu

Skutečné zařízení odpovídá jen za sebe a opravdová výměna hardwaru změní MAC jednou a pak je klid. Ani jedno poplach nespustí.

Odchozí: známky kompromitace

Nejtěžší otázka, kterou obránce řeší: nemluví tenhle stroj už teď s někým, s kým by neměl?

C2 kanály92 b

Spojení na porty reverse shellů a beaconing v pravidelných intervalech přes 6 a více spojení. Beacon na cíl, který má DNS jméno a známý proces za sebou, je zlevněný — přesně tak totiž vypadá běžná telemetrie.

DNS tunel80 b

40 a více různých subdomén jedné domény s vysokou entropií nebo hodně dlouhými labely během 5 minut. To není dotaz, to je kanál.

DGA domény60 b

25 a více neúspěšných dotazů na náhodně vypadající jména: malware hledá, která řídicí doména dnes zrovna žije.

Odtékající data45 b

Víc než 50 MB ven a nejméně čtyřikrát méně zpátky. Skóre roste, když cíl nemá DNS jméno ani známý proces za sebou — právě to odděluje exfiltraci od zálohy do cloudu.

Který procesPID + jméno

Spojení páruje s lokálním procesem, který je vlastní, takže poplach pojmenuje program a jeho PID místo pouhé adresy, kterou pak musíte dohledávat.

Reverzní DNS a geokontext

Vzdálenou adresu obohatí o reverzní DNS jméno, vlastníka sítě a zemi, abyste odlišili vlastní CDN od VPS někde, kde jste nikdy nic neměli.

Skórování

0 až 100, a ukáže, jak k tomu došel

Každá vzdálená adresa dostane skóre složené z pojmenovaných signálů, které se sčítají. Běží přitom dvě časová okna naráz — 10 sekund chytá rychlý sken, 5 minut ten trpělivý.

critical90–100
high70–89
medium50–69
low30–49
info0–29

Nikoli černá skříňka. Inspektor vypíše každý signál, který se na skóre podílel, a kolik bodů přidal — poplach je tak argument, který si ověříte, ne číslo, kterému musíte věřit. Model strojového učení se dá přimíchat jako další vážený signál — nikdy nenahrazuje pravidla a nikdy nemá poslední slovo.

Vynucení

Detekce, která končí pravidlem ve firewallu

PortGuard pravidlo napíše; sám firewallem není. Ten rozdíl je podstatný — nemění se nic na tom, jak váš stroj provoz filtruje, jen na tom, co filtruje.

Jak
Windows Firewall přes netsh, nebo nftables na Linuxu. Backend si vybere sám, a když ho nedokáže nastavit, přepne se na pouhou detekci místo aby předstíral, že blokuje.
Kdy
Automaticky od pásma high výš, ve výchozím stavu s hodinovou platností. Stealth skeny a zdroj, který sáhl na 20 různých portů, se blokují okamžitě.
Odchozí
Ve výchozím stavu vypnuto. Po zapnutí jedná jen na potvrzeném C2 — známé škodlivé adrese nebo jednoznačném C2 portu. Nikdy na samotný beacon, protože beaconuje i legitimní software.
Nikdy neblokuje
Výchozí bránu, vaše DNS servery, všechny adresy tohoto stroje, loopback, multicast, broadcast a rezervované rozsahy. Ani ručně — jediné pravidlo, které brání tomu, aby vás obranný nástroj odřízl od sítě.
Přežije restart
Bloky se ukládají na disk a při startu se obnoví. Pravidlo nalezené ve firewallu pro chráněnou adresu se uvolní, ne převezme, takže zapomenuté pravidlo nikdy tiše nepřežije svůj důvod.
Hlášení

Ozve se, i když se nikdo nedívá na obrazovku

PortGuard běží i se zavřeným oknem. Co pořád křičí, to člověk přestane vnímat — proto jsou dvě úrovně důležitější než způsob doručení.

Vyruší vás
Potvrzené C2, ARP spoofing, otrava jmen a DNS tunel odejdou ve chvíli, kdy je vidí, nejvýš 12 za hodinu. Na zdravé síti by tohle mělo být měsíce nula.
Počká na vás
Skeny, bloky a objemové nálezy se sbírají a odejdou jako jedno shrnutí za hodinu, nebo dřív, jakmile se jich nasbírá 40. Sken se hlásí jednou za každé dosažené pásmo, ne jednou za paket.
Opakování
Stejný nález o stejné adrese odejde jednou za 15 minut, ať útok trvá jakkoli dlouho.
Kam
Desktopová notifikace, řádek do rotovaného logu, nebo HTTPS webhook. Obyčejné http projde jen na loopback nebo privátní adresu. E-mail tam záměrně není: webhooku stačí URL, zatímco schránka by znamenala uložené heslo.
Izolace
Poplachy předává frontou samostatnému vláknu. Když webhook zamrzne, odmítne spojení nebo dojde místo na disku, záchyt běží dál a selhání se jen započítá.
Sebekontrola

Pozná, že ohluchl

Klidný dashboard a rozbitý senzor vypadají úplně stejně. To je porucha, které si nikdo nevšimne, protože vypadá jako dobrá zpráva — proto se PortGuard kontroluje sám.

Zčervená, když
Zemře vlákno pro expiraci, minutu nedorazil žádný paket, nebo se většina provozu vyhodnotí jako unknown — což znamená, že adresy vlastního stroje jsou špatně a celé rozlišení příchozí/odchozí přestalo fungovat.
Drží s vámi krok
Které adresy patří tomuhle stroji, si načítá znovu každých 30 sekund, naslouchající porty každých 15 a bránu s DNS servery každých 5 minut. Novou síť, VPN i adaptér virtuálního stroje zachytí za běhu.
Všechna rozhraní
Volba všech rozhraní otevře samostatný záchyt na každém z nich ve vlastním vlákně, protože jeden společný je na Windows nespolehlivý. Selhání jednoho adaptéru už neumlčí ostatní a stavový řádek ukáže, kolik jich opravdu dodává pakety.
Rozhraní

Okno, ne konfigurační soubor

Desktopová aplikace s živými pakety, grafem provozu a inspektorem, ve kterém si na zdroj kliknete. Každý práh v nápovědě se čte z běžící konfigurace, takže se dokumentace nemůže rozejít s tím, co detektor opravdu dělá.

PORTGUARD
DASHBOARDTHREATSBLOCKEDSETTINGSLOGSHELP
LIVE PACKETS
Provoz tak, jak přichází, s příznaky a směrem. Když tu nic neteče, vybrali jste špatný adaptér — a stavový řádek to řekne.
PATTERNS
Původy, porty, protokoly, kampaně a sweepy — tvar toho, co se děje, ne jen poslední paket.
INSPECTOR
Klikněte na zdroj: skóre, každý signál, který ho složil, vlastnící proces, MAC a rozlišené DNS jméno.
BLOCKED
Aktivní bloky se zbývající platností a směrem, dovnitř nebo ven. Odblokování je na jedno kliknutí — hodí se ve chvíli, kdy zablokujete vlastního pentestera.
TRAFFIC
Graf toku, takže sken vidíte jako špičku ještě dřív, než přečtete první řádek logu.
LOGS
Každý poplach s vysvětlením a bodovým příspěvkem každého signálu, uchovaný 30 dní.
[✓] záchyt na 3 adaptérech · 2 aktivní bloky · senzor v pořádku
Poctivé hranice

Co nedělá

Vědět, kde jsou hranice, je stejně cenné jako vědět, co nástroj pokrývá. Nástroj, který slibuje všechno, neříká nic.

Šifrovaný payload
Porovnávání signatur potřebuje čitelný text. Většina provozu je TLS, takže tuhle práci přebírají otisky a chování.
DoH a DoT
DNS přes HTTPS nebo TLS obejde kontrolu DNS úplně. Prohlížeče to zapínají ve výchozím stavu, takže část dotazů tu prostě není vidět.
Není to EDR
Přiřazení procesu koreluje se snímky tabulky spojení, nehákuje jádro, takže velmi krátká spojení mu můžou utéct.
Není to IDS
Nemá jazyk pravidel ani plné dekódování protokolů. Je to senzor pro jeden stroj, ne Suricata.
Jeden stroj
Vidí jen to, co dorazí na rozhraní tohohle počítače. Je to senzor na stroji, ne senzor v síti.

Otestováno end-to-end z Kali VM: ke každému detektoru existuje zdokumentovaný útok, který ho musí spustit, včetně nástroje, přesného příkazu a skóre, kterého má dosáhnout.

Nasazení

Nasaďte PortGuard na stroj, na kterém záleží

Pro demo, pilotní nasazení nebo projití detekce na vaší vlastní síti se ozvěte týmu TX-C0RE Security Research.