|
Message-ID: <551C8A5D.2060206@openwall.com> Date: Thu, 02 Apr 2015 03:16:29 +0300 From: Alexander Cherepanov <ch3root@...nwall.com> To: john-dev@...ts.openwall.com Subject: Re: Advice on proposal: John the Ripper jumbo robustness On 2015-04-01 05:13, Kai Zhao wrote: >> The first thing to do with fuzzing john is making john start fast. > > What's the meaning of start fast? Well, if you are interested in fuzzing specific format then you want to skip everything that doesn't affect your format while still reaching functions in your format which you are interested in. If your format have a non-trivial valid() function (and I hope it holds for most valid()s in john by now) it will reject most samples that a fuzzer throws at it. Hence you can look at the time required to reject a bogus hash, e.g.: $ echo garbage > test.pw $ time ../run/john --format=7z test.pw No password hashes loaded (see FAQ) real 0m0.096s user 0m0.084s sys 0m0.008s > Here is the main() function in john.c: > > int main() > { > john_init(); > > john_run(); > > john_done(); > } > > Does "making john start fast" means "making john_init() fast"? I've not looked into it in such details. Please research it. >> I've taken a look at it. There are two easy things here: instrumenting >> only a >> fuzzed format and john.c make john ~5x faster, removing most content from >> john.conf makes john ~7x faster. That's 35x boost. > > How do you get the multiple of ~5x and ~7x faster? 5x: Fully instrumented build: $ ./configure CC=.../path/to/afl-gcc && make $ time ../run/john --format=7z test.pw No password hashes loaded (see FAQ) real 0m0.486s user 0m0.476s sys 0m0.008s Instrumenting only necessary minimum: $ ./configure && make && rm 7z_fmt_plug.o john.o && make CC=.../path/to/afl-gcc $ echo garbage > test.pw $ time ../run/john --format=7z test.pw No password hashes loaded (see FAQ) real 0m0.096s user 0m0.088s sys 0m0.004s You have to instrument some format if you are interested in fuzzing it. And you have to instrument main() to get afl's fork server. 7x: $ echo '[Options]' > john.conf $ echo garbage > test.pw $ time ../run/john --format=7z --config=./john.conf test.pw No password hashes loaded (see FAQ) real 0m0.015s user 0m0.008s sys 0m0.004s The speed in afl jumped from <2 to 70-80 execs per second. It would be nice get further 10-20x speed-up. To make sure that nothing is broken in the process you can compare samples that afl finds for a new build with the ones you found earlier. -- Alexander Cherepanov
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.