Wie funktioniert die Heim-Internet-Live- und Domain-Name-Server-Statistik?

Ein Heimrouter (in diesem Fall FritzBox) kann vieles aufzeichnen: Wie viel Verkehr läuft wann, wer ist mit welcher Geschwindigkeit verbunden usw. Ein Domain Name Server (DNS) im lokalen Netzwerk half mir herauszufinden, was sich hinter den unbekannten Empfängern verbarg.

Insgesamt hat sich DNS positiv auf das Heimnetzwerk ausgewirkt: Es hat zu mehr Geschwindigkeit, Stabilität und Verwaltbarkeit geführt.

Unten ist ein Diagramm, das Fragen aufwirft und die Notwendigkeit aufwirft, zu verstehen, was passiert. Die Ergebnisse filtern bereits bekannte und funktionierende Anfragen an Domain-Nameserver heraus.

Warum werden jeden Tag 60 unbekannte Domains abgefragt, während alle noch schlafen?

Jeden Tag werden während der aktiven Stunden 440 unbekannte Domänen abgefragt. Wer sind sie und was machen sie?

Durchschnittliche Anzahl der Anfragen pro Tag und Stunde

Wie funktioniert die Heim-Internet-Live- und Domain-Name-Server-Statistik?

SQL-Berichtsabfrage

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'))

Nachts ist der WLAN-Zugriff deaktiviert und es wird mit Geräteaktivität gerechnet, d. h. Es erfolgt keine Abfrage für unbekannte Domänen. Das bedeutet, dass die größte Aktivität von Geräten mit Betriebssystemen wie Android, iOS und Blackberry OS ausgeht.

Lassen Sie uns die Domänen auflisten, die intensiv abgefragt werden. Die Intensität wird durch Parameter wie die Anzahl der Anfragen pro Tag, die Anzahl der Aktivitätstage und die Anzahl der Stunden des Tages bestimmt, in denen sie bemerkt wurden.

Auf der Liste standen alle erwarteten Verdächtigen.

Intensiv abgefragte Domains

Wie funktioniert die Heim-Internet-Live- und Domain-Name-Server-Statistik?

SQL-Berichtsabfrage

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

Wir blockieren isс.blackberry.com und iceberg.blackberry.com, was der Hersteller aus Sicherheitsgründen rechtfertigen wird. Ergebnis: Beim Versuch, eine Verbindung zum WLAN herzustellen, wird die Anmeldeseite angezeigt und es wird nie wieder eine Verbindung hergestellt. Lassen Sie es uns entsperren.

discoverportal.firefox.com ist der gleiche Mechanismus, nur im Firefox-Browser implementiert. Wenn Sie sich im WLAN-Netzwerk anmelden müssen, wird zunächst die Anmeldeseite angezeigt. Es ist nicht ganz klar, warum die Adresse so oft gepingt werden sollte, aber der Mechanismus wird vom Hersteller klar beschrieben.

Skype. Die Aktionen dieses Programms ähneln einem Wurm: Es versteckt sich und lässt sich nicht einfach in der Taskleiste töten, erzeugt viel Verkehr im Netzwerk und pingt alle 10 Minuten 4 Domänen an. Bei einem Videoanruf bricht die Internetverbindung immer dann ab, wenn es nicht besser sein kann. Im Moment ist es notwendig, also bleibt es dabei.

upload.fp.measure.office.com – bezieht sich auf Office 365, ich konnte keine vernünftige Beschreibung finden.
browser.pipe.aria.microsoft.com – Ich konnte keine vernünftige Beschreibung finden.
Wir blockieren beide.

connect.facebook.net – Facebook-Chat-Anwendung. Überreste.

mediator.mail.ru Eine Analyse aller Anfragen für die Domain mail.ru ergab das Vorhandensein einer großen Anzahl von Werberessourcen und Statistiksammlern, was Misstrauen hervorruft. Die Domain mail.ru wird vollständig auf die schwarze Liste gesetzt.

