Есть ли у EXE доступ в интернет?(Заблокировать это?) - PullRequest
2 голосов
/ 26 марта 2011

Я хотел бы написать небольшой инструмент, который анализирует EXE-файл (x32, x64), который проверяет, есть ли у EXE возможность доступа в Интернет.

Я знаю эту функцию из "Noton Firewall 2003" (очень старый ...), который смог сканировать жесткий диск на наличие EXE-файлов, имеющих доступ к Интернету.

Вопрос в том, как это обнаружить? Есть ли какой-нибудь файл DLL, который всегда импортируется, если требуется доступ в интернет? (WININET.DLL?) Мне также интересно, если это имеет значение, как развивалась связь (с использованием фреймворка, с использованием сокетов, с использованием WinAPI, ...?)

Смежный побочный вопрос: существует ли какой-либо «ЛЕГКИЙ» (и, будем надеяться, «чистый») способ запретить доступ приложения к Интернету? (например, перехват DLL-импорта, который требуется для КАЖДОГО вида / реализации доступа в Интернет?)

Интенсивное использование моего инструмента было бы что-то вроде

my_easy_firewall.exe [target-application] [parameters]

-> Если приложение имеет функцию доступа в Интернет, спросите, разрешить или запретить доступ в Интернет. Затем запустите [target-application] с [параметрами] с доступом к Интернету или без него, в зависимости от решения пользователя.

Я хотел бы развить это в Borland Delphi.

Спасибо.

Привет

Даниэль Маршалл

Ответы [ 3 ]

6 голосов
/ 27 марта 2011

Даниэль, сканирование exe-файлов, чтобы определить, является ли импорт некоторой dll, которая используется для доступа в Интернет, ненадежным, потому что существует много способов получить доступ к Интернету без непосредственного импорта dll.Например, вы можете использовать функцию LoadLibrary, которая динамически загружает dll или COM-объект, такой как объект WinHttpRequest, использующий позднюю привязку.

, например, выможно создать проект, подобный этому

{$APPTYPE CONSOLE}

uses
  ActiveX,
  ComObj,
  SysUtils;


Procedure HttpGetText(const Url:string);
var
  objHTTP : OleVariant;
begin
    objHTTP:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
    objHTTP.Open('GET', Url, False);
    objHTTP.Send();
    Writeln(objHTTP.ResponseText);
end;

begin
 try
    CoInitialize(nil);
    try
      HttpGetText('/6026053/est-li-u-exe-dostup-v-internet-zablokirovat-eto');
      Readln;
    finally
      CoUninitialize;
    end;
 except
    on E:Exception do
    begin
        Writeln(E.Classname, ':', E.Message);
        Readln;
    end;
  end;
end.

Теперь, используя инструмент для проверки зависимости dll, вы увидите небольшой список, подобный этому

oleaut32.dll
advapi32.dll
user32.dll
kernel32.dll
ole32.dll

ни один из этих dll не используется для доступа в Интернетнепосредственно.

Я думаю, что вместо того, чтобы определять доступ к Интернету, вы можете контролировать TCP и UDP-соединения любого приложения, используя такую ​​функцию, как GetExtendedTcpTable (проверьте примеры Delphi здесь и здесь ) отсюда вы определяете порт и сервер, к которому приложение обращается, и информируете пользователя.или другим способом, используя что-то более продвинутое, например Winpcap , анализирующих захваченные сетевые пакеты.

1 голос
/ 30 мая 2017

Я использую обходной путь

Например, файл .bat с содержанием

"%~dp0"\hosts add access.blocked.com 127.0.0.1
call "%~dp0"\programname.exe
"%~dp0"\hosts del access.blocked.com

Он использует hosts.exe из приведенного ниже URL-адреса для редактирования файла хостов Windows. Приведенный выше файл bat отредактирует файл hosts, чтобы заблокировать нежелательное примерное соединение access.blocked.com, запустит программу exe, дождется ее закрытия, когда завершит работу, и удалит запись в файле hosts, поэтому ее снова очистят. Работает отлично.

https://code.google.com/p/hostscmd/downloads/list

1 голос
/ 27 марта 2011

Насколько мне известно, все вредоносные программы используют какую-то сигнатуру для обнаружения зараженных файлов.
Что касается сопутствующего дополнительного вопроса, лучший способ предотвратить доступ приложения к Интернету - перехватить все запросы на соединение TCP / IP.,Это работа брандмауэра, и разработка вашего брандмауэра не является тривиальной задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...