Skip to content

Commit 33a2b1a

Browse files
committed
Rephrased "bypass FIDO" to improve clarity and precision & fixed address logging
1 parent 799f0d6 commit 33a2b1a

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

Readme.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ This is a novel technique that leverages the well-known Device Code phishing app
55
It dynamically initiates the flow as soon as the victim opens the phishing link and instantly redirects them to the authentication page.
66
A headless browser automates this by directly entering the generated Device Code into the webpage behind the scenes.
77
This defeats the 10-minute token validity limitation and eliminates the need for the victim to manually perform these steps, elevating the efficiency of the attack to a new level.
8-
What makes Device Code phishing especially dangerous is its ability to bypass FIDO’s phishing protection.
8+
What makes Device Code phishing especially dangerous is that no authentication method, not even FIDO, is able to protect against this type of attack.
99
Additionally, the victim interacts with the original website they expect, making it impossible to detect the attack based on a suspicious URL.
1010

1111
## Demo
@@ -22,8 +22,9 @@ as soon as the victim clicks on the phishing link.
2222

2323
This attack technique is even more dangerous than attacker-in-the-middle (AitM) proxies, because the
2424
user **enters their credentials on the original webpage**, making it nearly impossible to detect the phishing attempt based on a suspicious URL.
25-
Additionally, this technique can **bypass phishing-resistant FIDO** credentials!
26-
In some cases, the user may not even need to enter credentials if a session is already active.
25+
Additionally, the victim might not need to authenticate interactively because a session is still active.
26+
Therefore, the victim has almost no time to realize that this is not legitimate.
27+
And not to forget that Device Code Flow is undermining FIDO's phishing resistance!
2728

2829
Currently, this tool is limited to targeting Microsoft Azure Entra users, but the underlying technique is not restricted to any specific vendor.
2930

cmd/server.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import (
66
"github.com/spf13/cobra"
77
"log"
88
"log/slog"
9+
"net"
910
"net/http"
11+
"os"
1012
"time"
1113
)
1214

15+
const EdgeOnWindows string = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edq/135.0.0.0"
1316
const MsAuthenticationBroker string = "29d9ed98-a469-4536-ade2-f981bc1d605e"
14-
const EdgeOnWindows string = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0"
1517
const DefaultTenant string = "common"
1618

1719
var (
@@ -37,13 +39,25 @@ var runCmd = &cobra.Command{
3739
// Set up a resource handler
3840
http.HandleFunc("/lure", lureHandler)
3941

42+
host, port, err := net.SplitHostPort(address)
43+
44+
if err != nil || port == "" {
45+
slog.Error("'"+address+"' is not a valid address", err)
46+
os.Exit(1)
47+
}
48+
4049
// Create a Server instance to listen on port
4150
server := &http.Server{
4251
Addr: address,
4352
}
4453

4554
slog.Info("Start Server using Tenant:" + tenant + " ClientId:" + clientId)
46-
slog.Info("Use address http://localhost" + address + "/lure")
55+
if host == "" {
56+
host = "localhost"
57+
}
58+
59+
slog.Info("Use address " + host + ":" + port + "/lure")
60+
4761
// Listen to HTTP connections and wait
4862
log.Fatal(server.ListenAndServe())
4963
},

0 commit comments

Comments
 (0)