• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья ULF/УЛЬФ - Унифицированый Формат Логов | Unified Log Format

KijomBa

(L3) cache
Пользователь
Регистрация
17.01.2022
Сообщения
196
Реакции
108
Гарант сделки
7
Привет всем! 😁
Наконец то руки дошли до Ульфа.

Немного предыстории.​

В своё время писал простенький парсер для логов, а так же Приват/Паблик чекер.
Во время написания столкнулся с проблемой - нехватка единого стандарта для формата логов!
Тоесть каждый автор стиллера пилит свой формат, свой велосипед который естественно лучше других (конечно же смена названия пары файлов то что нужно).
Соответственно для обработки разных форматов приходиться писать дополнительный код. Естественно его не много, всего лишь сменить имя файла, и разобраться с внутренним форматом. Но если подумать более глобально то можно выделить несколько проблем:
  1. Первая и банальная - лишний код для обработки лога.
  2. Вторая и основная - отсутствие единого формата, что не позволяет создать набор универсальных утилит или серисов для работы с логами.
Если в первом случае оверхед по количеству кода не большой, то вот со второй проблемой не всё так просто.
Для того что бы содать удобную маштабируемую инфраструктуру по типу парсера, различных чекеров, панелей, стилеров, нужно разрабатывать всё с нуля.
Соответственно возрастает стоимость и время разработки хороших продуктов.
Конечно для кодеров это плюс - больше работы больше денег, но для индустрии в целом это стопор (есть такое слово?) развития.

Что я предагаю.​

Моя идея проста - создать единый стандарт для формата логов.
Возможно это не кажеться столь важной проблемой, но я считаю что это может стать основой для дальнейшей унификации отрасли)
Единый формат, единые утилиты для обработки, единая панелька для стилеров (по заветам Quake3 , и другого юзера ник которого не помню, но видел где-то в темке), единый формат базы данных для хранения логов и тд.
Унификация позволит создать набор универсальных инструментов которые в дальнейшем может использовать каждый.
Возможно это ударит по заработку кодеров, но как по мне это к лучшему - исчезнет необходимость по сто раз писать один и тот же код, панель упаковщик (тот что данные в архив пихает и на серв отправляет) на стороне стиллера, софт для отработки и тд. Кодеры смогут сосредоточиться на более интересных вещах, двигать нашу отрасль вперёд не отвлекась на банальную рутину.
А совместная опенсорс разработка позволит создать качественные инструменты(не придёться потом ныть о криворукости очередного С# кодера). Инструменты в Unix идеологии, маленькие тулзы для каждой задачи, написанные единожды но используемые на протяжении десятилетий.

Теперь немного о формате.​

В качестве основы я выбрал Json, тк это удобно, да и большую часть потребностей он закрывает, плюс нативная интеграция с Document based ДБ.
Проанализировал различные логи, можно выделить основной набор данных которые мы можем извлечь из логов:
1. Данные с браузеров:
  • Логин/Пароль/Юрл
  • Кукисы
  • Сохраненные СС
  • Автозаполнение.
2. Системная информация:
  • Айди, Айпи, Гео, Дата и тд.
  • Железо юзера
  • Список процессов
  • Список установленного софта
3. Крипта:
  • Файлы веб расширений(Metamask, Binance, Brave и др.)
  • Wallet.dat файлы (Electrum)
  • Файлы других десктоп кошелей (Exodus, Atomic)
4. Файлы других приложений:
  • Steam
  • Discord
  • FTP
5. Файлы с файл-граббера.
На основе этого списка нам нужно построить универсальный формат.​
Если на счёт данных с браузера и системной инфой проблем нет, то вот с криптой, файлграббером и другими приложениями есть вопросы.
[1]Как выделить универсальные правила для их описания и хранения?
Собственно наброски формата:​
JSON:
{
    "id": "str",//Часть данных вывел в рут для более удобной сортировки
    "date": "str",
    "geo": "str",
    "screenshot": "base64_str",
    "browser_data": {
        "login_data": [
            {
                "login": "str",
                "password": "str",
                "url"
            },
        ],
        "cookies": [ //кукисы в формате Netscape
            {
                "domain": "str",
                "sub_domains": "boolean",
                "path": "str",
                "https_only": "boolean",
                "expires_at": "str",
                "name": "str",
                "value": "str"
            },
        ],
        "cc": [
            {
                "holder": "str",
                "type": "str",
                "number": "str",
                "expire": "str"
            },
        ],
        "autofills": [
            {
                "name": "str",
                "value": "str"
            },
        ],
    }
}
Подобный формат лога намного удобнее для автоматической обработки нежели построчные записи в стандартных лог файлах.

Немного проблем и вопросов.​

Одна из проблем сейчас это формат для приложений и крипто файлов.
Тк они зачастую довольно разные и вывести единый формат довольно сложно.
Если взять к примеру Дискорд, то тут всё просто:
"discord": ["token1", "token2"],
Массив с токенами

Со Стимом сложнее, так как мы имеем набор с десятка файлов.
Из идей можно в Json занести информацию и список файлов, а сами файлы либо закодировать в Base64, либо хранить на диске, с путями в Json файле. Набор мета инфы позволит не считывая файлы с диска делать какой либо анализ.
В плане крипты есть идеи извлекать нужные данные с файлов и хранить в Json файле:
  • Метамаск - хэш и соль для дальнейшего брута,
  • Wallet.dat - прив кеи, сиды и адреса для дальнейшего вывода либо чека баланса.
Подобная предобработка позволит упростить дальнейшую работу с файлами кошеля и сэкономит время как юзера так и кодера пишущего софт для данного случая.
[2] Но вопрос остаёться открытым и выноситься на решения нашему комьюнити)

