免責事項: 私はマルウェアを作成していません。
ローカル PC 上のプログラムがインターネット上の特定のホストにリクエストを送信するのを防ぐことは可能でしょうか。ネットワークカードのドライバーよりも高いレベルで可能ですか。
私が見ているように、たとえば、ブラウザはソケットを開き、それを介してデータを送信します。何らかの方法でアクセスして、データの送信をブロックすることはできますか?
可能であればどちらに移動すればよいですか?
免責事項: 私はマルウェアを作成していません。
ローカル PC 上のプログラムがインターネット上の特定のホストにリクエストを送信するのを防ぐことは可能でしょうか。ネットワークカードのドライバーよりも高いレベルで可能ですか。
私が見ているように、たとえば、ブラウザはソケットを開き、それを介してデータを送信します。何らかの方法でアクセスして、データの送信をブロックすることはできますか?
可能であればどちらに移動すればよいですか?
これは、偽のルート ルールを使用してコマンド プロンプトから簡単に実行できます。以下に、Windows でこれを行う方法を示します。このソリューションを変更して、Linux/Unix でも機能するようにすることもできます。
管理者として実行している CMD シェル プロンプトから
ステップ 1 - nslookup でブロックするホストの IP アドレスを見つける
C:\>nslookup www.stackoverflow.com
Server: myrouter.home
Address: 192.168.1.1
Non-authoritative answer:
Name: stackoverflow.com
Address: 69.59.197.21
Aliases: www.stackoverflow.com
ここでは、www.stackoverflow.com の IP アドレスが 69.59.197.21 であることがわかります。
ステップ 2 - システムの現在のルーティング テーブルを で印刷しますroute print -4
。「0.0.0.0 destination」行を探して、インターネットのゲートウェイ アドレスを特定します。
C:\>route print -4
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 10
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.1.0 255.255.255.0 On-link 192.168.1.10 266
192.168.1.10 255.255.255.255 On-link 192.168.1.10 266
192.168.1.255 255.255.255.255 On-link 192.168.1.10 266
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.1.10 266
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.1.10 266
===========================================================================
これで、ゲートウェイが 192.168.1.1 (ホーム ルーターの IP アドレス) であることがわかります。そして、私のネットワーク サブネットが 192.168.1.* であることは明らかです。(ipconfig
サブネットが不明な場合は、入力してサブネットのすべてのプロパティを検出することもできます。)
ステップ 3 - ブロックしたい IP アドレスに偽のルーティング ルールを挿入します。秘訣は、ゲートウェイではない同じサブネット上の IP アドレスを選択することです。この場合、192.168.1.2 はサブネット上に存在しないホストです。
C:\> route add 69.59.197.21 MASK 255.255.255.255 192.168.1.2
OK!
route print -4
もう一度入力して、テーブル内の偽のルート ルールを確認できます。このエントリが言うことは、「このホストが 69.59.197.21 に送信する必要があるときはいつでも、192.168.1.2 経由で送信してみてください」ということです。そして、それはホストが存在しないホストに送信することを強制し、ルーティングすることができません。
それだけです。これを入力すると、実際には自分のマシンが www.stackoverflow.com にアクセスできなくなります。これを元に戻すには、次のように入力するだけです。
C:\>route delete 69.59.197.21
OK!
細字:
多くのサイトには複数の IP アドレスがあります。NSLookup が一度にすべての IP アドレスを通知しない場合は、数分ごとに定期的に NSLookup を呼び出して、より多くの IP アドレスを表示する必要があります。いくつかの実験により、この手法を使用してネットワーク全体をブロックできます。
ブラウザーがプロキシ サーバーを使用するように構成されている場合、この手法は機能しない可能性があります。
また、この手法は再起動後は存続しない可能性があります。OS の起動時またはユーザーのログイン時にルートを追加する作業を行う Windows タスク スケジューラ (または OS の他の適切な自動起動メカニズム) に挿入されるスクリプトを作成することができます。
私は自分のC:\Windows\System32\drivers\etc\hosts
ファイルを編集してそれを行います (Web ブラウザをブロックします)。
このファイルを編集するには、「管理者として実行」する必要があります。
次のようなエントリを追加します。
127.0.0.1 bad-domain.com
127.0.0.1 www.bad-domain.com
これにより、リクエストが localhost にリダイレクトされます。
編集は、システムの再起動後も維持されます。