SlideShare a Scribd company logo
1 of 75
Download to read offline
Breaking Vaults
Stealing LastPass protected
secrets
Martin Vigo
@martin_vigo
martinvigo.com
It wasn’t me
Who am I
• Product Security Engineer
• Spaniard / Galician
• Diver
• Gin tonic consumer
• @martin_vigo / martinvigo.com
Most beautiful beach in the world
Amazing seafood
Charlie Sheen’s grandfather was Galician
Wikipedia
“LastPass is a password management service
which seeks to resolve the password fatigue
problem by centralizing user password
management in the cloud”
Password Managers
Why targeting Password
Managers?
• All you want to hack is in one
place
• Social Networks
• Banks
• Email accounts
• Corporate credentials
Why LastPass?
• Enterprise edition
• Large companies use it
• “More than 10,000 corporate customers
ranging in size all the way up to the
Fortune 500”
• Not only credentials
• Credit Cards, Personal documentation,
Private notes, etc.
• Arguably the most popular password
manager
State of the art
• Vulnerabilities
• DNS poisoning
• XSS form injection
All focus on leaking specific secrets
Target: Master Password
All your secrets are belong to us
Architecture
Focus
LastPass browser plugin
• Javascript
• Sandboxed (SOP)
• Injects code into DOM
• Access to filesystem
Security claims
• LastPass has no access to your data
• Local encryption
• Secure storage
Reversing
Meaning making sense of 3MB of obfuscated JS
siesta.py
• Beautifies every JS file
• Injects a payload to every function
• console.log([file] [function] [params])
• Credits to Alberto Garcia (@algillera)
• Identified all accessed files
• Minimized/obfuscated JS
• Storage on Sqlite DBs
• Browser specific implementation
• Business logic
• File location
• Storage
• AES own implementation
• RSA is based on jsbn library
Logic and storage
Local encryption
• 256-bit AES
• CBC and ECB
• Their own implementation
• PBKDF2
• 500 / 5000 rounds (default)
• Unauthenticated query
Encryption key
PBKDF2-SHA256(Username, Master Password, Iterations, 32)
Salt Password key length
LastPass has no access to
your data
PBKDF2-SHA256(Master Password, k, 1, 32)
E/D(k, vault)
Encrypted Vault
Encrypted Vault
PBKDF2(SHA-256, Per user salt, k’, 100000, 32)
What does LastPass see?
The encrypted vault
A 1-round PBKDF2-SHA256 of
the encryption key
Stealing the Master Password
Remember password
• Stores the password locally
• Sqlite DB or prefs.js
• ECB or CBC
• u7W1PsEYsWrtAS1Ca7lOOH==
• !waXcJg8b7wI8XYZnV2l45A==|4d0Hiq+spx50pso2tEMtkQ==
Storage
Chrome Firefox Safari Opera
Windows
#{user_profile['LocalApp
Data']}/Google/Chrome/
User Data/Default/
databases/chrome-
extension_hdokiejnpimak
edhajhdlcegeplioahd_0
#{user_profile[
'AppData']}/
Mozilla/
Firefox/Profiles
#{user_profile['LocalAppData
']}/Apple Computer/Safari/
Databases/safari-
extension_com.lastpass.lpsaf
ariextension-n24rep3bmn_0
#{user_profile['AppData']}/
Opera Software/Opera
Stable/databases/chrome-
extension_hnjalnkldgigidg
gphhmacmimbdlafdo_0
Mac
#{user_profile['LocalApp
Data']}/Google/Chrome/
Default/databases/
chrome-
extension_hdokiejnpimak
edhajhdlcegeplioahd_0
#{user_profile['
LocalAppData']
}/Firefox/
Profiles
#{user_profile['AppData']}/
Safari/Databases/safari-
extension_com.lastpass.lpsaf
ariextension-n24rep3bmn_0
#{user_profile['LocalAppData']
}/com.operasoftware.Opera/
databases/chrome-
extension_hnjalnkldgigidggph
hmacmimbdlafdo_0
Unix
#{user_profile['LocalApp
Data']}/.config/google-
chrome/Default/
databases/chrome-
extension_hdokiejnpimak
edhajhdlcegeplioahd_0
#{user_profile['
LocalAppData']
}/.mozilla/firefox
#{user_profile[‘LocalApp
Data’]}/.opera/widgets/
wuid-*/pstorage
Internet Explorer uses Protected Storage
SQLite DB
• LastPassSavedLogins2 contains the encrypted
credentials
• No root needed
prefs.js (Firefox)
• extensions.lastpass.loginusers contains the usernames
• extensions.lastpass.loginpws contains encrypted passwords
• No root needed
Master password encryption
• AES-256
• IV: Random
• KEY: SHA256(username)
• Data: !L5b/dOyu4EMdmWCYkASQaw==|cHTFJDy1DQi8dPY0AJL/1B=
IV
24 chars (ignoring !)
Separator
26th char
Data
Starting 27th char
MP encryption key Vault encryption key
Profit!
• We located the files
• We know the encryption system
• We have the IV
• We have the key
• We have the data
What about 2 factor auth?
Bypassing 2-factor Auth
2-factor auth
• Supports multiple platforms
• Google Auth, Yubikey, Toopher, etc.
UUID is the “trust token”
What’s going on?
• How is the request forged?
• How is the token generated?
• How is it stored?
• Where is it stored?
How is the request forged?
The token is injected into the DOM
How is the token generated?
• At plugin installation 32 chars
length
• 0-9 A-Z a-z !@#$%^&*()_
length lowercase?
uppercase? digits?
special
chars?
min digits
ambiguous
chars?
make
pronounceable?
How/Where is it stored?
• In plaintext
• Firefox
• In the file “lp.suid”
• Chrome/Safari/Opera
• Local-storage SQLite DB
Design Problems?
• Browsers don’t encrypt local storage
• LocalStorage DB and lp.suid are
accessible and unencrypted
• The token is stored in plaintext
• Token is injected in DOM
• XSS means game over
More problems
• Same token for all browser users
• Fixed token till plugin is reinstalled
• Untrusting the browser has no real effect
• Same token when changing QR Code
• Token fixation
• Attacker can set a token on the client
• Proactive token stealing
• Steal token today, use it tomorrow
Profit!
• We have the file
• We know the encryption
• We have the data
• We have the IV
• We have the key
• We have the 2-factor token
What about if:
“Remember password” was not clicked
There was no way to obtain 2-factor auth token
Abusing Account recovery
Wait… What?
How is account recovery possible if LastPass
does not know my password?
Recovering the account
Provide your email
Recovering the account
Get a unique link
Recovering the account
Press the button
Boom!
• Full, unrestricted access to the vault
• Attacker can set a new password
• But does not have to!
• Bypasses 2 factor-auth
Recover account flow
Email
GET /s/?s=8aa37bb1bb3FAKE03ad4127
302 Location: /recover.php?
&time=1412381291&timehash=340908c353c099c9FAKE6b387002c5a4881ebdf1
&username=test%40test.com&usernamehash=fc7be7e5f6cbec9FAKE2995bd3331c097
POST /otp.php
&changepw=ccb2501724FAKE2b575a214e1052
d0fa27b0726b6HASHdb2e1da3952e
Recover button
Can I directly generate the
recover url?
• time: timestamp when the recovery was
initiated (the link “expires” in 2 hours)
• timehash: salted hash of the timestamp
• username: the email address
• usernamehash: salted hash of the email
302 Location: /recover.php?
&time=1412381291&timehash=340908c353c099c9FAKE6b387002c5a4881ebdf1
&username=test%40test.com&usernamehash=fc7be7e5f6cbec9FAKE2995bd3331c097
Challenges
• I need to generate a valid timestamp
• I need the be able to generate the hashes
• I need the salt
Let’s try…
• Request my own unique url and reuse the hashes in
the victims url
• BINGO!
• Same salt is used for all users
• Link does not truly expire, only the timestamp is
validated against the hash
• There is no need to request account recovery. You
only need a valid url
The salt is the secret
• Still, we need to change the username, and hash it.
• We are only missing the server salt to be able to
generate valid recover urls
• Salts are not designed to be a secret, only random
and unique.
• Oh wait…
“LastPass account email addresses, password reminders,
server per user salts, and authentication hashes were
compromised”
Can I forge the post
request?
• changepw: a derived “disabled OTP”
POST /otp.php
&changepw=ccb25017c4FAKE2b575a21441055d0fa27b0726b6HASHdb2e1da395e
OTPs in LastPass
• 2 types of OTPs
• “True” OTPs for authentication
• “Disabled” OTP
• Let’s call it dOTP
Disabled OTP
• Used to recover the vault
• Which ultimately means for authentication
• It’s set by default
• It’s not the encryption key
How/Where is it stored?
• Unprotected
• Firefox
• In the file {SHA256(username)}_ff.sotp (binary format)
• Needs the extra step: bin2hex
• Chrome/Safari/Opera
• SQLite DB
How is the request forged?
The dOTP is injected into the DOM
From dOTP to vault
Local-storage
getdOTP(username)
dOTP
token=SHA256(SHA256(username+dOTP2)+dOTP2)
/otp.php(username, token)
Set-Cookie: PHPSESSID
pwdeckey
GET /accts3.php
encrypted vault
What is”pwdeckey”?
• It’s not the key to decrypt any password
• It’s the seed to derive the key to decrypt the “vault
key”
• The vault key decrypts all the password, notes, etc.
in the vault
So… What is a Disabled OTP
again?
• A Master Password on steroids
• Bypasses IP restrictions
• Bypasses 2-factor auth
• Bypasses user alerts
pwdeckey == dOTP token
*Took me “only” 3 months to notice…
AES-ECB(SHA256(dOTP_token), encryptedVaultKey )
Vault key decryption
*Remember: dOTP_token = SHA256(SHA256(username+dOTP2)+dOTP2)
How/Where is the vault key
stored?
• Encrypted
• Firefox
• In the file {SHA256(username)}_lpall.slps
• Chrome/Safari/Opera
• SQLite DB
No need to query LastPass!
• dOTP -> Key to decrypt vault key -> Vault key
• Encrypted vault is stored locally by default!
• Iterations;base64 encoded/encrypted vault
• Firefox
• In the file {SHA256(username)}_lps.act.sxml
• Chrome/Safari/Opera
• SQLite DB
Profit!
• We located the token
• We know how to hash it
• We get the vault key
decryption key
• We get the vault
• We decrypt the vault key
• We decrypt the vault
Automating all the stuff
Metasploit module
• Steals and decrypts the master password
• Steals the 2-factor auth token
• Steals the encryption key
• Decrypts the entire vault
• Supports:
• Windows, Mac and Unix
• Chrome, Firefox, Safari and Opera
• IE coming soon
• Meterpreter and shell
• Multiuser
https://github.com/martinvigo/metasploit-framework
Sometime in the next couple weeks
Demo
What about if there is:
No disabled OTP
No access to the machine
No Exploit
No nothing!
Google dorks
“extensions.lastpass.loginpws”
Stop sharing your LastPass
credentials with the entire world!!!!
Hardening LastPass
Hardening LastPass
• Use the binary version of the plugin
• Do not store your master password
• Disable “Account recovery”
• Do not use “Password reminder”
• Activate 2-factor auth
• Prompt for master password to make passwords visible
• Add country restriction
• Update/Randomize PBKDF2 iterations
• Disallow TOR logins
Mahalo!
Questions?
@martin_vigo
martinvigo.com
martinvigo@gmail.com

