Règles sur les Flags TCP

Discussion in 'LnS French Forum' started by r_e_endymion, Oct 30, 2006.

Thread Status:
Not open for further replies.
  1. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Bonjour à tous,

    jusqu'à maintenant, dans les jeux de règles de phant0m et de climenole, il y a des règles pour bloquer des paquets TCP ayant des associations de flags considérées comme invalides. La difficulté d'élaboration de ces règles basées sur les flags, vient du fait qu'il faut définir plusieurs règles pour chaque type d'association invalide. Or il y a 6 flags, ce qui nous fait 2^6 = 64 combinaisons possibles. Certes, en utilisant les masques, on peut réduire ce nombre de règles, mais quand même, il faut définir beaucoup de règles.

    Apprenant à utiliser le plugin Raw, il m'est venu l'idée de définir une règle qui a contrario de la méthode précédente, permet de définir les associations de flags autorisées et de bloquer toutes les autres. En fait, il y a deux règles, une pour les paquets sortants, et une autre pour les paquets entrants.

    Je vois 3 avantages à cette démarche :
    Primo, je considère qu'il est plus sûr de définir une liste de choses autorisées qu'un ensemble de choses interdites, car dans le second cas, on risque d'oublier certaines choses et de laisser des failles derrière soit.
    Secundo, avec cette méthode on se retrouve avec seulement 2 règles!
    Tertio, si jamais on a oublié une combinaison valide, il est possible de la rajouter sans ajouter une règle supplémentaire.

    Je me retrouve ainsi avec 2 règles
    1. la première qui autorise les paquets sortants ayant les combinaisons suivantes : Syn, Fin, Rst, Ack, Ack-Psh, Ack-Rst, Ack-Syn, Ack-Fin
    2. la seconde qui autorise les paquets entrants ayant les combinaisons suivantes : Ack, Rst, Ack-Psh, Ack-Psh-Fin, Ack-Rst, Ack-Syn, Ack-Fin

    Ces règles ont été construites de façon quelque peu empirique :
    1. j'ai laissé toutes les règles phant0m de blocage d'associations de flags invalides.
    2. j'ai tracé tous les paquets entrants
    3. j'ai utilisé mes différents logiciels qui communiquent avec l'extérieur (messagerie, browser, etc)
    4. j'ai identifié l'ensemble des associations de flags rencontrés
    5. j'ai mis au point la règle correspondante en bloquant toues les paquets dont les associations de flags ne rentre pas dans la liste de l'étape précédente

    J'ai suivi exactement la même démarche pour les paquets sortants. Puis, une fois ces 2 règles mises au point, j'ai pu supprimer les règles de phant0m pour les associations de Flags TCP invalides.

    N'étant pas un pro du réseau et des RFC, je désirais avoir votre avis sur cette idée ? Est-elle viable ? Qu'en pensez-vous ? Ai-je oublié certaines combinaisons de flags valides ? Y'en a t-il de trop ?

    Voilà, merci d'avance à tous pour vos réponses et avis sur cette question.
     
    Last edited: Oct 30, 2006
  2. Climenole

    Climenole Look 'n' Stop Expert

    Joined:
    Jun 3, 2005
    Posts:
    1,640
    Salut r_e_endymion :)

    Je fait remarque en toute modestie que mes règles de blocage des conminaisons de flags anormales
    sont plus simples et plus complètes que celle de l'"autre"...

    { G.02}; [EB]; [TCP] NULL
    Aucun flag

    { G.03}; [EB]; [TCP] FULL
    Tous les flags

    { G.04}; [EB]; [TCP] FIN & 13 Variantes
    Masque ACK-FIN / Actif FIN

    { G.05}; [EB]; [TCP] SYN RST: 4 Variantes
    Masque ACK-RST-SYN-FIN / Actifs RST-SYN

    { G.06}; [EB]; [TCP] SYN PSH: 2 Variantes
    Masque ACK-PSH-RST-SYN-FIN / actif PSH-SYN

    { G.07}; [EB]; [TCP] SYN URG
    Masque URG-ACK-SYN-FIN / Actif URG-SYN

    La liste complète est sur mon blog...

    Il serait possible de réduire les blocages à deux règles,
    l'une blocant les variantes FIN et l'autre les variantes SYN (Masque ACK-SYN/ Actif SYN)
    mais j'ai renoncé à cela pour permettre l'utilisation de règles pour serveurs.
    Dans ce dernier cas il faut permettre des paquets TCP entrants avec le flag Syn mais bloquer les autres...
    Ce qui fait que les règles de blocage des flags SYN et variantes passent de 1 à 4 en incluant le blocage des SYN entrants...

    C'est moins élégant mais je n'ai pas eu le choix...

    (Quand j'ai constaté l'impossibilité de les réduire à 2 règles,
    ça m'avais déprimé pour une bonne semaine... :-((( )



    Tout à fait...
    Sans utiliser l'édition "raw" je suis arrivé, je crois au minimum possible en tenant compte de la contrainte "serveur":
    pour l'IDENT par exemple, pour des serveurs web ou Ftp de même que les bidules p2p...
    La flexibilité des règles a prévalue sur leur élégance... :-((((

    OK. Très intéressant !!!

    OK mais "Primo" est discutable ...

    OK, mais moins sûr en ce qui concerne ack-Psh-Fin... une combinaison rare je crois...
    (Ça reste à vérifier: je dis cela "au pif"....)

    Ne serait-ce pas mieux de prendre la chose par l'autre bout?
    à partir du handshake normal entre un client et un serveur...

    Tout ce qui ne fait pas partie de ce handshake est réputé illégal ou anormal ...
    Non? ;)


    Pas d'autre idée pour le moment.
    Je n'ai pas encore fouillé la question de l'édition "raw" si bien que je ne peux t'en dire davantage.
    Tu en sais beaucoup plus que moi sur cela.


    A+

    `)
     
  3. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Salut Climenole,

    c'est toujours un plaisir de te lire sur ce forum.

    je reconnais bien là, ta modestie... ;-)
    sinon, je sui d'accord que tu as cherché à optimiser ton jeu de règle afin de ne pas multiplier les règles inutiles.

    Mais non, mais non, il ne faut pas déprimer pour un petit rien... la solution la plus élégante n'est pas toujours applicable voir la plus performante, et dans ces cas là, il ne faut pas se tracasser et faire ce qu'il y à faire...
    je suis comme toi, je recherche toujours à me rapprocher de l'élégance de la simplicité qui bien souvent permet d'eviter des erreurs et d'alourdir inutilement la compréhension de quelque chose... mais, il y a toujours des exceptions...

    Oui, je suis d'accord avec toi... mon primo est discutable, mais concernant le cas des Flags TCP, je pense qu'il est assez facile, avec l'approche négative, d'oublier un cas de figure (attention, je ne dis pas que tu as oublié un cas de figure dans tes règles)... alors qu'avec l'approche positive, tu sais exactement ce qu'il faut laisser passer, et tu bloques tout le reste! enfin bref, ces 2 philosophies sont complémentaires, et j'utilise les 2 au quotidien.

    je vais le retirer de la liste que j'autorise et voir si j'y suis souvent confronté, mais en tout cas, je l'ai rencontré au moins une fois pour le voir apparaître dans ma liste, et en faisant des opérations basiques sur des sites on ne peut plus normaux...

    Oui, tu as raison, mais comme je le soulignais au début de mon topic, je ne suis pas un pro des RFC et du handshake... donc, j'ai procédé de façon empirique ce qui m'a permis de tomber sur le cas Ack-Psh-Fin qui n'était pas cité sur ton site par exemple... bah oui, ton site est une source permanente d'inspiration pour moi, et pour de nombreux autres utilisateurs de LNS, et je m'y reporte assez fréquemment (et pas que pour la climenole girl)...

    En tout cas, j'arriverais peut-être à améliorer ces règles et à les affiner au fur et à mesure. Je vais chercher plus d'infos sur le handshake et on verra bien.
     
  4. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Bon, après un court essai, l'association Ack-Psh-Fin semble être assez fréquente, sur mon PC en tout cas, quand je surfe sur ce forum, par exemple...
    je vais quand même investiguer pour en savoir un peu plus sur cette association de Flag!
     
  5. Climenole

    Climenole Look 'n' Stop Expert

    Joined:
    Jun 3, 2005
    Posts:
    1,640
    Salut r_e_endymion :)

    La combinaison ack-psh-fin ne se produirait-elle pas lors de l'utilisation d'une application en "stream" comme un web radio par exemple? à part de ça je ne vois pas... (ou j'ai pas mis mes lunettes...) :eek:

    Pour le handshake voir ce site très bien fait:
    http://www.frameip.com/entete-tcp/

    Pour étudier de près les paquets bloqués ou non par LNS:
    Packetyzer
    http://www.networkchemistry.com/products/packetyzer.php

    A+
    :)
     
  6. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Je n'utilise pas d'application stream. Tout ce que je peux dire, c'est que je surfe en utilisant l'application privoxy comme proxy logiciel pour filtrer les pubs, etc... peut-être que ce logiciel influe sur l'échange des requêtes finales, ou peut-pas, je ne suis pas à même de juger.

    Sinon, je rencontre la combinaison ack-psh-fin en surfant sur le site de ce forum (65.175.38.194). Ce sont des paquets entrants qui semblent correspondrent à des réponses de requêtes HTTP.
    Voici un exemple des données visibles dans LNS avec cette combinaison.
    0000:20 6F 6E 63 6C 69 63 6B onclick
    0008:3D 22 73 65 6C 66 2E 73 ="self.s
    0010:63 72 6F 6C 6C 54 6F 28 crollTo(
    0018:30 2C 20 30 29 3B 20 72 0, 0); r
    0020:65 74 75 72 6E 20 66 61 eturn fa
    0028:6C 73 65 3B 22 3E 54 6F lse;">To
    0030:70 3C 2F 61 3E 0D 0A 09 p</a>...
    0038:09 09 3C 2F 73 74 72 6F ..</stro
    0040:6E 67 3E 0D 0A 09 09 3C ng>....<
    0048:2F 64 69 76 3E 0D 0A 09 /div>...
    0050:3C 2F 74 64 3E 0D 0A 3C </td>..<
    0058:2F 74 72 3E 0D 0A 3C 2F /tr>..</
    0060:74 61 62 6C 65 3E 0D 0A table>..
    0068:0D 0A 3C 62 72 20 2F 3E ..<br />
    0070:0D 0A 0D 0A 3C 64 69 76 ....<div
    0078:20 61 6C 69 67 6E 3D 22 align="
    0080:63 65 6E 74 65 72 22 3E center">
    0088:0D 0A 09 3C 64 69 76 20 ...<div
    0090:63 6C 61 73 73 3D 22 73 class="s
    0098:6D 61 6C 6C 66 6F 6E 74 mallfont
    00A0:22 20 61 6C 69 67 6E 3D " align=
    00A8:22 63 65 6E 74 65 72 22 "center"
    00B0:3E 0D 0A 09 3C 21 2D 2D >...<!--
    00B8:20 44 6F 20 6E 6F 74 20 Do not
    00C0:72 65 6D 6F 76 65 20 74 remove t
    00C8:68 69 73 20 63 6F 70 79 his copy
    00D0:72 69 67 68 74 20 6E 6F right no
    00D8:74 69 63 65 20 2D 2D 3E tice -->
    00E0:0D 0A 09 50 6F 77 65 72 ...Power
    00E8:65 64 20 62 79 20 76 42 ed by vB
    00F0:75 6C 6C 65 74 69 6E 20 ulletin
    00F8:56 65 72 73 69 6F 6E 20 Version
    0100:33 2E 35 2E 33 3C 62 72 3.5.3<br
    0108:20 2F 3E 43 6F 70 79 72 />Copyr
    0110:69 67 68 74 20 26 63 6F ight &co
    0118:70 79 3B 32 30 30 30 20 py;2000
    0120:2D 20 32 30 30 36 2C 20 - 2006,
    0128:4A 65 6C 73 6F 66 74 20 Jelsoft
    0130:45 6E 74 65 72 70 72 69 Enterpri
    0138:73 65 73 20 4C 74 64 2E ses Ltd.
    0140:0D 0A 09 3C 21 2D 2D 20 ...<!--
    0148:44 6F 20 6E 6F 74 20 72 Do not r
    0150:65 6D 6F 76 65 20 74 68 emove th
    0158:69 73 20 63 6F 70 79 72 is copyr
    0160:69 67 68 74 20 6E 6F 74 ight not
    0168:69 63 65 20 2D 2D 3E 0D ice -->.
    0170:0A 09 3C 2F 64 69 76 3E ..</div>
    0178:0D 0A 09 0D 0A 09 3C 64 ......<d
    0180:69 76 20 63 6C 61 73 73 iv class
    0188:3D 22 73 6D 61 6C 6C 66 ="smallf
    0190:6F 6E 74 22 20 61 6C 69 ont" ali
    0198:67 6E 3D 22 63 65 6E 74 gn="cent
    01A0:65 72 22 3E 0D 0A 09 3C er">...<
    01A8:21 2D 2D 20 44 6F 20 6E !-- Do n
    01B0:6F 74 20 72 65 6D 6F 76 ot remov
    01B8:65 20 20 6F 72 20 79 6F e or yo
    01C0:75 72 20 73 63 68 65 64 ur sched
    01C8:75 6C 65 64 20 74 61 73 uled tas
    01D0:6B 73 20 77 69 6C 6C 20 ks will
    01D8:63 65 61 73 65 20 74 6F cease to
    01E0:20 66 75 6E 63 74 69 6F functio
    01E8:6E 20 2D 2D 3E 0D 0A 09 n -->...
    01F0:0D 0A 09 3C 21 2D 2D 20 ...<!--
    01F8:44 6F 20 6E 6F 74 20 72 Do not r
    0200:65 6D 6F 76 65 20 20 6F emove o
    0208:72 20 79 6F 75 72 20 73 r your s
    0210:63 68 65 64 75 6C 65 64 cheduled
    0218:20 74 61 73 6B 73 20 77 tasks w
    0220:69 6C 6C 20 63 65 61 73 ill ceas
    0228:65 20 74 6F 20 66 75 6E e to fun
    0230:63 74 69 6F 6E 20 2D 2D ction --
    0238:3E 0D 0A 09 0D 0A 09 0D >.......
    0240:0A 09 3C 2F 64 69 76 3E ..</div>
    0248:0D 0A 3C 2F 64 69 76 3E ..</div>
    0250:0D 0A 0D 0A 3C 2F 66 6F ....</fo
    0258:72 6D 3E 0D 0A 0D 0A 0D rm>.....
    0260:0A 3C 73 63 72 69 70 74 .<script
    0268:20 74 79 70 65 3D 22 74 type="t
    0270:65 78 74 2F 6A 61 76 61 ext/java
    0278:73 63 72 69 70 74 22 3E script">
    0280:0D 0A 3C 21 2D 2D 0D 0A ..<!--..
    0288:09 2F 2F 20 4D 61 69 6E .// Main
    0290:20 76 42 75 6C 6C 65 74 vBullet
    0298:69 6E 20 4A 61 76 61 73 in Javas
    02A0:63 72 69 70 74 20 49 6E cript In
    02A8:69 74 69 61 6C 69 7A 61 itializa
    02B0:74 69 6F 6E 0D 0A 09 76 tion...v
    02B8:42 75 6C 6C 65 74 69 6E Bulletin
    02C0:5F 69 6E 69 74 28 29 3B _init();
    02C8:0D 0A 2F 2F 2D 2D 3E 0D ..//-->.
    02D0:0A 3C 2F 73 63 72 69 70 .</scrip
    02D8:74 3E 0D 0A 0D 0A 3C 2F t>....</
    02E0:62 6F 64 79 3E 0D 0A 3C body>..<
    02E8:2F 68 74 6D 6C 3E /html>

    Packetyzer affiche pour ces paquets l'information "HTTP:Continuation or non HTTP Traffic."

    Je précise que je reçois des paquets ayant cette combinaison pour d'autres sites également.

    Je serais intéressé de savoir si d'autres reçoivent cette combinaison afin de savoir si je suis un cas isolé ou non.
    Si certains d'entre vous pouvaient créer une règle qui trace ces paquets sans les bloquer en décochant la flèche jaune vers le bas et me tenir informé, je leur en serais reconnaissant.

    A+
     
    Last edited: Oct 31, 2006
  7. Climenole

    Climenole Look 'n' Stop Expert

    Joined:
    Jun 3, 2005
    Posts:
    1,640
    Salut r_e_endymion :)

    Pour l'histoire du "stream" je disais ça "au pif"...
    Il semble en effet que cela soit une combinaison assez courante.

    Donc pas de problème de ce côté.

    A+
    :)
     
  8. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Salut Climenole,

    ça confirme ce que je soupçonnais vu le contenu de ces paquets ayant cette combinaison... mais c'est toujours réconfortant d'avoir une confirmation.

    @+
     
    Last edited: Oct 31, 2006
  9. Climenole

    Climenole Look 'n' Stop Expert

    Joined:
    Jun 3, 2005
    Posts:
    1,640
    Salut r_e_endymion :)

    OK.

    D'un aute côté, une nouvelle version du plug-in raw edition serait la bienvenue...

    [Ça va donner du boulot à Frédéric!!! ;) ]

    Si c'est "buggé" cela peut induire l'utilisateur en erreur alors que les règles sont correctes...

    Tu es notre beta testeur de l'édition "raw" !

    A+

    :)
     
  10. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Il n'y a pas de souci, c'est vrai que j'utilise pas mal ce plugin, et je suis prêt à faire des tests poussés dessus quand Frédéric nous sortira une nouvelle version, voir même s'il veut m'en faire parvenir une version avant de la libérer pour tous.

    Pour le moment, la seule 'véritable' anomalie concerne les critères se trouvant en dessous de NOTMASK_VALUE1 dû à des problèmes d'initialisation au chargement du jeu de règle.

    Conclusion, ce plugin est fiable tant que l'on n'utilise pas ces critères.

    N'hésitez pas à l'utiliser et à l'apprécier.

    @+
     
  11. r_e_endymion

    r_e_endymion Registered Member

    Joined:
    Sep 26, 2006
    Posts:
    35
    Location:
    France
    Pour ceux qui seraient intéressés, voici le fichier qui vous permettra d'importer ces 2 règles (renommer le .txt en .rie).
    Mon PC n'étant pas serveur, ce cas n'est pas géré par ces règles, donc c'est à chacun de les utiliser comme il l'entend et de les adapter à son besoin.

    Salut à tous.

    Rajout:
    Dans ces 2 règles, je bloque les mauvais cas par un ET sur la Négation de chaque cas autorisé.
    Dans un autre de mes posts, j'utilisais le même principe! J'avais 2 autres règles qui étaient placées au début de mon jeu de règle pour bloquer sans tracer :
    - tout ce qui n'est pas IPv4 et ARP
    - tout ce qui n'est pas TCP, UDP et ICMP
    ça évite d'avoir à balayer tout le jeu de règles pour arriver à la dernière règle de blocage final, et ça allége les traces.
    biensûr entre ces 2 règles, j'avais mes règles de gestions des paquets ARP, sinon, en arrivant à la seconde règle, j'aurais bloqué tous mes paquets ARP.
    Pour plus d'infos, aller voir mon autre post "Idée de premières règles"

    Si ça peut vous donner des idées, n'hésitez surtout pas à les partager ensuite sur ce forum!
     

    Attached Files:

    Last edited: Nov 2, 2006
Thread Status:
Not open for further replies.