Date: Sun, 18 Oct 2015 11:32:23 -0500 From: jfoug <jfoug@...nwall.net> To: john-users@...ts.openwall.com Subject: Re: Azure AD password sync, and needing PBKDF2 in dynamic modes The failing ST is a known issue. The expression parser I used was what I built for pass_gen.pl. Recursive decent, and works flawlessly with an unlimited stack. Simply push on vars, then when you recurse to a function, pop 2 vars, perform the op, and push results back on. But trying to take that and meld it properly and efficiently into the dyna model was not trivial, and when the expression grows too complex (2nd or 3 'real' function), then the code gets confused about what is used or not in the 2 'registers' of dynamic, and results are wrong. However, the ST fails, so the format will simply not waste your time running for incorrect results. I have thought about PBKDF2 addition. It will not be part of dyna, but a bolt on module. It is something really needed, and not there now. It would also change the expression parser, but not past what could be handled, and I do think the ROI is good for this addition. Winter is coming, so I will have to put the bikes in the garage on stands, so I may have a bit more time for other activities, lol. I do want to put more bells and whistles into this part of dynamic. It's usable today, it just is not mature and fully robust yet. On 10/18/2015 10:37 AM, Solar Designer wrote: > Hi, > > Just off Twitter: > > <MGrafnetter> I have done a thorough security analysis of the #Azure AD password sync feature:https://www.dsinternals.com/en/how-azure-active-directory-connect-syncs-passwords/ #DSInternals https://pbs.twimg.com/media/CRmt2laWwAAsv7v.png > > It looks like we need: > > OrgId Hash(plaintext) := PBKDF2( UTF-16( ToUpper( ToHex( MD4( UTF-16(plaintext))))), RND(10), 100, HMAC-SHA256, 32) > > JimF's dynamic mode compiler lets us do: > > $ ./john -test -form=dynamic='MD4(utf16($p))' > Benchmarking: dynamic=MD4(utf16($p)) [128/128 AVX 4x3]... DONE > Raw: 7227K c/s real, 7227K c/s virtual > > which I think corresponds to the "ToUpper(ToHex(MD4(UTF-16(plaintext))))" > portion. We could also add an outer utf16() if we had somewhere to plug > it into, like: > > $ ./john -test -form=dynamic='sha256(utf16(MD4(utf16($p))))' > Benchmarking: dynamic=sha256(utf16(MD4(utf16($p)))) [128/128 AVX 4x]... FAILED (cmp_all(1)) > > Oops, no idea why it fails self-test, but anyway it looks like we need > to have HMAC and PBKDF2 added to the dynamic compiler. I expect this > would be useful on more occasions. Jim? > > Alexander -- Community volunteer for John the Ripper project.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.