994 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			994 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| #
 | |
| # pimpmykali.sh  Author: Dewalt
 | |
| # git clone https://github.com/Dewalt-arch/pimpmykali
 | |
| # Usage: sudo ./pimpmykali.sh  ( defaults to the menu system )
 | |
| # command line arguments are valid, only catching 1 arguement
 | |
| #
 | |
| # Full Revision history can be found in README.md
 | |
| # Standard Disclaimer: Author assumes no liability for any damage
 | |
| 
 | |
| # revision var
 | |
|     revision="1.2.4"
 | |
| 
 | |
| # unicorn puke:
 | |
|     red=$'\e[1;31m'
 | |
|     green=$'\e[1;32m'
 | |
|     blue=$'\e[1;34m'
 | |
|     magenta=$'\e[1;35m'
 | |
|     cyan=$'\e[1;36m'
 | |
|     yellow=$'\e[1;93m'
 | |
|     white=$'\e[0m'
 | |
|     bold=$'\e[1m'
 | |
|     norm=$'\e[21m'
 | |
| 
 | |
| # more unicorn puke...*sigh* added for senpai, taste the rainbow!
 | |
| # now with 100% more unicorn puke! enjoy a color for no color!!
 | |
|     color_nocolor='\e[0m'
 | |
|     color_black='\e[0;30m'
 | |
|     color_grey='\e[1;30m'
 | |
|     color_red='\e[0;31m'
 | |
|     color_light_red='\e[1;31m'
 | |
|     color_green='\e[0;32m'
 | |
|     color_light_green='\e[1;32m'
 | |
|     color_brown='\e[0;33m'
 | |
|     color_yellow='\e[1;33m'
 | |
|     color_blue='\e[0;34m'
 | |
|     color_light_blue='\e[1;34m'
 | |
|     color_purple='\e[0;35m'
 | |
|     color_light_purple='\e[1;35m'
 | |
|     color_cyan='\e[0;36m'
 | |
|     color_light_cyan='\e[1;36m'
 | |
|     color_light_grey='\e[0;37m'
 | |
|     color_white='\e[1;37m'
 | |
| 
 | |
| # nuke impacket function launch_code generator
 | |
|     launch_codes_alpha=$(echo $((1 + RANDOM % 9999)))
 | |
|     launch_codes_beta=$(echo $((1 + RANDOM % 9999)))
 | |
|     launch_codes_charlie=$(echo $((1 + RANDOM % 9999)))
 | |
| 
 | |
| # status indicators
 | |
|     greenplus='\e[1;33m[++]\e[0m'
 | |
|     greenminus='\e[1;33m[--]\e[0m'
 | |
|     redminus='\e[1;31m[--]\e[0m'
 | |
|     redexclaim='\e[1;31m[!!]\e[0m'
 | |
|     redstar='\e[1;31m[**]\e[0m'
 | |
|     blinkexclaim='\e[1;31m[\e[5;31m!!\e[0m\e[1;31m]\e[0m'
 | |
|     fourblinkexclaim='\e[1;31m[\e[5;31m!!!!\e[0m\e[1;31m]\e[0m'
 | |
| 
 | |
| # variables needed in the script
 | |
|     # wait_time=10  # 2nd warning screen wait time (disabled)
 | |
|     force=0
 | |
|     check=""
 | |
|     section=""
 | |
|     type=""
 | |
| 
 | |
| # variables moved from local to global
 | |
|     finduser=$(logname)
 | |
| 
 | |
| # for vbox_fix_shared_folder_permission_denied
 | |
|     findgroup=$(groups $finduser | grep -i -c "vboxsf")
 | |
| 
 | |
| # Logging
 | |
| #    LOG_FILE=/tmp/pimpmykali.log
 | |
| #    exec > >(tee ${LOG_FILE}) 2>&1
 | |
| 
 | |
| # silent mode
 | |
|     silent=''                  # uncomment to see all output
 | |
|     # silent='>/dev/null 2>&1' # uncomment to hide all output10
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - fix_xfce_root fix_xfce_user fix_xfcepower external configuration file
 | |
|     raw_xfce="https://raw.githubusercontent.com/Dewalt-arch/pimpmyi3-config/main/xfce4/xfce4-power-manager.xml"
 | |
| 
 | |