More Related Content

What's hot

Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Stormpath
 
Web application Security
Web application SecurityWeb application Security
Web application SecurityLee C
 
Application Security around OWASP Top 10
Application Security around OWASP Top 10Application Security around OWASP Top 10
Application Security around OWASP Top 10Sastry Tumuluri
 
Cryptography in PHP: use cases
Cryptography in PHP: use casesCryptography in PHP: use cases
Cryptography in PHP: use casesEnrico Zimuel
 
PHP Experience 2016 - [Palestra] Json Web Token (JWT)
PHP Experience 2016 - [Palestra] Json Web Token (JWT)PHP Experience 2016 - [Palestra] Json Web Token (JWT)
PHP Experience 2016 - [Palestra] Json Web Token (JWT)iMasters
 
Even the LastPass Will be Stolen Deal with It!
Even the LastPass Will be Stolen Deal with It!Even the LastPass Will be Stolen Deal with It!
Even the LastPass Will be Stolen Deal with It!Martin Vigo
 
Token Based Authentication Systems with AngularJS & NodeJS
Token Based Authentication Systems with AngularJS & NodeJSToken Based Authentication Systems with AngularJS & NodeJS
Token Based Authentication Systems with AngularJS & NodeJSHüseyin BABAL
 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJohn Anderson
 
