Para trabajos de pentestación, es probable que uses muchas bibliotecas diferentes y creo que es el aspecto principal del trabajo.
Sabiendo esto, también es un poco de trabajo organizar estos proyectos, tener todas las bibliotecas en su sistema, etc. Un proyecto / carpeta por cada utilidad que cree es bastante trabajo.
Para las utilidades pentesting, no necesita muchos patrones de diseño o cosas por el estilo. Es posible que necesite algo como el motor de flujo de trabajo para ejecutar sus utilidades, al igual que lo hace metasploit.
Recomiendo usar uno de los motores de flujo de trabajo existentes y tratar de escribir solo utilidades / complementos. De esta manera puedes lograr mucho sin llegar a las aguas altas.
Otro bit es decidir tu lenguaje de programación para que puedas mantenerte en uno solo la mayor parte del tiempo. Leyendo de tu pregunta, podrían ser Python, Ruby, Java, C #, etc. que son excelentes para propósitos de scripting.