Универсальная платформа для тестирования на проникновение с MITM-прокси, веб-фаззером, обработчиком обратных соединений и системой плагинов для автоматизированного тестирования безопасности и эксплуатации.
<p align="center">
<a href="https://yaklang.io/"><img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/head.jpg" style="width: 400px"/></a>
<h2 align="center">Yakit — Интерактивная платформа для тестирования безопасности приложений</h2>
<p align="center">
<img src="https://img.shields.io/github/issues-pr/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/releases"><img src="https://img.shields.io/github/downloads/yaklang/yakit/total">
<a href="https://github.com/yaklang/yakkit/graphs/contributors"><img src="https://img.shields.io/github/contributors-anon/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/releases/"><img src="https://img.shields.io/github/release/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/issues"><img src="https://img.shields.io/github/issues-raw/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/discussions"><img src="https://img.shields.io/github/stars/yaklang/yakit">
<a href="https://github.com/yaklang/yakit/blob/main/LICENSE.md"><img src="https://img.shields.io/github/license/yaklang/yakit">
</p>
<p align="center">
<a href="https://yaklang.oss-cn-beijing.aliyuncs.com/yakit-technical-white-paper.pdf">Посмотреть технический документ</a> •
<a href="https://yaklang.io/products/intro/">Официальная документация</a> •
<a href="https://github.com/yaklang/yakit/issues">Сообщить о проблеме</a> •
<a href="https://yaklang.io/">Перейти на сайт</a> •
<a href="#сообщество">Присоединиться к сообществу</a> •
<a href="#архитектура-проекта">Архитектура проекта</a>
</p>
<p align="center">
:book: Язык: <a href="https://github.com/yaklang/yakit/blob/master/README-EN.md">English</a> •
<a href="https://github.com/yaklang/yakit/blob/main/README.md">中文</a>
</p>
---
# Введение в Yakit
Конвергенция безопасности — это реформа управления безопасностью и операционной деятельностью предприятия в новых условиях, а также первоочередная задача предприятия в текущей реальности.
На основе концепции конвергенции безопасности команда Yaklang.io разработала вертикальный язык в области безопасности — Yaklang. Для продуктов/инструментов, которые невозможно нативно интегрировать в платформу Yak, с помощью Yaklang можно переписать их «высококачественные замены». Для продуктов с полной экосистемой и высоким признанием Yaklang может напрямую компилировать и интегрировать их, внося необходимые изменения в исходный код для лучшей адаптации к языку Yaklang. Для специалистов по безопасности, которые не хотят писать код, Yakit предоставляет подходящий графический интерфейс для всех возможностей Yaklang. С выходом новых версий GUI будет становиться всё более зрелым.
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-cdsl.png" style="width: 500px" alt="yakit-cdsl.png" ></a>
</h3>
Чтобы возможности безопасности самого Yaklang были ближе к реальному использованию, мы написали gRPC-сервер для Yak и построили на его основе клиент: Yakit.
## Архитектура проекта
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-arch.jpg" style="width: 600px" alt="yakit-arch.jpg" ></a>
</h3>
## Ключевая технология: CDSL
CDSL (CyberSecurity Domain Specific Language) — это специализированный язык программирования для области кибербезопасности. Мы написали стековый виртуальный исполнитель, который поддерживает состояние выполнения этого тьюринг-полного языка. Мы стремимся объединить возможности безопасности и унифицировать базовую платформу с помощью подхода «CDSL».
Чтобы CDSL, разработанный для области безопасности, был максимально приближен к реальным сценариям использования, мы написали gRPC-сервер для Yaklang и построили на его основе клиент Yakit.
По сути, через GUI Yakit управляются возможности движка. gRPC-сервер Yakit делает развертывание более удобным и быстрым, не зависит от платформы, допускает удаленное развертывание или локальный запуск на хосте.
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-gongneng.png" style="width: 700px" alt="yakit-gongneng.png" ></a>
</h3>
1. Полноценная замена BurpSuite для перехвата MITM;
2. Уникальный в своем роде GUI для пассивного сканирования MITM;
3. Встраивание скриптов Yaklang для динамической отладки трафика; выполнение кода в реальном времени;
4. Первый в мире визуальный инструмент для фаззинга Web — Web Fuzzer;
5. Магазин плагинов Yakit;
6. Выполнение пользовательских скриптов или плагинов Yaklang на любом этапе пентеста;
... ...
Обзор возможностей безопасности:
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yaklang-caps.jpg" style="width: 700px" alt="yaklang-caps.jpg" ></a>
</h3>
## Особые технологии
### Интерактивный перехват MITM
При помощи консоли MITM можно на 100% заменить BurpSuite для выполнения всех операций (загрузка и установка сертификата, перехват запросов, ответов, редактирование перехваченных пакетов и т.д.). Предоставляется полный рабочий процесс: перехват => История => Repeater/Intruder. Перехватываются данные, в истории просматриваются исторические данные, выбираются пакеты для «анализа», отправляются в Web Fuzzer для повторения/внедрения. Помимо этих типичных сценариев, MITM предлагает более гибкие функции: пассивное сканирование через плагины, горячую загрузку, замену пакетов, маркировку и т.д.
Принцип модуля MITM Yakit: запускается HTTP-прокси, который автоматически перенаправляет трафик. Когда пользователь включает ручной перехват, автоматическое перенаправление прекращается, запрос блокируется и помещается в стек, где выполняется его обработка: распаковка Gzip, обработка chunk, декодирование и т.д., чтобы запрос стал читаемым для человека. Он отображается на интерфейсе пользователя, который может просматривать, изменять или повторять запрос. При повторе HTTP-пакет, сформированный пользователем, восстанавливается для обеспечения его корректности. Движок Yak реализовал HTTP-библиотеку вручную, поэтому пользователь может отправлять кастомные некорректные или ответные пакеты для эксплуатации уязвимостей в особых сценариях.
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/yakit-mitm.png" style="width: 700px" alt="yakit-mitm.png" ></a>
</h3>
### Интерактивное воспроизведение трафика и фаззинг веб-приложений
Модуль Web Fuzzer позволяет пользователю отправлять запросы в произвольном HTTP-формате. Для упрощения использования и интуитивности интерфейса бэкенд Yakit делает многое: автоматически исправляет и дополняет информацию, необходимую для передачи и анализа данных в исходном HTTP-сообщении (например, исправляет CRLF, дополняет Content-Type, передает через chunk, дополняет boundary, корректирует Content-Length и т.д.).
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/webfuzzer.png" style="width: 600px" alt="webfuzzer.png" ></a>
</h3>
### Технология Fuzztag
Модуль Web Fuzzer поддерживает использование тегов Fuzz, что естественно и полноценно объединяет такие функции, как Host-коллизия, Intruder, перебор директорий и т.д. Например, в сценарии перебора одного параметра (скажем, ID пользователя) можно использовать тег `{{int(1-10)}}` для автоматической генерации перебираемых ID. Для сценариев с несколькими параметрами используется декартово произведение в качестве параметров перебора. По сравнению с модулем Intruder BurpSuite, это избавляет от необходимости выбирать метод атаки, импортировать словари и т.п., значительно сокращая количество действий пользователя и соответствуя его привычкам. Разумеется, Web Fuzzer также поддерживает импорт внешних словарей, например: `{{file(/tmp/username.txt)}}`. Для более сложных сценариев с данными Web Fuzzer поддерживает вставку тегов горячей загрузки: например, чтобы перебрать номера удостоверений личности определенного региона, можно прямо в модуле Web Fuzzer вставить скрипт Yak для генерации данных. В то время как Intruder BurpSuite в таком сценарии потребовал бы написания кода для генерации словаря и его последующего импорта.
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/fuzztag.png" style="width: 600px" alt="fuzztag.png" ></a>
</h3>
>Дополнительную информацию о fuzztag можно найти в разделе: [Fuzztag Быстрый обзор](https://yaklang.com/docs/newforyak/fuzztag)
### Технология reverse-соединений и мультиплексирования протоколов
Многие сценарии эксплуатации уязвимостей требуют reverse-соединений по разным протоколам. Традиционные инструменты эксплуатации требуют запуска на публичном сервере отдельного порта для каждого сервиса (например, для эксплуатации LDAP-уязвимостей требуется запустить HTTP-сервис, LDAP-сервис, а затем отправить атакующий запрос). Традиционные сервисы требуют выделения уникального порта для каждого сервиса. Технология мультиплексирования портов Yaklang позволяет слушать один порт, распознавать протокол запроса и отвечать соответствующим образом. Преимущества мультиплексирования портов Yaklang, помимо экономии системных ресурсов и удобства ручного тестирования, заключаются в том, что за счет ручного распознавания заголовков различных протоколов и ручной реализации на основе стандартов можно гибко конструировать пакеты для любых протоколов. Например, можно создавать некорректные пакеты для эксплуатации уязвимостей, передавать данные через DNS, ICMP и т.п., использовать этот метод как механизм поддержания доступа через бэкдоры или обходить ограничения по отсутствию TCP-трафика при эксплуатации.
На основе технологии мультиплексирования портов Yakit реализовал модуль reverse-соединений, включающий Reverse Shell, эксплуатацию reverse-соединений и их обнаружение. Reverse Shell позволяет слушать указанный порт как приемник для обратной оболочки; после получения оболочки можно управлять удаленным сервером, как по SSH. В традиционных инструментах пентеста для reverse-соединений использовался `nc` для прослушивания порта, но добавление таких клавиш, как Backspace и стрелки, приводило к искажению символов, и использование оболочки сильно отличалось от нативного SSH. Reverse Shell от Yakit обеспечивает впечатления, аналогичные нативному SSH. Часть эксплуатации reverse-соединений позволяет слушать один порт, устанавливать полезные нагрузки для обратного соединения по разным протоколам; при получении запроса автоматически распознается протокол запроса и возвращается соответствующая полезная нагрузка для эксплуатации. Функция обнаружения reverse-соединений предоставляет детекцию TCP, DNSLog и ICMP reverse-соединений, что может использоваться для обнаружения выполнения команд.
<h3 align="center">
<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/reverse.png" style="width: 600px" alt="reverse.png" ></a>
</h3>
## Использование
- Вы можете перейти на [официальный сайт](https://yaklang.com/) для загрузки и установки.
- Вы можете ознакомиться с нашей [официальной документацией](https://yaklang.io/products/intro/) для изучения и использования Yakit.
Дополнительные технические материалы:
[Технические статьи Yakit](https://yaklang.io/products/article/yakit-technical-study/methodology)
[Технический документ](https://yaklang.oss-cn-beijing.aliyuncs.com/yakit-technical-white-paper.pdf)
## Присоединиться к сообществу
Если у вас есть конструктивные предложения по нашему продукту или вы обнаружили ошибку, пожалуйста, создайте issue.
Также вы можете связаться с нами через официальный аккаунт WeChat или обратиться по вопросам коммерческого лицензирования и сотрудничества.
Чтобы присоединиться к чату или задать вопросы техническим специалистам, пожалуйста, свяжитесь и добавьте менеджера в WeChat:
<h3 align="left">
Менеджер в WeChat:<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/wechat2.png" style="width: 200px" alt="wechat2.png" ></a> QR-код официального аккаунта:<img src="https://raw.githubusercontent.com/yaklang/yakit/HEAD/imgs/wechat1.jpeg" style="width: 200px" alt="wechat1.jpeg" ></a>
</h3>
## Статистика звезд с течением времени
[](https://starchart.cc/yaklang/yakit)
## Отказ от ответственности
1. Данный инструмент предназначен только для **легитимных** действий по обеспечению безопасности предприятия и личного обучения. Если вы хотите протестировать функциональность инструмента, пожалуйста, самостоятельно настройте тестовую среду.
2. При использовании данного инструмента для проверки вы должны убедиться, что ваши действия соответствуют местным законам и нормативным актам, а также получили достаточные разрешения. Не сканируйте неавторизованные цели.
3. Запрещено проводить обратный инжиниринг, декомпиляцию, попытки расшифровки исходного кода, внедрение бэкдоров и распространение вредоносного ПО в отношении данного программного обеспечения.
4. Если вам необходимо использовать Yakit в коммерческих целях, убедитесь, что вы получили официальное разрешение, в противном случае мы оставляем за собой право привлечь вас к ответственности.
**Если вышеуказанные запрещенные действия будут обнаружены, мы оставляем за собой право привлечь вас к юридической ответственности.**
Если вы совершаете какие-либо незаконные действия при использовании данного инструмента, вы несете все соответствующие последствия самостоятельно. Мы не берем на себя никакой юридической или иной ответственности.
Перед установкой и использованием данного инструмента **внимательно прочитайте и полностью осознайте все условия**.
Ограничения, исключения ответственности и другие условия, затрагивающие ваши важные права, могут быть выделены **жирным шрифтом**, подчеркиванием и т.п. для привлечения вашего внимания.
Если вы не полностью прочитали, не полностью поняли и не принимаете все условия данного соглашения, пожалуйста, не устанавливайте и не используйте данный инструмент. Ваше использование или любое другое явное или подразумеваемое выражение согласия с данным соглашением означает, что вы прочитали и согласны соблюдать его условия.