- PVSM.RU - https://www.pvsm.ru -
Всем привет!
Сегодня мы хотели бы поделиться своим списком материалов по тематике reverse engineering (RE). Перечень этот очень обширный, ведь наш исследовательский отдел в первую очередь занимается задачами RE. На наш взгляд, подборка материалов по теме хороша для старта, при этом она может быть актуальной в течение продолжительного времени.
Данный список ссылок, ресурсов, книг мы уже лет пять рассылаем людям, которые хотели бы попасть в наш исследовательский отдел, но не проходят пока по уровню знаний или только начинают свой путь в сфере информационной безопасности. Естественно, этому перечню, как и большинству материалов/подборок, через некоторая время потребуется обновление и актуализация.
Забавный факт: нам показывали, как некоторые компании рассылают наш список материалов от себя, но только в очень старой редакции. И вот после этой публикации они, наконец, смогут использовать его обновленную версию с чистой совестью ;)
Итак, перейдем к списку материалов!
В данном разделе мы рассмотрим основные направления применения RE. Начнем непосредственно с самого процесса обратной разработки, перейдем к поиску уязвимостей и разработке эксплоитов, и, конечно, доберемся до анализа вредоносных программ.
Ниже представлены популярные инструменты, применяемые при RE.
Без знания принципов работы отладчика и умения им пользоваться тоже не обойтись. Ниже мы рассмотрим отладчики для ОС Windows, а в следующем пункте уделим внимание знаменитому GDB. Итак, поехали:
Программируемая отладка — это сегодня неотъемлемый подход в арсенале любого реверсера. И DBI — один из инструментов. Подробнее:
Что такое SMT-решатель? Если кратко, SMT-решатель — это программа, которая может решать логические формулы.
Основная идея применения SMT в области безопасности ПО заключается в том, чтобы перевести программный код или алгоритм в логическую формулу, а затем с помощью SMT-решателя проверить то или иное свойство этого кода.
Другими словами, SMT предоставляет математический аппарат для семантического анализа кода.
SMT-решатели уже довольно давно применяются в нашей сфере. Они неплохо зарекомендовали себя для решения следующих задач:
За это время SMT потеряла ореол таинственности, появились более-менее работающие инструменты для "простых" людей.
Ниже приведены источники, которые помогут погрузиться в тему:
Сегодня без знаний основ языка Python будет очень сложно, потому что этот язык программирования считается самым популярном средством для автоматизации различных задач в сфере ИБ (и не только). К тому же, он используется в различных утилитах (к примеру, все указанные выше утилиты позволяют дополнять функционал с помощью этого ЯП):
Для немного более продвинутых мы рекомендуем обратить внимание на целые фреймворки, которые в своем составе используют ранее упомянутые механизмы и средства анализа для решения более сложных задач. Итак, вот они:
Несколько интересных фреймворков/инструментов:
Мы рассмотрим только несколько популярных архитектур. В конце статьи в разделе с дополнительными материалами вы найдете информацию по многим другим (MIPS, PowerPC и т.д.).
Знание принципов работы популярных Операционных Систем.
В этом разделе представлены ссылки, разъесняющие подробности популярных форматов исполняемых файлов.
Известный исследователь corkami [130] делает очень полезные и интересные "постеры" со схемой различных форматов файлов, в том числе, упомянутых выше. Советуем использовать их как шпаргалку.
Один наш знакомый как-то сказал, что хороший реверсер это на 80% хороший программист. Умение программировать и понимание того, что и зачем делается, упрощает процесс исследования чужой программы. Поэтому без программирования в реверсе никуда. Ну и конечно автоматизация рутинной задачи, как вы уже наверняка поняли, — очень полезная вещь ;)
В этой секции представлены ссылки на виртуальные машины и online-ресурсы, позволяющие попрактиковаться.
Ну и напоследок несколько ссылок с большим количеством материалов по вышеуказанным темам:
Автор: dukebarman
Источник [150]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/262263
Ссылки в тексте:
[1] Тематики: #1-tematiki
[2] Реверс: #1a-reverse-engineering
[3] Поиск уязвимостей (fuzzing): #1b-poisk-uyazvimostey
[4] Эксплуатация уязвимостей: #1c-primery-ekspluatacii-naydennyh-uyazvimostey
[5] Анализ вредоносного кода: #1d-analiz-vredonosnyh-programm
[6] Инструменты: #2-neobhodimyy-instrumentariy
[7] IDA Pro: #2a-ida-pro
[8] Radare2: #2b-radare2
[9] WinDBG (Ollydbg / Immunity Debugger / x64dbg): #2c-windbg-ollydbg--immunity-debugger--x64dbg
[10] GDB: #2d-gdb
[11] DBI: #2e-dbi
[12] SMT: #2f-smt
[13] Python для автоматизации: #2g-python-dlya-avtomatizacii
[14] BAF (Binary Analysis Frameworks): #2h-baf-binary-analysis-frameworks
[15] Архитектуры: #3-arhitektury
[16] x86-x86_64: #3a-x86-x86_64
[17] ARM: #3b-arm
[18] ОС: #4-os
[19] Windows: #4a-windows
[20] Linux: #4b-linux
[21] Mac OS(OSX) / iOS: #4c-mac-ososx--ios
[22] Android: #4d-android
[23] Форматы файлов: #5-formaty-ispolnyaemyh-faylov
[24] PE: #5a-pe
[25] ELF: #5b-elf
[26] Mach-O: #5c-mach-o
[27] Программирование: #6-programmirovanie
[28] C/C++: #6a-cc
[29] Assembler: #6b-asm
[30] Практика: #7-praktika
[31] War games: #7a-war-games
[32] Искусство дизассемблирования: http://www.ozon.ru/context/detail/id/5061928/
[33] Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118787315,subjectCd-CSJ0.html
[34] Реверсинг для начинающих: http://beginners.re/
[35] Practical RE tips: http://gynvael.coldwind.pl/?id=531
[36] OPENSECURITYTRAINING.INFO: http://opensecuritytraining.info/Training.html
[37] Digging Through the Firmware: http://jcjc-dev.com/2016/12/14/reversing-huawei-5-reversing-firmware/
[38] Training: Security of BIOS/UEFI System Firmware from Attacker and Defender Perspectives: https://github.com/advanced-threat-research/firmware-security-training
[39] CRYPTO101: https://www.crypto101.io/
[40] Fuzzing: Brute Force Vulnerability Discovery: http://www.amazon.com/Fuzzing-Brute-Force-Vulnerability-Discovery/dp/0321446119
[41] Автоматический поиск уязвимостей в программах без исходных текстов: http://blog.cr4.sh/2011/06/positive-hack-days-2011.html
[42] The Evolving Art of Fuzzing: http://vdalabs.com/tools/The_Evolving_Art_of_Fuzzing.pdf
[43] Modern Security Vulnerability Discovery: https://www.nccgroup.trust/uk/our-research/research-insights-vol-9-modern-security-vulnerability-discovery/
[44] (State of) The Art of War: Offensive Techniques in Binary Analysis: http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7546500
[45] The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities: https://www.amazon.com/The-Software-Security-Assessment-Vulnerabilities/dp/0321444426
[46] Exploit Writing Tutorials by Corelan Team: https://www.corelan.be/index.php/articles/
[47] перевод: https://forum.reverse4you.org/showthread.php?t=1371
[48] Exploit Development Community: http://expdev-kiuhnm.rhcloud.com/2015/05/11/contents/
[49] перевод частичный: https://forum.reverse4you.org/showthread.php?t=2070
[50] Modern Binary Exploitation: http://security.cs.rpi.edu/courses/binexp-spring2015/
[51] RPISEC: https://rpis.ec/
[52] Web-архив блога компании Vupen: http://web.archive.org/web/20150823001404/http://www.vupen.com/blog/
[53] Project Zero: http://googleprojectzero.blogspot.ru/
[54] Browser mitigations against memory corruption vulnerabilities: https://docs.google.com/document/d/19dspgrz35VoJwdWOboENZvccTSGudjQ_p8J4OPsYztM/edit#
[55] Браузеры и app specific security mitigation. Часть 1: https://habrahabr.ru/company/dsec/blog/310676/
[56] Браузеры и app specific security mitigation. Часть 2. Internet Explorer и Edge: https://habrahabr.ru/company/dsec/blog/311616/
[57] Браузеры и app specific security mitigation. Часть 3. Google Chrome: https://habrahabr.ru/company/dsec/blog/319234/
[58] SoK: Eternal War in Memory: https://people.eecs.berkeley.edu/~dawnsong/papers/Oakland13-SoK-CR.pdf
[59] Writing Exploits for Win32 Systems from Scratch: https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2016/june/writing-exploits-for-win32-systems-from-scratch/
[60] Phrack: http://phrack.org/
[61] The Shellcoder's Handbook: Discovering and Exploiting Security Holes: https://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X
[62] Practical Malware Labs: https://github.com/Grazfather/PracticalMalwareLabs
[63] Practical Malware Analysis: https://www.nostarch.com/malware
[64] Malware Analyst's Cookbook and DVD: Tools and Techniques for Fighting Malicious Code: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470613033.html
[65] Malware Analysis Tutorials: a Reverse Engineering Approach: http://fumalwareanalysis.blogspot.in/p/malware-analysis-tutorials-reverse.html
[66] перевод: https://forum.reverse4you.org/showthread.php?t=1327
[67] Course materials for Malware Analysis by RPISEC: https://github.com/RPISEC/Malware
[68] Компьютерные вирусы и антивирусы. Взгляд программиста: https://www.ozon.ru/context/detail/id/19954694/
[69] The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler: http://www.amazon.co.uk/The-IDA-Pro-Book-ebook/dp/B005EI84TM/
[70] TiGa's Video Tutorial Series on IDA Pro: http://www.woodmann.com/TiGa/idaseries.html
[71] Open Analysis Live: https://vimeo.com/oalabs
[72] The radare2 book: https://www.gitbook.com/book/radare/radare2book/details
[73] Radare2 Cheatsheet: https://github.com/radare/radare2/blob/master/doc/intro.md
[74] Radare Today — the blog of radare2: http://radare.today/
[75] Advanced Windows Debugging: Developing and Administering Reliable, Robust, and Secure Software: https://www.amazon.co.uk/Advanced-Windows-Debugging-Administering-Addison-Wesley/dp/0321374460
[76] Inside Windows Debugging: A Practical Guide to Debugging and Tracing Strategies in Windows: https://www.amazon.com/Inside-Windows-Debugging-Developer-Reference/dp/0735662789
[77] gdb Debugging Full Example (Tutorial): ncurses: http://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html
[78] GEF — Multi-Architecture GDB Enhanced Features for Exploiters & Reverse-Engineers: https://github.com/hugsy/gef
[79] GEF Tutorials: https://www.youtube.com/playlist?list=PLjAuO31Rg972WeMvdR_57Qu-aVM8T6DkQ
[80] Dynamic Binary Instrumentation в ИБ: https://habrahabr.ru/company/dsec/blog/142575/
[81] Light And Dark Side Of Code Instrumentation: https://www.slideshare.net/phdays/light-and-dark-side-of-code-instrumentation
[82] SMT Solvers for Software Security, Sean Heelan, Rolf Rolles: http://openwall.info/wiki/_media/people/jvanegue/files/woot12.pdf
[83] Z3 : https://github.com/Z3Prover/z3
[84] Z3 wiki: https://github.com/Z3Prover/z3/wiki
[85] Getting Started with Z3: A Guide: http://rise4fun.com/z3/tutorial
[86] Z3Py : https://github.com/Z3Prover/z3/wiki/Using-Z3Py-on-Windows
[87] Theorem prover, symbolic execution and practical reverse-engineering: https://doar-e.github.io/presentations/securityday2015/SecDay-Lille-2015-Axel-0vercl0k-Souchet.html#/
[88] Quick introduction into SAT/SMT solvers and symbolic execution: https://yurichev.com/writings/SAT_SMT_draft-EN.pdf
[89] версия на русском: https://yurichev.com/writings/SAT_SMT_draft-RU.pdf
[90] An introduction to the use SMT solvers: https://www.slideshare.net/DefconRussia/georgy-nosenko-an-introduction-to-the-use-smt-solvers-for-software-security
[91] Gray Hat Python: https://www.nostarch.com/ghpython.htm
[92] перевод: https://www.reverse4you.org/translate/GHP/Book/Gray_Hat_Python.pdf
[93] The Beginner's Guide to IDAPython: http://hooked-on-mnemonics.blogspot.ru/2015/04/the-beginners-guide-to-idapython.html
[94] Python Arsenal for Reverse Engineering: https://twitter.com/pythonarsenal
[95] Overview and Usage of Binary Analysis Frameworks: https://bsidesljubljana.si/wp-content/uploads/2017/02/fmagin-BSides-Ljubljana-Binary-Analysis-Frameworks-release.pdf
[96] Triton: https://github.com/JonathanSalwan/Triton
[97] Примеры по использованию от разработчиков: https://github.com/JonathanSalwan/Triton/tree/master/src/examples
[98] Dynamic Binary Analysis and Obfuscated Codes: https://triton.quarkslab.com/files/sthack2016-rthomas-jsalwan.pdf
[99] How Triton can help to reverse virtual machine based software protections: https://triton.quarkslab.com/files/csaw2016-sos-rthomas-jsalwan.pdf
[100] Experimenting with Z3 — Dead code elimination: http://zubcic.re/blog/experimenting-with-z3-dead-code-elimination
[101] Experimenting with Z3 — Proving opaque predicates: http://zubcic.re/blog/experimenting-with-z3-proving-opaque-predicates
[102] Angr: http://angr.io/
[103] Solving kao's toy project with symbolic execution and angr: https://0xec.blogspot.ru/2016/04/solving-kaos-toy-project-with-symbolic.html
[104] Ponce: https://github.com/illera88/Ponce
[105] Binary Analysis Platform: https://github.com/BinaryAnalysisPlatform/bap
[106] Intel 64 and IA-32 Architectures Software Developer Manuals: https://software.intel.com/en-us/articles/intel-sdm
[107] Azeria Labs (ARM Assembly Basics & ARM Exploit Development): https://azeria-labs.com/
[108] Introduction to ARM: http://opensecuritytraining.info/IntroARM.html
[109] VisUAL: https://salmanarif.bitbucket.io/visual/
[110] Windows Internals: https://www.amazon.com/Windows-Internals-Part-Developer-Reference/dp/0735648735
[111] Windows exploits, mostly precompiled: https://github.com/abatchy17/WindowsExploits
[112] Exploit Development Environment: https://improsec.com/blog//exploit-development-environment
[113] Windows Breakout from Defcon24: https://github.com/FuzzySecurity/DefCon24
[114] Part 10: Kernel Exploitation -> Stack Overflow: http://www.fuzzysecurity.com/tutorials/expDev/14.html
[115] Kernel and Driver explotation: https://csg.utdallas.edu/assets/slides/kernel_and_driver_exploitation.pdf
[116] Linux insides: https://www.gitbook.com/book/0xax/linux-insides/details
[117] Heap Exploitation into Linux: https://heap-exploitation.dhavalkapil.com/
[118] A series tutorial for linux exploit development to newbie: https://github.com/hardenedlinux/linux-exploit-development-tutorial
[119] Linux Kernel Exploitation : https://github.com/xairy/linux-kernel-exploitation
[120] Programming Linux Anti-Reversing Techniques: https://leanpub.com/anti-reverse-engineering-linux
[121] Reverse Engineering Resources Maс и iOS: https://pewpewthespells.com/re.html
[122] Android Hacker's Handbook: http://eu.wiley.com/WileyCDA/WileyTitle/productCd-111860864X.html
[123] Android Internals::Power User's View: http://newandroidbook.com/
[124] PE секции: http://www.hexacorn.com/blog/2016/12/15/pe-section-names-re-visited/
[125] Заголовок PE: http://web.archive.org/web/20111024225017/http://wasm.ru:80/article.php?article=vgw03
[126] http://web.archive.org/web/20111024201441/http://wasm.ru:80/article.php?article=green2red02: http://web.archive.org/web/20111024201441/http://wasm.ru:80/article.php?article=green2red02
[127] Компьютерные вирусы изнутри и снаружи: https://www.ozon.ru/context/detail/id/2489659/
[128] Linux x64 Infection for Lamers (by a Lamer): https://web.archive.org/web/20170706060925/http://vxheaven.org/lib/vjp01.html
[129] Parsing mach-o files: https://lowlevelbits.org/parsing-mach-o-files/
[130] corkami: https://github.com/corkami/pics
[131] Modern Memory Safety: C/C++ Vulnerability Discovery, Exploitation, Hardening: https://github.com/struct/mms
[132] A Crash Course in x86 Assembly for Reverse Engineers: https://sensepost.com/blogstatic/2014/01/SensePost_crash_course_in_x86_assembly-.pdf
[133] Assembly Programming Tutorial: http://www.tutorialspoint.com/assembly_programming/
[134] Assembler. 2-е издание: http://www.ozon.ru/context/detail/id/1493284/
[135] x86 Assembly Guide: http://www.cs.virginia.edu/~evans/cs216/guides/x86.html
[136] SmashTheStack Wargaming Network: http://smashthestack.org/
[137] BinTut: https://github.com/NoviceLive/bintut
[138] Reversing Workshop: https://github.com/quanyang/reversing-workshop
[139] Exploit-Challenges: https://github.com/Billy-Ellis/Exploit-Challenges
[140] ARM Reverse Engineering Exercises: https://github.com/gh0std4ncer/Exercises
[141] CTF Time: https://ctftime.org/
[142] Подборка, в целом посвященная сфере ИБ: https://www.gitbook.com/content/book/arthurgerkis/it-sec-catalog/
[143] Про эксплуатацию уязвимостей: https://www.peerlyst.com/posts/the-best-resources-for-learning-exploit-development
[144] Awesome-reversing: https://github.com/fdivrp/awesome-reversing
[145] Обзор ресурсов от REMath: https://github.com/REMath/literature_review
[146] Про эксплуатацию уязвимостей в ОС Windows: https://github.com/enddo/awesome-windows-exploitation
[147] Про фазинг: https://github.com/secfigo/Awesome-Fuzzing/
[148] Про анализ вредоносных программ: https://github.com/rshipp/awesome-malware-analysis
[149] awesome: https://github.com/sindresorhus/awesome
[150] Источник: https://habrahabr.ru/post/334832/
Нажмите здесь для печати.