Exe Password Protector 1.0.5.100:

�Protezione insufficente

Data

by LUCIFUGE[2006] � IseduceWITHfear

 

31/03/2006

UIC's Home Page

Published by Quequero

Qui � la MACCHINA.

Dorme tranquilla eppure � vulnerabile.

Qui � la MACCHINA.

Con il suo respiro liquido/elettrico.

Grazie mille Lucifuge, che bel tutorial!

Potrebbe svegliarsi e cancellarci tutti.

Potrebbe svegliarsi e cadere come altri idoli per mani umane.

Qui � la MACCHINA.

Con il suo dolore/piacere.

....

 

....

Difficolt�

( )NewBies ( )Intermedio ( )Avanzato ( )Master

 

 

 

Introduzione

EXE Password Protector � un semplice programma nato per impedire l�accesso non autorizzato agli eseguibili di volta in volta protetti mediante

l�uso di una password.

E� disponibile la build 1.0.5.100 in versione di prova direttamente scaricabile dal sito del produttore.

Con la trial � possibile testare il funzionamento del programma soltanto su due eseguibili entro un limite di 14 giorni.

 

Tra le note tecniche del programma troviamo le seguenti indicazioni :

1 � funziona solo con eseguibili a 16/32/64-bit per sistemi windows;

2 � la protezione password verr� richiesta ad ogni avvio del programma protetto;

3 � proteggere significa aggiungere al target di circa 100 kb di istruzioni;

4 � la protezione pu� essere anche rimossa e con essa i circa 100 kb di istruzioni;

5 � la password scritta pu� contenere 50 caratteri;

 

NB. Per il tutorial utilizzeremo a scopo didattico la versione di prova del programma e non procederemo a modificarne il sistema di registrazione.

Tools usati

PE iDentifier v0.93 by snaker, Qwerton, Jibz & xineohP

URSoft W32Dasm Ver 8.93 + Bratalarm Patch 3.0 - final

UltraCompare Professional Version 3.10

UltraEdit-32 Professional Text/HEX Editor Version 11.20b

Lo stesso target ossia EXE Password Protector (http://www.eltima.com/)

Una vittima spontanea BLOCCONOTE (ossia notepad.exe la trovate semplicemente in c:\windows\)

URL o FTP del programma

www.eltima.com

Essay

Come ricordato nell�introduzione, EXE Password Protector permette di proteggere i file eseguibili dall�utilizzo indiscriminato di altri utenti del

computer.

Se ne raccomanda l�utilizzo in ambiti lavorativi (ad esempio per impedire l�avvio dei tool di amministrazione del sistema ecc.) ma anche

in tutti quei casi in cui si voglia tener d�occhio l�uso delle risorse di sistema.

Scarichiamo la versione dimostrativa e procediamo ad installarla.

Ora procuriamoci un file da utilizzare come cavia del nostro esperimento, curiosiamo un po� e (scoperta dell�acqua calda o forse era della fredda�)

perch� non utilizziamo il caro vecchio Blocconote ?

Creiamo la nostra bella cartella PROVA e copiamo dentro la nostra vittima spontanea, ossia il notepad.exe.

Ora creiamo tre copie dello stesso file e rinominiamole in questo modo : old.exe, 25.exe, 50.exe.

 

Andiamo a curiosare nella cartella di installazione e lanciando il PE iDentifier analizziamo l�eseguibile EXE Password Protector.exe.

 

Ecco le informazioni cos� ottenute :

 

 

L�eseguibile � stato compresso e cifrato utilizzando Armadillo 3.78.

Per quello che qui ci interessa non ci occuperemo di procedere all�unpacking dell�eseguibile (esistono numerosi tutorial al riguardo e molte

tecniche, peraltro io ho testato con successo l�ausilio del solo Quick Unpack v1.0 e la sostituzione di alcuni byte per saltare questo controllo

 

).

 

Saranno sufficienti per i nostri scopi, che sono e restano di testare la protezione decantata dal produttore, i soli file protetti con password.

 

 

Lanciamo finalmente l�applicativo ed a darci il benvenuto compare il classico reminder :

 

Non possiamo che condividere l�assunto in questione �se questo programma ti piace non dimenticare di pagarlo e registrare la tua

copia altrimenti cancellalo�.

 

Proseguiamo ed ecco la videata del programma :

 

 

Che ci rammenta delle caratteristiche tecniche di questo software ossia di incorporare direttamente nel file EXE la password.

 

Ora largo alla vittima.

Note ? NoteNote ? vieni su bello vediamo come ti sta questa museruola della Eltima Software�..

 

Clicchiamo su Next e diamo impasto al nostro famelico E.P.P. il file 25.exe.

 

 

Ancora Next ed impostiamo una password di venticique caratteri abbastanza robusta !\HF�54"nc=?�l�545�(<'@H

 

 

Ancora Next e la procedura guidata sar� finita.

 

 

Ora clicchiamo su Test ed assistiamo al miracolo il Blocco note ha ora la sua museruola :

 

 

Inseriamo la nostra password � tutto fila liscio.

Mentre se sbagliamo la password il mastino si arrabbia :

 

Ora ripetiamo l�operazione con il file 50.exe e settiamo una password lunga 48 caratteri (si perch� con quelle da cinquanta

il mastino ha problemi di digestione) ed altrettanto sicura come

questa �c/h\l�<&E."�#�Q8b)@Tk3w0%Gg4g8h42h7/%(La5HG)%p3

Eseguiamo il test � tutto ok.

 

Ora analizziamo come opera il mastino.

Il nostro programma apre il file bersaglio e procede a sostituire l�originale con una copia dello stesso di diverso contenuto.

Infatti, si tratta di un altro file chiamato SFX_BODY all�interno del quale sono contenute delle sezioni cave dove

trover� posto il programma ospite alla fine del quale verr� scritta la fatidica password.

 

La password in formato MD5 del file 25.exe :

 

 

e quella in formato MD5 del file 50.exe :

 

Gi� di per s� questo metodo, non prevedendo di cifrare tutto l�eseguibile restante ed addirittura collocando la password in bella

vista in fondo al file, non mi pare fungere da deterrente tecnico.

Chiunque potrebbe violare la protezione con un banale copia/incolla.

Ad esempio la mia password LUCIFUGE

 

 

se la incollo su un altro file di cui ignoro la legittima password otterr� lo stesso l�accesso alla risorsa. �

 

Vogliamo per� vedere se sia possibile agire direttamente sul codice dell�eseguibile.

Per far ci� apriremo il file 25.exe in W32Dasm e cercheremo dove vengono caricate le stringhe di errore :

 

* Referenced by a CALL at Addresses:

|:004025DA�� , :004025FA�� , :0040295D�� , :004029C8��

|

:004023C0 6AFF������������������� push FFFFFFFF

:004023C2 68A89E4000������������� push 00409EA8

:004023C7 64A100000000����������� mov eax, dword ptr fs:[00000000]

:004023CD 50��������������������� push eax

:004023CE 64892500000000��������� mov dword ptr fs:[00000000], esp

:004023D5 51��������������������� push ecx

:004023D6 A1BCCC4000������������� mov eax, dword ptr [0040CCBC]

:004023DB B9BCCC4000������������� mov ecx, 0040CCBC

:004023E0 FF500C����������������� call [eax+0C]

:004023E3 83C010����������������� add eax, 00000010

:004023E6 89442400��������������� mov dword ptr [esp], eax

:004023EA 8B442414��������������� mov eax, dword ptr [esp+14]

:004023EE 48������� ��������������dec eax

:004023EF C744240C00000000������� mov [esp+0C], 00000000

:004023F7 7451������������������� je 0040244A

:004023F9 48��������������������� dec eax

:004023FA 7425������������������� je 00402421

:004023FC 48��������������������� dec eax����������������������������������������������������������������

:004023FD 7562������������������� jne 00402461�����������������������������������������������������������

:004023FF B858A24000������������� mov eax, 0040A258 ; Reference To: "The file you are trying to launch seems"...�������

:00402404 8D5001����������������� lea edx, dword ptr [eax+01]��������������������������������������������

:00402407 8A08������������������� mov cl, byte ptr [eax]

:00402409 40��������������������� inc eax

:0040240A 84C9������������������� test cl, cl

:0040240C 75F9������������������� jne 00402407

:0040240E 2BC2������������������� sub eax, edx

:00402410 50���� �����������������push eax

:00402411 6858A24000������������� push 0040A258 ; Reference To: "The file you are trying to launch seems"...

:00402416 8D4C2408��������������� lea ecx, dword ptr [esp+08]

:0040241A E891F9FFFF������������� call 00401DB0

:0040241F EB40������������������� jmp 00402461

:00402421 B830A24000������������� mov eax, 0040A230 ; Reference To: "Invalid password. Please, try again."

:00402426 8D5001����������������� lea edx, dword ptr [eax+01]

:00402429 8DA42400000000��������� lea esp, dword ptr [esp]

:00402430 8A08������������������� mov cl, byte ptr [eax]

:00402432 40��������������������� inc eax�

:00402433 84C9������������������� test cl, cl

:00402435 75F9������������������� jne 00402430

:00402437 2BC2������������������� sub eax, edx

:00402439 50��������������������� push eax

:0040243A 6830A24000������������� push 0040A230 ; Reference To: "Invalid password. Please, try again."

:0040243F 8D4C2408��������������� lea ecx, dword ptr [esp+08]

:00402443 E868F9FFFF������������� call 00401DB0

:00402448 EB17������������������� jmp 00402461

:0040244A 8B4C2418��������������� mov ecx, dword ptr [esp+18]

:0040244E 51��������������������� push ecx������������������������������������

:0040244F 8D542404�������� �������lea edx, dword ptr [esp+04]

:00402453 6814A24000������������� push 0040A214 ; Reference To: "System I/O error (ln %d)"

:00402458 52��������������������� push edx

:00402459 E882FEFFFF������������� call 004022E0����������������������

:0040245E 83C40C����������������� add esp, 0000000C

:00402461 56��������������������� push esi

:00402462 8B742404��������������� mov esi, dword ptr [esp+04]

:00402466 6A10������������������� push 00000010

:00402468 6A00������������������� push 00000000

:0040246A 56��������������������� push esi

:0040246B 6A00������������������� push 00000000

:0040246D FF158CA14000����������� Call dword ptr [0040A18C] ; Reference To: USER32.MessageBoxA, Ord:01DCh

:00402473 8D46F0����������������� lea eax, dword ptr [esi-10]

:00402476 C7442410FFFFFFFF������� mov [esp+10], FFFFFFFF

:0040247E 8D480C����������������� lea ecx, dword ptr [eax+0C]

:00402481 83CAFF����������������� or edx, FFFFFFFF

:00402484 F0��������������������� lock

:00402485 0FC111����������������� xadd dword ptr [ecx], edx

:00402488 4A��������������������� dec edx

:00402489 85D2������������������� test edx, edx

:0040248B 5E��������������������� pop esi

:0040248C 7F08������������������� jg 00402496

:0040248E 8B08������������������� mov ecx, dword ptr [eax]

:00402490 8B11������������������� mov edx, dword ptr [ecx]

:00402492 50��������������������� push eax

:00402493 FF5204����������������� call [edx+04]

 

 

Noteremo cos� la presenza di quattro specifiche chiamate da parte di questi indirizzi 004025DA, 004025FA, 0040295D, 004029C8.

Analizzando le stesse noteremo che quella che ci interessa � in realt� solo la terza ossia 0040295D.

Ecco la chiamata vista da W32Dasm :

��

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040293B(U)

|

:0040295D E85EFAFFFF������������� call 004023C0

:00402962 83C408����������������� add esp, 00000008

 

Ad essa salta incondizionatamente �l�indirizzo 0040293B :

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00402898(C)

|

:00402930 BE02000000������������� mov esi, 00000002

:00402935 68BF000000������������� push 000000BF

:0040293A 56��������������������� push esi

:0040293B EB20������������������� jmp 0040295D

 

A sua volta invocato da un salto per� condizionato all�indirizzo 00402898 :

 

:00402890 8A4C0458��������������� mov cl, byte ptr [esp+eax+58]

:00402894 3A4C0438��������������� cmp cl, byte ptr [esp+eax+38]

:00402898 0F8592000000 �����������jne 00402930 <----- QUESTO SALTO CI INTERESSA (SE NON E� ZERO)

:0040289E 40��������������������� inc eax

:0040289F 83F810����������������� cmp eax, 00000010

:004028A2 72EC������������������� jb 00402890

:004028A4 8B3534A04000����������� mov esi, dword ptr [0040A034] * Reference To: KERNEL32.ReadFile, Ord:0290h

:004028AA 8B3D40A04000����������� mov edi, dword ptr [0040A040] * Reference To: KERNEL32.WriteFile, Ord:0376h

 

Apriamo il il file 25.exe con UltraEdit-32 � modifichiamo all�indirizzo 0x002898 quel 0F8592000000, ossia il salto condizionato se non � zero,

in un 0F8492000000 ossia in un nuovo salto condizionato ove per� il valore sia zero.

In questo modo ogni password diversa da quella vera sar� riconosciuta come valida mentre quella originale sar� considerata sbagliata.

Si potrebbe anche noppare il tutto ossia 909090909090 in questo modo qualunque password sarebbe riconosciuta come valida.

 

Come abbiamo visto la protezione offerta dal programma � praticamente inefficiente.

Analizziamo ancora il codice e notiamo un particolare, se gi� non ci fossimo accorti della cosa, guardando bene nella cartella di prova.

Il nostro mastino, se la richiesta di password � stata superata, salva sul disco una copia del file, che protegge, rinominata in

questo modo :

 

:0040270F 50��������������������� push eax

:00402710 51��������������������� push ecx

:00402711 8D4C2424��������������� lea ecx, dword ptr [esp+24]

:00402715 E896F6FFFF������������� call 00401DB0

:0040271A 68DCA24000������������� push 0040A2DC ; ".unprotected"

:0040271F 8D4C2420��������������� lea ecx, dword ptr [esp+20]

:00402723 51��������������������� push ecx

:00402724 8D54241C��������������� lea edx, dword ptr [esp+1C]

:00402728 52��������������������� push edx

:00402729 E8D2FBFFFF������������� call 00402300

:0040272E 83C40C����������������� add esp, 0000000C

:00402731 50��������������������� push eax

:00402732 8D4C241C��������������� lea ecx, dword ptr [esp+1C]

:00402736 C684247810000006������� mov byte ptr [esp+00001078], 06

:0040273E E8ADFAFFFF������������� call 004021F0

:00402743 8B442414��������������� mov eax, dword ptr [esp+14]

:00402747 83C0F0����������������� add eax, FFFFFFF0

:0040274A C684247410000005������� mov byte ptr [esp+00001074], 05

:00402752 8D480C����������������� lea ecx, dword ptr [eax+0C]

:00402755 83CAFF����������������� or edx, FFFFFFFF

:00402758 F0��������������������� lock

 

ossia nomedelfile+estensionedelfile+estensione �.unprotected�.

Se lasciamo in esecuzione il nostro fido Blocco note e procediamo a copiare il file .unprotected e rinominarlo in UNPRO.EXE

avremo senza nessuna fatica ottenuto un eseguibile pulito da questo pericoloso mastino.

 

Vi ricordo che se il programma risultasse di vostro gradimento per continuare ad usarlo dovete acquistare una licenza.

 

���������������������������������������������������������������������������������� �������,.,.,.,LUCIFUGE[2006]-IseduceWITHfear.,.,.,.

 

 

Note finali

Ringrazio in ordine sparso tutti Voi e QUEQUERO.

Ringrazio quel pozzo di superficialit� che � la Libera Universit� Internazionale degli Studi Sociali Guido Carli (LOL NdQue).

Ringrazio i Rhapsody, gli Angra, i Dreamtheater, i Depeche Mode, i Darkness, Giuseppe Verdi ed Antonio Vivaldi.

Disclaimer

Mi permetto di apportare modifiche al classico �avviso� previsto da Quequero, che troverete alla fine di queste mie virgolettato.

Questa premura non � dovuta ad un attacco di egocentrismo ma al desiderio di chiarire alcune cose.

 

Vi � una stretta assonanza tra l�antica pazienza dell�Orologiaio e quella tutta moderna del Reverser.

Non mi si perdoni il paragone perch� lo ritengo molto calzante.

Entrambi lavorano su una materia prima ed entrambi spesso �sezionano� un opera intellettuale altrui.

 

Provate ad immaginarli. Li vedete.

Osservate la cura dell�Orologiaio con in mano il suo pezzo d�alta manifattura.

Squadra il quadrante con il monocolo in tutte le sue finiture ed osserva la qualit� delle lancette� i dettagli su quadrante� ascolta il

passo dell�orologio saggiando il ticchettio del suo cuore.

Poi eccolo pronto all�opera di �disassemblaggio�.

Armato della sua chiave apre il fondello e rimuove le viti delle protezioni previste per il movimento.

Estrae la corona di carica ed infine adagia il cuore ancora pulsante in un contenitore adatto.

Procede con calma a smontare ogni sua componente svitando con mano decisa e leggera ogni piccola vite.

Alla fine del suo paziente lavoro, disteso su un piano privo di polvere, c�� un intero codice meccanico fatto di parti piccolissime� molle

rotelle ponti ecc�

 

Perch� ? per passione innanzi tutto e anche per arte.

L�Orologiaio svolge il suo compito per apprendere il funzionamento di un orologio e non fa differenze se si tratta di un movimento standard

considerato dai pi� �unadjustable� o di una manifattura. Appreso il suo funzionamento potr� ripare il movimento danneggiato, procedere

ad una sua revisione pulendo l�olio invecchiato ed aggiungendone di nuovo come potr� decidere di apportare modifiche al movimento stesso.

Un movimento per� che normalmente � un prodotto intellettuale di altri.

E� questo far� l�orologiaio tranquillamente nella sua bottega.

Immaginate con me ?

Quante volte � accaduto gi� ? Nel mondo orologiero � una consuetudine che una casa acquisti un movimento X e proceda ad una sostituzione

dei suoi pezzi al decoro dei ponti od alla scheletratura ed esso diventi un nuovo prodotto intellettuale.

 

La caratteristica unica dell�essere umano � il creare il nuovo dal nuovo e dal nuovo ancora.

Per questo ci �evolviamo� perch� anche un idea vecchia ci sembra di colpo nuova grazie ad uno stimolo sorto dentro di noi.

 

Il Reverser � come un Orologiaio nei termini in cui apre e studia un prodotto intellettuale altrui.

Studia per passione, per imparare ed anche per apportare modifiche. Cerca nuovi stimoli.

 

Quando si parla di orologi non � possibile ascoltare le impressioni dei semplici utenti.

Perch� persone che si limitano ad indossare semplicemente un orologio potranno discutere di estetica dell�orologio ma cosa comprenderanno

della differenza che passi tra un orologio che monta 35 rubini, di cui 25 realmente necessari a sovrastare l�attrito  e ben 10 disposti solo per

scena, ed un orologio che ne monta solo 25, ma tutti realmente necessari ?

Solo appassionati di orologeria e tecnici potranno apprezzare una soluzione tecnica rispetto ad una altra e cos� via.

 

Dunque quando parliamo di reversing intendiamo programmatori od autodidatti (come me) che nell�analisi del codice altrui trovano uno stimolo

non fine a se stesso. Studiano con passione, per imparare ed anche per apportare modifiche.

Certo esiste la �pirateria� (o meglio ora esiste un tempo la faccenda dei corsari era tutta un�altra storia).

Certo va combattuta ma � anche vero che se esistono ladri di auto non per questo tutti coloro che la mattina mettono le mani nel motore

della propria vettura o della vettura altrui sono �i ladri�� cos� come se esistono coloro che fanno orologi falsi non � vietato agli orologiai

aprire e smontare gli orologi altrui.

 

Almeno questa � la visione del sottoscritto ,.,.,.,LUCIFUGE[2006]-IseduceWITHfear.,.,.,..

"Vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento � stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo che ogni sviluppatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Reversiamo al solo scopo informativo e per migliorare la nostra conoscenza del linguaggio Assembly."