Cracking & Hacking

  • Published on
    08-Nov-2014

  • View
    182

  • Download
    0

Embed Size (px)

DESCRIPTION

cracking

Transcript

<p>Flavio Bernardotti Via Trento, 10 15040 Montecastello (Al.) Tel. 0347 5610956</p> <p>Tecniche, programmi e conoscenze per il cracking dei programmi. Teoria dellassembler. Teoria dei debuggers, disassemblatori ecc. Teoria del software in rete. Teoria activeX e librerie. Interrupts. Funzioni API di Windows.</p> <p>QUESTO VOLUME NON VIOLA NESSUNA LEGGE NEPPURE MORALE.Questo volume, al contrario di quanto farebbe pensare il titolo, NON VIOLA NESSUNA LEGGE in quanto non fa riferimento a nessun programma in modo specifico. I programmi ad esempio sono stati camuffati ed impossibile risalire allorigine. Le tabelle e gli scritti riportati sono espressamente DI PUBBLICO DOMINIO O ANONIMI . In ogni caso sono riprodotti nella loro forma originale compresa la lingua. 1999 F.Bernardotti flavio@bernardotti.al.it www.bernardotti.al.it</p> <p>INTRODUZIONE</p> <p>A 14 anni di distanza ecco quanto avevo promesso sul mio volume di programmazione in C a basso livello datato 1986. Ho ricevuto per anni telefonate dalle persone che lo avevano letto le quali mi chiedevano a che punto era quanto avevo promesso nelle ultime pagine. A dire il vero nel frattempo ho scritto altri volumi sulla programmazione in C in ambiente Unix, sulla programmazione in Java ma inutile ... il volume che aveva colpito era quello destinato agli smanettoni del basso livello. Ok. Non propriamente la continuazione di quello, in quanto a quei tempi il volume trattava le tecniche di scrittura dei TSR in C ma ora sotto Windows 2000 di TSR se ne parla ben poco. In compenso il basso livello, pi basso di cosi si muore, rinasce nel mondo dei crackers (non della Pavesi) i quali seguono le trame ingarbugliate dei software per autofinanziarsi irraggiungibili, in altro modo, librerie e software vari. Un buon sistema di sviluppo costa svariati milioni. 3.000.000 circa per Developper Studio Enterprise. 800.000 per la libreria che gestisce lo strato database ecc. 900.000 per quella che gestisce le list box. E chi sviluppa in Java o C++ sicuramente ha anche bisogno di un editor html da L. 1.000.000 ecc. E disegni legati alla grafica dove li mettiamo ? Altri 800.000 per un Firework. Gli studenti e tutti coloro che non possono passare sotto il budget dellazienda il costo del software sarebbero destinati a guardare. Ed invece no ! La tecnica dellautofinanziamento funziona. Grazie a Internet ci sono migliaia di software limitati a 60 giorni o similia che sono li pronti ad accettare la sfida del crackatore folle. Colui che produce software compra i pacchetti originali perch impensabile distribuire un prodotto creato con software crackati. Chi grida allingiustizia per il fatto che qualche smanettone si autofornisce di software perch non grida allingiustizia quando invece si spende dei milioni per trovarsi nelle mani dei software scritti da cani e destinati a cani ? Io personalmente ho reso ricche software house americane e Federal Express comprando centinaia e centinaia di software con il solo scopo di provarli. Unaltra cosa che spero vivamente che il testo non vi aiuti ulteriormente a rendervi pi strani, anche perch pap e mamma sono gi abbastanza perplessi oggi come oggi senza che dobbiate peggiorare ulteriormente !! (Scherzo!!) Il consiglio migliore che vi posso dare comunque quello di mantenere un briciolo di umilt pensando che spesso dalla parte delle protezioni esistono professionisti veramente bravi. Questo non significa che alcuni programmi non si possono sbloccare ma solo che bisogna sempre valutare se il tempo perso vale il gioco. Sicuramente poterete fare di qualsiasi caso una sfida e se le cose stanno cos non c da fare neppure un'altra parola. Se invece per sproteggere un formattatore di sorgenti C ci vuole un mese, forse meglio che lasciate perdere e il tempo lo impiegate a riscriverlo per vostro conto. Nel 1981 iniziai a lavorare vicino a sistemi che a quei tempi possedevano le dimensioni di una stanza. Fare il consulente in informatica significava dover affrontare progetti legati ai settori pi disparati ovvero quelli per cui i clienti ti contattavano. Se arrivava la Fiat e necessitava del programma di controllo della qualit dovevi affermare in partenza di conoscere largomento e successivamente dovevi sudare sette camicie per farti una cultura sufficiente a poter risolvere il problema. Appunto per fare questo bisognava avere il software giusto al momento giusto ed questo il motivo delle centinaia di acquisti.</p> <p>Quanti pacchi ma PACCHI in maiuscolo mi sono preso ! Allora li cosa si doveva fare ? Milioni spesi per software che se fossero stati distribuiti gratis ci si sarebbe dovuti incazzare per aver speso 900 L per ogni floppy di supporto. Comunque la logica di anni fa la stessa che ho oggi. Questo volume vuole distribuire informazioni e non software crackati. Reperire le informazioni, anni fa, era importantissimo anche perch verso la met degli anni 80 i volumi erano rarissimi. Da qui mi venne lidea di creare un qualche cosa che potesse permettere a persone con interessi comuni di dialogare e quindi di scambiarsi le esperienze. Per questo nacque lidea di fondare con alcuni altri la rete FidoNet italiana. Per circa 8 anni sono stato il secondo nodo italiano dopo quello di Giorgio Rutigliano di Potenza. Era il 1985 e la telematica viaggiava con i suoi 300 bauds proprio allinizio del suo cammino. La stampa ci prese come un fatto innovativo. In Italia non esistevano ancora sistemi telematici pubblici e gratuiti come invece in America era tempo che cerano. E come tutte le cose nuove venne vista anche con delle ottiche sbagliate ovvero per anni ci fu imputato di essere un covo di hackers. Chiaramente la rete supportava la messaggistica per cui non si poteva negare che poteva essere anche usata per scambiare passwords di sistemi privati. Non era comunque possibile eliminare il problema perch non era possibile leggere tutti i messaggi che circolavano sulla rete stessa. Chiaramente poi chi violava i sistemi informatici possedeva un modem e quindi utilizzava anche le BBS. Per stare sulla rete scrissi i programmi in C denominati ITALINK (1986) che gestivano tutte le sezioni classiche di una BBS FidoNet ed in pi disponevano di una sezione per le interrogazioni su basi dati. In tutti questi anni venni a conoscenza di quella che era la realt hacker anche se la mia visione non quella negativa posseduta da molti anzi .... Per me l hacker era una persona che doveva disporre di conoscenze informatiche molto maggiori della media ed era anche logico in quanto per poter trovare i buchi dei sistemi bisognava conoscerli molto bene. Nel 1987 partecipai anche ad una seconda rete nata in quel periodo che si supportava sul sistema di Unix UUCP. Al giorno doggi con le logiche Windows per settare una rete premi due tasti e scrivi due numeri. Settare UUCP era invece una cosa da pazzi. Decine e decine di file con dati incrociati tra loro con centinaia di informazioni da settare. Il file xxx conteneva i dati dei modem il cui numero doveva essere riportato nel file yyy il quale conteneva la velocit che doveva essere specificata nel file zzz e cos via. Molti crack ai sistemi furono fatti usando i bugs del sistema uucp. In pratica conoscendo il mailer di UUCP veniva spedito un messaggio con il sorgente del file usato per creare la door il quale, una volta giunto, usando lesecutore sempre di UUCP veniva compilato ed eseguito. E questo era solo un esempio di fatti che comunque denotavano conoscenze molto profonde dei sistemi. Diciamo che in ogni caso tutte le tecniche di hackeraggio sono quasi sempre basate sullinesperienza di alcuni sistemisti. Molti buchi sono accentuati dal fatto che molti sistemisti usano il loro accesso come root per attivare procedure atte a gestire funzioni pubbliche. Per essere pi chiari possiamo portare lesempio dei server WEB dove i programmi di gestione HTTP vengono lanciati come processi di propriet root. In questo caso mediante alcuni cavalli di troia ed altre tecniche basate su problemi di FTP e del gestore delle EMAIL possibile creare accessi non autorizzati ai sistemi. Una delle fasi fondamentali dellhackeraggio sta nella capacit di eliminare tutte le tracce di accesso al sistema.</p> <p>Dopo essere entrati in sistemi Unix dovr essere cura dellhacker quella di cancellare i file WTMP e cc. ed in particolare modo non dovranno essere usate certe procedure adatte ad uscire dal sistema hackerato. Comunque se il super user del sistema non analizza i files di log allora non esiste nessun problema anche nel caso in cui lhacker non faccia sparire le tracce. Il volume di intitola hacker and cracker in quanto sono due cose differenti. Hacker significa accedere ai sistemi remoti senza ?0x100,i u Unsigned decimal integer. &gt; ?-1,u o Octal integer. &gt; ?40000,o x, X Hexadecimal integer. &gt; ?40000,x f Signed value in floating point format with six decimal places (takes implicit/explicit type FLOAT as an argument). &gt; ?(float)(3./2.),f e, E Signed value in scientific notation with up to six decimal places (trailing zeros and decimal point are truncated). &gt; ?(float)(3./2.),e g, G Signed value in floating point decimal format or scientific format, whichever is more compact. &gt; ?(float)(3./2.),g c Single character. &gt; ?41,c Example 256 4294967295 0o00001000000 0x00040000</p> <p>that</p> <p>use</p> <p>the</p> <p>1.500000</p> <p>1.500000e+000</p> <p>1.5 'A'</p> <p>s</p> <p>l L h</p> <p>Characters up to the first null character. &gt; ?szHello,s Hello Long-Word modifier. &gt; ?3./2.,lf Long-Long Word modifier &gt; ?0xffffffff,Li Half-Word modifier: &gt; ?0x12345,hi</p> <p>(szHello="Hello") 1.500000 -1 9029</p> <p>Note The 'l", "L", and "h" modifiers work differently with different base types. If, for instance, you are coercing an expression to type long double (80 bit), the "L" modifier will work correctly on that expression. The "L" modifier also works correctly on long long integer expressions, as shown in the table above. Windows Debugger implicitly cast values when evaluating an expression. It operates on the actual bit quantity unless coerced through casting, as shown above. ! User Extension DLL the debugger. Use this command to call special</p> <p>Calls a DLL function from routines while debugging. Syntax</p> <p>! [filename.]function [string] Parameters filename Name of the DLL to call (without the .DLL extension), followed by a period (.). The default filename is NTSDEXTS.DLL. In kernel debugging, the default extension DLL depends upon the target platform: Target Platform Default Extension DLL x86 KDEXTX86.DLL ALPHA KDEXTALP.DLL function Name of the DLL function to call. string String to pass to the DLL function. Remarks For a complete list of the built-in extension commands, enter !? at the Windows Debugger prompt. For information on creating and using kernel debugger extensions, see the Windows NT DDK. | ~ # % Display Process State Display Thread State Search for Disassembly Pattern Change Context</p> <p>Changes the context to the specified frame. Updates the Locals window with the variables of the new frame.</p> <p>Use the KN command to list the call stack with the frame numbers. Syntax %[frame] Parameters frame The number of the frame on the call stack to change context to. The current procedure is number 0 on the stack. .attach Attach to Process</p> <p>Starts debugging the process specified by process. You can use PView to find process IDs of running programs. This command is equivalent to the /P command-line option. You can also click Attach to a Process from the Debug menu or press F6. Syntax .attach process Parameters process Process identifier of the task to debug, specified in decimal. Use the 0x prefix to specify the process identifier in hexadecimal. Remarks The process is attached until the debugger is terminated. There is no command to unattach. .break .cache Debug Break Cache Size</p> <p>WinDbg KD only Sets the size of the cache for WinDbg KD to use for memory values. Syntax .cache [cachesize] Parameters cachesize The size of the kernel debugging cache, in MB. If you do not specify cachesize, the command displays the status of the cache. If you issue the command .cache 0, the cache is disabled. Remarks Normal operations, such as single-stepping or the G command, invalidate the cache. If WinDbg KD has frozen the target computer, but hardware on the target</p> <p>can change memory (for example, through shared memory or DMA), you must disable the cache to see the memory changes. For more information, see Setting Kernel Debugger Options. .connect Establish Connection</p> <p>.disconnect Drop Connection .kill Terminate Process .list Display Source/Assembly Listing .logappend .logclose .logopen .opt Append Log File Close Log File Open Log File</p> <p>Set Option</p> <p>Sets debug options. To view the current debug option settings, use this command with no parameters. To modify a setting, specify the name of the debug option and the appropriate value, as indicated below. The view an individual debug option setting, specify only the name of the debug option. Syntax .opt [DebugOption] Parameters DebugOption This parameter be one of the following values. Value ? AsmSymbols [on | off] AsmRaw [on | off] AttachGo [on | off] Meaning Displays the list of supported debug options. If this setting is on, show symbols in disassembly. If this setting is on, show raw data in disassembly. If this setting is on, do not stop debugging when a new process is attached. BackgroundSym [on | off]If this setting is on, load symbols in the background. CaseSensitive [on | off]If this setting is on, turn on case sensitivity. ChildGo [on | off] If this setting is on, do not stop debugging when a new child process is created. CommandRepeat [on | off]If this setting is on, ENTER repeats the last command. DllEm filename Specifies the name of the execution model DLL. DllSh filename Specifies the name of the transport layer DLL. DllTl filename [args] Specifies the transport layer DLL. DllPath ["path"] Specifies the search path for symbols. EPStep [on | off] If this setting is on, the first step goes to the entry point, not to main. ExitGo [on | off] If this setting is on, do not stop debugging when a thread terminates. InheritHandles [on | off]If this setting is on, the target application inherits handles. This is useful for debugging debuggers. IgnoreAll [on | off] If this setting is on, ignore all messages about symbols. KdInitialBp [on | off] If this setting is on, kernel debugging stops at the initial breakpoint.</p> <p>KdEnable [on | off] KdGoExit [on | off] KdUseModem [on | off]</p> <p>If this setting is on, turn on the kernel debugger. If this setting is on, go on exit. If this setting is on, the kernel debugger uses modem controls. KdBaudRate [baud] Specifies the kernel debugger baud rate (1200, 2400, ). KdPort [port] Specifies the kernel debugger communication port (COM1, COM2, ). KdCacheSize [size] Specifies the kernel debugger cache size, in bytes. KdPlatform [x86 | alpha]Specifies the kernel debugger target system. MasmEval [on | off] If this setting is on, turns on MASM-style expression evaluation. NotifyExit [on | of...</p>