Non vedo nessuno menzionarlo, quindi permettimi di indicare qualcosa. Forse ho torto ma il pinning certificato implementato in Google Chrome (c'è anche un plugin per Firefox) impedisce lo spoofing del certificato?
relative a domande e risposte
correlate
Naturalmente è possibile annusare il traffico di qualcuno se si controlla l'infrastruttura. Ma questo è possibile in una certa misura e secondo me dipende da quanto sono limitate le azioni degli utenti e qual è la conoscenza dell'utente. Google Chrome è il browser che può essere installato all'interno del profilo utente e penso che non richieda privilegi amministrativi. È inoltre possibile verificare il checksum del pacchetto di installazione per verificare che non sia stato modificato al volo. Poiché Google Chrome utilizza il blocco dei certificati
indipendentemente dal CERT store del sistema operativo -
è ancora vulnerabile a MITM ?
Non vedo alcun modo per impedire agli utenti di utilizzare la versione portatile di VirtualBox con il sistema operativo client che avrà un sacco di strumenti orientati alla privacy che aumenteranno significativamente le possibilità di proteggere la comunicazione con qualsiasi sito web / dominio.
Per favore, sentiti libero di correggermi se ho torto in uno dei precedenti.
----------
Modifica.
Ok. Così ho trovato una soluzione per verificare se il certificato è stato falsificato . Apparentemente non funziona perfettamente con google e apple ma potrebbe essere quello che stai cercando in caso di altri domini.
Al punto:
Esiste un collegamento sul sito che controlla l'impronta digitale del certificato remoto per te . Puoi quindi confrontarlo con quello che vedi nel tuo browser per verificare se corrispondono. Se non corrispondono - questo certificato è falsificato ( Exception is mentioned in the section *What can go wrong with this test?* on the mentioned page.
).
Ecco la prova che funziona. Cert del browser:
Improntadigitaledallaverificadigrc.com:
Penso che dal momento che stai citando qualcosa sulla falsariga della sorveglianza di massa, lo spoofing del certificato sarà anche su più siti https. In tal caso, se uno sarà confermato per essere falsificato, penso che tu possa presumere che siano tutti.
Modifica successiva.
Solo per il piacere di completare la risposta. Poiché potrebbe essere il caso in cui alcuni stati o organizzazioni modificano completamente il browser e il browser non può essere considerato attendibile per confermare la validità del certificato. Ho trovato una funzione di PowerShell che esegue una connessione SSL all'indirizzo specificato e visualizza alcune informazioni utili sul certificato.
Ecco il codice (alias è mio):
function Test-WebServerSSL {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
[string]$URL,
[Parameter(Position = 1)]
[ValidateRange(1,65535)]
[int]$Port = 443,
[Parameter(Position = 2)]
[Net.WebProxy]$Proxy,
[Parameter(Position = 3)]
[int]$Timeout = 15000,
[switch]$UseUserContext
)
Add-Type @"
using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
namespace PKI {
namespace Web {
public class WebSSL {
public Uri OriginalURi;
public Uri ReturnedURi;
public X509Certificate2 Certificate;
//public X500DistinguishedName Issuer;
//public X500DistinguishedName Subject;
public string Issuer;
public string Subject;
public string[] SubjectAlternativeNames;
public bool CertificateIsValid;
//public X509ChainStatus[] ErrorInformation;
public string[] ErrorInformation;
public HttpWebResponse Response;
}
}
}
"@
$ConnectString = "https://$url':$port"
$WebRequest = [Net.WebRequest]::Create($ConnectString)
$WebRequest.Proxy = $Proxy
$WebRequest.Credentials = $null
$WebRequest.Timeout = $Timeout
$WebRequest.AllowAutoRedirect = $true
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
try {$Response = $WebRequest.GetResponse()}
catch {}
if ($WebRequest.ServicePoint.Certificate -ne $null) {
$Cert = [Security.Cryptography.X509Certificates.X509Certificate2]$WebRequest.ServicePoint.Certificate.Handle
try {$SAN = ($Cert.Extensions | Where-Object {$_.Oid.Value -eq "2.5.29.17"}).Format(0) -split ", "}
catch {$SAN = $null}
$chain = New-Object Security.Cryptography.X509Certificates.X509Chain -ArgumentList (!$UseUserContext)
[void]$chain.ChainPolicy.ApplicationPolicy.Add("1.3.6.1.5.5.7.3.1")
$Status = $chain.Build($Cert)
New-Object PKI.Web.WebSSL -Property @{
OriginalUri = $ConnectString;
ReturnedUri = $Response.ResponseUri;
Certificate = $WebRequest.ServicePoint.Certificate;
Issuer = $WebRequest.ServicePoint.Certificate.Issuer;
Subject = $WebRequest.ServicePoint.Certificate.Subject;
SubjectAlternativeNames = $SAN;
CertificateIsValid = $Status;
Response = $Response;
ErrorInformation = $chain.ChainStatus | ForEach-Object {$_.Status}
}
$chain.Reset()
[Net.ServicePointManager]::ServerCertificateValidationCallback = $null
} else {
Write-Error $Error[0]
}
}
Set-Alias TSSL Test-WebServerSSL
Puoi incollarlo nella console di PowerShell - questo registrerà la funzione per l'ora della sessione corrente (finché non chiuderai la finestra della console di PowerShell in modo da non lasciare traccia).
Dopodiché puoi digitare nella stessa finestra:
TSSL www.ipko.pl
L'output sarà simile a questo:
Hotrovatouncodicefunzione qui