User Tools

Site Tools


rx:tp5-bonus

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
rx:tp5-bonus [2016/03/01 09:58] orelrx:tp5-bonus [2024/03/18 15:06] (current) – external edit 127.0.0.1
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.1456826322.txt.gz · Last modified: 2024/03/18 15:05 (external edit)