4 книги по реверс-инжинирингу


Оглавление (нажмите, чтобы открыть):

Reverse Engineering для начинающих

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

Вот ссылка на github этой книги, а вот ссылка на сайт автора этой книги.

Пост про книгу только увидел и естественно что всю я ее не читал, но по оглавлению и тем 10 страницам что я успел прочитал, могу сделать вывод что книга стоящая, а стоящие книги по программированию и всему что с ним связано на русском языке появляются не так часто и зачастую стоят немалых денег, а тут бесплатно! Автор заслуживает уважения и поощрения. Что меня особенно впечатлило, так это то что автор рассматривает примеры не только для x86 архитектуры процессоров, но и для процессоров ARM.

4 отличные книги по реверс-инжинирингу. #[email protected]

4 книги по реверс-инжинирингу — Библиотека программиста

Собрали несколько отличных книг по реверс-инжинирингу, которые подойдут и новичкам, и желающим попробовать что-то новое, будь то iOS или Xbox.

Комментарии (8)

Vadim Lepilov

Класс, как раз начанал учить эту тему. Спасибо редакторам.

Альфред Борден

Eternity Itself

Alfred, о реверс инжиниринге

Альфред Борден

Eternity, ты мне очень помог 🙂

Максим Ерёменко


Альфред, исследование программы на лоу уровне

Віталій Костецький

Альфред Борден

Максим, в смысле, для чайников?

Роман Лапшов

Альфред, в смысле дизассемблированный код

О проекте

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

ВАЖНО Введение в Reverse Engineering для начинающих и самых маленьких

Кто просматривает этот контент: «Тема» (Всего пользователей: 0; Гостей: 1)

X-Shar

Возможно каждый новичок и кому интересна тематика сталкивается с уроками Нарвахо (Скачать можно здесь), конечно эти уроки бесценны, но эти уроки основаны на OleDbg и как мне кажется новичкам они не совсем могут-быть понятны, хотя обязательны к прочтению !

Хочу предложить ещё одну книжку для новичков, это «Введение в reverse engineering для начинающих», там не будет нужно никаких отладчиков, зато сможете поизучать ассемблер + Си, в принципе все примеры можно будет пробовать на любой компиляторе, но там рассматривается MSVC 2010.

Хорошая книга, можно читать параллельно с Нарвахой !

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

Содержание статьи


WARNING

Reversing как искусство

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

Одна из важных частей анализа малвари — реверсинг (англ. reverse [code] engineering), или «обратная разработка», программного обеспечения. Если в двух словах, реверсинг — это попытка изучить и воссоздать алгоритмы работы программы, не имея на руках исходных кодов, с помощью специальных отладочных техник. По сравнению с анализом малвари тут возникает очень много весьма тонких нюансов. Во-первых, реверсинг ПО в абсолютном большинстве случаев запрещается лицензионным соглашением, так что любые попытки что-то изучить в «образовательных целях» совершаются только на свой страх и риск. Анализ же малвари таких ограничений не содержит, более того, это «дело благородное» — к примеру, изучив, каким образом ramsomware шифрует файлы жертвы, можно попробовать создать для нее декриптор, что, кстати, очень часто и делают разработчики антивирусного ПО. Во-вторых, реверсинг, как правило, направлен в сторону коммерческого ПО, делающего из trial или незарегистрированной версии ПО вполне рабочую (warez). Иными словами, это распространение пиратских копий ПО. Эти действия нарушают множество статей авторского и интеллектуального права, патентного законодательства, международных соглашений и тому подобного.

Несмотря на неодобрение большинства представителей власти, ИТ-бизнеса и закона, в хакерском смысле реверсинг имеет и положительные стороны. К примеру, благодаря изучению программного обеспечения многие эксперты по безопасности обнаружили различные недокументированные возможности в ПО, которые обернулись большим скандалом для вендоров и производителей. Сюда же можно отнести и найденные 0day-уязвимости, которые не афишировались на публику до выпуска официальных патчей. Поклонникам open source, скорее всего, известен термин Clean room design, иными словами — способ копирования дизайна без нарушения авторских прав и коммерческой тайны разработчика. Так, к примеру, поступают с проприетарными графическими драйверами Nvidia под Linux-системы, пытаясь воссоздать оригинальную архитектуру, чтобы выпустить open source драйвер.

Мастер Йода рекомендует:  Использование изображений рамок CSS

Готовим домашнюю лабораторию

Самый простой способ (и самое гибкое решение) создать тестовую домашнюю лабораторию для изучения малвари — установить виртуальную машину на настольный компьютер или ноутбук. Помимо того что виртуальные ОС позволяют обезопасить свою рабочую среду от случайного разрушения при работе с вредоносами, ты еще и сэкономишь кучу времени и усилий на разворачивание стендов, используя все преимущества снапшотов и V2V-копирования.

