ExpressVPN lektesttools

Een illustratie van een lekkende computerkabel bekeken door een vergrootglas.


De ExpressVPN Lektesttools zijn een uitbreidbaar pakket Python-tools ontworpen voor zowel handmatige als geautomatiseerde lektesten van VPN-applicaties.

Ontwikkeld door het Privacy Research Lab van ExpressVPN, werden de tools in eerste instantie gebouwd voor twee doeleinden:

  • Biedt robuuste, geautomatiseerde regressietests van ExpressVPN-toepassingen
  • Faciliteren van lektestonderzoeken om die applicaties verder te versterken

We realiseerden ons al snel dat deze tools daadwerkelijk een voordeel konden zijn voor de bredere VPN-industrie. We hebben daarom besloten om ze volledig open source te maken onder de MIT-licentie.

We hopen dat we hiermee een meer persoonlijke en veilige online-ervaring voor alle VPN-gebruikers kunnen bieden door:

  • gebruikers en derden een onafhankelijke manier geven om de kwaliteit van VPN’s te verifiëren en hun eigen privacy- en beveiligingsrisico’s te beoordelen;
  • het creëren van een hogere benchmark voor bescherming tegen lekken voor de gehele VPN-industrie; en
  • het samenbrengen van expertise uit de hele industrie rond lektesten

Aan de slag met de tools

De tools zijn te vinden op GitHub op: https://github.com/expressvpn/expressvpn_leak_testing.

Volg de instructies in het bestand README.md om te beginnen. Hoewel we een overzicht van de onderstaande tools bieden, moet de GitHub-repository altijd worden beschouwd als de enige bron van waarheid voor documentatie met betrekking tot de tools.

Merk op dat om de testinstructies in onze Privacy Research Lab-casestudies te volgen, u de lektools moet installeren volgens de documentatie in GitHub. Aangenomen wordt dat wanneer u een van de casestudy’s uitvoert, de hulpprogramma’s root directory verwijst naar de locatie waar je de bovenstaande git repository hebt gekloond.

Overzicht van de tools

We gebruiken Python

De tools zijn voornamelijk geschreven in Python, met een paar helper tools in andere talen indien nodig. We hebben om verschillende redenen voor Python gekozen:

  • Het is platformonafhankelijk en wordt in de meeste gevallen out-of-the-box ondersteund
  • Het is bekend bij een groot percentage ontwikkelaars en is dus gemakkelijk toegankelijk
  • Het is snel ontwikkeld – we hebben geen prestatie-eisen voor een testraamwerk
  • Het is een expressieve taal waarmee we gemakkelijk leesbare code kunnen schrijven

Merk op dat we Python 3 gebruiken, omdat dit snel de de facto standaard wordt.

Het is net als testen van eenheden

De tools zijn ontworpen om te werken als een eenheidstestpakket. Een enkel script wordt gebruikt om de suite te starten, die vervolgens een reeks tests uitvoert. Elke test controleert op een specifiek type lek onder specifieke omstandigheden, bijvoorbeeld onder bepaalde netwerkomstandigheden, en meldt vervolgens een geslaagd, mislukt of fout.

Een test – of testcase – komt ongeveer overeen met een enkel Python-bestand. De testsuite is ontworpen om bekend te zijn bij ontwikkelaars die gewend zijn te werken met eenheidstestsets, dus elke test heeft het vertrouwde patroon van setup (), test () en teardown ().

De testgevallen zijn zo generiek mogelijk ontworpen. Testgevallen kunnen worden uitgevoerd met verschillende VPN-configuraties, verschillende netwerkconfiguraties, enzovoort. Wanneer ze worden uitgevoerd, krijgen ze een configuratie die aangeeft hoe ze voor die specifieke testronde zullen worden uitgevoerd. Een configuratiebestand wordt doorgegeven aan de testsuite met alle uit te voeren tests en hun configuraties.

Een voorbeeld van het uitvoeren van de tests zou zijn om de volgende opdracht uit te voeren vanuit de hoofdmap van het hulpprogramma:

./run_tests.sh -c configs / case_studies / vanilla_leaks.py

Apparaat- en netwerkconfiguraties

De suite is ontworpen om tests uit te voeren op willekeurige configuraties van apparaten en netwerken. We wisten vanaf het begin dat sommige aspecten van VPN-gedrag meer dan één apparaat nodig hadden om te testen, dus hebben we de test suite ontworpen om dit vanaf het begin mogelijk te maken.