A XSSmas carol
A XSSmas carolA XSSmas carol
A XSSmas carolcgvwzq
 
Maximize your Cache for No Cash
Maximize your Cache for No CashMaximize your Cache for No Cash
Maximize your Cache for No CashYorick Phoenix
 

What's hot (11)

Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)Building Secure User Interfaces With JWTs (JSON Web Tokens)
Building Secure User Interfaces With JWTs (JSON Web Tokens)
 
Web application Security
Web application SecurityWeb application Security
Web application Security
 
Application Security around OWASP Top 10
Application Security around OWASP Top 10Application Security around OWASP Top 10
Application Security around OWASP Top 10
 
Cryptography in PHP: use cases
Cryptography in PHP: use casesCryptography in PHP: use cases
Cryptography in PHP: use cases
 
PHP Experience 2016 - [Palestra] Json Web Token (JWT)
PHP Experience 2016 - [Palestra] Json Web Token (JWT)PHP Experience 2016 - [Palestra] Json Web Token (JWT)
PHP Experience 2016 - [Palestra] Json Web Token (JWT)
 
Even the LastPass Will be Stolen Deal with It!
Even the LastPass Will be Stolen Deal with It!Even the LastPass Will be Stolen Deal with It!
Even the LastPass Will be Stolen Deal with It!
 
Token Based Authentication Systems with AngularJS & NodeJS
Token Based Authentication Systems with AngularJS & NodeJSToken Based Authentication Systems with AngularJS & NodeJS
Token Based Authentication Systems with AngularJS & NodeJS
 
JSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your LifeJSON Web Tokens Will Improve Your Life
JSON Web Tokens Will Improve Your Life
 
A XSSmas carol
A XSSmas carolA XSSmas carol
A XSSmas carol
 
Maximize your Cache for No Cash
Maximize your Cache for No CashMaximize your Cache for No Cash
Maximize your Cache for No Cash
 
Django cryptography
Django cryptographyDjango cryptography
Django cryptography
 

Similar to Breaking vaults: Stealing Lastpass protected secrets

Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoBreaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoShakacon
 
Nodejsvault austin2019
Nodejsvault austin2019Nodejsvault austin2019
Nodejsvault austin2019Taswar Bhatti
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Krzysztof Kotowicz
 
Cache on Delivery
Cache on DeliveryCache on Delivery
Cache on DeliverySensePost
 
[OWASP Poland Day] Saving private token
[OWASP Poland Day] Saving private token[OWASP Poland Day] Saving private token
[OWASP Poland Day] Saving private tokenOWASP
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsChristopher Allen
 
Using Vault for your Nodejs Secrets
Using Vault for your Nodejs SecretsUsing Vault for your Nodejs Secrets
Using Vault for your Nodejs SecretsTaswar Bhatti
 
WordPress Security 101 - Meetup Nairobi March 2020
WordPress Security 101 - Meetup Nairobi March 2020 WordPress Security 101 - Meetup Nairobi March 2020
WordPress Security 101 - Meetup Nairobi March 2020 stk_jj
 
Building Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsBuilding Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsrobertjd
 
Killing Passwords with JavaScript
Killing Passwords with JavaScriptKilling Passwords with JavaScript
Killing Passwords with JavaScriptFrancois Marier
 
Securing Web Applications with Token Authentication
Securing Web Applications with Token AuthenticationSecuring Web Applications with Token Authentication
Securing Web Applications with Token AuthenticationStormpath
 
Hacking sites for fun and profit
Hacking sites for fun and profitHacking sites for fun and profit
Hacking sites for fun and profitDavid Stockton
 
Maximizing Performance with SPDY and SSL
Maximizing Performance with SPDY and SSLMaximizing Performance with SPDY and SSL
Maximizing Performance with SPDY and SSLZoompf
 
Hacking sites for fun and profit
Hacking sites for fun and profitHacking sites for fun and profit
Hacking sites for fun and profitDavid Stockton
 
Defcon 25 Packet Hacking Village - Finding Your Way to Domain Access
Defcon 25 Packet Hacking Village - Finding Your Way to Domain AccessDefcon 25 Packet Hacking Village - Finding Your Way to Domain Access
Defcon 25 Packet Hacking Village - Finding Your Way to Domain Accesseightbit
 
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINEPENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINEChris Gates
 
Managing your secrets in a cloud environment
Managing your secrets in a cloud environmentManaging your secrets in a cloud environment
Managing your secrets in a cloud environmentTaswar Bhatti
 
Better encryption & security with MariaDB 10.1 & MySQL 5.7
Better encryption & security with MariaDB 10.1 & MySQL 5.7Better encryption & security with MariaDB 10.1 & MySQL 5.7
Better encryption & security with MariaDB 10.1 & MySQL 5.7Colin Charles
 
下吧开发总结
下吧开发总结下吧开发总结
下吧开发总结Night Sailer
 

Similar to Breaking vaults: Stealing Lastpass protected secrets (20)

Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoBreaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
 
Nodejsvault austin2019
Nodejsvault austin2019Nodejsvault austin2019
Nodejsvault austin2019
 
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
Biting into the forbidden fruit. Lessons from trusting Javascript crypto.
 
Cache on Delivery
Cache on DeliveryCache on Delivery
Cache on Delivery
 
[OWASP Poland Day] Saving private token
[OWASP Poland Day] Saving private token[OWASP Poland Day] Saving private token
[OWASP Poland Day] Saving private token
 
Bitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & WalletsBitcoin Keys, Addresses & Wallets
Bitcoin Keys, Addresses & Wallets
 
Using Vault for your Nodejs Secrets
Using Vault for your Nodejs SecretsUsing Vault for your Nodejs Secrets
Using Vault for your Nodejs Secrets
 
WordPress Security 101 - Meetup Nairobi March 2020
WordPress Security 101 - Meetup Nairobi March 2020 WordPress Security 101 - Meetup Nairobi March 2020
WordPress Security 101 - Meetup Nairobi March 2020
 
Building Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTsBuilding Secure User Interfaces With JWTs
Building Secure User Interfaces With JWTs
 
Killing Passwords with JavaScript
Killing Passwords with JavaScriptKilling Passwords with JavaScript
Killing Passwords with JavaScript
 
Securing Web Applications with Token Authentication
Securing Web Applications with Token AuthenticationSecuring Web Applications with Token Authentication
Securing Web Applications with Token Authentication
 
Hacking sites for fun and profit
Hacking sites for fun and profitHacking sites for fun and profit
Hacking sites for fun and profit
 
Maximizing Performance with SPDY and SSL
Maximizing Performance with SPDY and SSLMaximizing Performance with SPDY and SSL
Maximizing Performance with SPDY and SSL
 
Hacking sites for fun and profit
Hacking sites for fun and profitHacking sites for fun and profit
Hacking sites for fun and profit
 
Defcon 25 Packet Hacking Village - Finding Your Way to Domain Access
Defcon 25 Packet Hacking Village - Finding Your Way to Domain AccessDefcon 25 Packet Hacking Village - Finding Your Way to Domain Access
Defcon 25 Packet Hacking Village - Finding Your Way to Domain Access
 
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINEPENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
 
Managing your secrets in a cloud environment
Managing your secrets in a cloud environmentManaging your secrets in a cloud environment
Managing your secrets in a cloud environment
 
Better encryption & security with MariaDB 10.1 & MySQL 5.7
Better encryption & security with MariaDB 10.1 & MySQL 5.7Better encryption & security with MariaDB 10.1 & MySQL 5.7
Better encryption & security with MariaDB 10.1 & MySQL 5.7
 
下吧开发总结
下吧开发总结下吧开发总结
下吧开发总结
 
presentation
presentationpresentation
presentation
 

More from Martin Vigo

Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsPhonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsMartin Vigo
 
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsPhonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsMartin Vigo
 
From email address to phone number, a new OSINT approach
From email address to phone number, a new OSINT approachFrom email address to phone number, a new OSINT approach
From email address to phone number, a new OSINT approachMartin Vigo
 
Ransombile: yet another reason to ditch sms
Ransombile: yet another reason to ditch smsRansombile: yet another reason to ditch sms
Ransombile: yet another reason to ditch smsMartin Vigo
 
Compromising online accounts by cracking voicemail systems
Compromising online accounts by cracking voicemail systemsCompromising online accounts by cracking voicemail systems
Compromising online accounts by cracking voicemail systemsMartin Vigo
 
Mobile apps security. Beyond XSS, CSRF and SQLi
Mobile apps security. Beyond XSS, CSRF and SQLiMobile apps security. Beyond XSS, CSRF and SQLi
Mobile apps security. Beyond XSS, CSRF and SQLiMartin Vigo
 
Building secure mobile apps
Building secure mobile appsBuilding secure mobile apps
Building secure mobile appsMartin Vigo
 
Secure Salesforce: Hardened Apps with the Mobile SDK
Secure Salesforce: Hardened Apps with the Mobile SDKSecure Salesforce: Hardened Apps with the Mobile SDK
Secure Salesforce: Hardened Apps with the Mobile SDKMartin Vigo
 
Creating secure apps using the salesforce mobile sdk
Creating secure apps using the salesforce mobile sdkCreating secure apps using the salesforce mobile sdk
Creating secure apps using the salesforce mobile sdkMartin Vigo
 
