Kali Rolling ISO of DOOM, выпуск второй

Некоторое время назад мы представили идею кастомизации Kali Linux, продемонстрировав Kali Linux ISO of Doom. Наш сценарий включал установку пользовательской конфигурации Kali, включающей избранные инструменты для удалённой оценки уязвимостей. Пользовательский Kali ISO самостоятельно устанавливался на удалённого клиента и автоматически подключался к нашему серверу OpenVPN через TCP порт 443. Затем подключение OpenVPN создавало мост между удалённой и локальной сетями, обеспечивая нас полным доступом к внутренней сети с нашей удалённой машины. Потом получившийся пользовательский ISO образ можно было бы отправить клиенту, который просто подключил бы его к шаблону виртуальной машины, и установка прошла бы автоматически, без необходимости постороннего вмешательства, как показано на изображении ниже.

Идея кастомизации Kali Linux
Идея кастомизации Kali Linux

Вернувшись к этим инструкциями, мы заметили, что для работы с Kali Rolling в них необходимо внести некоторые правки, по причине изменений в версиях live-сборок и файлах предварительной конфигурации. Итак, представляем вам обновлённый рецепт создания Kali Rolling ISO of doom.

Подготовка сервера OpenVPN

Прежде чем мы начнём, нужно настроить сервер OpenVPN, который имеет публичный IP-адрес (a.b.c.d). Именно на этом сервере мы будем собирать и генерировать пользовательский ISO файл. На удалённом сервере Kali создайте и настройте OpenVPN следующим образом:

apt-get install openvpn
cd /root/
cp -rf /usr/share/easy-rsa/ test
cd test
cp keys/{server.crt,server.key,dh2048.pem,ca.crt} /etc/openvpn/
cd /etc/openvpn

cat << EOF > server.conf
tls-server
port 443
proto tcp
dev tap
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
client-config-dir static
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
EOF

mkdir -p static

cat << EOF > static/client
ifconfig-push 10.8.0.200 255.255.255.0
EOF

Далее, мы создадим SSH ключи, включим IP-маршрутизацию на VPN сервере и настроим iptables. После завершения всего этого, мы запустим сервер OpenVPN.

ssh-keygen
openvpn --cd /etc/openvpn --config /etc/openvpn/server.conf
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Сборка пользовательского ISO образа Kali Rolling

Теперь мы создадим пользовательский ISO образ, который будет автоматически устанавливать себя и подключаться к нашей конфигурации OpenVPN. Кроме начала установки с помощью ISO образа, этому агенту больше ничего не нужно, чтобы подключиться к нам. Мы начнём с установки требуемых для live-сборки пакетов и модификации стандартной конфигурации, чтобы включить только нужные нам инструменты и файлы настроек.

apt-get install git live-build cdebootstrap
git clone git://git.kali.org/live-build-config.git build
cd build

Затем мы определяем пакеты, которые хотим установить в агентский ISO образ. В данном случае, это минимальный набор инструментов, а так же необходимые демоны SSH и OpenVPN:

echo nmap > kali-config/variant-default/package-lists/kali.list.chroot
echo openssh-server >> kali-config/variant-default/package-lists/kali.list.chroot
echo openvpn >> kali-config/variant-default/package-lists/kali.list.chroot
echo metasploit-framework >> kali-config/variant-default/package-lists/kali.list.chroot

После завершения операции, мы копируем ключи и конфигурационные файлы в chroot-окружение через OpenSSH и OpenVPN:

mkdir -p kali-config/common/includes.chroot/etc/openvpn
cp /root/test/keys/{ca.crt,client.crt,client.key} kali-config/common/includes.chroot/etc/openvpn/

mkdir -p kali-config/common/includes.chroot/root/.ssh/
cp /root/.ssh/id_rsa.pub kali-config/common/includes.chroot/root/.ssh/authorized_keys

# Create the OpenVPN client configuration file
cat << EOF > kali-config/common/includes.chroot/etc/openvpn/client.conf
client
dev tap
proto tcp
remote a.b.c.d 443 # remote server IP
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
EOF

Мы представляем новую опцию загрузки, которая обработает файл предварительных настроек и сделает все, что нам нужно без взаимодействия с пользователем:

cat << EOF > kali-config/common/includes.binary/isolinux/install.cfg
label install
menu label ^Install
linux /install/vmlinuz
initrd /install/initrd.gz
append vga=788 -- quiet file=/cdrom/install/preseed.cfg locale=en_US keymap=us hostname=kali domain=local.lan
EOF

cat << EOF > kali-config/common/includes.binary/isolinux/isolinux.cfg
include menu.cfg
ui vesamenu.c32
default install
prompt 0
timeout 5
EOF

И создаём несколько хуков, чтобы сервисы SSH и OpenVPN запускались во время загрузки:

echo 'update-rc.d -f ssh enable' > kali-config/common/hooks/01-start-ssh.chroot
echo 'update-rc.d -f openvpn enable' > kali-config/common/hooks/01-start-openvpn.chroot
chmod +x kali-config/common/hooks/*.chroot

Ну и наконец, мы включает файл предварительных настроек, чтобы пропустить обычные запросы, выдаваемые в процессе установки.

mkdir -p kali-config/common/includes.installer
wget https://www.kali.org/dojo/preseed.cfg -O ./kali-config/common/includes.installer/preseed.cfg

Теперь остаётся только сгенерировать агентский ISO файл. Как только файл будет готов, мы отправим его на установку в локальную сеть, к которой хотим проложить мост.

./build.sh --distribution kali-rolling --verbose

Организация моста между сетями

После того, как соединение с клиентом через VPN будет установлено, мы можем выполнить последнее требование с помощью SSH: связать удалённую и локальную сеть мостом.

На сервере

Мы включаем маршрутизацию к удалённой сети на сервере OpenVPN:

root@kali:~# route add -net 192.168.101.0/24 gw 10.8.0.200

На агентской Kali

Мы активируем IP маршрутизацию, а так же «маскарад» сетевых адресов на удалённом агенте Kali:

root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@kali:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Теперь у нас есть полный доступ к удалённой сети через 3 слой, и мы можем использоваться любые инструменты для взаимодействия с ней.

Источник www.offensive-security.com

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *