OVH Cloud OVH Cloud

Scapy en Perl: Scaperl

11 réponses
Avatar
Sylvain SARMEJEANNE
Bonjour,
Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est
basé sur PCAP et la libdnet. Il a été testé sur NetBSD, GNU/Linux
et Windows XP et devrait normalement aussi fonctionner sur d'autres
plate-formes (FreeBSD, OpenBSD, Mac OS X ou les Unix propriétaires).

Le but est d'avoir une implémentation minimale, portable et efficace
des concepts de Scapy (écrit en Python) avec un code commenté et
documenté.

C'est la première version publique, peu de dissectors et de champs ont
été implémentés pour l'instant.

Ceux que ça intéresse peuvent allez jeter un oeil à
http://sylvainsarmejeanne.free.fr/projects/scaperl pour plus d'infos et
pour la doc.

Sylvain SARMEJEANNE

10 réponses

1 2
Avatar
Kevin Denis
Le 06-11-2006, Sylvain SARMEJEANNE a écrit :
Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est basé sur PCAP et la libdnet.


Que peut faire sca[py|perl] que ne peut pas faire hping + ethereal?
(C'est une vraie question)
--
Kevin

Avatar
Damien \zaide\ Desmarets
Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est basé sur PCAP et la libdnet.


Que peut faire sca[py|perl] que ne peut pas faire hping + ethereal?
(C'est une vraie question)


Un outil de fuzzing rapide à développer ?
PS: j'ai pas regardé la lib ;) je dis ca au filling


Avatar
Vincent Bernat
OoO En ce début d'après-midi ensoleillé du mardi 07 novembre 2006,
vers 15:26, Kevin Denis disait:

Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est basé sur PCAP et la libdnet.


Que peut faire sca[py|perl] que ne peut pas faire hping + ethereal?
(C'est une vraie question)


Le fait de scripter en Python (ou en Perl) est beaucoup plus
pratique. hping sait aussi générer des paquets arbitraires, mais avec
Scapy, tu peux facilement manipuler le payload (faire de l'IP dans de
l'IP dans de l'UDP, dans de l'IP dans de l'Ethernet). Regarde la page
de Scapy, elle fourmille d'exemples sur les trucs que tu peux faire.
--
BOFH excuse #338:
old inkjet cartridges emanate barium-based fumes


Avatar
Sylvain SARMEJEANNE

Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est basé sur PCAP et la libdnet.


Que peut faire sca[py|perl] que ne peut pas faire hping + ethereal?
(C'est une vraie question)
--
Kevin


Je te renvoie à la page de Scapy, au paragraphe "What makes scapy
different from most other networking tools" :

http://www.secdev.org/projects/scapy/

Sylvain SARMEJEANNE


Avatar
Nicob
On Mon, 06 Nov 2006 12:34:15 +0000, Sylvain SARMEJEANNE wrote:

Le but est d'avoir une implémentation minimale, portable et efficace
des concepts de Scapy (écrit en Python) avec un code commenté et
documenté.


Commenté et documenté ? Yeah, ce serait un grand pas par rapport à
l'original, qui est excellent mais pour le moins peu documenté.

Et ce qui m'a fait rire en voyant ce post, c'est que certains avaient
déjà envisagé l'existence d'un port Ruby, mais pas Perl ;-)) Perl rulez !

http://teh-win.blogspot.com/2006/08/blackhat-metasploit-et-teh-win.html


Nicob

Avatar
Kevin Denis
Le 08-11-2006, Sylvain SARMEJEANNE a écrit :
Scaperl est un outil permettant de créer des paquets réseaux à la
main, de les envoyer, ainsi que d'écouter sur une interface. Ecrit en
Perl, il est basé sur PCAP et la libdnet.


Que peut faire sca[py|perl] que ne peut pas faire hping + ethereal?
(C'est une vraie question)


Je te renvoie à la page de Scapy, au paragraphe "What makes scapy
different from most other networking tools" :

http://www.secdev.org/projects/scapy/

C'est justement ce qui me fait m'interroger:

-First you won't build someting the author did not imagine.
Avec hping, si. Tout les champs sont modifiable, padding compris.
-Second, they usually confuse decoding and interpreting:
avec ethereal, aucune interpretation n'est faite. Le paquet est sous nos
yeux.
-Third, even programs which only decode do not give you all the
information they received:
ethereal affiche le paquet dans son integralite.

Par contre est il possible de scenariser scaperl?
Par exemple j'envoie le paquet A, si j'obtiens une reponse de tel type,
j'envoie le paquet B, sinon le paquet B'. Puis en fonction de la
reponse, etc.. ?
--
Kevin



Avatar
Eric Razny
Le Fri, 10 Nov 2006 10:52:05 +0000, Kevin Denis a écrit :

http://www.secdev.org/projects/scapy/

C'est justement ce qui me fait m'interroger:

-First you won't build someting the author did not imagine.


Et ça ne va pas non? :)
Si je te copie la "vrai" phrase c'est :

"First, *with most other tools*, you won't build someting the author did
not imagine."

Ce qu'il y a entre les deux virgules n'est pas pour faire joli!


-Second, they usually confuse decoding and interpreting:
avec ethereal, aucune interpretation n'est faite. Le paquet est sous nos
yeux.


Rien ne t'empêche d'utiliser wireshark -ethereal n'est plus- (ou un
simple tcpdump et différer l'analyse) en sus des autres outils. C'est
d'ailleurs ce que tu sufférais avec hping.

Par contre est il possible de scenariser scaperl?
Par exemple j'envoie le paquet A, si j'obtiens une reponse de tel type,
j'envoie le paquet B, sinon le paquet B'. Puis en fonction de la
reponse, etc.. ?


Ben c'est l'interêt d'un langage de prog associé à un outil...


Avatar
Nicob
On Fri, 10 Nov 2006 10:52:05 +0000, Kevin Denis wrote:

avec ethereal, aucune interpretation n'est faite.
Le paquet est sous nos yeux.


Hum, Wireshark (ex-Ethereal) interprète énormément. C'est d'ailleurs
toute sa force (extrêmement pratique pour analyser un paquet) et sa
faiblesse (grande surface d'attaque et nombreuses failles de sécurité)
vis à vis de tcpdump.

Nicob

Avatar
Sylvain SARMEJEANNE
C'est justement ce qui me fait m'interroger:
-First you won't build someting the author did not imagine.
Avec hping, si. Tout les champs sont modifiable, padding compris.


A ma connaissance, hping ne gère que IP, ICMP, TCP et UDP avec une
charge utile. L'intérêt de Scap{y,erl} est de pouvoir construire
très facilement des dissecteurs pour d'autres protocoles, typiquement
les protocoles "applicatifs", en utilisant différents champs (octet,
entier, entier long, ou des champs spécialisés comme "adresse IP" ou
"nom NetBIOS").

Par contre est il possible de scenariser scaperl?
Par exemple j'envoie le paquet A, si j'obtiens une reponse de tel type,
j'envoie le paquet B, sinon le paquet B'. Puis en fonction de la
reponse, etc.. ?


Tout à fait, voir la section "Scripting Scaperl" dans la documentation
où je donne un exemple d'utilisation de Scaperl dans un script Perl
externe.

Sylvain SARMEJEANNE

Avatar
Kevin Denis
Le 12-11-2006, Nicob a écrit :

avec ethereal, aucune interpretation n'est faite.
Le paquet est sous nos yeux.


Hum, Wireshark (ex-Ethereal) interprète énormément.


Il y a une fenetre avec l'interpretateur, qui a ses defauts (par exemple
des flux afs montres comme RUDP ou cisco protocol), mais il y a aussi le
dump hexa du paquet. Et en cas de doute, celui ci fera foi.

C'est d'ailleurs
toute sa force (extrêmement pratique pour analyser un paquet) et sa
faiblesse (grande surface d'attaque et nombreuses failles de sécurité)
vis à vis de tcpdump.

Il faudrait quand meme etre sacrement vicieux lors d'une attaque

reseau pour envoyer au milieu des paquets faisant crasher wireshark.

--
Kevin


1 2