• Как настроить двухфакторную аутентификацию для логина и sudo

    • Перевод
    • Tutorial


    Безопасность в моде, как это и должно быть. Мы живем в мире, где данные — невероятно ценная валюта, которую вы всегда рискуете потерять. Поэтому вы должны сделать все, чтобы убедиться, что то, что вы держите на серверах и десктопах — в безопасности. Для этого администраторы и пользователи создают невероятно сложные пароли, используют менеджеры паролей и т.д. Но что, если я вам скажу, что вы можете логиниться на ваши серверы и десктопы Linux за два шага, вместо одного? Вы можете это делать благодаря Google Authenticator. Более того, это невероятно легко настроить.

    Я собираюсь провести вас через процесс настройки двухфакторной аутентификации для использования ее на логине и sudo. Я продемонстрирую это на десктопной Ubuntu 16.04, но процесс также работает и для сервера. Чтобы справиться с двухфакторной стороной вещей, я буду использовать Google Authenticator.
    Читать дальше →
  • Чтобы скрыть беременность от маркетинговых компаний, женщина использовала Tor

      Два года назад многих удивила новость о том, что американская торговая сеть Target узнала о беременности девушки раньше, чем её отец. «Она ещё в школу ходит, а вы посылаете ей купоны на детскую одежду и памперсы?», — кричал тогда рассерженный отец. Ничего удивительного: простой дата-майнинг истории покупок с привязкой к дисконтной или банковской карте.

      Оказывается, многие маркетинговые компании сейчас активно пытаются найти именно беременных женщин, потому что те находятся в преддверии большого количества предсказуемых покупок. Поэтому ритейлеры и производители детских товаров много платят за такую информацию. В эпоху таргетированной рекламы один только факт беременности примерно в 200 раз повышает стоимость профиля потребителя.
      Читать дальше →
    • Интересные приемы программирования на Bash

      Эти приемы были описаны во внутреннем проекте компании Google «Testing on the Toilet» (Тестируем в туалете — распространение листовок в туалетах, что бы напоминать разработчикам о тестах).
      В данной статье они были пересмотрены и дополнены.
      Читать дальше →
    • Radare2 собирает денежные средства на проведение своего Summer of Code



        Свободный фреймворк для дизассемблирования и реверс-инжиниринга radare2 запустил краудфандинговую
        кампанию
        с целью собрать 12000 EUR на проведение собственного Summer of Code.

        В этом году radare2 не прошел отбор в Google Summer of Code, что не остановило нас, и мы решили всё равно выполнить задуманное (web интерфейс, бинарные шаблоны, миграция на sdb, ROP-компилятор, ESIL — Evaluable Strings Intermediate Language, парсер PDB и протокола Windbg, сигнатурный анализ, bokken — графический интерфейс на PyGtk, поддержка новых архитектур).
        Читать дальше →
      • Анализ приложения защищенного виртуальной машиной

          В данной статье будет рассмотрено построение защиты приложения с использованием различных программных «трюков» таких как: сброс точки входа в ноль, шифрование тела файла и декриптор накрытый мусорным полиморфом, сокрытие логики исполнения алгоритма приложения в теле виртуальной машины.

          К сожалению, статья будет достаточно тяжелая для обычного прикладного программиста, не интересующегося тематикой защиты ПО, но тут уж ничего не поделать.

          Для более или менее адекватного восприятия статьи потребуется минимальные знания ассемблера (его будет много) а так-же навыков работы с отладчиком.

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

          Основные цели, которые я ставил перед собой, это дать общее понятие как вообще работает такая защита ПО, но самое главное — как к этому будет подходить человек, который будет снимать вашу защиту, ибо есть старое правило — нельзя реализовать грамотный алгоритм ядра защиты, не представляя себе методы его анализа и взлома.

          В качестве реципиента, по совету одного достаточно компетентного товарища, я выбрал немножко старый (но не потерявший актуальности, в силу качества исполнения) keygenme от небезызвестного Ms-Rem.

          Вот первоначальная ссылка, где он появился: http://exelab.ru/f/index.php?action=vthread&forum=1&topic=4732
          А потом он попал вот сюда: http://www.crackmes.de/users/ms_rem/keygenme_by_ms_rem/
          Где данному keygenme был выставлена сложность 8 из 10 (*VERY VERY* hard).
          Хотя, если честно, это слегка завышенная оценка — я бы поставил в районе 5-6 баллов.

          Пожалуй, начнем.
          Читать дальше →
        • Взаимодействие сканеров уязвимостей с Metasploit. Часть 2

          • Tutorial
          Требуемое программное обеспечение: Kali Linux.
          Необходимые знания: опыт работы с консолью Linux-систем (в частности, дистрибутивом Kali Linux) и консолью Метасплойта.

          В первой части мы познакомились с модулями для обнаружения уязвимостей при аутентификации (SMB Login Check, VNC Authentication None Detection) и плагином для поиска уязвимостей в веб-приложениях (WMAP). Во второй части займемся установкой сканера уязвимостей Nessus на 32-битную версию системы Kali Linux для последующего его взаимодействия с Метасплойтом (установка на 64-битную версию происходит аналогичным образом).

          Metasploit – излюбленный инструмент хакеров и специалистов по информационной безопасности, включающий в себя множество модулей для создания и использования эксплойтов. Но для эксплуатации уязвимостей, их необходимо сначала выявить. Функционала фреймворка для этих целей не достаточно, зато с этой задачей легко справляются сканеры уязвимостей. Взаимодействие сканеров уязвимостей с модулями Metasploit можно осуществить с помощью поддерживаемых плагинов. В результате такой интеграции мы сможем находить уязвимые места и тут же их эксплуатировать.

          Установка Nessus Home

          Nessus — один из самых популярных сканеров уязвимостей, разработанный компанией Tenable Network Security. До 2005 года это было свободное программное обеспечение с открытым исходным кодом, а в 2008 году вышла платная версия продукта. Также существует и бесплатная «домашняя» версия, ограничивается использованием в домашней сети. Её мы и будем использовать в наших целях.
          Читать дальше →
          • +19
          • 26,1k
          • 3
        • Взламываем беспроводное управление светом nooLite

            image

            Привет!

            В нашей предыдущей статье мы показывали, как наш контроллер для домашней автоматизации работает с устройствами системы NooLite без использования родных USB-донглов для передачи и приёма сигнала. Чтобы это стало возможно, мы провели реверс-инжиниринг протокола NooLite.

            Собственно эта статья содержит описание протокола и рассказывает, как именно мы его разбирали.

            Читать дальше →
          • Продвинутые методы неявного вызова php кода, использующиеся во вредоносных скриптах

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

              В качестве примера вредоносного кода снова будем использовать вызов

              echo 'Test'
              


              Поскольку цель статьи показать различные подходы и механизмы скрытого выполнения кода, то для простоты функция, которая выполняет наш «вредоносный код» будет объявлена рядом с вызываемым ее неявно кодом. В реальной жизни вредоносный код и его вызов находятся далеко друг от друга, как минимум в разных php скриптах, но чаще код подгружается из базы данных, мета-данных изображений, с другого сервера, после чего выполняется функцией eval, assert, preg_replace и им подобными.

              Читать дальше →
            • Strace

                В течение минуты думал над заголовком, так ничего и не придумал…
                Strace. Наверное нет того человека, который бы не слышал про strace. Если кто не слышал, то strace — это утилита, отслеживающая системные вызовы, которые представляют собой механизм трансляции, обеспечивающий интерфейс между процессом и операционной системой (ядром). Эти вызовы могут быть перехвачены и прочитаны. Это позволяет лучше понять, что процесс пытается сделать в заданное время. Перехватывая эти вызовы, мы можем добиться лучшего понимания поведения процессов, особенно если что-то идет не так. Функциональность операционной системы, позволяющая отслеживать системные вызовы, называется ptrace. Strace вызывает ptrace и читает данные о поведении процесса, возвращая отчет. Детали можно прочитать в вики или официальном man. Собственно вот, ну и речь конечно же о Linux. В других ОС свои аналоги.
                Так вот, лично для меня strace это как последняя инстанция. Когда уже все логи просмотрены, все debug и verbose ключи включены, а причина проблем так и не обнаружена, я достаю из широких штанин запускаю strace. Есть одно но, strace это такой инструмент который вовсе не является серебряной пулей, которая тут же все покажет и расскажет. Для работы с strace требуется наличие определенных знаний и чем шире и глубже эти знания тем больше вероятность обнаружения проблемы.
                В интернетах полно вводных статей, где описываются примеры запуска strace. Я же в этой статье покажу частные проблемы и их решение с помощью strace.
                Читать дальше →
              • Простая прокси-DLL своими руками

                Понадобилось мне перехватывать вызовы GDS32.DLL. Решил написать прокси-dll.

                Пишем исследовательский стенд


                Первое, что нам нужно — это получить список всех экспортируемых функций из настоящей dll.
                Сделаем это следующим кодом:

                1.	program GetFuncsDll;
                2.	  {$APPTYPE CONSOLE}
                3.	  uses   Windows;
                4.	  var
                5.	    ImageBase: DWORD;                  //адрес образа dll
                6.	    pNtHeaders: PImageNtHeaders;       // PE заголовок dll
                7.	    IED: PImageExportDirectory;        // адрес таблицы экспорта
                8.	    ExportAddr: TImageDataDirectory;   // таблица экспорта
                9.	    I: DWORD;                          // переменная для цикла
                10.	    NamesCursor: PDWORD;               // указатель на адрес имени функции
                11.	    OrdinalCursor: PWORD;              // указатель на адрес номера функции
                12.	    LIB_NAME:AnsiString;               // имя dll
                13.	BEGIN
                14.	  LIB_NAME:='MiniLib.dll';
                15.	  loadlibraryA(PAnsiChar(LIB_NAME));
                16.	  ImageBase := GetModuleHandleA(PAnsiChar(LIB_NAME));
                17.	  pNtHeaders := Pointer(ImageBase + DWORD(PImageDosHeader(ImageBase)^._lfanew));
                18.	  ExportAddr := pNtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];
                19.	  IED := PImageExportDirectory(ImageBase+ExportAddr.VirtualAddress);
                20.	  NamesCursor := Pointer(ImageBase + DWORD(IED^.AddressOfNames));
                21.	  OrdinalCursor := Pointer(ImageBase + DWORD(IED^.AddressOfNameOrdinals));
                22.	  For I:=0 to Integer(IED^.NumberOfNames-1) do begin
                23.	    WriteLn(output,PAnsiChar(ImageBase + PDWORD(NamesCursor)^),'=',OrdinalCursor^ + IED^.Base);
                24.	    Inc(NamesCursor);
                25.	    Inc(OrdinalCursor);
                26.	  end;
                27.	Readln;
                28.	end.
                Листинг 1
                


                Здесь трудностей вроде нет. Добираемся последовательно до таблицы экспорта (строка 19) указателей на массив имен(NamesCursor) и массива номеров(OrdinalCursor) и читаем функцию за функцией, имена и номера. Количество функций находится в поле NumberOfNames. Этот код был добыт на просторах интернета, потом доработан и упрощён.
                Читать дальше →