Несколько версий стандарта​

Для различных целей могут понадобиться различные спецификации формата, на данный момент на ум приходят Три:
  1. ULF - стандартный полно-имённый формат(названия полей в полном виде, основа формата Json объекты)
  2. ULFS - simplified, имена сокращены либо полностью отсутствуют - меньше размер, но хуже читаемость.(без названий полей, основа - Json массивы), так же в дальнейшем на основе этого формата можно реализовать бинарную версию.
  3. ULFEX - extended, расширенная версия для специфичных направлений, крипто, игры и тд. (Дополнительные правила описания специфичных данных, как раз таки доп поля для крипто кошельков)
Вообщем пока такие наброски по стандарту, приглашаю Quake3 , DildoFagins ,marmalade@marmalade_knight и других заинтересованых кодеров к обсуждению:)

Програмная часть.​


В дальнейшем так же необходимы несколько софтин:
  • LogViewer - Гуй для работы с логами в этом формате
  • LogProcessor - Бэкэнд часть занимающаяся базовыми операциями по типу сортировки, поиска и тд(возможно и не нужна, можно реализовать средствами БД), а возможно прикрутить тут АПИ, дабы была возможность написания плагинов и расширений. [3]
  • LogDB - Собственно база данных, либо другой способ хранения логов, как вариант использовать MongoDB, либо другую Document based DB (плюс в том что можно все данные хранить как раз таки в Json)
PыSы0: Список утилит как и стандарт формата являеться тестовым, предназначенным для обрисовки самой идеии. Поэтому любые предложения, конструктивная критика и естественно опенсорс вклад приветствуется.

PыSы1: marmalade , по поводу твоего предложения в посте, предлагаю после утверждения первой версии нашего скромного форумного стандарта, заняться реализацией первой Утилиты, а именно
ULF_LogUnifier, которая как раз таки позволит конвертировать логи в единый стандарт.
PыSы2: Давайте вместе сделаем мир малвари качественней и системней:) (Долой БлэкТимШарперов!!!)
PS:
[n] - вопросы для обсуждения
 
Давно предлагал сделать единый фреймворк для панелек, который был бы не только для стилеров, но и ботнетов, и много чего другого. Могу поучаствовать на бэкенде.
 
Давно предлагал сделать единый фреймворк для панелек, который был бы не только для стилеров, но и ботнетов, и много чего другого. Могу поучаствовать на бэкенде.
Видимо о Вас и говорил, но темку не нашёл(
После обсуждения и релиза первой версии стандарта думаю можно будет заняться и панелькой :)
Я на роль лидерства не претендую, поэтому желающие проявить инициативу могут заняться интересующими частями, кто панелькой, кто самим стандартом.
 
Видимо о Вас и говорил, но темку не нашёл(
После обсуждения и релиза первой версии стандарта думаю можно будет заняться и панелькой :)
Я на роль лидерства не претендую, поэтому желающие проявить инициативу могут заняться интересующими частями, кто панелькой, кто самим стандартом.
Я тоже не претендую на лидерство, просто написал что могу потратить своё свободное время на нужное всем нам. Потому что я ровно так же задолбался.
 
Я тоже не претендую на лидерство, просто написал что могу потратить своё свободное время на нужное всем нам. Потому что я ровно так же задолбался.
Принял, пока народ не подтянулся думаю можно обсудить панельку детальнее.
Для начала нужно определить до какой степени фреймворк будет универсальным и абстрагированным от нужд пользователя.
К примеру если мне нужна панель для стилака, буду ли собственноручно определять Модель ДБ, или это будет скрыто в фреймворке? Нужно ли мне подстраивать отправляемые данные под формат испоользуемый в панеле?
Что на счёт протоколов? Стандартный ХТТП? Или несколько с возможностью выбора нужного на этапе настройки панельки?
Давайте обсуждать :)
 
Принял, пока народ не подтянулся думаю можно обсудить панельку детальнее.
Для начала нужно определить до какой степени фреймворк будет универсальным и абстрагированным от нужд пользователя.
К примеру если мне нужна панель для стилака, буду ли собственноручно определять Модель ДБ, или это будет скрыто в фреймворке? Нужно ли мне подстраивать отправляемые данные под формат испоользуемый в панеле?
Что на счёт протоколов? Стандартный ХТТП? Или несколько с возможностью выбора нужного на этапе настройки панельки?
Давайте обсуждать :)
Тут бы спросить сначала молваре-дивелоперов будут ли они вообще переписывать свои продукты под наши хотелки.
 
Я смотрю ты Наполеон. То что я писал о json, так это было для распарса, хранение точно не вариант. Если хочется документы, то тогда плоские без вложенности, чтобы можно было в sql перегнать без проблем. Куки отдельно, пассворды отдельно. Панель есть, могу заопенсорсить.

corax прав, если отпишутся разрабы топ-стилеров, то можно делать, иначе, это все медвежья услуга. У них свое мнение тоже имеется.
 
Я думаю что разрабам топ-стилеров оно не вперлось, наоборот им не выгодна такая унификация.
С другой стороны, будь готовая панель сегодня, возможно те, кто выйдут на рынок стилеров завтра, не будут заморачиваться своей и возьмут готовую.
 
тогда плоские без вложенности, чтобы можно было в sql перегнать без проблем.
Вот тут не согласен, ибо скьюл как раз не лучший выбор для логов, адекватно упаковать в базу не получиться как по мне. Намного нативней будет именно Документный подход, не нужно делать лишних конвертаций, можно хранить в БД и извлекаь без проблем. Тот же Монго насколько знаю позволяет писать очень приятные запросы к Джейсон документам в базе.
Сортировка, поиск, анализ всё это можно будет реализовать парой запросов в БД
хранение точно не вариант.
Вот тут хотелось бы поподробнее, почему не вариант, и чем хуже стандартного формата?
будут ли они вообще переписывать свои продукты

если отпишутся разрабы топ-стилеров, то можно делать, иначе, это все медвежья услуга.

