МЕНЮ

 

Реверс инжиниринг для начинающих. Что это такое?

Инжиниринг – это в первую очередь процесс создание чего-либо. В IT под этим понятием подразумевается создание компьютерного программного обеспечения, где из исходного кода мы получаем в итоге конечный продукт. Можно привести аналогию, где мы засовываем в мясорубку корову и на выходе получаем колбаску. Термин реверс-инжиниринг подразумевает обратный процесс, где мы из колбасы пытаемся получить обратно корову. Таким образом, обратная разработка – это некий ряд действий, направленный на исследование программного обеспечения с целью определения его основных функций. Zip File, мамкины хаЦкеры. С вами Денчик и сегодня мы поговорим об ещё одной популярной методике исследования приложений под названием Реверс-инжиниринг.

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

Если вы хотите учиться не только по роликам на ютубе, а перенимать опыт у именитых экспертов международного уровня, рекомендую обратить внимание на курсы образовательной платформы SkillBox.

В частности, в рамках обучения современной профессии "DevOps-инженер", спикеры, в числе которых руководитель IT инфраструктуры SkyEng, Head of DevOps ВТБ и Lead DevOps services из Росгосстраха.

Научат вас работать с самой популярной системой контейнеризации Docker. Применять принципы CI/СD, а также создавать окружения с помощью Ansible и Terrafrom.

Вы поймёте, как собирать метрики и логи с помощью Prometheus и elk-стека, разберётесь, как строить удобные дашборды в Grafana. Узнаете всё про работу с инцидентами и принцип системы обратной связи.

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

А в конце обучения, под руководством опытного наставника вы подготовите индивидуальный итоговый проект, пройдя все этапы работы над полноценной платформой. Всё как в реальной компании.

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

Курс отлично подойдет IT-специалистам самого разного уровня. Ворваться в DevOps-инжиниринг можно, как из программирования, так и из сетевого администрирования

Нескучные материалы от экспертов индустрии, воркшопы, большое количество практики на основе реальных кейсов, ну и конечно же, гарантия трудоустройства. Если вы после обучения не получите оффер, скиллбокс вернёт деньги.

Содействовать в вопросах трудоустройства вам будет Центр карьеры SkillBox. Его задача помочь составить эффективное резюме, организовать собеседования в топовых компаниях IT-сектора, и в конечном итоге устроить вас на приличную должность.

Системным администратором. Или DevOPS-инженером. Там уж сами, по ходу дела определитесь, к чему больше душа лежит. В общем, если хотите присоединиться к этой движухе – Welcome.

Ссылка на курс по DevOps-инжинирингу от SkillBox будет в описании. Длительность данной программы составляет всего 7 месяцев, из которых на первые три действует отсрочка оплаты.

Так что начать учиться можно прямо сейчас и при этом совершенно бесплатно. Поэтому не тупи. Бегом учиться, пока есть такая выгодная возможность!

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

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

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

Т.е. люди, которые создают, к примеру антивирусное ПО, занимают реверс-инжинирингом вирусов, троянов и прочих зловредов, а потом на основе полученных данных создают различные правила детектирования.

Помимо антивирусов эти правила можно внедрять в такие инструменты, как YARA и Suricata. Я как сетевик, по правде, работал только с последним. Сурик – это мониторилка сетевого трафика, которая обычно развёртывается для веб-сервера.

Техники реверс-инжиниринга

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

Какие-то языки весьма дружелюбны к данной методе. Например, JAVA и C# выдадут вам код очень близкий к оригинальному. А вот Си и C++ зачастую покажут вместо исходника лишь фрагменты с нечитаемым месивом.

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

Иными словами, вы получаете программу в виде машинного кода. К слову, о том, что такое ассемблер, я рассказывал в одном из недавних роликов. Если не забуду – ссылка появится в правом углу.

Ну и третий метод — это классический сниффинг с помощью специальных средств для получения информации об обмене данными исследуемого приложения с внешним миром.

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

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

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

А затем передаёте эти данные провайдеру, хостингу или вообще в случае, если ситуация из ряда вон выходящая – прямо в соответствующие органы.

Ведь именно так в правовом государстве должны поступать квалифицированные специалисты по инфобезу, правда?

Ладно. Это всё лирика. Понятное дело, что, если есть техники, должны быть и специальные инструменты посредством которых их можно реализовывать. Одним из таких инструментов является REMnux.

Это Линуксовый дистрибутив на базе Ubuntu ориентированный непосредственно на анализ вредоносного программного обеспечения в коде и реверс-инжиниринг.

