Занимательная форензика. Извлекаем пароль из дампа памяти с помощью Volatility и GIMP

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

  • Что делаем?
  • Задание
  • Определяем профиль
  • Собираем информацию о машине
  • Процессы
  • История браузера
  • Список команд в консоли
  • Что еще можно сделать?
  • Перепроверяем информацию
  • Дампим память
  • Хранение картинок в памяти
  • Краткие выводы

За­дачи на форен­зику (кри­мина­лис­тику) в сорев­новани­ях Capture The Flag делят­ся на нес­коль­ко боль­ших типов: ана­лиз опе­ратив­ной памяти, жес­тко­го дис­ка и иссле­дова­ние дам­пов тра­фика. В этой статье мы раз­берем задачу Remote Password Manager на тему ана­лиза памяти из сорев­нования JustCTF 2021, а заод­но рас­смот­рим мало­извес­тную, но очень полез­ную фиш­ку GIMP.
 

Что делаем?

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

info

Еще инте­рес­ные дан­ные мож­но най­ти в фай­лах под­качки (pagefile.sys) и гибер­нации (hiberfil.sys). Для *nix-based-сис­тем сто­ит поис­кать в swap-раз­деле.

Для ана­лиза дам­пов памяти сущес­тву­ет нес­коль­ко при­ложе­ний, которые на слу­ху у всех, кто хоть раз имел дело с задача­ми на форен­зику: это Volatility, Memoryze, и Autopsy (в связ­ке с Volatility). Есть, конеч­но, и дру­гие, но под­робно мы на них оста­нав­ливать­ся не будем.

Круп­ные решения вро­де Autopsy хороши тем, что поз­воля­ют про­извести ком­плексный ана­лиз все­го слеп­ка одной кноп­кой, одна­ко цена за это — боль­шое вре­мя работы прог­раммы. На сорев­новани­ях обыч­но необ­ходимо делать задачу мак­сималь­но быс­тро, поэто­му исполь­зовать мы будем Volatility. В «Хакере» уже бы­ли статьи, свя­зан­ные с этим чудес­ным инс­тру­мен­том, так что, если ты новичок в теме, сто­ит сна­чала озна­комить­ся с ними.

 

Задание

Вот как выг­лядело усло­вие задачи. Нам дан непос­редс­твен­но сле­пок опе­ратив­ной памяти и его хеш MD5 для про­вер­ки.

Приб­лизитель­ный перевод:

За­кача­ем наш образ на машину, где будем про­водить ана­лиз (у меня это Kali):

$ wget https://ams3.digitaloceanspaces.com/justctf/69f7647d-2f7a-4604-b9f6-553c6bb447ee/challenge.tar.gz

Рас­паку­ем:

$ tar -xzvf challenge.tar.gz

И сра­зу же про­верим, что с ним все в поряд­ке:

$ md5sum pub/challenge.vmem

Ес­ли хеш не сошел­ся с исходным хешем — при­дет­ся еще раз ска­чать архив.

О важности актуальных версий

Ни для кого не сек­рет, что с каж­дым обновле­нием любого инс­тру­мен­та раз­работ­чики ста­рают­ся добавить новые воз­можнос­ти и убрать ста­рые недоку­мен­тирован­ные воз­можнос­ти баги. В опе­раци­онных сис­темах семей­ства Linux есть встро­енные менед­жеры пакетов, которые сущес­твен­но упро­щают уста­нов­ку и обновле­ние прог­рамм. Из‑за это­го боль­шинс­тво людей пер­вым делом лезет в свой пакет­ный менед­жер, что­бы уста­новить отту­да прог­рамму.

Од­нако здесь есть неболь­шие шерохо­ватос­ти: раз­работ­чик может забыть (или забить?) обно­вить пакет в репози­тории. В таких слу­чаях при­ходит­ся искать исходни­ки и собирать акту­аль­ную вер­сию самос­тоятель­но.

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

Что­бы с тобой не слу­чилось подоб­ного, перед началом решения задачи я нас­тоятель­но рекомен­дую обно­вить (или уста­новить) Volatility с гит­хаба про­екта.

 

Определяем профиль

Пер­вым делом нам необ­ходимо опре­делить вер­сию опе­раци­онной сис­темы, с которой сни­мали сле­пок. Это мож­но сде­лать коман­дой imageinfo:

$ vol.py -f challenge.vmem imageinfo

Нам нуж­но обра­тить вни­мание на строч­ку с Suggested Profile(s). Имен­но здесь нам говорят, что пред­полага­емый про­филь слеп­ка опе­ратив­ной памяти — Win10x64_18362. Теперь мы дол­жны ука­зывать аргу­мент --profile Win10x64_18362 для пос­леду­ющих команд.

www

Пол­ная докумен­тация по Volatility есть в Wiki по инс­тру­мен­ту на GitHub.

 

Собираем информацию о машине

Ка­кую информа­цию име­ет смысл добыть вна­чале? Обыч­но это:

  • про­цес­сы;
  • ис­тория бра­узе­ра;
  • ис­тория запущен­ных команд в кон­соли.

Этих трех пун­ктов хва­тает для опре­деле­ния век­тора даль­нейшей раз­ведки.

 

Процессы

Что­бы най­ти про­цес­сы, нам дос­таточ­но исполь­зовать коман­ду pstree. Есть еще pslist, но пер­вая коман­да удоб­нее, потому что показы­вает про­цес­сы в виде дерева — так нам­ного про­ще понять, на какие из них сто­ит обра­тить вни­мание.

$ vol.py -f challenge.vmem --profile Win10x64_18362 pstree

Ни­чего бро­сающе­гося в гла­за, вро­де pswd_manager.exe или not_a_virus.exe, не вид­но, поэто­му про­дол­жим нашу раз­ведку.

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *