Mart
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # CSRn-8_15.11.2022_ Reverse Engineering & Introduction To Malware Analysis / Реверс-инжиниринг и введение в анализ malware Преподаватель: Алексей поляков # Занятие 1. Задачи анализа вредоносного ПО и обратной разработки ![](https://i.imgur.com/Qtdxq9W.png) ![](https://i.imgur.com/i15WDPa.jpg) ![](https://i.imgur.com/Er86XHW.jpg) Вредоносное программное обеспечение ![](https://i.imgur.com/I6aEMxE.png) Backdoor - любая функциональность машины на передачу команд средств управления (любой элемент передачи данных) trojan -по, которое мимикрирует под нормальное приложение, попытка показаться не тем кем является программа. Известные службы, названия схожие с виндовыми по. rootkit - все возможности внутри сети по скрытию активности, перехват системных функций malicious tools - подозрительные тулзы. Набор функциональности. ## **Общие понятия и цели** ![](https://i.imgur.com/ZIjoG8O.jpg) ## Задачи анализа ВПО ![](https://i.imgur.com/aMGgafG.jpg) ## Типы анализа ![](https://i.imgur.com/Gd7cyY5.jpg) ## Инструменты анализа ![](https://i.imgur.com/b6j5KL6.jpg) ![](https://i.imgur.com/HGyAAty.png) ![](https://i.imgur.com/Ma3FisJ.jpg) ![](https://i.imgur.com/qx5l3bx.png) ![](https://i.imgur.com/IcOA7g7.jpg) https://urlhaus.abuse.ch/browse/ ## Преданализ ![](https://i.imgur.com/0JJhd3v.jpg) ![](https://i.imgur.com/ygIzf7Y.png) ![](https://i.imgur.com/vkfEO6m.png) ![](https://i.imgur.com/kDwnCwl.png) **Швейцарский нож для исследования на винде** ![](https://i.imgur.com/3jvIf4e.png) ![](https://i.imgur.com/NRqqPeR.png) ![](https://i.imgur.com/IfWxtTK.png) ![](https://i.imgur.com/3roGKb1.png) ![](https://i.imgur.com/5ICSzLi.png) ## Поведенческий анализ ![](https://i.imgur.com/R4YntZv.png) **Мониторы процессов** system internals - набор утилит для администрирования винды. Process explorer входит сюда. ![](https://i.imgur.com/eceZKhB.png) ![](https://i.imgur.com/YqzykEJ.jpg) **Анализаторы трафика** ![](https://i.imgur.com/7nI9306.jpg) ![](https://i.imgur.com/bVucGQv.png) ![](https://i.imgur.com/Bc5ezaG.jpg) **Внешние ресурсы для анализа** ![](https://i.imgur.com/JiYIlQS.png) https://cuckoo.cert.ee/ **Virus total** ![](https://i.imgur.com/SyTI85C.png) ![](https://i.imgur.com/Nm08aSl.png) ![](https://i.imgur.com/2TpJ1lK.png) ![](https://i.imgur.com/fG94dx2.png) ![](https://i.imgur.com/2elE1pX.png) **Hybrid Analysis** ![](https://i.imgur.com/5hgq1jT.png) ![](https://i.imgur.com/JdXkzG1.png) ![](https://i.imgur.com/QvdMwif.png) ![](https://i.imgur.com/VISzGjM.png) ![](https://i.imgur.com/oc6iwVZ.png) ![](https://i.imgur.com/AkoUYbV.png) ![](https://i.imgur.com/WkN6QAp.png) **app.any.run** ![](https://i.imgur.com/7Tyy5kz.png) ![](https://i.imgur.com/Q7bhNn1.png) ![](https://i.imgur.com/jnWTAps.png) ![](https://i.imgur.com/IDNar9V.png) ![](https://i.imgur.com/f1T70p4.png) ![](https://i.imgur.com/31KyqOw.png) ![](https://i.imgur.com/bnkEwv0.png) скачать архив с мальварем и проверить на внешних ресурсах ( с виртуалки) infected - пароль к архиву малварю винда + вижл студия в исключения добавить 2 папки ![](https://i.imgur.com/4V56TGJ.png) control panel - security ![](https://i.imgur.com/ll4iCn8.png) # Занятие 2. Понятие процесса и исполняемого файла. Основы языка C. ![](https://i.imgur.com/qy7sDE9.jpg) ![](https://i.imgur.com/1uYttAA.png) WinAPI - внутренности строени]я системы ![](https://i.imgur.com/4gs7iSO.jpg) ![](https://i.imgur.com/ifjaL1G.jpg) ## Основы языка С ![](https://i.imgur.com/ezZyNfT.jpg) **Структурированный типы и указатели** ![](https://i.imgur.com/1TRhiYA.jpg) сhar * asd = указатель на конкретную ячейку в памяти ![](https://i.imgur.com/RX6afxl.jpg) В структуру заранее будут заполняться данные, указатели, байты. Если заранее не знаем когда будем использовать структуру - то создаем указатель на данную структуру. struct date* birthday2 ( в винде на уровне winapi - используется функция hipalog (выделяет память)) ![](https://i.imgur.com/nO3bZtC.jpg) В определенном поле позволяет хранить данные разных типов, либо передать указатель данных, который будет указывать характерный путь к данным **Циклы** ![](https://i.imgur.com/C78DtY0.jpg) **Ветвления** ![](https://i.imgur.com/GGXCqMn.jpg) Оператор switch принимает параметр и проверяет по имеющимся значениям и если попадает в определенный интервал - выполняет ту или иную функцию. **Типы WinApi** ![](https://i.imgur.com/n2I57Hm.jpg) В языке С заранее надо сообщить с какими строками мы работаем. **Вызовы функции** ![](https://i.imgur.com/f6gRhop.jpg) В подовляющем большинстве исполняемых функций CreateFileA (принимает на вход любую строку (askii строки); CreateFileW (юникодовые строки - имеют на символ 2 байта) - перед нашей строкой должен стоять модификатор L ![](https://i.imgur.com/xRDYfvP.png) ![](https://i.imgur.com/NMX8rT2.jpg) В заголовках указываем какие библиотеки нужно подтягивать. кол-во входных параметров в приложение. argc - кол-во строк. argv - пробегает по массиву. Далее объявление переменных обязательно. HANDLE - проработка на уровне ядра. Указатель системы как работать с тем или иным объектом. ![](https://i.imgur.com/rUFBgoq.jpg) **Полезные hotkey visual studio** ![](https://i.imgur.com/NSnEfJr.jpg) ## **Исполняемый файл** Исполняемый файл- В винде являются как exe так и библиотеки ![](https://i.imgur.com/YxHVyEX.jpg) ![](https://i.imgur.com/8JUkXBj.jpg) ![](https://i.imgur.com/un41HPu.jpg) ![](https://i.imgur.com/jVRZcOO.jpg) image data directory - каталог данных (адрес и размер где лежит та или иная структура) для dll нам интересна цирфа 0, для exe - 1 (data directory) ![](https://i.imgur.com/cLn6YEE.jpg) ![](https://i.imgur.com/RVIzmRs.png) Энтропия - степень случайности/ неопределенности данных ## **Используемые библиотеки** ![](https://i.imgur.com/XfG11tH.jpg) 99% библиотек рано или поздно должны дойти до ntdll.dll, кото рая будет вызывать sysvol и передавать параметры ядру Набор библиотек которые мы будем сразу перехватывать с высокой вероятностью что это малварь: wsock32.dll и ws2_32.dll - api adress, port - отправили - получили ответ. wininet.dll и winhttp.dll ## Процесс динамический контекст исполняемой програмы ![](https://i.imgur.com/xkhQQyW.png) **текущее состояние процесса** ![](https://i.imgur.com/C6viJFH.jpg) ![](https://i.imgur.com/v7bJiTc.jpg) ![](https://i.imgur.com/Y7PmGPK.jpg) В РЕВ - описание процесса на уровне памяти. Идентификаторы процессов, список библиотек, где лежит библиотеке и получить адреса нужных функций. Чтобы проникнуть в explorer.exe - обращаемся к peb, узнаем где лежит kernel32.dll - узнаем где лежит CreateProcess. **Process explorer** ![](https://i.imgur.com/Hfr6ngV.jpg) ![](https://i.imgur.com/1gvPNTx.jpg) system - Если видим аномалию в системных процессах, родитель и порождаемый процесс - предполагаем что малварь. Основная подделка - мимикрия под системное название, но не точно похожее. smss.exe - процесс диспетчера сеансов.Единственный в системе 0 сеанс - загрузка назначенных служб 1 сеанс - локальная консоль(работа без гуя) csrss.exe - управление проуессами, потоками. запускается для каждого сеанса wininit.exe - запуск ключевые фоновые процессы, диспетчер служб, автозапуск служб services.exe - запускается wininit, диспетчер фоновых процессов svchost.exe - любимая история злоумышленника. Если нет родителя и запущен из под эксплорер - значит мальварь. **Системные процессы** ![](https://i.imgur.com/3x4JyTE.png) RuntimeBroker.exe- новая обвязка под новые платформы виндовс taskhostw.exe - предназначен для работы с триггерными событиями, по времени запускаются lsass.exe & lsaiso.exe - предназначеныы для средств локальной аутентификации. lsass - собир инфу и проверяет о вхождении польз в систему. Тут находятся хеши и записи польз, кто работал в системе lsaiso - позвол аппаратно виртуализировать память, которая будет относится к хранению польз кредов winlogon.exe - обрабатывает польз входы и выходы. Он отображает первый польз экран. explorer.exe - проводник, отвечает за панель задач и тд. **методы создания процесса** Основные функции: CreateProcessA - имя модуля для исполнения, путь для exe, до полезной нагрузки WinExec - путь до exe для запуска полезной нагрузки , ShellExecuteA - работает со строками ASKII, позвол инициировать эмуляцию двойного клика в проводнике. Можем открыть файл Если видим эти функции - ставим брейкпоинты и пытаемся отследить ![](https://i.imgur.com/9NbpMYw.png) Запуск фоновых процессов ![](https://i.imgur.com/t20cl7F.png) **стартовые функции исполняемых файлов** ![](https://i.imgur.com/xL1QL4V.png) Для консольного приложения функция main Функция dllmain - первая функция в библиотеках. Будет выполнена каждый раз при запуске программы **импорт функций** ![](https://i.imgur.com/zGRZyf5.png) loadLibraryA + GetProcAdress - первая простая связка для динамического подключения функций. Как только видим - обязательно ставим брейкпоинты **прототипирование функций** ![](https://i.imgur.com/LVUYeNJ.png) Практика ![](https://i.imgur.com/2TCb98u.png) исходдный код в расширениях cpp Злоумышленник на уровне исходного кода (нижн скрин) создает прототип какойто функции. Обязательно создавать со звездочкой - она указывает адрес в памяти. Вначале повторяем тип Handle( в скобочках повторяем все тпы функции) f12 - прыгаем на структуру ![](https://i.imgur.com/a7o3VbO.jpg) Пароль от архива - infected ![](https://i.imgur.com/BNnEQsj.jpg) ![](https://i.imgur.com/ygbcpND.jpg) ![](https://i.imgur.com/u9GMFyc.jpg) f9 - брейкпоинт f10 - шаг выполнения программмы без захода в функцию ![](https://i.imgur.com/fDKDDTk.png) в 32 разрядном - 4 байта в 64 - 8 байт # Занятие 3. Ассемблер. Структура разработки, инструкции, регистры ![](https://i.imgur.com/IYtg3ee.png) ## концепт обратной разработки ![](https://i.imgur.com/bGxRnPQ.jpg) **граф потока управления** ![](https://i.imgur.com/JcxQ8LI.jpg) ![](https://i.imgur.com/7QCQ7x3.png) ## Примитивы ассемблера **Регистры процессора х86** ![](https://i.imgur.com/BBPvXgq.jpg) eax - сложение и умножения ebx - база для операций с памятью ecx - изначально использ как счетчик edx - используется в делении и умножении, хранитель тех вещей которые не попадают eax ( которые не помещ в 4 байта/ 2 в 32 степени ), остаток от деления сюда помещ ebp - системный регистр работы со стеком, помещение и хранение на стеке входных функций. Хранение временных переменных. Отвечает за значение фрейма для конкретной функции esp - текущая вершина стека esi - источник работы с памятью edi - приемник данных для работы со строками eip - указатель на текущую исполняемую инструкцию . Самый простой способ изменить выполение программы. eflags - регистр флагов, отвеч за обраб условий и режимов отлада процессора Сегментные : CS, DS, ES, FS, GS, SS - отвечают за адресацию виртуального адресного пространства на физ часть . СS - указывает на блок кода DS - указ на блок данных FS - SS - сегмент стека ![](https://i.imgur.com/a1DE40d.jpg) **eflags** ![](https://i.imgur.com/S9vwv0L.jpg) СF - если переносится на след строку PF - позволяет удостоверится в четности числа ZF - если послед операция заканч 0, сравнение SF - проверка знаковой арифметики DF - подсказывает каким образом инструкциям обработкам строк надо бежать OF - устан если целочисленный результат слишком длинный в целевом операнде **Регистры процессора х64** ![](https://i.imgur.com/dvEAvgy.jpg) Отличие **первая буква R** и размер 8 байт R8-R15 - передача параметров внутри функции RIP - текущая исполн иснтрукций RFLAGS - проверка условий **Арифметический операции** ![](https://i.imgur.com/4Yu5jnP.png) ADD/SUB - сложение операндов/ Вычитание MUL/DIV - умножение и деление INC/DEC - использ для изменения true на false, 0 на NEG - группа целочисленных сложений, обратная арифметика CMP - сравнение **Перемещение данных** ![](https://i.imgur.com/oF1yJKq.jpg) MOV - помещает значение CMOVcc XCHG - принимает 2 регистра на вход и меняет местами MOVCc/MOVZx - разные значения, указываем с какими числ работаем PUSH/POP - вещи связ с работой стека, пытается что то положить в стек/ снимается со стеака и складируется в какой то регистр PUSHA/PUSHAD - (использ злоум) собир все состояние процессора и кладут на стек POPA/POPAD - обратная операция - восстан состояние процессора PUSHF/PUSHFD - отдельно кладется регистр флагов POPF/POPFD - снимаем с нашего стека регистр флагов **Обращение к памяти** ![](https://i.imgur.com/ws7ov4A.jpg) ![](https://i.imgur.com/HorNNZG.jpg) [EAX]Как только мы видим в инфу в скобочках - понимаем что оттуда считываются данные [EBP + 0x20] -быстрый элемент обращения к функции EAX - начало нашего массива EBX - отвечает за массив, к которому мы хотим обратится **Логические интсрукции** ![](https://i.imgur.com/rsg6zB2.png) AND - логическое и OR - или XOR - исключает или NOT - конвертирует в числе 0 на 1 **Сдвиги бит** ![](https://i.imgur.com/G3fuvuu.png) SHL/SHR - сдвигают арифметически в ту или иную сторону SAL/SAR - идентично с выше, работают арифм и явл прообразом умножением и делением числа на 2 ROL/ROR - сдвиг циклический влево или вправо. Сдвигаемые числа прибавляются либо слева, либо справа. **Инструкции контроля управления** ![](https://i.imgur.com/jpQ7FVm.jpg) JMP - безусловный переход TEST - инструкция использ при сравнении. Берет за основу операцию логического И . Часто использ на предмет сравгнения с 0 Jcc - операции условных переходов (JLE) LOOP - работало на основе регистра ecx, указ адрес на который нужно прыгать, если ecx != 0 CALL - предназ для вызова функции, перехода управления в некоторый блок кода (для нас важно) RET - использ в конце функции, со стека прочитывает функцию call (для нас важно) INT - представляет вызов некоторого прерывания. Связаны с аппаратными действиями ( нажатия клавиши, подключ доп элемента шины в юсб). INT3 0xcc - представляет из себя брейкпоинт( как только доходит до этого - передает управление отладчику). **Инструкции работы со строками** ![](https://i.imgur.com/dIYm9Zh.jpg) MOVSc - копирует либо 1,2,4 байта из того что находится esi в edi CMPSc- предназначена для сравнения байт, слова, двойного слова. Сравниваем с конкретным байтиком. Сравнивает с регистрами esi и edi. SCASc - сравнивает на вхожнение элемента LODSc STOSc - байт word/dword - пересылает из регистра... REP - повторяет любую из использ инструкций, либо пока использ ecs **Общие инструкции** ![](https://i.imgur.com/2fdmoov.png) LEA - вычисляет эффект адрес смещения операнда источника команды и сохран в регистр, обратн операция взятия региистра в скобочки NOP - в холостую прогоняет процесс. В байтовом представлении представл 0х90 UD2 - неопределенная операция, генерирует особую ситуацию для процессора в неопределенный код. Использ для аналога события отладки CPUID - выдает некоторое захордкоженное в процессоре значение, которые отвечают за описание создантеля процессора, версии и тд. ## Синтаксис ![](https://i.imgur.com/Kaqavuc.jpg) ## Cтек ![](https://i.imgur.com/stYKGZx.png) Return adress - адрес возврата функции ebp - отвечает за обращ к локальным переменным и входным параметрам ## Соглашение о вызовах нужно для того чтобы заранее знать какие параметры передаем, кто заботится о целостности стека **Пролог функции** ![](https://i.imgur.com/7YmENBT.png) ![](https://i.imgur.com/uqoAYlV.png) cdecl - основное соглаш о вызовах, использ для компилятора С. Аргументы передаются справа налево. Очистку стека производит вызывающая программа. stdcall/winapi - соглаш о вызовах принятое в винде по умолччанию, все библиотечн функции поддерживают. Передаются справа налево. Но очистку стека производит вызывающ программа. fastcall - общее назв соглаш передающ параметров о регистрах. Если заинтересованы в бысстроте наших функций. Для коротеньких функций. thiscall - часто использ в компиляторах на плюсах. Прообраз указателя this. Когда выполн та или иная фукнция - результат выполнения помещается в регистр EAX. **cdecl** ![](https://i.imgur.com/ft838oc.jpg) **stdcall/winapi** ![](https://i.imgur.com/oHhkZfB.jpg) **fastcall** ![](https://i.imgur.com/fN3VG5i.jpg) ## NASM ![](https://i.imgur.com/dSWvVao.jpg) компилятор который из исходного кода ассемблера создаст ехе (может пригодится для создания шелл кода) Можно использрвать линкер golink ## получение информации о процессе ![](https://i.imgur.com/lJKlOGh.jpg) FS[0x18] - адрес запущенного процесса FS[0x30] - откуда запущен процесс PEB - можно получить список библиотек загруженных в процесс. Можно получить процесс kernel32.dll (самое важное) Как только нашли эту библиотеку - парсим 2 функции loadlibrary и getprocadress (для получения функции) ## Практика **Crackme** ![](https://i.imgur.com/LH1Ha4J.png) F12 - переходим на xor_string ![](https://i.imgur.com/ki56PmN.png) ![](https://i.imgur.com/0kfT0Px.png) ![](https://i.imgur.com/C5lM6gG.png) f5 -запускаем ![](https://i.imgur.com/TI1fyYp.png) **import_by_hash** ![](https://i.imgur.com/qI1xWlr.png) ![](https://i.imgur.com/bncGKDS.png) ![](https://i.imgur.com/ekevFKO.png) Что произойдет в PEB ? - дз ![](https://i.imgur.com/hj0AX4h.png) ![](https://i.imgur.com/MS4nuSy.png) ![](https://i.imgur.com/jnIfieV.png) ![](https://i.imgur.com/hxZpJKB.jpg) ![](https://i.imgur.com/c4mLtsz.jpg) Распарсили библиотеку kernel32.sll ![](https://i.imgur.com/TQwh4ED.jpg) с помощью такого алгоритма злоумышленник высчитывает хэш # Занятие 4. Отладка с помощью x64gdb ![](https://i.imgur.com/EpZs7Dp.png) **Интерфейс x64dbg** ![](https://i.imgur.com/e88wmQe.jpg) ![](https://i.imgur.com/cook8zH.jpg) INT3 - брейкпоинт System Breakpoint - перехват библиотек TLS Callbacks - метод который работает в многопоточн приложениях, обратный метод работы TLS функций(инициализирование потоков нашего процесса) Запускаются до первой стартовой функции Entry Breakpoint Entry Breakpoint - на уровне парсинга исполн файлов отследим события маин. ДЛя нас важный брейкпоинт Dll Entry - будем врубатся во все длл ентри. Может понадобится только если работаем с малварной библиотекой attach Breakpoint - будут устан, когда у нас есть уже запущенный процесс, чтобы прорваться в функции, переведет в системные функции коннекта к живому процессу. Полулим процесс в замороженном состоянии. **параметры работы** ![](https://i.imgur.com/H24TdQH.jpg) **старт работы** ![](https://i.imgur.com/BvynoWl.jpg) Если мы наставили процессов - то надо убрать их **Горячие клавиши отладки** ![](https://i.imgur.com/rtt6Pli.jpg) **точки останова** ![](https://i.imgur.com/BhLvaOY.png) как только видим 0хсс - понимаем что программу отлаживают - программный брейкпоинт (можно поставить неограниченное кол-во ) ставится внутри процесса, переписывается 1 байт Можем поставить условно на область памяти ( можно выделить 2 способами: HeapAlloc, VirtualAlloc (создает участки памяти в неразмеченной области процесса)) Если увидели virtualAlloc - высокая вероятность что злоум запишет туда код Аппаратные брейкпоинты - набор системных регистров, можем записать адрес. Есть 4 адреса - куда можем переместить процесс. ![](https://i.imgur.com/pzv93E9.jpg) f2 - аппаратный брейкпоинт ![](https://i.imgur.com/mGnL0CA.jpg) **Поиск элементов** ![](https://i.imgur.com/YJrX0Lz.jpg) ![Uploading file..._2sgz4z9dn]() **Декомпеляция** ![](https://i.imgur.com/RA5tx4R.jpg) Надо поставить плагин snowman для декомпиляции ![](https://i.imgur.com/3bQPx6A.jpg) **Стек вызовов** ![Uploading file..._fp2ntsly1]() **Изменение кода** ![](https://i.imgur.com/WbuWHIZ.jpg) NOP - холостая работа процессора **Изменение регистров** ![](https://i.imgur.com/AVHEaBF.jpg) **Переименование** ![](https://i.imgur.com/LQdQmS0.jpg) **карта памяти** ![](https://i.imgur.com/ceffMAy.jpg) сюда попадают все участки виртуального адресного пространства, но те цчастки которые отображаются в физической оперативе **Установка плагинов** ![](https://i.imgur.com/fnicKhb.jpg) практика ![](https://i.imgur.com/5h5UejW.jpg) сtrl+g = переходит в интерес место # Занятие 5. Отладка с помощью IDA Pro ![](https://i.imgur.com/qJbgBgM.jpg) ![](https://i.imgur.com/9G67aFq.jpg) ## Интерфейс IDA Pro **анализ файла** ![](https://i.imgur.com/vSZWfyS.jpg) **параметры работы** ![](https://i.imgur.com/TxH4zdJ.jpg) **Просмотр кода** ![](https://i.imgur.com/AYyDXKU.jpg) **Просмотр данных** ![](https://i.imgur.com/Dizl41Z.jpg) **Используемые функции** ![](https://i.imgur.com/AP9CSaE.jpg) **Натсройка рабочего стола** ![](https://i.imgur.com/1vI0N5G.jpg) полезная клавиша - ида про распарсит все имещ строки **shift+f12** Segments **Используемые строки** ![](https://i.imgur.com/7H8euTT.jpg) **Поиск элементов** ![](https://i.imgur.com/dgbD8P6.jpg) %s - показатель что злоумышленник будет собирать голый сокет. **Перекрестыне ссылки - X** ![](https://i.imgur.com/YT45SMq.png) shift+f12 - строки (strings вкладка) x HotKey - **Переименование элементов - N** ![](https://i.imgur.com/6Nb9nyc.jpg) **Работа с кодом и данными** ![](https://i.imgur.com/4BpX3bE.jpg) Для построения ассемблерного листинга - нам нужно получать начальный адрес, по этому может понадобится преобразование кода в данные. Пробежит по внутренностям и найдет внутренние переменные и смодет представить - гор клавиш Р. Y - изменяет определение функции **Массивы** ![](https://i.imgur.com/2div0cy.jpg) и **Структуры** ![](https://i.imgur.com/JaikPR1.jpg) ![](https://i.imgur.com/HsmhLgs.jpg) **Создание снимка базы данных** ![](https://i.imgur.com/U9ZSJmx.jpg **Отладка** ![](https://i.imgur.com/1lT41Du.jpg) ![](https://i.imgur.com/PglOUj8.jpg) ![](https://i.imgur.com/CS500Ep.jpg) ![](https://i.imgur.com/alIvfRq.jpg) ![](https://i.imgur.com/T6FohQ8.jpg) Характерен для получения РЕВ ![](https://i.imgur.com/QXFvPIG.png) Ins - создание структуры в дебаге С чего начинать анализ: [21:37] Алексей Поляков CreateProcess [21:37] Алексей Поляков WinExec [21:37] Алексей Поляков ShellExecute Низкоуровневый анализ малварь - [21:59] Алексей Поляков OpenProcess [21:59] Алексей Поляков WriteProcessMemory # Занятие 6. Техники злоумышленников 1. ![](https://i.imgur.com/2Hv8ATv.jpg) **Техники mitre** ![](https://i.imgur.com/X6smIhc.jpg) ![](https://i.imgur.com/Gw6MtRi.jpg) **Тактика создания ресурсов атаки** ![](https://i.imgur.com/c6ZfdYK.jpg) **Техники первоначального доступа** ![](https://i.imgur.com/r6G2VG6.jpg) **Техники на уровне анализа** ![](https://i.imgur.com/xlB6K4O.png) **Native API** ![](https://i.imgur.com/JL0Jf6E.jpg) как только видим данную функцию - ставим брейкпоинт create_suspended - запуск процесса в замороженном исполнении ![](https://i.imgur.com/hTPH0N1.jpg) ![](https://i.imgur.com/v48KMeZ.jpg) ![](https://i.imgur.com/HWGBxGL.jpg) **Планировщики задач** ![](https://i.imgur.com/K1KZzEe.png) **Функции позвол зломышл техники связ с работой служб** ![](https://i.imgur.com/5TZxhHi.jpg) ![](https://i.imgur.com/J9ieEnS.jpg) **Инструмент Process Explorer** ![](https://i.imgur.com/KHAaWvr.jpg) **Тактика закрепления** ![](https://i.imgur.com/27jKJDr.png) **реестр** находится в папке windows system32 ![](https://i.imgur.com/8771dYx.png) ![](https://i.imgur.com/yunTWjt.png) ![](https://i.imgur.com/mA2tdCT.jpg) ![](https://i.imgur.com/ve1TbDt.jpg) для злоумышл важна функция ![](https://i.imgur.com/6prBJDX.jpg) **места в реестре для автозапуска** ![](https://i.imgur.com/v7SLyCX.jpg) ![](https://i.imgur.com/d9EPQzU.jpg) **системные службы - фоновые процессы** ![](https://i.imgur.com/sVEVhR9.jpg) sc - модификация списка служб ![](https://i.imgur.com/KCaTkFX.jpg) **техники повышения привилегий** ![](https://i.imgur.com/mws3rG9.png) **api monitor** ![](https://i.imgur.com/2UIcLAV.png) ![](https://i.imgur.com/SS3Y5Yr.png) ![](https://i.imgur.com/7oZ3eA1.png) ![](https://i.imgur.com/rOraAab.jpg) **инъекции dll** ![](https://i.imgur.com/PN1cCmU.jpg) ![](https://i.imgur.com/py9qYZ1.jpg) **внедрение в сторонний процесс** ![](https://i.imgur.com/pCl2NMN.jpg) ![](https://i.imgur.com/zO1Bpxa.jpg) ![](https://i.imgur.com/SeCE30h.jpg) ![](https://i.imgur.com/rvN5Eru.jpg) ![](https://i.imgur.com/bsIuSWM.jpg) практика ![](https://i.imgur.com/aiQfX7O.png) [21:12] Алексей Поляков OpenSCManager [21:13] Алексей Поляков CreateService [21:28] Алексей Поляков NtUnmapViewOfSection [21:28] Алексей Поляков VirtaulAllocEx [21:28] Алексей Поляков VirtualAllocEx [21:29] Алексей Поляков WriteProcessMemory [21:30] Алексей Поляков SetThreadContext [21:30] Алексей Поляков ResumeThread [21:56] Алексей Поляков ctrl+d - все библиотеки в process explorer для выбранного файла ctrl+e # Занятие 7. Техники злоумышленников 2. ![](https://i.imgur.com/eB8CCVb.png) **утилиты** ![](https://i.imgur.com/gnJrxaw.jpg) **Полезные строки в бинаре** ![](https://i.imgur.com/TZByIAO.jpg) ![](https://i.imgur.com/GOLVuxj.png) хэш 0b6cd05bee398bac0000e9d7032713ae2de6b85fe1455d6847578e9c5462391f ![](https://i.imgur.com/w1Hvvl9.jpg) **netsh** ![](https://i.imgur.com/7BytXpj.jpg) 41528a567e800c103b2d39f36dc85f0e4b5bee67879b71ef4666561c9124c84b ![](https://i.imgur.com/8w9eKIL.jpg) **техники проксирования** ![](https://i.imgur.com/nthEtgs.jpg) regsvr32 - консольная утилита установки библиотек, обращение к длл по урлу. rundll32 - можно запустить ехе, чтобы не палился при запуске ![](https://i.imgur.com/mc3JLTF.jpg) 41528a567e800c103b2d39f36dc85f0e4b5bee67879b71ef4666561c9124c84b ![](https://i.imgur.com/uyFx6q5.png) 21e64d764e3f5cbd028861156263dde446be46efa21304ecb6f07a6dc570b2d7 ![](https://i.imgur.com/6WdPLA9.png) [19:50] Алексей Поляков bcc62288a4c47f7e6f9673e25398d67561b5023a285a84bf868601138bd1efbf ![](https://i.imgur.com/HN3dgK8.png) ## Попытки получения учетных данных ![](https://i.imgur.com/7OqjAqA.png) Input Capture - что нажимает атакуемый ![](https://i.imgur.com/LZ7nxGo.jpg) 91a52a793a152130c83797d84261c5e28764371c1011d98dfbae2e018e30f235 -> test.exe Api Monitor ![](https://i.imgur.com/yvQX5FN.png) ![](https://i.imgur.com/0FTEvt9.png) [20:06] Алексей Поляков SetWindowsHookEx [20:06] Алексей Поляков GetAsyncKeyState ![](https://i.imgur.com/LTZV6CO.png) **OS Credential Dumping** ![](https://i.imgur.com/1JED8Kx.jpg) ![](https://i.imgur.com/136d79r.jpg) ## Техники исследования окружения ![](https://i.imgur.com/2GpdWPt.jpg) **функции для реализации** ![](https://i.imgur.com/PXUJ8Ct.jpg) findFirstFile - снимок изначальный каталога findNextFind - рекурсивно пробегаемся по дереву и получаем инфу о файловой системе ![](https://i.imgur.com/9lEOuFs.jpg) ![](https://i.imgur.com/s4fmjLw.jpg) ![](https://i.imgur.com/oV8HJHu.jpg) ![](https://i.imgur.com/ixX8jdi.jpg) [20:30] Алексей Поляков 67dc5aa989ff3713103a0b2e53bacaa33e7a4c8a01626c40dc93ccf2dc96b0a4 test2.exe ![](https://i.imgur.com/KjUDHtD.png) FindFirstFile FindNextFile ![](https://i.imgur.com/VrWtzNy.png) ![](https://i.imgur.com/eKcOvW0.png) ![](https://i.imgur.com/1wNtArV.jpg) **попытка получения инфы о процессах** ![](https://i.imgur.com/nkX1kiX.jpg) ![](https://i.imgur.com/7biXXVU.jpg) ![](https://i.imgur.com/7dHlwtQ.jpg) 1cv8c.exe CreateToolhelp32Snapshot ![](https://i.imgur.com/VQz5CIS.png) ![](https://i.imgur.com/Av9JWYf.png) **получение списка процессов** ![](https://i.imgur.com/IEzkJYr.jpg) f3176cc05e8d426b45711db5786e2f0e91cf1f3a82c2e6539627f3889a6818a7 ![](https://i.imgur.com/iN2anD8.png) ![](https://i.imgur.com/pXC2aaE.png) **получение списка установленных приложений** ![](https://i.imgur.com/iQiyUYl.jpg) ![](https://i.imgur.com/qnAeCBb.jpg) с помощью reg query можно получить список приложений **техники связ с получением информации** ![](https://i.imgur.com/D1S9hSJ.jpg) systeminfo - общая инфа о системе ![](https://i.imgur.com/PX5kZwK.png) **Получение сетевого окружения** ![](https://i.imgur.com/ZQKFEoJ.jpg) nbtstat- получние инфы о нет биос arp - соответствие мак адресов и айпи ( куда коннектился пользователь) route - роутинг net config workstation - netsh - интерфейсы на данной машине **Получение инфы о текущем соединении** ![](https://i.imgur.com/EQWRNLk.jpg) ![](https://i.imgur.com/fyb6IYN.png) ![](https://i.imgur.com/5tfasCT.jpg) **Техники передачи данных** ![](https://i.imgur.com/aBLlT41.png) http,https,tsp,udp **протоколы уровня приложений** ![](https://i.imgur.com/aqjNpcq.jpg) ![](https://i.imgur.com/tTIYURY.jpg) ![](https://i.imgur.com/kByuUnV.jpg) ![](https://i.imgur.com/dak14TJ.jpg) **Не связаны с уровнем приложения** ![](https://i.imgur.com/mVklgK3.jpg) ![](https://i.imgur.com/Xyxjye3.jpg) ![](https://i.imgur.com/PkWLZ7C.jpg) ![](https://i.imgur.com/s0ptOV3.jpg) [21:47] Алексей Поляков b0370f6376a5d16699031da048baac609701015f5890c46291736206191087db InternetOpen InternetConnect ![](https://i.imgur.com/zaEY8b5.png) HttpOpenRequest InternetOpenUrl ![](https://i.imgur.com/ubRPtEI.png) **Нанесение вреда машине** Деструктивное изменение данных Получение импакта к доступу к шифрованию ![](https://i.imgur.com/GCIulFQ.jpg) wbadmin - вычисляет каталоги по восстановлению bcdedit - точки восстановления ![](https://i.imgur.com/qhzrT8F.jpg) **встроенные шифровальщики** ![](https://i.imgur.com/ZUjg2xE.jpg) ![](https://i.imgur.com/bMNqprx.jpg) ![](https://i.imgur.com/V2vtpB8.jpg) ![](https://i.imgur.com/UGAy5lD.jpg) # Занятие 8. Антиотладка. Запаковка. ![](https://i.imgur.com/eLSrxkc.jpg) ![](https://i.imgur.com/dZS8tZI.png) **Антидизассемблирование** ![](https://i.imgur.com/lEOSJSY.png) **противоположные переходы по одному адресу** ![](https://i.imgur.com/DDQcCls.jpg) Переходы по всегда выполнимому условию ![](https://i.imgur.com/rRY9PEk.png) невозможность дизасма ![](https://i.imgur.com/7G0pxa3.jpg) FF - является -1 в байтовой ... llvm clang - низкоуровневая виртуальная машина помогающая вставлять мусорные действия и интсрукции, которые не изменяют внутренности приложения ![](https://i.imgur.com/Qlc9veG.png) **дополнительные трюки** ![](https://i.imgur.com/grWyCYu.jpg) ## Поиск средств анализа и окружения ![](https://i.imgur.com/hq9jsNe.jpg) ![](https://i.imgur.com/t8J1Dk9.jpg) Процессы и окружение ![](https://i.imgur.com/uSixQS2.jpg) ![](https://i.imgur.com/VmV8KgO.png) Горячая клавиша Х - показывает где еще отображает эти функции u - cнимает с адреса с - восстанавливает отчет **SEH**https://www.exploit-db.com/docs/english/17505-structured-exception-handler-exploitation.pdf ## антивиртуализация ![](https://i.imgur.com/5m6OTqw.jpg) ## Обфускация ![](https://i.imgur.com/TJKCxWS.png) ## Запаковка и зашифровка ![](https://i.imgur.com/IjcRui5.jpg) ![](https://i.imgur.com/uE8D3iH.jpg) ![](https://i.imgur.com/YZK2O7z.jpg) ![](https://i.imgur.com/tZfRXRn.jpg) ![](https://i.imgur.com/rIGQQrQ.jpg) ![](https://i.imgur.com/FyPGqIW.jpg) ![](https://i.imgur.com/kDBObhn.jpg) # Занятие 9. IOC. YARA правила. Примеры атак на ПО. ![](https://i.imgur.com/C3Ojc6i.png) **Индикаторы компрометации** ![](https://i.imgur.com/m22OVtE.png) Атомарные исчисляемые индикаторы Поведенческие **Поставщики форматов** ![](https://i.imgur.com/vOTuvWI.jpg) **oenIOC** ![](https://i.imgur.com/KiNGMFV.jpg) ![](https://i.imgur.com/KDMjnua.jpg) **YARA** ![](https://i.imgur.com/3LnXh6m.jpg) ![](https://i.imgur.com/GEuwhgz.jpg) шифровальщик логики ![](https://i.imgur.com/D1mQYym.jpg) ![](https://i.imgur.com/ENptYfj.jpg) использование к обращению к памяти процессов ![](https://i.imgur.com/LszJ6bG.jpg) практика ![](https://i.imgur.com/wKBGn09.png) ![](https://i.imgur.com/0aHBVw5.png) ![](https://i.imgur.com/4dMh5fD.png) ## Примеры атак на ПО ![](https://i.imgur.com/vDPltLL.jpg) ![](https://i.imgur.com/RuyHEou.jpg) ![](https://i.imgur.com/F090Eic.png) # 10 Тестирование хэш суммы, название закрепление - таск шедулер, службы и тд работа сети, управление вредоносом. Подвсечивание доменов, портов, урлов специфич названия файла, процессов, объектов системы с котор работает малварь

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully