|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Suppongo l'algortimo venga scoperto disassemblando l'eseguibile, dubito che ci si riesca "a mente".
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#22 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Tant'e' che se l'algoritmo e' remoto, allora c'e' ben poco da fare.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#23 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se prendi un debugger avanzato, ti attacchi in debug al software di tuo interesse e capisci (ben più di) qualcosa di assembly x86 potresti anche riuscire a ottenere qualcosa... Se il software usa le funzioni di cifratura delle API di windows potrebbe essere più semplice perchè ti basta installare un hook di sistema e sostituirti alle chiamate SystemFunction040 e similari, sarà il programma a darti tutti i dati che ti servono, credendo di darle al sistema operativo... |
|
![]() |
![]() |
![]() |
#24 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Motivo principale per non usare mai le API di windows quando si parla di sicurezza. |
|
![]() |
![]() |
![]() |
#25 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
E se ti affidi esclusivamente a comunicazioni remote chi ti dice che l'utente non simuli le stesse chiamate che esegui te, facendosi ritornare sempre qualcosa di valido? Alla fine basta sniffare tutte le comunicazioni via socket del programma e analizzare i dati che passano. |
|
![]() |
![]() |
![]() |
#26 | |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quote:
__________________
Il sole è giallo |
|
![]() |
![]() |
![]() |
#27 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Autenticazione e utilita' del tutto stanno li' sul server, il tuo client e' solo un'interfaccia. In questo caso, pur conoscendo N password, sara' difficile se non impossibile indovinarne una N+1esima accettabile dal server.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#28 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
![]() |
![]() |
![]() |
#29 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Comunque, si', le protezioni locali sono il caso piu' diffuso. Finora...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quello che vuoi fare te è praticamente impossibile.
Leggi un po' qui: http://www.oneitsecurity.it/04/09/20...crittoanalisi/ Tu sei nel secondo caso... Solo che per sfruttare quell'attacco c'è la necessità di una grossa quantità di coppie di testi cifrati e comunque alcune caratteristiche dell'algoritmo. |
![]() |
![]() |
![]() |
#31 | |
Member
Iscritto dal: Mar 2009
Messaggi: 40
|
Quote:
![]() Ultima modifica di Nazzyyy : 08-02-2010 alle 21:29. |
|
![]() |
![]() |
![]() |
#32 |
Senior Member
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
|
un programma che scopra l'algoritmo che collega 2 chiavi alfanumeriche date un numero x di chiavi valide... wow sarebbe a dir poco fantascienza!!
@ Nazzyyy il tuo secondo esempio mi ricorda molto qualcosa... ![]() |
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
rettifica: quando si parla di security-by-obscurity.
|
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Non è questo il caso, installando l'hook sulle funzioni delle cryptoapi ti interponi tra il software e il sistema operativo per cui riesci a leggere key e iv prima che vengano utilizzati per la cifratura e recuperi anche i dati in chiaro prima che vengano cifrati.
Basta una sbirciatina con dependency walker (o reflector per programmi .net) per capire quali funzioni vengono usate. Ad esempio SecureString del .NET è una classe totalmente inutile, ti protegge dal memdump ma non dall'hook su SystemFunction040. |
![]() |
![]() |
![]() |
#35 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12856
|
Ma questi hook possono essere installati anche senza privilegi admin?
|
![]() |
![]() |
![]() |
#36 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
|
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
si che lo é: se il tuo avversario é un programma malizioso che gira sulla tua stessa macchina tu per lui non stai usando l'algoritmo di cifratura X con una chiave segreta, stai usando l'algoritmo X con una chiave nascosta tramite security by obscurity (che é una cosa ben diversa) perché la chiave é "nascosta" dall'assunzione errata che il nemico non riuscirá a scovarla facendo reverse engineering sul tuo programma. di fatto non stai usando l'algoritmo X noto: ne stai usando una versione X' ignota che corrisponde ad usare X con una ben determinata chiave K. ma la versione X' é vulnerabile e non resterá ignota per molto.
parliamo invece di un altro contesto dove le CryptoAPI di Windows sono estremamente utili: le comunicazioni di rete. se é ragionevole assumere che il nemico non stia sulla tua macchina, bensi ad esempio in un router intermedio, le CryptoAPI vanno benissimo, anzi bisognerebbe usare quelle perché é inutile reinventare 6000 ruote rischiando anche di produrre risultati errati; se si usano le CryptoAPI i risultati saranno orientativamente corretti e in piu hai il vantaggio di poter scaricare su Microsoft la responsabilitá di qualunque vulnerabilitá. é stupido non usarle. mi sa tanto di si invece ![]() é vero che non posso accedere con pieni permessi ad alcuni processi che girano sulla macchina, ma posso sempre simulare il tutto all'interno del mio processo, sul quale posso fare quello che voglio, incluso modificare le DLL di sistema mettendoci degli hooks. non é molto difficile far partire un programma all'interno del proprio processo: si carica il modulo eseguibile normalmente con LoadLibrary, si cerca l'indirizzo dell'entry point (il formato PE é ben documentato) e lo si invoca direttamente usando il prototipo della mainCRTStartup. prima di fare tutto ció é possibile installare quanti API hooks ti pare. una libreria molto buona per installare hooks é Microsoft Detours. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:05.