Come amministratore di sistema per un sistema VOS, di solito non ci si può preoccupare di ciò che gli altri host sono nella sottorete locale. Vi preoccupate dei gateway che sono configurati e naturalmente di tutti gli host locali che comunicano con il vostro sistema, ma gli altri host sono al di sotto del vostro radar. Ci sono, comunque, 2 ottime ragioni per sapere chi sono i vostri vicini di rete. In primo luogo, in caso di problemi di comunicazione, potete usare questi altri host per testare la vostra connessione di rete. In secondo luogo, questi sono gli host che più probabilmente sono la fonte di qualsiasi tipo di attacco basato sulla rete.
Non è una cattiva idea scansionare la subnet locale ogni tanto (diciamo ogni mercoledì mattina) solo per vedere chi c'è là fuori. VOS non ha uno scanner integrato - ma ha il comando ping, che quando è circondato da poche righe di una macro di comando può essere trasformato in uno scanner.
&set X 1
&while &X& < 255ping 192.168.11.&X&&set X (calc &X& + 1)&endCi sono 3 problemi con l'uso di ping per la ricerca di host. Primo, non è molto efficiente. Il time out predefinito è di 15 secondi e il comando proverà 4 volte, quindi ci vorrà un minuto per scansionare un host che non c'è o che non risponde ai ping. Per fortuna, il numero di tentativi può essere ridotto a 1 e il timeout ridotto a 1 secondo. Questo non è ancora efficiente dal punto di vista di uno strumento di scansione dedicato, ma penso che sia abbastanza buono per le nostre esigenze.
&set X 1&while &X& < 255ping 192.168.11.&X& -count 1 -timeout 1< &set X (calc &X& + 1)&end
Il secondo problema è che non tutti i padroni di casa risponderanno ai ping. Questo, tuttavia, non è un problema significativo perché con una sola riga in più la nostra macro di comando riporterà quali host hanno inviato una risposta ARP. Gli ARP vengono utilizzati per mappare un indirizzo IP in un indirizzo MAC Ethernet e VOS deve conoscere l'indirizzo MAC Ethernet prima di poter inviare il ping. Pertanto invia una richiesta ARP all'host di destinazione e posiziona i dati della risposta nella cache ARP. Tutti gli host risponderanno alla richiesta ARP con una risposta ARP anche se non risponderanno alla successiva richiesta di ping. Il comando arp visualizzerà la voce richiesta, se presente.
&set X 1&while &X& < 255ping 192.168.11.&X& -count 1 -timeout 1arp 192.168.11.&X&&set X (calc &X& + 1)&endLa macro di comando di cui sopra ha le richieste di ping e le risposte intermixate con i dati ARP, non è molto leggibile. La macro seguente produce una bella tabella di vicini in un file chiamato arp_scan.(date).out. Essa assume una rete di classe C, cioè i primi 3 ottetti sono fissi e scansiona per gli host da 1 a 254. Suggerisco di eseguirlo come processo avviato.
& arp_scan.cm begins here&& arp_scan.cm& version 1.0 09-04-06&&begin_parametersBASE 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& < 255ping &BASE&.&X& -count 1 -timeout 1attach_default_output &FILE& -appendarp &BASE&.&X&detach_default_output&set X (calc &X& + 1)&enddisplay &FILE& -match &BASE& -no_header -output_path arp_scan.(date).out&& arp_scan ends hereIl timeout della cache ARP è di 10 minuti, Se c'è una voce con un tempo inferiore a 10 minuti si saprà che il modulo stava già comunicando con quell'host prima che la scansione fosse fatta.
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 mins164.152.77.12 00-00-A8-80-81-EC temp 9 mins164.152.77.100 00-0C-29-A9-85-44 temp 10 mins164.152.77.103 00-04-0D-E8-B8-44 temp 2 mins164.152.77.111 00-19-E7-8E-EA-38 temp 10 mins164.152.77.114 00-04-0D-4A-DD-C6 temp 5 mins164.152.77.116 00-04-0D-4A-BF-50 temp 10 mins164.152.77.143 00-07-3B-CE-19-46 temp 8 mins164.152.77.147 00-07-3B-91-BE-51 temp 8 mins. . .Il terzo problema è il reclamo che potreste ricevere dal vostro amministratore di rete per la scansione attiva della rete. Se si oppongono a questa attività, è possibile effettuare una scansione passiva utilizzando il comando packet monitor per catturare i pacchetti di trasmissione.
packet_monitor -numeric -filter -no_transmit -ip -mac_dst ff:ff:ff:ff:ff:ff -filter -no_transmit -arpL'utilizzo di questa tecnica si affida agli altri host della rete che comunicano e inviano attivamente le trasmissioni mentre il packet_monitor è in funzione. Se si usa questa tecnica si dovrà lasciare funzionare packet_monitor per un bel po' di tempo, quanto tempo dipenderà dalla rete. Suggerisco di mettere il comando di cui sopra in una macro di comando (packet_monitor_scan.cm) ed eseguirlo come processo avviato. Non dimenticate di eseguire il processo come privilegiato.
Una volta che si dispone di una traccia, è necessario convertirla in una tabella di indirizzi utilizzabili. La macro seguente lo farà (presuppone che packet_monitor_scan sia un processo avviato che genera un file 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 che produrrà la seguente tabella.
d packet_monitor_scan.09-06-12.out%phx_vos#m16_mas>SysAdmin>Noah_Davids>packet_monitor_scan.09-06-12.out 09-06-120.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. . . 