Вы находитесь на странице: 1из 5

1. Засоби віртуалізації. Налаштування мережі, механізм снапшотів.

Засоби
автоматизації керуванням виртуальними машинами VMWare, VirtualBox, QEMU.

Виды виртуализации: программная, аппаратная, контейнерная.


Программная виртуализация - виртуализация которая происходит на уровне ядра ос. Есть
гипервизор(монитор виртуальных машин, программа или аппаратная часть, которая
позволяет одновременно и параллельно использовать сразу несколько ос на одном
физическом хосте). При программной виртуализации наша виртуальная ос полностью
зависит от хоста, потому что все запросы ресурсов с помощью гипервизора проходят
через основную ос, а гостевая ос занимается только вводом-выводом. При программной
виртуализации есть возможность паравиртуализации(nested virtualization), когда слегка
модифицированные гостевые ос могут быть запущены в виртуальной среде. Примеры:
Vmware Workstation/Player, VirtualBox.

Аппаратная виртуализация – виртуализация с помощью специальной процессорной


архитектуры (например intel VT и amd-v). В данному случае, все гостевые ос полностью
изолированы и управляются напрямую через гипервизор. В данном случае гипервизор
имеет свои встроенные драйверы и тд и работает непосредственно с ядром (например
VMware ESXi) либо состоит из двух частей, непостредственно самого гипервизора (с
уменьшенным функционалом) и небольшой собственной ос, которая контролируется
гипервизором и через какую гостевые ос получают доступ к физическому
оборудованию(пример Hyper-V, Xen)

Контейнерная виртуализация - ядро операционной системы поддерживает несколько


изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры
(обычно называемые контейнерами или зонами) с точки зрения выполняемых в них
процессов идентичны отдельному экземпляру операционной системы. Контейнеры
используются чтобы упаковать приложение, его зависимости и окружение в отдельный
контейнер, чтобы была возможность развернуть его на любых подходящих устройствах.
Пример Doсker.

Настройки сети:
Мост -подключение непосредственно к физической сети. bridge как его еще называют
объединяет несколько портов в виртуальный коммутатор, по сути вы увидите в виртуалке
ваш сетевой интерфейс.
NAT - по сути создается несколько отдельных сетевых интерфейсов, через которые ваша
виртуальная машина получает интернет, физический адаптер натирует виртуальный
адаптер.
Только для узла - частная сеть только с узлом, это по сути закрытая локальная сеть
которую настраивает Wmware workstation, между физическим компьютером и
виртуальной машиной.
Сегмент локальной сети - изолированная сеть, создаваемая вами лично, трафик бегает
только между виртуалками.

Механизм снапшотов – снапшот это копия файла диска вм в определенный момент


времени. Снимок не обеспечивает резервное копирование, ибо при откате будут доступны
лишь те файлы, которые были в ос на тот момент времени.

QEMU – программа для эмуляции аппаратного обеспечения.

2. Компіляція, статичне та динамічне зв’язування. Відповідність конструкцій мови


С/C++ машинному коду архітектур х86, х64, ARM.
Компиляция – процесс перевода теста написанного на языке программирования в
набор машинных кодов. Состоит из 4 частей
Препроцессинг – преобразование программы дальше для компиляции
Сама компиляция
Ассемблирование – перевод с асм кода в машинный
Компоновка – линкер собирает объектные файлы в исполняемый файл

Статическая компоновка - При использовании статической компоновки готовился


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

Динамическая компоновка - При использовании динамической компоновки


загрузочный код нескольких (или нескольких десятков) функций объединяется в
отдельные файлы, загружаемые в оперативную память в единственном экземпляре.
Программы, работающие параллельно, вызывают функции, загруженные в память из
файлов библиотек динамической компоновки, а не из файлов программ.
Таким образом, используя механизм динамической компоновки, в загрузочном файле
программы можно расположить только те функции, которые являются
специфическими для данной программы. Те же функции, которые нужны всем (или
многим) программам, работающим параллельно, можно вынести в отдельные файлы -
библиотеки динамической компоновки, и хранить в памяти в единственном
экземпляре .dll (dynamic linked library). В процессе выполнения функции будут
вызываться с этой библиотеки. К недостатку можно отнести то, что если библиотеки
нету в системе, то программа крашнется.

Соответствие конструкции ……

3. Статичний аналіз. Дизасемблювання лінійне та на основі потоку керування.


Методи протидії дизасемблюванню.
Статический анализ – анализ по без реального выполнения анализируемой программы.
Обычно выполняется с помощью специальных анализаторов кода.

Линейное дизассемблирование – простой подход для определения инструкций,


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

Поточное дизассемблирование(на основе потока управления) - поточные


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

Методы противодействия дизассемблированию – шифрование кода(участок кода


шифруется, а для его использования вызывается дешифровщик, и потом управление
передается расшифрованному коду). При шифровании дизассемблер будет
воспринимать шифрованный код как мусор. Самомодификация кода программой во
время выполнения – средствам статического анализа становится труднее. Различные
уловки в ассемблерном коде (например Ложные условные переходы и инструкции call
ведущие в пустоту), обфускация для усложнения читабельности

4. Методи автоматизації статичного аналізу IDA Pro (IDC, IDAPython, HexRays API),
дизассемблювання (Capstone, Zydis).

5. Декомпіляція машинного коду у мови високого рівня. Проблеми відновлення


вихідного коду – С/C++ (VS, GCC, LLVM), інтерпретованих мов (.NET, Java,
Python, VB, VBA).

6. Аналіз оточення, методи забезпечення постійності зараження та протидії


динамічному аналізу. Класифікація за MITRE ATT&CK.

Анализ окружения – вредное по может анализировать параметры пк: имя


пользователя, ip/mac адреса, информацию про переменные среды, информацию про
оборудование, настройки ос, специфические процессы характерные для вм.

Противодействие динамическому анализу


Обфускация кода программы (запутывание до нечитабельного человеком состояния);
Динамическое шифрование кода;
Сокрытие точек входа в исполняемых модулях(создается проблема, например, для
линейных дизассемблеров);
Контроль целостности и противодействие попыткам внедрения( не получится
заижектить что то в работающую программу для получения контроля над ней);
Защита от отладки ( например крашит дебаггер);
При обнаружении себя в песочнице или в вм меняет свое поведение дабы обойти среду
анализа, либо прекращает работу.

Для обеспечения постоянности заражения вредоносное по может добавлять себя в


автозагрузку, мигрировать в процессы и тд.

MITRE ATT&CK (Adversarial Tactics, Techniques & Common Knowledge) — это


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

14 пунктов
Reconnaissance (разведка),
Resource Development (Подготовка ресурсов),
Initial Access (первоначальный доступ),
Execution (выполнение),
Persistence (закрепление),
Privilege Escalation(повышение привилегий),
Defense Evasion (обход защиты),
Credential Access( получение учетный данных),
Discovery (исследование),
Lateral Movement (перемещение внутри системы),
Collection (сбор данных),
Command and Control (управление и контроль),
Exfiltration (фильтрация данных),
Impact (непосредственное воздействие).
https://mitre.ptsecurity.com/ru-RU/techniques?utm_source=seclab&utm_medium=news

7. Методи антиемуляції та антивіртуалізації. Методи протидії динамічному аналізу та


емуляції сучасних антивірусних засобів. Методи протидії поведінковому аналізу.

Методы антиэмуляции – ресурсы антивируса ограничены, поэтому антивирусы


эмулируют не все функции/api исполняемого файла, а так же частично эмулируются
бесконечные циклы. Поэтому одним из самых простых способов это выделения
большого куска памяти и работа с ней, а так же долгие вычисления и нагрузка на
процессор (пример вторая лаба, энкодер jmp_call_addictive)
https://lolz.guru/threads/403376/

Методы антивиртуализации – вредоносное по проверяет процессы в системе,


характерные для вм (поиск в процессах и оперативной памяти VMware….), обращение
к порту ввода-вывода и сравнение результата с магическим числом, отвечающим за
vmware.

8. Засоби динамічного аналізу – налагоджувачі (x64dbg, WinDbg, GDB) та методи їх


автоматизації.

Дебаггер - это узкоспециализированное средство разработки, которое присоединяется


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

Налагодження програми — методичний процес пошуку та зменшення числа помилок


або дефектів у комп'ютерній програмі або електронному обладнанні з метою
отримання очікуваної поведінки. Налагоджувач, як правило, ускладнюється, коли різні
підсистеми міцно пов'язані між собою, оскільки зміни в одній частині можуть
викликати помилки в іншій.

x64dbg

x64/x32 налагоджувач для Windows, ring 3;


пiдтримка EXE та DLL (TitanEngine), швидкий дизассемблер (Zydis),
ассемблер (XEDParse/asmjit), реконструктор PE (Scylla);
графiчний iнтерфейс (карта пам’ятi, символи, вихiдний код,
динамiчне вiдображення стеку...);
можливостi пошуку за Yara сигнатурами;
патчi виконуваних файлiв;
вбудованi засоби автоматизацiї (власна скриптова мова), розширення.

WinDbg

стандартний налагоджувач Windows, ring 0 та 3;


пiдтримка вiдлагоджувальних символiв (Symbols);
пiдтримка вiддаленого аналiзу (TCP, serial), в т.ч. ВМ (VirtualKD);
вбудованi засоби автоматизацiї (власнi скрипти), розширення.

GDB

переносимий налагоджувач, доступний майже для всiх UNIX систем;


12+ мов програмування, 30+ сiмейств процесорiв;
вбудований емулятор (sim), засоби вiддаленого аналiзу (gdbserver);
вбудованi засоби автоматизацiї (включаючи Python).

IDA може використовувати кожну з цих програм в якості налагоджувачі і


інтегрувати їхній вивід в себе. В якості автоматизації можна використовувати АРІ або
cli, remote debug

9. Віддалений, кросплатформений та динамічний аналіз коду ядра ОС (WinDbg, GDB,


IDA Debugger). Засоби емуляції (QEMU gdbstub, gdb sim, Unicorn).
https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/debugger-download-
tools

GDB
https://habr.com/ru/post/491534/
https://www.sourceware.org/gdb/

IDA Debugger
https://ru.wikipedia.org/wiki/IDA

Вам также может понравиться