1.Как это возможно, что процессы имеют неизвестные пути?
Система знает идентификаторы процессов. (В частности, сетевой стек должен знать это.) Идентификаторы процесса просто неизвестны для netstat.
Разве система не знает путь какого-либо процесса, который устанавливает соединение?
Да. Когда стек TCP/IP (отвечающий за общие протоколы, включая TCP и UDP и, возможно, ICMP) получает информацию, он отправляет эту информацию программам. Эта возможность позволяет вашему компьютеру вести несколько разговоров, используя различные программы, работающие в системе, и отправлять входящие данные на правильный разговор. Проект TCP требует, чтобы входящие данные обрабатывались как часть инициализирующего рукопожатия. UDP также несколько поддерживает это, поэтому вы можете одновременно отправлять несколько DNS-запросов, и компьютер будет знать, какой ответ должен соответствовать каждому запросу.
2.Есть ли другой инструмент, который я не использовал, или какой-то другой способ для регистрации процессов, которые устанавливают соединения в ясной форме и с путями всех процессов?
netstat -b
должен уметь это делать. (Этот синтаксис предназначен для современных версий Microsoft Windows. Другие реализации netstat могут использовать другие параметры.) Параметр -n
просто исключает сведения об обратном DNS, которые обычно удаляются людьми (обычно потому, что это может замедлить работу).
Проблема, скорее всего, связана с разрешениями, которые, я надеюсь, затронут и любые другие инструменты. (В противном случае ожидаемые преимущества безопасности могут работать не так, как хотелось бы.)
Лучшая ставка: убедитесь, что вы администратор. Если вы используете Windows Vista или новее, убедитесь, что если включен контроль учетных записей, то вы используете командную строку с повышенными привилегиями.
netstat -nb
должен показывать номера PID. Преобразование этого в пути выполняется отдельно, например, с помощью TASKLIST
или:
WMIC PROCESS GET Caption,CommandLine,Description,ExecutablePath,Name,ParentProcessId,ProcessId /FORMAT:VALUE