Из виртуальных сред наиболее доступны VirtualBox, MS Hyper-V и QEMU.

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

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

Методы анализа вредоносных программ

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

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

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

Основные инструменты для исследований

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


1. Некоторые инструменты статического анализа

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Избранные ссылки по реверс-инжинирингу

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

1. Reverse engineering:

• «Искусство дизассемблирования», Крис Касперски — это не новая, но до сих пор актуальная книга, где знания прекрасно систематизированы. Однозначно must read; • «Practical RE tips» — прекрасный вебинар на английском. Содержит множество полезных советов и скриптов; • «OPENSECURITYTRAINING.INFO» — это сайт, где можно найти хорошие видеоролики и обучающие лекции по RE; • «Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation» — более новая книга, написанная известными специалистами по информационной безопасности. Её особенность в том, что она покрывает моменты и темы, не раскрытые в книге Криса Касперски; • «Реверсинг для начинающих», Денис Юричев — бесплатная и известная книга, переведённая на множество языков. После каждой главы есть интересные задания для нескольких архитектур сразу; • «Digging Through the Firmware» — серия статей для тех, кто только погружается в тему реверс-инжиниринга прошивок устройств; • «CRYPTO101» — введение в криптографию, без которой вам тоже не обойтись.

2. Поиск уязвимостей:

• «Fuzzing: Brute Force Vulnerability Discovery» — тоже книга и тоже не новая. Но зато отлично подходит для понимания основ фаззинга. Можно найти на русском языке; • «The Evolving Art of Fuzzing» — полезная статья про развитие фаззинга; • «Modern Security Vulnerability Discovery» — компиляция различных техник поиска уязвимостей, собранных в одном месте; • «(State of) The Art of War: Offensive Techniques in Binary Analysis» — этот документ включает в себя все существующие техники поиска уязвимостей; • «The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities» — опять же, не новая, но весьма полезная и актуальная книга про различные подходы к поиску уязвимостей.

3. Примеры эксплуатации уязвимостей:

• «Exploit Writing Tutorials by Corelan Team» — серия постов про написание шеллкодов и эксплоитов, начиная с основ. Некоторые посты есть в переводе; • «Modern Binary Exploitation» — подбор материалов от команды RPISEC с их учебного курса, который они проводили в Rensselaer Polytechnic Institute; • «Web-архив блога компании Vupen» — блог, который канул в лету. Тем не менее, сетевые технологии сохраняют всё или почти всё. В нашем случае нас интересуют примеры эксплуатации сложных уязвимостей в Firefox, IE10, VirualBox, XEN, Windows Kernel, Adobe Flash/Reader; • «Project Zero» — блог, который ведёте исследовательская команда из Google. Здесь частенько встречаются интересные истории по эксплуатации крутых уязвимостей; • «Browser mitigations against memory corruption vulnerabilities» — технологии защиты, которые используются в популярных браузерах: • «SoK: Eternal War in Memory» — в этом документе показана модель атаки и описаны разные механизмы предотвращения эксплуатации на различных стадиях для разных типов уязвимостей, которые связаны с повреждением памяти; • «Writing Exploits for Win32 Systems from Scratch» — пишем эксплоит с нуля для уязвимости в программе SLMAIL; • «Phrack» — знаменитый журнал для хакеров. Есть много полезных материалов; • «The Shellcoder’s Handbook: Discovering and Exploiting Security Holes» — опять книга, но на этот раз перед вами легендарное произведение, посвящённое написанию шеллкодов.

Мастер Йода рекомендует:  Backend Developer

4. Анализ вредоносных программ:

• «Practical Malware Analysis» — хорошая книга, а вот её исходники на гитхабе: «Practical Malware Labs»; • «Malware Analysis Tutorials: a Reverse Engineering Approach» — серия статей, посвящённых настройке окружения с последующим анализом вредоносных программ. Есть перевод; • «Course materials for Malware Analysis by RPISEC» — снова курс от RPISEC, но уже про вредоносные программы; • «Компьютерные вирусы и антивирусы. Взгляд программиста» — в книге рассматриваются вредоносные программы, начиная со времён DOS. Но она всё равно будет вам полезна, т. к. кроме анализа кода показываются примеры написания антивирусов под каждый конкретный случай.

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

Понимание языка ассемблера. Reverse Engineering для начинающих


