Quote (ShaY @ May 5 2017 03:17pm)
comment un antivirus simple peut il etre meilleur que la (l'une des) référence en antivirus + firewall ?
Bon le post va être assez long mais j'ai pas trop le choix.
Ill faut comprendre avant tout la communication sécurisée sur Internet, et le système des certificats ou PKI, pour Public Key Infrastructure. D'abord, comment est-ce qu'on communique de manière sécurisée sur Internet ? Le principe de base c'est celui de la cryptographie asymétrique. Tu as Bob et Alice qui veulent communiquer, mais Alice veut être sûr que seul Bob soit capable de lire ce qu'elle va lui écrire. Elle va chiffrer le message qu'elle veut envoyer à Bob avec une
clé publique, qui, comme son nom l'indique est publique. Par contre, le gros avantage de cette technique, c'est que seule la personne qui possède la clé privée associée à la clé publique est capable de déchiffrer le message.
Donc Alice chiffre le message avec la clé publique de Bob et lui envoie, Bob peut le décrypter avec sa clef publique (en plus de ça, Alice génère un hash du message à l'envoie, pour être sûr qu'une personne au milieu de la conversion qui a aussi la clé publique de Bob ne modifie le message. Quand Bob reçoit le message, il calcul le hash, si il est différent de celui reçu, alors le message a été modifié.)
Du côté de Bob, il doit être sûr que c'est bien Alice qui a envoyer le message. Donc pour ça, Alice signe le message avec sa clé privée. N'importe qui doit pouvoir le décrypter avec la clé publique de Alice, et si Bob peut le décrypter, ça signifie que le message provient bien d'Alice.
Bon alors évidemment comme ça ça à l'air bien, mais c'est pas encore tout à fait fini. Quand Alice parle avec Bob, elle veut être sûre qu'elle utilise bien la clé publique de Bob, et pas la clé de quelqu'un d'autre, et Bob doit aussi être sûr que la signature qu'il reçoit est bien celle d'Alice.
Les deux vont donc utiliser un certificat, qui valide l'identité de l'autre en confirmant sa clé publique par une trusted third party. Quand tu créés un site web par exemple, c'est ça que tu fais. Tu demandes la création d'un certificat après avoir généré ta clé publique et ta clé privée auprès d'une autorité de certification, une autorité de confiance, qui permet aux gens qui te contact d'être certain de la sécurité que tu assures. Pour cela, les deux partis utilisent la clé publique de l'autorité de certification, pour vérifier le certificat de l'autre et sa clé publique.
Et donc, comme tu l'a compris, l'autorité de certification sert à signer les certificats avec sa clé privée, et permet aux parties communicantes de s'assurer qu'il communique avec quelqu'un de trusted.
On parle d'architecture Public Key Infrastructure parce qu'un Internet fonctionne comme une "chaîne de confiance", ou chaîne de certification. Il faut parfois remonter plusieurs autorité de certification d'une chaîne pour vérifier une clé: tu as l'autorité de confiance tout en haut, puis des autorités un peu plus faible en dessous qui sont trusté par l'autorité de confiance et ainsi de suite.
Avec ce que je t'ai écris tu te rend donc bien compte que la clé privée d'un certificat est extrêmement importante, puisque c'est elle qui permet de signer les certificats et autres, et donc de les rendre trusted.
Alors, comment marche un antivirus / firewall. Quand tu l'installe, l'antivirus va installer son certificat racine dans le magasin de certificat de ton OS ou dans un dossier, ou bien une base de données ... Ca dépend de l'antivirus. Ce certificat va devenir le certificat autorité de ta machine, le certificat de confiance. En fait, l'antivirus va jouer le rôle de proxy TLS (le protocole qui te permet d'avoir du HTTPS) qui aura l'autorité sur toutes les signatures.
Quand tu vas envoyer une requête depuis ton browser, ton antivirus va l'intercepter puis il va forger un certificat TLS pour prendre la place du serveur que tu veux contacter. Ensuite, il va créer un deuxième certificat TLS pour contacter le serveur. Du coup toi, ta connexion sécurisée se termine à ton firewall, qui va pouvoir inspecter le contenu de tes paquets, ce qui lui permet de bloquer le trafic non désiré par exemple. Et ça va marcher pareil dans l'autre sens, quand le serveur va te répondre. En fait il ne répond pas au browser, mais à l'antivirus.
Kaspersky a eu la bonne idée de stocker la clé privée de son certificat autorité (donc la clé la plus important qui est sensée être connue de personne) dans le dossier d'installation, en clair. Et en plus cette clé à la bonne idée d'être pré-générée, c'est à dire qu'elle est la même pour tout les gens qui utilisent Kaspersky.
Il suffit à quelqu'un de récupérer ce document sur ton PC, puis de se placer entre toi et Internet, d'intercepter toutes requêtes. Le man-in-the-middle va d'abord générer sa propre clé publique et créer un certificat signé par la clé privée de Kaspersky, qu'il a récupéré sur ta machine. La première requête que tu vas envoyer au site va se faire intercepter, et le mitm va te répondre, en se faisant passer pour le site, en t'envoyant sa propre clé publique, pour que tu chiffres tes messages avec. Comme son certificat est créé à partir de la clé privée de Kaspersky, ce dernier va automatiquement l'accepter. Et la suite tu la devine: tu cryptes tes messages avec la clé publique du mitm, il les décrypte, retransmet tout au site web que tu veux contacter, décrypte les réponses ... Il a accès à toutes les conversions en clair entre toi et n'importe quel site que tu veux contacter.
Avast ne stock pas les données en clair, elles sont stockées dans le magasin de certificat de Windows ou de Firefox sous Linux, et c'est extrêmement difficile d'y accéder (impossible en fait). Il faut que pendant l'install tu inspectes les registres utilisés, si éventuellement il y a des traces, que tu fasses du reverse engineering sur le code de l'installer ... Enfin bref c'est dur, très long, et pas garanti du tout que tu trouves quoi que ce soit.
Voila donc le gros problème de Kaspersky, en plus du fait qu'il soit sensibles à des attaques qui sont vieilles de 6 ou 7 ans et qu'il ai des politiques un peu bizarre, mais j'en parlerais pas le poste est suffisamment long comme ça ^^.