Disassembler

Artificial intelligence is no match for natural stupidity.
07červenec2017

Malá encyklopedie portů


Před nějakou dobou jsem kývnul na správcování sítě v jednom hotelu nedaleko Brna. Předchozí správce se o síť údajně nedokázal uspokojivě postarat. Jelikož celý hotel bere konektivitu ze standardní komerční přípojky velkého provozovatele telekomunikačních služeb, tu a tam se občas stalo, že vinou nějakého veselého zavirovaného zařízení na síti byla služba omezena nebo úplně pozastavena. Majiteli po nějakém čase došla trpělivost a mým novým úkolem tedy bylo dát to tam trochu do kupy a viníka vyhledat a zničit. Říkal jsem si, že nejprve provoz trochu zafiltruju a když to nepomůže, vytáhnu těžší kalibr v podobě inspekce paketů. K tomu jsem naštěstí nedošel, takže následující článek bude zejména souhrnem všelijakých služeb a jejich portů, které na veřejných sítích můžete potkat.

Výpadovka na internet


Předchozí správce byl naštěstí natolik technicky zručný, aby jej napadlo jako ústřední zařízení posadit MikroTik CCR1016-12G. To je docela slušný drobeček, vhodný pro velký provoz, který se nezadýchá ani při nějakém filtrování. Bohužel použití RouterOSu a jeho skriptovacího jazyka, o kterém se ve slušné společnosti nemluví, je stále šíleně limitující faktor. Předem se přiznám, že při filtrování IP nachytaných v různých blacklistech třetích stran, jsem si pomohl shell skriptem běžícím na stroji poháněným linuxem. A když už jsem začal psát o filtrování IP, tak předvedu, jakým způsobem jsem to řešil.

Nejprve je potřeba zmínit, že nejrůznějších IP a DNS blacklistů se po internetu povaluje spousta, takže je jen na vás, které se vám budou líbit a které se rozhodnete použít. Já jsem se rozhodl pro Ransomware Tracker, ZeuS Tracker, Malc0de a Malware Domain List. Od nich jsem si stáhl blacklisty, přidal nějaké svoje adresy (různé honeypoty a watering hole) a naopak některé jiné whitelistoval, protože u sdílených hostingů a content delivery sítí je pro jednoho distributora malware až příliš snadné stáhnout s sebou stovku legitimních webů jen proto, že sdílí IP. DNSBL by přibyl v dalším kroku, ale k tomu naštěstí nedošlo. No a na závěr jsem tyto blacklisty propasíroval přes grep, sort a sed a vypadl mi krásný RSC skript, který na MikroTiku můžu rovnou importovat.

#!/bin/bash

RSCFILE=/var/www/html/malware.rsc
TMPDIR=$(mktemp -d)

wget -q https://ransomwaretracker.abuse.ch/downloads/RW_IPBL.txt -O ${TMPDIR}/rwt.txt
wget -q https://zeustracker.abuse.ch/blocklist.php?download=badips -O ${TMPDIR}/zeus.txt
wget -q https://malc0de.com/bl/IP_Blacklist.txt -O ${TMPDIR}/malcode.txt
wget -q https://www.malwaredomainlist.com/hostslist/ip.txt -O ${TMPDIR}/mdl.txt

cat <<EOF >${TMPDIR}/custom.txt
192.168.1.1
EOF

cat <<EOF >${TMPDIR}/whitelist.txt
192.168.1.1
EOF

echo -e "/ip firewall address-list\nremove [find list=Malware]" > ${RSCFILE}
cat ${TMPDIR}/*.txt | grep '^[[:digit:]]' | grep -v -f ${TMPDIR}/whitelist.txt | sort -u | sed 's/^/add list=Malware address=/' >> ${RSCFILE}

Na straně MikroTiku pak už jen stačí naskriptovat stahování

/tool fetch url=http://linuxovy-server/malware.rsc
import malware.rsc

A celou parádu šoupnout do cronu a scheduleru.

Well-known porty


Článek jsem nazval Malá encyklopedie portů protože právě charakteristika používaných portů, počtu spojení a cílových IP adres na kterých kýžené porty naslouchají, je velmi dobrým vodítkem ke zjištění, co které zařízení provádí, jaké síťové aplikace na něm běží a jestli náhodou zrovna neobsahuje červíka, po kterém jdu. Služby a porty, které jsem potkal, se pokusím sdružit do logických celků. Podotýkám, že se v žádném případě nejedná o kompletní výčet všech 65534 portů, ale jen o ty, které jsem při svém bádání potkal, z nich některé jsem ani neznal. Schválně, kdo z hlavy vysype, jaké porty používá třeba takový Viber nebo MQTT?. Taktéž zdůrazňuji, že se jedná o výchozí a doporučená čísla portů a jejich filtrování není samospásné, protože přesunout službu na jiný port je pro správce dané služby otázkou jednoho řádku v konfiguraci. Třeba ale i jen takový strohý výčet jednou někomu ušetří půlhodinu googlení.

Well-known porty jsou porty s číslem nižším než 1024, na nichž běží dlouhodobě zavedené (čti: „prehistorické“) a dobře známé služby.

Tím končí well-known porty a dál pojedu tematicky.

VPN a proxy služby


Vzdálený přístup


Komunikace a mobilní služby


Drtivá většina instant messaging aplikací mimo výše uvedené rozsahy vyžaduje i přístup na klasické HTTP(S) na portech 80/TCP a 443/TCP. Některé (Facebook Messenger, SnapChat, Telegram atd.) si vystačí pouze s HTTP(S).

Počítačové hry a konzole


Ostatní


Firewall po Disassemblerovsku


Osobně zastávám filozofii „Žij a nech žít“, takže obvykle vůbec neblokuji odchozí provoz a nechávám jej volně plynout, ve víře, že uživatelé vědí, co dělají. To že to často není pravda, ponechme stranou. Mimo výše uvedených portů jsem se ještě pustil do křížku s TOR sítěmi a torrenty, ale jejich problematika je natolik komplexní, že si ji nechám pro samostatný článek. Máte-li zájem o skript pro filtrování provozu na zařízeních MikroTik, který jsem stvořil před bůhvíkolika lety a vylepšil na základě výše uvedené analýzy, utíkejte se podívat ke mně na GitHub. Jsem si celkem jistý, že v průběhu následujících pár let se bude ještě do sytosti měnit. Podotýkám, že se jedná o skripty vhodné pro použití v domácích a malofiremních IPv4 sítích. Ve velkém měřítku nebo v dual-stack sítích řeším spoustu věcí jinak.

Úplně za závěr jen prozradím, že jsem nakonec viníka našel. Byl to nějaký idiot s Windows XP a vypnutými aktualizacemi, kterému tam ve velkém stylu řádil Conficker. Tak jsem mu za vydatného pyskování počítač odviroval a nainstaloval alespoň ty opravdu kritické záplaty. I tak jich bylo blízko ke stovce.