From f64412f27e42f010da4eefafb08abaa19fe0ccff Mon Sep 17 00:00:00 2001 From: Nick Krichevsky Date: Mon, 25 May 2020 17:32:24 -0400 Subject: [PATCH] Add Mersenne Twister post --- content/posts/reverse-mersenne-twister.md | 335 ++++++++++++++++++++ static/img/mersenne-twister/sanje-falls.jpg | Bin 0 -> 54555 bytes 2 files changed, 335 insertions(+) create mode 100644 content/posts/reverse-mersenne-twister.md create mode 100644 static/img/mersenne-twister/sanje-falls.jpg diff --git a/content/posts/reverse-mersenne-twister.md b/content/posts/reverse-mersenne-twister.md new file mode 100644 index 0000000..1b87dc4 --- /dev/null +++ b/content/posts/reverse-mersenne-twister.md @@ -0,0 +1,335 @@ +--- +title: "Reversing a PRNG: Mersenne Twisters" +date: 2020-05-25T05:31:25-05:00 +draft: false +--- + +In my Network Security course, one of the things I worked on was an attack on a pseudo-random number generator (PRNG). In this case, my team had implemented a two factor authentication (2FA) server that generated tokens using Python's `random` module. By attacking the random number generator, we were able to acquire all future two factor tokens given enough samples. + +# A Brief Background on Mersenne Twisters +Python's `random` module implements random number generation with a PRNG known as a [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister). The numbers that come out of this may _seem_ random, but in reality they are nothing but; like most things in computing, the generation process is fully deterministic. As such, these should not be used for any type of security purposes, as pointed out by the [Python documentation](https://docs.python.org/3/library/random.html). + +> **Warning:** The pseudo-random generators of this module should not be used for security purposes. For security or cryptographic uses, see the `secrets` module. + +I am no mathematician, and I will not be discussing _why_ these deterministic algorithms produce something that seems random[^1]. For the purposes of breaking one of these generators, though, it is worth describing their operation. + +A Mersenne Twister operates by maintaining a giant array of state, the initial state of which is our random seed. This array feeds each element through a series of operations to produce a new pseudo-random number. After exhausting the entire state array, the array is regenerated ("twisted"). To discuss these operations further, we must define a set of constants used in these operations. These constants correspond to MT19937[^2], which is what the Python implementation corresponds to. + +| Constant | Value | Notes | +|----------|------------|-------------------------------------------| +| w | 32 | Word size in bits | +| n | 624 | Degree of recurrence | +| r | 31 | Lower bits of bitmask | +| m | 397 | Offset to generate next state | +| a | 0x9908b0df | Bottom row of twist transformation matrix | +| b | 0x9d2c5680 | Tempering bitmask | +| c | 0xefc60000 | Tempering bitmask | +| s | 6 | Tempering bit shift | +| t | 15 | Tempering bit shift | +| u | 11 | Tempering bit shift | +| l | 18 | Tempering bit shift | + +The process for generating a random numbers from the state array is as follows: +1. `y = x[i]` +2. `y = y ^ (y >> u)` +3. `y = y ^ ((y << s) & b)` +4. `y = y ^ ((y << t) & c)` +5. `y = y ^ (y >> l)` +6. Increment `i` +7. `return y` + +Each time we want to generate a random number, we will call +```py +generate(x[i]) +i += 1 +``` +where `i` represents the next item to inspect within the state array and `x` is our state array. + +Once we exhaust x (i.e. we run the above operation n times), we must perform a twist operation to regenerate the state array. This process is as follows: + +1. Set `x = 0` +2. Compute `y = x[i] & UPPER_MASK | x[(i+1) % n] & LOWER_MASK`, where `LOWER_MASK` is a mask representing the lower `r` bits of `x[i]`, and `UPPER_MASK` represents the upper `w - r` bits. +3. Compute `x[i] = x[(i + m) % n] ^ (y >> 1) ^ (0 if y % 2 == 0 else a)` +4. Increment `i`, and repeat until x is fully regenerated. + +This twist operation can be written as +```py +N = 624 +M = 397 +A = 0x9908b0df +# Upper 1 bit (w - r = 1) +UPPER_MASK = 0x80000000 +# Lower 31 bits (r = 31) +LOWER_MASK = 0x7fffffff + +def twist_state_map(state): + res = [] + for i in range(N): + y = (state[i] & UPPER_MASK) | (state[(i+1) % N] & LOWER_MASK) + next_item = state[(i + M) % N] ^ (y >> 1) ^ (0 if y % 2 == 0 else A) + res.append(next_item) + + return res +``` + +# Components of the Reversal + +The Mersenne Twister's weakness lies in the fact that it is entirely deterministic. Our ultimate goal is to recreate our own copy of the state array. In our example, we were targeting a 2FA server, so once we recreated this array, we were able to generate all future tokens. How might we do this? We must first begin by collecting enough samples from the generator. This might be a session token generator, a 2FA server, or just a simple "guess the number" game. Given that the array is regenerated every 624 iterations (n in the above table), we will need to collect 624 samples. After reversing the generation process on each of these samples, we will have recreated the state array. + +During the generation of a random number, there are two types of steps: `y ^ (y >> k)` and `y ^ ((y << k) & m)`. In order to perform the reversal process, we must learn how to reverse both these processes. + +## The Right Shift +We will begin by describing how to reverse the simple case: a large right shift. Let's consider `y = 3878751475 = 0b11100111001100010000110011110011`[^3]. One of the steps in our generation process is `y ^ (y >> l)`, or `y ^ (y >> 18)` in the case of MT19937. When this operation is performed, it looks something like this: + +``` + 18 bits 14 bits +================== ============= +111001110011000100 00110011110011 # y +000000000000000000 11100111001100 # y >> 18 +-------------------------------- +111001110011000100 11010100111111 # XOR of the two +``` + +The keen eyed will notice that the first 18 bits of our result are identical to those of `y`[^4]. + +We can now perform our first reversal! We know that given, `x ^ y = z`, `x ^ z = y`. Therefore, in order to recover the lower 14 bits, we simply have to XOR our result with itself, shifted. + +``` + 18 bits 14 bits +================== ============= +111001110011000100 11010100111111 # result from previous operation +000000000000000000 11100111001100 # result >> 18 +-------------------------------- +111001110011000100 00110011110011 # XOR of the two +``` + +This result is our original y! With this, we are on our way to cracking the rest of the puzzle. With this in mind, we should be able to reverse the `y ^ (y >> u)` step too, right? Let's again consider `y = 3878751475 = 0b11100111001100010000110011110011`. + +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 10001000011 0011110011 # y +00000000000 11100111001 1000100001 # y >> 11 (u == 11) +--------------------------------- +11100111001 01101111010 1011010010 # XOR of the two +``` + +Unfortunately, we can't apply the same trick again. + +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 01101111010 1011010010 # result from previous operation +00000000000 11100111001 0110111101 # result >> 11 +---------------------------------- +11100111001 10001000011 1101101111 # XOR of the two +``` + +Though we were able to recover the first 22 bits of `y`, the remaining 10 bits do not match at all. Simply, we are not performing an XOR operation that is the inverse of the original on these lower bits. This poses a problem; for any instance where there is a shift smaller than half of the word size (32 bits, in our case), we lose data. + +### Fixing the Small Shift Problem By Waterfalling + +Solving this problem was probably the most headache inducing of the reversal process. With a bit of intuition, though, it's actually quite simple. Despite not getting the lower 10 bits correct, we _do_ know how to recover them. Look closely at the shift performed above, again. The first 10 bits of the middle 11 bits in our final result (`1000100001`) are actually the same bits we XOR'd with the bottom 10 bits of y! + +We can revise our approach to account for this. Instead of attempting to fry the whole fish at once, as it were, we can break up our recovery process into chunks. Recall that in an operation `y ^ (y >> q)`, the first `q` bits are preserved. If we only consider `q` bits at a time during our recovery process (starting with the first q bits, then the following q bits of what we just recovered, etc.) we can recover `y`. For instance, if we are recovering from a shift of 11 bits, we will only perform our XOR with the first 11 bits (shifted by 11), rather than the whole result. We then take the 11 bits we have just recovered, shift them by 11, and repeat. + +I refer to this process as "waterfalling," partly because the process of taking our result and carrying it forward reminds me of a multi-stage waterfall. +{{< relfigure src="img/mersenne-twister/sanje-falls.jpg" caption="A multi-stage waterfall" link="https://www.flickr.com/photos/cvickio/6283313584" >}} + +Here's an example to help make this clear. Recall that when `y = 3878751475 = 0b11100111001100010000110011110011`, `y ^ (y >> 11) = 11100111001011011110101011010010`. We know that the first 11 bits (`11100111001`) match those of `y`. We can use these bits to recover the next 11 bits. + +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 01101111010 1011010010 # y ^ (y >> 11) +11111111111 00000000000 0000000000 # mask for first 11 bits +--------------------------------- +11100111001 00000000000 0000000000 # AND of the two +``` +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 01101111010 1011010010 # y ^ (y >> 11) +00000000000 11100111001 0000000000 # result >> 11 +--------------------------------- +11100111001 10001000011 1011010010 # XOR of the two (call this z) +``` + +We're getting somewhere! Our first 22 bits now match `y`. We now repeat the process for the bottom 10 bits. + +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 10001000011 1011010010 # z +00000000000 11111111111 0000000000 # mask for next 11 bits +--------------------------------- +00000000000 10001000011 0000000000 # AND of the two +``` + +``` + 11 bits 11 bits 10 bits +=========== =========== ========== +11100111001 10001000011 1011010010 # z +00000000000 00000000000 1000100001 # result >> 11 (note the chopped off bit) +--------------------------------- +11100111001 10001000011 0011110011 # XOR of the two +``` + +We have now fully recovered y. + +### Codifying the Right Shift Undo +Here's a Python snippet to perform what we just outlined. +```py +W = 32 # Word size, defined by MT19937 + +def undo_right_transform(value, shift): + res = value + + for i in range(0, W, shift): + # Work on the next shift sized portion at a time by generating a mask for it. + portion_mask = '0' * i + '1' * shift + '0' * (W - shift - i) + portion_mask = int(portion_mask[:W], 2) + portion = res & portion_mask + + res ^= portion >> shift + + return res +``` + +## Left Shift +The left shift operation is nearly identical to our waterfalled right shift method, except we now waterfall from the right, rather than the left. There is one caveat though: All of the left shift transforms have a bitwise AND in them, such as `y ^ ((y << t) & c)`. This may look like we're losing data because of the `&`, but we don't; we're performing our bitwise AND on the data we're XORing with the original. In other words: we're actually performing our bitwise AND on parts of the data we have already restored. I've included an example to help illustrate this, but really, it isn't all that different from the waterfalled right shift process. The only major difference is that we perform the bitwise AND. Again, we will use `y = 3878751475 = 0b11100111001100010000110011110011`. We will now perform `y ^ ((y << t) & c)` + +``` +2b 15 bits 15 bits +== =============== =============== +10 000110011110011 000000000000000 # y << t (t == 15) +11 101111110001100 000000000000000 # c (0xefc60000) +---------------------------------- +10 000110010000000 000000000000000 # AND the two +``` + +``` +2b 15 bits 15 bits +== =============== =============== +11 100111001100010 000110011110011 # y +10 000110010000000 000000000000000 # previous result +---------------------------------- +01 100001011100010 000110011110011 # XOR of the two (call this z) +``` + +And now we perform the reversal... +``` +2b 15 bits 15 bits +== =============== =============== +01 100001011100010 000110011110011 # z +00 000000000000000 111111111111111 # mask off the lower 15 bits +---------------------------------- +00 000000000000000 000110011110011 # AND of the two +``` +``` +2b 15 bits 15 bits +== =============== =============== +00 000110011110011 000000000000000 # result << 15 +11 101111110001100 000000000000000 # c (0xefc60000) +---------------------------------- +00 000110010000000 000000000000000 # AND of the two +``` +``` +2b 15 bits 15 bits +== =============== =============== +00 000110010000000 000000000000000 # result +01 100001011100010 000110011110011 # z +---------------------------------- +01 100111001100010 000110011110011 # XOR the two +``` + +After one cycle, we've recovered the lower 30 bits of y. We continue once more. +``` +2b 15 bits 15 bits +== =============== =============== +01 100111001100010 000110011110011 # previous result +00 111111111111111 000000000000000 # mask off the middle 15 bits +---------------------------------- +00 100111001100010 000000000000000 # AND of the two +``` +``` +2b 15 bits 15 bits +== =============== =============== +10 000000000000000 000000000000000 # result << 15 +11 101111110001100 000000000000000 # c (0xefc60000) +---------------------------------- +10 000000000000000 000000000000000 # AND of the two +``` +``` +2b 15 bits 15 bits +== =============== =============== +10 000000000000000 000000000000000 # result +01 100001011100010 000110011110011 # z +---------------------------------- +11 100001011100010 000110011110011 # XOR of the two +``` + +y is now fully recovered! + +### Codifying the Left Shift Undo +Here's a Python snippet to perform what we just outlined. +```py +def undo_left_transform(value, shift, mask): + res = value + for i in range(0, W, shift): + # Work on the next shift sized portion at a time by generating a mask for it. + portion_mask = '0' * (W - shift - i) + '1' * shift + '0' * i + portion_mask = int(portion_mask, 2) + portion = res & portion_mask + + res ^= ((portion << shift) & mask) + + return int(res) +``` + +# Performing the Reversal +In order to generate the state array, we must collect enough samples to fill it. Each time we perform a reversal of the generation steps, we collect one element of the state array. As previously stated, we must collect 624 samples (n in the above table) from a PRNG to perform this. It is worth noting that in order to make sure we can replicate the state array, these samples must be _consecutive_[^5]. However, once we collect our samples, generating the state array is as simple as feeding them through the reversal steps, in reverse order from the generation steps. +```py +# Constants for MT19937, from the table above +L = 18 +T = 15 +C = 0xefc60000 +S = 7 +B = 0x9d2c5680 +U = 11 + +for sample in samples: + y = undo_right_transform(sample, L) + y = undo_left_transform(y, T, C) + y = undo_left_transform(y, S, B) + y = undo_right_transform(y, U) + state.append(y) +``` + +Each time we run this loop, we are recovering a single item from the state array. In other words: by running over the entire set of samples, we have the state map that produced these numbers! To generate future random numbers, all we have to do is twist the state map, and feed the generation process forward. + +```py +state = twist_state_map(state) +while True: + # Generate the next 624 samples by iterating over the state array + for item in state: + y = item ^ (item >> U) + y ^= (y << S) & B + y ^= (y << T) & C + y ^= y >> L + print(y) + + # Twist the state map again, as we have exhausted our samples + state = twist_state_map(state) +``` + +And that's it! From there, you now have access to the same numbers as the PRNG that output the samples you collected. + +# Takeaways +This project was a nice reintroduction to some of the bit-twiddling I don't get to do very often. The process really is far more simple than one might think. Reversing a PRNG isn't outlandish, and hopefully seeing this process underscores why using a more secure random number generator (like from Python's `secrets` module) is important, especially in authentication contexts like 2FA or session tokens. + +[^1]: For a better explanation of that, take a look at [Archana Jagannatam's "Mersenne Twister - A Pseudo Random Number Generator and its Variants"](http://cryptography.gmu.edu/~jkaps/download.php?docid=1083). +[^2]: See [_randommodule.c](https://github.com/python/cpython/blob/master/Modules/_randommodule.c#L25) in the CPython source. +[^3]: The keen reader will also notice that our reversal process has is using full 32 bit integers. Indeed, using the full 32 bit integers is a requirement of the reversal process. If we have something that is say, a modulus of this result, some additional brute forcing is required. +[^4]: Of course, this depends on CPython using a logical shift. Looking at the source, we can see that `unsigned`s are used, which guarantee such a shift. +[^5]: [A blog post](https://jazzy.id.au/2010/09/25/cracking_random_number_generators_part_4.html) I read during my investigation stated that it is possible to recreate the state array with non-consecutive samples, but didn't go into detail. If I had to guess, depending on which samples were missing, you could likely do some magic with the `x[(i + M) % N]` portion of the twist process, to figure these out, but I haven't looked into it too deeply. You would certainly need to know how many samples were missing in between to do this. For the attack vector my team had explored, we didn't need this. diff --git a/static/img/mersenne-twister/sanje-falls.jpg b/static/img/mersenne-twister/sanje-falls.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62290b41886c6a8a3b7c6a64c983e12850114186 GIT binary patch literal 54555 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 z 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 literal 0 HcmV?d00001