IT-säkerhetsgranskning av VeraCrypt

veracrypt granskning

Det franska cybersäkerhetsföretaget QuarksLab har utfört en publik it-säkerhetsgranskning av VeraCrypt. VeraCrypt är en populär uppföljare till det numera nedlagda projektet TrueCrypt. Granskningen har bekostats av organisationen OSTIF och backas upp finansiellt av bl.a. DuckDuckGo och VikingVPN.

Granskningen fokuserar på sådant som inte granskas av tidigare projekt såsom den som NCC Group utförde av TrueCrypt (jag skrev om det här). Och sådant nytt som granskningen inkluderar är:

  • DCS EFI Bootloader 1.18 (UEFI)
  • Camellia, Kuznyechik, GOST 28147-89, Streebog
  • Stöd för att expandera volymer
  • Stöd för Unicode på Windows
  • StrSafe istället för string.h
  • Musrörelser för att öka på entropi

Sådant som ej granskats är följande: Mac OS X/Sierra stödet, Linux-stöd samt diagonstik-verktyget.

För oss som jobbar med IT-säkerhetsgranskningar är det alltid intressant att läsa denna typ av rapport och det finns alltid något att lära av. Granskningen uppdagade följande sårbarheter:

  • 8 kritiska sårbarheter
  • 3 medium-klassade sårbarheter
  • 15 lågt klassade eller info-läckage

Sådant som uppdagats av granskningen är åtgärdat i version 1.19 av VeraCrypt. Och några av åtgärderna som genomfördes av VeraCrypto-projektet är följande:

  • Stöd för att skapa nya volymer med GOST 28147-89 är borttaget.
  • Biblioteken för  XZip och XUnzip var ej uppdaterade och är nu borttagna och har ändrats till libzip.
  • Åtgärd för att en angripare kan avgöra lösenordets längd i bootloader. Även åtgärder för att försöka säkerställa att lösenord raderats från UEFI har genomförts.
  • Fix för att förhindra minnesöverskrivning när återställningsdisk läses in.

Här nedan kan du ladda hem den 44-sidiga granskningsrapporten i sin helhet i PDF-format. Granskningen tog 32 arbetsdagar för två personer:

veracrypt-granskning

Facebook Messenger blir krypterat

Facebook börjar nu sakta men säkert att rulla ut kryptering direkt mellan användare, så kallad end-to-end kryptering. Tidigare har enbart meddelanden mellan användaren och Facebooks servrar varit krypterade (med MQTT + över TLS?).

Enligt en källa till Wired så baseras den nya krypteringstekniken på Signal-protokollet som är utvecklat av Moxie Marlinspike och Open Whisper Systems.

Tyvärr så måste användaren själv göra ett aktivt val för varje konversation att End-to-end kryptering ska användas.

Men självklart ett steg i rätt riktning för Facebook Messengers alla 900 miljoner användare. Även så släppte Google sin nya app Allo som fungerar på liknande sätt där Google mixar end-to-end kryptering i en och samma app vilket kan göra det svårt för användare att urskilja om kryptering verkligen används.

Att Facebook väljer att göra det till ett val för användaren att slå på kryptering beror troligtvis på att företaget inte vill ha problem med amerikanska myndigheter.

Nätaktivisten och säkerhetsforskaren Christopher Soghoian skriver på Twitter:

Ny GPU-instans från Amazons molntjänst EC2

amazon-web-servicesAmazon har en molnjänst vid namn EC2 där du kan hyra datorkapacitet per timme. De har nu lanserat en ny GPU-instans som gör att du kan knäcka lösenord ännu snabbare, något som vi som jobbar med IT-säkerhet gillar.

Den nya instansen heter p2.16xlarge och har 16 st GPU-kärnor och körs med ett Nvidia Tesla K80-grafikkort. Det går så klart inte att jämföra med exempelvis Nvidia Titan X men du slipper springa iväg till affären och köpa ett grafikkort eller en häftig Sagitta Brutalis. Kostnaden för en instans av p2.16xlarge ligger på$14.4 vilket är ca 123 SEK/h.

Här kommer några färska prestandasiffror som jag just hämtade in från en instans som jag startade upp och konfigurerade på under 10 minuter:

$ ./hashcat64.bin -b
hashcat (v3.10) starting in benchmark-mode...

OpenCL Platform #1: NVIDIA Corporation
======================================
- Device #1: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #2: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #3: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #4: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #5: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #6: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #7: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #8: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #9: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #10: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #11: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #12: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #13: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #14: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #15: Tesla K80, 2859/11439 MB allocatable, 13MCU
- Device #16: Tesla K80, 2859/11439 MB allocatable, 13MCU

Hashtype: MD5

Speed.Dev.#1: 4232.2 MH/s (93.96ms)
Speed.Dev.#2: 4228.3 MH/s (94.21ms)
Speed.Dev.#3: 4179.4 MH/s (95.75ms)
Speed.Dev.#4: 4246.1 MH/s (96.86ms)
Speed.Dev.#5: 4488.8 MH/s (92.94ms)
Speed.Dev.#6: 4460.2 MH/s (91.24ms)
Speed.Dev.#7: 4314.4 MH/s (94.73ms)
Speed.Dev.#8: 4569.5 MH/s (88.65ms)
Speed.Dev.#9: 4465.4 MH/s (90.92ms)
Speed.Dev.#10: 4147.8 MH/s (95.67ms)
Speed.Dev.#11: 4426.8 MH/s (93.48ms)
Speed.Dev.#12: 4078.0 MH/s (98.75ms)
Speed.Dev.#13: 4339.8 MH/s (94.58ms)
Speed.Dev.#14: 4459.1 MH/s (91.09ms)
Speed.Dev.#15: 4263.1 MH/s (94.88ms)
Speed.Dev.#16: 4221.2 MH/s (93.16ms)
Speed.Dev.#*.: 69120.1 MH/s

Och med den GPU-instansen hos Amazon som var snabbast tidigare så såg det ut så här när det gäller MD5:

Hashtype: MD5

Speed.Dev.#1.: 1714.1 MH/s (95.69ms)
Speed.Dev.#2.: 1705.1 MH/s (96.22ms)
Speed.Dev.#3.: 1714.5 MH/s (95.36ms)
Speed.Dev.#4.: 1726.3 MH/s (95.01ms)
Speed.Dev.#*.: 6860.0 MH/s

Så en klart förbättring.

Så lagrar Dropbox ditt lösenord

Att Dropbox blev hackade och samtliga lösenord hamnade på vift 2012 är något som är välkänt. Av analys visade det sig att hälften av lösenorden var SHA1-hashade och andra hälften använde sig av bcrypt-hash. Detta troligtvis pga en pågående övergång från SHA1 till bcrypt.

Det har hänt en hel del sedan 2012 och Dropbox avslöjade nyligen hur de lagrar sina lösenord på ett säkert sätt.

Först och främst använder Dropbox precis som Facebook (se nedan) flertalet lager, som en lök. Att använda SHA512 före bcrypt är främst av två anledningar: överbelastningsattack om långa lösenord används samt att vissa implementationer av bcrypt kortar ner lösenordet till 72 bytes.

bcrypt används med en cost på 10 (arbetsfaktor/work factor) samt en unik salt för varje användare. Detta steg tar ungefär 100ms på Dropbox servrar.

Sista steget är AES256 med en global nyckel som är samma för alla hashar. Detta är för att om hela databasen blir snodd eller servern där lösenorden lagras så finns det ett extra skydd med en nyckel som är svår att hitta.

Dropbox lösenord

Även Facebook använder flertalet lager för sina lösenord (läs mer här):

Facebook lösenord

Dropbox har sedan tidigare utvecklat zxcvbn som ser till att användarna väljer bra lösenord först och främst. Även så kan vi anta att Dropbox kontinuerligt bevakar läckage av lösenord på nätet och informerar användare om just deras lösenord finns med eller går att knäcka.

Givetvis kan man alltid argumentera att det nu finns säkrare alternativ till bcrypt såsom argon2 och scrypt. Men bcrypt har bra stöd i många programbibliotek och har funnits ända sedan 1999. Dock uppger Dropbox att de har mer erfarenhet av bcrypt men kommer troligtvis att uppgradera till argon2.

Även uppger Dropbox att de kommer i framtiden att överväga att använda en HSM (kanske CrypTech?) för att lagra den globala nyckeln. Denna nyckel roteras också regelbundet uppger de på sin blogg.

MQTT-tjänster står oskyddade på internet

CERT-SE som är en del av Myndigheten för samhällsskydd och beredskap (MSB) går ut och varnar för att flertalet MQTT-tjänster står oskyddade direkt mot internet i Sverige.

Efter att Lucas Lundgren på IT-säkerhetskonferenser såsom Defcon och SEC-T berättat om MQTT-protokollet samt sökt av hela internet efter sårbara tjänster med masscan så var resultatet häpnadsväckande. Tusentals servrar stod helt vidöppna för vem som helst att ansluta till dessa och läsa av all information som flödade via dem (subscribe).

MQTT används som en realtids-förmedlare och är ett mycket lättviktigt protokoll vilket gör det lämpligt att användas för små enheter inom IoT (Internet of Things) exempelvis.

Många tjänster använder också MQTT för att publicera data på webbsidor helt ofiltrerat vilket öppnar upp för olika typer av injektionsattacker såsom XSS (cross site scripting).

Det finns en säkrare version av MQTT som använder TLS och går under benämningen secure-mqtt och använder TCP port 8883. Givetvis ger dmqttetta också en extra overhead och ökar antalet paket och paketstorleken.

Lucas har försett CERT-SE med datat från sina skanningar. Och myndigheten kan då konstatera att ingen av de oskyddade svenska servrarna tillhör CERT-SE:s prioriterade aktörer (myndigheter, kommuner och vissa företag).

Förutom MQTT så finns det andra protokoll som bör kontrolleras och som CERT-SE lyfter upp som möjliga orsaker till problem: OPC UA, HTTP (REST/JSON), CoAP, DDS och AMQP.

Här kan du ladda hem Lucas presentation som PDF:

mqtt defcon

 

SCADA/ICS-säkerhetskonferens 4SICS

Om några veckor är det dags för årets upplaga av den internationella konferensen om IT-säkerhet i cyberfysiska system (SCADA). Konferensen går under namnet 4SICS (four-six dvs landskoden till Sverige) och hålls på Nalen mitt i Stockholm.

Erik Johansson som tillsammans med Robert Malmgren står bakom konferensen berättar att  ämnen som kommer att behandlas på konferensen i år är cyberattackerna mot Ukraina i slutet av december 2015. Då drabbades flera elbolag i Ukraina av samordnade IT-attacker som slog ut elförsörjningen för mer än en kvarts miljon abonnenter. De Ukrainska elbolagen utsattes för en så kallad APT (Advanced Persistent Threat) då en grupp sofistikerade angripare under lång tid planerade, beredde sig tillgång till, och från insidan studerade elbolagens IT-miljöer. I över ett halvårs tid planterades skadlig kod, öppnades nya bakvägar och stals information i olika förberedelsesteg inför det att man den 23:e december mörklade delar av Ukraina.

Robert M. Lee, expert på säkerhet i SCADA-system och en av de som bistod Ukrainska myndigheter med utredningen, är en av de internationella specialister som bjudits in som talare på konferensen.

Lee berättar:

IT-attacken på det ukrainska kraftnätet var den första i sitt slag. Många detaljer kring attacken har kommit till allmän kännedom, men på 4SICS kommer de som deltog i analysen av attacken att samlas och belysa detaljer och erfarenheter på ett sätt som inte gjorts tidigare.

Andra inbjudna specialister är Anton Cherepanov & Robert Lipovsky från antivirusföretaget ESET som kommer att göra en djupare genomgång av vad man egentligen vet om den skadliga koden vid namn BlackEnergy som bland annat användes mot elbolagen i Ukraina.

