Специально для forum.LIMB.cc
Автор: threat
Задача: установить qemu со всеми зависимостями, импотрнуть готовый образ kali, установить гостевые дополнения, настроить расширение экрана в гостевой машине, создать killswitch чтобы не светануть свой айпишник в гостевой тачке, если на хосте отвалиться впн.
Для начала объясню почему мы используем для этих целей не virtualbox или же vmware, Ответ прост у виртуалбокса закрыты дополнения, дрова закрыты мы не знаем что там происходит. Vmware это коммерческое решение тоже закрытое, на которое нацелены APT, есть риск что если вы кому-то нужны вам взломают. Зачем использовать то на что нацелены хакеры... Они явно не нацелены на qemu/kvm)))
kvm в встроен в ядро линукса. QEMU+kvm - это бесплатно, код открыт,
Заходим сюда: https://www.kali.org/get-kali/#kali-virtual-machines
качаем образ кали он будет с расширением .qcow2
Устанавливаем qemu/kvm
Если у вас хост не федора, то вот какие пакеты содержатся в @virtualization
Поделюсь настройками
На кали (гость) ставим spice (это как дополнения в виртуалбоксе чтобы буфер двунаправленный был)
Если вы столкнулись с тем, что у вас появились черные полосы, расширение экрана не подошло, то фиксим костылем. Я не люблю на такие вещи время тратить.
У вас могут быть две проблемы:
1. Часть обоев становится черная
2. Неподходящее расширение экрана
Правой кнопкой мыши в гуишке и заходим в Desktop выставляем настройки как у меня. При загрузки системы будет меняться обложка случайно (это костыль для исправления обоев с черной хренью)
Далее нам нужно чтобы при загрузке необходимое разрешение экрана подбиралось.
На хосте выполняем команду, чтобы узнать какое у нас разрешение экрана
На госте сделаем такое же, но скриптом чтобы автоматически при загрузки подгружалось. Иначе не будет работать из-за агента spicy, который кривой, возможно это только у меня так, проблема с дровами, но если у вас вдруг также. То делаем следующее:
Virtual-1 у вас или другое название можно проверить с помощью команды:
Я не буду заострять внимание на настройке кали и импорте готового образ qemu/kvm.
/var/lib/libvirt/images/ образ лучше перенесите сначала сюда, а потом через гуишку virt-manager импортните образ, это изи делается, вручную напишите что это debian, а то он не определит сам. И настройки выставите как я показал выше.
Если у вас какие-то проблемы то проверьте поддерживает ли ваш проц виртуализацию и не отключена ли в биосе
Проверьте что kvm модули подгрузились
Если вдруг какие-то проблемы, то введите просто эту команду и вывод закиньте в нейронку поможет очень быстро, не парьтесь
Isolated network мы можем создавать через гуишку. Жмем Edit --> Connection Details
Выбираем изолированную сеть (isolated network)
VM ↔ Хост
VM → Internet/LAN
Простыми словами мы сделали так чтобы наша виртуальная машина не видела LAN/WLAN сеть. То есть у гостя теперь нет доступа к внешней среде, не может наша кали подключаться к сайтам или сканить локальную сеть хоста (обнаруживать принтеры и т.д). Это хорошо, если вдруг наша кали будет скомпрометирована, то есть говно какое нибудь туда закачаем, то злоумышленник не сможет хуевертить на нашем хосте ничего, если только не найдет уязвимость в гипервизоре и не проапается к нашему хосту.
Заходи в гостя
если пакеты не доходят, сети нет, то все збс. Можем продолжать делать киллсвитч.
Суть в чем должна быть что у нас есть gateway на хосте который выступает в роли виртуального роутера (у него есть свой статический адрес) гость должен с ним общаться и в данном случае наш гость должен выходить в интернет только через интерфейс впна, у него не должно быть других путей. Если вдруг впн падает/отключается, то интернета нет = vpn leak.
Ребят, болтать можно долго, я пытаюсь как-то объяснить доступным языком поскольку сети никто из вас не знает. В том числе я. То что я сделал это школьная подделка которая просто работает и все.
iptables уже во многих дистрибутивах не используется, да даже libvirt использует nft. Но есть большой минус, если вы ребутните тачку libvirt перезапустит ваши правила. Поэтому мы поступим иначе.
Повторяем за мной на своем хосте
Вместо tun0 - у вас может быть другое название интерфейса впн, проверьте через ifconfig. Также проверьте CIDR 192.168.100.0/24 и 192.168.122.0/24. Вам в любом случае сильно париться не надо я вам даю готовое решение, выставляйте настройки как у меня - если что-то будет не совпадать скормите в гпт, исправит. Основные ошибки я уже учел.
Обратите внимание мы все сделали грамотно. Наш сервис будет запускать только после того как стартанет libvirtd, то суть в том что после ребута запустится libvirtd демон, перезапишет правила nft (сотрет наши), а мы сервисом restore-killswitch.service восстановим их.
Все збс, на этом этапе мы завершили настройку хоста, qemu/kvm, настроили изолированную сеть. Остается самое простое это выдать сетевые правила кали.
Настраиваем guest kali
nmcli connection show
Все должно работать. Теперь попробуйте отключить впн, сеть должна пропасть. Пакеты не должны доходить. Ребутните хост, проверьте будет ли продолжать работать киллсвитч. Если все ок, то отлично...
Автор: threat
Задача: установить qemu со всеми зависимостями, импотрнуть готовый образ kali, установить гостевые дополнения, настроить расширение экрана в гостевой машине, создать killswitch чтобы не светануть свой айпишник в гостевой тачке, если на хосте отвалиться впн.
Для начала объясню почему мы используем для этих целей не virtualbox или же vmware, Ответ прост у виртуалбокса закрыты дополнения, дрова закрыты мы не знаем что там происходит. Vmware это коммерческое решение тоже закрытое, на которое нацелены APT, есть риск что если вы кому-то нужны вам взломают. Зачем использовать то на что нацелены хакеры... Они явно не нацелены на qemu/kvm)))
kvm в встроен в ядро линукса. QEMU+kvm - это бесплатно, код открыт,
Заходим сюда: https://www.kali.org/get-kali/#kali-virtual-machines
Не удалось прогрузить медиа
качаем образ кали он будет с расширением .qcow2
Устанавливаем qemu/kvm
sudo dnf install @virtualizationsudo systemctl enable --now libvirtdsudo usermod -aG libvirt $USERsudo usermod -aG kvm $USERvirt-host-validatesudo systemctl status libvirtd#Перелогинься чтобы группы применились или ребутнисьvirt-managerЕсли у вас хост не федора, то вот какие пакеты содержатся в @virtualization
Code:
Repositories loaded.
Id : virtualization
Name : Virtualization
Description : These packages provide a graphical virtualization environment.
Installed : no
Order :
Langonly :
Uservisible : no
Repositories : fedora, updates
Mandatory packages : virt-install
Default packages : libvirt-daemon-config-network
: libvirt-daemon-kvm
: qemu-kvm
: virt-manager
: virt-viewer
Optional packages : guestfs-tools
: python3-libguestfs
: virt-top
Поделюсь настройками
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
На кали (гость) ставим spice (это как дополнения в виртуалбоксе чтобы буфер двунаправленный был)
Code:
sudo apt update
apt install spice-vdagent
sudo systemctl enable --now spice-vdagentd
sudo systemctl status spice-vdagentd
Если вы столкнулись с тем, что у вас появились черные полосы, расширение экрана не подошло, то фиксим костылем. Я не люблю на такие вещи время тратить.
У вас могут быть две проблемы:
1. Часть обоев становится черная
2. Неподходящее расширение экрана
Правой кнопкой мыши в гуишке и заходим в Desktop выставляем настройки как у меня. При загрузки системы будет меняться обложка случайно (это костыль для исправления обоев с черной хренью)
Не удалось прогрузить медиа
Далее нам нужно чтобы при загрузке необходимое разрешение экрана подбиралось.
На хосте выполняем команду, чтобы узнать какое у нас разрешение экрана
xrandrНа госте сделаем такое же, но скриптом чтобы автоматически при загрузки подгружалось. Иначе не будет работать из-за агента spicy, который кривой, возможно это только у меня так, проблема с дровами, но если у вас вдруг также. То делаем следующее:
nano ~/.config/autostart/xrandr.desktop
Code:
[Desktop Entry]
Type=Application
Name=Fix screen resolution
Exec=/usr/bin/xrandr --output[B] Virtual-1[/B] --mode 1920x1080
X-GNOME-Autostart-enabled=true
xrandrchmod +x ~/.config/autostart/xrandr.desktopЯ не буду заострять внимание на настройке кали и импорте готового образ qemu/kvm.
Не удалось прогрузить медиа
/var/lib/libvirt/images/ образ лучше перенесите сначала сюда, а потом через гуишку virt-manager импортните образ, это изи делается, вручную напишите что это debian, а то он не определит сам. И настройки выставите как я показал выше.
Если у вас какие-то проблемы то проверьте поддерживает ли ваш проц виртуализацию и не отключена ли в биосе
egrep -c '(vmx|svm)' /proc/cpuinfoПроверьте что kvm модули подгрузились
lsmod | grep kvmЕсли вдруг какие-то проблемы, то введите просто эту команду и вывод закиньте в нейронку поможет очень быстро, не парьтесь
virt-host-validateIsolated network мы можем создавать через гуишку. Жмем Edit --> Connection Details
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Не удалось прогрузить медиа
Выбираем изолированную сеть (isolated network)
Не удалось прогрузить медиа
VM ↔ Хост
VM → Internet/LAN
Простыми словами мы сделали так чтобы наша виртуальная машина не видела LAN/WLAN сеть. То есть у гостя теперь нет доступа к внешней среде, не может наша кали подключаться к сайтам или сканить локальную сеть хоста (обнаруживать принтеры и т.д). Это хорошо, если вдруг наша кали будет скомпрометирована, то есть говно какое нибудь туда закачаем, то злоумышленник не сможет хуевертить на нашем хосте ничего, если только не найдет уязвимость в гипервизоре и не проапается к нашему хосту.
Заходи в гостя
Code:
ping google.com
ping 8.8.8.8
если пакеты не доходят, сети нет, то все збс. Можем продолжать делать киллсвитч.
Суть в чем должна быть что у нас есть gateway на хосте который выступает в роли виртуального роутера (у него есть свой статический адрес) гость должен с ним общаться и в данном случае наш гость должен выходить в интернет только через интерфейс впна, у него не должно быть других путей. Если вдруг впн падает/отключается, то интернета нет = vpn leak.
Ребят, болтать можно долго, я пытаюсь как-то объяснить доступным языком поскольку сети никто из вас не знает. В том числе я. То что я сделал это школьная подделка которая просто работает и все.
iptables уже во многих дистрибутивах не используется, да даже libvirt использует nft. Но есть большой минус, если вы ребутните тачку libvirt перезапустит ваши правила. Поэтому мы поступим иначе.
Повторяем за мной на своем хосте
sudo nano /usr/local/bin/restore-killswitch.sh
Code:
#!/bin/bash
# Ожидание tun0
echo "Waiting for tun0..."
while ! ip link show tun0 &>/dev/null; do
sleep 1
done
echo "tun0 is up, applying killswitch rules..."
# Очищаем цепочки
nft flush chain ip libvirt_network guest_output 2>/dev/null
nft flush chain ip libvirt_network guest_input 2>/dev/null
nft flush chain ip libvirt_network guest_nat 2>/dev/null
# virbr0 (default сеть) - восстанавливаем дефолтные правила
nft add rule ip libvirt_network guest_output ip saddr 192.168.122.0/24 iif "virbr0" counter accept
nft add rule ip libvirt_network guest_output iif "virbr0" counter reject
# virbr1 killswitch - ТОЛЬКО через tun0
nft add rule ip libvirt_network guest_output ip saddr 192.168.100.0/24 iif "virbr1" oifname "tun0" counter accept
nft add rule ip libvirt_network guest_input oif "virbr0" ip daddr 192.168.122.0/24 ct state established,related counter accept
nft add rule ip libvirt_network guest_input oif "virbr0" counter reject
nft add rule ip libvirt_network guest_input iifname "tun0" oif "virbr1" ct state established,related counter accept
# NAT правила
nft add rule ip libvirt_network guest_nat ip saddr 192.168.100.0/24 oifname "tun0" counter masquerade
nft add rule ip libvirt_network guest_nat ip saddr 192.168.122.0/24 ip daddr 224.0.0.0/24 counter return
nft add rule ip libvirt_network guest_nat ip saddr 192.168.122.0/24 ip daddr 255.255.255.255 counter return
nft add rule ip libvirt_network guest_nat meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade to :1024-65535
nft add rule ip libvirt_network guest_nat meta l4proto udp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade to :1024-65535
nft add rule ip libvirt_network guest_nat ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade
echo "Killswitch восстановлен!"
sudo chmod +x /usr/local/bin/restore-killswitch.shsudo nano /etc/systemd/system/restore-killswitch.service
Code:
[Unit]
Description=Restore nftables killswitch rules for libvirt
After=nftables.service libvirtd.service network-online.target
Wants=nftables.service libvirtd.service network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/restore-killswitch.sh
Restart=on-failure
RestartSec=5
TimeoutStartSec=infinity
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable restore-killswitch.servicesudo systemctl start restore-killswitch.servicesudo systemctl status restore-killswitch.serviceВместо tun0 - у вас может быть другое название интерфейса впн, проверьте через ifconfig. Также проверьте CIDR 192.168.100.0/24 и 192.168.122.0/24. Вам в любом случае сильно париться не надо я вам даю готовое решение, выставляйте настройки как у меня - если что-то будет не совпадать скормите в гпт, исправит. Основные ошибки я уже учел.
Обратите внимание мы все сделали грамотно. Наш сервис будет запускать только после того как стартанет libvirtd, то суть в том что после ребута запустится libvirtd демон, перезапишет правила nft (сотрет наши), а мы сервисом restore-killswitch.service восстановим их.
Все збс, на этом этапе мы завершили настройку хоста, qemu/kvm, настроили изолированную сеть. Остается самое простое это выдать сетевые правила кали.
Настраиваем guest kali
nmcli connection show
Code:
sudo nmcli connection modify "Wired connection 1" ipv4.addresses "192.168.100.10/24"
sudo nmcli connection modify "Wired connection 1" ipv4.gateway "192.168.100.1"
sudo nmcli connection modify "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli connection modify "Wired connection 1" ipv4.method manual
sudo nmcli connection modify "Wired connection 1" ipv4.never-default no
sudo nmcli connection up "Wired connection 1"
ping google.comping 8.8.8.8Все должно работать. Теперь попробуйте отключить впн, сеть должна пропасть. Пакеты не должны доходить. Ребутните хост, проверьте будет ли продолжать работать киллсвитч. Если все ок, то отлично...
👍31
❤️6
🔥3
👏7
🤔2
💯4
LIMB