Security Vulnerabilities: How to Defend Against Them
Security Vulnerabilities: How to Defend Against ThemSecurity Vulnerabilities: How to Defend Against Them
Security Vulnerabilities: How to Defend Against ThemMartin Vigo
 
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolDo-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolMartin Vigo
 
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolDo-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolMartin Vigo
 

More from Martin Vigo (12)

Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsPhonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
 
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needsPhonerator, an advanced *valid* phone number generator for your OSINT/SE needs
Phonerator, an advanced *valid* phone number generator for your OSINT/SE needs
 
From email address to phone number, a new OSINT approach
From email address to phone number, a new OSINT approachFrom email address to phone number, a new OSINT approach
From email address to phone number, a new OSINT approach
 
Ransombile: yet another reason to ditch sms
Ransombile: yet another reason to ditch smsRansombile: yet another reason to ditch sms
Ransombile: yet another reason to ditch sms
 
Compromising online accounts by cracking voicemail systems
Compromising online accounts by cracking voicemail systemsCompromising online accounts by cracking voicemail systems
Compromising online accounts by cracking voicemail systems
 
Mobile apps security. Beyond XSS, CSRF and SQLi
Mobile apps security. Beyond XSS, CSRF and SQLiMobile apps security. Beyond XSS, CSRF and SQLi
Mobile apps security. Beyond XSS, CSRF and SQLi
 
Building secure mobile apps
Building secure mobile appsBuilding secure mobile apps
Building secure mobile apps
 
Secure Salesforce: Hardened Apps with the Mobile SDK
Secure Salesforce: Hardened Apps with the Mobile SDKSecure Salesforce: Hardened Apps with the Mobile SDK
Secure Salesforce: Hardened Apps with the Mobile SDK
 
Creating secure apps using the salesforce mobile sdk
Creating secure apps using the salesforce mobile sdkCreating secure apps using the salesforce mobile sdk
Creating secure apps using the salesforce mobile sdk
 
Security Vulnerabilities: How to Defend Against Them
Security Vulnerabilities: How to Defend Against ThemSecurity Vulnerabilities: How to Defend Against Them
Security Vulnerabilities: How to Defend Against Them
 
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolDo-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
 
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay ProtocolDo-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
Do-it-Yourself Spy Program: Abusing Apple’s Call Relay Protocol
 

