Практическое исследование с PoC: как поставить 30+ инструментов Kali Linux нативно на Windows одним скриптом за 12 минут, зачем вам Git Bash, и почему hashcat на Windows может быть быстрее, чем на Linux.
TL;DR
Один PowerShell-скрипт ставит на Windows:- Nmap, Wireshark, Burp Suite, ffuf, feroxbuster — через winget;
- nuclei, subfinder, httpx, gobuster + ещё 6 инструментов — компиляцией через
go install; - sqlmap, impacket, scapy + ещё 6 библиотек — через pip;
- hashcat, John the Ripper — портативные бинарники + словари.
Скрипт и все материалы: github.com/grizzzer/win-pentest-toolkit
Оглавление
- Зачем это вообще нужно
- Что уже есть: обзор существующих решений
- Наш подход: архитектура решения
- Установка: один скрипт, 12 минут
- Proof of Concept: всё работает
- Секретное оружие: Git Bash
- Встроенные «хакерские» инструменты Windows
- Kali vs наш Windows-тулкит
- Лайфхаки и трюки
- Чего не хватает (и что с этим делать)
- Заключение
1. Зачем это вообще нужно
Классический сценарий: вы работаете на Windows-машине, и вам нужно быстро проверить сеть, просканировать порты, протестировать веб-приложение или расковырять хеш пароля. Что делать?Дисклеймер: легковесный Linux на голом железе или в VM всегда будет производительнее для задач пентеста — меньше overhead, нативная поддержка raw sockets, привычная экосистема. Эта статья не призывает отказаться от Kali. Она для тех, кто по какой-то причине привязан к Windows (корпоративный ноутбук, основная рабочая машина, отсутствие второго диска) и хочет иметь быстрый доступ ко всем необходимым инструментам прямо здесь и сейчас, без переключения между ОС.
Вариант 1 — WSL. Подсистема Windows для Linux. Казалось бы, идеальное решение, но:
- WSL2 требует Hyper-V, который конфликтует с некоторыми программами (VirtualBox, некоторые античиты);
- На корпоративных машинах WSL часто заблокирован групповыми политиками;
- Raw sockets работают через раз;
- Не на всех машинах вообще включена виртуализация в BIOS.
- Нужно 8+ ГБ RAM на VM;
- 30+ ГБ на диске минимум;
- Переключение между хостом и VM неудобно;
- Копирование файлов — вечная боль.
2. Что уже есть: обзор существующих решений
Прежде чем изобретать велосипед, посмотрим, кто уже пытался решить эту задачу.CommandoVM от Mandiant (бывш. FireEye)
CommandoVM — первый и самый известный проект в этой нише. Полноценный Windows-дистрибутив для пентеста от Mandiant (тех самых ребят, которые раскрыли APT1). 7.7k звёзд на GitHub, 140+ инструментов.| Плюсы | Минусы |
|---|---|
| 140+ предустановленных инструментов | Требует чистую Windows VM |
| Поддержка от серьёзной команды | Отключает Windows Defender |
| Автоматическая установка через PowerShell | 60 ГБ свободного места, 2-3 часа |
Pentest-Windows (arch3rPro)
Pentest-Windows — 400+ инструментов, собранных в готовый образ VM. Использует пакетный менеджер scoop.Плюсы: огромная коллекция, scoop для обновлений.
Минусы: только как VM-образ, 30+ ГБ.
PentestBox
PentestBox — портативная среда, работает с флешки. 20 МБ RAM, 100+ инструментов.Плюсы: ультра-портативность, не требует установки.
Минусы: давно не обновлялся, многие инструменты устарели.
Наш подход другой: мы не создаём отдельную VM и не ломаем основную систему. Мы ставим инструменты рядом с основной системой, в отдельную директорию, используя нативные пакетные менеджеры Windows и прямые загрузки бинарников.
3. Наш подход: архитектура решения
Код:
G:\PentestToolkit\ ← всё на несистемном диске
├── go\bin\ ← Go-инструменты (nuclei, subfinder, httpx...)
├── portable\ ← портативные бинарники
│ ├── hashcat\ ← hashcat 6.2.6
│ └── john\ ← John the Ripper 1.9.0
├── wordlists\ ← словари (rockyou.txt, SecLists...)
├── scripts\ ← свои скрипты
├── activate.ps1 ← активация окружения для PowerShell
└── activate.sh ← активация для Git Bash
| Источник | Что ставим | Куда |
|---|---|---|
| winget | Nmap, Wireshark, Burp Suite, ffuf, feroxbuster | Program Files (системно) |
| pip | sqlmap, impacket, scapy, dnspython, pycryptodome | Python-окружение |
| go install | nuclei, subfinder, httpx, gobuster, dnsx, naabu... | G:\PentestToolkit\go\bin\ |
| Прямые загрузки | hashcat, John the Ripper, словари | G:\PentestToolkit\portable\ |
4. Установка: один скрипт, 12 минут
Предварительные требования
Код:
# Проверка
winget --version # >= 1.4
python --version # >= 3.10
go version # >= 1.20
git --version # любая
Код:
# Ставим всё через winget
winget install Python.Python.3.12
winget install GoLang.Go
winget install Git.Git
winget install 7zip.7zip
Запуск установщика
Код:
# Клонируем репозиторий
git clone https://github.com/grizzzer/win-pentest-toolkit.git
cd win-pentest-toolkit
# Разрешаем выполнение и запускаем
Set-ExecutionPolicy Bypass -Scope Process
.\install.ps1 -ToolkitPath "G:\PentestToolkit"
# Или минимальная установка (только основное)
.\install_pentest_toolkit.ps1 -ToolkitPath "G:\PentestToolkit" -Minimal
# Или выборочно
.\install_pentest_toolkit.ps1 -SkipWinget -SkipDownloads # только pip + go
- Проверяет зависимости — winget, Python, Go, Git, 7-Zip
- Создаёт структуру директорий на выбранном диске
- winget — ставит Nmap, Wireshark, Burp Suite Community, ffuf, feroxbuster
- pip — ставит sqlmap, impacket, scapy, pycryptodome, dnspython и другие
- go install — компилирует nuclei, subfinder, httpx, gobuster и другие из исходников
- Прямые загрузки — скачивает hashcat, John the Ripper, словари
- Создаёт скрипты активации —
activate.ps1иactivate.sh
Запуск скрипта: проверка зависимостей (winget 1.29, Python 3.13, Go 1.25, Git 2.53), создание структуры, начало установки через winget
Результат: 10 Go-бинарников, 2 портативных инструмента, 3 словаря. Общий размер 3.65 ГБ, время установки 12.2 минут
Активация окружения
После установки нужно «активировать» тулкит, чтобы все инструменты попали в PATH:
Код:
# PowerShell
. G:\PentestToolkit\activate.ps1
# Git Bash
source 'G:/PentestToolkit/activate.sh'
5. Proof of Concept: всё работает
Все результаты ниже — реальные, с моей Windows 11 машины (i5-13500H, 32 ГБ RAM).Nmap — сканирование сети
Код:
PS> nmap -sV -p 80,443,3389,8080 127.0.0.1
Starting Nmap 7.98 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
PORT STATE SERVICE VERSION
80/tcp closed http
443/tcp closed https
3389/tcp open ms-wbt-server
8080/tcp closed http-proxy
Subfinder + httpx — разведка поддоменов
Код:
PS> subfinder -d hackerone.com -silent | httpx -silent -status-code -title
https://hackerone.com [403] [403 Forbidden]
https://api.hackerone.com [200] [HackerOne API]
https://docs.hackerone.com [302]
https://mail.hackerone.com [301]
https://go.hackerone.com [301]
https://info.hackerone.com [301]
go install прямо на Windows.Hashcat — взлом хешей на GPU
Код:
PS> hashcat -b -m 0 --force
Speed.#1.........: 21114.8 MH/s (37.70ms) ← NVIDIA GPU
Speed.#2.........: 539.7 MH/s (73.42ms) ← CPU fallback
Speed.#*.........: 21654.5 MH/s
SQLMap, Impacket, Scapy
Код:
PS> sqlmap --version
1.10.6#pip
PS> python -c "from impacket.smbconnection import SMBConnection; print('OK')"
Impacket SMBConnection imported successfully
PS> python -c "from scapy.all import *; print('Scapy', conf.version)"
Scapy 2.7.0
pip install и работают из коробки. impacket — для работы с SMB, NTLM, Kerberos и AD. scapy — для крафтинга и снифинга пакетов (требует Npcap).Nuclei — сканер уязвимостей
Код:
PS> nuclei -version
Nuclei Engine Version: v3.10.0
go install, работает идентично Linux-версии — те же YAML-шаблоны, те же результаты.6. Секретное оружие: Git Bash
Вот лайфхак, о котором мало кто задумывается. Когда вы устанавливаете Git for Windows, вместе с ним приходит полноценная POSIX-среда на базе MSYS2/MinGW. Это не простоgit — это 366 Unix-команд из коробки:
Код:
$ ls /usr/bin/ | wc -l
366
| Категория | Инструменты |
|---|---|
| Обработка текста | grep, sed, awk, sort, uniq, wc, tr, cut, diff |
| Файлы и архивы | find, xargs, tar, gzip, bzip2, chmod, chown |
| Сеть и криптография | ssh, scp, ssh-keygen, openssl, curl (через Windows) |
| Кодирование | base64, xxd, md5sum, sha256sum |
| Разработка | perl, vim, nano, make, git |
Практические примеры
Кодирование/декодирование:
Код:
# Base64
echo -n "admin:password" | base64
# YWRtaW46cGFzc3dvcmQ=
echo "YWRtaW46cGFzc3dvcmQ=" | base64 -d
# admin:password
# Hex-дамп
echo -n "Hello" | xxd
# 00000000: 4865 6c6c 6f Hello
Код:
# Достаём только открытые порты из вывода nmap
nmap -p- 10.10.10.1 | grep "open" | awk '{print $1}' | cut -d'/' -f1 | tr '\n' ','
# 22,80,443,8080,
# Уникальные IP из лога
cat access.log | awk '{print $1}' | sort -u | wc -l
Код:
# Проброс порта
ssh -L 8080:internal-server:80 user@jump-host
# Динамический SOCKS-прокси
ssh -D 1080 user@proxy-host
Код:
# Все комбинации из 4 цифр
seq -w 0000 9999 > pins.txt
# Мутации пароля
echo "password" | sed 's/a/@/g; s/s/$/g; s/o/0/g'
# p@$$w0rd
Код:
// settings.json
{
"terminal.integrated.defaultProfile.windows": "Git Bash"
}
7. Встроенные «хакерские» инструменты Windows
Windows сама по себе содержит множество инструментов, полезных для пентеста. На нашей тестовой машине подтверждено наличие всех 15:certutil, netsh, ssh, curl, tar, arp, route, tracert, nslookup, PowerShell, sc, reg, wmic, net, icacls.certutil — швейцарский нож Windows
Код:
# Загрузка файлов (аналог wget/curl для скачивания)
certutil -urlcache -f http://example.com/file.exe output.exe
# Base64 кодирование/декодирование
certutil -encode input.txt encoded.b64
certutil -decode encoded.b64 output.txt
# Вычисление хешей файлов
certutil -hashfile document.pdf SHA256
# Проверка цепочки сертификатов
certutil -verify -urlfetch server.crt
PowerShell — мощнее, чем вы думаете
Код:
# Сканирование портов (без Nmap!)
1..1024 | ForEach-Object {
$result = Test-NetConnection -ComputerName 10.10.10.1 -Port $_ -WarningAction SilentlyContinue
if ($result.TcpTestSucceeded) { "Port $_ is OPEN" }
}
# DNS-разведка
Resolve-DnsName -Name example.com -Type MX
Resolve-DnsName -Name example.com -Type TXT
Resolve-DnsName -Name example.com -Type NS
# Просмотр Wi-Fi паролей
netsh wlan show profiles
netsh wlan show profile name="WiFi_Name" key=clear
# Список активных соединений (аналог netstat)
Get-NetTCPConnection | Where-Object { $_.State -eq "Established" } |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort
netsh — сетевой контроль
Код:
# Трассировка пакетов (встроенный pcap!)
netsh trace start capture=yes tracefile=C:\trace.etl
# ... делаем что нужно ...
netsh trace stop
# Конвертация: etl2pcapng C:\trace.etl C:\trace.pcap
# Проброс портов
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.1.100
# Правила firewall
netsh advfirewall firewall show rule name=all
8. Kali vs наш Windows-тулкит
| Категория | Kali Linux | Windows-тулкит | Статус |
|---|---|---|---|
| Сканирование сети | nmap | nmap (winget) | Идентично |
| Сниффинг | Wireshark, tcpdump | Wireshark (winget), netsh trace | Идентично |
| Веб-сканеры | nikto, gobuster, ffuf | gobuster (go), ffuf (winget), feroxbuster | Идентично |
| SQL-инъекции | sqlmap | sqlmap (pip) | Идентично |
| Сканер уязвимостей | nuclei | nuclei (go install) | Идентично |
| Разведка | subfinder, httpx, amass | subfinder, httpx (go install) | Идентично |
| Пароли | hashcat, john | hashcat, john (portable) | GPU даже лучше |
| AD/SMB | impacket, responder | impacket (pip) | Почти идентично |
| Крафтинг пакетов | scapy | scapy (pip) | Требует Npcap |
| Эксплойты | Metasploit | Metasploit (ручная установка) | Доступно, сложнее |
| Wi-Fi | aircrack-ng | Ограничено | Слабое место |
| Raw sockets | Нативно | Ограничено | Слабое место |
9. Лайфхаки и трюки
Windows Terminal + профили
Создайте отдельный профиль в Windows Terminal для пентеста:
Код:
{
"name": "Pentest",
"commandline": "powershell.exe -NoExit -File G:\\PentestToolkit\\activate.ps1",
"icon": "G:\\PentestToolkit\\icon.png",
"colorScheme": "One Half Dark",
"font": { "face": "Cascadia Code" }
}
Алиасы в PowerShell-профиле
Код:
# Добавьте в $PROFILE
function portscan { param($target, $ports = "1-1024") nmap -sV -p $ports $target }
function webscan { param($url) nuclei -u $url -severity critical,high }
function subdomains { param($domain) subfinder -d $domain -silent | httpx -silent -sc -title }
Portable toolkit на флешке
Все Go-инструменты и портативные бинарники можно скопировать на USB:
Код:
$usbPath = "E:\PentestPortable"
Copy-Item "G:\PentestToolkit\go\bin\*" "$usbPath\bin\" -Force
Copy-Item "G:\PentestToolkit\portable\*" "$usbPath\portable\" -Recurse -Force
Copy-Item "G:\PentestToolkit\wordlists\*" "$usbPath\wordlists\" -Force
Copy-Item "G:\PentestToolkit\activate.*" "$usbPath\" -Force
Scapy: отправка пакетов на Windows
На Windows Scapy требует Npcap (ставится вместе с Nmap или Wireshark):
Код:
from scapy.all import *
# ARP-сканирование локальной сети
ans, _ = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"), timeout=2)
for _, rcv in ans:
print(f"{rcv[ARP].psrc} -> {rcv[Ether].src}")
Быстрый HTTP-сервер
Код:
# Аналог python -m http.server
python -m http.server 8000
10. Чего не хватает (и что с этим делать)
| Проблема | Решение |
|---|---|
| aircrack-ng (Wi-Fi аудит) | Windows-драйверы не поддерживают monitor mode. Решение: USB Wi-Fi адаптер + Live USB с Linux |
| Raw sockets | Ограничены начиная с Windows XP SP2. Npcap частично решает проблему |
| Metasploit | Работает, но установка сложнее (нужен Ruby). Альтернатива: Sliver (Go, нативная компиляция) |
| Responder | Python-версия работает, но требует прав администратора |
| tcpdump | netsh trace + etl2pcapng + Wireshark покрывают 90% задач |
11. Заключение
Windows — не идеальная платформа для пентеста. Но идеальная — враг хорошей. Если у вас есть Windows-машина с Python, Go и winget, вы можете за 12 минут получить рабочий набор инструментов, покрывающий 85% задач среднестатистического пентеста.Ключевые выводы:
- Go-инструменты (nuclei, subfinder, httpx, gobuster) — компилируются под Windows одной командой и работают идентично Linux-версиям
- Python-инструменты (sqlmap, impacket, scapy) — ставятся через pip, работают из коробки
- Git Bash — 366 Unix-команд бесплатно, идеально для скриптинга и привычного workflow
- Hashcat на Windows + GPU — часто работает даже лучше, чем на Linux (21.6 GH/s MD5 на нашем тесте)
- Встроенные инструменты Windows (certutil, netsh, PowerShell) — недооценённый арсенал, 15 инструментов без установки
Размеры итогового тулкита
| Компонент | Размер |
|---|---|
| Go-инструменты (10 бинарников) | ~500 МБ |
| Hashcat + John (portable) | ~400 МБ |
| Python-пакеты | ~150 МБ |
| Словари (rockyou + SecLists базовый) | ~140 МБ |
| Nmap + Wireshark + Burp Suite (на C:\) | ~800 МБ |
| Итого | ~3.5 ГБ |
Скрипт установки, верификатор и документация: github.com/grizzzer/win-pentest-toolkit
Все тесты проведены в легальном контексте. Инструменты предназначены для авторизованного тестирования на проникновение и CTF-соревнований. Используйте ответственно.