Informazioni sul rilevamento del SO remoto tramite Scapy

1

Sto cercando di capire le tecniche di rilevamento del sistema operativo remoto utilizzando Scapy. Mi sono imbattuto nel seguente articolo articolo SANS sul rilevamento di sistemi operativi remoti usando Scapy e ho cercato di seguirlo.

La tecnica, come ho capito da quanto sopra, è che se dopo l'iniziale handshake TCP 3 di successo, se un pacchetto di dati viene inviato con flag NON impostato su ACK , allora tutti i sistemi operativi , eccetto Linux, dovrebbe rispondere con un pacchetto RST . Linux non segue questo requisito RFC e quindi risponde con un pacchetto ACK .

Questo è un modo come possiamo dire se il computer remoto è un Linux o un altro. Ci possono essere altri modi per capire questo, ma mi piacerebbe capire questa tecnica e ciò che si suppone stia andando male con il mio script di script qui sotto.

from scapy.all import *

seq = 12345
sport = 1040
dport = 80

ip_packet = IP(dst='192.168.56.107')
syn_packet = TCP(sport=sport, dport=dport, flags='S', seq=seq)

packet = ip_packet/syn_packet
synack_response = sr1(packet)

next_seq = seq + 1
my_ack = synack_response.seq + 1

ack_packet = TCP(sport=sport, dport=dport, flags='A', seq=next_seq, ack=my_ack)

send(ip_packet/ack_packet)

payload_packet = TCP(sport=sport, dport=dport, flags='', seq=next_seq)
payload = "this is a test"
send(ip_packet/payload_packet/payload)

Nello script sopra, la macchina 192.168.56.107 è una macchina Linux che esegue Inetsim e simula perfettamente HTTP tra altri servizi. Il modo in cui sono sicuro che funzioni bene è perché sono in grado di fare con successo il seguente:

nc 192.168.56.107 80

e poi invia alcuni dati casuali, pronuncia la stringa "abcd" su di esso. E poi quando lo analizzo con wireshark, mostra chiaramente che posta l'handshake TCP 3 way, in risposta al pacchetto di dati "abcd" che invia un pacchetto ACK.

Se faccio lo stesso con il mio script sopra e lo analizzo con Wireshark, l'handshake TCP 3 way si verifica con successo, ma post che il server non risponde con un pacchetto ACK (mentre dovrebbe essere un sistema Linux , che come indicato sopra non segue la RFC).

Ciò che è più strano è che il server non risponde nemmeno con un pacchetto RST .

Il sistema linux è un sistema Ubuntu, se questo fa alcuna differenza.

Per favore aiutami a capire che cosa potrei fare di sbagliato qui?

    
posta qre0ct 11.11.2016 - 15:20
fonte

0 risposte

Leggi altre domande sui tag