В первой статье этого цикла мы разберем РЕ-файлы — сердце любого Windows-приложения.
Начнем с основ PE и постепенно перейдем к более сложным аспектам, включая анализ вредоносного ПО.
Например, Microsoft говорит, что максимум 96 секций в файле. Но что, если это не так? Заголовок указывает на поле размером word = 65.536. И так далее...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍9❤3👏2💯2
Приятного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍9💯4❤2🤩1
Если в первой части мы говорили о заголовках, то теперь настало время заглянуть внутрь самого бинарника и разобраться с его составляющими.
Разберёмся, что такое секции и страницы, и как они взаимодействуют. Оказывается, компиляторы определяют размер секции как 512 байт, а размер страницы в виртуальной памяти ОС – 4 КБ. Такая двойственность создаёт сложности для системного загрузчика, но об этом – подробнее в статье.
Ограничение на количество секций? В спецификации PECOFF об этом ничего не сказано, но есть мнение, что на NT4 был лимит в 96 секций. Мы проверим это на практике, создав приложение с максимально возможным количеством секций. Используя макросы ассемблера FASM, мы создадим до 55 000 секций и посмотрим, как на это реагируют различные инструменты и отладчики.
Мы также рассмотрим интересный приём – проецирование одной секции сразу на несколько виртуальных страниц. Этот трюк когда-то ставил в тупик большинство дизассемблеров, но со временем они научились с этим справляться. Тем не менее, возможность такая есть, и мы её подробно разберём.
Мы создадим нуль-пространственный туннель между двумя страницами, когда изменения в одной странице будут мгновенно отображаться на другой. Это можно использовать для сокрытия критически важных блоков кода, например, процедур проверки контрольных сумм или паролей.
Для демонстрации мы напишем простой код проверки пароля и изменим Raw-адрес секции, чтобы проверить, как системный загрузчик справится с проецированием. Мы увидим, что изменения в одной странице отображаются в другой, подтверждая теорию.
К теме импорта мы вернёмся в следующей части. Импорт в PE-файлах – это сложная и запутанная тема, требующая отдельного внимания. Не пропустите!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7❤5 3👏1
Привет, Кодебай! 😎
Сегодня расскажем про yay👩💻 👩💻
yay - утилита, которая загружает исходный код программ с AUR сразу из терминала. Она полезна, если нужного приложения нет в официальных репозиториях. (Например, YandexBrowser)
👩💻 Как установить:
‼️ Что делать, если возникла ошибка?
Использование:
#инструменты #гайды
Сегодня расскажем про yay
yay - утилита, которая загружает исходный код программ с AUR сразу из терминала. Она полезна, если нужного приложения нет в официальных репозиториях. (Например, YandexBrowser)
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -sri
‼️ Что делать, если возникла ошибка?
sudo pacman -Sy fakeroot base-devel
Использование:
yay [НАЗВАНИЕ ПАКЕТА]
#Вам будет предложен список из доступных программ, выбирайте необходимую и дождитесь установки
#инструменты #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤8🔥7🤔4❤🔥1
Самыми популярными методами атаки оказались:
Эфириум занял лидирующую позицию с 222 инцидентами и убытками в размере 315 млн долларов США. А Биткоин, хоть и был атакован всего один раз, но это стоило ему 304 млн долларов США.
В общем, 2024 год начался с серьезного удара по кибербезопасности в сфере Web3. Но что нас ждет дальше?
Что думаете о текущем состоянии кибербезопасности в сфере Web3? Какие меры защиты вы считаете наиболее эффективными?
#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍4❤3❤🔥1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
🚩 Новые задания на платформе Codeby Games!
⚙️ Категория Реверс-инжиниринг — Ржавый ARM
🕵️ Категория Форензика — Осторожнее с доверием
🌍 Категория Веб — Crawler
Приятного хакинга!
🕵️ Категория Форензика — Осторожнее с доверием
Приятного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍6🎉4 3🥰2
Новый курс от Академии Кодебай! 😎
🔸 Старт курса 22 июля.
⌨️ Узнать подробнее
Друзья, всех приветствую! Меня зовут Денис Соколов, и я старший архитектор по информационной безопасности и автор курса «Профессия Пентестер».
Как понятно из названия, это комплексное обучение по тестированию на проникновение, в ходе которого вы поработаете в лабораториях, получите практические навыки в сфере этичного хакинга, разберетесь, что такое Kill Chain, научитесь проводить внутреннее и внешнее тестирование на проникновение.
Если хотите сделать свой шаг в сфере наступательной кибербезопасности и BugBounty — буду ждать Вас на своем курсе!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥11 7❤4👎2
В третьей части цикла статей про PE-файлы мы поговорим об импорте в PE-файлах. Узнаем, как правильно искать уязвимости и что стоит учитывать при анализе.
❓ Помните ли вы времена, когда Win95 только вышла, и все работало на процессорах i386 с тактовой частотой около 40 МГц? Разработчики PE-формата тогда придумали три способа, как справиться с импортом API из системных dll:
1. Статический импорт "Bound": Компилятор прописывает имена библиотек и адреса API в программу. Это экономит время на загрузку, но может привести к краху приложения, если версии библиотек изменятся.
2. Динамический импорт: Универсальный подход, где адреса функций вычисляются загрузчиком после загрузки программы в память. Да, это медленно, но зато надёжно.
3. Отложенный импорт "Delay": Загружаем функции только тогда, когда они реально нужны. Это сокращает время первоначальной загрузки, но может замедлить выполнение программы.
🕯 Структура и иерархия импорта
Система импорта в PE-файлах - это настоящая иерархия. Начало этой иерархии лежит в каталоге
🗓 Основная таблица "Image Import Table"
Каталог начинается с нуля, а сам каталог является частью опционального заголовка. Здесь содержится массив дескрипторов, каждый из которых описывает импорт из одной dll. Поле
📎 Статический импорт и его тонкости
Старый добрый статический импорт использует поле
💡 РЕ32+ без импорта
Заглянем в схемы импорта «Bound» и узнаем, как можно создавать приложения без секции импорта вообще. Представьте, никакого импорта — чистый хардкор!🥇
Это возможно благодаря тому, что ОС проецирует Kernel32 и Ntdll.dll во все пользовательские процессы. Главная задача - найти базу Kernel32, пробраться к её экспорту и вытащить оттуда адреса всех необходимых API.
➡️ Читать подробнее
1. Статический импорт "Bound": Компилятор прописывает имена библиотек и адреса API в программу. Это экономит время на загрузку, но может привести к краху приложения, если версии библиотек изменятся.
2. Динамический импорт: Универсальный подход, где адреса функций вычисляются загрузчиком после загрузки программы в память. Да, это медленно, но зато надёжно.
3. Отложенный импорт "Delay": Загружаем функции только тогда, когда они реально нужны. Это сокращает время первоначальной загрузки, но может замедлить выполнение программы.
Система импорта в PE-файлах - это настоящая иерархия. Начало этой иерархии лежит в каталоге
DATA_DIRECTORY
. В центре внимания всегда находится таблица адресов IMPORT_ADDRESS_TABLE
(IAT), независимо от выбранной схемы импорта. Интересный момент: поле TimeDataStamp
играет важную роль в процессе импорта.Каталог начинается с нуля, а сам каталог является частью опционального заголовка. Здесь содержится массив дескрипторов, каждый из которых описывает импорт из одной dll. Поле
OriginalFirstThunk
указывает на начало IMPORT_LOOKUP_TABLE
, где лежат 32-битные значения для каждой функции API. Интересный момент: если старший бит взведён, то это ординал (номер) функции в экспорте dll, иначе это RVA-адрес записи с именем функции.Старый добрый статический импорт использует поле
TimeDataStamp
для проверки валидности связывания. Если всё хорошо, загрузчик продолжает работу, если нет - переходит к динамическому импорту. В более новой схеме Bound
, информация о связывании хранится в таблице, на которую указывает запись каталога Bound
. Важно отметить, что поле TimeStamp
в дескрипторе импорта указывает на тип связывания: 0 - динамический импорт, -1 - новая схема Bound
, и все остальные значения - старая схема.Заглянем в схемы импорта «Bound» и узнаем, как можно создавать приложения без секции импорта вообще. Представьте, никакого импорта — чистый хардкор!
Это возможно благодаря тому, что ОС проецирует Kernel32 и Ntdll.dll во все пользовательские процессы. Главная задача - найти базу Kernel32, пробраться к её экспорту и вытащить оттуда адреса всех необходимых API.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13 10👍7❤3
Что такое SSTI(Server-side template injection)?
👩💻 Уязвимость, которая возникает, когда злоумышленник может внедрить вредоносный код в шаблон, который выполняется на сервере. Давайте рассмотрим пример, демонстрирующий уязвимый фрагмент кода с использованием Jinja:
‼️ В этом уязвимом коде параметр имени из запроса пользователя напрямую передается в шаблон с помощью функции "рендеринга". Потенциально это может позволить злоумышленнику внедрить вредоносный код в параметр имени, что приведет к внедрению шаблона на стороне сервера.
👩💻 Payload {{плохой код}} вводится в параметр имени.
Пример payload'а:
Вывод:
output = template.render(name=request.args.get('name'))
Пример payload'а:
https://codeby.ex/?user={{7*7}}
Вывод:
49
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤9🔥5
Подготовьтесь к тому, что безопасность никогда не будет статичной, и всегда будут новые вызовы и возможности для исследования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍7🔥5 4💯1
🚩 Новые задания на платформе Codeby Games!
🔑 Категория Криптография — Слово за слово и Холмы
🕵️ Категория Форензика — Гул Земли 2
🏆 Категория Квесты — Возрождение
Приятного хакинга!
🕵️ Категория Форензика — Гул Земли 2
Приятного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8 7❤2🤩1
Трюки с таблицей импорта РЕ-файла 🖱
Сегодня мы разберем техники манипуляций с таблицей импорта в PE-файлах. Эта статья для тех, кто хочет на практике понять, как работают исполняемые файлы и как можно использовать это знание для защиты своего кода от анализа.🛡
✔️ Общее положение дел с импортом: Изучим основы анализа исполняемых файлов, особенно в контексте импорта API из системных DLL. Посмотрим, как различные инструменты и процессы взаимодействуют с файлами на диске и в памяти, и как это влияет на анализ.
✔️ Импорт API по ординалу: Разберемся, как использовать порядковые номера (ординалы) для импорта функций, что позволяет скрыть использованные функции от инструментов анализа. Узнаем, как это работает и какие ловушки ждут нас на этом пути.
✔️ Ошибки в реализации дескрипторов импорта: Исследуем возможности манипуляции с таблицей импорта, включая удаление и замену записей, чтобы сделать анализ файла еще более сложным для инструментов анализа.
📌 Читать подробнее
#pe_file #ordinal #iat
Сегодня мы разберем техники манипуляций с таблицей импорта в PE-файлах. Эта статья для тех, кто хочет на практике понять, как работают исполняемые файлы и как можно использовать это знание для защиты своего кода от анализа.
#pe_file #ordinal #iat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16 8🔥5
Что такое LFI/RFI(Включение локального файла/Удаленное включение файла)?
🔴 Удаленное включение файла: файл загружается с удаленного сервера
🔴 Включение локального файла: сервер загружает локальный файл
Уязвимость возникает, когда пользователь может каким-либо образом контролировать файл, который будет загружен сервером.
‼️ Уязвимые функции PHP:
Пример payload'a:
*👩💻 Полный список Payload'ов есть в /usr/share/wordlists/... (Kali linux)
Вывод:
Уязвимость возникает, когда пользователь может каким-либо образом контролировать файл, который будет загружен сервером.
require, require_once, include, include_once.
Пример payload'a:
https://codeby.ex/?data=../../../../etc/passwd
*
Вывод:
Содержимое файла passwd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15 6❤🔥2❤2🔥1
Курс "Профессия Пентестер" стартует 22 июля!
- Научитесь атаковать сети, WEB-сайты, операционные системы и локальные устройства и проводить внутренний и внешний пентест
- Участвуйте в BugBounty программах или постройте карьеру в сфере информационной безопасности
Полный цикл обучения:
- от освоения Kali Linux и администрирования, до написания эксплойтов и шелл-кода, обхода антивирусных решений
- от сетевой разведки до эксплуатации уязвимостей, повышения привилегий и закрепления в сети
Хотите стать пентестером? Присоединяйтесь к нам – защищайте мир от угроз, находя уязвимости и предотвращая кибератаки!
Пишите нам @Codeby_Academy или Узнайте подробнее о курсе
- Научитесь атаковать сети, WEB-сайты, операционные системы и локальные устройства и проводить внутренний и внешний пентест
- Участвуйте в BugBounty программах или постройте карьеру в сфере информационной безопасности
Полный цикл обучения:
- от освоения Kali Linux и администрирования, до написания эксплойтов и шелл-кода, обхода антивирусных решений
- от сетевой разведки до эксплуатации уязвимостей, повышения привилегий и закрепления в сети
Хотите стать пентестером? Присоединяйтесь к нам – защищайте мир от угроз, находя уязвимости и предотвращая кибератаки!
Пишите нам @Codeby_Academy или Узнайте подробнее о курсе
👍17 10🔥8❤5😁1
В новой статье найдем подход к обработке больших объемов данных в .csv файлах с различной структурой столбцов и содержимым. Это может быть особенно полезно для тех, кто сталкивается с необходимостью нормализации данных перед их дальнейшим анализом или использованием в проектах.
❓ Задача:
Для этого используем комбинацию предварительной обработки файлов с помощью EmEditor и написания скрипта на Python для дальнейшей нормализации данных.
✔️ Обработка текста Ф.И.О.
Для нормализации данных в столбцах с Ф.И.О. можно использовать функции Python для работы со строками. Например, можно написать функцию, которая удаляет лишние символы, заменяет латинские буквы на русские (если это необходимо), и нормализует формат Ф.И.О., удаляя лишние пробелы и тире.
✔️ Нормализация номера телефона
Для приведения номеров телефонов к единому виду можно использовать регулярные выражения или специальные функции Python. Например, можно удалить все нецифровые символы и добавить префикс, если он отсутствует.
✔️ Нормализация адреса электронной почты
Адреса электронной почты также могут требовать нормализации. Это может включать в себя удаление лишних символов, проверку наличия символа "@", а также доменной части адреса.
✔️ Нормализация даты рождения
Дата рождения может быть представлена в различных форматах. Для ее нормализации можно использовать модули Python для работы с датами и временем, такие как
🖥 Например:
➡️ Читать подробнее
Обработать несколько .csv файлов и нормализовать содержимое столбцов таким образом, чтобы данные были одного формата. Например, привести номер телефона из формата "8 (908) 800 80 80" к виду "79088008080".
Для этого используем комбинацию предварительной обработки файлов с помощью EmEditor и написания скрипта на Python для дальнейшей нормализации данных.
Для нормализации данных в столбцах с Ф.И.О. можно использовать функции Python для работы со строками. Например, можно написать функцию, которая удаляет лишние символы, заменяет латинские буквы на русские (если это необходимо), и нормализует формат Ф.И.О., удаляя лишние пробелы и тире.
Для приведения номеров телефонов к единому виду можно использовать регулярные выражения или специальные функции Python. Например, можно удалить все нецифровые символы и добавить префикс, если он отсутствует.
Адреса электронной почты также могут требовать нормализации. Это может включать в себя удаление лишних символов, проверку наличия символа "@", а также доменной части адреса.
Дата рождения может быть представлена в различных форматах. Для ее нормализации можно использовать модули Python для работы с датами и временем, такие как
datetime
. Это позволит привести даты к единому формату.import re
import string
def fio_normalize(fio: str) -> str:
"""Нормализация ФИО. Проверка, является или ФИО написанным латиницей. Удаление цифр, тире."""
fio = fio.strip().lower()
fio = re.sub(r'[^a-zа-я-ё ]', "", fio).strip()
fio = dash_clear(fio)
if is_latin(fio):
fio = fio.title()
else:
fio = "".join([replacer(x) if x in string.ascii_letters else x for x in fio])
fio = re.sub(r'[^а-я-ё ]', '', fio).title()
return fio if fio.strip() else ""
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5❤2💯2
🚩 Новые задания на платформе Codeby Games!
🖼 Категория Стеганография — Плотная маскировка
🧰 Категория PWN — Вопрос
🌍 Категория Веб — Игровой автомат
Приятного хакинга!
Приятного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍7❤🔥6🎉2
Освойте методы атаки и защиты на курсе SQL Injection Master! Аналогов по объему практики в СНГ и EN-cегменте нет.
Что ждет вас на курсе?
Запись до 25 июля. Продолжительность - 3 месяца
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤6🔥4❤🔥1
Новость от ESET: обнаружен зловред HotPage, замаскированный под блокировщик рекламы, активный с конца 2023 года.
🗣️ Этот софт загружает драйвер ядра, позволяющий злоумышленникам запускать код с привилегиями на Windows. Инсталлятор устанавливает драйвер и две библиотеки, перехватывающие сетевой трафик браузеров.
•
Изменять содержимое страниц•
Перенаправлять пользователя•
Открывать новые вкладки по заданным критериям•
Собирает и передает системную информацию на сервер, связанный с китайской компанией Hubei Dunwang Network Technology Co., Ltd.Please open Telegram to view this post
VIEW IN TELEGRAM
😱14🔥3💯3❤2
Подписка Basic:
1. Доступ к райтапам
Вы получаете доступ к авторским подробным инструкциям по задачам после их решения. Это поможет вам лучше понять, как решать задания и улучшить свои навыки в области кибербезопасности.
2. VPN-конфигурации (изолированные серверы)
Доступ к изолированным VPN-серверам для выполнения заданий. Это обеспечивает более безопасное и стабильное соединение.
3. Доступ к заданиям, находящихся в архиве (retired)
Возможность проходить архивные задачи, которые были загружены на платформу более пяти месяцев назад, но теперь доступны только по подписке Basic.
Стоимость подписки символическая - 990р. Вы получаете не только доступ к новому функционалу и полезным материалам, но и окажете необходимую для нас поддержку.
Приятного хакинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22👎14🔥11❤🔥3❤2