Re: Any way to automatically change arbitrary headers of IP packets on-the-fly?
G P <[email protected]> Mon, 18 Apr 2005 18:50:42 -0700 (PDT)
| Newsgroups | gmane.comp.security.linux,gmane.comp.security.penetration,gmane.comp.security.vulnerabilities,gmane.comp.security.libnet,gmane.comp.security.basics |
|---|---|
| Message-ID | <[email protected]> |
Use NetSED: http://www.mirrors.wiretapped.net/security/packet-construction/netsed/netsed-README.txt --- João Paulo Caldas Campello <[email protected]> wrote: > On 4/14/05, [email protected] > <[email protected]> wrote: > > > Currently, iptables doesn't seem to support that, > probably to keep you from > > shooting yourself in the foot. Consider for > example how fast the kernel will > > fold up if you change that first nybble of the > packet from an x'4' to an x'6' > > without changing the rest of the packet to match. > Suddenly, that sk_buff is > > a lot too short.. ;) > > Yeah, maybe, who knows :P > > Well, I've did some searching last days and found a > couple ways to > achieve what I've described in my email. > > One is using "DIVERT sockets" and other is the use > of the "-j QUEUE" > target of iptables/netfilter. Both approaches are > similar: you match a > packet using iptables to flush them to userspace, > where you can mangle > the entire packet as you like and send it back to > iptables, who will > put it again onto the stack. > > The "-j QUEUE" approach is manipulated through the > "libipq" API: > > - netfilter can feed userspace using IPQUEUE: > * > http://www.crhc.uiuc.edu/~grier/projects/libipq.html > > - Perl: > * http://www.intercode.com.au/jmorris/perlipq/ > > - Python: > * http://woozle.org/~neale/src/ipqueue/ > > As you can see, there's already libraries written in > Perl and Python > to query IPQUEUE, so the effort of writing userspace > code to deal with > IP packets wiil be much more easier. > > That's it =) > > Cheers, > > João Paulo. >