Знакомство 🤗
Привет, меня зовут Пётр, рад тебя видеть на моем канале)
Я занимаюсь разработкой примерно с 2022 года, интересуюсь системным программированием, Linux, сетями и информационной безопасностью.
Давно уже хотел начать делиться своими мыслями в сфере Application Security и наконец-то буду это делать тут!
Особенно интересны для меня темы:
- Фаззинг и статический анализ
- Отладка, символьное выполнение
- Анализ исполняемых файлов
- Нахождение уязвимостей
- Написание Proof-Of-Concept
- Оценка критичности уязвимостей
Такой опыт для меня новый и самому пока не ясно как у меня всё это будет получаться)
Подписывайся и будем проходить этот путь вместе☺️
Привет, меня зовут Пётр, рад тебя видеть на моем канале)
Я занимаюсь разработкой примерно с 2022 года, интересуюсь системным программированием, Linux, сетями и информационной безопасностью.
Давно уже хотел начать делиться своими мыслями в сфере Application Security и наконец-то буду это делать тут!
Особенно интересны для меня темы:
- Фаззинг и статический анализ
- Отладка, символьное выполнение
- Анализ исполняемых файлов
- Нахождение уязвимостей
- Написание Proof-Of-Concept
- Оценка критичности уязвимостей
Такой опыт для меня новый и самому пока не ясно как у меня всё это будет получаться)
Подписывайся и будем проходить этот путь вместе
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝3
Звезды Telegram⭐️
Появилась возможность доната звёзд в телеграм в каналах, авторы контента могут выводить 100% звезд в крипте TON, то есть работает как p2p пересылка
Вывести накопленные в канале звезды можно через 21 день, от 1000⭐️ через сервис Fragment.com
Надо бы уже завести свой кошелёк ton в miniApp @wallet
Хочу потом проверить как выводятся звезды и как работает эта система в ботах и мини приложениях, позже поделюсь обзором
#tlg
Появилась возможность доната звёзд в телеграм в каналах, авторы контента могут выводить 100% звезд в крипте TON, то есть работает как p2p пересылка
Вывести накопленные в канале звезды можно через 21 день, от 1000
Хочу потом проверить как выводятся звезды и как работает эта система в ботах и мини приложениях, позже поделюсь обзором
#tlg
Please open Telegram to view this post
VIEW IN TELEGRAM
16❤🔥2🔥2🕊1
Удаление русских разработчиков из ядра Linux (open-source)
Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, внёс изменение в список мэйнейнеров ядра Linux, в результате которого были удалены 11 разработчиков, предположительно работающих в РОССИЙСКИХ компаниях. В качестве причины удаления упомянуто лишь "выполнение различных требований комплаенса". Так же отмечено, что разработчики могут быть возвращены в список мэйнтейнеров в случае предоставления определённой документации.
Сказать что для меня это было неожиданно?) Это скорее тупой и некрасивый поступок, удалили просто список разработчиков, принимавших участие в разработке ядра Linux, хотя код который они написали оставлен.
И это пишет разработчик, человек, привыкший к точным формулировкам и требующий их от всех остальных. Сказано как будто на языке российских политиков.
какой нахрен документации?
нарушение каких требований?
что за самодурство такое?
Сюр ещё в том, что многие вещи, которые изначально принципиально создавались в
(USDT или Tether к примеру ) по сути подчиняются санкциям и не децентрализованы.
Думаю если политика будет влиять на ядро Linux, ничего хорошего из этого не выйдет, нельзя нарушать сами принципы☺️
Подробнее почитать можно тут:
https://www.opennet.ru/opennews/art.shtml?num=62090
Оригинальный коммит:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e90b675cf942e50c70e8394dfb5862975c3b3b2
#Linux #kernel
Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, внёс изменение в список мэйнейнеров ядра Linux, в результате которого были удалены 11 разработчиков, предположительно работающих в РОССИЙСКИХ компаниях. В качестве причины удаления упомянуто лишь "выполнение различных требований комплаенса". Так же отмечено, что разработчики могут быть возвращены в список мэйнтейнеров в случае предоставления определённой документации.
Сказать что для меня это было неожиданно?) Это скорее тупой и некрасивый поступок, удалили просто список разработчиков, принимавших участие в разработке ядра Linux, хотя код который они написали оставлен.
"выполнение различных требований комплаенса"
И это пишет разработчик, человек, привыкший к точным формулировкам и требующий их от всех остальных. Сказано как будто на языке российских политиков.
нарушение каких требований?
что за самодурство такое?
Сюр ещё в том, что многие вещи, которые изначально принципиально создавались в
open-source "свободными", типо ядра Linux, многих блокченов(
Думаю если политика будет влиять на ядро Linux, ничего хорошего из этого не выйдет, нельзя нарушать сами принципы
open-source, иначе он перестанет быть open Подробнее почитать можно тут:
https://www.opennet.ru/opennews/art.shtml?num=62090
Оригинальный коммит:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e90b675cf942e50c70e8394dfb5862975c3b3b2
#Linux #kernel
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3❤2❤🔥1😱1
Статические библиотеки
По сути файл libgraphene_chain.a это просто архив объектных файлов some_file.o
Посмотреть список объектных файлов внутри:
Компоновка с ней если она в каталоге:
Если библиотека находится по стандартному пути -
Вообще, компоновка выполняется утилитой
#fuzz #bin #make
static library - обычно используются как цель для сборки разных функций в один файл, они обычно выборочно или полностью входят в состав исполняемых файлов при компоновке, увеличивают их размер
По сути файл libgraphene_chain.a это просто архив объектных файлов some_file.o
Посмотреть список объектных файлов внутри:
ar -t libgraphene_chain.a
Компоновка с ней если она в каталоге:
cc main.o libgraphene_chain.a
Если библиотека находится по стандартному пути -
/usr/local/lib:cc main.o -lgraphene_chain
Вообще, компоновка выполняется утилитой
ld, но обычно компоновщик вызывается в конце процесса сборки самим компилятором, поэтому вместо вызова компоновщика, мы можем вызвать компилятор cc и он сам разберётся что нужно сделать)#fuzz #bin #make
🔥2❤🔥1❤1
Разработка на ассемблере
Fasm - freeware flat ассемблер, работает под Linux
Компиляция в объектный файл:
Компоновка в исполняемый файл:
Просмотр адресов секций ELF:
Удаление символьной информации из ELF:
Общая информация об ELF
HEX дамп ELF файла:
От каких динамических библиотек зависит ELF:
Дизассемблирование (вся инфа об ELF):
#asm #make
Fasm - freeware flat ассемблер, работает под Linux
Компиляция в объектный файл:
fasm main.asm
Компоновка в исполняемый файл:
ld main.o -o main
Просмотр адресов секций ELF:
nm main
Удаление символьной информации из ELF:
strip main
Общая информация об ELF
readelf -a main
HEX дамп ELF файла:
hexdump main
От каких динамических библиотек зависит ELF:
ldd main
Дизассемблирование (вся инфа об ELF):
objdump -Df main
#asm #make
❤🔥1🔥1👀1
Forwarded from Unauth Papaya (Vadim Belous)
Реверс-инжиниринг Docker образа 🧐
Если вы утеряли исходный Dockerfile для образа, который используете, или хотите глубже понять, как происходит сборка образов под капотом, у меня есть для вас несколько полезных утилит. Эти инструменты помогут вам восстановить исходный Dockerfile и расширить ваши знания о процессе создания образов
Прозаично, что эти утилиты также поставляются в формате Docker образов. Собственно, перейдём к практической части. Выполните любую из команд, приведённых ниже, чтобы восстановить Dockerfile:
Где
После выполнения команды вы получите листинг с примерным содержимым Dockerfile'а. Эти три утилиты (dockerfile-from-image, dfimage, dedockify) практически идентичны относительно функционала. Единственное отличие в том, что первая написана на Ruby, а вторые две на Python. Под капотом они анализируют слои, которые образовались в ходе сборки образа. Каждая инструкция в Dockerfile создаёт новый слой в конечном артефакте (не все инструкции создают новый слой)
Для пущей автоматизации можно сделать alias, например:
И потом при надобности:
Также обратите внимание на утилиту dive, с помощью которой вы можете полазить по содержимому слоёв внутри Docker образа. Запуск этого инструмента возможен как в формате контейнера, так и в формате статического бинарного файла. Утилита подойдёт для того, чтобы посмотреть ФС образа на каждом этапе сборки. Этот функционал отлично подходит для отладки неполадок
Например
Если вы захотите применить инструмент в конвейере, то используйте следующую конструкцию:
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #bash #trick #shell #devops #docker #ci #dedockify #reverse
Если вы утеряли исходный Dockerfile для образа, который используете, или хотите глубже понять, как происходит сборка образов под капотом, у меня есть для вас несколько полезных утилит. Эти инструменты помогут вам восстановить исходный Dockerfile и расширить ваши знания о процессе создания образов
Прозаично, что эти утилиты также поставляются в формате Docker образов. Собственно, перейдём к практической части. Выполните любую из команд, приведённых ниже, чтобы восстановить Dockerfile:
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm dduvnjak/dockerfile-from-image $IMAGE_ID
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm laniksj/dfimage $IMAGE_ID
sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify $IMAGE_ID
Где
$IMAGE_ID - это ID вашего образа, Dockerfile которого вы хотите восстановитьПосле выполнения команды вы получите листинг с примерным содержимым Dockerfile'а. Эти три утилиты (dockerfile-from-image, dfimage, dedockify) практически идентичны относительно функционала. Единственное отличие в том, что первая написана на Ruby, а вторые две на Python. Под капотом они анализируют слои, которые образовались в ходе сборки образа. Каждая инструкция в Dockerfile создаёт новый слой в конечном артефакте (не все инструкции создают новый слой)
Для пущей автоматизации можно сделать alias, например:
alias dedockify="sudo docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify"
И потом при надобности:
dedockify $IMAGE_NAME
Также обратите внимание на утилиту dive, с помощью которой вы можете полазить по содержимому слоёв внутри Docker образа. Запуск этого инструмента возможен как в формате контейнера, так и в формате статического бинарного файла. Утилита подойдёт для того, чтобы посмотреть ФС образа на каждом этапе сборки. Этот функционал отлично подходит для отладки неполадок
alias dive="sudo docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
Например
dive nginx:latest
Если вы захотите применить инструмент в конвейере, то используйте следующую конструкцию:
CI=true dive $IMAGE
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #bash #trick #shell #devops #docker #ci #dedockify #reverse
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1🔥1
Forwarded from Unauth Papaya
Конвертация контейнера в виртуальную машину 😮
Нередко на технических собеседованиях на позицию DevOps-инженера задают каверзный вопрос: «В чем отличие контейнера от виртуальной машины?». Большинство кандидатов теряются при ответе на этот вопрос, а некоторые интервьюеры и сами до конца не понимают, какой ответ они хотят услышать от собеседуемого. Чтобы наглядно понять различия и никогда не возвращаться к этому вопросу, я покажу, как превратить контейнер в виртуальную машину и запустить ее в облаке Timeweb Cloud.
Ссылка на статью
Disclaimer: Автор канала не несёт ответственность за неправомерные действия, совершенные на основе изложенного в канале контента
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #linux #docker #timeweb #announcement #security #cloud #cont2virt #trick
Нередко на технических собеседованиях на позицию DevOps-инженера задают каверзный вопрос: «В чем отличие контейнера от виртуальной машины?». Большинство кандидатов теряются при ответе на этот вопрос, а некоторые интервьюеры и сами до конца не понимают, какой ответ они хотят услышать от собеседуемого. Чтобы наглядно понять различия и никогда не возвращаться к этому вопросу, я покажу, как превратить контейнер в виртуальную машину и запустить ее в облаке Timeweb Cloud.
Ссылка на статью
Disclaimer: Автор канала не несёт ответственность за неправомерные действия, совершенные на основе изложенного в канале контента
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #linux #docker #timeweb #announcement #security #cloud #cont2virt #trick
Please open Telegram to view this post
VIEW IN TELEGRAM
Timeweb Cloud
Конвертация контейнера в виртуальную машину
Конвертация контейнера в виртуальную машину. Блог Timeweb Cloud: дайджесты, новости компании, IT и облачные тренды.
❤🔥1🔥1
Forwarded from Unauth Papaya (Vadim Belous)
Скрипт для поиска эндпоинтов сайта в HTML коде 🤓
Зайдите в DevTools и выполните в консоли следующий JavaScript код
Disclaimer: Автор канала не несёт ответственность за неправомерные действия, совершенные на основе изложенного в канале контента
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #web #pentest #trick #js
Зайдите в DevTools и выполните в консоли следующий JavaScript код
javanoscript:(function(){var noscripts=document.getElementsByTagName("noscript"),regex=/(?<=(\"|\'|\`))\/[a-zA-Z0-9_?&=\/\-\#\.]*(?=(\"|\'|\`))/g;const results=new Set;for(var i=0;i<noscripts.length;i++){var t=noscripts[i].src;""!=t&&fetch(t).then(function(t){return t.text()}).then(function(t){var e=t.matchAll(regex);for(let r of e)results.add(r[0])}).catch(function(t){console.log("An error occurred: ",t)})}var pageContent=document.documentElement.outerHTML,matches=pageContent.matchAll(regex);for(const match of matches)results.add(match[0]);function writeResults(){results.forEach(function(t){document.write(t+"<br>")})}setTimeout(writeResults,3e3);})();Disclaimer: Автор канала не несёт ответственность за неправомерные действия, совершенные на основе изложенного в канале контента
Канал: @unauth_papaya
Автор: Вадим Белоус
Хэштеги: #web #pentest #trick #js
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥1❤1🔥1
Видео с ТБ Форума 2025
11-13 февраля прошла интересная встреча, даже надо сказать знаковое событие в сфере кибербеза. Тут лишь некоторые из затронутых тем:
- планы регуляторов в сфере информационной безопасности на 2025 год
- насущные вопросы сертификации средств, аттестации информационных систем, разработки безопасного ПО и СЗИ
- успехи отечественных вендоров во внедрении процессов РБПО
- обзор киберпреступлений и угроз за последнее время
- опыт применения современных средств и методов выявления узявимостей в ПО
Лично меня порадовало большое участие ИСП РАН и ФСТЭК России в этой конференции, радует что регулятор контролирует и направляет процессы РБПО, создаёт всё для этого, вплоть до рекумендуемых инструментов выявления уязвимостей и недекларированных возможностей.
Первый день:
https://vk.com/video-227780688_456240676
https://vk.com/video-227780688_456240670
Второй день:
https://vk.com/video-227780688_456240674
Третий день:
https://vk.com/video-227780688_456240679
#sec #тбфорум
11-13 февраля прошла интересная встреча, даже надо сказать знаковое событие в сфере кибербеза. Тут лишь некоторые из затронутых тем:
- планы регуляторов в сфере информационной безопасности на 2025 год
- насущные вопросы сертификации средств, аттестации информационных систем, разработки безопасного ПО и СЗИ
- успехи отечественных вендоров во внедрении процессов РБПО
- обзор киберпреступлений и угроз за последнее время
- опыт применения современных средств и методов выявления узявимостей в ПО
Лично меня порадовало большое участие ИСП РАН и ФСТЭК России в этой конференции, радует что регулятор контролирует и направляет процессы РБПО, создаёт всё для этого, вплоть до рекумендуемых инструментов выявления уязвимостей и недекларированных возможностей.
Первый день:
https://vk.com/video-227780688_456240676
https://vk.com/video-227780688_456240670
Второй день:
https://vk.com/video-227780688_456240674
Третий день:
https://vk.com/video-227780688_456240679
#sec #тбфорум
❤🔥1👍1😁1
Integer Overflow в syslog-ng 👩💻
Фаззил, значит, я однажды syslog-ng фаззером AFL++ и нашёл такой краш:
Далее начал разбираться,выяснилось, что я не первый наткнулся на этот баг, ему уже было около 4-х лет 😲
Пересобрал бинари компилятором gcc с отладочной информацией, без оптимизации, без санитайзеров и пошёл дебажить)
Под отладчиком gdb давай запускать эту врезку с файлом, вызвавшим падение (благо был backtrace). Поставил в нужных местах точки останова, но падения не произошло, зато CF флаг процессора говорил о переполнении целого.
В итоге: при чтении своего конфига syslog-ng итерпретирует строку вида:
И, не находя закрывающую > , пишет это огромное число в переменную int, это и вызывает SIGILL в итоге.
Закрыл баг, использовав
Так, я впервые пофиксил баг в upstream, было интересно☺️
Ссылка на pull request:
https://github.com/syslog-ng/syslog-ng/pull/5254
#fuzz
Фаззил, значит, я однажды syslog-ng фаззером AFL++ и нашёл такой краш:
* thread #2, name = 'syslog-ng', stop reason = signal SIGILL: illegal instruction operandИсполняемый файл собирал компилятором afl-clang-lto с санитайзерами ASAN и UBSAN. Врезки под фаззинг запускались в persistent-mode в несколько инстансов параллельно с разными стратегиями мутации (explore, coe, mmopt,...). Сам фаззинг как обычно длился около суток, с более 1 млн запусков в каждом инстансе.
Далее начал разбираться,
Пересобрал бинари компилятором gcc с отладочной информацией, без оптимизации, без санитайзеров и пошёл дебажить)
Под отладчиком gdb давай запускать эту врезку с файлом, вызвавшим падение (благо был backtrace). Поставил в нужных местах точки останова, но падения не произошло, зато CF флаг процессора говорил о переполнении целого.
В итоге: при чтении своего конфига syslog-ng итерпретирует строку вида:
<4444444444444444444<4\xbe\xbe\xbe\xbe\xbe\xbe\xbe\xbe\xbe
И, не находя закрывающую > , пишет это огромное число в переменную int, это и вызывает SIGILL в итоге.
Закрыл баг, использовав
__buildin_add_overflow() макросы, на мой взгляд это лучшее решение (если есть мысли как сделать лучше, прошу подсказать)Так, я впервые пофиксил баг в upstream, было интересно
Ссылка на pull request:
https://github.com/syslog-ng/syslog-ng/pull/5254
#fuzz
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
syslog-format: Fix integer overflow on set pri by petrvaganoff · Pull Request #5254 · syslog-ng/syslog-ng
A bug found by fuzzing with AFL++
Backtrace:
* thread #2, name = 'syslog-ng', stop reason = signal SIGILL: illegal instruction operand
* frame #0: 0x00007ffff3f1b923 libsyslogform...
Backtrace:
* thread #2, name = 'syslog-ng', stop reason = signal SIGILL: illegal instruction operand
* frame #0: 0x00007ffff3f1b923 libsyslogform...
❤🔥1🔥1
ТОП Российских ИБ-каналов
@CyberSachok, @package_security и команда подготовили обновленный ТОП Российских ИБ-каналов
@CyberSachok, @package_security и команда подготовили обновленный ТОП Российских ИБ-каналов
Telegram
Sachok
Топ-108 телеграм-каналов в ИБ
Сделали с каналом «Пакет Безопасности» второй рейтинг лучших Telegram-каналов в ИБ-отрасли, расширив выборку и добавив новые категории.
Выбирать лучшие каналы нам помогали ИБ-специалисты, PR-специалисты, маркетологи и журналисты…
Сделали с каналом «Пакет Безопасности» второй рейтинг лучших Telegram-каналов в ИБ-отрасли, расширив выборку и добавив новые категории.
Выбирать лучшие каналы нам помогали ИБ-специалисты, PR-специалисты, маркетологи и журналисты…
👍2🔥1
__attribute__ в языках С и С++Недавно изучил интересную возможность языка С - атрибуты функций и переменных. К примеру, с помощью атрибутов можно написать код, который выполнится до и после функции
main (#include <stdio.h>
__attribute__ ((constructor)) void before() {
printf("%s\n", "before");
}
__attribute__ ((destructor)) void after() {
printf("%s\n", "after");
}
int main()
{
printf("%s\n", "inside main");
return 0;
}
После запуска этого кода stdout будет таким:
before
inside main
after
__attribute__ были введены в GCC начиная с версии 2.0 , выпущенной в 1992 году как часть расширений, позже вошли в стандарт. Они предоставляют разработчикам гибкость при работе с компилятором, особенно в контексте низкоуровневого программирования, оптимизации и взаимодействия с аппаратным обеспечением.Атрибуты позволяют:
- Указывать особенности функций, например, что функция является "чистой" (
pure) или "константной" (const), чтобы компилятор мог применять оптимизации.- Контролировать выравнивание данных в памяти
int x __attribute__ ((aligned (16))) = 0;- Управлять порядком инициализации глобальных переменных.
- Запрещать вызов attributeнкций
__attribute__((deprecated))- Объявляattributeволы
__attribute__((weak)), которые могут быть переопределены сильными.// Эта функция никогда не возвращает управление
void __attribute__((noreturn)) exit_function() {
while (1);
}
Начиная с C++11 атрибуты так же поддерживаются в плюсах, как часть официального стандарта, до этого при использовании атрибутов компилятор
g++ вызывал gcc чтобы скомпилировать объектные файлы с атрибутами.С момента введения атрибутов в стандарте языка C++, появился новый синтаксис, атрибуты стали записываться через
[[attribute]]. Поэтому сейчас существует разница в синтаксисе:// В стиле GCC
void __attribute__((noreturn)) terminate();
// В стиле C++
[[noreturn]] void terminate();
#cpp
👍2🔥1