Codeby
35.9K subscribers
1.38K photos
92 videos
12 files
7.35K links
Блог сообщества Кодебай

Чат: @codeby_one
Форум: codeby.net
Обучение: codeby.school
Пентест: codeby.one
CTF: hackerlab.pro

VK: vk.com/codeby
YT: clck.ru/XG99c

Сотрудничество: @KinWiz
Download Telegram
Windows Shellcoding x86 – поиск Kernel32.dll – часть 1

Доброго времени суток, Codeby. Для человека, который изучал Linux Shellcoding, а потом начал работать в Windows, поверьте мне, это будет намного сложнее, чем вы себе можете это представить. Ядро Windows полностью отличается от ядра Linux. Как уже говорилось, ядро Linux намного легче в понимании, чем ядро Windows, потому что оно имеет открытый исходный код и у него намного меньше свойств по сравнению с ядром Windows. С другой стороны, у Windows было столько вправок и переделывании за последние годы, в результате чего многое изменилось.

📌 Читать далее

#asm #dll #shell
Windows Shellcoding x86 – функции вызова в Kernel32.dll – часть 2

Доброго времени суток, codeby. В предыдущей части мы нашли адрес Kernel32.dll, проходя через LDR структуру. В этой части мы сконцентрируемся на нахождении адреса функций (известных как DLL символы) в Kernel32.dll и вызовем их путем предоставления аргументов. Одним из методов вызова этих символов является использование LoadLibraryA с целью нахождения адреса этих символов от Kernel32.dll. Однако, мы этого делать не будем, т.к. это слишком легко. Основная цель моей серии блогов является помочь людям понять, как именно работает код сборки, чтобы было легко писать нулевой шелл-код для любой функции, которая им нужна. В этой части я объясню, как написать шелл-код для GetComputerNameA, и мы пройдемся по нашему исполняемому файлу в дизассемблере x32dbg, чтобы посмотреть имя хоста компьютера, на котором он запущен.

📌 Читать далее

#asm #shell #windows
ASM – интерфейс защиты данных DPAPI

Все, кто хоть немного дорожит своей информацией, направляют фокус на её защиту. Учитывая эти обстоятельства, начиная ещё с Win-2k инженеры Microsoft ввели в состав своей ОС специальный интерфейс и назвали его "Data-Protection Programming Interface", или коротко DPAPI. В результате, не прибегая к услугам внешних библиотек, у нас появилась возможность защищать свои данные вполне крипткостойким механизмом, причём эти данные могут находиться как на жёстком диске, так и непосредственно в памяти. В состав этого интерфейса входят всего 4 функции, однако практическая его реализация довольно сложна и корнями уходит в нёдра операционной системы, иначе DPAPI не получил-бы столь высокий кредит доверия в высшем обществе. В данной статье рассматриваются технические детали этого интерфейса, и некоторые советы к области его применения.

📌 Читать далее

#asm #security
ASM. Демоны в Windows (1) – сессии, станции, рабочие столы

В системах класса Win, одним из привлекательных направлений является программирование сервисов. Связано это с тем, что сервисы имеют приоритет над обычными приложениями, поскольку предназначены для обслуживания работы самой ОС и запускаются от имени системы. По этой причине, их ещё называют системными службами. Если провести аналогию с Linux, то сервисы Win можно сравнить с демонами, которые присутствуют всегда, но не выползая в свет работают в фоне. В данном треде попробуем разобраться с технической их стороной и посмотрим, какую они представляют угрозу безопасности. Материал получился обширным, а потому пришлось разделить его на две части.

📌 Читать далее

#asm #windows #software
ASM – техники из старого сундука

Есть поговорка: "Программистами не рождаются – ими умирают". Исходя из этой парадигмы можно сделать вывод, что за долгий свой/программерский путь, у каждого из нас снежным комом накапливаются различные техники и алгоритмы, поделиться с общественностью которыми было-бы не грех. К примеру на этапе моего начинания, мир процессора для меня был так юн, что некоторые вещи не приобрели ещё свои имена и приходилось указывать на них пальцем. Позже, все просветления было решено записывать в блокнот, который постепенно разбух до увесистого романа. Фильтр элементарных заметок сделал своё дело и на данный момент в этом блокноте осталось ~1000 строк, которые я и решил сбросить сюда с краткими комментариями.

