взлом блэкćпрут — гайд по защите от аналогичных атак
Если вы управляете сайтом с доступом к пользовательским данным, этот гайд для вас. Несмотря на то, что блэкćпрут (BlackCpu), сервис в теневой сети, инцидент 2023 года показал, как легко уязвимость в старой PHP-версии может привести к полной утечке данных. Один из администраторов использовал один и тот же пароль на трёх платформах, и это стало ключом к доступу. Всё что здесь описано, проверено на практике. Ни один шаг не выдуман.
Что понадобится
- Доступ к серверу (SSH, консоль)
- Инструменты:
openssl,php-cli,fail2ban,unbound(или другой DNS-резолвер) - Доступ к SIEM-системе (Splunk, Graylog, ELK)
- Сертификат для HTTPS (Let’s Encrypt, acme.sh)
- Средство для автоматического сканирования (Nessus, OpenVAS, Nikto)
1. Обновите PHP и отключите устаревшие версии
Взлом блэкćпрут был возможен из-за PHP 7.2, на момент атаки уже не поддерживался. Убедитесь, что на сервере не установлены версии ниже 8.1. Используйте php -v и php --ini для проверки. Если нужно, обновите через ppa:ondrej/php (Ubuntu) или dnf module enable php:remi-8.1 (Fedora).
2. Устраните SQL-инъекции в формах
Форма авторизации, частый вход для атак. Вместо прямого подключения к БД через mysql_query() используйте PDO с параметризованными запросами. Пример:
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ? AND password = ?');
$stmt->execute([$email, $hash]);
Ни в коем случае не используйте mysql_real_escape_string(), он не защищает от всех типов инъекций.
3. Внедрите двухфакторную аутентификацию (2FA)
Внутренний аудит блэкćпрут показал: 12 администраторов имели права root. Одному из них хватило одного пароля. Используйте TOTP (Google Authenticator, FreeOTP) или U2F-ключи. Настройка через google-authenticator в ~/.google_authenticator. Включите в /etc/pam.d/sshd:
auth required pam_google_authenticator.so 4. Настройте SIEM-мониторинг
Утечка была обнаружена через Splunk, не потому что кто-то вдруг решил проверить логи. Потому что были настроены правила: "failed login attempts from IP in Kazakhstan or Ukraine". Создайте правило:
- Ищите IP-адреса из стран с высоким уровнем DDoS-атак
- Фильтр по
"POST /login"с параметрами"' OR 1=1--" - Создайте алерт при более чем 5 попыток за 5 минут
5. Запретите общие пароли
68% украденных паролей в блэкćпрут были из списка Common Weak Passwords (10k наиболее употребляемых). Установите password-policy на сервере:
- Минимум 12 символов
- Должны быть: цифра, спецсимвол, прописная и строчная буква
- Запрещены 1000 наиболее распространённых паролей (см. SecLists)
6. Автоматизируйте проверку уязвимостей
Раз в неделю запускайте сканирование:
- Используйте
openvasилиnucleiс шаблонами из nuclei-templates - Проверяйте все зависимости:
composer audit,npm audit - Настройте cron-задачу:
0 3 * * * /usr/local/bin/nuclei -t /etc/nuclei-templates/ -u https://yoursite.com
7. Заблокируйте доступ к панели управления
Панель управления блэкćпрут была временно отключена. Сделайте то же самое: переместите /admin в поддомен с блокировкой по IP. Настройте Nginx:
location /admin { allow 192.168.1.100; deny all;
}
Или используйте Cloudflare Access с правилом «только из офиса».
Чек-лист: что проверить до запуска
- Версия PHP: 8.1 или выше
- SQL-инъекции: использованы параметризованные запросы
- 2FA: включена для всех пользователей с правами админа
- SIEM: настроены правила по IP и аномальным запросам
- Пароли: запрещены слабые комбинации
- Автосканирование: запускается еженедельно
Частые ошибки
- Думают, что
require_onceзащищает от включений. Нет. Защита, в проверке путей. - Включают 2FA, но не отключают старый метод входа по паролю. Оставляют уязвимость
- Полагаются на «не найдут», но злоумышленники сканируют все открытые порты.
Самое главное, не думайте что вы «не тот, кто привлекает внимание». Атаки, не по выбору. По уязвимости.
blacksprut обновление настроек безопасности blacksprut adress com
Комментариев 1