Het apparaat waarmee de tests worden uitgevoerd, wordt het test orkestrator. Alle andere apparaten worden eenvoudigweg aangeduid als test apparaten.

Het eenvoudigste type test wordt uitgevoerd op één apparaat (tests voor één apparaat) en test op lekken rechtstreeks op dat apparaat. Men kan bijvoorbeeld een brede klasse Windows-lektests direct op een Windows-apparaat uitvoeren. In dit geval is de test-orkestrator eigenlijk ook een testapparaat. Meer complexe tests (multi-device tests) kunnen een testapparaat met de VPN, een router en een pakketvastlegapparaat omvatten.

Automatisering

Het testpakket is ontworpen om de automatisering van tests volledig te ondersteunen. Uit de doos zullen de tests echter altijd enige handmatige interactie vereisen. Wanneer handmatige interactie vereist is, zal het testpakket de gebruiker duidelijk vragen en hem vertellen wat hij moet doen.

Een van de moeilijkste onderdelen van tests om te automatiseren is controle over de VPN-toepassingen. Voor veel tests is dit inderdaad het enige stukje van de puzzel dat niet is geautomatiseerd. We hebben momenteel geen plannen om ondersteuning te bieden voor het automatiseren van de controle van VPN-applicaties naar de repository. Het toevoegen van dergelijke ondersteuning wordt echter ondersteund door de architectuur van de suite.

Let op: intern hebben we volledige automatisering van onze eigen applicatie geïmplementeerd om continue integratietests mogelijk te maken. We zijn niet van plan deze automatiseringstools beschikbaar te maken als onderdeel van de open source-repository.

Gereedschappen instellen

Gedetailleerde instructies voor het instellen van testapparaten worden gegeven in de GitHub repo. We geven hier slechts een overzicht van wat u kunt verwachten bij het instellen van apparaten.

De testsuite wordt ondersteund op Linux-, macOS- en Windows-apparaten (d.w.z. de Python-suite kan worden geïnstalleerd en direct op deze apparaten worden uitgevoerd). Mobiele apparaten worden ook ondersteund door de tools, maar de suite zelf zal nooit rechtstreeks op deze apparaten worden uitgevoerd.

We raden aan om zoveel mogelijk virtuele machines (VM’s) te gebruiken, met name voor tests met één apparaat. VM’s bieden verschillende voordelen:

  • Eenvoudig nieuwe netwerkinterfaces maken en configureren
  • Hiermee kunt u uw hostmachine vrij houden van de vele software-installaties van derden die de tests vereisen
  • Het vastleggen van verkeer dat een VM verlaat, is eenvoudiger dan het vastleggen van verkeer dat een echt, fysiek apparaat verlaat
  • Gemakkelijk om snapshots vooraf te configureren en terug te zetten wanneer dat nodig is

Voor serieuze diepgaande tests raden we altijd aan om de tests ook op echte fysieke hardware uit te voeren, om mogelijke verschillen tussen gevirtualiseerde en echte hardware uit te sluiten.

Merk op dat de meeste tests root (admin) machtigingen nodig hebben om te draaien, dus om dingen te vereenvoudigen, zal de hele suite als root draaien.

Meer informatie over lekscenario’s waarvoor de tools testen

De volgende casestudy’s bieden meer informatie over enkele van de lekscenario’s waarop deze tools testen, waarin wordt uitgelegd hoe ze van invloed kunnen zijn op uw privacy en beveiliging, en wordt uitgelegd hoe u de relevante tool kunt gebruiken:

  • Case study 1: “Vanille” -lekken
  • Case study 2: WebRTC-lekken
  • Case study 3: Netwerktransitie lekken
  • Case study 4: Onbereikbare VPN-serverlekken
  • Case study 5: VPN-proces crasht lekken

Bijdragen aan de tools

We zijn erg blij om bijdragen aan de tools te ontvangen, of het nu gaat om bugfixes, suggesties voor verbeteringen of volledig nieuwe testcases. U kunt bijdragen indienen via pull-aanvragen in GitHub.

Neem contact met ons op over de tools

U kunt contact met ons opnemen over de tools op [email protected]

Merk op dat de tools momenteel aanwezig zijn alpha staat en zal waarschijnlijk regelmatig veranderen. We zullen er echter naar streven dat de tools altijd bruikbaar zijn.

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map