├── utils ├── audit │ ├── database │ │ ├── rev-engineer-mysql.sh │ │ └── rev-engineer-postgres.sh │ ├── language │ │ ├── rev-engineer-php.sh │ │ ├── rev-engineer-java.sh │ │ └── rev-engineer-python.sh │ └── os │ │ └── debian │ │ ├── services │ │ └── rev-engineer-apache.sh │ │ └── rev-engineer-debian.sh ├── install_gauntlt.sh ├── run_gauntlt.sh ├── install_jenkins-pipeline.sh ├── install_docker.sh └── install_railsgoat.sh ├── .gitignore ├── cli ├── kali-linux-base │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-gpu │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-sdr │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-web │ ├── provision │ │ └── bootstrap.sh │ ├── README.md │ ├── Dockerfile │ ├── data │ │ ├── depends.txt │ │ └── verify.sh │ └── Vagrantfile ├── kali-linux-full │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-rfid │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-top10 │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-voip │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-forensic │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-pwtools │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile ├── kali-linux-wireless │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile └── kali-linux-all │ ├── provision │ └── bootstrap.sh │ └── Vagrantfile ├── aws-config-example.yml ├── gui ├── kali-linux-web │ ├── data │ │ ├── bootstrap_xfce.sh │ │ └── bootstrap_x2go.sh │ ├── provision │ │ └── bootstrap.sh │ └── Vagrantfile └── bootstrap_desktop.sh ├── TODO.md ├── bootstrap_base.sh ├── bootstrap_cleanup.sh └── README.md /utils/audit/database/rev-engineer-mysql.sh: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.vagrant 2 | **/.project 3 | **/aws-config.yml 4 | -------------------------------------------------------------------------------- /cli/kali-linux-base/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" -------------------------------------------------------------------------------- /cli/kali-linux-gpu/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-gpu 8 | -------------------------------------------------------------------------------- /cli/kali-linux-sdr/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-sdr 8 | -------------------------------------------------------------------------------- /cli/kali-linux-web/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-web 8 | -------------------------------------------------------------------------------- /cli/kali-linux-full/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-full 8 | -------------------------------------------------------------------------------- /cli/kali-linux-rfid/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-rfid 8 | -------------------------------------------------------------------------------- /cli/kali-linux-top10/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-top10 8 | -------------------------------------------------------------------------------- /cli/kali-linux-voip/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-voip 8 | -------------------------------------------------------------------------------- /cli/kali-linux-forensic/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-forensic 8 | -------------------------------------------------------------------------------- /cli/kali-linux-pwtools/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-pwtools 8 | -------------------------------------------------------------------------------- /cli/kali-linux-wireless/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | sudo apt-get -q -y --force-yes install kali-linux-wireless 8 | -------------------------------------------------------------------------------- /aws-config-example.yml: -------------------------------------------------------------------------------- 1 | aws: 2 | access_key_id : 'AAAAAAAAAAAAAAAAAAAA' 3 | secret_access_key : 'AAAA/AAAAAAA/AAAA/AAAAAAAAAAAAAAAAAAAA' 4 | keypair_name : 'keypair_name' 5 | pemfile : 'keypair_file.pem' 6 | subnet_id : 'subnet-cccccccc' 7 | -------------------------------------------------------------------------------- /utils/audit/language/rev-engineer-php.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to reverse engineer a PHP based system. 4 | 5 | # get version 6 | 7 | # get package manager sources 8 | 9 | # get plugins, versions 10 | 11 | # get config files 12 | 13 | # get project folders 14 | -------------------------------------------------------------------------------- /cli/kali-linux-all/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the shell to be non-interactive 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # install the meta package 7 | apt-get -qq -y --allow-downgrades --allow-remove-essential \ 8 | --allow-change-held-packages install kali-linux-all 9 | -------------------------------------------------------------------------------- /gui/kali-linux-web/data/bootstrap_xfce.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | sudo -E apt-get update 7 | sudo apt-get install xfce4 xrdp xfce4-goodies 8 | echo xfce4-session > ~/.xsession 9 | # sudo cp /home/ubuntu/.xsession /etc/skel -------------------------------------------------------------------------------- /utils/audit/database/rev-engineer-postgres.sh: -------------------------------------------------------------------------------- 1 | 2 | 3 | # @see http://paulhammant.com/2013/03/20/reverse-engineering-a-db-for-devops-excellence/ 4 | # @see http://blog.stevemoyer.net/2013/03/13/working-with-legacy-databases-a-case-study.html 5 | 6 | # databases 7 | 8 | # users 9 | 10 | # schema 11 | 12 | # tables 13 | 14 | # functions 15 | 16 | # views 17 | 18 | # data -------------------------------------------------------------------------------- /utils/audit/language/rev-engineer-java.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to reverse engineer a Java based system. 4 | 5 | # setup directory 6 | mkdir -p /tmp/rev-java 7 | cd /tmp/rev-java 8 | 9 | # get version 10 | java -v > 01-java.txt 11 | 12 | # get package manager sources 13 | 14 | # get plugins, versions 15 | 16 | # get config files 17 | 18 | # get project folders 19 | -------------------------------------------------------------------------------- /gui/kali-linux-web/provision/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | #### Install the base software 7 | # List taken from the official Kali-live-build script at: 8 | # http://git.kali.org/gitweb/?p=live-build-config.git;a=blob_plain;f=config 9 | # /package-lists/kali.list.chroot;hb=HEAD 10 | apt-get -q -y --force-yes install kali-linux-web 11 | -------------------------------------------------------------------------------- /utils/audit/language/rev-engineer-python.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to reverse engineer a Python based system 4 | 5 | # make folder 6 | sudo mkdir -p /tmp/rev-python 7 | cd /tmp/rev-python 8 | 9 | # get version 10 | python --version > 01.version.txt 11 | 12 | # get package manager version, sources 13 | pip --version > 02.pip.txt 14 | 15 | # get plugins, versions 16 | pip list >> 02.pip.txt 17 | 18 | # get config files 19 | 20 | # get project folders 21 | -------------------------------------------------------------------------------- /cli/kali-linux-web/README.md: -------------------------------------------------------------------------------- 1 | # Diamonds, kali-linux-web-cli 2 | 3 | This is the Vagrant and Docker build folder for the "kali-linux-web" toolset. 4 | 5 | ```shell 6 | # build and launch with Vagrant 7 | vagrant up 8 | 9 | 10 | 11 | # build in Docker 12 | docker build --force-rm --no-cache=true -t apolloclark/kali-linux-web-cli . 13 | 14 | # launch with Docker 15 | docker run -dit diamonds/kali-linux-web-cli 16 | 17 | # attach to the running Bash instance 18 | docker attach $(docker ps -qf "ancestor=apolloclark/kali-linux-web-cli" | tail -n +2 | cut -f 1) 19 | ``` 20 | -------------------------------------------------------------------------------- /cli/kali-linux-web/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM kalilinux/kali-linux-docker 2 | MAINTAINER apolloclark@gmail.com 3 | 4 | # configure apt-get 5 | ENV DEBIAN_FRONTEND noninteractive 6 | RUN echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list && \ 7 | echo "deb-src http://http.kali.org/kali kali-rolling main contrib non-free" >> /etc/apt/sources.list 8 | 9 | # upgrade Kali, install the kali-linux-top10 10 | RUN apt-get -y update && \ 11 | apt-get -y dist-upgrade && \ 12 | apt-get clean 13 | RUN apt-get -y install kali-linux-web 14 | 15 | CMD ["/bin/bash"] 16 | -------------------------------------------------------------------------------- /utils/install_gauntlt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # sudo shutdown -r now 4 | cat <<'EOL' | sudo tee /etc/apt/sources.list 5 | 6 | # kali-rolling 7 | deb http://http.kali.org/kali kali-rolling main contrib non-free 8 | deb-src http://http.kali.org/kali kali-rolling main contrib non-free 9 | EOL 10 | 11 | sudo apt-get update 12 | sudo apt-get install -y locate 13 | sudo updatedb 14 | 15 | git clone https://github.com/gauntlt/gauntlt 16 | cd gauntlt 17 | # write out new install_gauntlt_deps.sh 18 | source ./install_gauntlt_deps.sh 19 | echo '[[ -r ~/.bashrc ]] && . ~/.bashrc' >> ~/.profile 20 | bash ./ready_to_rumble.sh 21 | gauntlt 22 | -------------------------------------------------------------------------------- /utils/run_gauntlt.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # use RVM 4 | source /etc/profile.d/rvm.sh 5 | rvm use 2.3.0 --default --install --fuzzy 6 | export DIRB_WORDLISTS=`locate dirb | grep "/dirb/wordlists$"` 7 | export SSLYZE_PATH=`which sslyze` 8 | 9 | # change focus to the Gauntlt folder 10 | cd ~/gauntlt/ 11 | 12 | # verify that Gruyere is running 13 | if ! ps aux | grep -q "[g]ruyere"; then 14 | echo "Launching Gruyere..." 15 | cd ./vendor/gruyere/ 16 | source manual_launch.sh 17 | cd ~/gauntlt/ 18 | else 19 | echo "Gruyere already running..." 20 | fi 21 | 22 | # check we're ready 23 | bash ./ready_to_rumble.sh 24 | 25 | # run the .attack files 26 | gauntlt 27 | -------------------------------------------------------------------------------- /gui/kali-linux-web/data/bootstrap_x2go.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # @see http://wiki.x2go.org/doku.php/doc:installation:x2goserver 7 | # x2go 8 | sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E 9 | 10 | sudo cat >> /etc/apt/sources.list <<'EOF' 11 | # X2Go Repository (release builds) 12 | deb http://packages.x2go.org/debian jessie main 13 | # X2Go Repository (sources of release builds) 14 | deb-src http://packages.x2go.org/debian jessie main 15 | EOF 16 | 17 | sudo apt-get update 18 | sudo apt-get install x2go-keyring && apt-get update 19 | sudo apt-get install -y x2goserver x2goserver-xsession -------------------------------------------------------------------------------- /utils/install_jenkins-pipeline.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set the environment to be fully automated 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # remove Jenkins, if it's running 7 | if ps aux | grep -q ".*[j]enkins.war"; then 8 | echo "INFO: Jenkins found, removing." 9 | service jenkins stop 10 | apt-get remove -y jenkins 11 | rm -rf /var/lib/jenkins 12 | else 13 | echo "INFO: Jenkins not found." 14 | fi 15 | 16 | # clear out staging folders 17 | rm -rf ./vagrant-jenkins-pipeline 18 | rm -rf /vagrant/ 19 | 20 | # clone vagrant-jenkins-pipeline, copy install files 21 | git clone https://github.com/apolloclark/vagrant-jenkins-pipeline 22 | cd ./vagrant-jenkins-pipeline 23 | cp -rf ./data /vagrant/ 24 | cd ./provision 25 | 26 | # set the install scripts to executable, run them 27 | chmod +x ./*.sh 28 | ./bootstrap.sh 29 | ./bootstrap_python.sh 30 | -------------------------------------------------------------------------------- /utils/audit/os/debian/services/rev-engineer-apache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to reverse engineer the basic build actions need to setup a given 4 | # server. This script is optimized for Debian systems. 5 | 6 | # setup folders 7 | cd /tmp 8 | mkdir -p /tmp/rev-build 9 | 10 | # history 11 | echo history > 01-history.txt 12 | 13 | # system users 14 | sudo cat /etc/passwd > 02-users.txt 15 | 16 | # ssh keys 17 | 18 | # file system 19 | sudo lslbk > 03-filesystem.txt 20 | sudo df -h >> 03-filesystem.txt 21 | 22 | # network 23 | sudo netstat -tunlp > 03-network.txt 24 | 25 | # firewall rules 26 | sudo iptables -L > 04-firewall.txt 27 | 28 | # processes 29 | sudo ps aux > 04-processes.txt 30 | 31 | # services 32 | sudo service --status-all > 05-services.txt 33 | 34 | # apt repos 35 | sudo cat /etc/apt/sources.lst > 06-apt-sources.txt 36 | -------------------------------------------------------------------------------- /utils/install_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # update apt-get 4 | export DEBIAN_FRONTEND="noninteractive" 5 | apt-get update 6 | 7 | # remove previously installed Docker 8 | apt-get purge lxc-docker* 9 | apt-get purge docker.io* 10 | 11 | # add Docker repo 12 | apt-get install -y apt-transport-https ca-certificates 13 | apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 14 | 15 | cat <<'EOF' | sudo tee /etc/apt/sources.list.d/docker.list 16 | deb https://apt.dockerproject.org/repo debian-stretch main 17 | EOF 18 | apt-get update 19 | 20 | # install Docker 21 | apt-get install -y docker-engine 22 | service docker start 23 | docker run hello-world 24 | 25 | 26 | # configure Docker user group permissions 27 | groupadd docker 28 | gpasswd -a ${USER} docker 29 | service docker restart 30 | 31 | # set Docker to auto-launch on startup 32 | systemctl enable docker 33 | -------------------------------------------------------------------------------- /utils/audit/os/debian/rev-engineer-debian.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Script to reverse engineer the basic build actions need to setup a given 4 | # server. This script is optimized for Debian systems. 5 | # @see https://www.reddit.com/r/devops/comments/3w49pw/ 6 | # upsidedown_configuration_management_what_tool/ 7 | 8 | # setup folders 9 | cd /tmp 10 | mkdir -p /tmp/rev-build 11 | 12 | # history 13 | echo history > 01-history.txt 14 | 15 | # system 16 | echo uname -r > 02-system.txt 17 | 18 | # system users 19 | sudo cat /etc/passwd > 03-users.txt 20 | 21 | # ssh keys 22 | # sudo cp /home/*/.ssh/* ./ 23 | 24 | # file system 25 | sudo lslbk > 04-filesystem.txt 26 | sudo df -h >> 04-filesystem.txt 27 | 28 | # network 29 | sudo netstat -tunlp > 05-network.txt 30 | 31 | # firewall rules 32 | sudo iptables -L > 06-firewall.txt 33 | 34 | # processes 35 | sudo ps aux > 07-processes.txt 36 | 37 | # services 38 | sudo service --status-all > 08-services.txt 39 | 40 | # apt repos 41 | sudo cat /etc/apt/sources.lst > 09-apt-sources.txt 42 | 43 | # zip it up, delete files 44 | tar -zcvf reverse-engineered-build.gz /tmp/rev-build 45 | -------------------------------------------------------------------------------- /cli/kali-linux-web/data/depends.txt: -------------------------------------------------------------------------------- 1 | Depends: kali-linux 2 | apache2 3 | apache-users 4 | arachni 5 | automater 6 | bbqsql 7 | beef-xss 8 | blindelephant 9 | burpsuite 10 | cadaver 11 | clusterd 12 | cookie-cadger 13 | cutycapt 14 | davtest 15 | dirb 16 | dirbuster 17 | dnmap 18 | dotdotpwn 19 | eyewitness 20 | ftester 21 | funkload 22 | golismero 23 | grabber 24 | python-halberd 25 | hamster-sidejack 26 | hexorbase 27 | http-tunnel 28 | httprint 29 | httrack 30 | hydra 31 | hydra-gtk 32 | jboss-autopwn 33 | joomscan 34 | jsql 35 | laudanum 36 | lbd 37 | maltego 38 | maltego-teeth 39 | medusa 40 | mitmproxy 41 | mysql-server 42 | ncrack 43 | nikto 44 | nishang 45 | nmap 46 | oscanner 47 | owasp-mantra-ff 48 | padbuster 49 | paros 50 | patator 51 | php5 52 | php5-mysql 53 | plecost 54 | powerfuzzer 55 | proxychains 56 | proxystrike 57 | proxytunnel 58 | ratproxy 59 | redsocks 60 | sidguesser 61 | siege 62 | skipfish 63 | slowhttptest 64 | sqldict 65 | sqlitebrowser 66 | sqlmap 67 | sqlninja 68 | sqlsus 69 | sslcaudit 70 | ssldump 71 | sslh 72 | sslscan 73 | sslsniff 74 | sslstrip 75 | sslsplit 76 | sslyze 77 | stunnel4 78 | thc-ssl-dos 79 | tlssled 80 | tnscmd10g 81 | ua-tester 82 | uniscan 83 | vega 84 | waffit 85 | wapiti 86 | webacoo 87 | webhandler 88 | webscarab 89 | webshells 90 | websploit 91 | weevely 92 | wfuzz 93 | whatweb 94 | wireshark 95 | wpscan 96 | xsser 97 | zaproxy 98 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | # TODO 2 | 3 | List of various things, in order, of what I want to do: 4 | 5 | - add other meta-packages, GUI 6 | - smokescreen Bash script, verify tools installed correctly 7 | - install scripts for utilities 8 | - install Gauntlt 9 | - install Jenkins 10 | - install Jmeter 11 | - install Selenium 12 | - install PhantomJS 13 | - instll Crawljax 14 | - install ELK stack 15 | - install Gryffin 16 | - install Snort 17 | - code quality tools 18 | - Python 19 | - PHP 20 | - Java 21 | - Ruby on Rails 22 | - target install scripts 23 | - Railsgoat 24 | - Gruyere 25 | - Webgoat 26 | - various Damn Vunlerable Webapps... 27 | - build C2 server 28 | - build website for C2 29 | - build Machine Learning system 30 | 31 | 32 | 33 | - install for NoMachine 34 | - build script for AWS w/ Nvidia card 35 | - build Virtualbox baseboxes 36 | - CLI 37 | - kali-linux-top10-cli 38 | - kali-linux-full-cli 39 | - kali-linux-web-cli 40 | - GUI 41 | - kali-linux-top10-gui 42 | - kali-linux-full-gui 43 | - kali-linux-web-gui 44 | - add to weekly Jenkins job 45 | - deploy to Amazon AWS AMI 46 | 47 | 48 | 49 | Kali Linux Instances Types 50 | - one user, one system, locally, from scratch (Vagrant) 51 | - one user, one system, locally, pre-built (Vagrant, Virtualbox) 52 | - one user, one system, in the cloud, from scratch (Vagrant, AWS) 53 | - one user, one system, in the cloud, pre-built (Vagrant, AWS, AMI) 54 | - one user, multiple systems, in the cloud, pre-built (Vagrant, AWS, AMI) 55 | -------------------------------------------------------------------------------- /utils/install_railsgoat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # @see https://gorails.com/setup/ubuntu/15.10 3 | 4 | # update, install dependencies 5 | export DEBIAN_FRONTEND="noninteractive" 6 | sudo apt-get update 7 | sudo apt-get install -y git-core build-essential libssl-dev libreadline-dev \ 8 | libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev \ 9 | libcurl4-openssl-dev python-software-properties libffi-dev zlib1g-dev 10 | 11 | # install Ruby rvm, ruby 2.3.0 12 | # @see https://github.com/rbenv/ruby-build/issues/834 13 | gpg --keyserver hkp://keys.gnupg.net --recv-keys \ 14 | 409B6B1796C275462A1703113804BB82D39DC0E3 15 | curl -sSL https://get.rvm.io | bash -s stable 16 | source /etc/profile.d/rvm.sh 17 | echo "source /etc/profile.d/rvm.sh" >> ~/.bashrc 18 | rvm use 2.3.0 --default --install --fuzzy 19 | 20 | 21 | 22 | # install MySQL and sqlite 23 | sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password \"''\"" 24 | sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password \"''\"" 25 | sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev 26 | 27 | 28 | 29 | # download, install, configure, run Railsgoat 30 | git clone https://github.com/OWASP/railsgoat 31 | cd railsgoat 32 | gem install bundler 33 | bundle install 34 | sleep 10 35 | 36 | # setup database, use MySQL 37 | echo -e "INFO: setting up database..." 38 | RAILS_ENV=mysql 39 | echo 'export RAILS_ENV=mysql' >> ~/.bashrc 40 | rake db:setup 41 | sleep 10 42 | 43 | # run Railsgoat 44 | echo -e "INFO: starting railsgoat..." 45 | rails s -b 0.0.0.0 > /dev/null & 46 | sleep 15 47 | firefox http://127.0.0.1:3000 & 48 | # sudo pkill -9 ruby 49 | -------------------------------------------------------------------------------- /gui/bootstrap_desktop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # Pre-answer the various install questions 7 | cat << EOF | debconf-set-selections 8 | keyboard-configuration keyboard-configuration/layout select USA 9 | keyboard-configuration keyboard-configuration/variant select USA 10 | EOF 11 | 12 | # install Gnome desktop, 3.21.90 13 | apt-get -y install kali-desktop-gnome 14 | 15 | 16 | 17 | # install Vino VNC 18 | apt-get -y install vino 19 | 20 | # setup Gnome to autologin the "admin" user 21 | sed -i '7c\AutomaticLoginEnable = true' /etc/gdm3/daemon.conf 22 | sed -i '8c\AutomaticLogin = admin' /etc/gdm3/daemon.conf 23 | sed -i '11c\TimedLoginEnable = true' /etc/gdm3/daemon.conf 24 | 25 | # start Vino on system startup 26 | cat > /home/$(whoami)/.profile <<'EOF' 27 | 28 | # set Vino to run, if it's not 29 | ps cax | grep "vino-server" > /dev/null 30 | if [ $? -eq 0 ]; then 31 | echo "Vino VNC is already running." 32 | else 33 | echo "Starting Vino VNC..." 34 | 35 | # configure Vino to only listen to localhost, unecrypted 36 | export DISPLAY=:0.0 37 | gsettings set org.gnome.desktop.lockdown disable-lock-screen true 38 | gsettings set org.gnome.desktop.lockdown disable-user-switching true 39 | gsettings set org.gnome.desktop.lockdown disable-log-out true 40 | gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0 41 | gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing' 42 | gsettings set org.gnome.desktop.screensaver lock-enabled false 43 | gsettings set org.gnome.desktop.session idle-delay 0 44 | xset s off # don't activate screensaver 45 | xset -dpms # disable DPMS (Energy Star) features. 46 | xset s noblank # don't blank the video device 47 | 48 | dconf write /org/gnome/empathy/notifications/notifications-enabled false 49 | 50 | gsettings set org.gnome.Vino authentication-methods "['none']" 51 | gsettings set org.gnome.Vino require-encryption false 52 | gsettings set org.gnome.Vino network-interface lo 53 | gsettings set org.gnome.Vino prompt-enabled false 54 | gsettings set org.gnome.Vino notify-on-connect false 55 | gsettings set org.gnome.Vino lock-screen-on-disconnect false 56 | 57 | nohup /usr/lib/vino/vino-server --sm-disable &> /dev/null & 58 | fi 59 | 60 | EOF 61 | -------------------------------------------------------------------------------- /bootstrap_base.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND="noninteractive" 5 | 6 | # @see https://github.com/averagesecurityguy/packer-debian2kali-ec2/blob/master/scripts/grub.sh 7 | # set -e 8 | # set -o pipefail 9 | 10 | 11 | 12 | 13 | # who are we? 14 | whoami 15 | pwd 16 | uname -a 17 | 18 | #### Overwrite the default Debian mirrors/sources with the Kali mirrors/sources 19 | cat <<'EOF' | tee /etc/apt/sources.list 20 | 21 | # kali-rolling 22 | deb http://http.kali.org/kali kali-rolling main contrib non-free 23 | deb-src http://http.kali.org/kali kali-rolling main contrib non-free 24 | EOF 25 | 26 | #### Download and import the official Kali Linux key 27 | wget -q -O - https://www.kali.org/archive-key.asc | gpg --import 28 | gpg -a --export ED444FF07D8D0BF6 | apt-key add - 29 | 30 | #### Update our apt db 31 | apt-get update -y 32 | 33 | #### Install the Kali keyring 34 | apt-get install -y --force-yes kali-archive-keyring 35 | 36 | 37 | 38 | #### Preconfigure things so our install will work without any user input 39 | ## mysql 40 | pass="passw0rd"; # $(head -c 24 /dev/urandom | base64) 41 | echo "MySQL Root Password: $pass" 42 | debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password $pass" 43 | debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password $pass" 44 | 45 | ## Kismet 46 | debconf-set-selections <<< 'kismet kismet/install-setuid boolean false' 47 | debconf-set-selections <<< 'kismet kismet/install-users string' 48 | 49 | ## sslh 50 | debconf-set-selections <<< 'sslh sslh/inetd_or_standalone select standalone' 51 | 52 | ## macchanger 53 | debconf-set-selections <<< 'macchanger macchanger/automatically_run boolean false' 54 | 55 | ## wireshark 56 | debconf-set-selections <<< 'wireshark-common wireshark-common/install-setuid boolean false' 57 | 58 | ## libc6 59 | debconf-set-selections <<< 'libc6 libraries/restart-without-asking boolean true' 60 | 61 | 62 | 63 | # create the "admin" user, if necessary 64 | if ! id -u admin > /dev/null 2>&1; then 65 | adduser --disabled-password --gecos "" --shell /bin/bash --ingroup admin 66 | chown -R admin /home/admin 67 | echo "admin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 68 | fi 69 | 70 | 71 | 72 | # install basic utilities, base kali package, kernel headers 73 | apt-get update -y 74 | apt-get -q -y --force-yes install \ 75 | debconf-utils build-essential mlocate kali-linux ".*linux-headers"; 76 | 77 | 78 | 79 | #### Overwrite the default Debian mirrors/sources with the Kali mirrors/sources 80 | cat <<'EOF' | tee /etc/apt/sources.list 81 | 82 | # kali-rolling 83 | deb http://http.kali.org/kali kali-rolling main contrib non-free 84 | deb-src http://http.kali.org/kali kali-rolling main contrib non-free 85 | EOF 86 | 87 | # Autoresize the root EBS partition 88 | if [[ $(df -h | grep 'xvda1') ]]; then 89 | /sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100% 90 | resize2fs /dev/xvda1 91 | fi 92 | 93 | -------------------------------------------------------------------------------- /bootstrap_cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #### Prevent apt-get from asking us questions while isntalling software 4 | export DEBIAN_FRONTEND=noninteractive 5 | 6 | #### The Debian AMI uses the Syslinux bootloader but Kali uses Grub2 so let's use Grub2 7 | # update the grub device.map, necessary for AWS Debian for now... 8 | grub-mkdevicemap 9 | 10 | # set the debconf selections 11 | debconf-set-selections <<< 'grub-installer grub-installer/only_debian boolean true' 12 | debconf-set-selections <<< 'grub-installer grub-installer/with_other_os boolean true' 13 | debconf-set-selections <<< 'grub-pc grub-pc/install_devices multiselect /dev/sda1' 14 | # /dev/xvda, for AWS 15 | # /dev/sda, for Virtualbox 16 | 17 | # fix for when grub updates 18 | unset UCF_FORCE_CONFFOLD 19 | export UCF_FORCE_CONFFNEW=YES 20 | ucf --purge /boot/grub/menu.lst 21 | 22 | # Install grub2 23 | apt-get -y --force-yes install grub2 24 | 25 | 26 | 27 | # set the debconf selections 28 | debconf-set-selections <<< 'unattended-upgrades unattended-upgrades/enable_auto_updates boolean true' 29 | debconf-set-selections <<< 'unattended-upgrades/origins_pattern: "origin=Debian,codename=${distro_codename},label=Debian-Security";' 30 | 31 | # delete the current unattended-upgrades file 32 | rm -f /etc/apt/apt.conf.d/50unattended-upgrades 33 | rm -f /etc/apt/apt.conf.d/20auto-upgrades 34 | 35 | 36 | 37 | #### Update to the newest version of Kali 38 | apt-get update 39 | apt-get -y --force-yes upgrade 40 | # apt-get -o Dpkg::Options::="--force-confnew" --force-yes -fuy dist-upgrade 41 | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade 42 | 43 | #### Clean up after apt-get 44 | apt-get -y autoremove --purge 45 | apt-get -y clean 46 | 47 | 48 | 49 | 50 | 51 | # @see https://raw.githubusercontent.com/averagesecurityguy/packer-debian2kali-ec2/master/scripts/cleanup.sh 52 | # Remove SSH key pairs according to AWS requirements for shared AMIs: 53 | # @see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html 54 | # shred -u /etc/ssh/*_key /etc/ssh/*_key.pub 55 | # shred -u /home/admin/.ssh/* 56 | # shred -u /home/vagrant/.ssh/* 57 | 58 | # Wipe our logs 59 | echo "INFO: Cleaning log files and history..." 60 | echo > /var/log/auth.log 61 | echo > /var/log/cloud-init.log 62 | echo > /var/log/daemon.log 63 | echo > /var/log/debug 64 | echo > /var/log/dmesg 65 | rm -rf /var/log/dmesg.* 66 | echo > /var/log/dpkg.log 67 | echo > /var/log/kern.log 68 | echo > /var/log/lastlog 69 | echo > /var/log/messages 70 | echo > /var/log/pm-powersave.log 71 | echo > /var/log/syslog 72 | echo > /var/log/user.log 73 | echo > /var/log/wtmp 74 | echo > /var/log/Xorg.0.log 75 | echo > /var/log/apt/history.log 76 | # echo > /var/log/ConsoleKit/history 77 | # echo > /var/log/gdm3/:0-greeter.log 78 | # echo > /var/log/gdm3/:0.log 79 | # echo > /var/log/gdm3/:0-slave.log 80 | 81 | # Clear our Bash history 82 | history -c 83 | history -w 84 | 85 | 86 | 87 | 88 | 89 | # Disable services auto-starting, for better security 90 | # @see http://manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html 91 | # update-rc.d defaults, to re-enable 92 | echo "INFO: Disabling service auto-start..." 93 | 94 | # save the output of service status 95 | services_status=$(service --status-all 2>&1); 96 | 97 | if grep -q " \[ + \] smbd" <<< "$services_status"; then 98 | echo "INFO: Disabling Samba / smbd" 99 | service smbd stop 100 | update-rc.d -f smbd remove 101 | fi 102 | 103 | if grep -q " \[ + \] samba" <<< "$services_status"; then 104 | echo "INFO: Disabling Samba" 105 | service samba stop 106 | update-rc.d -f samba remove 107 | fi 108 | 109 | if grep -q " \[ + \] samba-ad-dc" <<< "$services_status"; then 110 | echo "INFO: Disabling Samba / AD-DC" 111 | service samba-ad-dc stop 112 | update-rc.d -f samba-ad-dc remove 113 | fi 114 | 115 | if grep -q " \[ + \] nmbd" <<< "$services_status"; then 116 | echo "INFO: Disabling NetBIOS" 117 | service nmbd stop 118 | update-rc.d -f nmbd remove 119 | fi 120 | 121 | if grep -q " \[ + \] apache2" <<< "$services_status"; then 122 | echo "INFO: Disabling Apache" 123 | service apache2 stop 124 | update-rc.d -f apache2 remove 125 | fi 126 | 127 | if grep -q " \[ + \] mysql" <<< "$services_status"; then 128 | echo "INFO: Disabling MySQL" 129 | service mysql stop 130 | update-rc.d -f mysql remove 131 | fi 132 | 133 | if grep -q " \[ + \] postgresql" <<< "$services_status"; then 134 | echo "INFO: Disabling Postgres" 135 | service postgresql stop 136 | update-rc.d -f postgresql remove 137 | fi 138 | 139 | if grep -q " \[ + \] dradis" <<< "$services_status"; then 140 | echo "INFO: Disabling Dradis" 141 | service dradis stop 142 | update-rc.d -f dradis remove 143 | fi 144 | 145 | if grep -q " \[ + \] beef-xss" <<< "$services_status"; then 146 | echo "INFO: Disabling Beef-XSS" 147 | service beef-xss stop 148 | update-rc.d -f beef-xss remove 149 | fi 150 | -------------------------------------------------------------------------------- /cli/kali-linux-base/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure(2) do |config| 5 | 6 | # use the empty dummy box 7 | config.vm.box = "dummy" 8 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 9 | 10 | # default provisioning script 11 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 12 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 13 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 14 | 15 | 16 | 17 | # Use Virtualbox by default, before Amazon 18 | config.vm.provider "virtualbox" 19 | config.vm.provider "aws" 20 | 21 | # VirtualBox Provider-specific configuration 22 | config.vm.provider "virtualbox" do |vb, override| 23 | 24 | # set the name 25 | vb.name = "kali-linux-base-cli" 26 | 27 | # Display the VirtualBox GUI when booting the machine 28 | vb.gui = false 29 | 30 | # Customize the amount of memory on the VM: 31 | vb.memory = "1024" 32 | 33 | # set the base box to Debian Jessie, 64-bit 34 | # @see https://atlas.hashicorp.com/apolloclark 35 | override.vm.box = "apolloclark/debian-jessie-64" 36 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 37 | 38 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 39 | # Windows supports: smb 40 | # Mac supports: rsync, nfs 41 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 42 | override.vm.synced_folder "./data", "/vagrant" 43 | 44 | # setup cache 45 | # if Vagrant.has_plugin?("vagrant-cachier") 46 | # Configure cached packages to be shared between instances of the same base box. 47 | # More info on the "Usage" link above 48 | # override.cache.scope = :box 49 | # end 50 | end 51 | 52 | 53 | 54 | 55 | 56 | # configure AWS provider 57 | config.vm.provider "aws" do |aws, override| 58 | 59 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 60 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 61 | require 'yaml' 62 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 63 | if File.exist?(aws_filepath) 64 | aws_config = YAML.load_file(aws_filepath)["aws"] 65 | else 66 | print "Error: '" + aws_filepath + "' is missing...\n" 67 | end 68 | 69 | # set AWS creds 70 | aws.access_key_id = aws_config["access_key_id"] 71 | aws.secret_access_key = aws_config["secret_access_key"] 72 | aws.keypair_name = aws_config["keypair_name"] 73 | 74 | # configure SSH 75 | override.ssh.private_key_path = aws_config["pemfile"] 76 | override.ssh.username = "admin" 77 | 78 | # use Debian / Jessie 64-bit HVM 79 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 80 | aws.region = "us-east-1" 81 | aws.ami = "ami-116d857a" 82 | # "ami-116d857a" HVM 83 | # "ami-896d85e2" Paravirtualization 84 | 85 | # set instance settings 86 | # @see https://aws.amazon.com/ec2/instance-types/ 87 | aws.instance_ready_timeout = 180 88 | aws.instance_type = "t2.small" 89 | aws.associate_public_ip = true 90 | aws.subnet_id = aws_config["subnet_id"] 91 | aws.tags = { 92 | 'Name' => 'kali-linux-base-cli', 93 | } 94 | aws.block_device_mapping = [ 95 | { 96 | 'DeviceName' => '/dev/xvda', 97 | 'Ebs.VolumeSize' => 40, 98 | 'Ebs.DeleteOnTermination' => 'true' 99 | } 100 | ] 101 | 102 | # Configure file sharing using rsync. 103 | # This requires Windows users to have Cygwin or MinGW installed. 104 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 105 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 106 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 107 | # , disabled: true 108 | # Fix for Windows users running Cygwin: 109 | if Vagrant::Util::Platform.windows? 110 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 111 | end 112 | # To continuously update files bi-directionally, open another shell, run: 113 | # "vagrant rsync-auto" 114 | 115 | # disable the vbguest plugin 116 | if Vagrant.has_plugin?("vagrant-vbguest") 117 | override.vbguest.auto_update = false 118 | end 119 | end 120 | end 121 | -------------------------------------------------------------------------------- /cli/kali-linux-full/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-full-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-full-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-gpu/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-gpu-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-gpu-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-rfid/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-rfid-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-rfid-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-sdr/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-sdr-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-sdr-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-voip/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-voip-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-voip-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-top10/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-top10-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-top10-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-pwtools/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-pwtools-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-pwtools-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-all/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-all-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-all-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | 110 | # Fix for Windows users running Cygwin: 111 | if Vagrant::Util::Platform.windows? 112 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 113 | end 114 | # To continuously update files bi-directionally, open another shell, run: 115 | # "vagrant rsync-auto" 116 | 117 | # disable the vbguest plugin 118 | if Vagrant.has_plugin?("vagrant-vbguest") 119 | override.vbguest.auto_update = false 120 | end 121 | end 122 | end 123 | -------------------------------------------------------------------------------- /cli/kali-linux-forensic/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-forensic-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-forensic-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-wireless/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-wireless-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to Debian Jessie, 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/debian-jessie-64" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-wireless-cli', 94 | } 95 | aws.block_device_mapping = [ 96 | { 97 | 'DeviceName' => '/dev/xvda', 98 | 'Ebs.VolumeSize' => 40, 99 | 'Ebs.DeleteOnTermination' => 'true' 100 | } 101 | ] 102 | 103 | # Configure file sharing using rsync. 104 | # This requires Windows users to have Cygwin or MinGW installed. 105 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 106 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 107 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 108 | # , disabled: true 109 | # Fix for Windows users running Cygwin: 110 | if Vagrant::Util::Platform.windows? 111 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 112 | end 113 | # To continuously update files bi-directionally, open another shell, run: 114 | # "vagrant rsync-auto" 115 | 116 | # disable the vbguest plugin 117 | if Vagrant.has_plugin?("vagrant-vbguest") 118 | override.vbguest.auto_update = false 119 | end 120 | end 121 | end 122 | -------------------------------------------------------------------------------- /cli/kali-linux-web/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure(2) do |config| 6 | 7 | # use the empty dummy box 8 | config.vm.box = "dummy" 9 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 10 | 11 | # default provisioning script 12 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 13 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default, before Amazon 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-web-cli" 27 | 28 | # Display the VirtualBox GUI when booting the machine 29 | vb.gui = false 30 | 31 | # Customize the amount of memory on the VM: 32 | vb.memory = "1024" 33 | 34 | # set the base box to kali-linux-base-cli, based on Debian Jessie 64-bit 35 | # @see https://atlas.hashicorp.com/apolloclark 36 | override.vm.box = "apolloclark/kali-linux-base-cli" 37 | override.vm.box_url = "https://atlas.hashicorp.com/apolloclark/boxes/kali-linux-base-cli/versions/0.0.2/providers/virtualbox.box" 38 | 39 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 40 | # Windows supports: smb 41 | # Mac supports: rsync, nfs 42 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 43 | override.vm.synced_folder "./data", "/vagrant" 44 | 45 | # setup cache 46 | # if Vagrant.has_plugin?("vagrant-cachier") 47 | # Configure cached packages to be shared between instances of the same base box. 48 | # More info on the "Usage" link above 49 | # override.cache.scope = :box 50 | # end 51 | end 52 | 53 | 54 | 55 | 56 | 57 | # configure AWS provider 58 | config.vm.provider "aws" do |aws, override| 59 | 60 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 61 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 62 | require 'yaml' 63 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 64 | if File.exist?(aws_filepath) 65 | aws_config = YAML.load_file(aws_filepath)["aws"] 66 | else 67 | print "Error: '" + aws_filepath + "' is missing...\n" 68 | end 69 | 70 | # set AWS creds 71 | aws.access_key_id = aws_config["access_key_id"] 72 | aws.secret_access_key = aws_config["secret_access_key"] 73 | aws.keypair_name = aws_config["keypair_name"] 74 | 75 | # configure SSH 76 | override.ssh.private_key_path = aws_config["pemfile"] 77 | override.ssh.username = "admin" 78 | 79 | # use Debian / Jessie 64-bit HVM 80 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 81 | aws.region = "us-east-1" 82 | aws.ami = "ami-116d857a" 83 | # "ami-116d857a" HVM 84 | # "ami-896d85e2" Paravirtualization 85 | 86 | # set instance settings 87 | # @see https://aws.amazon.com/ec2/instance-types/ 88 | aws.instance_ready_timeout = 180 89 | aws.instance_type = "t2.small" 90 | aws.associate_public_ip = true 91 | aws.subnet_id = aws_config["subnet_id"] 92 | aws.tags = { 93 | 'Name' => 'kali-linux-web-cli', 94 | } 95 | # use 40GB, because we like it UUGE! 96 | aws.block_device_mapping = [ 97 | { 98 | 'DeviceName' => '/dev/xvda', 99 | 'Ebs.VolumeSize' => 40, 100 | 'Ebs.DeleteOnTermination' => 'false' 101 | } 102 | ] 103 | 104 | # Configure file sharing using rsync. 105 | # This requires Windows users to have Cygwin or MinGW installed. 106 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 107 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 108 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 109 | # , disabled: true 110 | 111 | # Fix for Windows users running Cygwin: 112 | if Vagrant::Util::Platform.windows? 113 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 114 | end 115 | # To continuously update files bi-directionally, open another shell, run: 116 | # "vagrant rsync-auto" 117 | 118 | # disable the vbguest plugin 119 | if Vagrant.has_plugin?("vagrant-vbguest") 120 | override.vbguest.auto_update = false 121 | end 122 | end 123 | end 124 | -------------------------------------------------------------------------------- /gui/kali-linux-web/Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure(2) do |config| 5 | 6 | # use the empty dummy box 7 | config.vm.box = "dummy" 8 | config.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 9 | 10 | # default provisioning script 11 | config.vm.provision :shell, path: "./../../bootstrap_base.sh" 12 | config.vm.provision :shell, path: "./provision/bootstrap.sh" 13 | config.vm.provision :shell, path: "./../bootstrap_desktop.sh" 14 | config.vm.provision :shell, path: "./../../bootstrap_cleanup.sh" 15 | 16 | 17 | 18 | # Use Virtualbox by default 19 | config.vm.provider "virtualbox" 20 | config.vm.provider "aws" 21 | 22 | # VirtualBox Provider-specific configuration 23 | config.vm.provider "virtualbox" do |vb, override| 24 | 25 | # set the name 26 | vb.name = "kali-linux-web-gui" 27 | 28 | # set the basebox to be Debian Jessie 64-bit, w/ 20 GB storage 29 | # @see https://atlas.hashicorp.com/apolloclark 30 | override.vm.box = "apolloclark/debian-jessie-64" 31 | override.vm.box_url ="https://atlas.hashicorp.com/apolloclark/boxes/debian-jessie-64/versions/0.0.1/providers/virtualbox.box" 32 | 33 | # set the CPU, memory, acceleration 34 | # @see https://www.virtualbox.org/manual/ch08.html 35 | vb.cpus = 1 36 | vb.memory = "2048" 37 | vb.customize ["modifyvm", :id, "--ioapic", "on"] 38 | vb.customize ["modifyvm", :id, "--hwvirtex", "on"] 39 | vb.customize ["modifyvm", :id, "--pae", "on"] 40 | 41 | # Customize graphic 42 | vb.gui = true 43 | vb.customize ["modifyvm", :id, "--vram", "128"] 44 | vb.customize ["modifyvm", :id, "--graphicscontroller", "vboxvga"] 45 | 46 | # Share a folder to the guest VM, types: docker, nfs, rsync, smb, virtualbox 47 | # Windows supports: smb 48 | # Mac supports: rsync, nfs 49 | # override.vm.synced_folder host_folder.to_s, guest_folder.to_s, type: "smb" 50 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 51 | 52 | # Create a forwarded port mapping which allows access to a specific port 53 | # within the machine from a port on the host machine. In the example below, 54 | # accessing "localhost:8080" will access port 80 on the guest machine. 55 | # override.vm.network "forwarded_port", guest: 5900, host: 5900 56 | 57 | # setup local apt-get cache 58 | # if Vagrant.has_plugin?("vagrant-cachier") 59 | # Configure cached packages to be shared between instances of the same base box. 60 | # More info on the "Usage" link above 61 | # override.cache.scope = :box 62 | # end 63 | 64 | # disable the vbguest update plugin 65 | if Vagrant.has_plugin?("vagrant-vbguest") 66 | override.vbguest.auto_update = false 67 | end 68 | end 69 | 70 | 71 | 72 | # configuration when deploying to Amazon 73 | config.vm.provider :aws do |aws, override| 74 | 75 | # Load sensitive AWS credentials from external file, DO NOT save in Repo!!! 76 | # @see http://blog-osshive.rhcloud.com/2014/02/05/provisioning-aws-instances-with-vagrant/ 77 | require 'yaml' 78 | aws_filepath = File.dirname(__FILE__) + "/../../aws-config.yml" 79 | if File.exist?(aws_filepath) 80 | aws_config = YAML.load_file(aws_filepath)["aws"] 81 | else 82 | print "Error: '" + aws_filepath + "' is missing...\n" 83 | end 84 | 85 | # set AWS creds 86 | aws.access_key_id = aws_config["access_key_id"] 87 | aws.secret_access_key = aws_config["secret_access_key"] 88 | aws.keypair_name = aws_config["keypair_name"] 89 | 90 | # configure SSH... and fuck Windows file pathways... 91 | override.ssh.private_key_path = aws_config["pemfile"] 92 | override.ssh.username = "admin" 93 | 94 | # use Debian / Jessie 64-bit HVM 95 | # @see https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie 96 | aws.region = "us-east-1" 97 | aws.ami = "ami-116d857a" 98 | # "ami-116d857a" HVM 99 | # "ami-896d85e2" Paravirtualization 100 | 101 | # set instance settings 102 | # @see https://aws.amazon.com/ec2/instance-types/ 103 | aws.instance_ready_timeout = 180 104 | aws.instance_type = "t2.large" 105 | aws.associate_public_ip = true 106 | aws.subnet_id = aws_config["subnet_id"] 107 | aws.tags = { 108 | 'Name' => 'kali-linux-web-gui', 109 | } 110 | # use 40GB, because we like it UUGE! 111 | aws.block_device_mapping = [ 112 | { 113 | 'DeviceName' => '/dev/xvda', 114 | 'VirtualName' => 'root', 115 | 'Ebs.VolumeSize' => 40, 116 | 'Ebs.DeleteOnTermination' => 'true' 117 | } 118 | ] 119 | 120 | # Configure file sharing using rsync. 121 | # This requires Windows users to have Cygwin or MinGW installed. 122 | # @see https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html 123 | # @see https://github.com/mitchellh/vagrant/blob/master/website/docs/source/v2/synced-folders/rsync.html.md 124 | override.vm.synced_folder "./data", "/vagrant", type: "rsync" 125 | override.vm.synced_folder "../../utils", "/utils", type: "rsync" 126 | # , disabled: true 127 | 128 | # Fix for Windows users running Cygwin: 129 | if Vagrant::Util::Platform.windows? 130 | ENV["VAGRANT_DETECTED_OS"] = ENV["VAGRANT_DETECTED_OS"].to_s + " cygwin" 131 | end 132 | # To continuously update files bi-directionally, open another shell, run: 133 | # "vagrant rsync-auto" 134 | 135 | # disable the vbguest update plugin 136 | if Vagrant.has_plugin?("vagrant-vbguest") 137 | override.vbguest.auto_update = false 138 | end 139 | end 140 | end 141 | -------------------------------------------------------------------------------- /cli/kali-linux-web/data/verify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | assertVersion() 4 | { 5 | 6 | # retrieve input values 7 | local cmd="$1"; 8 | local assert="$2"; 9 | 10 | # run the command 11 | returnVal="$(eval $cmd)"; 12 | 13 | # verify the results 14 | if [ "$returnVal" != "$assert" ]; 15 | then 16 | echo -e "ERROR: Incorrect value, for: '${cmd}'\n"; 17 | echo -e "EXPECTED:\n'${assertVal}'\n"; 18 | echo -e "FOUND:\n'${returnVal}'\n"; 19 | exit 1; 20 | fi 21 | 22 | return 0; 23 | }; 24 | 25 | 26 | 27 | 28 | 29 | assertCmd="/usr/sbin/apache2ctl -v"; 30 | assertVal=$(cat <<'EOF' 31 | Server version: Apache/2.4.10 (Debian) 32 | Server built: Aug 28 2015 16:28:08 33 | EOF 34 | ); 35 | assertVersion "$assertCmd" "$assertVal"; 36 | 37 | 38 | 39 | # assertCmd="automater 127.0.0.1 | grep 'Results'"; 40 | # assertVal="____________________ Results found for: 127.0.0.1 ____________________"; 41 | # assertVersion "$assertCmd" "$assertVal"; 42 | 43 | 44 | 45 | assertCmd="arachni -v"; 46 | assertVal=$(cat <<'EOF' 47 | Arachni - Web Application Security Scanner Framework v1.2.1 48 | Author: Tasos "Zapotek" Laskos 49 | 50 | (With the support of the community and the Arachni Team.) 51 | 52 | Website: http://arachni-scanner.com 53 | Documentation: http://arachni-scanner.com/wiki 54 | 55 | 56 | Arachni 1.2.1 (ruby 2.1.5p273) [x86_64-linux-gnu] 57 | EOF 58 | ); 59 | assertVersion "$assertCmd" "$assertVal"; 60 | 61 | 62 | 63 | # bbqsql, does something odd with STDOUT... 64 | 65 | 66 | # beef-xss 67 | 68 | 69 | 70 | # blindelephant 71 | 72 | 73 | 74 | assertCmd="cadaver --version"; 75 | assertVal=$(cat <<'EOF' 76 | cadaver 0.23.3 77 | neon 0.30.1: Library build, IPv6, libxml 2.9.1, zlib 1.2.8, GNU TLS 3.3.8. 78 | readline 6.3 79 | EOF 80 | ); 81 | assertVersion "$assertCmd" "$assertVal"; 82 | 83 | 84 | 85 | # clusterd, includes color codes... remove with sed??? 86 | 87 | 88 | 89 | assertCmd="cookie-cadger -version"; 90 | assertVal=$(cat <<'EOF' 91 | No graphical environment found. Dropping to headless mode. 92 | 93 | 94 | Cookie Cadger (v1.06, https://cookiecadger.com) 95 | Created by Matthew Sullivan - mattslifebytes.com 96 | This software is freely distributed under the terms of the FreeBSD license. 97 | 98 | Fatal error: headless mode requires the use of an external database. Invoke with '--help' for database options. 99 | EOF 100 | ); 101 | assertVersion "$assertCmd" "$assertVal"; 102 | 103 | 104 | 105 | # cutycapt 106 | 107 | 108 | 109 | # davtest, no clue... 110 | 111 | 112 | 113 | # dirb, no clue... 114 | 115 | 116 | 117 | # dirbuster -v, requires DISPLAY 118 | 119 | 120 | 121 | # dnmap, cannot find... 122 | 123 | 124 | 125 | assertCmd="dotdotpwn --version 2>&1"; 126 | assertVal=$(cat <<'EOF' 127 | mlocate 0.26 128 | Copyright (C) 2007 Red Hat, Inc. All rights reserved. 129 | This software is distributed under the GPL v.2. 130 | 131 | This program is provided with NO WARRANTY, to the extent permitted by law. 132 | EOF 133 | ); 134 | assertVersion "$assertCmd" "$assertVal"; 135 | 136 | 137 | 138 | # eyewitness, weird STDOUT... 139 | 140 | 141 | 142 | # ftester, cannot find... 143 | 144 | 145 | 146 | # funkload, cannot find... 147 | 148 | 149 | assertCmd="golismero --version"; 150 | assertVal=$(cat <<'EOF' 151 | 152 | /-------------------------------------------\ 153 | | GoLismero 2.0.0b6, The Web Knife | 154 | | Copyright (C) 2011-2014 GoLismero Project | 155 | | | 156 | | Contact: contact@golismero-project.com | 157 | \-------------------------------------------/ 158 | 159 | usage: golismero.py [-h] [--help] [-f FILE] [--config FILE] [--user-config FILE] [-p NAME] [--ui-mode MODE] [-v] [-q] 160 | [--color] [--no-color] [--audit-name NAME] [-db DATABASE] [-nd] [-i FILENAME] [-ni] [-o FILENAME] 161 | [-no] [--full] [--brief] [--allow-subdomains] [--forbid-subdomains] [--parent] [-np] [-r DEPTH] 162 | [--follow-redirects] [--no-follow-redirects] [--follow-first] [--no-follow-first] 163 | [--max-connections MAX_CONNECTIONS] [-l MAX_LINKS] [-pu USER] [-pp PASS] [-pa ADDRESS] [-pn PORT] 164 | [--cookie COOKIE] [--user-agent USER_AGENT] [--cookie-file FILE] [--persistent-cache] 165 | [--volatile-cache] [-a PLUGIN:KEY=VALUE] [-e PLUGIN] [-d PLUGIN] [--max-concurrent N] 166 | [--plugin-timeout N] [--plugins-folder PATH] 167 | COMMAND [TARGET [TARGET ...]] 168 | golismero.py: error: too few arguments 169 | 170 | Use -h to see the quick help, or --help to show the full help text. 171 | 172 | EOF 173 | ); 174 | assertVersion "$assertCmd" "$assertVal"; 175 | 176 | 177 | 178 | # grabber, expected X Display??? 179 | 180 | 181 | 182 | assertCmd="halberd --version"; 183 | assertVal=$(cat <<'EOF' 184 | halberd 0.2.4 (14-Aug-2010) 185 | 186 | Copyright (C) 2004, 2005, 2006, 2010 Juan M. Bello Rivas 187 | 188 | This is free software; see the source for copying conditions. There is NO 189 | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 190 | 191 | EOF 192 | ); 193 | assertVersion "$assertCmd" "$assertVal"; 194 | 195 | 196 | 197 | # hexorbase, requires X Display server... 198 | 199 | 200 | 201 | assertCmd="httptunnel_client -version"; 202 | assertVal=$(cat <<'EOF' 203 | HTTPTunnel Client 1.2.1 (c) 2010 Sebastian Weber 204 | usage: httptunnel_client.pl [] [--debug] [--= ...] 205 | EOF 206 | ); 207 | assertVersion "$assertCmd" "$assertVal"; 208 | 209 | 210 | 211 | assertCmd="/usr/sbin/apache2ctl -v"; 212 | assertVal=$(cat <<'EOF' 213 | Server version: Apache/2.4.10 (Debian) 214 | Server built: Aug 28 2015 16:28:08 215 | EOF 216 | ); 217 | assertVersion "$assertCmd" "$assertVal"; 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | assertCmd="/usr/sbin/apache2ctl -v"; 232 | assertVal=$(cat <<'EOF' 233 | Server version: Apache/2.4.10 (Debian) 234 | Server built: Aug 28 2015 16:28:08 235 | EOF 236 | ); 237 | assertVersion "$assertCmd" "$assertVal"; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Diamonds 2 | 3 | **"Kali in the cloud with Diamonds!"** 4 | 5 | Would you like to build Kali Linux 2016.2 from source, run it on Amazon, make it 6 | easy for your dev team to run your attacks, and see it on your iPad over VNC? 7 | I sure would, so I made it happen! :) 8 | 9 | Kali Linux is an open-source Linux distribution, intended for security 10 | penetration testing and audits. It is based on Debian Jessie 64-bit, using 11 | Gnome 3.14 desktop (available in other flavors), with a wealth of security tools. 12 | 13 | http://tools.kali.org/kali-metapackages 14 | 15 | https://www.kali.org/news/kali-linux-metapackages/ 16 | 17 | | Name | Size | Description | 18 | |----------------------|------:|-------------------------------| 19 | | kali-linux | 1.5 GB| Default | 20 | | kali-linux-top10 | 3.5 GB| Top 10 tools | 21 | | kali-linux-full | 9.0 GB| ISO Default | 22 | | kali-linux-all |15.0 GB| Kitchen sink | 23 | | kali-linux-forensic | 3.1 GB| Data recovery and analysis | 24 | | kali-linux-gpu | 4.8 GB| GPU accelerated hash cracking | 25 | | kali-linux-pwtools | 6.0 GB| Password cracking utilities | 26 | | kali-linux-rfid | 1.5 GB| RFID tools | 27 | | kali-linux-sdr | 2.4 GB| Software Defined Radio tools | 28 | | kali-linux-voip | 1.8 GB| VOIP tools | 29 | | kali-linux-web | 4.9 GB| Web app testing | 30 | | kali-linux-wireless | 6.6 GB| Wireless tools | 31 | 32 | 33 | 34 | ## Installation 35 | 36 | Do the "Platform Specific Install" steps, then do the "General Install" steps. 37 | 38 | **Windows:** 39 | - update Powershell, https://www.microsoft.com/en-us/download/details.aspx?id=48729 40 | - install puTTY, http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe 41 | - install puTTYgen, http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe 42 | - install TightVNCViewer, http://www.tightvnc.com/download.php 43 | - install Cygwin (32-bit), https://cygwin.com/install.html 44 | - update system PATH to include Cygwin first: 45 | ```Shell 46 | setx /M PATH "C:\cygwin\bin\;%PATH%;" 47 | ``` 48 | 49 | **Mac / Linux:** 50 | - install vnc viewer 51 | 52 | **General Install:** 53 | - install [Python](https://www.python.org/downloads/) 54 | - install [Pip](https://pip.pypa.io/en/stable/installing/) 55 | - install, configure [AWS-CLI](https://github.com/aws/aws-cli) 56 | - configure your AWS default security group to allow SSH access to your IP 57 | - install [Virtualbox](https://www.virtualbox.org/wiki/Downloads) (optional) 58 | - install [Virtualbox Guest Additions](https://www.virtualbox.org/wiki/Downloads) (optional) 59 | - install [Vagrant](https://www.vagrantup.com/downloads.html) 60 | - install vagrant plugins 61 | ```Shell 62 | vagrant plugin install vagrant-aws 63 | vagrant plugin install vagrant-vbguest 64 | ``` 65 | - add Vagrant dummy box: 66 | ```Shell 67 | vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box 68 | ``` 69 | - git clone this repo 70 | ```Shell 71 | git clone https://github.com/apolloclark/diamonds 72 | ``` 73 | - choose which version of Kali you want (Command Line / cli vs. Desktop / gui) 74 | - choose which meta-package you want 75 | - rename "aws-config-example.yml" to "aws-config.yml" 76 | - update the "aws-config.yml" with your AWS credentials and settings 77 | - cd into the folder server-type you want, ex: 78 | ```Shell 79 | cd ./diamonds/gui/kali-linux-web 80 | ``` 81 | - start vagrant, for a local instance, using Virtualbox: 82 | ```Shell 83 | vagrant up 84 | ``` 85 | - start vagrant, for a remote instance, on Amazon: 86 | ```Shell 87 | vagrant up --provider=aws 88 | ``` 89 | - sit back (for like 30+ min sometimes...) 90 | - restart the server 91 | - Enjoy! 92 |