Erik berättar även att presentationerna kommer att avslutas med rundabordssamtal där tekniska specialister och myndighetsföreträdare kommer diskutera tekniska brister, tillvägagångssätt, konsekvenser samt IT som vapen i olika konflikter. Innan konferensen finns det även möjlighet att gå flertalet kurser inom säkerhet i cyberfysiska system.

Ett axplock av övriga talare är: Jens Zerbst, CIO på Vattenfall, som kommer beskriva hur man uppnår försvar på djupet i en tid när det finns APT. Maik Brüggemann, säkerhetsforskaren som påvisat hur skadlig kod kan sprida sig direkt mellan olika PLC:er.

Margrete Raaum, CEO vid norska KraftCERT, med egna erfarenheter från härom året då Norge utsattes för cyberattacker och vet hur man bör hantera incidenter.

Konferensen och kurserna går under datumet 25-27 Oktober 2016, läs mer här: https://4sics.se

500 miljoner Yahoo-konton stulna

Yahoo meddelade precis att företaget har blivit av med uppgifter om 500 miljoner konton. Bland dessa uppgifter återfinnes bl.a. bcrypt-hashade lösenord (till största delen) samt telefonnummer och födelsedata. Och även i vissa fall krypterade och icke krypterade frågor och svar för lösenordsåterställning.

Det som kanske är mest spektakulärt är att intrånget skedde i slutet av 2014 och att Yahoo hävdar att det är statsunderstött.

Yahoo meddelar även att de just nu håller på att informera samtliga som är drabbade av detta omfattande läckage men många frågor är fortfarande obesvarade såsom:

  • Har Yahoo känt till detta intrång sedan 2014 eller upptäcktes det först nu?
  • Hur kan de hävda att en statsunderstödd angripare ligger bakom?

Och hur säkert är bcrypt som användes på majoriteten av lösenorden? Det beror helt på vilka inställningar Yahoo använde för sin ”work factor”, om de använde 12 som inställning så tar det runt 0,5 sek att testa ett lösenord. Men troligtvis använde Yahoo 10 som work-factor som var standard för några år sedan och då kan angriparen testa att forcera minst 10 lösenord i sekunden. Vilket förvisso är otroligt bra jämfört med exempelvis osaltad MD5.

Läs mer hos Yahoo här.

 Nya säkerhetshöjande funktioner i macOS Sierra

För några timmar sedan så släppte Apple en ny version av sitt operativsystem. Denna nya version heter macOS Sierra och är en uppföljare till OS X El Capitan.

Sierra innehåller över 60 stycken säkerhetsfixar (som givetvis även finns tillgängliga för El Capitan) och här är ett axplock av dessa:

  • Apple HSSPI Support CVE-2016-4697:
  • AppleEFIRuntime CVE-2016-4696
  • AppleMobileFileIntegrity CVE-2016-4698
  • AppleUUC CVE-2016-4699 och CVE-2016-4700
  • Application Firewall CVE-2016-4701
  • ATS CVE-2016-4779
  • Audio CVE-2016-4702

Den sårbarhet som är allvarligast enligt min bedömning är CVE-2016-4702 som gör att en angripare över nätverket kan exekvera kod (remote code execution).

Även så innehåller Sierra en intressant funktion som eventuellt öppnar upp för framtida säkerhetsbrister är möjligheten att låsa upp sin stationära dator via Apple Watch.

Sierra åtgärdar även ett säkerhetsrelaterat problem som har uppmärksammats genom att Dropbox försöker ”sno” användarens lösenord och således erhålla möjlighet att styra OS X:

dropbox

Men detta behöver inte Dropbox göra längre då användaren nu får en ny dialogruta som frågar efter behörigheter på följande sätt:

dropbox-accessibility-permission

Även så går det inte längre att via Systeminställningarna ställa in så att appar går att köra från alla ställen då ”Anywhere” saknas som ett tredje alternativ här:

sierra

Men detta förfarande i Gatekeeper går givetvis att ändra med lite kommandotolks-magi. Dock inget jag rekommenderar:

sudo spctl --master-disable 

En till säkerhetshöjande åtgärd inom Gatekeeper är nu att osignerade nyinstallerade appar kommer att hamna i en ny katalog med slumpmässigt namn. Detta är för att försvåra för skadlig kod att utnyttja en brist som Patrick Wardle på företaget Synack identifierade 2015. Även så skrotas stödet för PPTP i Sierra och iOS 10.

macOS Sierra är en kostandsfri uppgradering och går hitta i Apple App Store.

Uppdatering: Joachim Strömbergson kommenterar även att Sierra använder flertalet mer molntjänster för olika appar vilket gör att mer information lagras och hanteras i Apples molntjänster.

Uppdatering 2: Det heter givetvis El Capitan och inget annat.

Supersäkra OpenBSD 6.0 nu släppt

Det supersäkra operativsystemet OpenBSD är nu ute i version 6.0 och innehåller en hel del säkerhetshöjande funktioner. Nytt är bl.a. att W^X är obligatoriskt för bas-systemet och ger förstärkt skydd mot buffer-overflows (likt DEP).

För att ytterligare höja säkerheten har Linux-stödet, usermount samt systrace tagits bort. Även har OpenSMTPD, LibreSSL, OpenSSH, OpenNTPD uppdaterats med nya funktioner och säkerhetshöjande åtgärder.

En ny intressant funktion i OpenSSH är stöd för ProxyJump. Denna funktion låter dig hoppa via en server vidare, exempelvis ssh -J jump.host.se [email protected]

Även denna intressanta men enkla metod för att försvåra return into libc payloads:

To deter code reuse exploits, rc(8) re-links libc.so on startup, placing the objects in a random order.

Följande paket följer med grundsystemet från tredjepartsutvecklare:

  • Xenocara (based on X.Org 7.7 with xserver 1.18.3 + patches, freetype 2.6.3, fontconfig 2.11.1, Mesa 11.2.2, xterm 322, xkeyboard-config 2.18 and more)
  • GCC 4.2.1 (+ patches) and 3.3.6 (+ patches)
  • Perl 5.20.3 (+ patches)
  • SQLite 3.9.2 (+ patches)
  • NSD 4.1.10
  • Unbound 1.5.9
  • Ncurses 5.7
  • Binutils 2.17 (+ patches)
  • Gdb 6.3 (+ patches)
  • Awk Aug 10, 2011 version
  • Expat 2.1.1

Följande säkerhetsbrister är fixade i LibreSSL:

  • CVE-2016-2105—EVP_EncodeUpdate overflow.
  • CVE-2016-2106—EVP_EncryptUpdate overflow.
  • CVE-2016-2107—padding oracle in AES-NI CBC MAC check.
  • CVE-2016-2108—memory corruption in the ASN.1 encoder.
  • CVE-2016-2109—ASN.1 BIO excessive memory allocation.

Och OpenSSH fixar CVE-2016-6210 som gör att du kan lista ut användarnamn.

Givetvis finns det även en musik framtagen för denna version, lyssna på den här: https://www.openbsd.org/lyrics.html#60a

Identifiera Projekt Sauron (Remsec)

Detta är en guide till hur Er organisation kan identifiera den senaste avancerade skadliga koden vid namn Projekt Sauron.

Förutom att uppdatera antivirus med senate databaser så kan du även titta på nätverkstrafik för att se kommunikation till kontrollservrar (C&C). Ett till alternativ är att söka efter så kallade IOC:er (indicators of compromise).

IOC:er kan vara hashsummor, text-strängar, IP-adresser, URL:ar och mycket mer. Man kan säga att det är en typ av signaturer som är öppna, till skillnad från många antivirus-databaser som är stängda (förutom clamav).

Det finns ett antal gratis verktyg för att söka efter IOC:er samt ett antal olika öppna sammanställda listor med IOC:er.

