home *** CD-ROM | disk | FTP | other *** search
-
- ---[ Phrack Magazine Volume 7, Issue 51 September 01, 1997, article 07 of 17
-
-
- -------------------------[ Juggernaut 1.2 update
-
-
- --------[ route <route@infonexus.com>
-
-
-
- Well, Juggernaut went out, and the bug reports came in...
- Juggernaut, the robust network tool for Linux, originally went out in Phrack
- 50. This patchfile updates Juggernaut 1.0 (the version in P50-06) to version
- 1.2. It offers the following:
-
- - Nonfunctional things like nomenclature and cosmetics.
- - The IFF_PROMISC flag is unset upon exit. Previously the program would
- leave the network interface in promiscuous mode.
- - We no longer are interested in HTTP connections (unless -DGREED is
- defined).
- - Connection Spying now works properly.
- - Connection RSTing and Automated connection RSTing now work better.
-
-
- Please keep the bug reports coming in!
-
- To extract this patchfile, use the included extraction utility to remove
- the patchfile from the article. Then simply copy it into the Juggernaut
- directory and `patch < juggernaut_1.0-1.2_patch`
-
- <++> juggernaut_1.0-1.2_patch
-
- --- NumberOneCrush/main.c Thu May 8 15:37:02 1997
- +++ NumberOneCrush/main.c Fri Jun 6 01:33:42 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b2
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- @@ -42,7 +42,7 @@
- #define DEVICE "eth0"
- #define LOGFILE "./juggernaut.log.spy"
-
- -char version[]="1.0\0";
- +char version[]="1.2";
- int sigsentry=1; /* Signal sentry */
- int ripsock=0; /* RIP socket */
- int linksock=0; /* SOCK PACKET socket */
- @@ -96,8 +96,8 @@
- char buf[MINIBUF]={0};
- char token[2*MINIBUF]={0};
- int c;
- -
- - if(geteuid()||getuid()){ /* r00t? */
- +
- + if(geteuid()||getuid()){ /* r00t? */
- fprintf(stderr,"UID or EUID of 0 needed...\n");
- exit(0);
- }
- @@ -279,7 +279,7 @@
- fgets(buf,sizeof(buf),stdin);
- if(buf[0]==0x0a||buf[0]=='q')return;
- if(!(int)(val=atoi(buf)))continue;
- - if(!(target=checkc(val)))fprintf(stderr,"Connection not in queue.\n");
- + if(!(target=checkc(val)))fprintf(stderr,"Connection not in database.\n");
- else break;
- }
- fprintf(stderr,"\nDo you wish to log to a file as well? [y/N] >");
- @@ -324,7 +324,7 @@
- fgets(buf,sizeof(buf),stdin);
- if(buf[0]==0x0a||buf[0]=='q')return;
- if(!(int)(val=atoi(buf)))continue;
- - if(!(target=checkc(val)))fprintf(stderr,"Connection not in queue.\n");
- + if(!(target=checkc(val)))fprintf(stderr,"Connection not in database.\n");
- else break;
- }
- signal(SIGINT,convulsion);
- @@ -440,7 +440,7 @@
-
- fprintf(stderr,"Juggernaut %s route@infonexus.com [guild 1996/7]\n",version);
-
- - fprintf(stderr,"\nJuggernaut compiled with the following options:\n");
- + fprintf(stderr,"\nBuilt on %s %s with the following options:\n",__DATE__,__TIME__);
- #ifdef MULTI_P
- fprintf(stderr," Multi-processing\n");
- #endif
- @@ -501,7 +501,7 @@
- fgets(buf,sizeof(buf),stdin);
- if(buf[0]==0x0a||buf[0]=='q')return;
- if(!(int)(val=atoi(buf)))continue;
- - if(!(target=checkc(val)))fprintf(stderr,"Connection not in queue.\n");
- + if(!(target=checkc(val)))fprintf(stderr,"Connection not in database.\n");
- else break;
- }
- if(ntohs(target->dport)!=23){
- @@ -547,7 +547,7 @@
- fgets(buf,sizeof(buf),stdin);
- if(buf[0]==0x0a||buf[0]=='q')return;
- if(!(int)(val=atoi(buf)))continue;
- - if(!(target=checkc(val)))fprintf(stderr,"Connection not in queue.\n");
- + if(!(target=checkc(val)))fprintf(stderr,"Connection not in database.\n");
- else break;
- }
- if(ntohs(target->dport)!=23){
- --- NumberOneCrush/mem.c Thu May 8 15:37:02 1997
- +++ NumberOneCrush/mem.c Fri Jun 6 01:33:09 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b1
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- --- NumberOneCrush/menu.c Thu May 8 15:37:02 1997
- +++ NumberOneCrush/menu.c Fri Jun 6 01:33:32 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b2
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- --- NumberOneCrush/net.c Thu May 8 15:37:02 1997
- +++ NumberOneCrush/net.c Fri Jun 6 01:32:56 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b1
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- @@ -92,13 +92,14 @@
- * mode.
- */
-
- -int tap(device)
- +int tap(device,mode)
- char *device;
- +int mode;
- {
-
- int fd;
- struct ifreq ifr; /* Link-layer interface request structure */
- - /* Ethernet code for IP 0x800==ETH_P_IP */
- + /* Ethernet code for IP 0x0800==ETH_P_IP */
- if((fd=socket(AF_INET,SOCK_PACKET,htons(ETH_P_IP)))<0){
- if(verbosity)perror("(tap) SOCK_PACKET allocation problems [fatal]");
- exit(1);
- @@ -109,16 +110,22 @@
- close(fd);
- exit(1);
- }
- - ifr.ifr_flags|=IFF_PROMISC; /* Set promiscuous mode */
- + if(!mode)ifr.ifr_flags^=IFF_PROMISC; /* Unset promiscuous mode */
- + else ifr.ifr_flags|=IFF_PROMISC; /* Set promiscuous mode */
- if((ioctl(fd,SIOCSIFFLAGS,&ifr))<0){ /* Set flags */
- - if(verbosity)perror("(tap) Can't set promiscuous mode [fatal]");
- + if(verbosity)perror("(tap) Can't set/unset promiscuous mode [fatal]");
- close(fd);
- exit(1);
- }
- - return(fd);
- + if(!mode){
- + close(fd);
- + return(0);
- + }
- + else return(fd);
- }
-
-
- +
- /*
- * Gimme a raw-IP socket. Use of IP_HDRINCL is automatic with 2.0.x
- * kernels. Not sure about 1.2.x
- @@ -197,7 +204,6 @@
- case 22:
- case 23:
- case 25:
- - case 80:
- case 513:
- case 6667:
- if(((int)msg=addc(iphp,tcphp)))if(verbosity)fprintf(stderr,"%c%s",0x08,msg);
- @@ -235,7 +241,6 @@
- case 22:
- case 23:
- case 25:
- - case 80:
- case 513:
- case 6667:
- if(((int)msg=delc(iphp,tcphp)))if(verbosity)fprintf(stderr,"%c%s",0x08,msg);
- @@ -261,7 +266,7 @@
- void dumpp(char *,int,FILE *);
-
- extern int sigsentry;
- - int tlinksock=tap(DEVICE); /* Spying tap. XXX- Really dumb way to do this... */
- + int tlinksock=tap(DEVICE,1); /* Spying tap. XXX- Really dumb way to do this... */
- time_t tp;
-
- ALIGNNETPOINTERS();
- @@ -272,20 +277,14 @@
- time(&tp);
- fprintf(fp,": Log started:\t\t%s---------------------------------------------------------------------\n",ctime(&tp));
- }
- - /* NO alaram timeout here. SIGINT kills our spy session */
- - while(sigsentry)if(recv(tlinksock,&epack,sizeof(epack),0))if(iphp->protocol==IPPROTO_TCP)if(iphp->saddr==target->daddr&&tcphp->source==target->dport)dumpp(epack.payload-2,htons(iphp->tot_len)-sizeof(epack.ip)-sizeof(epack.tcp),fp);
- + /* NO alarm timeout here. SIGINT kills our spy session */
- + while(sigsentry)if(recv(tlinksock,&epack,sizeof(epack),0))if(iphp->protocol==IPPROTO_TCP)if(iphp->saddr==target->daddr && iphp->daddr==target->saddr && tcphp->dest==target->sport)dumpp(epack.payload-2,htons(iphp->tot_len)-sizeof(epack.ip)-sizeof(epac
-
-
-
-
-
-
-
-
- k
- +
- +.tcp),fp);
-
- if(fp){
- fprintf(fp,"\n---------------------------------------------------------------------\n: Juggernaut connection spy log trailer\n: %s [%d]\t-->\t %s [%d]\n",hostLookup(target->saddr),ntohs(target->sport),hostLookup(target->daddr),ntohs(target->dport
-
-
-
-
-
-
-
-
- )
-
- -
- -
- -
- -
- -
- -
- -
- -
- );
- time(&tp);
- fprintf(fp,": Log ended:\t\t%s---------------------------------------------------------------------\n",ctime(&tp));
- @@ -347,8 +346,8 @@
- unsigned short tlen;
- }*ppheader;
-
- - static int moot=0;
- - int tlinksock=tap(DEVICE);
- + int moot=0;
- + int tlinksock=tap(DEVICE,1);
-
- ALIGNNETPOINTERS();
-
- @@ -451,7 +450,7 @@
- extern int ripsock;
- extern int acrstpid;
- char *tempBuf=0;
- - int tlinksock=tap(DEVICE);
- + int tlinksock=tap(DEVICE,1);
-
- switch((acrstpid=fork())){ /* Drop a child to backround, return the
- parent to continue */
- @@ -570,7 +569,7 @@
- extern int netreadtimeout;
- static int len;
- char *tempBuf;
- - int tlinksock=tap(DEVICE);
- + int tlinksock=tap(DEVICE,1);
-
- ALIGNNETPOINTERS();
-
- @@ -675,7 +674,7 @@
- extern int netreadtimeout;
- extern int sigsentry;
- static int len;
- - int tlinksock=tap(DEVICE);
- + int tlinksock=tap(DEVICE,1);
-
- ALIGNNETPOINTERS();
-
- @@ -799,7 +798,7 @@
- int grabflag=0; /* Time to grab some packets */
- unsigned long targetsourceip=0;
- unsigned short targetsourceport=0;
- - int tlinksock=tap(DEVICE);
- + int tlinksock=tap(DEVICE,1);
-
- if(!(fp=fopen(SNIFLOG,"a+"))){ /* Log to file */
- if(verbosity){
- --- NumberOneCrush/prometheus.c Thu May 8 15:37:03 1997
- +++ NumberOneCrush/prometheus.c Fri Jun 6 01:33:17 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b2
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- --- NumberOneCrush/surplus.c Thu May 8 15:37:03 1997
- +++ NumberOneCrush/surplus.c Fri Jun 6 01:33:03 1997
- @@ -1,7 +1,7 @@
- /*
- *
- * Juggernaut
- - * Version b2
- + * Version 1.2
- *
- * 1996/7 Guild productions
- * daemon9[guild|phrack|r00t]
- @@ -29,6 +29,7 @@
- #define HELPFILE "./ClothLikeGauze/.help"
- #define FBUFSIZE 80
- #define MINIBUF 10
- +#define DEVICE "eth0"
-
- extern int verbosity;
-
- @@ -346,6 +347,7 @@
- void cleanexit(){
-
- void powerdown();
- + int tap(char *,int);
-
- extern int ripsock;
- extern int hpid;
- @@ -353,6 +355,7 @@
-
- close(ripsock);
- powerdown();
- + tap(DEVICE,0); /* Unset promisc mode on the interface */
- if(kill(hpid,SIGUSR1))if(verbosity){ /* Send signal to the hunter */
- perror("(cleanexit) Could not signal hunter");
- fprintf(stderr,"[cr]");
- <-->
-
-
-
- ----[ EOF
-