First of all you need to know if they are RFC4122-compliant, and you need to get the version.
If it's UUIDv1, you can predict them
An UUIDv1 is made of :
- A timestamp (100-ns intervals since the gregorian calendar epoch)
- A version (1) nibble
- Two (or three, lol) bits for the RFC4122 compliance (this causes a nibble to be in [89ab])
- A clock id (random bits)
- A node id (constant 6 bytes mask)
You just have to iterate over the possible timestamps. Beware, there are a lot of 100-ns intervals out there!
Some software are generating UUIDv1 (Grafana dashboards IDs, Airbnb listings, etc.) but some software are relying on random UUIDs, UUIDv4.
If it's UUIDv4, you might steal the PRNG context
As demonstrated a while ago by Nikolay «denish» Denishchenko (Kaspersky), given a debugging access to the process generating UUIDs, one can steal the current RC4 contexts and reproduce elsewhere up to 500000 UUIDs. This has been demonstrated (hi, Will Dean) on Microsoft Windows XP which used a funny 8*RC4 mechanism and only seeded with actual entropy every 500000 UUIDs.
On Windows 10 (it's not exactly the Windows version but rather the .NET framework or the rpcrt4.dll version), it's not RC4 anymore but an AES, presumably used in CTR mode. There is presumably the same entropy reuse.
For more information, check the work I did there https://uuid.pirate-server.com/blog/