Spray – A Password Spraying Tool For Active Directory Credentials By Jacob Wilkin(Greenwolf)

Click the icon to Follow me:- twitterTelegramRedditDiscord

A Password Spraying tool for Active Directory Credentials by Jacob Wilkin(Greenwolf)

Getting Started
These instructions will show you the requirements for and how to use Spray.

All requirements come preinstalled on Kali Linux, to run on other flavors or Mac just make sure curl(owa & lync) and rpcclient(smb) are installed using apt-get or brew.


Using Spray
This script will password spray a target over a period of time It requires password policy as input so accounts are not locked out
Accompanying this script are a series of hand crafted password files for multiple languages. These have been crafted from the most common active directory passwords in various languages and all fit in the complex (1 Upper, 1 lower, 1 digit) catagory.

To password spray a SMB Portal, a userlist, password list, attempts per lockout period, lockout period length and the domain must be provided

Useage: spray.sh -smb <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <DOMAIN>
Example: spray.sh -smb users.txt passwords.txt 1 35 SPIDERLABS
Optionally Skip Username%Username Spray: spray.sh -smb users.txt passwords.txt 1 35 SPIDERLABS skipuu

To password spray an OWA portal, a file must be created of the POST request with the Username: [email protected], and Password: spraypassword

Useage: spray.sh -owa <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <RequestsFile>
Example: spray.sh -owa users.txt passwords.txt 1 35 post-request.txt

To password spray a lync service, a lync autodiscover url or a url that returns the www-authenticate header must be provided along with a list of email addresses

Useage: spray.sh -lync <targetIP> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes>
Example: spray.sh -lync https://lyncdiscover.spiderlabs.com/ users.txt passwords.txt 1 35
Example: spray.sh -lync https://lyncweb.spiderlabs.com/Autodiscover/AutodiscoverService.svc/root/oauth/user users.txt passwords.txt 1 35

To password spray a CISCO Web VPN service, a target portal or server hosting a portal must be provided

Useage: spray.sh -cisco <targetURL> <usernameList> <passwordList> <AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes>
Example: spray.sh -ciso usernames.txt passwords.txt 1 35

Password List Update
It is also possible to update the supplied 2016/2017 password list to the current year

Useage: spray.sh -passupdate <passwordList>
Example: spray.sh -passupdate passwords.txt

An optional company name can also be provided to add to the list

Useage: spray.sh -passupdate <passwordList> <CompanyName>
Example: spray.sh -passupdate passwords.txt Spiderlabs

Username generation
A username list can also be generated from a list of common names

Useage: spray.sh -genusers <firstnames> <lastnames> "<<fi><li><fn><ln>>"
Example: spray.sh -genusers english-first-1000.txt english-last-1000.txt "<fi><ln>"
Example: spray.sh -genusers english-first-1000.txt english-last-1000.txt "<fn>.<ln>"


  • Jacob WilkinResearch and Development – Trustwave SpiderLabs

Spray Created by Jacob Wilkin Copyright (C) 2017 Trustwave Holdings, Inc.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


  • Thanks to insidetrust for their great statistically likely usernames project which I have included in the name-lists folder
  • Thanks to iditabad and vortexau for their pull request contributions to the project.
Download Spray
Original Source