| check_distro() {
 | |
|     distro=$(uname -a | grep -i -c "kali") # distro check
 | |
|     if [ $distro -ne 1 ]
 | |
|      then echo -e "\n $blinkexclaim Kali Linux Not Detected - WSL/WSL2/Anything else is unsupported $blinkexclaim \n"; exit
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| check_for_root () {
 | |
|     if [ "$EUID" -ne 0 ]
 | |
|       then echo -e "\n\n Script must be run with sudo ./pimpmykali.sh or as root \n"
 | |
|       exit
 | |
|        else
 | |
|         # 02.19.21 - Kali 2021.1 + MSF 6.0.30-DEV Released
 | |
|         # Remove any prior hold on metasploit-framework at startup
 | |
|         eval apt-mark unhold metasploit-framework >/dev/null 2>&1
 | |
|         # Possible future logging option - work in progress
 | |
|         # [[ ! -f "/tmp/pmk.log" ]] && touch /tmp/pmk.log || echo -e "\n Pimpmykali Log " > /tmp/pmk.log; date >> /tmp/pmk.log
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_section () {
 | |
|     if [ $check -ne 1 ]
 | |
|      then
 | |
|       # sanity check : force=0 check=0 or force=1 check=0
 | |
|       echo -e "\n  $greenplus install : $section"
 | |
|       eval apt -y install $section $silent
 | |
|      elif [ $force = 1 ]
 | |
|       then
 | |
|        # sanity check : force=1 check=1
 | |
|        echo -e "\n  $redstar reinstall : $section"
 | |
|        eval apt -y reinstall $section $silent
 | |
|      else
 | |
|        # sanity check : force=0  check=1
 | |
|        echo -e "\n  $greenminus $section already installed"
 | |
|        echo -e "       use --force to reinstall"
 | |
|     fi
 | |
|     check=""
 | |
|     type=""
 | |
|     section=""
 | |
|     }
 | |
| 
 | |
| apt_update() {
 | |
|     echo -e "\n  $greenplus running: apt update \n"
 | |
|     eval apt -y update
 | |
|     }
 | |
| 
 | |
| apt_upgrade() {
 | |
|     echo -e "\n  $greenplus running: apt upgrade \n"
 | |
|     eval apt -y upgrade
 | |
|     }
 | |
| 
 | |
| apt_autoremove() {
 | |
|     echo -e "\n  $greenplus running: apt autoremove \n"
 | |
|     eval apt -y autoremove
 | |
|     }
 | |
| 
 | |
| apt_update_complete() {
 | |
|     echo -e "\n  $greenplus apt update - complete"
 | |
|     }
 | |
| 
 | |
| apt_upgrade_complete() {
 | |
|     echo -e "\n  $greenplus apt upgrade - complete"
 | |
|     }
 | |
| 
 | |
| apt_autoremove_complete() {
 | |
|     echo -e "\n  $greenplus apt autoremove - complete"
 | |
|     }
 | |
| 
 | |
| fix_missing () {
 | |
|     fix_sources
 | |
|     apt_update && apt_update_complete
 | |
|     apt_autoremove && apt_autoremove_complete
 | |
|     # eval apt -y update $silent && eval apt -y autoremove $silent
 | |
|     eval apt -y remove kali-undercover $silent
 | |
|     # 02.01.2020 - Added cifs-utils and libguestfs-tools as they are require for priv escalation
 | |
|     eval apt -y install dkms build-essential autogen automake python3-setuptools python3-distutils python3.9-dev libguestfs-tools cifs-utils $silent
 | |
|     python-pip-curl
 | |
|     python3_pip $force
 | |
|     fix_gedit   $force    # restored to its former glory
 | |
|     fix_root_connectionrefused
 | |
|     fix_htop    $force
 | |
|     fix_golang  $force
 | |
|     fix_nmap
 | |
|     fix_rockyou
 | |
|     fix_theharvester      # 02.02.2021 - added theharvester to fix_missing
 | |
|     silence_pcbeep        # 02.02.2021 - turn off terminal pc beep
 | |
|     fix_xfcepower         # 02.02.2021 - disable xfce power management for user and root
 | |
|     fix_python_requests
 | |
|     fix_pipxlrd           # 12.29.2020 added xlrd==1.2.0 for windows-exploit-suggester.py requirement
 | |
|     fix_spike
 | |
|     fix_set
 | |
|     check_chrome
 | |
|     # fix_gowitness       # 01.27.2021 added due to 404 errors with go get -u github.com/sensepost/gowitness
 | |
|     # fix_assetfinder     # 02.01.21 Hold
 | |
|     }
 | |
| 
 | |
| fix_all () {
 | |
|     fix_missing   $force
 | |
|     make_rootgreatagain $force
 | |
|     seclists      $force
 | |
|     install_atom
 | |
|     fix_flameshot $force
 | |
|     fix_grub
 | |
|     fix_smbconf
 | |
|     fix_impacket
 | |
|     fix_upgrade
 | |
|     # fix_broken_xfce - not be necessary as of 2021.1 - code to be removed from script at later date
 | |
|     # ID10T REMINDER: DONT CALL THESE HERE THEY ARE IN FIX_MISSING!
 | |
|     # python-pip-curl python3_pip fix_golang fix_nmap
 | |
|     # fix_upgrade is not a part of fix_missing and only
 | |
|     # called as sub-function call of fix_all or fix_upgrade itself
 | |
|     }
 | |
| 
 | |
| # lightdm theme change to light or dark mode maybe
 | |
| # cat /etc/lightdm/lightdm-gtk-greeter.conf | sed 's/Kali-Light/Kali-Dark''/'
 | |
| # cat /etc/lightdm/lightdm-gtk-greeter.conf | sed 's/Kali-Dark/Kali-Light''/'
 | |
| # add optional ugly-background fix?
 | |
| 
 | |
| # 04.06.21 - rev 1.2.2 - add google-chrome due to gowitness dependancy
 | |
| check_chrome(){
 | |
|     [[ -f "/usr/bin/google-chrome" ]] && echo -e "\n  $greenminus google-chrome already installed - skipping  \n" || fix_chrome;
 | |
|     }
 | |
| 
 | |
| fix_chrome() {
 | |
|     echo -e "\n  $greenplus Gowitness dependancy fix: Downloading - google-chrome \n"
 | |
|     eval wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/google-chrome-stable_current_amd64.deb
 | |
|     echo -e "\n  $greenplus Gowitness dependancy fix: Installing - google-chrome \n"
 | |
|     eval dpkg -i /tmp/google-chrome-stable_current_amd64.deb
 | |
|     rm -f /tmp/google-chrome-stable_current_amd64.deb
 | |
|     }
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - Turn off XFCE Power Management for user
 | |
| fix_xfce_root() {
 | |
|     eval wget $raw_xfce -O /root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
 | |
|     echo -e "\n  $greenplus turned off xfce power management root \n"
 | |
|   	}
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - Turn off XFCE Power Management for $finduser
 | |
| fix_xfce_user() {
 | |
|     eval wget $raw_xfce -O /home/$finduser/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
 | |
|     echo -e "\n  $greenplus turned off xfce power management for $finduser \n"
 | |
| 	  }
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - Turn off XFCE Power - detection statements
 | |
| fix_xfcepower () {
 | |
|     [[ -f "/home/$finduser/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml" ]] && fix_xfce_user || echo -e "\n  $greenminus xfce power management file not found"
 | |
|     [[ -f "/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml" ]] && fix_xfce_root || echo -e "\n  $greenminus xfce power management file not found"
 | |
|   	}
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - Turn off / Silence PCSPKR beep
 | |
| silence_pcbeep () {
 | |
|     echo -e "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf
 | |
|     echo -e "\n  $greenplus Terminal Beep Silenced! /etc/modprobe.d/nobeep.conf \n"
 | |
|     }
 | |
| 
 | |
| fix_pipxlrd () {
 | |
|     eval pip install xlrd==1.2.0 --upgrade
 | |
|     # eval pip3 install xlrd --upgrade
 | |
|     echo -e "\n  $greenplus python module : xlrd installed \n"
 | |
|     }
 | |
| 
 | |
| python-pip-curl () {
 | |
|     check_pip=$(whereis pip | grep -i -c "/usr/local/bin/pip2.7")
 | |
|     if [ $check_pip -ne 1 ]
 | |
|      then
 | |
|       echo -e "\n  $greenplus installing pip"
 | |
|       # 01.26.2021 - get-pip.py throwing an error, commented out and pointed wget directly to the python2.7 get-pip.py
 | |
|       # eval curl curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py $silent
 | |
|       eval curl https://raw.githubusercontent.com/pypa/get-pip/3843bff3a0a61da5b63ea0b7d34794c5c51a2f11/2.7/get-pip.py -o /tmp/get-pip.py $silent
 | |
|       eval python /tmp/get-pip.py $silent
 | |
|       rm -f /tmp/get-pip.py
 | |
|       eval pip install setuptools
 | |
|       echo -e "\n  $greenplus python-pip installed"
 | |
|     else
 | |
|       echo -e "\n  $greenminus python-pip already installed"
 | |
|     fi
 | |
|     }
 | |
| 
 | |
|  # section= must be exact name of package in kali repo
 | |
|  # check= custom check for that particular item
 | |
|  # type= set in fix_section based on eval of $check and $force
 | |
|  # force= to override force / set force var
 | |
|  # fix_section $section $check $force
 | |
| 
 | |
| # 01.26.2021 - rev 1.1.5 - Current version of spike throws undefined symbol error, revert to old version
 | |
| fix_spike () {
 | |
|     echo -e "\n  $greenplus Fix SPIKE "
 | |
|     echo -e "\n  $greenplus removing SPIKE...\n"
 | |
|     eval apt -y --allow-change-held-packages remove spike
 | |
|     wget http://old.kali.org/kali/pool/main/s/spike/spike_2.9-1kali6_amd64.deb -O /tmp/spike_2.9-1kali6_amd64.deb
 | |
|     echo -e "\n  $greenplus installing spike 2.9... \n"
 | |
|     eval dpkg -i /tmp/spike_2.9-1kali6_amd64.deb
 | |
|     echo -e "\n  $greenplus spike 2.9 installed \n"
 | |
|     rm -f /tmp/spike_2.9-1kali6_amd64.deb
 | |
|     echo -e "\n  $greenplus setting apt hold on spike package"
 | |
|     eval apt-mark hold spike
 | |
|     echo -e "\n  $greenplus apt hold placed on spike package"
 | |
|     }
 | |
| 
 | |
| # fix_gowitness () {
 | |
| #   # 01.27.2021 - added due to 404 errors with go get -u github.com/sensepost/gowitness
 | |
| #   # multiple different archs need an if statement to detect arch type and grab right binary.
 | |
| #   echo -e "\n  $greenplus Installing gowitness prebuilt binary...\n"
 | |
| #   wget https://github.com/sensepost/gowitness/releases/download/2.3.0/gowitness-2.3.0-linux-amd64 -O /usr/bin/gowitness
 | |
| #   chmod +x /usr/bin/gowitness
 | |
| #   echo -e "\n  $greenplus gowitness installed \n"
 | |
| #
 | |
| #   this will only work after golang is installed and gopath has been added to .bashrc and .zshrc
 | |
| #   isgoinstalled=$(go --version | grep -i -c "go version go") check that its installed
 | |
| #   export | grep GOPATH check that GOPATH is set and active
 | |
| #   if both conditions are met install :
 | |
| #   go get -u gorm.io/gorm
 | |
| #   go get -u github.com/sensepost/gowitness
 | |
| #   }
 | |
| 
 | |
| fix_root_connectionrefused () {
 | |
|     # fix root gedit connection refused
 | |
|     echo -e "\n  $greenplus Adding root to xhost : xhost +SI:localuser:root \n"
 | |
|     eval xhost +SI:localuser:root
 | |
|     echo -e "\n  $greenplus root added to xhost"
 | |
|     }
 | |
| 
 | |
| fix_gedit () {
 | |
|     section="gedit"
 | |
|     check=$(whereis gedit | grep -i -c "gedit: /usr/bin/gedit")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| fix_set() {
 | |
|     # move these to their individual respecitive functions at a later date - 04.11.2021 rev 1.2.4
 | |
|     eval apt -y install libssl-dev set gcc-mingw-w64-x86-64-win32
 | |
|     }
 | |
| 
 | |
| fix_rockyou () {
 | |
|     cd /usr/share/wordlists
 | |
|     gzip -dq /usr/share/wordlists/rockyou.txt.gz
 | |
|     echo -e "\n  $greenplus gunzip /usr/share/wordlists/rockyou.txt.gz\n"
 | |
|     }
 | |
| 
 | |
| locate () {
 | |
|     section="locate"
 | |
|     check=$(whereis locate | grep -i -c "locate: /usr/bin/locate")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| fix_htop () {
 | |
|     section="htop"
 | |
|     check=$(whereis htop | grep -i -c "htop: /usr/bin/htop")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| python3_pip () {
 | |
|     section="python3-pip"
 | |
|     check=$(python3 -m pip --version | grep -i -c "/usr/lib/python3/dist-packages/pip")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| seclists () {
 | |
|     section="seclists"
 | |
|     check=$(whereis seclists | grep -i -c "seclists: /usr/bin/seclists /usr/share/seclists")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| fix_nmap () {
 | |
|     rm -f /usr/share/nmap/scripts/clamav-exec.nse
 | |
|     echo -e "\n  $redminus /usr/share/nmap/scripts/clamav-exec.nse removed "
 | |
|     eval wget https://raw.githubusercontent.com/nmap/nmap/master/scripts/clamav-exec.nse -O /usr/share/nmap/scripts/clamav-exec.nse $silent
 | |
|     eval wget https://raw.githubusercontent.com/onomastus/pentest-tools/master/fixed-http-shellshock.nse -O /usr/share/nmap/scripts/http-shellshock.nse $silent
 | |
|     echo -e "\n  $greenplus /usr/share/nmap/scripts/clamav-exec.nse replaced with working version "
 | |
|     }
 | |
| 
 | |
| fix_flameshot () {
 | |
|     section="flameshot"
 | |
|     check=$(whereis flameshot | grep -i -c "/usr/bin/flameshot")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| # 02.02.21 - rev 1.1.8 - install theharvester
 | |
| fix_theharvester () {
 | |
|     section="theharvester"
 | |
|     check=$(whereis theharvester | grep -i -c "/usr/bin/theharvester")
 | |
|     fix_section $section $check $force
 | |
|     }
 | |
| 
 | |
| fix_golang () {
 | |
|     section="golang"
 | |
|     check=$(whereis go  | grep -i -c "/usr/bin/go")
 | |
|     fix_section $section $check $force
 | |
|     fix_go_path
 | |
|     }
 | |
| 
 | |
| fix_go_path() {
 | |
|     findrealuser=$(who | awk '{print $1}')
 | |
|     if [ $findrealuser == "root" ]
 | |
|      then
 | |
|       check_root_zshrc=$(cat /root/.zshrc | grep -c GOPATH)
 | |
|        if [ $check_root_zshrc -ne 0 ]
 | |
|          then
 | |
|           echo -e "\n  $redminus GOPATH Variables for $findrealuser already exist in /root/.zshrc - Not changing"
 | |
|          else
 | |
|           echo -e "\n  $greenplus Adding GOPATH Variables to /root/.zshrc"
 | |
|           eval echo -e 'export GOPATH=\$HOME/go' >> /root/.zshrc
 | |
|           eval echo -e 'export PATH=\$PATH:\$GOPATH/bin' >> /root/.zshrc
 | |
|        fi
 | |
|       check_root_bashrc=$(cat /root/.bashrc | grep -c GOPATH)
 | |
|        if [ $check_root_bashrc -ne 0 ]
 | |
|         then
 | |
|          echo -e "\n  $redminus GOPATH Variables for $findrealuser already exist in /root/.bashrc - Not changing"
 | |
|         else
 | |
|          echo -e "\n  $greenplus Adding GOPATH Variables to /root/.bashrc"
 | |
|          eval echo -e 'export GOPATH=\$HOME/go' >> /root/.bashrc
 | |
|          eval echo -e 'export PATH=\$PATH:\$GOPATH/bin' >> /root/.bashrc
 | |
|        fi
 | |
|      else
 | |
|       check_user_zshrc=$(cat /home/$findrealuser/.zshrc | grep -c GOPATH)
 | |
|        if [ $check_user_zshrc -ne 0 ]
 | |
|         then
 | |
|          echo -e "\n  $redminus GOPATH Variables for user $findrealuser already exist in /home/$findrealuser/.zshrc  - Not Changing"
 | |
|         else
 | |
|          echo -e "\n  $greenplus Adding GOPATH Variables to /home/$findrealuser/.zshrc"
 | |
|          eval echo -e 'export GOPATH=\$HOME/go' >> /home/$findrealuser/.zshrc
 | |
|          eval echo -e 'export PATH=\$PATH:\$GOPATH/bin' >> /home/$findrealuser/.zshrc
 | |
|        fi
 | |
|       check_user_bashrc=$(cat /home/$findrealuser/.bashrc | grep -c GOPATH)
 | |
|        if [ $check_user_bashrc -ne 0 ]
 | |
|         then
 | |
|          echo -e "\n  $redminus GOPATH Variables for user $findrealuser already exist in /home/$findrealuser/.bashrc - Not Changing"
 | |
|         else
 | |
|          echo -e "\n  $greenplus Adding GOPATH Variables to /home/$findrealuser/.bashrc"
 | |
|          eval echo -e 'export GOPATH=\$HOME/go' >> /home/$findrealuser/.bashrc
 | |
|          eval echo -e 'export PATH=\$PATH:\$GOPATH/bin' >> /home/$findrealuser/.bashrc
 | |
|        fi
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_smbconf () {
 | |
|     check_min=$(cat /etc/samba/smb.conf | grep -c -i "client min protocol")
 | |
|     check_max=$(cat /etc/samba/smb.conf | grep -c -i "client max protocol")
 | |
|     if [ $check_min -ne 0 ] || [ $check_max -ne 0 ]
 | |
|       then
 | |
|         echo -e "\n  $green /etc/samba/smb.conf "
 | |
|         echo -e "\n  $redminus client min protocol is already set not changing\n  $redminus client max protocol is already set not changing"
 | |
|       else
 | |
|         cat /etc/samba/smb.conf | sed 's/\[global\]/\[global\]\n   client min protocol = CORE\n   client max protocol = SMB3\n''/' > /tmp/fix_smbconf.tmp
 | |
|         cat /tmp/fix_smbconf.tmp > /etc/samba/smb.conf
 | |
|         rm -f /tmp/fix_smbconf.tmp
 | |
|         echo -e "\n  $greenplus /etc/samba/smb.conf updated"
 | |
|         echo -e "\n  $greenplus added : client min protocol = CORE\n  $greenplus added : client max protocol = SMB3"
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_grub () {
 | |
|     check_grub=$(cat /etc/default/grub | grep -i -c "GRUB_CMDLINE_LINUX_DEFAULT=\"quiet\"" )
 | |
|     if [ $check_grub -ne 1 ]
 | |
|       then
 | |
|         echo -e "\n  $redexclaim Error: /etc/default/grub is not the default config - not changing"
 | |
|       else
 | |
|         cat /etc/default/grub | sed 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet mitigations=off"/' > /tmp/fix_grub.tmp
 | |
|         cat /tmp/fix_grub.tmp > /etc/default/grub
 | |
|         rm -f /tmp/fix_grub.tmp
 | |
|         update-grub
 | |
|         echo -e "\n  $greenplus Added mitigations=off to GRUB_CMDLINE_LINUX_DEFAULT"
 | |
| 	      echo -e "\n  $redexclaim Reboot for changes to take effect \n"
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_python_requests (){
 | |
|     # requires python pip to be installed via curl
 | |
|     # already installed by fix_missing or fix_all by the time this is called
 | |
|     # eval curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py $silent
 | |
|     # eval python /tmp/get-pip.py $silent
 | |
|     # rm -f /tmp/get-pip.py
 | |
|     eval git clone https://github.com/psf/requests /opt/requests
 | |
|     cd /opt/requests
 | |
|     eval pip install colorama
 | |
|     eval pip install .
 | |
|     echo -e "\n  $greenplus installed python2 module : requests"
 | |
|     echo -e "\n  $greenplus installed python2 module : colorama"
 | |
|     }
 | |
| 
 | |
| fix_bad_apt_hash (){
 | |
|     mkdir -p /etc/gcrypt
 | |
|     echo "all" > /etc/gcrypt/hwf.deny
 | |
|     }
 | |
| 
 | |
| install_atom () {
 | |
|     apt_update  && apt_update_complete
 | |
|     #eval apt -y update
 | |
|     eval wget -qO- https://atom.io/download/deb -O /tmp/atom.deb >/dev/null 2>&1
 | |
|     eval dpkg -i /tmp/atom.deb >/dev/null 2>&1
 | |
|     eval rm -f /tmp/atom.deb
 | |
|     eval apt -y --fix-broken install >/dev/null 2>&1
 | |
|     }
 | |
| 
 | |
| install_sublime () {
 | |
|     echo -e "\n  $greenplus installing sublime text editor"
 | |
|     eval wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
 | |
|     eval apt-get install apt-transport-https
 | |
|     eval echo "deb https://download.sublimetext.com/ apt/stable/" > /etc/apt/sources.list.d/sublime-text.list
 | |
|     apt_update && apt_update_complete
 | |
|     eval apt -y install sublime-text
 | |
|     }
 | |
| 
 | |
| install_vscode () {
 | |
|     check_vscode=$(cat /etc/apt/sources.list | grep -c "https://packages.microsoft.com/repos/vscode stable main")
 | |
| 
 | |
|     if [[ $check_vscode = 0 ]]; then
 | |
|       echo -e "\n  $greenplus installing vscode"
 | |
|       echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" >> /etc/apt/sources.list
 | |
|       eval curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
 | |
|       eval mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
 | |
|       apt_update && apt_update_complete && apt -y install code
 | |
|     else
 | |
|     	echo -e "\n  $greenminus  vscode repo found in sources.list - skipping"
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_sources () {
 | |
|     fix_bad_apt_hash
 | |
|     # new fix_sources main function - 04.06.2021 rev 1.2.2
 | |
|     # checks only for "#deb-src http://http.kali.org/kali kali-rolling main contrib non-free" or
 | |
|     # checks only for "# deb-src http://http.kali.org/kali kali-rolling main contrib non-free"
 | |
|     # if found sed and removes "#" or "# " to enable deb-src
 | |
|     # no other modifications are made to /etc/apt/sources.list
 | |
| 
 | |
|     check_space=$(cat /etc/apt/sources.list | grep -c "# deb-src http://http.kali.org/kali kali-rolling main contrib non-free")
 | |
|     check_nospace=$(cat /etc/apt/sources.list | grep -c "#deb-src http://http.kali.org/kali kali-rolling main contrib non-free")
 | |
| 
 | |
|     if [[ $check_space = 0 && $check_nospace = 0 ]]; then
 | |
|     	echo -e "\n  $greenminus # deb-src or #deb-sec not found - skipping"
 | |
|     elif [ $check_space = 1 ]; then
 | |
|       echo -e "\n  $greenplus # deb-src with space found in sources.list uncommenting and enabling deb-src"
 | |
|       cat /etc/apt/sources.list | sed 's/\# deb-src http\:\/\/http\.kali\.org\/kali kali-rolling main contrib non\-free/\deb-src http\:\/\/http\.kali\.org\/kali kali-rolling main contrib non\-free''/' > /tmp/new-sources.list
 | |
|       cat /tmp/new-sources.list > /etc/apt/sources.list
 | |
|       rm  /tmp/new-sources.list
 | |
|       echo -e "\n  $greenplus new /etc/apt/sources.list written with deb-src enabled"
 | |
|     elif [ $check_nospace = 1 ]; then
 | |
|       echo -e "\n  $greenplus #deb-src without space found in sources.list uncommenting and enabling deb-src"
 | |
|       cat /etc/apt/sources.list | sed 's/\#deb-src http\:\/\/http\.kali\.org\/kali kali-rolling main contrib non\-free/\deb-src http\:\/\/http\.kali\.org\/kali kali-rolling main contrib non\-free''/' > /tmp/new-sources.list
 | |
|       cat /tmp/new-sources.list > /etc/apt/sources.list
 | |
|       rm  /tmp/new-sources.list
 | |
|       echo -e "\n  $greenplus new /etc/apt/sources.list written with deb-src enabled"
 | |
|     fi
 | |
| 
 | |
|     # old function - leaving in code for now will remove at a later date - 04.06.2021
 | |
|     # echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" > /etc/apt/sources.list
 | |
|     # echo "deb-src http://http.kali.org/kali kali-rolling main contrib non-free" >>/etc/apt/sources.list
 | |
|     }
 | |
| 
 | |
| 
 | |
| run_update () {
 | |
|     fix_sources
 | |
|     echo -e "\n  $greenplus starting: pimpmyupgrade   \n"
 | |
|     apt_update && apt_update_complete
 | |
|     # eval apt -y update $silent
 | |
|     # COMMENTED OUT DUE TO MSF6 RELEASED && apt -y upgrade $silent
 | |
|     kernel_check=$(ls /lib/modules | sort -n | tail -n 1)
 | |
|     echo -e "\n  $greenplus installing dkms build-essential linux-headers-$kernel_check \n"
 | |
|     eval apt -y install dkms build-essential linux-headers-amd64 $silent
 | |
|     }
 | |
| 
 | |
| make_rootgreatagain () {
 | |
|     echo -e "\n\n KALI-ROOT-LOGIN INSTALLATION: - PAGE 1   "$red"*** READ CAREFULLY! ***"$white" \n"
 | |
|     echo -e "   On Kali 2019.x and prior the default user was root"
 | |
|     echo -e "   On Kali 2020.1 and newer this was changed, the default user was changed to be "
 | |
|     echo -e "   an" $yellow$bold"actual user"$norm$white" on the system and not "$red$bold"root"$norm$white", this user is : kali (by default) "
 | |
|     echo -e "\n   Press Y - If you wish to re-enable the ability to login as root and be root all the time"
 | |
|     echo -e "     If you choose Yes - a second screen will prompt you to copy all of /home/kali to /root"
 | |
|     echo -e "     as there is nothing in the /root directory by default"
 | |
|     echo -e "\n   Press N - The script will skip this section, and not re-enable the login as root function"
 | |
|     echo -e "\n   "$bold$red"If you are confused or dont understand what"$norm$white
 | |
|     echo -e "   "$bold$red"this part of the script is doing, press N"$norm$white
 | |
|     echo -e "\n   Do you want to re-enable the ability to login as root in kali?"
 | |
|     read -n1 -p "   Please type Y or N : " userinput
 | |
|     case $userinput in
 | |
|         y|Y) enable_rootlogin $force;;
 | |
|         n|N) echo -e "\n\n $redexclaim skipping root login setup" ;;
 | |
|         *) echo -e "\n invalid key try again Y or N"; make_rootgreatagain;;
 | |
|     esac
 | |
|     }
 | |
| 
 | |
| enable_rootlogin () {
 | |
|     section="kali-root-login"
 | |
|     check=$(whereis kali-root-login | grep -i -c "kali-root-login: /usr/share/kali-root-login")
 | |
|     fix_section $section $check $force
 | |
|     echo -e "\n\nEnabling Root Login Give root a password"
 | |
|     passwd root
 | |
|     echo -e "\n  $greenplus root login enabled \n"
 | |
|     ask_homekali_to_root
 | |
|     }
 | |
| 
 | |
| # 01.02.2021 - rev 1.1.2 begin - new screens for copying from /home/kali to /root, no detection, all based on used input
 | |
| ask_homekali_to_root () {
 | |
|     echo -e "\n\n KALI-ROOT-LOGIN INSTALLATION: - PAGE 2   "$red"*** READ CAREFULLY! ***"$white" \n"
 | |
|     echo -e "   This section of the script is only executed if Yes was selected at the enable root login prompt\n"
 | |
|     echo -e "   If you are planning on operating your kali install as root instead of the user kali, "
 | |
|     echo -e "   by default there is nothing in /root, This script has the ability to copy everything"
 | |
|     echo -e "   from /home/kali to /root for you. \n"
 | |
|     echo -e "  $red Warning:$white This copy function $red will overwrite $white anything in /root with the entire contents of /home/kali"
 | |
|     echo -e "   The copy statement that is going to be performed if you select Y is:\n "
 | |
|     echo -e "    cp -Rvf /home/kali/* /home/kali/.* /root"
 | |
|     echo -e "\n   Would you like to copy everything from /home/kali to /root ?"
 | |
|     echo -e "     Press Y - to copy everything from /home/kali to /root"
 | |
|     echo -e "     Press N - do not copy anything to /root and skip this function\n"
 | |
|     read -n1 -p "   Please type Y or N : " userinput
 | |
|       case $userinput in
 | |
|         y|Y) ask_are_you_sure;;
 | |
|         n|N) echo -e "\n\n  $redexclaim skipping copy of /home/kali to /root" ;;
 | |
|         *) echo -e "\n\n  $redexclaim Invalid key try again, Y or N keys only $redexclaim"; ask_homekali_to_root;;
 | |
|       esac
 | |
|     }
 | |
| 
 | |
| # 01.03.2021 - rev 1.1.3 begin - added are you sure prompt
 | |
| ask_are_you_sure () {
 | |
|     echo -e "\n\n   Are you sure you want to copy all of /home/kali to /root ?"
 | |
|     read -n1 -p "   Please type Y or N : " userinput
 | |
|       case $userinput in
 | |
|        y|Y) perform_copy_to_root;;
 | |
|        n|N) echo -e "\n\n  $redexclaim skipping copy fo /home/kali to /root - not copying ";;
 | |
|        *) echo -e "\n\n  $redexclaim Invalid key try again, Y or N keys only $redexclaim"; ask_are_you_sure;;
 | |
|      esac
 | |
|     }
 | |
| 
 | |
| # 01.02.2021 - rev 1.1.2 - copy to /root warning screens and function
 | |
| perform_copy_to_root () {
 | |
|     echo -e "\n\n  $greenplus Copying everything from /home/kali to /root... Please wait..."
 | |
|     eval cp -Rvf /home/kali/.* /home/kali/* /root >/dev/null 2>&1
 | |
|     eval chown -R root:root /root
 | |
|     echo -e "\n  $greenplus Everything from /home/kali has been copied to /root"
 | |
|     }
 | |
| 
 | |
| 
 | |
| fix_sead_warning () {
 | |
|     clear
 | |
|  # fugly - really need to clean this up, it works but its just a nightmare to look at
 | |
|  echo -e "
 | |
| 
 | |
|  "$bold$redexclaim$red" WARNING "$redexclaim$bold$red"  PIMPMYKALI IMPACKET REMOVAL FUNCTION  "$redexclaim$bold$red" WARNING "$redexclaim$white$norm"
 | |
| 
 | |
|                  *** READ FULLY BEFORE PRESSING ANY KEY ***
 | |
| 
 | |
|    "$red"DISCLAIMER:"$white" This is a last resort effort to remove impacket from the system
 | |
|    and install a clean working install of impacket-0.9.19 and should be only
 | |
|    used as such. This is for only if you screwed up your impacket as bad as
 | |
|    Bobloblaw (Blob) did!! (thank you blob! you are the wind beneath my impacket
 | |
|    removal scripts!)
 | |
| 
 | |
|    This function of pimpmykali is reserved for the most severe cases of broken
 | |
|    impacket installs, multiple impacket installs, etc, and will attempt to
 | |
|    clean the system of impacket and any related files that may be preventing
 | |
|    a clean and working install of impacket-0.9.19
 | |
| 
 | |
|    It is not possible to forsee every possible scenario but this makes a best
 | |
|    attempt of the most common dirs and files to clean your system to remove
 | |
|    anything impacket related only from the areas listed below.
 | |
| 
 | |
|    This WILL RECURSIVLY DELETE ANY DIR NAMED impacket* from the following:
 | |
|     /opt  /usr/bin  /usr/local/lib  /usr/lib  /home/$finduser/.local/bin
 | |
|     /home/$finduser/.local/lib  /root/.local/lib  /root/.local/bin
 | |
| 
 | |
|    AND ANY related .py and .pyc files from impacket in the following:
 | |
|     /usr/bin  /local/local/bin  /root/.local/bin  /home/$finduser/.local/bin
 | |
| 
 | |
|    After this function completes the following will be run automatically
 | |
|     sudo ./pimpmykali.sh --impacket
 | |
| 
 | |
|    Answering only Y to the following prompt will preform the above actions,
 | |
|    pressing ANY OTHER KEY WILL EXIT
 | |
| 
 | |
|    "
 | |
|     read -n1 -p " Press Y to execute or any other key to exit: " fixsead_userinput
 | |
|     case $fixsead_userinput in
 | |
|         y|Y) fix_sead_run ;;
 | |
|         *) exit ;;
 | |
|     esac
 | |
|     }
 | |
| 
 | |
| fix_sead_run () {
 | |
|     apt_update && apt_update_complete
 | |
|     python-pip-curl
 | |
|     python3_pip
 | |
|     eval pip  uninstall impacket -y $silent
 | |
|     eval pip3 uninstall impacket -y $silent
 | |
|     SEAD=$(find /opt /usr/bin /usr/local/lib /usr/lib /home/$finduser/.local/bin /home/$finduser/.local/lib ~/.local/lib ~/.local/bin -name impacket* 2> /dev/null)
 | |
|     # Last Chance Launch Sequence ** WARNING SCREEN ** and 10 second time out
 | |
|     # may consider removing this.... 2nd warning screen
 | |
|     #    clear
 | |
|     #    echo -e "  If you've made it this far you're having a really bad day with impacket... "
 | |
|     echo -e "  Enjoy the last chance launch sequence!\n"
 | |
|     echo -e "  Preparing to nuke Impacket... \n"
 | |
|     echo -e "  $green[....]$white acquiring targets \n"
 | |
|     echo -e "  $green[$red+$green..$red+$green]$white targets selected\n$SEAD \n"
 | |
|     echo -e "  $green[-$red++$green-]$white targets locked \n"
 | |
|     echo -e "  $green[++++]$white systems ready \n"
 | |
|     echo -e "  $green[<$red@@$green>]$white taking aim \n"
 | |
|     echo -e "  $green[$red####$green]$white requesting NukeImpacket launch codes \n"
 | |
|     echo -e "  $green[$red$launch_codes_alpha-$launch_codes_beta-$launch_codes_charlie$green]$white launch code confirmed"
 | |
|     #    echo -e "  Are you sure you meant to run this script?\n"
 | |
|     #    temp_cnt=${wait_time}
 | |
|     #     while [[ ${temp_cnt} -gt 0 ]];
 | |
|     #       do
 | |
|     #         printf "\r  You have %2d second(s) remaining to hit Ctrl+C to cancel this operation!" ${temp_cnt}
 | |
|     #         sleep 1
 | |
|     #         ((temp_cnt--))
 | |
|     #      done
 | |
|     #    echo -e "\n\n  No user input detected... Executing!!"
 | |
|     echo -e "\n  $fourblinkexclaim *** FIRE!! *** $fourblinkexclaim\n"
 | |
|     echo -e "  $redstar function running removing :\n$SEAD\n"
 | |
|     rm -rf $SEAD
 | |
|     fix_impacket_array
 | |
|     fix_impacket
 | |
|     exit_screen
 | |
|     }
 | |
| 
 | |
| fix_impacket_array () {
 | |
|     arr=('addcomputer.py' 'atexec.py' 'dcomexec.py' 'dpapi.py' 'esentutl.py' 'findDelegation.py' 'GetADUsers.py' 'getArch.py' 'GetNPUsers.py'
 | |
|          'getPac.py' 'getST.py' 'getTGT.py' 'GetUserSPNs.py' 'goldenPac.py' 'karmaSMB.py' 'kintercept.py' 'lookupsid.py' 'mimikatz.py'
 | |
|          'mqtt_check.py' 'mssqlclient.py' 'mssqlinstance.py' 'netview.py' 'nmapAnswerMachine.py' 'ntfs-read.py' 'ntlmrelayx.py' 'ping6.py'
 | |
|          'ping.py' 'psexec.py' 'raiseChild.py' 'rdp_check.py' 'registry-read.py' 'reg.py' 'rpcdump.py' 'rpcmap.py' 'sambaPipe.py' 'samrdump.py'
 | |
|          'secretsdump.py' 'services.py' 'smbclient.py' 'smbexec.py' 'smbrelayx.py' 'smbserver.py' 'sniffer.py' 'sniff.py' 'split.py'
 | |
|          'ticketConverter.py' 'ticketer.py' 'wmiexec.py' 'wmipersist.py' 'wmiquery.py' 'addcomputer.pyc' 'atexec.pyc' 'dcomexec.pyc' 'dpapi.pyc'
 | |
|          'esentutl.pyc' 'findDelegation.pyc' 'GetADUsers.pyc' 'getArch.pyc' 'GetNPUsers.pyc' 'getPac.pyc' 'getST.pyc' 'getTGT.pyc'
 | |
|          'GetUserSPNs.pyc' 'goldenPac.pyc' 'karmaSMB.pyc' 'kintercept.pyc' 'lookupsid.pyc' 'mimikatz.pyc' 'mqtt_check.pyc' 'mssqlclient.pyc'
 | |
|          'mssqlinstance.pyc' 'netview.pyc' 'nmapAnswerMachine.pyc' 'ntfs-read.pyc' 'ntlmrelayx.pyc' 'ping6.pyc' 'ping.pyc' 'psexec.pyc'
 | |
|          'raiseChild.pyc' 'rdp_check.pyc' 'registry-read.pyc' 'reg.pyc' 'rpcdump.pyc' 'rpcmap.pyc' 'sambaPipe.pyc' 'samrdump.pyc'
 | |
|          'secretsdump.pyc' 'services.pyc' 'smbclient.pyc' 'smbexec.pyc' 'smbrelayx.pyc' 'smbserver.pyc' 'sniffer.pyc' 'sniff.pyc' 'split.pyc'
 | |
|          'ticketConverter.pyc' 'ticketer.pyc' 'wmiexec.pyc' 'wmipersist.pyc' 'wmiquery.pyc' )
 | |
| 
 | |
|      for impacket_file in ${arr[@]}; do
 | |
|        rm -f /usr/bin/$impacket_file /usr/local/bin/$impacket_file ~/.local/bin/$impacket_file /home/$finduser/.local/bin/$impacket_file
 | |
|        # echo -e "\n $greenplus $impacket_file removed"
 | |
|      done
 | |
|     }
 | |
| 
 | |
| fix_impacket () {
 | |
|     eval apt -y remove impacket $silent    ## do not remove : python3-impacket impacket-scripts
 | |
|     python-pip-curl
 | |
|     python3_pip
 | |
|     eval pip uninstall impacket -y $silent
 | |
|     eval pip3 uninstall impacket -y $silent
 | |
|     fix_impacket_array
 | |
|     eval wget https://github.com/SecureAuthCorp/impacket/releases/download/impacket_0_9_19/impacket-0.9.19.tar.gz -O /tmp/impacket-0.9.19.tar.gz $silent
 | |
|     eval tar xfz /tmp/impacket-0.9.19.tar.gz -C /opt $silent
 | |
|     cd /opt
 | |
|     chown -R root:root impacket-0.9.19
 | |
|     chmod -R 755 impacket-0.9.19
 | |
|     cd /opt/impacket-0.9.19
 | |
|     eval pip3 install lsassy $silent
 | |
|     eval pip install flask $silent
 | |
|     eval pip install pyasn1 $silent
 | |
|     eval pip install pycryptodomex $silent
 | |
|     eval pip install pyOpenSSL $silent
 | |
|     eval pip install ldap3 $silent
 | |
|     eval pip install ldapdomaindump $silent
 | |
|     eval pip install wheel $silent
 | |
|     eval pip install .  $silent
 | |
|     rm -f /tmp/impacket-0.9.19.tar.gz
 | |
|     eval apt -y reinstall python3-impacket impacket-scripts $silent
 | |
|     echo -e "\n  $greenplus installed: impacket-0.9.19 python-pip wheel impacket flask pyasn1"
 | |
|     echo -e "\n  $greenplus installed: lsassy pycryptodomes pyOpenSSL ldap3 ldapdomaindump"
 | |
|     echo -e "\n  $greenplus installed: python3-pip python3-impacket impacket-scripts"
 | |
|     }
 | |
| 
 | |
| fix_broken_xfce() {
 | |
|     echo -e "\n  $greenplus Applying broken XFCE Fix  \n "
 | |
|     eval apt -y reinstall xfce4-settings
 | |
|     echo -e "\n  $greenplus Broken XFCE Fix applied: xfce4-settings reinstalled  \n"
 | |
|     fix_xfcepower
 | |
|     }
 | |
| 
 | |
| only_upgrade () {
 | |
|     fix_sources
 | |
|     echo -e "\n  $greenplus starting pimpmyupgrade   \n"
 | |
|     # echo -e "\n  $greenplus holding back package: metasploit-framework"
 | |
|     # eval apt-mark hold metasploit-framework
 | |
|     apt_update && apt_update_complete && apt_upgrade && apt_upgrade_complete
 | |
|     # eval apt -y update && apt -y upgrade
 | |
|     kernel_check=$(ls /lib/modules | sort -n | tail -n 1)
 | |
|     echo -e "\n  $greenplus installing dkms build-essential linux-headers-$kernel_check \n"
 | |
|     eval apt -y install dkms build-essential linux-headers-amd64 $silent
 | |
|     virt_what   # Alek fix - 04.10.2021 Function moved
 | |
|     check_vm
 | |
|     # echo -e "\n  $greenplus releasing hold on package: metasploit-framework"
 | |
|     # eval apt-mark unhold metasploit-framework
 | |
|     # add fix for broken filemanager / terminal icon
 | |
|     }
 | |
| 
 | |
| fix_upgrade () {
 | |
|     fix_sources
 | |
|     run_update
 | |
|     virt_what   # 04.10.2021 Function moved to be after run_update
 | |
|     check_vm
 | |
|     }
 | |
| 
 | |
| bpt () {
 | |
|     rm -rf /opt/the-essentials
 | |
|     git clone https://github.com/blindpentester/the-essentials /opt/the-essentials
 | |
|     cd /opt/the-essentials
 | |
|     sh -c '/opt/the-essentials/the_essentials.sh --skip'
 | |
|     exit_screen
 | |
|     }
 | |
| 
 | |
| #downgrade_msf () {
 | |
| #    eval apt -y remove metasploit-framework
 | |
| #    wget https://archive.kali.org/kali/pool/main/m/metasploit-framework/metasploit-framework_5.0.101-0kali1%2Bb1_amd64.deb -O /tmp/metasploit-framework_5.deb
 | |
| #    eval dpkg -i /tmp/metasploit-framework_5.deb
 | |
| #    eval gem cleanup reline
 | |
| #    eval msfdb init
 | |
| #    rm -f /tmp/metasploit-framework_5.deb
 | |
| #    apt-mark hold metasploit-framework
 | |
| #    echo -e "\n  $greenplus metasploit downgraded \n"
 | |
| #    echo -e "\n  $greenplus hold placed on metasploit-framework \n"
 | |
| #    }
 | |
| 
 | |
| virt_what() {
 | |
|     # Upgraded virt-what function - 04.07.2021 rev 1.2.2
 | |
|     # detection of /usr/sbin/virt-what
 | |
|     [ -f "/usr/sbin/virt-what" ] && virtwhat=1 ||  virtwhat=0
 | |
| 
 | |
|     if [ $virtwhat = 1 ]
 | |
|      then
 | |
|        echo -e "\n  $greenminus virt-what already installed - skipping \n"
 | |
|      else
 | |
|        echo -e "\n  $greenplus installing virt-what \n"
 | |
|        eval apt -y install virt-what $silent
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| vbox_fix_shared_folder_permission_denied () {
 | |
|     if [ $findgroup = 1 ]
 | |
|       then
 | |
|         echo -e "\n  $greenminus : user is already a member of vboxsf group\n"
 | |
|     else
 | |
|         eval adduser $finduser vboxsf
 | |
|         echo -e "\n  $greenplus fix applied : virtualbox permission denied on shared folder"
 | |
|         echo -e "       user added to vboxsf group "
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| fix_virtualbox() {
 | |
|     ## added for revision 0.5i ##
 | |
|     eval apt -y reinstall virtualbox-dkms virtualbox-guest-additions-iso virtualbox-guest-x11 $silent
 | |
|     eval mkdir /tmp/vboxtmp
 | |
|     eval mount /usr/share/virtualbox/VBoxGuestAdditions.iso /tmp/vboxtmp
 | |
|     eval cp -f /tmp/vboxtmp/VBoxLinuxAdditions.run /tmp/VBoxLinuxAdditions.run
 | |
|     eval umount /tmp/vboxtmp
 | |
|     eval rmdir /tmp/vboxtmp
 | |
|     eval chmod +x /tmp/VBoxLinuxAdditions.run
 | |
|     eval /tmp/VBoxLinuxAdditions.run install --force
 | |
|     eval rm -f /tmp/VBoxLinuxAdditions.run
 | |
|     eval /sbin/rcvboxadd quicksetup all
 | |
|     echo -e "\n  $redstar A reboot of your system is required"
 | |
|     }
 | |
| 
 | |
| check_vm() {
 | |
|     echo -e "\n  $greenplus detecting hypervisor type \n"
 | |
|     vbox_check=$(virt-what | grep -i -c "virtualbox")    # virtualbox check
 | |
|     vmware_check=$(virt-what | grep -i -c "vmware")      # vmware check - vmware check works on Mac VMWare Fusion
 | |
|     qemu_check=$(virt-what | grep -i -c "kvm")           # m4ul3r Qemu/libvirt check
 | |
|     if [ $vbox_check = 1 ]
 | |
|       then
 | |
|         echo -e "\n  $greenplus *** VIRTUALBOX DETECTED *** \n"
 | |
|         echo -e "\n  $greenplus installing virtualbox-dkms virtualbox-guest-additions-iso virtualbox-guest-x11"
 | |
|            # call fix_virtualbox function
 | |
|            # Additional Fixes for virtualbox
 | |
|            #----------------------- additional virtualbox fixes
 | |
|              fix_virtualbox
 | |
|              vbox_fix_shared_folder_permission_denied
 | |
|            #----------------------- end of virtualbox additional fixes
 | |
|            # exit_screen
 | |
|       elif  [ $vmware_check = 1 ]
 | |
|         then
 | |
|           echo -e "\n  $greenplus *** VMWARE DETECTED *** \n"
 | |
|           echo -e "\n  $greenplus installing open-vm-tools-desktop fuse"
 | |
|           eval apt -y reinstall open-vm-tools-desktop fuse $silent
 | |
|           echo -e "\n  $greenplus restarting vmware tools"
 | |
|           eval restart-vm-tools
 | |
|           # Additional Fixes for Vmware
 | |
|           #----------------------- additional vmware fixes
 | |
|           #
 | |
|           #----------------------- end of vmware additional fixes
 | |
|           # exit_screen
 | |
|        elif  [ $qemu_check = 1 ]
 | |
|          then
 | |
|           echo -e "\n  $greenplus *** QEMU/LIBVIRT DETECTED *** \n"
 | |
|           eval apt -y reinstall xserver-xorg-video-qxl spice-vdagent
 | |
|           echo -e "\n  $greenplus installing xserver-xorg-video-qxl spice-vdagent"
 | |
|       else
 | |
|         echo -e "\n $redstar Hypervisor not detected, Possible bare-metal installation not updating"
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| # ascii art - DONT move
 | |
| asciiart=$(base64 -d <<< "H4sIAAAAAAAAA31QQQrCQAy89xVz9NR8QHoQH+BVCATBvQmC
 | |
| CEXI480kXdteTJfdzGQy2S3wi9EM/2MnSDm3oUoMuJlX3hmsMMSjA4uAtUTsSQ9NUkkKVgKKBX
 | |
| p1lEC0auURW3owsQlTZtf4QtGZgjXYKT4inPtI23oEK7wXlyPnd8arKdKE0EPdUnhIf0v+iE2o
 | |
| 7BgVFVyec3u1OxFw+uRxbvPt8R6+MOpGq5cBAAA="  | gunzip )
 | |
| 
 | |
| pimpmykali_menu () {
 | |
|     # DATE=$(date +%x); TIME=$(date +%X)
 | |
|     clear
 | |
|     echo -e "$asciiart"
 | |
|     echo -e "\n     Select a option from menu:                           Rev:$revision"
 | |
|     #echo -e "\n     $DATE $TIME                               Rev:$revision"
 | |
|     echo -e "\n     *** APT UPGRADE WILL ONLY BE CALLED FROM MENU OPTION 9 ***"
 | |
|     echo -e "\n  Menu Options:"                                                                   # function call list
 | |
|     echo -e "\n  1 - Fix Missing             (pip pip3 golang gedit nmapfix build-essential)"     # fix_missing
 | |
|     echo -e "  2 - Fix /etc/samba/smb.conf (adds the 2 missing lines)"                            # fix_smbconf
 | |
|     echo -e "  3 - Fix Golang              (installs golang, adds GOPATH= to .zshrc and .bashrc)" # fix_golang
 | |
|     echo -e "  4 - Fix Grub                (adds mitigations=off)"                                # fix_grub
 | |
|     echo -e "  5 - Fix Impacket            (installs impacket)"                                   # fix_impacket
 | |
|     echo -e "  6 - Enable Root Login       (installs kali-root-login)"                            # make_rootgreatagain
 | |
|     echo -e "  7 - Install Atom            (installs atom)"                                       # install_atom
 | |
|     echo -e "  8 - Fix nmap scripts        (clamav-exec.nse and http-shellshock.nse)"             # fix_nmap
 | |
|     echo -e "  9 - Pimpmyupgrade           (apt upgrade with vbox/vmware detection)"              # only_upgrade
 | |
|     echo -e "                              (sources.list, linux-headers, vm-video )"              # -
 | |
|     echo -e "                              (will not upgrade: metasploit-framework)"              # -
 | |
|     echo -e "  0 - Fix ALL                 (runs only 1 thru 8) \n"                               # fix_all
 | |
|     echo -e "  N - NEW VM SETUP - Run this option if this is the first time running pimpmykali"   # menu item only no function
 | |
|     echo -e "                     This will run Fix All (0) and Pimpmyupgrade (9)\n"              #
 | |
|     echo -e "  Stand alone functions (only apply the single selection)"                           # optional line
 | |
|     echo -e "  F - Broken XFCE Icons fix   (stand-alone function: only applies broken xfce fix)" # fix_broken_xfce
 | |
|     echo -e "  G - Fix Gedit Conn Refused  (fixes gedit as root connection refused)"              # fix_root_connectionrefused
 | |
|     echo -e "  C - Missing Google-Chrome   (install google-chrome only)"                          # check_chrome / fix_chrome
 | |
|     echo -e "  V - Install MS-Vscode       (install microsoft vscode only)"                       # install_vscode
 | |
|     echo -e "  S - Fix Spike               (remove spike and install spike v2.9)"                 # fix_spike
 | |
|     echo -e "  ! - Nuke Impacket           (Type the ! character for this menu item)"             # fix_sead_warning
 | |
|     # echo -e "  D - Downgrade Metasploit    (Downgrade from MSF6 to MSF5)"                         # downgrade_msf  # - commented out 04.06.2021
 | |
|     echo -e "  B - BlindPentesters         'The Essentials' tools & utilies collection\n"         # bpt
 | |
|     read -n1 -p "  Enter 0 thru 9, N, B, F, G, C, V, S or ! press X to exit: " menuinput
 | |
| 
 | |
|     case $menuinput in
 | |
|         1) fix_missing ;;
 | |
|         2) fix_smbconf ;;
 | |
|         3) fix_golang ;;
 | |
|         4) fix_grub ;;
 | |
|         5) fix_impacket ;;
 | |
|         6) make_rootgreatagain ;;
 | |
|         7) install_atom ;;
 | |
|         8) fix_nmap ;;
 | |
|         9) only_upgrade ;;
 | |
|         0) fix_all ;;
 | |
|         !) forced=1; fix_sead_warning;;
 | |
|       f|F) fix_broken_xfce ;;
 | |
|       s|S) fix_spike ;;
 | |
|       g|G) fix_root_connectionrefused ;;
 | |
|       c|C) check_chrome;;
 | |
|       v|V) install_vscode;;
 | |
|       # g|g) fix_gowitness ;;
 | |
|       n|N) fix_all; only_upgrade;;
 | |
|       # d|D) downgrade_msf ;; # commented out 04.06.2021
 | |
|       b|B) bpt ;;
 | |
|       # h|H) fix_theharvester ;;
 | |
|       x|X) echo -e "\n\n Exiting pimpmykali.sh - Happy Hacking! \n" ;;
 | |
|       *) pimpmykali_menu ;;
 | |
|     esac
 | |
|     }
 | |
| 
 | |
| pimpmykali_help () {
 | |
|     # do not edit this echo statement, spacing has been fixed and is correct for display in the terminal
 | |
|     echo -e "\n valid command line arguements are : \n \n --all        run all operations \n"\
 | |
|             "--smb        only run smb.conf fix \n --go         only fix/install golang"\
 | |
|             "\n --impacket   only fix/install impacket \n --grub       only add mitigations=off"\
 | |
|             "\n --root       only enable root login \n --missing    install all common missing packages" \
 | |
|             "\n --menu       its the menu \n --atom       only install atom\n --flameshot  only fix/install flameshot" \
 | |
|             "\n --borked     only to be used as last resort to remove-reinstall impacket" \
 | |
|             "\n --upgrade    fix apt upgrade with detection for virtualbox or vmware\n --help       your looking at it"
 | |
|     exit
 | |
|     }
 | |
| 
 | |
| check_arg () {
 | |
|     if [ "$1" == "" ]
 | |
|       then pimpmykali_menu
 | |
|      else
 | |
|       case $1 in
 | |
|       --menu) pimpmykali_menu                  ;;
 | |
|        --all) fix_all                          ;;
 | |
|        --smb) fix_smbconf                      ;;
 | |
|         --go) fix_golang                       ;;
 | |
|   --impacket) fix_impacket                     ;;
 | |
|       --grub) fix_grub                         ;;
 | |
|       --root) make_rootgreatagain              ;;
 | |
|    --missing) fix_missing                      ;;
 | |
|       --help) pimpmykali_help                  ;;
 | |
|  --flameshot) fix_flameshot                    ;;
 | |
|      --force) force=1; fix_all $force          ;;
 | |
|     --borked) force=1; fix_sead_warning $force ;;
 | |
|       --nmap) fix_nmap                         ;;
 | |
|        --bpt) bpt                              ;;
 | |
|     --vscode) install_vscode                   ;;
 | |
|       --subl) install_sublime                  ;; # hidden switch
 | |
|       --atom) install_atom                     ;;
 | |
|    --upgrade) only_upgrade                     ;;
 | |
| # --harvester) fix_theharvester                ;;
 | |
|       *) pimpmykali_help ; exit 0              ;;
 | |
|     esac
 | |
|     fi
 | |
|     }
 | |
| 
 | |
| exit_screen () {
 | |
|     eval apt -y --fix-broken install >/dev/null 2>&1
 | |
|     echo -e "$asciiart"
 | |
|     echo -e "\n\n    All Done! Happy Hacking! \n"
 | |
| 
 | |
|     exit
 | |
|     }
 | |
| 
 | |
| check_for_root
 | |
| check_distro
 | |
| check_arg "$1"
 | |
| exit_screen
 |