Being a PenTester for Trustwave Spiderlabs, I work with a huge amount of clients ranging from three employees in a garage, to the who's who of the Fortune 100. Over the past few years, I've done hundreds of PenTests and spent countless hours reviewing tests results with clients. Most importantly, I've learned alot about different things a client can do to maximize the value from a PenTest. While its a bit different for everyone, and this is by no means an exhaustive guide, I think the following are some good first steps in preparing for a PenTest:
If you've got messy, unpatched systems floating around, you want to find them before I do. Get on a schedule of scanning your entire environment (both internal and external) at least every quarter. When your scanner finds issues, especially the High / Critical kind - put a plan in place to fix them. Once you get the major issues fixes (machines patched, default credentials changed, etc), then you can move forward with PenTesting.
Lastly, heed the advice of all your prior PenTests. If your tester identified issues last year, and you still haven't addressed all of them, you can be sure they will surface again this time. Don't pay for what you already know; fix those issues!
Define Your Data
To help guide the engagement, its best to clearly define your most critical data. If its for compliance, there is usually a very specific set of data that I am trying to compromise. For example; for a PCI PenTest, I am obviously interested in any form of card data. Work with me to make sure that I understand how you are processing that data, where its stored, and the systems it touches along the way. Maybe its CAD files for an engineering shop, source code for your premier app, or secret banana recipes for a frozen banana stand. I can help you setup the engagement to test your security controls around this set of data. Set some goals, and you will be much happier with the results.
Don't Hide It
Sometimes, all the client wants to focus on is getting a 'clean report'. The focus should be on giving me all the details I need to perform a thorough test. The more I know about your environment, the quicker I can identify issues and see how they can impact your business. Its always better to have me identify these issues for you, rather than a malicious employee. I promise I'll be much nicer about it than they will.
If you know you have vulnerable systems on your network, fix them! Neglecting to tell me about a remote office, a extra DMZ network, or those last few target systems will only degrade the quality of the test. Chances are that I will find it anyways, but the time I spent identifying the issues you already knew about could be better spent finding new stuff.
Disclose Sensitive Systems
Its getting rare these days, but there are still systems out there that don't react well to a simple portscan or can't take a web crawl. If you've got any super sensitive systems hiding out somewhere, let me know about it ahead of time. It will save everyone much pain and suffering.
A good PenTest is a simulation of an actual attack or breach. I want to help you test the security systems you've dropped into place. If you've got a SIEM or central logging solution, see if the testing I'm doing is generating any alerts. If I tried a common password for every one of your 6,000 domain users and you didn't know about it until the report, lets talk about why your SIEM missed it.
Don't be afraid to ask me questions along the way. I'm glad to share every last bit of information I have with you. If you want to know how I did a specific test so you can recreate it, want tool recommendations, or need a little more help to understand a particular issue, just ask. The more open communication we have, the better the test will be for everyone.
So there you have it. Have other questions about prepping for a PenTest? Throw it in the comments.