google-analytics.com – hat keinen Einfluss auf die Funktionalität von Geräten, daher blockieren wir es.
doubleclick.net – zählt Werbeklicks. Wir blockieren.

Viele Anfragen gehen an googleapis.com. Die Sperrung hat zum freudigen Abschalten von Kurznachrichten auf dem Tablet geführt, die mir dumm vorkommen. Aber der Playstore funktioniert nicht mehr, also lasst uns die Blockierung aufheben.

cloudflare.com – sie schreiben, dass sie Open Source lieben und im Allgemeinen viel über sich selbst schreiben. Nicht ganz klar ist die Intensität der Domain-Erhebung, die oft deutlich höher ist als die tatsächliche Aktivität im Internet. Lassen wir es erst einmal.

Daher hängt die Intensität der Anfragen häufig mit der erforderlichen Funktionalität der Geräte zusammen. Aber auch diejenigen, die es mit Aktivität übertrieben, wurden entdeckt.

Ganz zuerst

Wenn das drahtlose Internet eingeschaltet ist, schlafen alle noch und es ist möglich zu sehen, welche Anfragen zuerst an das Netzwerk gesendet werden. Um 6:50 Uhr schaltet sich also das Internet ein und in den ersten zehn Minuten werden täglich 60 Domains abgefragt:

Wie funktioniert die Heim-Internet-Live- und Domain-Name-Server-Statistik?

SQL-Berichtsabfrage

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 prüft die WLAN-Verbindung auf das Vorhandensein einer Anmeldeseite.
Citrix pingt seinen Server an, obwohl die Anwendung nicht aktiv ausgeführt wird.
Symantec überprüft Zertifikate.
Mozilla sucht nach Updates, obwohl ich in den Einstellungen darum gebeten habe, dies nicht zu tun.

mmo.de ist ein Gaming-Dienst. Höchstwahrscheinlich wird die Anfrage durch einen Facebook-Chat initiiert. Wir blockieren.

Apple wird alle seine Dienste aktivieren. api-glb-fra.smoot.apple.com – der Beschreibung nach zu urteilen, wird jeder Button-Klick zum Zwecke der Suchmaschinenoptimierung hierher gesendet. Höchst verdächtig, aber bezogen auf die Funktionalität. Wir lassen es.

Im Folgenden finden Sie eine lange Liste von Anfragen an microsoft.com. Wir blockieren alle Domains ab der dritten Ebene.

Anzahl der allerersten Subdomains
Wie funktioniert die Heim-Internet-Live- und Domain-Name-Server-Statistik?

Also die ersten 10 Minuten nach dem Einschalten des drahtlosen Internets.
iOS fragt die meisten Subdomains ab – 32. Gefolgt von Android – 24, dann Windows – 15 und zuletzt Blackberry – 9.
Allein die Facebook-Anwendung fragt 10 Domains ab, Skype fragt 9 Domains ab.

Informationsquelle

Die Quelle für die Analyse war die Protokolldatei des lokalen bind9-Servers, die das folgende Format enthält:

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)

Die Datei wurde in eine SQLite-Datenbank importiert und mithilfe von SQL-Abfragen analysiert.
Der Server fungiert als Cache; Anfragen kommen vom Router, es gibt also immer einen Anfrage-Client. Es genügt eine vereinfachte Tabellenstruktur, d.h. Der Bericht benötigt für die Gruppierung den Zeitpunkt der Anfrage, die Anfrage selbst und die Second-Level-Domain.

DDL-Tabellen

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)
);

Abschluss

Als Ergebnis der Analyse des Domain-Name-Server-Protokolls wurden mehr als 50 Datensätze zensiert und auf die Sperrliste gesetzt.

Die Notwendigkeit einiger Abfragen wird von Softwareherstellern gut beschrieben und schafft Vertrauen. Viele der Aktivitäten sind jedoch unbegründet und fragwürdig.

Source: habr.com

Kommentar hinzufügen