User Tools

Site Tools


Writing /net/www/auesnard/teaching/data/cache/a/a0cc0004c73722a7ea33f149b95652db.metadata failed
rx:tp5-bonus
Writing /net/www/auesnard/teaching/data/cache/b/b917139305956507b1746900fb337322.xhtml failed

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
rx:tp5-bonus [2016/03/01 09:58] orelrx:tp5-bonus [2019/01/31 10:37] orel
Line 4: Line 4:
  
   * Sur une machine cliente, par exemple //immortal// :   * Sur une machine cliente, par exemple //immortal// :
-    - utilisez cette commande : <code>iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP</code> +    - utilisez cette commande : <code>iptables -A OUTPUT -p tcp --tcp-flags ALL RST -j DROP</code> 
     - puis lancez Scapy.     - puis lancez Scapy.
  
Line 21: Line 21:
 </code>       </code>      
  
-__Attention__ : Il faut effectuer ces commandes rapidement pour éviter un "timeout" du serveur (sinon, le mieux serait d'utiliser une fonction Python) ! De plus, pour effectuer plusieurs tests consécutifs, il faut changer à chaque fois le numéro du port source TCP (sport=5467,...) car on ne ferme pas les connexions correctement !+__Attention__ : Il faut effectuer ces commandes rapidement pour éviter un "timeout" du serveur (sinon, le mieux est d'utiliser une fonction Python) ! De plus, pour effectuer plusieurs tests consécutifs, il faut changer à chaque fois le numéro du port source TCP (sport=5467,...) car on ne ferme pas les connexions correctement ! 
 + 
 + 
 +Pour aller plus loin : http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 
 + 
 + 
 + 
 +<code python> 
 +#!/usr/bin/env python 
 + 
 +import sys 
 +from scapy import * 
 + 
 + 
 +### Warning: Do not forget to firewall you host to prevent your kernel 
 +### sending a RST when receiving a SYN ACK for a SYN it knows nothing 
 +### about. 
 +### 
 +### iptables --table filter -A OUTPUT -p tcp --tcp-flags ALL RST --dport 13 -j DROP  
 +### 
 + 
 +### CONNECT ### 
 + 
 + 
 +def connect(dst,dport): 
 + 
 +  print "Opening connection..." 
 + 
 +  seq = RandShort() * 1 
 +  sport = RandShort() * 1 
 + 
 +  print "dst = %s" % dst 
 +  print "seq = %s" % seq 
 +  print "sport = %s" % sport 
 +  print "dport = %s" % dport 
 + 
 +  # SYN 
 +  a = IP(dst=dst)/TCP(sport=sport,dport=dport,seq=seq,flags="S")  
 +  # SYN/ACK 
 +  b = sr1(a,verbose=0)  
 +  # ACK 
 +  c = IP(dst=dst)/TCP(sport=sport,dport=dport,seq=b.ack,ack=b.seq+1,flags="A"
 +  d = sr1(c,verbose=0) 
 +  return d 
 + 
 +### CLOSE ### 
 + 
 +def close(f): 
 + 
 +  print "Closing connection..." 
 + 
 +  # FIN/ACK 
 +  g = IP(dst=dst)/TCP(sport=sport,dport=dport,seq=f.ack,ack=f.seq+1,flags="FA"
 +  # FIN/ACK 
 +  h = sr1(g,verbose=0) 
 +  return 
 + 
 +# Après la fermeture, la connexion est dans un état TIME_WAIT... et il 
 +# faut attendre un peu pour que la fermeture soit effective. C'est 
 +# pourquoi on ne peut pas réutiliser immédiatement le même numéro de 
 +# port source. 
 + 
 + 
 +##################### TEST ##################### 
 + 
 +dport = 13 
 +dst = "192.168.0.1" 
 + 
 +# connect 
 +d = connect(dst,dport) 
 + 
 +print d.load     
 + 
 +# ack 
 +e = IP(dst=dst)/TCP(sport=sport,dport=dport,seq=d.ack,ack=d.seq+len(d.load),flags="A"
 +f = sr1(e,verbose=0) 
 + 
 +# close 
 +close(f) 
 + 
 +</code> 
 + 
 + 
  
-  * https://samsclass.info/124/proj11/proj18-scapy-tcp.html 
rx/tp5-bonus.txt · Last modified: 2024/03/18 15:06 by 127.0.0.1