• О работе ПК на примере Windows 10 и клавиатуры ч. 1

    image

    Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
    Читать дальше →
  • Hello World из байт-кода для JVM

      Скомпилируем простенькую программу выводящую "Hello World" и пройдемся по его структуре


      Не думаю, что статья будет достаточно информативной для тех, кто поверхностно не знает как выглядит байт-код и как с ним работает JVM (например, хотя бы простейшие инструкции (знание об их существовании)).


      На самом деле, это не так сложно. Достаточно использовать инструмент javap из JDK и рассмотреть дизассемблированный код.


      А мы приступим к разбору самой структуры байт-кода для JVM

      Читать дальше →
      • +28
      • 6.7k
      • 8
    • 24-ядерный CPU, а я не могу набрать электронное письмо (часть 2)

      • Translation
      В прошлой статье я обещал подробнее раскрыть некоторые детали, которые опустил во время расследования [подвисаний Gmail в Chrome под Windows — прим. пер.], включая таблицы страниц, блокировки, WMI и ошибку vmmap. Сейчас восполняю эти пробелы вместе с обновлёнными примерами кода. Но сначала вкратце изложим суть.

      Речь шла о том, что процесс с поддержкой Control Flow Guard (CFG) выделяет исполняемую память, одновременно выделяя память CFG, которую Windows никогда не освобождает. Поэтому если вы продолжаете выделять и освобождать исполняемую память по разным адресам, то процесс накапливает произвольный объём памяти CFG. Браузер Chrome делает это, что приводит к практически неограниченной утечке памяти и подвисаниям на некоторых машинах.

      Нужно заметить, что подвисаний трудно избежать, если VirtualAlloc начинает работать более чем в миллион раз медленнее, чем обычно.
      Читать дальше →
    • Введение в эксплоитинг и реверсинг (уже не с нуля) с использованием IDA FREE и других бесплатных инструментов

      • Translation
      • Tutorial
      Привет, Хабравчане.

      Для тех кто не знает, совсем недавно Рикардо начал новый курс, который посвящен реверсингу и эксплоитингу. Это продолжение предыдущего оригинального авторского курса, который закончился на 67 главе. Я узнал про курс сразу, так как Рикардо подписал меня на свою рассылку КрэкЛатинос. После появления этой новости я сразу побежал искать папочку с английским переводом и очень обрадовался когда нашел его там. Над английским переводом постарался человек под ником Fare9, за что ему честь и хвала. Также я хочу передать привет и сказать спасибо Ильфаку Гильфанову за его прекрасный инструмент, которым пользуются в каждой стране. Перед ним я снимаю шляпу и делаю низкий поклон.
      Читать дальше →
    • SGX-малварь: как злодеи эксплуатируют новую технологию Intel не в тех целях, ради которых она задумывалась

      • Tutorial

      Как известно, выполняемый в анклаве код серьёзно ограничен в своей функциональности. Он не может делать системные вызовы. Он не может осуществлять операции ввода-вывода. Он не знает базового адреса сегмента кода хост-приложения. Он не может jmp'ить и call'ить код хост-приложения. Он не имеет представления о структуре адресного пространства, которой руководствуется хост-приложение (например, какие именно страницы промаппены или что за данные размещены на этих страницах). Он не может просить операционную систему промаппить ему кусок памяти хост-приложения (например, через /proc/pid/maps). Наивные попытки прочитать вслепую произвольную область памяти хост-приложения, – не говоря уже о попытках записи, – рано или поздно (скорее первое) приведут к принудительному завершению анклавной программы. Так происходит всякий раз, когда запрашиваемая анклавом область виртуального адресного пространства оказывается недоступной хост-приложению.


      Сможет ли вирусописатель при таких суровых реалиях задействовать SGX-анклавы для реализации своих злонамеренных целей?


      – Хак для зондирования адресов на предмет возможности их считывания
      – Хак для зондирования адресов на предмет возможности записи
      – Хак для перенаправления потока управления
      – Что дают злодею три перечисленные выше хака
      – Как злодей задействует эти хаки для создания ранзомвари


      Читать дальше →
      • +18
      • 4.7k
      • 1
    • Windows Notification Facility: cамая недокументированная поверхность атаки

      • Translation

      Под катом представлен перевод презентации "The Windows Notification Facility: The Most Undocumented Kernel Attack Surface Yet", представленной Alex Ionescu и Gabrielle Viala на конференции BlackHat 2018.


      Читать дальше →
    • Режим «инкогнито» в браузере — это фикция?

        30 июля компания Google выпустила Chrome 76 с улучшенным режимом инкогнито. Теперь браузер обходит «пейволы», которые ставят читателям лимит на «несколько статей в месяц», а потом требуют подписку или регистрацию.

        Например, The New York Times позволяет читать десять статей в месяц, а Wired — четыре. На долю "metered paywalls" приходится 33% пейволов в онлайновых медиа. Пользователей в режиме «инкогнито» там встречают недружелюбно:



        В Chrome 76 обход пейволла упростился до предела: достаточно нажать на ссылку правой кнопкой мыши и выбрать «Открыть ссылку в окне в режиме инкогнито». Теперь браузер не распознает, что вы находитесь в «приватном режиме». Счётчик прочитанных статей в «инкогнито» не работает из-за отсутствия куков.
        Читать дальше →
      • Как технологии быстрой разработки могут стать источником неприятных уязвимостей

          Безопасность на реальных примерах всегда более интересна.

          Как тестировщик на проникновение, люблю, когда приходят проекты, построенные на фреймворках быстрой разработки (Rapid development), подобно Ruby-on-Rails, Django, AdonisJs, Express и так далее. Они позволяют очень быстро строить систему за счет того, что бизнес модели прокидываются сразу на все уровни, включая клиентский браузер. Model (модели бизнес объектов в базе) и ViewModel (контракт взаимодействия с клиентами) такие фреймворки часто объединяют вместе, чтобы избежать лишнего перекладывания из Model во ViewModel и обратно, REST сервисы автоматом генерируются. C точки зрения разработки можно просто разработать бизнес модель на сервере, и потом использовать ее сразу на клиенте, что несомненно увеличивает скорость разработки.

          Еще раз, я не утверждаю, что вышеупомянутые фреймворки плохие, или с ними что-то не то, у них есть средства и инструменты правильной защиты, просто с ними разработчики делают больше всего ошибок. Такое встречал и на одном ASP.NET MVC проекте, в котором разработчики наделали те же уязвимости, выставляя Models вместо ViewModels…
          Читать дальше →
          • +15
          • 8.6k
          • 2
        • Рецепты для ELFов

            image


            На русском языке довольно мало информации про то, как работать с ELF-файлами (Executable and Linkable Format — основной формат исполняемых файлов Linux и многих Unix-систем). Не претендуем на полное покрытие всех возможных сценариев работы с эльфами, но надеемся, что информация будет полезна в виде справочника и сборника рецептов для программистов и реверс-инженеров.


            Подразумевается, что читатель на базовом уровне знаком с форматом ELF (в противном случае рекомендуем цикл статей Executable and Linkable Format 101).


            Под катом будут перечислены инструменты для работы, описаны приемы для чтения метаинформации, модификации, проверки и размножения создания эльфов, а также приведены ссылки на полезные материалы.

            Поработаем с эльфами
          • Лучшие дистрибутивы Linux для старых компьютеров

            • Translation
            Привет!

            Вкратце: пока не бросайте свой старый компьютер — используйте легкий дистрибутив Linux, чтобы возродить его!

            Что вы делаете со своим старым компьютером? Тот, который когда-то имел хорошую аппаратную конфигурацию, но теперь считается устаревшим. Почему бы не восстановить его вместе с Linux? Я собираюсь перечислить лучшие легкие дистрибутивы Linux, которые вы можете использовать на своем старом ПК.

            Лучшие легкие дистрибутивы Linux для старых ноутбуков и десктопов


            Я постараюсь упорядочить список в порядке убывания требований к оборудованию. Это означает, что легкому дистрибутиву Linux, занимающему первое место, потребуется минимальное аппаратное обеспечение.

            10. Peppermint


            image

            Peppermint  —  это облачно-ориентированный дистрибутив Linux, не требующий мощного железа для запуска. Он основан на Lubuntu и использует окружение рабочего стола LXDE для более плавной работы.
            Читать дальше →
          • DNS rebinding в 2k19, или как по-настоящему вспотеть, посетив порносайт


              Всем привет! Сегодня мы бы хотели рассказать об одной старой и почти всеми забытой атаке под названием DNS rebinding. Первые разговоры о ней начались еще в 2007 году, однако тогда эксперты из области практической информационной безопасности не уделяли ей должного внимания в связи с особенностями эксплуатации этой атаки, а также мало ощутимыми, как тогда казалось, последствиями. Сегодня мы попробуем убедить в обратном их и вас, в частности, продемонстрировав, что в современном мире эта атака обрела второе дыхание и более не кажется такой безобидной.

              Читать дальше →
            • Telegram. Безлимитный сетевой диск. Бесплатный

                Привет, Хабр.

                Наверняка многие об этом задумывались, возможно у кого то эта идея лежит в TODO. У меня она пролежала примерно год, но таки удалось ее реализовать в виде работающего прототипа.

                TgCloud:


                • Виртуальная файловая система с открытым исходным г****кодом.
                • На локальном диске — только метаданные: имена, размер, структура папок и т.д.
                • Данные хранятся в Telegram и загружаются только при работе с файлом
                • Размер и тип файлов не ограничен, можно использовать с любой ОС

                Подробности реализации и ссылка на репозиторий под катом.
                Читать дальше →
              • Работа с PEB и TEB

                  PEB — структура процесса в windows, заполняется загрузчиком на этапе создания процесса, которая содержит информацию о окружении, загруженных модулях (LDR_DATA), базовой информации по текущему модулю и другие критичные данные необходимые для функционирования процесса. Многие системные api windows, получающие информацию о модулях (библиотеках) в процессе, вызывают ReadProcessMemory для считывания информации из PEB нужного процесса.
                  Читать дальше →
                  • +16
                  • 26.6k
                  • 4
                • Control Flow Guard. Принцип работы и методы обхода на примере Adobe Flash Player


                    Компания Microsoft не оставляет попыток победить в бесконечной войне с эксплоитописателями, раз за разом реализуя новые техники по защите приложений. На сей раз разработчики операционной системы Windows подошли к решению данного вопроса более фундаментально, переведя свой взгляд на корень проблемы. Работа почти каждого эксплоита так или иначе нацелена на перехват потока исполнения приложения, следовательно, не помешало бы "научить" приложения следить за этим моментом.
                    Концепия Control Flow Integrity (целостность потока исполнения) была описана еще в 2005 году. И вот, 10 лет спустя, разработчики из компании Microsoft представили свою неполную реализацию данного концепта — Control Flow Guard.


                    Что такое Control Flow Guard


                    Control Flow Guard (Guard CF, CFG) — относительно новый механизм защиты Windows (exploit mitigation), нацеленный на то, чтобы усложнить процесс эксплуатации бинарных уязвимостей в пользовательских приложениях и приложениях режима ядра. Работа данного механизма заключается в валидации неявных вызовов (indirect calls), предотвращающей перехват потока исполнения злоумышленником (например, посредством перезаписи таблицы виртуальных функций). В сочетании с предыдущими механизмами защиты (SafeSEH, ASLR, DEP и т.д.) являет собой дополнительную головную боль для создателей эксплоитов.

                    Читать дальше →
                    • +32
                    • 15.5k
                    • 3
                  • Пишем Reverse socks5 proxy на powershell.Часть 2

                      История об исследовании и разработке в 3-х частях. Часть 2 — разработческая.
                      Буков много — пользы еще больше.

                      В первой части статьи мы познакомились с некоторым инструментарием по организации обратных туннелей, посмотрели на их преимущества и недостатки, изучили механизм работы Yamux мультиплексора и описали основные требования к вновь создаваемому powershell-модулю. Настало время заняться разработкой клиентского powershell модуля к уже готовой реализации обратного туннеля RSocksTun.

                      Прежде всего, нам необходимо понять, в каком режиме будет работать наш модуль. Очевидно, что для прима-передачи данных нам необходимо будет использовать механизм windows сокетов и предоставляемые .Net возможности по потоковому чтению-записи в сокеты. Но, с другой стороны, т.к. наш модуль должен обслуживать несколько yamux-стримов одновременно, то все операции ввода-вывода не должны полностью блокировать выполнение нашей программы. Отсюда напрашивается вывод о том, что наш модуль должен использовать программную многопоточность и выполнять операции чтения-записи с yamux-сервером, а так же операции чтения-записи к серверам назначения в разных программных потоках. Ну и само собой необходимо предусмотреть механизм взаимодействия между нашими параллельными потоками. Благо, powershell предоставляет широкие возможности по запуску и управлению программными потоками.
                      Читать дальше →
                      • +14
                      • 1.8k
                      • 2
                    • Ломаем простую «крякми» при помощи Ghidra — Часть 1

                      О том, что это за зверь такой — Ghidra («Гидра») — и с чем его едят она ест программки, многие уже, наверняка, знают не понаслышке, хотя в открытый доступ сей инструмент попал совсем недавно — в марте этого года. Не буду докучать читателям описанием Гидры, ее функциональности и т.д. Те, кто в теме, уже, уверен, всё это сами изучили, а кто еще не в теме — могут это сделать в любое время, благо на просторах веба сейчас найти подробную информацию не составит труда. Кстати, один из аспектов Гидры (разработку плагинов к ней) уже освещался на Хабре (отличная статья!) Я же дам только основные ссылки:


                      Итак, Гидра — это бесплатный кроссплатформенный интерактивный дизассемблер и декомпилятор с модульной структурой, с поддержкой почти всех основных архитектур ЦПУ и гибким графическим интерфейсом для работы с дизассемблированным кодом, памятью, восстановленным (декомпилированным) кодом, отладочными символами и многое-многое другое.

                      Давайте попробуем уже что-нибудь сломать этой Гидрой!
                      Читать дальше →
                    • Уход инженера-электронщика из Apple вызвал волнение среди биржевых спекулянтов. Как стать таким как он?

                        29 марта инженер по имени Жерард Вильямс Третий ушел из компании Apple. Это известие сразу опубликовал CNET и еще три десятка изданий во всем мире, не только технических, но и финансовых. Что же такого делал этот инженер, что его уход вызвал волнение среди биржевых спекулянтов? Он 9 лет проектировал процессоры в Apple iPhone, до этого 12 лет работал в ARM, до этого проектировал DSP в Texas Instruments, а до этого разрабатывал в Интеле схемы на ПЛИС. Во всех местах он использовал технологию проектирования на уровне регистровых передач, с использованием языков описания аппаратуры Verilog и VHDL.

                        Примеры поближе к России? На фото справа: 25-летний москвич Илья Неганов взял в 2011 году книжку Харрис & Харрис (последнюю версию которой можно скачать здесь или здесь), спроектировал простой процессор, сейчас работает в Apple, проектирует на верилоге GPU, по выходным летает на самолетике. Ниже пара молодоженов из Санкт-Петербурга, которые проектировали на верилоге и ПЛИС обработку изображений из камеры и получили приз на конкурсе Innovate FPGA. Они провели медовый месяц в штаб-квартире Интела в Санта-Кларе. Далее товарищи из Киева, двое из которые выиграли бронзу на европейском финале Innovate FPGA. И наконец два школьника, из 5 и 9 классов, которые делают свои первые упражнения с микросхемами малой степени интеграции на макетной плате, после чего приступают к упражнениям на верилоге и ПЛИС.

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


                        Читать дальше →
                      • Эксплуатация подписанных загрузчиков для обхода защиты UEFI Secure Boot

                          English version of this article.

                          Введение

                          Прошивки современных материнских плат компьютера работают по спецификации UEFI, и с 2013 года поддерживают технологию проверки подлинности загружаемых программ и драйверов Secure Boot, призванную защитить компьютер от буткитов. Secure Boot блокирует выполнение неподписанного или недоверенного программного кода: .efi-файлов программ и загрузчиков операционных систем, прошивок дополнительного оборудования (OPROM видеокарт, сетевых адаптеров).
                          Secure Boot можно отключить на любой магазинной материнской плате, но обязательное требование для изменения его настроек — физическое присутствие за компьютером. Необходимо зайти в настройки UEFI при загрузке компьютера, и только тогда получится отключить технологию или изменить её настройки.

                          Большинство материнских плат поставляется только с ключами Microsoft в качестве доверенных, из-за чего создатели загрузочного ПО вынуждены обращаться в Microsoft за подписью загрузчиков, проходить процедуру аудита, и обосновывать необходимость глобальной подписи их файла, если они хотят, чтобы диск или флешка запускались без необходимости отключения Secure Boot или добавления их ключа вручную на каждом компьютере.
                          Подписывать загрузчики у Microsoft приходится разработчикам дистрибутивов Linux, гипервизоров, загрузочных дисков антивирусов и программ для восстановления компьютера.

                          Мне хотелось сделать загрузочную флешку с различным ПО для восстановления компьютера, которая бы грузилась без отключения Secure Boot. Посмотрим, как это можно реализовать.
                          Читать дальше →
                        • Commando VM — альтернатива Kali Linux для Windows


                            Буквально на днях компания FireEye презентовала систему Commando VM, предназначенную для пентестеров и Red Team, работающую под управлением операционных систем семейства Microsoft Windows.

                            FireEye позиционирует Commando VM как «первый в своем роде» дистрибутив для пентестеров под Windows, однако они явно лукавят, т.к. на ум сразу приходит как минимум проект Pentest Box, который также заточен под Windows.

                            В тоже время, сама система Commando VM довольно интересна и заслуживает внимания…
                            Читать дальше →
                            • +16
                            • 22.5k
                            • 2
                          • Результаты Pwn2Own: Tesla Model 3 взломана, на ней поехал домой автор нового метода атаки

                              image

                              Несколько недель назад на Хабре публиковалась новость о том, что Илон Маск пообещал привезти Tesla Model 3 на конференцию Pwn2Own и отдать электромобиль тому, кто сможет его взломать. При этом предприниматель высказывал сомнение в том, что кому-то удастся обойти защитные системы транспортного средства.

                              Но, как оказалось, умельцы действительно нашлись. Так, команда Fluoroacetate, в состав которой входят Амат Кама и Ричард Жу, взломали машину через браузер Tesla. Они использовали баг JIT, который позволял получить управление электромобилем. Например, показать сообщение произвольного характера на экране.
                              Читать дальше →