Build your own Network packets
Ever worried about these disgusting packets leaving your network interface!? Why not creating your own packets?
Of course it’s more than nonsense creating all packets on your own, but sometimes there might be a reason making you wish you could..
For ex. for my last article I searched for a possibility to modify some contents of a packet. First I thought about using iptables
, but than I found a nice tool: scapy!
With scapy
you can create your own packets, IP/TCP/UDP whatever! It is very heavy but comes with an user-friendly interface. Using Debian/Ubuntu you need to install python-scapy
:
aptitude install python-scapy
To open the interface just run scapy
. You can easily create an IP packet by typing something like this:
>>> ippacket=IP()
>>> ippacket.dst='binfalse.de'
>>> ippacket.ttl=12
>>> ippacket
<IP ttl=12 dst=Net('binfalse.de') |>
So an IP packet is stored in the variable ippacket
. This packet will be send to binfalse.de
and has a ttl
of 12
(if there are more than 12 network nodes between your machine and the target it will disappear and never arrive at the target).
Let’s create some TCP stuff:
>>> tcpcrap=TCP()
>>> tcpcrap.sport=1337
>>> tcpcrap.dport=80
>>> tcpcrap
<TCP sport=1337 dport=www |>
We stored some TCP information in tcpcrap
. This packet will be send through your port 1337
and hopefully arrive at port 80
(in general a webserver is listening on port 80
).
That’s it for the networking part. Last but not least we will create some data to send:
>>> data='GET / HTTP/1.1 \\nHost: binfalse.de\\n\\n'
>>> data
'GET / HTTP/1.1 \\nHost: binfalse.de\\n\\n'
Combining all parts we’ll get a very nice packet, sending it will trigger my webserver to send the main page of my website (Sending exactly this packet won’t ever result in any website from my webserver. Why? Just think about…):
>>> whole=ippacket/tcpcrap/data
>>> whole
<IP frag=0 ttl=12 proto=tcp dst=Net('binfalse.de') |<TCP sport=1337 dport=www |<Raw load='GET / HTTP/1.1 \\nHost: binfalse.de\\n\\n' |>>>
>>> send(whole)
.
Sent 1 packets.
Well done! Ok, that’s very much to do. But fortunately it’s just that much code for explanation, you can send the same packet in a single line:
>>> send(IP(ttl=12,dst='binfalse.de')/TCP(sport=1337,dport=80)/'GET / HTTP/1.1 \\nHost: binfalse.de\\n\\n')
.
Sent 1 packets.
Very smart, isn’t it? You can also sniff whooshing packets! But something like this I won’t explain, find out by yourself ;-)
- analyzed (15) ,
- aptitude (13) ,
- crazy (8) ,
- debian (38) ,
- explained (42) ,
- hacked (25) ,
- network (81) ,
- remote (22) ,
- trick (61)
Leave a comment
There are multiple options to leave a comment: