• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Программирование

Статья Windows Shellcoding x86 – функции вызова в Kernel32.dll – часть 2 [Перевод]

  • 5 980
  • 1
Доброго времени суток, codeby.
Первоисточник:
Перевод: Перевод выполнен от команды Codeby

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

Статья Windows Shellcoding x86 – поиск Kernel32.dll – часть 1 [Перевод]

  • 6 790
  • 2
Доброго времени суток, codeby.
Первоисточник:
Перевод: Перевод выполнен от команды Codeby

Добро пожаловать в ад на земле

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

Статья DEP и ASLR – игра без правил

  • 7 426
  • 4
Со времени выхода в свет Win2000 прошло уже 20 лет. Её разработчики, с чувством исполненного долга предвкушали себе счастливую старость, но грянул гром – система оказалась дырявой как сито, и на данный момент счёт её обновлениям потеряла наверное уже и сама Microsoft. Ознакомиться с установленными на вашем узле заплатками можно в командной строке, запросив systeminfo. Каждый сервис-пак SP несёт в себе кучу таких обновлений, игнорировать которым (с точки зрения безопасности) глупо.

На скорую руку заштопав старые щели, Билли сбрасывает на рынок эту-же систему под новым именем, которую ждёт та-же участь и она бумерангом прилетает обратно – круг замыкается. А виной тому хакеры, огромной ступнёй годзиллы втирающие в грязь мастдай только потому, что за свои честно/заработанные требуют товар соответствующего качества – мол если предлагаешь обществу весчь, она должна быть без изъянов. По большому счёту, только хакеры и двигают прогресс компьютерной...

Статья Entry Point – дело о пропавшем индексе (часть 2)

  • 5 355
  • 5
Вернёмся к первой части и вспомним, о чём тут вообще идёт речь..
Статья рассматривает, как при запуске приложения передать бразды фиктивной точке-входа EntryPoint. При этом РЕ-заголовок дискового файла не модифицируется, что пускает по ложному следу софт реверс-инженеринга типа анализаторы, дизассемблеры и отладчики. Акцент сделан на то, чтобы TLS-callback процедурой вмешаться в работу загрузчика LDR и перехватить точку-входа именно в стеке, а не в РЕ-заголовке файла, как это делают многие.

Загрузчик использует стек программы в качестве пусковой установки. Координаты цели в виде точки-входа, он берёт из нашего заголовка по смещению PE.28h, и дальше функцией ZwContinue() передаёт на неё управление. Наша задача как диверсантов выбрать подходящий момент и пока функция ZwContinue() ждёт от загрузчика команды "пуск", подставить в...

Статья Entry Point – дело о пропавшем индексе (часть 1)

  • 6 299
  • 2
Термин EntryPoint знаком каждому программисту – это адрес точки входа в программу, т.е. первой инструкции исполняемого кода. Компиляторы прошивают этот адрес в РЕ-заголовок по смещению 28h, а системный "загрузчик образов" потом считывает его от туда, и передаёт на него управление. Такому алгоритму следуют все LDR-загрузчики, начиная с Win98 и до наших дней. Сам загрузчик оформлен в виде функции LdrpInitializeProcess() из библиотеки Ntdll.dll.

В данной статье рассмотрим несколько способов реализации фиктивных точек EntryPoint, что позволит защитить наши программы от взлома и отладки. Например зачем выставлять на показ процедуру проверки введённого пароля, или какой-нибудь авторской техники? До тех пор пока она не станет достоянием общественности, мы сможем использовать её в своих программах снова и снова. Но как-только корабль даст течь, придётся латать дыры, на что нужно время...

Статья SEH – фильтр необработанных исключений

  • 5 645
  • 0
Во времена рассвета DOS программист имел полную власть над системой. Находясь в реальном режиме работы CPU, у нас не было никаких ограничений и мы могли использовать в программах буквально все инструкции и регистры процессора, общее число которых на Р6 стремилось преодолеть барьер в ~200 единиц. Это была отличная школа программирования, где вся ответственность за то или иное действие возлагалась полностью на наши плечи. Всё приходилось делать вручную, в том числе и обрабатывать аппаратные исключения с ошибками. Одним словом, царила атмосфера свободы и демократии, столь редкая в наши дни.

