Привет, Хабр. Я Александр, мне 33. Хакинг у меня хобби, а не работа: CTF, Hack The Box, иногда багбаунти по выходным. И каждый раз одно и то же.
Открываешь тулзу — первым делом —help. Флагов экран, все на английском. Сидишь, вычитываешь, что тебе сейчас нужно. Собрал один флаг, переключился на второй — а как пишется первый, уже забыл. Снова —help. И по новой. На сборку одной команды уходит больше времени, чем на саму работу.
Команду собрал. А дальше? nmap отработал, передо мной открытые порты — и я завис. За что хвататься? В каком порядке? Это знание у каждого где-то в голове, и достаёшь его каждый раз заново.
Словарь. И где он лежит-то. /usr/share/wordlists? seclists? А подкаталог? Опять ls, find, вспоминаешь путь, который вбивал сто раз.
Пейлоад. Лезешь в PayloadsAllTheThings — а там стена. Какой брать? На каком этапе? Что выстрелит, а что лежит для галочки? Непонятно.
И так весь тест размазан по тридцати вкладкам. HackTricks, PayloadsAllTheThings, GTFOBins, revshells, рядом гугл с переводчиком — половина же на английском. Плюс папка своих заметок.
Бесит. Особенно на вебе: нашёл точку, надо быстро прогнать пейлоады — а ты вместо дела вспоминаешь, где у тебя что лежит.
В какой-то вечер я психанул и начал сваливать всё нужное в одно место. Локально, на русском, поиск по одной кнопке. Оно разрослось, и я сам не заметил, как это стало отдельным проектом. Выложил в опенсорс. Назвал ARS3NAL — тут без фантазии, арсенал он и есть арсенал.
Демо без установки: https://inflictx. github. io/Arsenal/ Код на гитхабе: https://github. com/inflictx/Arsenal

Флаги, которые не надо вспоминать
Главная штука, ради неё всё и затевалось.
Выбираешь тулзу — nmap, ffuf, sqlmap, ну и так далее. Вместо простыни —help видишь флаги списком, каждый с описанием на русском. Отметил галочками нужные — команда собралась сама. Надо поправить значение — правишь прямо на месте. Всё.
И вот что для меня важнее всего вышло. Цель и свой LHOST вписываешь один раз, вверху. Дальше они сами подставляются во все примеры во всех тулзах. Никакого sed по 10.10.x. x в десяти местах.
Собрал удачную команду — кинул в свою библиотеку. Потом не перебираешь стрелочкой в терминале, мучительно вспоминая, как оно там было.

Конструктор есть у 59 инструментов. Где он не нужен — лежит подробная справка в markdown.
С чего вообще начинать
Вторая боль. Открыл цель и завис: а дальше что.
Зашил 70 чеклистов. Веб, Active Directory, облака, привилегии — под разные ситуации. Каждый ведёт по шагам: разведка, детект, эксплуатация, обход WAF. Тыкаешь галочки, прогресс сохраняется между запусками. Рядом — impact, CVE и сразу ссылки на пейлоады.
По сути порядок действий, вынесенный из головы на экран. Когда он перед глазами — не залипаешь и ничего не забываешь.

Нужный пейлоад за пару секунд
Вот сюда я закопал больше всего времени и нервов.
Прошёл руками 63 категории PayloadsAllTheThings. Каждую. Отсортировал от детекта к эксплуатации, выкинул мусор, дописал по-русски, что где брать. Никаких сырых дампов.
Где-то на тридцатой категории я уже всерьёз сомневался, что это нужно кому-то, кроме меня. Но бросать на полпути было жалко.
Открыл категорию — сразу видишь, что брать и на каком шаге. А не стену на тысячу строк, в которой ещё разбираться.

Словари без find по диску
Мелочь, а бесила едва ли не сильнее всего.
Справочник по основным словарям. Для каждого — канонический путь на Kali, ссылка на гитхаб и пара слов, для чего он и когда брать. Не надо вспоминать, в каком подкаталоге seclists оно лежит, и гонять find.