Я думаю что разрабам топ-стилеров оно не вперлось, наоборот им не выгодна такая унификация.
Так а вот тут не согласен, сама идея стандартизации не направленна на заботу о текущих владельцев стиллеров.
Тут именно о новых идёт речь. Унификация формата, фришный фреймворк для панелей, это то что нужно будет следующим поколениям стилаков, благодаря этому они будут быстрее создаваться, и надеюсь развиваться. Наш небольшой вклад в индустрию.
То что я писал о json, так это было для распарса,
Вот тут как раз и точка соприкосноввения с текущими операторами стилаков, им не нужно ничего переписывать, реализовав парсер о котором ты говоришь можно спокойно транслировать имеющиеся логи в новый формат. При работе с парсером возникает необходимость какого-то унифицированого представления данных внутри кода, ибо спарсить то мы спарсили а дальше? Имея набор библиотек и софтин реализововать новые будет не проблема, мы просто парсим логи любого формата, и с помощью библиотеки Ульфа привоим к единому виду, затем передаём в другие обработчики.
С другой стороны, будь готовая панель сегодня, возможно те, кто выйдут на рынок стилеров завтра, не будут заморачиваться своей и возьмут готовую
Верно, но не только панель, а целый набор софта и сервисов которые будут постоянно дополняться.
К прмеру банальная потребность найти линк и получить Логин/Пасс в файл, судя по постоянным запросам на форуме единого инструмента для этого нет, есть конечно варианты но все они безсистемные. У нас же будет набор безотказных утилит настолько удобных как Юниксовые ls и grep, к примеру (не самые удобные конечно)
спросить сначала молваре-дивелоперов
Зачем спрашивать если вот он главный перед вами;)
Как минимум один стилак будет юзать Ульф))
PS: чёт великие гуру - модераторы данного раздела не спешат высказываться:(Неужели тема не интересная :oops:
 
Панель есть, могу заопенсорсить.
Было бы хорошо) Но всё равно над будет переписывать, и делать из неё фреймворк🧐
Но как основа да, надо.
 
Почему не лучший? Ничем не подкрепленные прилагательные вы пишете - "адекватно", "удобно", "стандартно", "приятные запросы", "нативно".
Вот тут не согласен, ибо скьюл как раз не лучший выбор для логов, адекватно упаковать в базу не получиться как по мне. Намного нативней будет именно Документный подход, не нужно делать лишних конвертаций, можно хранить в БД и извлекаь без проблем. Тот же Монго насколько знаю позволяет писать очень приятные запросы к Джейсон документам в базе.
Сортировка, поиск, анализ всё это можно будет реализовать парой запросов в БД
Для хобби проекта и в качестве саморазвития - пожалуйста. Но Монго - платный продукт с бесплатной комьюнити(читай урезанной) версий, чуть дальше стандартных квериков дернешься, ну например кластер - оформляйся как кастомер. Поэтому, на соло ноде, в комьюнити лицензии не идет речь о какой-либо скорости, тем более что кей-валью это тормознутая хрень изначально, зачем то же придумали bson и protobuf и это еще не предел . Ну и к тому же, эта структура жрет нереально дисковое место, больше чем любая SQL база.

Перечитайте что я написал, возможно не один раз: хотите лично с джейсоном возится и возможно освоить его получше, пожалуйста, делайте. Но думайте о других, не только о себе. И об эффективности проекта подумайте, пишите во флет, разносите в разные документы и sql подобным джоином (там такой тоже есть с недавних пор) собирайте в один документ. Спросите у Genesis, почему у них так долго думает поиск?

Удобно, это когда база небольшая и глазами хочется посмотреть БД или показать в json для админки/api. Нет такого в монге, чего не сделать в SQL, а тем более в Postgre, а скорее наоборот обстоят дела. Для таких проектов только SQL, тут нечего обсуждать. Под любой проект, тем более открытый, надо подбирать эффективную технологию из существующих, а не отталкиваться от личных предпочтений. А если у вас все-таки осталось своей правоты, то предлагаю проверить теперь на собсвтенном опыте, распарсив какую-нибудь утечку облака и прислать сюда бенчмарк.

А пилиться будет приятней, когда будут сапортеры в виде кодеров самих стилеров, ну или хотя бы в виде их пользователей, тогда проект не будет в открыве от реальных потребностей. Позовите сюда реальных пользователей, KijomBa , напишите стил-проектам в ПМ, их не один десяток, кодеров организовывать не надо, когда будет запрос.

Так то уже давно все это сделано - у топ стилеров отличные панели, сортеры уже давно все форматы распарсили и бесплатно валяются, более того, уже есть чекеры под 100 и более сайтов и это только то что на форуме можно увидеть, а в приватах еще круче решения есть, не буду тыкать пальцем.

И кстати, вы слишком высокого о себе мнения (нет, это не похоже на шутку):

