Ako funguje domáci internet a štatistika servera názvov domén?

Domáci router (v tomto prípade FritzBox) dokáže zaznamenať veľa: koľko premávky kedy ide, kto je pripojený akou rýchlosťou atď. Server názvov domén (DNS) v lokálnej sieti mi pomohol zistiť, čo sa skrýva za neznámymi príjemcami.

Celkovo má DNS pozitívny vplyv na domácu sieť: pridala rýchlosť, stabilitu a spravovateľnosť.

Nižšie je uvedený diagram, ktorý vyvolal otázky a potrebu pochopiť, čo sa stalo. Výsledky už odfiltrujú známe a fungujúce požiadavky na servery doménových mien.

Prečo sa každý deň zisťuje 60 neznámych domén, kým všetci ešte spia?

Každý deň je počas aktívnych hodín dopytovaných 440 neznámych domén. Kto sú a čo robia?

Priemerný počet žiadostí za deň podľa hodiny

Ako funguje domáci internet a štatistika servera názvov domén?

SQL dotaz na zostavu

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Line: DNS Requests per Day for Hours',
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch')) AS 'Day',
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS 'Requests per Day'
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY /* hour aggregate */
  strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))
ORDER BY strftime('%H:00', datetime(EVENT_DT, 'unixepoch'))

V noci je bezdrôtový prístup zakázaný a očakáva sa aktivita zariadenia, t.j. neexistuje žiadny prieskum pre neznáme domény. To znamená, že najväčšia aktivita pochádza zo zariadení s operačnými systémami ako Android, iOS a Blackberry OS.

Uveďme si domény, ktoré sú intenzívne dopytované. Intenzita bude určená parametrami, ako je počet žiadostí za deň, počet dní aktivity a v koľkých hodinách dňa boli zaznamenané.

Na zozname boli všetci očakávaní podozriví.

Intenzívne dopytované domény

Ako funguje domáci internet a štatistika servera názvov domén?

SQL dotaz na zostavu

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT 
  1 as 'Table: Havy DNS Requests',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests per Day',
  DH AS 'Hours per Day',
  DAYS AS 'Active Days'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  COUNT(DISTINCT REQUEST_NK) AS SUBD,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ,
  ROUND(1.0*COUNT(DISTINCT strftime('%d.%m %H', datetime(EVENT_DT, 'unixepoch')))/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS DH
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
GROUP BY REQUEST_NK )
WHERE DAYS > 9 -- long period
ORDER BY 4 DESC, 5 DESC
LIMIT 20

Blokujeme isс.blackberry.com a iceberg.blackberry.com, čo výrobca zdôvodní z bezpečnostných dôvodov. Výsledok: pri pokuse o pripojenie k sieti WLAN sa zobrazí prihlasovacia stránka a už sa nikdy nikam nepripojí. Poďme to odblokovať.

detectportal.firefox.com je rovnaký mechanizmus, implementovaný iba v prehliadači Firefox. Ak sa potrebujete prihlásiť do siete WLAN, najprv sa zobrazí prihlasovacia stránka. Nie je úplne jasné, prečo by mala byť adresa tak často pingovaná, ale mechanizmus je jasne opísaný výrobcom.

skype. Akcie tohto programu sú podobné červom: skrýva sa a nenechá sa jednoducho zabiť na paneli úloh, generuje veľa prevádzky v sieti, každých 10 minút pinguje 4 domény. Pri videohovore neustále vypadáva internetové pripojenie, keď už nemôže byť lepšie. Zatiaľ je to potrebné, tak to zostáva.

upload.fp.measure.office.com – odkazuje na Office 365, nenašiel som slušný popis.
browser.pipe.aria.microsoft.com - nenašiel som slušný popis.
Blokujeme obe.

connect.facebook.net – chatovacia aplikácia na Facebooku. Zvyšky.

mediator.mail.ru Analýza všetkých požiadaviek na doménu mail.ru ukázala prítomnosť veľkého množstva reklamných zdrojov a zberačov štatistík, čo spôsobuje nedôveru. Doména mail.ru sa celá odošle na čiernu listinu.

google-analytics.com – neovplyvňuje funkčnosť zariadení, preto ho blokujeme.
doubleclick.net – počíta kliknutia na reklamu. Blokujeme.

Veľa žiadostí smeruje na googleapis.com. Blokovanie viedlo k radostnému vypínaniu krátkych správ na tablete, ktoré sa mi zdajú hlúpe. Playstore ale prestal fungovať, tak ho poďme odblokovať.

cloudflare.com - píšu, že milujú open source a vo všeobecnosti o sebe veľa píšu. Nie je celkom jasná intenzita prieskumu domény, ktorá je často oveľa vyššia ako skutočná aktivita na internete. Zatiaľ to nechajme.

Intenzita požiadaviek teda často súvisí s požadovanou funkcionalitou zariadení. Objavili sa ale aj tí, ktorí to s aktivitou prehnali.

Úplne prvý

Keď je bezdrôtový internet zapnutý, všetci ešte spia a je možné vidieť, ktoré požiadavky sa posielajú do siete ako prvé. Takže o 6:50 sa zapne internet a v prvých desiatich minútach sa denne uskutoční dopyt 60 domén:

Ako funguje domáci internet a štatistika servera názvov domén?

SQL dotaz na zostavu

WITH CLS AS ( /* prepare unique requests */
SELECT
DISTINCT DATE_NK,
STRFTIME( '%s', SUBSTR(DATE_NK,8,4) || '-' ||
	CASE SUBSTR(DATE_NK,4,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(DATE_NK,1,2) || ' ' || SUBSTR(TIME_NK,1,8) ) AS EVENT_DT,
REQUEST_NK, DOMAIN
FROM STG_BIND9_LOG )
SELECT
  1 as 'Table: First DNS Requests at 06:00',
  REQUEST_NK AS 'Request',
  DOMAIN AS 'Domain',
  REQ AS 'Requests',
  DAYS AS 'Active Days',
  strftime('%H:%M', datetime(MIN_DT, 'unixepoch')) AS 'First Ping',
  strftime('%H:%M', datetime(MAX_DT, 'unixepoch')) AS 'Last Ping'
FROM (
SELECT
  REQUEST_NK, MAX(DOMAIN) AS DOMAIN,
  MIN(EVENT_DT) AS MIN_DT,
  MAX(EVENT_DT) AS MAX_DT,
  COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))) AS DAYS,
  ROUND(1.0*SUM(1)/COUNT(DISTINCT strftime('%d.%m', datetime(EVENT_DT, 'unixepoch'))), 1) AS REQ
FROM CLS
WHERE DOMAIN NOT IN ('in-addr.arpa', 'IN-ADDR.ARPA', 'local', 'dyndns', 'nas', 'ntp.org')
  AND datetime(EVENT_DT, 'unixepoch') > date('now', '-20 days')
  AND strftime('%H', datetime(EVENT_DT, 'unixepoch')) = strftime('%H', '2019-08-01 06:50:00')
GROUP BY REQUEST_NK
 )
WHERE DAYS > 3 -- at least 4 days activity
ORDER BY 5 DESC, 4 DESC

Firefox kontroluje pripojenie WLAN na prítomnosť prihlasovacej stránky.
Citrix testuje svoj server, aj keď aplikácia nie je aktívne spustená.
Symantec overuje certifikáty.
Mozilla kontroluje aktualizácie, aj keď som v nastaveniach požiadal, aby som to nerobil.

mmo.de je herná služba. S najväčšou pravdepodobnosťou je žiadosť iniciovaná facebookovým chatom. Blokujeme.

Apple aktivuje všetky svoje služby. api-glb-fra.smoot.apple.com – súdiac podľa popisu, každé kliknutie na tlačidlo sa posiela sem na účely optimalizácie pre vyhľadávače. Veľmi podozrivé, ale súvisiace s funkčnosťou. Necháme to.

Nasleduje dlhý zoznam požiadaviek na microsoft.com. Počnúc treťou úrovňou blokujeme všetky domény.

Počet úplne prvých subdomén
Ako funguje domáci internet a štatistika servera názvov domén?

Takže prvých 10 minút po zapnutí bezdrôtového internetu.
iOS volí najviac subdomén – 32. Nasleduje Android – 24, potom Windows – 15 a ako posledné Blackberry – 9.
Samotná facebook aplikácia zisťuje 10 domén, skype 9 domén.

Zdroj informácií

Zdrojom pre analýzu bol súbor protokolu lokálneho servera bind9, ktorý obsahuje nasledujúci formát:

01-Aug-2019 20:03:30.996 client 192.168.0.2#40693 (api.aps.skype.com): query: api.aps.skype.com IN A + (192.168.0.102)

Súbor bol importovaný do databázy sqlite a analyzovaný pomocou SQL dotazov.
Server funguje ako vyrovnávacia pamäť, požiadavky prichádzajú zo smerovača, takže vždy existuje jeden klient žiadosti. Postačuje zjednodušená štruktúra tabuľky, t.j. Prehľad vyžaduje čas požiadavky, samotnú požiadavku a doménu druhej úrovne na zoskupenie.

DDL tabuľky

CREATE TABLE STG_BIND9_LOG (
  LINE_NK       INTEGER NOT NULL DEFAULT 1,
  DATE_NK       TEXT NOT NULL DEFAULT 'n.a.',
  TIME_NK       TEXT NOT NULL DEFAULT 'n.a.',
  CLI           TEXT, -- client
  IP            TEXT,
  REQUEST_NK    TEXT NOT NULL DEFAULT 'n.a.', -- requested domain
  DOMAIN        TEXT NOT NULL DEFAULT 'n.a.', -- domain second level
  QUERY         TEXT,
  UNIQUE (LINE_NK, DATE_NK, TIME_NK, REQUEST_NK)
);

Výkon

Výsledkom analýzy protokolu servera doménových mien bolo teda cenzurovaných viac ako 50 záznamov a umiestnených na zoznam blokovaných záznamov.

Nevyhnutnosť niektorých dopytov je dobre popísaná výrobcami softvéru a vzbudzuje dôveru. Veľká časť aktivít je však nepodložená a pochybná.

Zdroj: hab.com

Pridať komentár