#SECONRU
РАССЛЕДОВАНИЕ
КИБЕР-ПРЕСТУПЛЕНИЙ:
ИЗВЛЕКАЕМ СКРИНШОТЫ ИЗ
ДАМПОВ ОПЕРАТИВНОЙ
ПАМЯТИ
Анатолий Тыкушин, Михаил Болдырев
студенты программы “Secure System and Network Engineering”
АНО ВО “Университет Иннополис”
freegoogleslidestemplates.comFGST
Our Agenda 2
О чем
это мы?
Как это
работает?
Продумываем
нашу идею
ОбсуждаемРаботаем
Лет ми спик фром май харт ин инглиш
“
”
freegoogleslidestemplates.comFGST
Сбор данных
- Как доказать, что это именно данные из источника Х?
- Как доказать, что ни один бит информации не утерян?
3
1
2
3
Извлечение цифровых улик
- Обработка полученных данных
(ловушки, false-positives, шифрование, стеганография)
Отчет эксперта-криминалиста
- Обоснованность с технической точки зрения
- Действия в рамках закона
О чем
это мы? Forensics
Stage 1: Memory acquisition
Target: Physical memoryDEFT
Digital Evidence & Forensics Toolkit
CLI:
● dfcldd
● AFFLIB
● Libewf
GUI-based:
● Guymager
● AIR
Commercials:
Encase, X-Ways
Forensics, etc.
О чем
это мы?
Stage 1: Memory acquisition
Target: RAM
О чем
это мы?
freegoogleslidestemplates.comFGST
Where to fail? 6
Rootkits Malicious activity
Kernel-level (ctd.)
- подменяем драйверы
- обходим виртуализацию
памяти
- подменяем shared libraries
(не сработает в случае
статической линковки)
Kernel-level
- серьезный урон;
- модификация ОС для
произвольных реакций
системы;
- позволяет прятать
файлы, блоки
физической и
виртуальной памяти;
User-level
- незначительный
урон;
- модификация
системных команд
(ls, ps, du, df);
- изменение
информации о диске,
запущенных
процессах и пр.
Memory losses
О чем
это мы?
Stage 2: Extract digital evidence
Hands-on
- долго, рискованно
- кропотливо
- познавательно
- разнообразно
Automate
- быстро
- шаблонно
- не на все случаи жизни
- формализовано
О чем
это мы?
О чем
это мы? Stage 2: Extract digital evidence
=== PREPARE VOLATILITY ===
BUILD OWN PROFILE
✓ Module.dwarf
✓ System.map
✓ Load built profile
✓ Ready for stage 2
О чем
это мы? Stage 2: Extract digital evidenceО чем
это мы?
О чем
это мы?
О чем
это мы?
calculate()
render_table()
render_text()
render_custom_format()
ask Google for help
volatility
↳ plugins
↳ linux
↳ common
↳ AbstractLinuxCommand
↳ <YOURCLASS>
Startpack
Как это
работает?
1
2
3
Знакомимся с графическим стеком
Linux
User-space, kernel, hardware
Анализируем информационные
потоки
Как “рождается” картинка
Делаем выводы
Как эти знания применимы для нашего исследования?
Как это
работает? Linux Graphics Stack
Behind the scenes
User-space
Layer
http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Как это
работает? Linux Graphics Stack
Behind the scenes
http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Как это
работает? Linux Graphics Stack
Behind the scenes
http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Как это
работает? Linux Graphics Stack
Behind the scenes
http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Как это
работает?
http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
Linux Graphics Stack
Как это
работает? Linux Graphics Stack
https://en.wikipedia.org/wiki/Direct_Rendering_Manager#/media/File:DRM_architecture.svg
Как это
работает? Linux Graphics Stack
Graphics translation table
Как это
работает? Linux Graphics Stack
CPU & GPU Memory requests routing
Продумываем
нашу идею
!
!!
!!!
Одним выстрелом двух зайцев
✓Познавательно для нас, вклад в коммьюнити
Костыльно-ориентированный подход
⚐ Чтобы не стыдно было показать
Архитектурное решение
Стек технологий, задачи, этапы, эджайл
Graphics memory mapped into RAMРаботаем
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos XTX
[Radeon HD 8490 / R5 235X OEM] (prog-if 00 [VGA controller])
Subsystem: Hewlett-Packard Company Caicos XTX [Radeon HD 8490 / R5 235X OEM]
Flags: bus master, fast devsel, latency 0, IRQ 27
Memory at e0000000 (64-bit, prefetchable) [size=256M]
lspci
PCI devices presentation in Linux Kernel
system.map:
ffffffff81aa8360 D pci_bus_type
Работаем
symbol name
data section initialized
global symbol
address
system.map sample:
000000000000a020 D cpu_llc_id
000000000000a080 D cpu_core_map
000000000000a0c0 D cpu_sibling_map
000000000000a100 D cpu_info
000000000000a1e0 D cpu_number
000000000000a1e8 D this_cpu_off
000000000000a1f0 D x86_cpu_to_apicid
000000000000a240 d pmc_prev_left
000000000000a440 D cpu_hw_events
000000000000b700 d bts_ctx
Структура sysbus_private - данные драйвера
struct bus_type {
…
struct subsys_private *p;
…
}
Находим по известному сдвигу (DWARF)
Работаем
PCI devices presentation in Linux Kernel
struct device_private
struct klist_node
struct subsys_private
Структура klist klist_devices - связный список PCI устройств
Работаем
PCI devices presentation in Linux Kernel
pci_dev.class - PCI класс и подкласс устройства (0:1 и 3:0 для видео)
struct resource - MMIO & PMIO участки памяти
struct pci_dev {
...
unsigned int class;
struct device dev;
struct resource
resource[];
...
}
struct device_private {
...
struct klist_node
knode_bus;
struct device
*device;
...
};
struct resource {
resource_size_t
start;
resource_size_t
end;
...
};
Работаем
PCI devices presentation in Linux Kernel
Работаем
PCI devices presentation in Linux Kernel
Let’s help Tux find all video PCI devices!
__u32 bits_per_pixel;
__u32 line_length;
struct fb_bitfield red;
red.offset;
Pixel representation
Plane representation
Serial plane representation
Retrieving images
Много разрозненных кадровых буферов с
различной геометрией и параметрами отрисовки
Можно исследовать вручную?
Работаем
Guessing chunk line width
РАССЛЕДОВАНИЕ
КИБЕР-ПРЕСТУПЛЕНИЙ:
ИЗВЛЕКАЕМ СКРИНШОТЫ ИЗ
ДАМПОВ ОПЕРАТИВНОЙ
ПАМЯТИ
Анатолий Тыкушин, Михаил Болдырев
студенты программы “Secure System and Network Engineering”
АНО ВО “Университет Иннополис”

SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений

  • 1.
    #SECONRU РАССЛЕДОВАНИЕ КИБЕР-ПРЕСТУПЛЕНИЙ: ИЗВЛЕКАЕМ СКРИНШОТЫ ИЗ ДАМПОВОПЕРАТИВНОЙ ПАМЯТИ Анатолий Тыкушин, Михаил Болдырев студенты программы “Secure System and Network Engineering” АНО ВО “Университет Иннополис”
  • 2.
    freegoogleslidestemplates.comFGST Our Agenda 2 Очем это мы? Как это работает? Продумываем нашу идею ОбсуждаемРаботаем Лет ми спик фром май харт ин инглиш “ ”
  • 3.
    freegoogleslidestemplates.comFGST Сбор данных - Какдоказать, что это именно данные из источника Х? - Как доказать, что ни один бит информации не утерян? 3 1 2 3 Извлечение цифровых улик - Обработка полученных данных (ловушки, false-positives, шифрование, стеганография) Отчет эксперта-криминалиста - Обоснованность с технической точки зрения - Действия в рамках закона О чем это мы? Forensics
  • 4.
    Stage 1: Memoryacquisition Target: Physical memoryDEFT Digital Evidence & Forensics Toolkit CLI: ● dfcldd ● AFFLIB ● Libewf GUI-based: ● Guymager ● AIR Commercials: Encase, X-Ways Forensics, etc. О чем это мы?
  • 5.
    Stage 1: Memoryacquisition Target: RAM О чем это мы?
  • 6.
    freegoogleslidestemplates.comFGST Where to fail?6 Rootkits Malicious activity Kernel-level (ctd.) - подменяем драйверы - обходим виртуализацию памяти - подменяем shared libraries (не сработает в случае статической линковки) Kernel-level - серьезный урон; - модификация ОС для произвольных реакций системы; - позволяет прятать файлы, блоки физической и виртуальной памяти; User-level - незначительный урон; - модификация системных команд (ls, ps, du, df); - изменение информации о диске, запущенных процессах и пр. Memory losses О чем это мы?
  • 7.
    Stage 2: Extractdigital evidence Hands-on - долго, рискованно - кропотливо - познавательно - разнообразно Automate - быстро - шаблонно - не на все случаи жизни - формализовано О чем это мы?
  • 8.
    О чем это мы?Stage 2: Extract digital evidence
  • 9.
    === PREPARE VOLATILITY=== BUILD OWN PROFILE ✓ Module.dwarf ✓ System.map ✓ Load built profile ✓ Ready for stage 2 О чем это мы? Stage 2: Extract digital evidenceО чем это мы?
  • 10.
    О чем это мы? Очем это мы? calculate() render_table() render_text() render_custom_format() ask Google for help volatility ↳ plugins ↳ linux ↳ common ↳ AbstractLinuxCommand ↳ <YOURCLASS> Startpack
  • 11.
    Как это работает? 1 2 3 Знакомимся сграфическим стеком Linux User-space, kernel, hardware Анализируем информационные потоки Как “рождается” картинка Делаем выводы Как эти знания применимы для нашего исследования?
  • 12.
    Как это работает? LinuxGraphics Stack Behind the scenes User-space Layer http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
  • 13.
    Как это работает? LinuxGraphics Stack Behind the scenes http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
  • 14.
    Как это работает? LinuxGraphics Stack Behind the scenes http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
  • 15.
    Как это работает? LinuxGraphics Stack Behind the scenes http://phd.mupuf.org/files/fosdem2013_drinext_drm2.pdf
  • 16.
  • 17.
    Как это работает? LinuxGraphics Stack https://en.wikipedia.org/wiki/Direct_Rendering_Manager#/media/File:DRM_architecture.svg
  • 18.
    Как это работает? LinuxGraphics Stack Graphics translation table
  • 19.
    Как это работает? LinuxGraphics Stack CPU & GPU Memory requests routing
  • 20.
    Продумываем нашу идею ! !! !!! Одним выстреломдвух зайцев ✓Познавательно для нас, вклад в коммьюнити Костыльно-ориентированный подход ⚐ Чтобы не стыдно было показать Архитектурное решение Стек технологий, задачи, этапы, эджайл
  • 22.
    Graphics memory mappedinto RAMРаботаем 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos XTX [Radeon HD 8490 / R5 235X OEM] (prog-if 00 [VGA controller]) Subsystem: Hewlett-Packard Company Caicos XTX [Radeon HD 8490 / R5 235X OEM] Flags: bus master, fast devsel, latency 0, IRQ 27 Memory at e0000000 (64-bit, prefetchable) [size=256M] lspci
  • 23.
    PCI devices presentationin Linux Kernel system.map: ffffffff81aa8360 D pci_bus_type Работаем symbol name data section initialized global symbol address system.map sample: 000000000000a020 D cpu_llc_id 000000000000a080 D cpu_core_map 000000000000a0c0 D cpu_sibling_map 000000000000a100 D cpu_info 000000000000a1e0 D cpu_number 000000000000a1e8 D this_cpu_off 000000000000a1f0 D x86_cpu_to_apicid 000000000000a240 d pmc_prev_left 000000000000a440 D cpu_hw_events 000000000000b700 d bts_ctx
  • 24.
    Структура sysbus_private -данные драйвера struct bus_type { … struct subsys_private *p; … } Находим по известному сдвигу (DWARF) Работаем PCI devices presentation in Linux Kernel
  • 25.
    struct device_private struct klist_node structsubsys_private Структура klist klist_devices - связный список PCI устройств Работаем PCI devices presentation in Linux Kernel
  • 26.
    pci_dev.class - PCIкласс и подкласс устройства (0:1 и 3:0 для видео) struct resource - MMIO & PMIO участки памяти struct pci_dev { ... unsigned int class; struct device dev; struct resource resource[]; ... } struct device_private { ... struct klist_node knode_bus; struct device *device; ... }; struct resource { resource_size_t start; resource_size_t end; ... }; Работаем PCI devices presentation in Linux Kernel
  • 27.
    Работаем PCI devices presentationin Linux Kernel Let’s help Tux find all video PCI devices!
  • 28.
    __u32 bits_per_pixel; __u32 line_length; structfb_bitfield red; red.offset; Pixel representation
  • 29.
  • 30.
  • 31.
    Retrieving images Много разрозненныхкадровых буферов с различной геометрией и параметрами отрисовки Можно исследовать вручную? Работаем
  • 32.
  • 33.
    РАССЛЕДОВАНИЕ КИБЕР-ПРЕСТУПЛЕНИЙ: ИЗВЛЕКАЕМ СКРИНШОТЫ ИЗ ДАМПОВОПЕРАТИВНОЙ ПАМЯТИ Анатолий Тыкушин, Михаил Болдырев студенты программы “Secure System and Network Engineering” АНО ВО “Университет Иннополис”

Editor's Notes

  • #2 http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/1. Вводная часть (слайд Agenda с добавлением пункта "введение к криминалистику"). 2. Группа слайдов про основные этапы проведения компьютерной экспертизы - немного организационных моментов; - перечень этапов (получение данных, обеспечение их подлинности, дальнейшие методики анализа - по 1-2 примера на каждый случай) с используемым ПО. 3. Группа слайдов о том, в чем состояло наше исследование, его актуальность. 4. Группа слайдов о предмете исследования: видеопамять ОС Linux - как устроена видеопамять / графическая подсистема; - обзор уже проведенных исследований по нашей тематике. В качестве бонуса планирую еще рассказать о том, как вредоносное ПО может использовать GPU, оставаясь незамеченным для антивирусов и других средств обнаружения вредоносов. 5. Группа слайдов о том, как проводилось исследование: - как осуществлялся поиск необходимых регионов памяти в имеющихся данных (дампах памяти); с разбором преимуществ и недостатков данного метода; - как это автоматизировалось; - как полученные данные анализировались и извлекались уже непосредственно скриншоты. 6. Заключение (1-2 слайда) о том, что можно делать с полученными результатами исследования.
  • #4 История про то, как парень занимался сбытом детской порнографии, его сдали соседи, полиция с экспертами для задержания прибыли, поймали момент, когда были разблокированы криптоконтейнеры. Но, когда задержанный попросил стакан воды - он вылил его в розетку и это вырубило питание во всем доме. Другая файловая система: если ее не поддерживает средство автоматического сбора информации
  • #5 проблемы: 1) чем больше объем устройства, тем больше времени нужно для создания и хранения копий (линейная зависимость) 2) рассказать про то, что нужно использовать новые хеши, дублировать данные, о проблемах копирования данных с блочных устройств (особенно с устройств где битые блоки данных). Важно!! Про то, что необходимо вайпнуть место, куда будете писать. Доверять контроллеру, что там нет малвари, которая может перетереть 3) о том, почему важно считать ВСЮ память: партиции, слэк спейс,
  • #6 2009 год - Исследование принстонского университета Cold Boot attacks И просто средствами самой системы, или можно упомянуть про лайм (линукс, андроид)
  • #9 о том, насколько круты решения из коробки, что ничегоо делать не надо о том, что опенсорс рулит блаблабла
  • #12 продумать: здесь описать то, что будем обсужать на данном этапе
  • #21 о том, насколько круты решения из коробки, что ничегоо делать не надо
  • #22 Это в группе слайдов про “контрибьютим”
  • #34 http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/http://freegoogleslidestemplates.com/general-purpose-free-google-slides-templates/1. Вводная часть (слайд Agenda с добавлением пункта "введение к криминалистику"). 2. Группа слайдов про основные этапы проведения компьютерной экспертизы - немного организационных моментов; - перечень этапов (получение данных, обеспечение их подлинности, дальнейшие методики анализа - по 1-2 примера на каждый случай) с используемым ПО. 3. Группа слайдов о том, в чем состояло наше исследование, его актуальность. 4. Группа слайдов о предмете исследования: видеопамять ОС Linux - как устроена видеопамять / графическая подсистема; - обзор уже проведенных исследований по нашей тематике. В качестве бонуса планирую еще рассказать о том, как вредоносное ПО может использовать GPU, оставаясь незамеченным для антивирусов и других средств обнаружения вредоносов. 5. Группа слайдов о том, как проводилось исследование: - как осуществлялся поиск необходимых регионов памяти в имеющихся данных (дампах памяти); с разбором преимуществ и недостатков данного метода; - как это автоматизировалось; - как полученные данные анализировались и извлекались уже непосредственно скриншоты. 6. Заключение (1-2 слайда) о том, что можно делать с полученными результатами исследования.