Captured Windows 8 KMS Activation Network Traffic

Discussion in 'Windows 8' started by Dhilip89, Aug 14, 2012.

  1. TCM

    TCM MDL Addicted

    Aug 25, 2011
    808
    417
    30
    Sort out your issues. What are you, 12?
     
  2. hack

    hack MDL Senior Member

    Sep 14, 2009
    293
    252
    10
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. jarod75

    jarod75 MDL Novice

    Oct 29, 2009
    27
    21
    0
    +1000 ! Bob65536 do a great job to share his knowledge.

    Thanks to him ...
     
  4. dedificator

    dedificator MDL Novice

    Jul 29, 2009
    9
    41
    0
    #164 dedificator, Sep 24, 2012
    Last edited: Sep 24, 2012
    @jarod...

    About SBOXes:
    There is ONLY ONE SBOX (yes, standard Rijndael SBOX) and FFMUL2 permutation table (used in rijndael too).
    What u wrote about disassembly, really is precomputed keyschedule (it isn't derived prom password as in standard approach, rather stored in precomputed form with only one mission - add as much possible complexity to dumping process ... table bytes are NOT stored directly, but decrypted in runtime one by one only when used)

    This looks like

    byte[0x10] hash;
    static byte[6, 0x10, 0x100] KEY = .... //this part is VERY GOOD protected :)
    void AddRoundKey(int round)
    {
    for(int i = 0; i < 0x10; i++)
    hash = KEY[round, i, hash];
    }

    And another difference from original Rijndael spec (compare it yourself):

    void TransformHash() //called for each of 128 bit block of original data
    {
    AddRoundKey(0);
    for (var r = 1; r < 6; r++)
    {
    ShiftRows();
    MixColumns();
    SubBytes();
    ShiftRows();
    MixColumns();
    AddRoundKey(r);
    }
    ShiftRows();
    }

    ShiftRows, MixColumns, SubBytes are same as in Rijndael....

    feedback between blocks is defined as 'hash ^= data' before transform, last block is padded with '0x80, 0, ..... 0' if needed

    And ... sppsvc IS very difficult target, so don't blame others, simple investigation with debugger there won't help

    P.S.
    This is hash signature generation code, not encryption
     
  5. jarod75

    jarod75 MDL Novice

    Oct 29, 2009
    27
    21
    0
    I blame nobody except GarbelloTheNoobs!:p I know that sppsvc is complex. that why I try to help ...

    It really interessting to compare the routine with WZT keygen !!!

    So similar but so different (for the result ....)

    Take a look to these monster offuscator Function: sub_5BE565, sub_5BEC7A & sub_5BF38F
    They are just basic SBOX defacto but to debug, you can spend two life to do it ... The spiderFunction ! :D
     
  6. dedificator

    dedificator MDL Novice

    Jul 29, 2009
    9
    41
    0
    #166 dedificator, Sep 24, 2012
    Last edited: Sep 24, 2012
    Nothing to compare ... this keygen (really a small part of old sppsvc) has no more code protection functions, only junk code left from them.

    Standalone debugger there is almost useless ... but for this purpose we have IDA :)
    With simple idc script you can extract full permutation table, even without debugging
     
  7. Mr Jinje

    Mr Jinje MDL Expert

    Aug 19, 2009
    1,769
    1,106
    60
    #167 Mr Jinje, Sep 25, 2012
    Last edited by a moderator: Apr 20, 2017
  8. dedificator

    dedificator MDL Novice

    Jul 29, 2009
    9
    41
    0
    Yes, interesting :)

    However for me more convenient way for this purpose is to create some simple .net application in visual studio or linqpad...
     
  9. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #169 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  10. jarod75

    jarod75 MDL Novice

    Oct 29, 2009
    27
    21
    0
    Create a RPC server in c# is something like a torture ! :)

    In C++, it's quite simple! A IDL for the interface and just some code to create/manage the RPC interface
     
  11. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #172 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  12. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #174 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  13. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #175 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  14. jarod75

    jarod75 MDL Novice

    Oct 29, 2009
    27
    21
    0
    #176 jarod75, Sep 25, 2012
    Last edited by a moderator: Apr 20, 2017
    The real KMS don't use authentification. the interface is defined with "NO SECURITY"
     
  15. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #177 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  16. maddog0266

    maddog0266 MDL Expert

    Apr 26, 2011
    1,247
    161
    60
    It should work.

    Because it is open....correct.
     
  17. CODYQX4

    CODYQX4 MDL Developer

    Sep 4, 2009
    4,813
    45,776
    150
    #179 CODYQX4, Sep 25, 2012
    Last edited: Apr 12, 2019
    .
     
  18. jarod75

    jarod75 MDL Novice

    Oct 29, 2009
    27
    21
    0
    #180 jarod75, Sep 26, 2012
    Last edited: Sep 26, 2012
    Some details about these functions.

    As explained, these functions are just SBOX but ofuscated by Microsoft with a subtitution routine (in sub_5BE565, No subtitution for 0x2B then sub_5BE565(0x2B)=default case=0x00. in sub_5BEC7A, No subtitution for 0x8E then sub_5BEC7A(0x8E)=default case=0x00. in sub_5BF38F, No subtitution for 0x8E then sub_5BF38F(0x64)=default case=0x00)

    In Fact, there are 28 functions of this type during the process ... :p + more than 40 SBOX ! For sure, it's quite ofuscated and strongly mixed :p