This article, and most articles about this, doesn't explain where FBI got that GDID from. Ok, Microsoft has a list of IP addresses that has been used by a computer with a certain GDID, but FBI needs to get the GDID in the first place, and then try to bind that to a person.
I found another article that explains the process a bit better:
> Stokes got caught because he used the same Windows device for everything, and the GDID stitched all of it back together after the fact.
> Scattered Spider members phoned the jewelry retailer’s IT help desk from Google Voice numbers, posed as locked out employees, and talked support staff into resetting three accounts, two with administrator privileges. From there they installed a tunneling tool called ngrok to get past the retailer’s network defenses, moved roughly 77 gigabytes of data to Amazon cloud storage using ngrok [...]
> Investigators later subpoenaed ngrok and found the account used in the attack had been created on May 12, 2025, at 19:21 UTC from a VPN proxy IP address run by Tzulo, a hosting provider. The IP was a dead end. VPN proxies do that. But the GDID is built different.
> Microsoft’s records showed that at that exact same minute, a Windows device carrying GDID g:6755467234350028 had visited the ngrok signup page. Three hours later, the same GDID visited the retailer’s own website, through the same Tzulo proxy address used to set up the ngrok account. It gave the FBI a device, that don’t rotate the way VPN exit nodes do.
https://www.windowslatest.com/2026/07/10/you-cant-fully-disa...
Although this doesn't explain where Microsoft got that traffic data from. How do Microsoft know which sites a computer visit?
https://petri.com/windows-10-ignoring-hosts-file-specific-na...
Microsoft is a post-privacy corporation. Eventually, we really have to stop acting so shocked about this sort of thing from them.
As I grow older, I simply do not have the patience or the will to do all these workarounds and tweaks to my OS to turn it from a piece of barely-working corporate spyware into something that I can call a productive tool.
It also seems like interacting with the OS is on its way out anyway, as most people essentially interact with computers via the browser (essentially a different sandboxed OS altogether), whether on desktop or mobile device.
What they did was the opposite: ask Microsoft for GDIDs used by attacker-associated IPs within several 24-hour time periods during which attack-related activity took place. Windows pings Microsoft regularly with the GDID, establishing links between your GDID and any IP addresses you use. The IP logs from Microsoft and the VPS provider showed at least 10 instances where a single VPN IP accessed the attacker's VPS and also pinged Microsoft with at least one GDID within a 24-hour period. They found a constant GDID that all instances shared. This seems to have been the most damning GDID-related evidence in the DOJ complaint [1] and yet it wasn't mentioned in the article you linked (or any other articles about this I've seen pop up on HN). It includes the diagram from the complaint (page 18) that outlines this, but devoid of context. The ngrok stuff that the article focuses on was just the cherry on top and was discussed later in the complaint.
What also becomes clear when you read the complaint is that the GDID was just one piece of the puzzle and that they had plenty of other evidence. Attacker-associated IPs were used to access the suspect's Apple, Snapchat, and Facebook accounts, at least one of which was his actual residential IP, not a VPN IP. Once they had revealed the identity of the person who owned these accounts, they were able to all-but-confirm that this was in fact the attacker.
What remains unclear even after reading the complaint is how they were so sure that the GDID they obtained visited specific websites, but honestly, at that point, they were already drowning in evidence, so I don't know if it matters that much. It could be as simple as "he was signed into Edge with his Microsoft account and had sync enabled".
[1] https://www.justice.gov/usao-ndil/media/1450651/dl?inline
[1] https://www.intego.com/mac-security-blog/google-forced-to-de...
It does make me wonder if people would react differently if Linux or Apple did the same thing.
That's sounds nice and all, but everything about it, from "Nothing is theoretical" to "evidence, tagged by confidence level" goes out the window when you find claude as one of the commit authors, and the content is clearly copy pasted output from claude with very little editing. Worse yet, one of the sources he cites is also clearly AI output.
I'm not even against the use of AI here. I would rather see it clearly say either "this is what claude found after I told it to investigate" or "yes this is generated by claude, but I independently verified each of the points myself".
"Oh look, this one has almost all the serial numbers of components and attached-devices as that other one, it's probably the same computer with a fresh install, let's make a note of that..."
But do any popular linux distributions use an identifier? Ubuntu, Kali, Mint, Arch, etc?
It seems an attractive way for devs to work out telemetry. Awful in reality; but I imagine attractive.
when LTSC exists why are people using W11 ?
This criminal mastermind got caught because he did everything but sign his name to the crimes while holding two pieces of government identification in presence of a notary.
The FBI did the bare minimum in terms of old-fashioned detective work, and correlated evidence from various sources.
The obsession with GDID is a complete nothing-burger and I'm tired of seeing it on the front page every other day.
"required" spyware: https://learn.microsoft.com/en-us/windows/privacy/required-d...
"optional" (but on by default) spyware: https://learn.microsoft.com/en-us/windows/privacy/optional-d...
This is my favorite:
Data Description for Browsing History data type
Microsoft browser data subtype: Information about Address bar and Search box performance on the device
* Text typed in Address bar and Search box
* Service response time
* Autocompleted text, if there was an autocomplete
* Navigation suggestions provided based on local history and favorites
* Browser ID
* URLs (may include search terms)
* Page title and notification textIt is silly that Google had to explicitly state that in the disclaimer.
It’s much easier to switch browsers than operating systems, especially if you have apps that require windows.
Besides, there is no obligation to be equally outraged about all things.
> Three hours later, the same GDID visited the retailer’s own website, through the same Tzulo proxy address used to set up the ngrok account.
Indeed. One can regenerate it on each shutdown / reboot. The process is a little different depending on whether one has systemd or not. It's a dbus thing but systemd ingests it and there is a specific process around updating that in systemd.
There is also the NetworkID in Firefox about:networking#networkid
Another trackable piece of information on most systems is the creation time of / which just about any application can query unless it is properly isolated. This can be turned into a short unique hash. There are hacky ways to change the Birth time on unmounted filesystems using debugfs which may result in corruption. Some overlay filesystems do not support Birth time but that is not going to help most people unless the general populous expect all applications to be isolated in name spaces and overlay filesystems but this would have to be an expected pattern across all applications universally.
stat / | grep irth
Birth: 2023-04-17 20:27:01.000000000 +0000
stat / | grep irth | md5sum
8b5e849954373f8f3c2a625847e4e858But given there's no cloud accounts on linux I would imagine it's trivially changed just like a NIC's MAC
Also, seems unlikely it would be used for any single-signon with cloud services.
But it would be very foolish for a blackhat to turn on browser sync...
Many, many apps read /etc/machine-id if you do a quick github search.
Apps may have been silently correlating our activity for years without us knowing.
We know DHCP, EFI, GNOME, popularity-contest and many other apps already use it. There are countless ways it could be used already that are hard to detect.
Ultimately there's no informed consent here: The average consumer is disbelieving and surprised if you tell them what kinds of stuff Microsoft has/can put into a dossier. Nobody thinks: "Ah, Edge on a fresh Windows install, I'm glad Microsoft knows every site I visit, and can tell I'm a friend with someone because we use the same bluetooth speaker."
[0] It seems wrong to use the verb "leaks" when it's so obviously intentional.
Not in the US, of course.
Using the school news paper shared account, I copied the bullies coursework in to the public share, made changes to the coursework on my own user account and then copied it back to their work folder using the school news papers account.
MS Office keeps an "Last edited by" field so I got caught. If I had used the school newspaper account to make the edit I wouldn't of been caught. Rookie error. I too discovered a DCOM in the Windows 98 help file that revealed all the hidden shares on the network which scared the school. This was 2004 and I was 15.
Oh and the time, I bought a BB gun off someone at school. I was a librarian in the schools library and showed it off someone of the older grade year. The head librarian confiscated it and reported it to the headmaster. The guy then gave me a copy of Q3A and I stuck with violence the video-game way.
It also helps that "Linux" isn't a monolith. One person's installation can be very different from another in terms of the software used. If one piece of software collects, that collection isn't as valuable as Microsoft's because the userbase is much smaller.
It's not perfect, but it's a hell of a lot better. A lot more resistant to abuse. Security in a lot of contexts tends to be relative like that. One's house isn't impenetrable; it's just better than another, in part because the neighborhood is better.
Whether everyone does that correctly, that's a different question. On the other hand, while developers should be more careful about how they use identifiers like this, if an application on your machine wants to track you they don't need /etc/machine-id.
/var/lib/dbus/machine-id
Exists on Slackware64 15.0 but /etc/machine-id
Does not.The issue with the microsoft account was not unique IDs - tons of unique things on a machine.... it was a unique thing tied to an account and shipped to remote places.
You can most likely get better security than mobile's, you just need to e.g. learn to write your own SELinux policies, etc. Facilities are there; they just have a learning curve.
Another option may be to set up a container or PID namespace and give your tool direct access to that /proc.
Regarding SELinux, looking at https://unix.stackexchange.com/questions/767564/selinux-deni...
> the entries under /proc/<pidnr>/ are running under the respective pid's domain
it seems doable, since you can differentiate which PID belongs to what.
As I mentioned earlier, in April 2026, the FBI caught an alleged Scattered Spider member. The guy was hiding his traffic behind a VPN, with IPs across three different countries. And guess what? It wasn't a wrong move that gave him away - it was an identifier that your Windows carries 24/7 and that Microsoft hands over to authorities when asked: the GDID. I've already talked about it in this article , and after writing it, I started wondering whether we could get rid of it.
So I spun up a small Windows 11 Pro VM and dug in with the help of my favorite LLM - here's what I found. What works, and especially what doesn't work at all, you'll see.
First, you need to understand what the GDID actually is. It's not your motherboard's serial number, it's not a hash tied to your hardware. No - it's a 64-bit PUID, meaning an identifier that Microsoft's servers attach to your account the moment you open a Windows session. It's written in plain text in your registry, your machine registers it in a directory on Microsoft's side, and a service quietly sends it back up when needed. And if you change your IP with a VPN, it doesn't care. The GDID doesn't budge one bit.
Let's start by seeing it with our own eyes. Open a PowerShell and paste this:
$lid=(Get-ItemProperty 'HKCU:SOFTWAREMicrosoftIdentityCRLExtendedProperties').LID
"g:$([Convert]::ToUInt64($lid,16))"
On my VM, it spat out g:6755487812206045. That's the one Microsoft can tie to everything I do. (In theory, mind you, because this is the code associated with my VM, so I don't care - which is why I'm showing it to you.)

You just read the label that's been stuck on your back.
Basic reflex: delete the key from the registry at HKCU:SOFTWAREMicrosoftIdentityCRLExtendedProperties and boom, no more tracker. That's what I tried first… I wiped the value, restarted the service that handles it, and nothing. Done? Nope. I opened the Microsoft Store for two seconds, and the GDID came back. Not a new one either - THE SAME ONE!!
That's the crazy part. Your GDID isn't stored on your disk - it's stored at Microsoft, firmly attached to your account like a barnacle on a rock. Your PC just re-downloads it again and again. Sure, if you reinstall everything, Windows gives you a new number, fine, but the old one and everything linked to it stays nice and warm on their servers. The past, you never get that back…
Another piece of advice you see everywhere is to disable Windows telemetry. On my VM, the classic telemetry service was already stopped. And yet my GDID was right there, perfectly readable, and the services that send it back up were running at full speed. The tracker doesn't go through the telemetry you think you're cutting. It goes elsewhere - through the Connected Devices Platform and Delivery Optimization services.
You can click every privacy toggle in the settings, it doesn't give a damn.
Since we can't erase it, we're going to do the only thing within our power: stop it from getting out. And without logging out of the Microsoft account, so the PC stays usable.
For that, we have 2 levers. The first is to disable the services that register and report your machine's info. The second is to send Microsoft's servers into the void simply via the hosts file - so even if the snooping services are running, they can't reach anyone. And most importantly, we don't touch login.live.com, otherwise goodbye Microsoft account login.
There is one small catch, as you might expect… The service that reports the GDID, DoSvc, refuses to be disabled the normal way. Even as admin, Windows throws an "Access denied" at you. The workaround is to disable it directly in the registry, where the admin does have write access where the service manager blocks you.
Now, rather than dumping a ton of lines of code for you to copy-paste, I've bundled everything into clean, tested scripts, with a command to revert everything back to how it was.
The project is here: no-gdid on GitHub . First run the read-only audit to see where you stand, then the blocking scripts in preview mode, and only then with the option that actually applies changes. Test it in a VM with a snapshot before doing this on your real machine, because we are disabling system services after all. And if you just want to cut the network for a specific process without all this fuss, good old ProcNetBlocker already handles part of the job.
Open a PowerShell as administrator, and the first time, do it in a VM with a snapshot so you can test things and get familiar with the commands. Step 1, clone the project:
winget install --id Git.Git
git clone https://github.com/Korben00/no-gdid
cd no-gdid
First, take a look at your own situation. This audit is read-only - it changes nothing, it just shows you your GDID and which services in the chain are running:
powershell -ExecutionPolicy Bypass -File .auditGet-GDID-Audit.ps1

Then see what the mitigation would change, without applying anything. Without the -Apply option, both scripts run in preview mode and simply list what they would do:
powershell -ExecutionPolicy Bypass -File .mitigateDisable-GDID-Services.ps1
powershell -ExecutionPolicy Bypass -File .mitigateBlock-GDID-Endpoints.ps1

If you're happy with that, let's cut it for real. This time we add -Apply: the services that register and report the device are disabled, and the corresponding Microsoft servers are sent into the void via the hosts file. Your Microsoft account stays connected:
powershell -ExecutionPolicy Bypass -File .mitigateDisable-GDID-Services.ps1 -Apply
powershell -ExecutionPolicy Bypass -File .mitigateBlock-GDID-Endpoints.ps1 -Apply

And to revert everything back to how it was, a single command:
powershell -ExecutionPolicy Bypass -File .mitigateRevert-GDID.ps1

Once applied, everything will go quiet… the registration services will be stopped, their servers unreachable, and your Microsoft account will stay connected. The GDID will obviously still be readable on disk, but it won't be reported back to Microsoft anymore.
I'm not going to run a tutorial that sells you a dream. These steps reduce what Microsoft will be able to correlate going forward, but they don't erase your GDID - which has been sitting on their servers since your very first login - and they don't make you anonymous. Also, switching to a local account as I've seen suggested elsewhere removes the path we just blocked, but there's no proof yet that an anonymous identifier doesn't take over behind the scenes.
The only truly solid option for sensitive activity is more drastic: don't do that activity on Windows. A live Linux system, for example, gives you full control over what leaves your machine. Everything else is just damage limitation, nothing more.
There you go - defending your privacy starts with knowing what's been stuck on your back, and now you know. No thanks, Microsoft.
Source: The Register and the reverse engineering by SmtimesIWndr .
This article was originally written in French and automatically translated. Read the original.
This article may contain AI-generated images. I take great care with every article, but if you spot a slip-up, let me know!