Como a Internet doméstica vive e as estatísticas do servidor de nomes de domínio?

Um roteador doméstico (neste caso FritzBox) pode registrar muita coisa: quanto tráfego está indo e quando, quem está conectado e em que velocidade, etc. Um servidor de nomes de domínio (DNS) na rede local me ajudou a descobrir o que estava escondido atrás dos destinatários desconhecidos.

No geral, o DNS teve um impacto positivo na rede doméstica: adicionou velocidade, estabilidade e capacidade de gerenciamento.

Abaixo está um diagrama que levantou questões e a necessidade de entender o que estava acontecendo. Os resultados já filtram solicitações conhecidas e funcionais para servidores de nomes de domínio.

Por que 60 domínios obscuros são pesquisados ​​todos os dias enquanto todos ainda estão dormindo?

Todos os dias, 440 domínios desconhecidos são pesquisados ​​durante o horário ativo. Quem são eles e o que eles fazem?

Número médio de solicitações por dia por hora

Como a Internet doméstica vive e as estatísticas do servidor de nomes de domínio?

Consulta de relatório SQL

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

À noite, o acesso sem fio é desativado e a atividade do dispositivo é esperada, ou seja, não há votação para domínios desconhecidos. Isso significa que a maior atividade vem de dispositivos com sistemas operacionais como Android, iOS e Blackberry OS.

Vamos listar os domínios que são pesquisados ​​intensamente. A intensidade será determinada por parâmetros como a quantidade de solicitações por dia, a quantidade de dias de atividade e em quantas horas do dia elas foram percebidas.

Todos os suspeitos esperados estavam na lista.

Domínios intensamente pesquisados

Como a Internet doméstica vive e as estatísticas do servidor de nomes de domínio?

Consulta de relatório SQL

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

Bloqueamos isс.blackberry.com e iceberg.blackberry.com, o que o fabricante justificará por motivos de segurança. Resultado: ao tentar se conectar à WLAN, ele mostra a página de login e nunca mais se conecta a lugar nenhum. Vamos desbloquear.

detectportal.firefox.com é o mesmo mecanismo, implementado apenas no navegador Firefox. Se você precisar fazer login na rede WLAN, primeiro será exibida a página de login. Não está totalmente claro por que o endereço deve receber ping com tanta frequência, mas o mecanismo é claramente descrito pelo fabricante.

Skype. As ações deste programa são semelhantes às de um worm: ele se esconde e não se deixa simplesmente matar na barra de tarefas, gera muito tráfego na rede, faz ping em 10 domínios a cada 4 minutos. Ao fazer uma videochamada, a conexão com a Internet falha constantemente, quando não pode ser melhor. Por enquanto é necessário, assim permanece.

upload.fp.measure.office.com - refere-se ao Office 365, não consegui encontrar uma descrição decente.
browser.pipe.aria.microsoft.com – Não consegui encontrar uma descrição decente.
Bloqueamos ambos.

connect.facebook.net - aplicativo de bate-papo do Facebook. Restos.

mediator.mail.ru Uma análise de todas as solicitações do domínio mail.ru mostrou a presença de um grande número de recursos publicitários e coletores de estatísticas, o que causa desconfiança. O domínio mail.ru é enviado inteiramente para a lista negra.

google-analytics.com - não afeta a funcionalidade dos dispositivos, por isso o bloqueamos.
doubleclick.net - conta cliques publicitários. Nós bloqueamos.

Muitas solicitações vão para googleapis.com. O bloqueio levou ao desligamento alegre de mensagens curtas no tablet, o que me parece estúpido. Mas a playstore parou de funcionar, então vamos desbloquear.

cloudflare.com - eles escrevem que amam o código aberto e, em geral, escrevem muito sobre si mesmos. A intensidade da pesquisa de domínio não é totalmente clara, sendo muitas vezes muito superior à atividade real na Internet. Vamos deixar isso por enquanto.

Assim, a intensidade das solicitações está muitas vezes relacionada com a funcionalidade exigida dos dispositivos. Mas também foram descobertos aqueles que exageraram na atividade.

Muito primeiro

Quando a Internet sem fio é ligada, todos ainda estão dormindo e é possível ver quais solicitações são enviadas primeiro para a rede. Assim, às 6h50 a Internet é ligada e nos primeiros dez minutos 60 domínios são pesquisados ​​​​diariamente:

Como a Internet doméstica vive e as estatísticas do servidor de nomes de domínio?

Consulta de relatório SQL

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

O Firefox verifica a conexão WLAN quanto à presença de uma página de login.
A Citrix está executando ping em seu servidor mesmo que o aplicativo não esteja em execução ativa.
A Symantec verifica certificados.
A Mozilla verifica se há atualizações, embora nas configurações eu tenha pedido para não fazer isso.

mmo.de é um serviço de jogos. Muito provavelmente a solicitação foi iniciada pelo chat do Facebook. Nós bloqueamos.

A Apple ativará todos os seus serviços. api-glb-fra.smoot.apple.com - a julgar pela descrição, cada clique de botão é enviado aqui para fins de otimização de mecanismos de pesquisa. Altamente suspeito, mas relacionado à funcionalidade. Nós deixamos isso.

A seguir está uma longa lista de solicitações para microsoft.com. Bloqueamos todos os domínios a partir do terceiro nível.

Número dos primeiros subdomínios
Como a Internet doméstica vive e as estatísticas do servidor de nomes de domínio?

Então, os primeiros 10 minutos ligando a Internet sem fio.
iOS pesquisa o maior número de subdomínios - 32. Seguido pelo Android - 24, depois pelo Windows - 15 e por último pelo Blackberry - 9.
Somente o aplicativo do Facebook pesquisa 10 domínios, o skype pesquisa 9 domínios.

Fonte de informação

A fonte da análise foi o arquivo de log do servidor local bind9, que contém o seguinte formato:

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)

O arquivo foi importado para um banco de dados sqlite e analisado por meio de consultas SQL.
O servidor atua como um cache; as solicitações vêm do roteador, portanto há sempre um cliente de solicitação. Uma estrutura de tabela simplificada é suficiente, ou seja, O relatório requer a hora da solicitação, a própria solicitação e o domínio de segundo nível para agrupamento.

Tabelas DDL

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

Jogar aviator online grátis: hack aviator funciona

Assim, como resultado da análise do log do servidor de nomes de domínio, mais de 50 registros foram censurados e colocados na lista de bloqueios.

A necessidade de algumas consultas é bem descrita pelos fabricantes de software e inspira confiança. No entanto, grande parte da atividade é infundada e questionável.

Fonte: habr.com

Adicionar um comentário