Зачем спрашивать если вот он главный перед вами;)
Как минимум один стилак будет юзать Ульф))
PS: чёт великие гуру - модераторы данного раздела не спешат высказываться:(Неужели тема не интересная
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Унификация, хорошая тема. Только вот как всем договориться :cool: Мы как площадка, можем выложить документацию и апи (или на гитхабе у нас или на самом маркете), для всех по формату. Выложить исходники различные, по конвертации. Ведь мы тоже имеем импорт логов.
 
Почему не лучший? Ничем не подкрепленные прилагательные вы пишете - "адекватно", "удобно", "стандартно", "приятные запросы", "нативно".
Как то Вы слишком агресивно всё восприняли) Я не самый топовый кодер и всё что здесь писал не являеться истиной в последней инстанции, прилагательные эти просто личное впечатление)
Перечитайте что я написал, возможно не один раз: хотите лично с джейсоном возится и возможно освоить его получше, пожалуйста, делайте. Но думайте о других, не только о себе. И об эффективности проекта подумайте, пишите во флет, разносите в разные документы и sql подобным джоином (там такой тоже есть с недавних пор) собирайте в один документ. Спросите у Genesis, почему у них так долго думает поиск?
Да всё таки слишком в штыки) Я не говорю что нужен именно Джейсон и только) Судя по всему у Вас опыта многим больше, вот и прошу совета, я ж не всезнающий)
а не отталкиваться от личных предпочтений.
Тут дело не в личных предпочтениях, скорее просто банальная нехватка опыта, поэтому я и вынес эту идею на обсуждение, тк самому всё это не реализовать. И буду только рад если найдуться варианты более подходщие чем Джейсон и монго) Но просто отвергнуть идею это одно, нужно же тогда предложить что-то в замен, верно)? Более подходящую реализацию, и фрмат, так что я только за здоровые обсуждения.
Так то уже давно все это сделано - у топ стилеров отличные панели, сортеры уже давно все форматы распарсили и бесплатно валяются, более того, уже есть чекеры под 100 и более сайтов и это только то что на форуме можно увидеть, а в приватах еще круче решения есть, не буду тыкать пальцем.
В том и проблема, что софта куча, но он не унифицирован, без единой системы, конечно никто не мешает накачать 100500 софтин и ручками либо самописными скриптами всё это объеденять. Но всё же стандарт нужен как раз для того что бы избежать такого. Пока, покрайней мере в паблике не вижу сервиса и набора софта, с единым апи, для удобной обработки логов. Воспользуясь которым можно будет пилить свой софт, для специфичных задач. Возможно в краткострочной перспективе это никому даром не надо, но в дальнейшем как по мне это имеет смысл.
И кстати, вы слишком высокого о себе мнения (нет, это не похоже на шутку):
Ну что Вы, я сама скромность. Главный потому что никто из разрабов стиллеров пока не согласился использовать Ульф, а так как в дальнейшем буду пилить свой, вот и получаеться что пока я единственный кодер.
И опять таки я не пытаюсь тут доказаь что я настолько ох**нный кодер что приведу мир малвари в новую эру)
Я Джун в большей части, поэтому и прошу совета у более опытных кодеров)
Ну и вижу потенциал этой идеии своим юниорским неокрепшим взглядом.
 
Мы как площадка, можем выложить документацию и апи
Изначально думал что бы форум выступал в роле консорциума) Но и сторонние площадки тоже хорошо, да и удобнее. Ту же документацию захостить в читаемом виде а не файлом.
Ведь мы тоже имеем импорт логов.
Вот и первые реальные юзеры) Хотелось бы детальней узнать, какие требования у Вас, какие идеии? Какие потребности.
Только вот как всем договориться :cool:
Практика бизнес-стартапов говорит что надо сразу сделать хоть что то потом договариваться) Ибо без наглядной демонстрации никто не примет эту идею.
Первый шаг я сделал(вынес на обозрение), теперь необходимо обсудить стандарт и принять первую версию, затем предложить юзерам, и на основе фидбека дополнять)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот и первые реальные юзеры) Хотелось бы детальней узнать, какие требования у Вас, какие идеии? Какие потребности.
Это пока коммерческая тайна, но вкратце мы хотим упростить людям продажу логов, с автоматическим добавлением к нам их. И сразу на продажу.
Изначально думал что бы форум выступал в роле консорциума) Но и сторонние площадки тоже хорошо, да и удобнее. Ту же документацию захостить в читаемом виде а не файлом.
У нас есть гит, там можем красиво все оформить, с брендированием к примеру хсс. Это удобнее чем в постах все хранить и ссылаться на него.
 