Recently uploaded

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Recently uploaded (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Breaking vaults: Stealing Lastpass protected secrets

  • 1. Breaking Vaults Stealing LastPass protected secrets Martin Vigo @martin_vigo martinvigo.com
  • 3. Who am I • Product Security Engineer • Spaniard / Galician • Diver • Gin tonic consumer • @martin_vigo / martinvigo.com Most beautiful beach in the world Amazing seafood Charlie Sheen’s grandfather was Galician
  • 4. Wikipedia “LastPass is a password management service which seeks to resolve the password fatigue problem by centralizing user password management in the cloud”
  • 6. Why targeting Password Managers? • All you want to hack is in one place • Social Networks • Banks • Email accounts • Corporate credentials
  • 7. Why LastPass? • Enterprise edition • Large companies use it • “More than 10,000 corporate customers ranging in size all the way up to the Fortune 500” • Not only credentials • Credit Cards, Personal documentation, Private notes, etc. • Arguably the most popular password manager
  • 8. State of the art • Vulnerabilities • DNS poisoning • XSS form injection All focus on leaking specific secrets
  • 9. Target: Master Password All your secrets are belong to us
  • 11. Focus
  • 12. LastPass browser plugin • Javascript • Sandboxed (SOP) • Injects code into DOM • Access to filesystem
  • 13. Security claims • LastPass has no access to your data • Local encryption • Secure storage
  • 14. Reversing Meaning making sense of 3MB of obfuscated JS
  • 15. siesta.py • Beautifies every JS file • Injects a payload to every function • console.log([file] [function] [params]) • Credits to Alberto Garcia (@algillera)
  • 16. • Identified all accessed files • Minimized/obfuscated JS • Storage on Sqlite DBs • Browser specific implementation • Business logic • File location • Storage • AES own implementation • RSA is based on jsbn library Logic and storage
  • 17. Local encryption • 256-bit AES • CBC and ECB • Their own implementation • PBKDF2 • 500 / 5000 rounds (default) • Unauthenticated query
  • 18. Encryption key PBKDF2-SHA256(Username, Master Password, Iterations, 32) Salt Password key length
  • 19. LastPass has no access to your data PBKDF2-SHA256(Master Password, k, 1, 32) E/D(k, vault) Encrypted Vault Encrypted Vault PBKDF2(SHA-256, Per user salt, k’, 100000, 32)
  • 20. What does LastPass see? The encrypted vault A 1-round PBKDF2-SHA256 of the encryption key
  • 22. Remember password • Stores the password locally • Sqlite DB or prefs.js • ECB or CBC • u7W1PsEYsWrtAS1Ca7lOOH== • !waXcJg8b7wI8XYZnV2l45A==|4d0Hiq+spx50pso2tEMtkQ==
  • 23. Storage Chrome Firefox Safari Opera Windows #{user_profile['LocalApp Data']}/Google/Chrome/ User Data/Default/ databases/chrome- extension_hdokiejnpimak edhajhdlcegeplioahd_0 #{user_profile[ 'AppData']}/ Mozilla/ Firefox/Profiles #{user_profile['LocalAppData ']}/Apple Computer/Safari/ Databases/safari- extension_com.lastpass.lpsaf ariextension-n24rep3bmn_0 #{user_profile['AppData']}/ Opera Software/Opera Stable/databases/chrome- extension_hnjalnkldgigidg gphhmacmimbdlafdo_0 Mac #{user_profile['LocalApp Data']}/Google/Chrome/ Default/databases/ chrome- extension_hdokiejnpimak edhajhdlcegeplioahd_0 #{user_profile[' LocalAppData'] }/Firefox/ Profiles #{user_profile['AppData']}/ Safari/Databases/safari- extension_com.lastpass.lpsaf ariextension-n24rep3bmn_0 #{user_profile['LocalAppData'] }/com.operasoftware.Opera/ databases/chrome- extension_hnjalnkldgigidggph hmacmimbdlafdo_0 Unix #{user_profile['LocalApp Data']}/.config/google- chrome/Default/ databases/chrome- extension_hdokiejnpimak edhajhdlcegeplioahd_0 #{user_profile[' LocalAppData'] }/.mozilla/firefox #{user_profile[‘LocalApp Data’]}/.opera/widgets/ wuid-*/pstorage Internet Explorer uses Protected Storage
  • 24. SQLite DB • LastPassSavedLogins2 contains the encrypted credentials • No root needed
  • 25. prefs.js (Firefox) • extensions.lastpass.loginusers contains the usernames • extensions.lastpass.loginpws contains encrypted passwords • No root needed
  • 26. Master password encryption • AES-256 • IV: Random • KEY: SHA256(username) • Data: !L5b/dOyu4EMdmWCYkASQaw==|cHTFJDy1DQi8dPY0AJL/1B= IV 24 chars (ignoring !) Separator 26th char Data Starting 27th char MP encryption key Vault encryption key
  • 27. Profit! • We located the files • We know the encryption system • We have the IV • We have the key • We have the data
  • 28. What about 2 factor auth?
  • 30. 2-factor auth • Supports multiple platforms • Google Auth, Yubikey, Toopher, etc.
  • 31. UUID is the “trust token”
  • 32.
  • 33. What’s going on? • How is the request forged? • How is the token generated? • How is it stored? • Where is it stored?
  • 34. How is the request forged? The token is injected into the DOM
  • 35. How is the token generated? • At plugin installation 32 chars length • 0-9 A-Z a-z !@#$%^&*()_ length lowercase? uppercase? digits? special chars? min digits ambiguous chars? make pronounceable?
  • 36. How/Where is it stored? • In plaintext • Firefox • In the file “lp.suid” • Chrome/Safari/Opera • Local-storage SQLite DB
  • 37. Design Problems? • Browsers don’t encrypt local storage • LocalStorage DB and lp.suid are accessible and unencrypted • The token is stored in plaintext • Token is injected in DOM • XSS means game over
  • 38. More problems • Same token for all browser users • Fixed token till plugin is reinstalled • Untrusting the browser has no real effect • Same token when changing QR Code • Token fixation • Attacker can set a token on the client • Proactive token stealing • Steal token today, use it tomorrow
  • 39. Profit! • We have the file • We know the encryption • We have the data • We have the IV • We have the key • We have the 2-factor token
  • 40. What about if: “Remember password” was not clicked There was no way to obtain 2-factor auth token
  • 42. Wait… What? How is account recovery possible if LastPass does not know my password?
  • 44. Recovering the account Get a unique link
  • 46. Boom! • Full, unrestricted access to the vault • Attacker can set a new password • But does not have to! • Bypasses 2 factor-auth
  • 47. Recover account flow Email GET /s/?s=8aa37bb1bb3FAKE03ad4127 302 Location: /recover.php? &time=1412381291&timehash=340908c353c099c9FAKE6b387002c5a4881ebdf1 &username=test%40test.com&usernamehash=fc7be7e5f6cbec9FAKE2995bd3331c097 POST /otp.php &changepw=ccb2501724FAKE2b575a214e1052 d0fa27b0726b6HASHdb2e1da3952e Recover button
  • 48. Can I directly generate the recover url? • time: timestamp when the recovery was initiated (the link “expires” in 2 hours) • timehash: salted hash of the timestamp • username: the email address • usernamehash: salted hash of the email 302 Location: /recover.php? &time=1412381291&timehash=340908c353c099c9FAKE6b387002c5a4881ebdf1 &username=test%40test.com&usernamehash=fc7be7e5f6cbec9FAKE2995bd3331c097
  • 49. Challenges • I need to generate a valid timestamp • I need the be able to generate the hashes • I need the salt
  • 50. Let’s try… • Request my own unique url and reuse the hashes in the victims url • BINGO! • Same salt is used for all users • Link does not truly expire, only the timestamp is validated against the hash • There is no need to request account recovery. You only need a valid url
  • 51. The salt is the secret • Still, we need to change the username, and hash it. • We are only missing the server salt to be able to generate valid recover urls • Salts are not designed to be a secret, only random and unique. • Oh wait… “LastPass account email addresses, password reminders, server per user salts, and authentication hashes were compromised”
  • 52. Can I forge the post request? • changepw: a derived “disabled OTP” POST /otp.php &changepw=ccb25017c4FAKE2b575a21441055d0fa27b0726b6HASHdb2e1da395e
  • 53. OTPs in LastPass • 2 types of OTPs • “True” OTPs for authentication • “Disabled” OTP • Let’s call it dOTP
  • 54. Disabled OTP • Used to recover the vault • Which ultimately means for authentication • It’s set by default • It’s not the encryption key
  • 55. How/Where is it stored? • Unprotected • Firefox • In the file {SHA256(username)}_ff.sotp (binary format) • Needs the extra step: bin2hex • Chrome/Safari/Opera • SQLite DB
  • 56. How is the request forged? The dOTP is injected into the DOM
  • 57. From dOTP to vault Local-storage getdOTP(username) dOTP token=SHA256(SHA256(username+dOTP2)+dOTP2) /otp.php(username, token) Set-Cookie: PHPSESSID pwdeckey GET /accts3.php encrypted vault
  • 58. What is”pwdeckey”? • It’s not the key to decrypt any password • It’s the seed to derive the key to decrypt the “vault key” • The vault key decrypts all the password, notes, etc. in the vault
  • 59. So… What is a Disabled OTP again? • A Master Password on steroids • Bypasses IP restrictions • Bypasses 2-factor auth • Bypasses user alerts
  • 60. pwdeckey == dOTP token *Took me “only” 3 months to notice…
  • 61. AES-ECB(SHA256(dOTP_token), encryptedVaultKey ) Vault key decryption *Remember: dOTP_token = SHA256(SHA256(username+dOTP2)+dOTP2)
  • 62. How/Where is the vault key stored? • Encrypted • Firefox • In the file {SHA256(username)}_lpall.slps • Chrome/Safari/Opera • SQLite DB
  • 63. No need to query LastPass! • dOTP -> Key to decrypt vault key -> Vault key • Encrypted vault is stored locally by default! • Iterations;base64 encoded/encrypted vault • Firefox • In the file {SHA256(username)}_lps.act.sxml • Chrome/Safari/Opera • SQLite DB
  • 64. Profit! • We located the token • We know how to hash it • We get the vault key decryption key • We get the vault • We decrypt the vault key • We decrypt the vault
  • 66. Metasploit module • Steals and decrypts the master password • Steals the 2-factor auth token • Steals the encryption key • Decrypts the entire vault • Supports: • Windows, Mac and Unix • Chrome, Firefox, Safari and Opera • IE coming soon • Meterpreter and shell • Multiuser https://github.com/martinvigo/metasploit-framework Sometime in the next couple weeks
  • 67. Demo
  • 68.
  • 69. What about if there is: No disabled OTP No access to the machine No Exploit No nothing!
  • 72. Stop sharing your LastPass credentials with the entire world!!!!
  • 74. Hardening LastPass • Use the binary version of the plugin • Do not store your master password • Disable “Account recovery” • Do not use “Password reminder” • Activate 2-factor auth • Prompt for master password to make passwords visible • Add country restriction • Update/Randomize PBKDF2 iterations • Disallow TOR logins