В 2014-2020 книга называлась “Reverse Engineering для начинающих”, но я всегда подозревал что это слишком сужает аудиторию. Люди от инфобезопасности знают о “reverse engineering”, но я от них редко слышу слово “ассемблер”. Точно также, термин “reverse engineering” слишком незнакомый для общей аудитории программистов, но они знают про “ассемблер”. В июле 2020, для эксперимента, я заменил название на “Assembly Language for Beginners” и запостил ссылку на сайт Hacker News8, и книгу приняли, в общем, хорошо. Так что, пусть так и будет, у книги будет два названия.

Издательство: Интернет издание
Год 2020
Автор: Юричев Д.
Жанр Программирование
Формат: pdf
Страниц: 1042
Язык: русский
Размер: 51 Мб

Reverse Engineering для начинающих

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

Вот ссылка на github этой книги, а вот ссылка на сайт автора этой книги.

Пост про книгу только увидел и естественно что всю я ее не читал, но по оглавлению и тем 10 страницам что я успел прочитал, могу сделать вывод что книга стоящая, а стоящие книги по программированию и всему что с ним связано на русском языке появляются не так часто и зачастую стоят немалых денег, а тут бесплатно! Автор заслуживает уважения и поощрения. Что меня особенно впечатлило, так это то что автор рассматривает примеры не только для x86 архитектуры процессоров, но и для процессоров ARM.

LiveInternetLiveInternet

Поиск по дневнику

Подписка по e-mail

Постоянные читатели

Статистика

Избранное: ссылки по reverse engineering

Вторник, 15 Августа 2020 г. 10:42 + в цитатник

Сегодня мы хотели бы поделиться своим списком материалов по тематике reverse engineering (RE). Перечень этот очень обширный, ведь наш исследовательский отдел в первую очередь занимается задачами RE. На наш взгляд, подборка материалов по теме хороша для старта, при этом она может быть актуальной в течение продолжительного времени.

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

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


Итак, перейдем к списку материалов!

1. Тематики

В данном разделе мы рассмотрим основные направления применения RE. Начнем непосредственно с самого процесса обратной разработки, перейдем к поиску уязвимостей и разработке эксплоитов, и, конечно, доберемся до анализа вредоносных программ.

1.a Reverse engineering

1.b Поиск уязвимостей

1.c Примеры эксплуатации найденных уязвимостей

1.d Анализ вредоносных программ

2. Необходимый инструментарий

Ниже представлены популярные инструменты, применяемые при RE.

2.a IDA Pro

2.b Radare2

2.c WinDBG (Ollydbg / Immunity Debugger / x64dbg)

Без знания принципов работы отладчика и умения им пользоваться тоже не обойтись. Ниже мы рассмотрим отладчики для ОС Windows, а в следующем пункте уделим внимание знаменитому GDB. Итак, поехали:

  • Advanced Windows Debugging: Developing and Administering Reliable, Robust, and Secure Software — в первую очередь, эта книга пригодится для понимания и «отлова» ошибок типа повреждения кучи;
  • «Inside Windows Debugging: A Practical Guide to Debugging and Tracing Strategies in Windows» — это издание хорошо дополнит предыдущую книгу;
  • «Введение в крэкинг с нуля, используя OllyDbg» — к сожалению, старейший ресурс wasm.ru закрылся, но подобная подборка легко ищется, поскольку была продублирована на множество ресурсов. К тому же, в сети стали появляться «форки», только в них уже используется x64dbg или IDA.

2.d GDB


2.e DBI

Программируемая отладка — это сегодня неотъемлемый подход в арсенале любого реверсера. И DBI — один из инструментов. Подробнее:

  • «Dynamic Binary Instrumentation в ИБ» — в этой статье уже собрана некоторая обобщенная информация про DBI;
  • «Light And Dark Side Of Code Instrumentation» — данная презентация поможет вам ориентироваться в разновидностях различных инструментаций кода и в том, что и когда вам может помочь с анализом программ.

2.f SMT

Что такое SMT-решатель? Если кратко, SMT-решатель — это программа, которая может решать логические формулы.

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

Мастер Йода рекомендует:  Критический баг в npm 5.7.0 «ломает» файловую систему Linux

Другими словами, SMT предоставляет математический аппарат для семантического анализа кода.
SMT-решатели уже довольно давно применяются в нашей сфере. Они неплохо зарекомендовали себя для решения следующих задач:

  • поиск багов (статический анализ/фаззинг);
  • деобфускация;
  • «домашний» криптоанализ;
  • символьное исполнение (в качестве «движка»);
  • также есть определенные успехи в области автоматической генерации эксплойтов (например, генерации ROP).

За это время SMT потеряла ореол таинственности, появились более-менее работающие инструменты для «простых» людей.

Ниже приведены источники, которые помогут погрузиться в тему:

  • «SMT Solvers for Software Security, Sean Heelan, Rolf Rolles» — пожалуй, первая научная работа, в которой было предложено применение SMT для решения задач в области безопасности ПО. Дает представление о том, где и как SMT может найти свое место в данной сфере;
  • Z3 — один из самых популярных и эффективных SMT-решателей;
    • Z3 wiki – репозиторий проекта;
    • «Getting Started with Z3: A Guide» — онлайн-учебник, SMT-решатель для экспериментов;
    • Z3Py — обвязка на Python для Z3;
  • «Theorem prover, symbolic execution and practical reverse-engineering» — хорошая обзорная презентация, с примерами решения реальных задач и применения Z3Py;
  • «Quick introduction into SAT/SMT solvers and symbolic execution» (версия на русском) – хорошая книга с интересными практическими примерами.

  • «An introduction to the use SMT solvers» — обзорный материал.

2.g Python для автоматизации

Сегодня без знаний основ языка Python будет очень сложно, потому что этот язык программирования считается самым популярном средством для автоматизации различных задач в сфере ИБ (и не только). К тому же, он используется в различных утилитах (к примеру, все указанные выше утилиты позволяют дополнять функционал с помощью этого ЯП):

  • «Gray Hat Python» (перевод) — отличная книга, которая расскажет, чем полезен Python в реверсе;
  • «The Beginner’s Guide to IDAPython» — бесплатная книга о IDAPython;
  • «Python Arsenal for Reverse Engineering» — ресурс, посвященный различным утилитами и библиотекам для reverse engineering, использующим Python.

2.h BAF (Binary Analysis Frameworks)

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

Несколько интересных фреймворков/инструментов:

3. Архитектуры

Мы рассмотрим только несколько популярных архитектур. В конце статьи в разделе с дополнительными материалами вы найдете информацию по многим другим (MIPS, PowerPC и т.д.).

3.a x86-x86_64

3.b ARM

Знание принципов работы популярных Операционных Систем.

4.a Windows


4.b Linux

4.c Mac OS(OSX) / iOS

4.d Android

5. Форматы исполняемых файлов

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

5.a PE

5.b ELF

5.c Mach-O

Известный исследователь corkami делает очень полезные и интересные «постеры» со схемой различных форматов файлов, в том числе, упомянутых выше. Советуем использовать их как шпаргалку.

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

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

6.a C/C++

6.b ASM

7. Практика

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

7.a War Games


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

Reverse Engineering для начинающих

У термина «reverse engineering» несколько популярных значений:

1) исследование скомпилированных программ;

2) ска- нирование трехмерной модели для последующего копирования;

3) восстановление структуры СУБД.

Настоящий сборник заметок связан с первым значением.

x86/x64, ARM/ARM64, MIPS, Java/JVM.

Oracle RDBMS , Itanium, донглы для защиты от копирования , LD_PRELOAD , переполнение стека, ELF9, формат файла PE в win32 , x86-64 , критические секции, системные вызовы , TLS10, адресно-независимый код, profile- guided optimization , C++ STL , OpenMP , SEH.

Юричев Д. — Введение в reverse engineering для начинающих

Заметки о reverse engineering на русском языке для начинающих, для тех кто хочет научиться понимать создаваемый Си/Си++ компиляторами код для архитектур x86/x64, ARM/ARM64, MIPS, Java/JVM.

У термина «reverse engineering» несколько популярных значений: 1) исследование скомпилированных программ; 2) сканирование трехмерной модели для последующего копирования; 3) восстановление структуры СУБД. Настоящий сборник заметок связан с первым значением.

Когда автор этой книги учил Си, а затем Си++, он просто писал небольшие фрагменты кода, компилировал и смотрел, что получилось на ассемблере. Так было намного проще понять. Он делал это такое количество раз, что связь между кодом на Си/Си++ и тем, что генерирует компилятор, вбилась в его подсознание достаточно глубоко. После этого не трудно, глядя на код на ассемблере, сразу в общих чертах понимать, что там было написано на Си. Возможно это поможет кому-то ещё.

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

Содержание:
1 Образцы кода 1
2 Важные фундаментальные вещи 437
3 Более сложные примеры 459
4 Java 638
5 Поиск в коде того что нужно 677
6 Специфичное для ОС 713
7 Инструменты 768
8 Примеры из практики 771
9 Примеры разбора закрытых (proprietary) форматов файлов 910
10 Прочее 973
11 Что стоит почитать 987
12 Сообщества 990
Послесловие 992
Приложение 994
Список принятых сокращений 1023
Глоссарий 1028
Предметный указатель 1030

Заголовок: Введение в reverse engineering для начинающих
Автор: Юричев Д.
Язык: Русский
Издательство: Интернет-издание
Жанр: Компьютерная литература
Создан: 2020
Формат: pdf
Страниц: 1056
Размер: 10.2 MB

Добавить комментарий