If I was going to do a Google Phishing page - I would take the username + password that the user supplied into MY fake page, and POST/CURL that to the Google login.
If Google returns asking for a 2factor to MY fake, I would display the 2 factor prompt to the user, and get them to type the 2-factor into my page, which I would pass back to Google.
Basically you can use a phishing page as a MITM attack.
When you auth against Google with 2-factor, there is a "remember this computer" option - giving the attacker at least 30 days of access to your email without needing a further 2-factor code.
So if the person is tricked enough to type their username+password into a fake google page, they are just as likely to follow through with their 2-factor code.
With U2F, however, a per-host keypair is generated during the setup process and the public key is given to the remote server. Critically, the hostname as seen by your browser is part of the key identifier: see http://security.stackexchange.com/a/71704/311
That means that if in the future even if someone convinces you to visit their phishing site and activate the token, the login attempt will still fail because the hostname as seen by the browser won't match a key on the token.
This only requires the user not to read the URL and match it to the URL in the Google Authenticator app (as far as I can see right now).
If you use U2F, then the domain name difference will mean that the U2F key can never match unless the attacker has control over DNS and is issued a Google.com SSL certificate by an authority the target's computer trusts.
Your browser connects to [email protected] but no matter whether you believe that site to be Google, the U2F process means that it can only use a key for phish.me, which won't work on the Google.com servers even if they relay it.
The only attack which still works is if they control DNS and can forge an SSL certificate, at which point we have much bigger problems than phishing.
Or if they're able to get some malware onto your system permitting them to change your dns servers or alter your hosts file, and add certificates to your OS/browser trust store.
And in the long run I have more faith in making systems more secure via technological means than to try and convince users not to click on links in shady email messages. So by moving the problem into the technology domain and out of the social domain, I'd say it's a big win.
I just announced beta of host based DNS whitelisting app. It trusts top 10,000 domains, then user has to allow other domains.
You're right, though, TOTP is not enough.
(Yes, you can use the Google authenticator, but no, you can't do it if you haven't given your phone number first)
Edit: by "they" I mean GMail - other sites work just fine.
You cannot skip this step on GMail, or at least I couldn't find how. I know you can use the app afterwards, but not before.
Other sites just give me the code, as you say. But not GMail.
What if the password input would only be shown after the user typed in their username, pressed submit and confirmed that they were trying to log in using their mobile device?
* Input username
* Press submit
* Interact with mobile device for 2FA
* Input password
* Press submit
In this example, they waited three days before trying to utilize the broken account; with 2fa they would not have that luxury.
And this (asking for 2fa in the phishing page) would entail a risk as well; if they prompted a user who did not have 2fa for their 2fa credentials, then they would immediately be (at best) confused, and possibly suspicious, so they would have to decide to take the risk as to whether to attempt to target 2fa'ed accounts. And if they don't offer a 2fa prompt, then the phishing attempt has fizzled, as even with the password, they only have one factor.
Any sort of re-ordering of the login process by the good guys is only effective if the customer is extremely suspicious of changes in the login process, which nobody will be. The phishing site is under no obligation to match their flow to that of the faked website unless not matching by itself would be suspicious.
If a human has to be involved on the attacker side, then this gets tricky, since they only have a short window where the 2fa is valid. If an automated process is trying to log on, then it is possible that CAPTCHAs would either prevent getting a full interactive session (i.e. just a "read email" level of access, as for an app) or block the attack entirely.
If 2FA was supposed to protect your password from being phished, then it would have to prompt you for your 2FA code every time you log in, which would be pretty annoying.
Go for something like FreeOTP: https://freeotp.github.io/
Also 2FA can sometimes be overkill, especially if you're constantly logging into accounts which you know will get old and dusty over time (think Yahoo Mail for example)
Google Authenticator doesn't do any kind of push notification when you log in. Each endpoint uses a shared secret (the server and the mobile app share that secret beforehand) to generate a time-limited code.
http://lifehacker.com/google-prompt-lets-you-use-two-factor-...
Essentially its like 2 factor auth, except you arent conveying codes from your phone to the computer.
This is a nice feature because it is a lot more user friendly than normal 2fa, it's free if you have a smart phone and well, it works.
See here: http://arstechnica.com/gadgets/2016/06/googles-new-two-facto...
There are obvious reasons Google does it this way, and it is probably a net increase in security, because a phone as a single factor is less often compromised than a password as a single factor. But I don't like calling that particular arrangement 2fa.
https://youtu.be/bjYhmX_OUQQ?t=98
This phishing test company has one of their employees steal a reporter's cell phone and it's amazing. She basically plays a crying baby on youtube and just grabs the account without knowing anything...
(posted by @nbadg https://news.ycombinator.com/item?id=12598989 )
Used correctly, their TOTP app is a real second factor, because it only lives on a single device that you have.
Yubikey devices are U2F compatible. (And in my opinion one of the best devices out there, thanks to PGP/SSH smartcard support.) But there are also cheaper versions on Amazon that work just as well if you're on a budget.
I have a Yubikey and I find it too obnoxious for day-to-day use. I'd rather use an authenticator app (such as Google's or LastPass').
For TOTP on non-Google sites, I find LastPass better than Google's Authenticator. First, LastPass locks the app with a PIN. Second, it can work with the browser extension to fill out those 6-digit codes for you.
For everyone else, I think the new 2fa Google App approach is better. When you go to login, your Google App pushes a notification to your phone and you have to click on it. This raises the bar to doing a simultaneous login, which isn't impossible, but even if it weeds out a large number of attacks for now, it's worth it!