А что мы имеем сейчас в защищённом режиме? Microsoft отобрала у нас все права и вместо них вручила более 5000 системных API, но забыла толком объяснить, для чего они и как ими пользоваться. При малейщем чихе гигантская система валится в BSOD подымая в небеса тонны пыли, не забыв прихватить с собой наши не сохранённые данные. Ладно если был-бы реальный повод, так ведь может и без веских на то...

Статья Курс по созданию приложений для android [Часть 2]

  • 5 836
  • 19
Всем доброго времени суток!
Прошу прощения за задержку, были некоторые проблемы с техникой. Собственно, всё рассказал уже в комментарий первой части)

Те, кто наткнулись случайно -- настоятельно рекомендую сначала освоить первую часть! Курс по созданию приложений для android

В данном уроке мы научимся как создавать и расставлять объекты. Урок может быть скучноват, но это просто необходимо понять, т.к. без фундамента хороший дом не построить..

Я не забыл моменты в своей жизни, когда задавал вопрос, а через несколько лет слыша подобный, понимал, насколько он глупый. Осознание того, что это не вопрос глупый, а я (в тот момент, когда забыл, что был когда-то таким) пришло недавно, поэтому описывать буду максимально подробно (кто частично знаком или понял какой-то момент "налету" -- просто пропустите спойлер, в случае сложностей же -- не пренебрегайте ими.

Не будем долго разглагольствовать и...

Статья TLS callback – рояль в кустах для отладчиков

  • 8 612
  • 3
Системы класса Win-NT имеют интересный тип памяти под названием "Thread Local Storage", или локальная память потока. После того как мир увидел многопоточные приложения оказалось, что родственные потоки одной программы ведут между собой нешуточную борьбу за системные ресурсы, т.к. все загружаются в единое пространство родителя. Это как дети, которые не могут поделить одну плитку шоколада. Здесь вполне очевидна ситуация, когда поток(А) записал что-то в память, а ничего не подозревающий поток(В) тут-же подмял эту область памяти под себя. В результате, программист получает клубок из змей и никакого профита.

Microsoft пыталась решить эту проблему по разному, например ввела механизмы синхронизации в виде семафоров, эвентов и прочее. Но в итоге решила выделить каждому потоку по своей/личной памяти внутри его блока окружения TEB – Thread Environment Block, и это стало наиболее разумным решением.

В данной статье TLS...

Статья NTFS-Stream, или резидентный код в камуфляжных штанах

  • 8 416
  • 13
Рассмотрим файловую систему NTFS как сущность, которой доверяем самое ценное что у нас есть – это личную информацию. Порой мы не знаем куда пристроить пароли или своего трояна так, чтобы он не выдал себя даже под пытками, ..ну или просто хотим скрыть фото зазнобы в неприглядном виде. Для решения "проблемы века", юзеры присваивают файлам атрибут скрытый, более продвинутые шифруют файлы и т.д. Но в своих закромах NTFS предлагает нам более изящные средства, причём без сторонних инструментов – нужно просто открыть и покурить её (для надёжности) несколько раз.

Здесь мы рассмотрим сразу два родственных способа маскировки.. Первый известен в узких кругах как "альтернативный NTFS-поток" ADS (Alternative Data Stream) и живёт он в системе как скрытая часть уже существующего исполнительного потока. Второй – это доставшийся нам в наследство от файловой системы HPFS (OS/2)...

Статья Учим PHP: Основы и принцип работы

  • 8 686
  • 13
Доброго времени суток, codeby.

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

1.1. Принцип работы Интернета

Сама сеть "Интернет" представляет собой множество , которые соединены друг с другом с помощью а также спутниковыми каналами и так далее. Однако, думаю почти всем известно и понятно то что одних кабелей и радиоволн для передачи информации недостаточно. Чтобы обеим сторонам осуществлять передачу информации, им необходимо придерживаться каких-нибудь правил, соглашений которые как раз и позволят нам...