93 | 94 | 95 | ## Can I VNC into this? 96 | 97 | Yes you can! It has Vino VNC server installed, but you'll need to use an SSH 98 | tunnel. I normally would have gone with TightVNC, but Vino is the only VNC 99 | server that supports Gnome 3.14. However, Vino only supports a new version of TLS, 100 | which very few VNC clients support. So, I disabled Vino encryption (I know!), 101 | but set it up to only listen to local connections on the "lo network" / 102 | localhost / loopback interface. This means it's not exposed to the internet. 103 | To access it, you'll need to SSH into the Kali instance. Luckily, a lot of the 104 | better quality VNC clients support this. Security of SSH, convenience of VNC, 105 | BOOM! 106 | 107 | **Windows:** 108 | - convert your AWS private key to a puTTY format, using puTTYgen 109 | 110 | https://github.com/Varying-Vagrant-Vagrants/VVV/wiki/Connect-to-Your-Vagrant-Virtual-Machine-with-PuTTY 111 | - open puTTY, setup a port forwarding for VNC, port 5900 112 | 113 | http://helpdeskgeek.com/how-to/tunnel-vnc-over-ssh/ 114 | - open TightVNC 115 | - login to the VNC instance, at 127.0.0.1:5900 116 | 117 | **Mac / Linx:** 118 | - ssh into the Kali instance, setting up an SSH tunnel, ex: 119 | ```Shell 120 | 121 | # create SSH port forwarding tunnel 122 | ssh -L 5900:127.0.0.1:5900 admin@ -i 123 | 124 | # create SSH port forwarding tunnel without a Terminal 125 | ssh -nNT -L 5900:127.0.0.1:5900 admin@ -i 126 | ``` 127 | - login to the VNC instnace, at 127.0.0.1:5900 128 | 129 | 130 | 131 | ## Dependencies ## 132 | 133 | ### Vagrant 134 | https://www.vagrantup.com/ 135 | 136 | Vagrant is an open-source DevOps tool for deployment automation, supporting: 137 | local deploys to Virtualbox, VMWare, vSphere, and many others; cloud services 138 | such as AWS, Rackspace, and Azure; and Linux Containers such as Docker. It 139 | includes support for a variety of build tools: raw Bash, Chef, Puppet, Ansible, 140 | Salt, etc. 141 | 142 | ### Gauntlt 143 | https://github.com/gauntlt/gauntlt 144 | 145 | Gauntlt is a security scan automation tool. It's written in Ruby (Golang 146 | rewrite in progress!), uses a standard Cucumber format script to let you write 147 | QA style tests with pre-conditions, tests, and assertions. The tests call 148 | down to the command-line. If you can run a security tool on the command line, 149 | you can call it with Gauntlt, and do assertions against the output to verify 150 | the results. The test results are output in Cucumber format, which can be seen 151 | in Jenkins using a plugin. 152 | 153 | ### Jenkins 154 | https://jenkins-ci.org/ 155 | 156 | https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Test+Result+Plugin 157 | 158 | Jenkins is a build automation tool, originally developed for creating Java apps. 159 | It has expanded to support many languages, and give easy reporting. Jenkins 160 | Build Jobs can be run manually, or on a schedule, and supports a wide range of 161 | plugins to enable: code quality checks (linting, cyclometric complexity, 162 | unit testing, code coverage), performance testing, stress testing, alerts 163 | (email, sms, IRC, HipChat, etc.), and reporting. 164 | 165 | ### Summary 166 | Kali is great for running security tests (but lacks automation and reporting), 167 | Gauntlt is great for running tests (but lacks a full tool suite and reporting), 168 | Jenkins is great for automation and reporting (but lacks test running, and 169 | security tools). None of them deal with deployment to centralized servers in 170 | the cloud, making collaboration amongst a team diffcult. I originally built 171 | this Vagrant + Kali + Gauntlt + Jenkins setup locally, but only recently was 172 | able to deploy it to AWS (with much difficulty). 173 | 174 | 175 | 176 | ## What is this thing doing? 177 | 178 | Under the covers, this thing is just creating a virtual machine, spinning up 179 | a fresh Debian Jessie instance, and running some Bash scripts. In more detail: 180 | Vagrant sets up a virtual machine with resources (CPU, memory, harddrive, 181 | networking, fileshares, etc.), downloads a Debian Jessie basebox image, 182 | runs some Bash scripts, pulls down meta-packages from the Kali repo, installs 183 | everything, and you got a fresh Kali instance. 184 | 185 | Scripts run, in order: 186 | - bootstrap_base.sh 187 | - bootstrap.sh (within the metapackage folder, ex: "gui / kali-linux-web / provision") 188 | - gui / bootstrap_vino.sh (for gui version) 189 | - bootstrap_cleanup.sh 190 | 191 | 192 | 193 | ## FAQ 194 | 195 | #### This is awesome! 196 | 197 | Not a question, but thanks! :) 198 | 199 | #### Yo shit broke! 200 | 201 | Again, not a question, but let me know. Best place is here on Github, open a 202 | ticket, and be VERY detailed with your exact setup, send me screenshots. **If I 203 | can't reproduce your problem, I won't be able to fix it. Run these commands and 204 | include the results in your ticket:** 205 | 206 | **Windows:** 207 | ```Shell 208 | systeminfo | findstr /B /C:"OS Name" /C:"OS Version" 209 | powershell $PSVersionTable 210 | ``` 211 | 212 | **Mac:** 213 | ```Shell 214 | sw_vers 215 | xcode-select -p 216 | gcc --version 217 | echo $SHELL 218 | echo $BASH 219 | bash --version 220 | ``` 221 | 222 | **Linux:** 223 | ```Shell 224 | uname -a 225 | echo $SHELL 226 | echo $BASH 227 | bash --version 228 | ``` 229 | 230 | **All Systems:** 231 | ```Shell 232 | vagrant version 233 | vagrant plugin list 234 | vboxmanage --version 235 | ssh -v localhost 236 | aws --version 237 | aws ec2 describe-tags 238 | vagrant up --debug 239 | ``` 240 | 241 | - Which VNC client are you using, version? 242 | - How are you establishing the SSH tunnel, program, version? 243 | 244 | If you do ALL of this, I may be able to help you, no guarantees. It may 245 | take a few weeks, unless you want to hire me as a consultant. 246 | 247 | #### Can you remove the SSH tunnel for VNC? 248 | 249 | You can, but I chose not to, because it would be insecure. You could use a 250 | different VNC server, but would lose access to the Kali default Gnome 3.14 251 | desktop. 252 | 253 | #### Why did you call it "Diamonds"? 254 | 255 | I chose that name purely so I can go up to people at Defcon and ask them: 256 | 257 | *"Have you ever used Kali in the cloud with Diamonds?"* 258 | 259 | #### Do you work for Offensive Security? 260 | 261 | Not yet. I'm still waiting on that owl to deliver my letter... 262 | 263 | #### Can you build this for Digital Ocean / Rackspace /Azure? 264 | 265 | It's not at the top of my list, but I'll think about it. 266 | 267 | #### Do you do consulting? 268 | 269 | Yessir! You can email me: apolloclark@gmail.com 270 | 271 | --------------------------------------------------------------------------------