Примеры, которые будут описываться далее в ролике проделаны именно из-под данной ОС. Так, что настоятельно рекомендую вам скачать её образ с официального сайта, если планируете углубиться в тему ревёрсинга не только теоретически.

Анализ приложения

Рассмотрим анализ простого приложения написанного на языке Си. Сразу отмечу, что для успешного применения техник реверс-инжиниринга почти всегда необходимо хорошее знание языка ассемблера и понимание работы операционных систем.

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

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

Каким вообще образом можно исследовать приложение? В общем и целом, делать это можно даже при помощи стандартных консольных утилит, предоставляющих какую-то информацию.

Например, утилит file и xxd. Первая, как понятно из названия, позволяет увидеть ключевую информацию о файлах в текущем каталоге. Если есть какая-то Java-программа или скриптец, можно попробовать его сразу декомпилировать.

Код полученный в результате практически не будет отличаться от оригинала. Это особенность Java, которая просто есть. С приложениями, написанными на Си, такая метода увы не прокатит.

Икс Икс Ди в свою очередь выводит байтики ваших файлов. Пример этой петрушки вы сейчас видите на экране. Тут представлена некая магическая последовательность для Java-класса.

Инструмент exiftool выводит почти ту же информацию, что и утилита file, только в более расширенной форме. С этим всё ясно и без моих тупых комментариев.

Strings выдирает из файла всё, что худо-бедно похоже на строки. И если быть внимательнее среднестатистического эникея, то можно узреть в этом мясилове ценную информацию.

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

Cutter

Но как бы не были круты описанные ранее методы, все они меркнут в сравнении с профессиональными программами, созданными специально для реверс-инжиниринга в затхлых хаЦкерских колуарах.

Одной из таких программулин является Cutter. Это свободно распространяемая платформа для реверс-инжиниринга на основе Rizin (он же бывший Radar 2).

В Cutter прям из коробки встроен декомпилятор, дизасемблер, отладчик, hex-редактор для данных в 16-ричной виде и прочие классные плюшки.

Но самое главное то, что в отличие от радара тут уже сделали адекватный графический интерфейс.

Выглядит он следующим образом. Окно Дашборда. Разбор по строкам. Импорты. Вышеупомянутый дизасемблер. Представление дизасемблированного кода в виде графа.

Возможность посмотреть хекс. Декомпилятор.

Короче нудное копание в коде на вечер другой вам обеспечено по полной программе. Было ж желание, как говорится.

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

Всё это само собой не сработает с программами, в которых код был подвергнут обфускации. Либо если исполняемый файл подписали с помощью специального сертификата. Или вообще создали самоизменяемую программу.

В такой ситуации остаётся только одно. Шерстить прогу отладчиком изучая содержимое памяти и анализируя ход её исполнения. Но это уже совсем другая история достойная отдельной увлекательной жизни.

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

Если тебе зашёл такой IT-движ, то обязательно кликай на кнопку «Подписаться» и не забудь отжмякать на колокольчик. Иначе уведомления о новых бодрых видосах ютуб не пришлёт.

Ютуб вообще не любит контент на тему безопасности и этичного хаЦкинга. Так что дополнительно не поленись и подпишись на паблик в тележке. Там рассылка доходит в 120ти из 100 случаев.

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

Сетевое и системное администрирование на Windows и Linux, вардрайвинг, работа с распределённой системой Git и ещё куча полезных вещей, для тех, кто действительно хочет учиться и развиваться.

Если сейчас нет монетки, чтоб поддержать мой проект – то всё равно переходи и изучай бесплатный курс «Информационная безопасность с нуля до джуна».

К слову, данное видео – тоже является лекционным материалом к этому курсу.

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

Так, что давай, хаЦкер, не затягивай с этим делом и начинай учиться действительно полезным вещам, пока аудитория Овера тихонечко **чит на видосы про ратники и пакеты из вирусов.

Тебе с этими **нами точно не по пути. Серьёзным людям – серьёзные знания. Поэтому пиши в комментах с двух рук, чтобы ты хотел увидеть в следующем выпуске, и я сразу же метнусь писать 100 страничный сценарий.

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

Берегите себя и свои программные разработки. Защищайте их от нерадивых ревёрсеров и помните,

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

Увидимся ровно через неделю. До новых встреч, мои кайфные друже. Всем пока.

 

Не можешь понять, куда делись видео по взломам и хакингу? Они переехали в наш уютный паблик в телеге

telegram chanel

Хочешь больше контента? Подписывайся на YouTube-канал!

Курс «Диплом за неделю»

Пособие «Библия вардрайвинга»

Курс Cisco «CCNA: Introduction to Networks»

© 2024. IT-спец. Денис Курец.