IGRP(1)

okay bestie, sit down, hydrate, because today we're learning igrp β€” straight out of the General Commands Manual, and she is giving route injector. πŸ’…βœ¨


🌸 NAME 🌸

igrp β€” the igrp route injector. that's the whole name, no notes, iconic. πŸ’–


✨ SYNOPSIS ✨

igrp -i <interface> -v -f <routes file> -a <as number> -S <spoofed
source ip addrs> -D <destination router ip addrs>

like, that's the whole vibe right there. flags on flags on flags. 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so first thing: this manual page is just a brief rundown of the igrp command, bestie, not the whole saga. and the reason it even exists?? it was written for the Debian distribution because the original program literally does not have a manual page. so yeah, we made one. you're welcome. πŸ’–

IGRP is a tool for route injection. the routing protocol IGRP is no longer really widely used in the outside world, but for the first steps, they decided to use this one as a starting point. lowkey a legacy queen but we respect her. πŸ‘‘

the whole purpose β€” the main character energy of this whole program β€” is to define a routing table with all possible parameters by hand, without having your system actually running any kind of dynamic routing, and then send this information out to the routers. no daemons, no drama, just you and your table. periodt. πŸ’…

since IGRP is a broadcast based protocol, the default behavior is to send these messages to the ip broadcast address (255.255.255.255). ✨ but listen β€” if you want to inject a route to a system remote from you, you have to address the 'update' accordingly and make sure that you send the packet(s) with the right source address, so the router accepts the update. do not skip that step, bestie, the router is picky and it will simply not believe you. 😭

πŸŽ€ designing your route table πŸŽ€

before you even touch the tool, you have to design your routing table β€” the one you want to inject in the target router. it should contain data which makes your route the preferred one for the victim. (yes, victim, that's the word in the docs, i'm just the messenger πŸ™ˆ). the format is:

destination:delay:bandwidth:mtu:reliability:load:hopcount

and here's what every single one of those little colon-separated cuties means:

  • destination β€” the network (192.168.1.0) 🌐
  • delay β€” in ms/10 ⏱️
  • bandwidth β€” in MBit per second πŸ“Ά
  • mtu β€” the maximum transfer unit (1500 for ethernet) πŸ“¦
  • reliability and load β€” in percent (255=100%, 1=0%) πŸ’―
  • hopcount β€” just in hops πŸ‡

empty lines and lines beginning with # are ignored. so go ahead and leave yourself little notes, she won't read them. 🧚

πŸ’œ the flags πŸ’œ

  • -i <interface> β€” interface
  • -v β€” verbose
  • -f <routes file> β€” file, which contains the routes (as much as you like)
  • -a <autonomous system> β€” autonomous system the IGRP process is running on, use ASS to find it out or specify a range to use with -a START -b STOP to send updates to all AS from START to STOP (I highly recommend using ASS for this!!)
  • -S <spoofed source IP> β€” maybe you need this
  • -D <destination IP> β€” If you don't specify this, the broadcast address is used
πŸ‘€ heads up: -D not specified = broadcast address, that's the fallback, that's the default, that's the whole deal.

🌈 keeping them persistent 🌈

if you want the routes to be persistent (after some testing around, obviously, we test first, we don't just yolo πŸ’€), make up a shell loop and run the program within this loop every 25-30 seconds, to keep the router believing your routes. it's giving "gaslight, gatekeep, re-inject". πŸ”₯


πŸ‘‘ AUTHOR πŸ‘‘

this manual page was written by Vince Mulhollon <vlm@debian.org>, for the Debian GNU/Linux system (but may be used by others). shoutout to Vince, fr fr. 🫢


and that's the whole page, bestie!! this beauty is dated January 1, 2003 and lives under the IGRP(1) source β€” so if you're reading it, you're reading a certified classic. go inject something responsibly. mwah. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’