2012-03-05 1 views
1

J'ai créé une application GData et j'envoie mes informations d'identification Google pour utiliser mon compte. Fiddler peut facilement intercepter ma communication et révèle le nom d'utilisateur & mot de passe.Sécurité de la communication: Fiddler intercepte mes conversations. Comment puis-je sécuriser mon application?

Y a-t-il un moyen de prévenir les regards indiscrets? Quelqu'un peut-il révèle facilement mon mot de passe sinon ...

POST https://www.google.com/accounts/ClientLogin HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 
Host: www.google.com 
Content-Length: 109 
Expect: 100-continue 
Connection: Keep-Alive 

Email=xxxxxxxxxx%40gmail.com&Passwd=veryhigh-secure-ultra-strenght-passord-is-this-HHDGdgddhdyhghdeeehdeg^3h37373dE^^^+--XXXxxx123123h37ddg3g36dhjfhfg6373udbgd634t&source=database&service=writely&accountType=HOSTED_OR_GOOGLE 

AJOUT: Nous savons certificat SSL public de Google Docs. Pouvons-nous vérifier s'il est utilisé sur le PC du client ou s'il y en a un faux? Aide-t-il?

enter image description here

Mise à jour & Conclusion:

Fiddler agit comme homme-in-the-milieu et injecte un faux certificat racine dans cert racine de confiance Windows. le magasin. Génère ensuite une fausse certification pour le site cible. Le navigateur utilise cette fausse certification - clé publique - & crypte & envoie des données, à Fiddler lui-même. Fiddler décrypte les données avec une fausse certification racine - clé privée -. Et puis utiliser la certification d'origine du site distant & crypte les données & envoie au site cible. Répète les mêmes choses en sens inverse au navigateur de réponse.

J'ai simplement demandé comment détecter ces fausses certifications sur une autre question. Si je construis une application simple avec .NET, l'application utilisera & utiliser la certification "default/stored" de Windows pour le site cible. Si ce n'est pas le cas, Fiddler en générera une à la volée.

Alors ...

  1. Je ne vous fiez pas le certificat sous Windows' et obtenir le certificat authentique directement à partir du site cible/ou je dois inclure un certificat valide de site cible dans mon application.

  2. Je dois modifier le code source de l'API Google Data pour utiliser mon certificat SSL authentifié inclus -un fichier .crt simple- sur mes communications https. Ainsi, les données seront cryptées dans mon application et décryptées sur le site cible uniquement. Sécuriser la mémoire (pour rendre les choses plus difficiles) est la prochaine étape.

J'ai écrit ces choses comme référence pour l'avenir qui recherche mêmes sujets & être approuvés par vous.

Merci.

Quelqu'un a déjà été mentionné sur les certificats faux:

  1. Detecting Man in the Middle Attacks with DNS By Jason Coombs, December 18, 2003
+4

C'est un mot de passe vraiment mauvais. – Rawling

+0

Puis-je forcer mon application/API Google à ignorer/interdire tout certificat non approuvé? –

+1

Ok les gars, j'ai corrigé le mot de passe. Maintenant quoi? –

Répondre

0

Maintenant, je peux détecter qu'un faux certificat est utilisé ou non. Il ne s'agit pas seulement de sécuriser mon mot de passe, toutes mes communications SSL sont visibles y compris les autres données sensibles.

match SSL aux deux extrémités

SSL match at both ends

MITM Suspect!

MITM Suspect!


Bien sûr, SSL faux peut contenir des chaînes correspondant, donc je devrais comparer les deux fichiers de certificat pour assurer qu'ils sont identiques. Ou mieux simplement chiffrer une chaîne de test avec les deux certificats et comparer les résultats ...

5

La raison Fiddler peut révéler votre mot de passe est parce qu'il agit comme un proxy HTTPS. Il agit comme un homme-dans-le-milieu; décrypter votre trafic sécurisé côté client et le rechiffrer avant de l'envoyer au serveur cible. Tout cela se produit avant que votre trafic sécurisé quitte votre système. Une fois qu'il quitte votre ordinateur, les données sont cryptées.

Tant que vous êtes sûr que votre ordinateur est protégé contre les logiciels malveillants et autres logiciels de ce type, vous devriez considérer le trafic HTTPS sécurisé et crypté et à l'abri de la surveillance.

Avez-vous installé l'autorité de certification racine du fiddler? Si tel était le cas, votre système fait confiance au certificat émis par le logiciel Fiddler de la même manière que les certificats émis par Verisign ou d'autres autorités de confiance.

Dans la plupart des environnements de programmation, vous devez vous concentrer sur accept an untrusted certificate. Il aurait donc dû échouer à la vérification avant d'envoyer le trafic au serveur.

EDIT: Si vous essayez de sécuriser l'accès à un magasin de GData, alors vous devriez lire le Authentication and Authorization documentation WRT à ce sujet. Oui, c'est une douleur dans le cul, mais c'est un moyen de sécuriser les données sans révéler les informations de votre compte utilisateur au niveau de l'application client.

+0

Je prévoyais de distribuer mon application. –

+2

Même si vous sécurisez votre communication HTTPS, l'utilisateur malveillant peut espionner la mémoire du projet et extraire le mot de passe à partir de là. – Zruty

+0

Je suis d'accord avec @Zruty, si vous stockez le mot de passe dans une application distribuée, alors il peut et va être extrait (tout ce qui compte est l'effort requis pour effectuer l'extraction). Qu'est-ce qui est stocké sur google-side qui nécessite vos informations d'identification pour y accéder? – Petesh

2

vous pouvez cacher le trafic sortant de votre application avec ce code simple:

request.Proxy = null; 

cependant, cela fonctionne avec Fiddler seulement. Je ne sais pas si cela fonctionne avec d'autres logiciels de surveillance du trafic ....

+0

Google devrait mettre en place un mécanisme: je définis une phrase secrète -ou utilise mon mot de passe- sur mon compte Google. J'envoie mon courrier> Google envoie une chaîne cryptée> J'envoie une chaîne décryptée> Google accepte mon login/requête. Cela devrait être sur chaque demande pour éviter de voler ma session. –

+0

@Robin qui ne fonctionnera pas si votre réseau nécessite que vous utilisiez un proxy pour accéder à Internet. – Adrian

+0

cela fonctionne très bien avec une connexion directe ... si vous voulez utiliser un proxy, vous devez l'implémenter dans votre programme ... – SolidSnake

Questions connexes