Exempel på en IOC som identifierar Powershell verktyget Invoke Mimikatz:

Invoke Mimikatz Powershell

Ovan regel använder sig av Yara-formatet som är C-liknande. Yara är även ett öppet verktyg samt bibliotek till Python.

Följande metodik är framtagen av OpenIOC-projektet.

IOC metodik

lokiOch som du kan se av ovan process så är tanken att IOC:er snabbt ska gå att applicera i en mängd olika mjukvaror såsom IDS/IPS, SIEM, nätverket eller lokalt på en klient/server.

För att försöka identifiera Projekt Sauron så laddar jag hem först Loki-scannern:

wget https://github.com/Neo23x0/Loki/raw/master/loki.exe

Och sedan senaste signaturbiblioteket:

wget https://github.com/Neo23x0/signature-base/archive/754d19604d7c36580a3f254f341d220343ca9bdd.zip

Sedan måste du se till att hash-summan för loki.exe är korrekt samt att katalogstrukturen är korrekt. Sha256:

99239b002d76ea81fe239de2ad4d8fef4157ea0759a39e777a68e050df580342

Annars får du ett felmeddelande likt detta om katalogstrukturen är felaktig:

Traceback (most recent call last):
 File "<string>", line 811, in initialize_filename_iocs
WindowsError: [Error 3] The system cannot find the path specified: 'E:\\./signat
ure-base/iocs/*.*'
Traceback (most recent call last):
 File "<string>", line 1253, in <module>
 File "<string>", line 119, in __init__
 File "<string>", line 860, in initialize_filename_iocs
UnboundLocalError: local variable 'ioc_filename' referenced before assignment

När allt väl är på plats så är det bara att starta genomsökningen. Förslagsvis som en användare med behörighet att läsa processer och filer (Administratör):

LOKI IOC Scanner

Sen är det bara att vänta. En genomsökning kan ta flera timmar för en enda klient eller server.

När den är klar söker du efter följande text:

[RESULT] Indicators detected!
[RESULT] Loki recommends checking the elements on Virustotal.com or Google an
riage with a professional triage tool like THOR APT Scanner in corporate netw
s.
[NOTICE] Finished LOKI Scan SYSTEM: IE9WIN7 TIME: 20160813T10:53:49Z

Håll även koll på falska positiva (false-positives) indikationer. Windows sökverktyg SearchIndexer.exe gillar exempelvis att indexera upp dina signaturer och kan göra så att Loki varnar.

Loki arbetar med följande kontroller:

1. Filnamns IOC:Er
Regex-matchning på sökväg eller namn

2. Yara Regelkontroll
Yara signaturkontroll på fil eller process (minne)

3. Hashkontroll
Jämför hashar i en mängd olika format (MD5, SHA1, SHA256)

4. C2 kontrollkanal
Kontrollerar anslutningspunkter mot C2 IOCs (nytt sedan Loki version 0.10)

Och även följande presentations-bild från företaget Mandiant FireEye beskriver en indikator bra:

whats-an-indicator-copy_1

Senare kommer jag även gå igenom hur du använder verktyget Volatility för offline-analys, en av mina favoriter.

Denna guide fungerar för att identifiera nästan all skadlig kod, bara man vet vad man söker efter. Givetvis så bör även nätverkstrafik kontrolleras, men i fallet med Sauron så finns det ännu inga DNS-namn eller IP-adresser ut som man kan kontrollera för kommunikation och kontrollkanaler (C&C).

Och så klart underlättar nätverksforensik om du redan sparar undan DNS-uppslag eller all trafik som flödar ut/in på nätverket med trafikinspelning, något jag rekommenderar.

Värt även att poängtera är att när du exekverar kod såsom Loki i enlighet ovan så kan även detta innebära en säkerhetsrisk.

Men att kontrollera mot filnamn, hashsummor och annat är sådant som är statiskt. Antagonisten kommer bara att ändra sådant när hen blir upptäckt. Därför är det även bra att lära sig metoderna som nyttjas och kontrollera dessa.