メインコンテンツへスキップ
検索
VOSシステムのシステム管理者として、あなたは通常、ローカルサブネット上に他のホストが何であるかを気にすることはできません。あなたが気にするのは、設定されているゲートウェイと、もちろんシステムと通信するローカルホストですが、他のホストはあなたのレーダーの下にあります。しかし、ネットワークの隣人が誰であるかを知るには、2つの非常に良い理由があります。第一に、通信に問題が発生した場合、これらのホストを使ってネットワーク接続をテストすることができます。第二に、これらのホストはネットワークベースの攻撃のソースになる可能性が高いホストです。
誰がそこにいるかを確認するために、ローカルサブネットをスキャンするのは悪い考えではありません(毎週水曜日の朝と言います)。VOSにはスキャナが内蔵されていませんが、pingコマンドがあり、コマンドマクロの数行で囲まれたときにスキャナにすることができます。

&set X 1

&while &X& < 255
ping 192.168.11.&X&
&set X (calc &X& + 1)
&end
pingを使ってホストをスキャンすることには3つの問題があります。まず、あまり効率的ではありません。デフォルトのタイムアウトは 15 秒で、コマンドは 4 回試行しますので、そこにいないホストや ping に反応しないホストをスキャンするのに 1 分かかります。幸いなことに、トライ回数を1回に減らしてタイムアウトを1秒にすることができます。専用のスキャンツールという観点からはまだ効率的ではありませんが、我々のニーズには十分だと思います。
&set X 1
&while &X& < 255
ping 192.168.11.&X& -count 1 -timeout 1
< &set X (calc &X& + 1)
&end
2 つ目の問題は、すべてのホストが ping に応答するわけではないということです。コマンドマクロは、あと1行でどのホストがARP応答を送信したかを報告してくれるので、これは大きな問題ではありません。ARPはIPアドレスをイーサネットMACアドレスにマッピングするために使用され、VOSはpingを送信する前にイーサネットMACアドレスを知っている必要があります。そのため、ターゲットホストにARP要求を送信し、応答からのデータをARPキャッシュに格納します。すべてのホストは、後続のping要求に応答しない場合でも、ARP応答でARP要求に応答します。arp コマンドは、要求されたエントリがあれば表示します。
&set X 1
&while &X& < 255
ping 192.168.11.&X& -count 1 -timeout 1
arp 192.168.11.&X&
&set X (calc &X& + 1)
&end
上のコマンドマクロはpingリクエストとレスポンスがARPデータと混ざっていて、あまり読みやすくありません。以下のマクロは、arp_scan.(date).outという名前のファイルに近隣の人のきれいな表を生成します。これはクラスCのネットワークを想定しており、最初の3オクテットが固定されており、ホスト1から254までをスキャンします。これを起動したプロセスとして実行することをお勧めします。
& arp_scan.cm begins here
&
& arp_scan.cm
& version 1.0 09-04-06
&
&begin_parameters
BASE BASE:string,req
&end_parameters
&
& make sure extraneous stuff isn't echoed into the results file
&if (process_type) = 'batch' &then &do
<set_ready -format off
&echo no_command_lines
&end
&
&set X 1
&set_string FILE (process_dir)>arp_scan.out
&if (exists &FILE&)
&then delete_file &FILE& -no_ask
< &while &X& < 255
ping &BASE&.&X& -count 1 -timeout 1
attach_default_output &FILE& -append
arp &BASE&.&X&
detach_default_output
&set X (calc &X& + 1)
&end
display &FILE& -match &BASE& -no_header -output_path arp_scan.(date).out
&
& arp_scan ends here
ARPキャッシュのタイムアウトは10分です。10分未満の時間のエントリがある場合、スキャンが行われる前にモジュールが既にそのホストと通信していたことがわかります。

d arp_scan.09-04-06.out


%phx_vos#m16_mas>SysAdmin>Noah_Davids>arp_scan.09-04-06.out 09-04-06 15:20:30 m

164.152.77.11 00-00-A8-80-80-4A temp 9 mins
164.152.77.12 00-00-A8-80-81-EC temp 9 mins
164.152.77.100 00-0C-29-A9-85-44 temp 10 mins
164.152.77.103 00-04-0D-E8-B8-44 temp 2 mins
164.152.77.111 00-19-E7-8E-EA-38 temp 10 mins
164.152.77.114 00-04-0D-4A-DD-C6 temp 5 mins
164.152.77.116 00-04-0D-4A-BF-50 temp 10 mins
164.152.77.143 00-07-3B-CE-19-46 temp 8 mins
164.152.77.147 00-07-3B-91-BE-51 temp 8 mins
. . .
3 つ目の問題は、ネットワークを積極的にスキャンすることでネットワーク管理者から苦情を受ける可能性があることです。彼らがこの活動に異議を唱えた場合は、パケットモニタコマンドを使用してブロードキャストパケットをキャプチャすることで、受動的にスキャンすることができます。
packet_monitor -numeric -filter -no_transmit -ip -mac_dst ff:ff:ff:ff:ff:ff -filter -no_transmit -arp
このテクニックを使用する場合、packet_monitorが動作している間、ネットワーク内の他のホストが積極的に通信したりブロードキャストを送信したりすることに依存します。このテクニックを使用する場合、packet_monitorをかなりの時間実行させる必要がありますが、どのくらいの時間かはネットワークに依存します。上記のコマンドをコマンドマクロ(packet_monitor_scan.cm)に入れて、起動プロセスとして実行することをお勧めします。特権でプロセスを実行することを忘れないでください。
トレースができたら、それを使用可能なアドレスのテーブルに変換する必要があります。次のマクロがそれを行います(packet_monitor_scanはprocess_packet_monitor_scan.outファイルを生成する起動プロセスであると仮定しています)。
& process_packet_monitor_scan.cm begins here
&
& packet_monitor_scan.cm
& version 1.0 09-04-06
& version 1.1 09-06-12 Added progress messages
& [email protected]
&
& make sure extraneous stuff isn't echoed into the results file
&if (process_type) = 'batch' &then &do
set_ready -format off
&echo no_command_lines
&end
&
&
attach_default_output (process_dir)>packet_monitor_scan
&set LINE 1
&set_string TEXT &+
(translate (contents packet_monitor_scan.out &LINE& -hold) '_' ' ')
&while (substr &TEXT& 1 7) ^= 'Process'
&set_string SOURCE '_'
&if (substr &TEXT& 1 9) = 'R_ARP_Req' &then &do
&set_string SOURCE (substr &TEXT& 39)
&end
&if (substr &TEXT& 1 9) = 'R_ARP_Rep' &then &do
&set_string SOURCE (substr &TEXT& 59)
&end
&if (substr &TEXT& 1 3) = 'R__' &then &do
&set_string SOURCE (substr &TEXT& 15)
&end
&set I (calc (index &SOURCE& '_') - 1)
&if &SOURCE& ^= '_' &then display_line (substr &SOURCE& 1 &I&)
&set LINE (calc &LINE& + 1)
&if (mod &LINE& 1000) = 0
&then &do
detach_default_output
display_line working on line &LINE&
attach_default_output (process_dir)>packet_monitor_scan -append
&end
&set_string TEXT (translate (contents packet_monitor_scan.out &LINE&) '_' ' ')
&end
detach_default_output
display_line doing sort
sort (process_dir)>packet_monitor_scan -duplicates_path (process_dir)>dups
copy_file &+
(process_dir)>packet_monitor_scan packet_monitor_scan.(date).out -delete
display_line packet_monitor_scan.(date).out created
&
& process_packet_monitor_scan.cm ends here
とすると、次のような表ができあがります。
d packet_monitor_scan.09-06-12.out
%phx_vos#m16_mas>SysAdmin>Noah_Davids>packet_monitor_scan.09-06-12.out  09-06-12
0.0.0.0
10.10.1.10
10.10.1.11
10.10.1.2
10.10.1.20
10.10.1.21
10.10.1.22
10.10.1.23
10.10.1.75
10.20.1.2
10.20.1.21
10.20.1.26
10.20.1.27
10.20.1.3
10.20.1.30
. . .
メニューを閉じる

© 2024 Stratus Technologies.