Поиск по всему за один хоткей
Ctrl+K — и ищешь сразу везде. Пейлоады, команды, GTFOBins, словари, доки. Не помнишь, в каком модуле что лежит — и не надо. Внутри полнотекстовый поиск на SQLite FTS5. Клик по результату кидает ровно на нужную карточку. Не в начало раздела, где потом ещё скроллить.

Что ещё внутри
GTFOBins целиком. Все 458 бинарей, фильтры по функциям и контексту, пояснения переведены. К двухсотому бинарю я уже физически устал от слова SUID, но доделал — без этого вся затея не имела смысла. Удобно, когда сидишь в урезанной оболочке и думаешь, чем поднять привилегии.

CyberChef встроен прямо внутрь. Официальная сборка, перекрашена под тему, интерфейс на русском. Кодировки, хеши, JWT — не уходя в онлайн.

Генератор реверс-шеллов в духе revshells. Reverse, bind, msfvenom, листенеры. Выбираешь оболочку и кодировку, остальное само. LHOST общий, так что вписывать заново не надо.

И трекер целей. Под каждую — своё пространство: scope, заметки, находки с severity и шагами. Отчёт выгружается в markdown. Выбрал активную цель — её адрес и LHOST подставляются и в команды, и в шеллы. Всё связано.

Почему всё на русском
Команды и пейлоады я не трогал — они универсальные. А вот описания перевёл. Что за уязвимость, к чему ведёт, где искать, как обходить фильтры.
Мнение спорное, но моё. Вечный английский многих тормозит, особенно пока учишься. Команду-то поймёшь. А пока в голове переведёшь нюанс эксплуатации — мысль уже уплыла. На русском доходит сразу. Кому удобнее в потоке на английском — без вопросов. Мне быстрее на родном. Сделал под себя.
Офлайн и без телеметрии
Ни облака, ни аккаунтов. Телеметрию не собираю. Заметки, цели, находки, прогресс — всё лежит у тебя на машине и никуда не уходит. В нашем деле иначе нельзя.
Как оно устроено
Бэкенд — Fastify и better-sqlite3, поиск на FTS5. Фронт — Vite и чистый TypeScript, без фреймворка. React ради такой штуки тащить не хотелось.
Из одного кода собираются две версии. Серверная — с настоящей базой SQLite, её можно дополнять своим контентом. Статическая для GitHub Pages крутится целиком в браузере: контент вшит в сборку, личные данные в IndexedDB. Поэтому демо и открывается просто по ссылке, без сервера.
Был и косяк. Сначала я понадеялся распарсить пейлоады из PayloadsAllTheThings скриптом и залить пачкой. Прогнал, глянул — и схватился за голову. Вместо рабочих пейлоадов парсер натащил кусков конфигов, примеров не к месту и просто мусора, да ещё языки попутал. Выкинул всю автоматику и пошёл руками. Дольше на порядок. Зато без хлама.
Локально поднимается так (нужен Node. js 18+):
npm installnpm run seed # один раз, собрать data/arsenal. db из исходниковnpm run buildnpm run start # http://localhost:7331
Своя база в gitignore, так что ничего личного не утекает, а пересборка контента твои данные не трогает.
Чужая работа
Честно: ARS3NAL во многом просто удобная офлайн-обёртка над чужим трудом. Спасибо проектам, на которых всё держится: PayloadsAllTheThings, GTFOBins, CyberChef от GCHQ, SecLists, reverse-shell-generator. Источники и лицензии — в репозитории, код под GPL-3.0.
Дисклеймер
Только для авторизованного тестирования и обучения. Свои системы, легальный скоуп, CTF, лаборатории. К чужому без разрешения лезть нельзя — это статья, и вся ответственность на тебе.
Демо: https://inflictx.github.io/Arsenal/
Код: https://github.com/inflictx/Arsenal
Может, у тебя давно собран свой воркфлоу, и эта штука лишняя. Но если ты тоже устал держать тридцать вкладок и в пятый раз гуглить один и тот же пейлоад — глянь демо. И главное, напиши, где я не прав и что делаешь иначе. Это мне интереснее звёздочек.
Хотя от звёздочки тоже не откажусь.
ссылка на оригинал статьи https://habr.com/ru/articles/1052866/