Это пока коммерческая тайна, но вкратце мы хотим упростить людям продажу логов, с автоматическим добавлением к нам их. И сразу на продажу.
Это само собой, но хотелось бы знать именно пожелания к формату, мож есть какие-то идеии, каким формат должен быть дабы упростить внедрение в ваш софт и сервисы? Возможно при разработке идеии возникали какие-то.
У нас есть гит, там можем красиво все оформить, с брендированием к примеру хсс. Это удобнее чем в постах все хранить и ссылаться на него.
Тут всеми руками за.
Плюсую за постгрес, он умеет в жсон, бинарные данные хранить можно в блобах.
Для таких проектов только SQL, тут нечего обсуждать.
Окей, тода возникает вопрос к самому формату, имеет ли смысл паковать всё в джейсон, если в дальнейшем мы будем заливать всё в Скьюл БД?
Для начала думаю над пройnись по всем шагам где униф формат может пригодиться:
1. Сбор с клиента - тут джейсон не лучшая идея, лишний оверхед по размеру, так же вопрос с самим Джейсон обработчиком.
Если брать Натив Вин32, там встроенных функций нет, придётся использовать готовые либы или писать самому.
Думаю есть смысл создать спецификацию для бинарного формата, позволяющюю используя минимальный инструментарий упаковывать всё средствами ВинАпи.(Опять так ине последняя инстанциия, лишь мои размышления, всё к обсужению)
2. На стороне панели, тут есть пара вопросов:
- Отправка упакованных данных со стороны клиента, прием и распарс в панеле.
Тк это малварь, этап отправки должен решаться самим разработчиком ибо тут и детекты и безопасность и др.
Что касается панели, прием, декрипт данных так же ,либо остается на плечах разрабов, либо можно реализовать модульным путём, разные алгоритмы, стенография и тд
- Приняв данные от стилака, нам необходимо их поместить в БД либо на диск.
Тут необходимо решить какой формат позволит с минимальными затратами кода и ресурсов это реализовать.
Нам нужно спарсить поступающие данные, собрать статистику, и поместить на хранение.
Соответственно формат должен предосnавлять определённую информацию о логе, и удобный вид данных для непосредственного помещения их в базу.
3. Дальнейшая обработка сторонним софтом
Тут два варианта пока:
- запрос БД по апи, и дальнейшая обработка
- и чтение лога с диска (опять таки нужен формат для хранения лога на диске)
В случае с джейсоном тут просто, тем же питоном открываеться файл и на ходу преобразуеться в Пайтон обьект с которым можно работать непосредственно, то же с другими языками. озможно есть смысл сделать спецификации для каждого случая, на диске храним в одном виде, в БД суём в другом, для ручной обработки третий вид.

Пока такие наброски, опять же прошу высказывать своё мнение и идеи. Открытый стандарт в одни руки не делается)
Тут надо всем форумом решать
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Давай изначальный вариант оформи в репо? И уже от туда будем плясать, подключим людей и разработчиков. Я помогу с этим. Сделаем пару конверторов. Из формата в формат. Чтобы видеть в одном месте нагладное изменения. А так сейчас правки потеряются в листинге темы.
 
Давай изначальный вариант оформи в репо? И уже от туда будем плясать, подключим людей и разработчиков. Я помогу с этим. Сделаем пару конверторов. Из формата в формат. Чтобы видеть в одном месте нагладное изменения. А так сейчас правки потеряются в листинге темы.
Да тут согласен, сегодня завтра набросаю основу, от нее и пойдём.
На вашем Гите открытая рега? Там делать, или на гитхабе начать?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да тут согласен, сегодня завтра набросаю основу, от нее и пойдём.
На вашем Гите открытая рега? Там делать, или на гитхабе начать?
Рега открытая, почту можешь указывать любую даже выдуманную, валидация не требуется. Делай у нас. А мы всячески поможем :cool:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх