Skip to main content
En tant qu'administrateur d'un système VOS, vous ne vous souciez généralement pas de savoir quels sont les autres hôtes du sous-réseau local. Vous vous souciez des passerelles qui sont configurées et, bien sûr, des hôtes locaux qui communiquent avec votre système, mais les autres hôtes sont en dessous de votre radar. Il y a cependant deux très bonnes raisons de savoir qui sont vos voisins de réseau. Premièrement, en cas de problème de communication, vous pouvez utiliser ces autres hôtes pour tester votre connexion réseau. Deuxièmement, ce sont les hôtes qui sont les plus susceptibles d'être les sources de tout type d'attaque basée sur le réseau.
Ce n'est pas une mauvaise idée de scanner le sous-réseau local de temps en temps (disons tous les mercredis matin) juste pour voir qui est là. VOS n'a pas de scanner intégré, mais il dispose de la commande ping qui, lorsqu'elle est entourée de quelques lignes d'une macro de commande, peut être transformée en scanner.

&set X 1

&while &X& < 255
ping 192.168.11.&X&
&set X (calc &X& + 1)
&end
L'utilisation de ping pour rechercher des hôtes pose trois problèmes. Premièrement, ce n'est pas très efficace. Le délai par défaut est de 15 secondes et la commande essaiera 4 fois. Il faudra donc une minute pour rechercher un hôte qui n'est pas là ou qui ne répond pas aux pings. Heureusement, le nombre d'essais peut être réduit à 1 et le délai d'attente à 1 seconde. Ce n'est pas encore efficace du point de vue d'un outil de balayage dédié, mais je pense que c'est suffisant pour nos besoins.
&set X 1
&while &X& < 255
ping 192.168.11.&X& -count 1 -timeout 1
< &set X (calc &X& + 1)
&end
Le deuxième problème est que tous les hôtes ne répondent pas aux pings. Ce n'est cependant pas un problème important car avec une seule ligne supplémentaire, notre macro de commande indiquera quels hôtes ont envoyé une réponse ARP. Les ARP sont utilisés pour mapper une adresse IP en une adresse MAC Ethernet et le VOS doit connaître l'adresse MAC Ethernet avant de pouvoir envoyer le ping. Il envoie donc une demande ARP à l'hôte cible et place les données de la réponse dans le cache ARP. Tous les hôtes répondront à la demande ARP par une réponse ARP même s'ils ne répondront pas à la demande ping suivante. La commande arp affichera l'entrée demandée s'il y en a une.
&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
La macro de commande ci-dessus a les demandes et les réponses ping entremêlées avec les données ARP, elle n'est pas très lisible. La macro suivante produit un joli tableau de voisins dans un fichier nommé arp_scan.(date).out. Elle suppose un réseau de classe C, c'est-à-dire que les 3 premiers octets sont fixes et recherche les hôtes 1 à 254. Je vous suggère de l'exécuter comme un processus lancé.
& arp_scan.cm begins here
&
& arp_scan.cm
& version 1.0 09-04-06
& noah.davids@stratus.com
&
&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
Le délai d'attente du cache ARP est de 10 minutes. Si une entrée a un délai inférieur à 10 minutes, vous saurez que le module communiquait déjà avec cet hôte avant que l'analyse ne soit effectuée.

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
. . .
Le troisième problème est la plainte que vous pourriez recevoir de votre administrateur de réseau pour avoir scanné activement le réseau. S'il s'oppose à cette activité, vous pouvez l'analyser passivement en utilisant la commande packet monitor pour capturer les paquets de diffusion.
packet_monitor -numeric -filter -no_transmit -ip -mac_dst ff:ff:ff:ff:ff:ff -filter -no_transmit -arp
L'utilisation de cette technique repose sur la communication active et l'envoi d'émissions par les autres hôtes du réseau pendant le fonctionnement de packet_monitor. Si vous utilisez cette technique, vous devrez laisser fonctionner packet_monitor pendant un certain temps, dont la durée dépendra de votre réseau. Je vous suggère de placer la commande ci-dessus dans une macro de commande (packet_monitor_scan.cm) et de l'exécuter comme un processus lancé. N'oubliez pas d'exécuter le processus comme un processus privilégié.
Une fois que vous avez une trace, vous devez la convertir en un tableau d'adresses utilisable. La macro suivante s'en chargera (elle suppose que packet_monitor_scan était un processus lancé générant un fichier 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
& noah.davids@stratus.com
&
& 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
qui donnera le tableau suivant.
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
. . .

2020 Stratus Technologies.