Groupe 7: Remote Buffer Overflow. Attaque sur lpd, démon de l’imprimante. Berteletti Elia, ELEC23 Bodart Jerome, INFO 23 Depoterre Jean-Charles, INFO23 Janssens David, INFO 22
Techniques de détection zBut: essayer de détecter le shellcode dans un paquet circulant sur le réseau destiné au port 515 (lpd). zMais: le shellcode peut être facilement modifiable yrisques de False Negatives si on désire détecter un pattern « trop long ». zDonc: trouver un pattern « court » mais commun à tout shellcode.
Techniques de détection (2) zProblème: risque d’envoi de fichiers à imprimer contenant des suites binaires générant des False Positives. zPlus le pattern est court, plus ce risque augmente. zPlus le pattern est long, plus le risque d ’avoir des False Negatives augmente. – Besoin de compromis
Signatures SNORT zSignatures existantes: zalert tcp any any -> / z(msg:"EXPLOIT LPRng overflow"; flags: A+; z content: "/ B 08 8D 4B C B0 0B CD C0 FE C0 CD 80 E8 94 FF FF FF 2F E 2F A/"; reference:bugtraq,1712;) zalert tcp any any -> / z(msg:"EXPLOIT redhat 7.0 lprd overflow"; flags: A+; z content:"| E E|";) zalert tcp any any -> /24 any z(msg:"EXPLOIT linux shellcode"; flags: A+; zcontent: "| e8 c0 ff ff ff|/bin/sh"; z reference:arachnids,342;)
Critique zAucune de ces signatures ne détecte notre attaque. yPourquoi? Les patterns que ces signatures essayent de détecter sur les paquets circulant sur le réseau correspondent à un exploit très proche de SEClpd mais dont le shellcode est légèrement différent. –Réécriture des signatures
Signatures maison zalert tcp any any -> / z(msg:"EXPLOIT SEClpd bin/sh"; flags: A+; zcontent: "|ff ff ff|/bin/sh";) zFalse Positives ypar ex: envoi d’un fichier à l’impression contenant exactement ce string zFalse Negatives yil suffit de changer /bin/sh par /bin/csh ou /bin/bash dans le shellcode de SEClpd
Signatures maison (2) zalert tcp any any -> / z(msg:"TEST, shellcode de SEClpd sur port 515" ; content: "| DB 31 C9 31 C0 B0 46 CD E5 31 D2|";) zFalse Positives ypar ex: envoi d’un fichier à l’impression contenant exactement ce string ytrès peu probable étant donné la longueur du pattern zFalse Negatives yil suffit de changer le shellcode dans SEClpd, en ajoutant par ex. des NOP: le shellcode s’exécute de la même façon mais le pattern ne correspond plus.
Signatures maison (3) zalert tcp any any -> / z(msg:"TEST, shellcode de SEClpd sur port 515" ; content: "|CD 80|";) zFalse Positives ypar ex: envoi d’un fichier à l’impression contenant exactement ce string yplus probable étant donné la longueur du pattern ? zFalse Negatives yl’instruction CD 80 (appel système sur x86) est indissociable et indispensable dans ce genre d ’attaque. Le risque de false negatives devient quasi-inexistant.