#!/bin/bash # Color definitions RED="\033[31m" GREEN="\033[32m" YELLOW="\033[33m" BLUE="\033[34m" MAGENTA="\033[35m" CYAN="\033[36m" RESET="\033[0m" # Function to display ZANSIN in large font print_zansin() { local color=$1 echo -e "${color}" echo "███████╗ █████╗ ███╗ ██╗███████╗██╗ ███╗ ██╗██╗" echo "╚══███╔╝██╔══██╗████╗ ██║██╔════╝██║ ████╗ ██║██║" echo " ███╔╝ ███████║██╔██╗ ██║███████╗██║ ██╔██╗ ██║██║" echo " ███╔╝ ██╔══██║██║╚██╗██║╚════██║██║ ██║╚██╗██║╚═╝" echo "███████╗██║ ██║██║ ╚████║███████║██║ ██║ ╚████║██╗" echo "╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═══╝╚═╝" echo -e "${RESET}" } # Progress display function deploy_status() { local message=$1 local color=$2 echo -e "${color}${message}${RESET}" } # Main processing clear print_zansin $CYAN # Install packages and clone repository deploy_status "Installing required packages..." $YELLOW sudo apt update &>/dev/null && sudo apt install -y ansible sshpass git &>/dev/null git clone https://github.com/zansin-sec/zansin.git &>/dev/null cd zansin/playbook &>/dev/null # Enter IP addresses deploy_status "Enter new IP addresses..." $CYAN echo "Please enter a new IP address for the training server:" read training_ip echo "Please enter a new IP address for the control server:" read control_ip # Validate and replace IP addresses if [[ $training_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] && [[ $control_ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then deploy_status "Updating inventory file with new IP addresses..." $GREEN sed -i "2s/.*/$training_ip/" inventory.ini &>/dev/null sed -i "4s/.*/$control_ip/" inventory.ini &>/dev/null else deploy_status "Invalid IP address. Please try again." $RED exit 1 fi # Enter and set password deploy_status "Enter current password for zansin user..." $CYAN sudo echo "Please enter zansin user's current password:" read -s current_password sudo sed -i "s/ansible_ssh_pass:.*/ansible_ssh_pass: $current_password/" game-servers.yml &>/dev/null sudo sed -i "s/ansible_become_password:.*/ansible_become_password: $current_password/" game-servers.yml &>/dev/null # Run Ansible playbook deploy_status "Running Ansible playbook to set up servers..." $GREEN ansible-playbook -i inventory.ini game-servers.yml deploy_status "ZANSIN environment setup complete!" $GREEN sshpass -p "Passw0rd!23" ssh -o StrictHostKeyChecking=no "vendor@$training_ip" << EOF cd /home/vendor/game-api docker-compose up -d EOF # Set up Red Controller RED_CONTROLLER_LOCAL_PATH="./roles/zansin-control-server/files/" RED_CONTROLLER_REMOTE_PATH="/home/zansin/red-controller" RED_CONTROLLER_VENV_PATH="red_controller_venv" RED_CONTROLLER_VENV_PATH_REQUIREMENTS_PATH="$RED_CONTROLLER_REMOTE_PATH/requirements.txt" RED_CONTROLLER_ATTACK_CPANFILE_PATH="$RED_CONTROLLER_REMOTE_PATH/attack/cpanfile" RED_CONTROLLER_ATTACK_C2S_PATH="$RED_CONTROLLER_REMOTE_PATH/attack/tools/c2s/start_c2s.sh" # Ensure the remote directory exists sshpass -p "$current_password" ssh -o StrictHostKeyChecking=no "zansin@${control_ip}" "mkdir -p $RED_CONTROLLER_REMOTE_PATH" # Rsync to transfer files sshpass -p "$current_password" rsync -avz -e "ssh -o StrictHostKeyChecking=no" $RED_CONTROLLER_LOCAL_PATH "zansin@${control_ip}:$RED_CONTROLLER_REMOTE_PATH" # Execute commands on the remote server sshpass -p "$current_password" ssh -t "zansin@${control_ip}" << EOF while sudo fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do echo "Waiting for other software managers to finish..." sleep 10 done echo "$current_password" | sudo -S apt-get update echo "$current_password" | sudo -S apt-get install -y python3.10 python3.10-venv python3.10-dev python3-pip echo "$current_password" | sudo -S apt install -y carton nmap nikto echo "$current_password" | sudo -S apt install make build-essential echo "$current_password" | sudo -S carton install --cpanfile $RED_CONTROLLER_ATTACK_CPANFILE_PATH chmod +x $RED_CONTROLLER_ATTACK_C2S_PATH cd $RED_CONTROLLER_REMOTE_PATH python3.10 -m venv $RED_CONTROLLER_VENV_PATH source $RED_CONTROLLER_VENV_PATH/bin/activate pip3 install -r $RED_CONTROLLER_VENV_PATH_REQUIREMENTS_PATH deactivate EOF deploy_status "ZANSIN services setup complete!" $GREEN # Stop displaying ZANSIN kill $ZANSIN_PID