Регулярно слышу этот вопрос в разных формулировках. Индикатор сети мигает, когда ничего не открыто. Антивирус молчит, но кажется, что молчит зря. Или человек увидел в диспетчере задач незнакомое имя процесса и теперь не знает, что с этим делать.

Ответ на такой вопрос получается за десять минут стандартными средствами системы, без специальных программ и без переустановки. Показываю порядок действий и то, как отличать нормальное от ненормального — потому что вторая часть обычно оказывается сложнее первой.

Шаг первый: кто с кем соединён

Для Linux и macOS подойдёт ss или lsof. Для Windows — netstat -bano из командной строки с правами администратора либо вкладка «Сеть» в мониторе ресурсов.

ss -tunp state established
tcp 192.0.2.15:43732  203.0.113.20:443   users:(("firefox",pid=2417,fd=143))
tcp 192.0.2.15:41888  203.0.113.87:443   users:(("firefox",pid=2417,fd=18))
tcp 192.0.2.15:39998  198.51.100.44:443  users:(("telegram-desktop",pid=3120,fd=14))
tcp 192.0.2.15:52210  198.51.100.9:443   users:(("packagekitd",pid=1042,fd=22))

Читается слева направо: протокол, мой адрес и порт, адрес и порт собеседника, процесс с его идентификатором. Ключевое здесь — последний столбец: он связывает соединение с конкретной программой, и без этой связки дальше двигаться бессмысленно.

То же самое через lsof, если привычнее:

lsof -i -n -P | grep ESTABLISHED
firefox   2417 user 18u IPv4 TCP 192.0.2.15:41888->203.0.113.87:443 (ESTABLISHED)
telegram- 3120 user 12u IPv4 TCP 192.0.2.15:39998->198.51.100.44:443 (ESTABLISHED)

Первое, что нужно сделать с этим списком, — прочитать имена процессов и честно ответить, все ли вы узнаёте. Обычно узнаются почти все: браузер, мессенджер, клиент облачного хранилища, обновлятор системы.

Шаг второй: куда именно

Незнакомый адрес сам по себе ничего не говорит. Смотрим, кому он принадлежит:

dig +short -x 203.0.113.20
whois 203.0.113.20 | grep -iE 'netname|orgname'
20.113.0.203.bc.example-cloud.net.
NetName:        EXAMPLE-CLOUD-2
OrgName:        Example Cloud Provider

Здесь важна одна вещь, которая ломает интуицию: принадлежность адреса крупному облаку не означает ни хорошего, ни плохого. Сегодня в облаках живёт почти всё — и сервисы, которыми вы пользуетесь, и инфраструктура тех, кто вам не нравится. Имя облачного провайдера в обратной записи — это не приговор и не индульгенция.

Гораздо информативнее не адрес, а имя, которое запрашивалось перед соединением.

Шаг третий: какие домены запрашивались

Соединению почти всегда предшествует DNS-запрос. Его видно так:

tshark -i any -f "udp port 53" -T fields -e dns.qry.name -a duration:30

Если DNS у вас зашифрован, этот способ ничего не покажет — тогда смотрите журнал резолвера или статистику на роутере, если он её ведёт.

По списку доменов картина обычно проясняется сразу: телеметрия системы, сервис обновлений, синхронизация заметок, аналитика внутри какого-нибудь приложения. Домены читаются человеком, в отличие от адресов.

Что считать нормой

Тут и начинается настоящая работа, потому что «странное» соединение — почти всегда чьё-то легитимное.

Фоновая активность в простое — норма. Проверка обновлений, синхронизация, тикеты телеметрии, поддержание сессий мессенджеров. Компьютер, у которого при простое ноль исходящих соединений, — редкость.

Много соединений к одному облаку — норма. Один сервис легко открывает десяток параллельных соединений.

Соединения от процессов, о которых вы не думали как о сетевых, — обычно норма. Текстовый редактор проверяет обновления, просмотрщик картинок тянет превью, офисный пакет ходит за шрифтами.

А вот на что стоит посмотреть внимательнее:

Процесс, которого нет ни в одном списке установленного, с именем, похожим на системное, но с опечаткой или из необычного каталога. Проверяется просто:

ls -l /proc/2417/exe        # где на диске лежит исполняемый файл

Соединения на нестандартные порты, особенно постоянные. Соединение на порт вроде 4344, которое держится часами, — повод разобрать его до конца, а не пролистать.

Регулярность. Соединение строго раз в пять минут, круглосуточно, к одному адресу — типичное поведение агента, который «отмечается». Агент вполне может оказаться корпоративным и легальным, но знать, что это, полезно.

Резкая активность ночью при выключенном экране, если ничего фонового не настроено.

Чего эта проверка не покажет

Ограничения стоит понимать заранее.

Она показывает срез в момент запуска. Программа, соединяющаяся раз в час, в этот срез не попадёт — нужен либо длинный захват, либо повторные проверки.

Она не расшифрует содержимое: вы увидите, что процесс общается с сервером, но не что именно уходит.

И она не заменяет проверку системы на вредоносное ПО. Достаточно аккуратная программа умеет прятаться от штатных средств, а некоторые вещи вообще живут внутри браузера как расширение — тогда всё исходящее выглядит как обычный браузерный трафик.

Что делать с результатом

Если нашли процесс, который не опознаётся: посмотрите путь к файлу, прогоните его по публичным базам по хешу, поищите имя вместе со словом «служба» — часто это оказывается компонент чего-то установленного.

Если это оказалась программа, которой вы не пользуетесь, — удаляйте её штатно, а не убивайте процесс. Убитый процесс вернётся после перезагрузки, потому что запускается службой или автозагрузкой.

И запомните на будущее самое полезное: не «увидел незнакомый адрес — паникую», а «нашёл процесс, узнал, чей он, решил, нужен ли он мне». Список соединений — это инструмент для второго вопроса, а не для первого.


Пишу про такое регулярно в телеграм-канале «Бендеров решает»: разборы, практика и истории из SOC.

Комментарии (0)