📌 Читать далее

#asm #cpuid
WinHook – легальный шпионаж

Порой логика инженеров Microsoft не выдерживает никакой критики. В священных войнах с хакерами они сами вручают им мандат на использование уязвимых функций, после чего отлавливают их-же с претензиями на взлом. Из большого числа подобных API на передний план буйком выплывает SetWindowsHookEx(), при помощи которой одним кликом мыши можно внедрить "творческую" свою DLL сразу во все активные процессы системы. В итоге, даже обычный юзверь может перехватить любые действия пользователя, вплоть до логирования клавиатурного ввода. И что особенно важно, ничего криминального в этом нет, поскольку мелкософт сама предлагает нам эту функцию, оформив ей прописку в библиотеке user32.dll. Чем они руководствовались остаётся для нас загадкой, но функция есть, а значит имеет смысл рассмотреть подробно её реализацию.

📌 Читать далее

#asm #windows
ASM – Динамическое шифрование кода

В программировании принято разделять шифрование на статическое и динамическое. Первый вариант подразумевает крипт всей тушки дискового образа программы, и обратный декрипт его при загрузки в память. Он прост в практической реализации, но как и следует из алгоритма, защищает лишь двоичный образ софта на жёстком диске, а в памяти ОЗУ код уже сбрасывает с себя всю маскировку и становится полностью доступным исследователю. Остаётся тупо снять дамп памяти, и в оффлайне не торопясь разбирать защиту.

📌 Читать далее

#programming #asm #encryption
FASM. Обработка исключений в Win-64

На этапе проектирования софта, как-правило предусматривают в нём модуль обработки ошибок и исключений. На жаргоне программистов его называют «защитой от дурака», хотя не исключён вариант, что дураком является здесь как-раз сам разработчик, поскольку плохо продумал пользовательский интерфейс. В любом случае «Exception Handler» должен присутствовать в коде, но с переходом на Win-64 мы сталкиваемся с проблемой. Дело в том, что основанный на стековых фреймах привычный механизм SEH больше не работает – на х64 он подвергся полной «прокачке» и требует теперь абсолютно иного подхода. В данной статье попробуем освятить достоинства и недостатки усовершенствованного механизма SEH-х64.

📌 Читать далее

#asm #windows
Диски GPT и MBR – разбор полётов

Ещё в 90-х годах прошлого столетия стало очевидно, что исправно служившая столько лет трёхмерная геометрия жёстких дисков CHS (Cylinder, Head, Sector) не удовлетворяет уже современным требованиям и её срочно нужно менять. Так, следующим шагом к совершенству был ввод в прошивку HDD модуля под названием "транслятор адреса", который налету превращал физический номер сектора CHS, в логический LBA (Logical Block Address). Но и это лишь на время отложило неизбежную смерть механизма CHS-to-LBA, поскольку основная проблема была зарыта ещё глубже. Она заключалась в том, что в системе адресации логических блоков критически не хватало двоичных разрядов, и их нужно было увеличить как-минимум в 1,5 раза, с 32 до 48-бит. Это требовало-бы полной модернизации аппаратной части подсистемы хранения данных, на что инженеры шли без энтузиазма.

📌 Читать далее

#forum #hardware #asm
ASM – работа с базами SQLite (часть 1. Формат файла)

Традиционно, для работы с СУБД используются скриптовые языки типа: Python, SQL, Tcl, Perl и прочие. Это вполне оправдано, поскольку их синтаксис максимально приближен к человеческой речи, а огромный набор рычагов и предметно-ориентированных модулей превращает решение вполне серьёзных проблем, чуть-ли не в игру. Единственным недостатком скриптов является скорость выполнения ими задач. Однако бывают ситуации, когда с базами нужно совершить элементарные действия, например не создавать её с нуля забивая данными, а тупо прочитать пару-тройку столбцов уже имеющейся в ней информации. Это могут быть кукисы в браузерах, пароли и прочая инфа личного характера. Именно в таких случаях преимущество ассма (да и любого компилируемого языка) становится очевидным. Здесь идеальным вариантом будет разбор встраиваемой базы SQLite – на ней и остановимся.

📌 Читать далее

#forum #asm #sqlite
ZIP'аем файл вручную (часть.1. упаковщик)

Допустим имеем файл и нужно перенести его в своей программе на чужую машину. Если этот файл будет внешним (на подобии библиотеки или драйвера), то сразу бросится в глаза. А что если зашить его в своё тело и создавать при запуске основного приложения? Благо производительность современных процессоров это позволяет и жертва даже не успеет понять в чём дело. Другими словами получим матку, которая будет порождать файлы. Всё-бы хорошо, только таскать в себе готовые бинарники типа exe\dll в несжатом виде тоже не лучшая идея – одних только "байтов выравнивания" в них под 50%, а для использования готовых архиваторов нужен к нему распаковщик. Так-что иметь в запазухе обычный зиппер это всегда гуд, а данная статья (надеюсь) поможет вам разобраться в его деталях. Буду использовать ассемблер FASM, двоичный редактор HxD, ну и виндовый кальк в инженерном виде.

📌 Читать статью

#forum #asm #zip
ASM – Распределение физ.памяти процессам Windows

В системной архитектуре отображение вирт.памяти на физическую носит таинственный характер. Предлагая материал на эту тему, MSDN забывает о логической нити – по большому счёту у них тонны безсвязных отрывков. В результате сеть заполонили статьи о диспетчерезации памяти, однако инфа в них сильно разнится, поскольку каждый из авторов трактует оригинальные доки по своему. Приняв это во-внимание, в данной статье был выбрал формат "беседа с новичком", чтобы рассмотреть такие вопросы как: задачи MMU и VMM, область применения списков VAD и MDL, назначение базы PFN, состав рабочих страниц WorkingSet, способы трансляции адресов, и многое другое. Из оружий ближнего боя понадобится отладчик WinDbg, и том(3) мануалов Intel "System Programming Guide", как внушающий доверие источник информации.

📌 Читать далее

#forum #asm #windows
ASM – ода о клавиатуре

Если компьютер не "вещь в себе", в нём должна быть заложена система взаимодействия с пользователем. Во всех активных микро/процессорных устройствах, для ввода информации предусмотрена клавиатура, которая представляет собой вполне самостоятельный мини/компьютер со-своим встроенным процессором. В данной статье рассматривается как внутреннее устройство этого интересного девайса, так и поддержка его на уровне BIOS и операционной системы Win. Кроме того уделяется внимание системной "очереди сообщений" – основного механизма взаимодействия с окнами.

📌 Читать далее

#forum #asm #keyboard
USB Flash [часть 1] – устройство

Предлагаю рассмотреть реализацию интерфейса USB как на уровне архитектуры, так и программную составляющую. Сырая версия 1.0 была опубликована в начале 1996 года, а уже осенью 98-го, мир увидел первую стабильную редакцию v1.1. Однако на практике оказалось, что из шины USB можно выжать намного больший потенциал. Так, в 2000 году была опубликована очередная спецификация USB 2.0, в которой предусмотрено повышение пропускной способности сразу в десятки раз. Это позволило существенно расширить круг подключаемых к шине высоко-скоростных устройств:

📌 Читать далее

#forum #asm #usb
Системные таймеры. Часть[1] – PIT и RTC

В статье рассматриваются технические детали системных таймеров и способы их программирования. Роль таймеров в системе глобальна – по их прерываниям логика чипсета контролирует длительность шинных циклов (что влияет на общую производительность), переводит процессор и ACPI-девайсы в энергосберегающий режим, организует ход часов, пробуждает разнообразные события Event и многое другое.

📌 Читать далее

#forum #asm #timer
ASM. Модель драйвера графического адаптера WDDM

Всем привет! В данной статье рассматриваются вопросы доступа к свойствам графических адаптеров на языке ассемблера. Мы заправим свои мозговые баки топливом DirectX смешав его в должной мере с OpenGL, заглянем в современную модель драйверов видеоадаптеров Vista+, ознакомимся с базовыми терминами графической инфраструктуры, и смешаем весь этот коктейль с исполняемым кодом. Основной акцент делается на способ вычисления объёма локальной видеопамяти VRAM свыше 4 Gb, что является проблематичным на 32-битных системах Windows.

📌 Читать далее

#forum #asm #hardware
ASM для х86. (5.0.) Cтек TCP/IP. WinSock

Привет! Продолжу тему ассемблера, в этой части уделю внимание программированию сетей.
Дело это не для слабонервных, придётся осваивать кучу системных структур, таких как заголовки пакетов и прочее. Если рассматривать каждую мелочь, то запутаемся в терминах и на выходе получим винегрет. С другой стороны, в архитектуре сети всё переплитается в клубок и если что-то упустить, то на следующих уровнях нас ждёт инфо-дыра. Так-что выберу золотую середину, не углубляясь сильно в теоритическую муть. Материал рассчитан на тех, кто никогда не имел дело с программированием сети, но хотел бы заняться этим.

📌
Читать далее

#forum #asm #windows
ASM. FAT32 – описание файловой системы

FAT датируется аж 1977-годом и пришла к нам из проприетарного DOS. Благодаря простой реализации, сейчас это способ хранения данных на таких носителях как USB-брелки, карты-памяти телефонов и ЦФК, в EFI для хранения кода загрузчика, в системах реального времени RTOS, и многое другое. В данной статье рассматриваются гендерные признаки зоопарка FAT, и в какую сущность превратила эволюция конкретно взятую FAT32. Детальный её разбор позволит понять алгоритм восстановления удалённых файлов, а так-же подтолкнёт на создание своих утилит форматирования, с широким спектром логической геометрии.

📌 Читать далее

#asm #fat32
WinHook – легальный шпионаж

Порой логика инженеров Microsoft не выдерживает никакой критики. В священных войнах с хакерами они сами вручают им мандат на использование уязвимых функций, после чего отлавливают их-же с претензиями на взлом. Из большого числа подобных API на передний план буйком выплывает SetWindowsHookEx(), при помощи которой одним кликом мыши можно внедрить "творческую" свою DLL сразу во все активные процессы системы. В итоге, даже обычный юзверь может перехватить любые действия пользователя, вплоть до логирования клавиатурного ввода. И что особенно важно, ничего криминального в этом нет, поскольку мелкософт сама предлагает нам эту функцию, оформив ей прописку в библиотеке user32.dll. Чем они руководствовались остаётся для нас загадкой, но функция есть, а значит имеет смысл рассмотреть подробно её реализацию.

📌 Читать далее

#asm #windows
ASM – Распределение физ.памяти процессам Windows

В системной архитектуре отображение вирт.памяти на физическую носит таинственный характер. Предлагая материал на эту тему, MSDN забывает о логической нити – по большому счёту у них тонны безсвязных отрывков. В результате сеть заполонили статьи о диспетчерезации памяти, однако инфа в них сильно разнится, поскольку каждый из авторов трактует оригинальные доки по своему. Приняв это во-внимание, в данной статье был выбрал формат "беседа с новичком", чтобы рассмотреть такие вопросы как: задачи MMU и VMM, область применения списков VAD и MDL, назначение базы PFN, состав рабочих страниц WorkingSet, способы трансляции адресов, и многое другое. Из оружий ближнего боя понадобится отладчик WinDbg, и том(3) мануалов Intel "System Programming Guide", как внушающий доверие источник информации.

📌 Читать далее

#asm #windows