Pull to refresh

Disk forensics, memory forensics и log forensics. Volatility framework и Autopsy. Решение задач с r0от-мi. Часть 1

Reading time3 min
Views7.7K
image

Данная статья содержит решений заданий, направленных на криминалистику памяти, оперативной памяти, и логов web-сервера. А также примеры использования программ Volatility Framework и Autopsy.

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:

  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.

Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

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

Memory forensics — level 2


image

В данном задании нам дают образ оперативной памяти и просят найти имя машины. Для решения такого типа заданий будем использовать Volatility Framework. Загрузим образ следующей командой, указав в качестве параметра путь к образу. Сначала узнаем информацию об образе.

volatility -f ch2.dmp imageinfo

image

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

volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName"

image

И теперь узнаем имя компьютера.

volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName\ActiveComputerName"

image

Видим имя компьютера. Сдаем, получаем очки.

image

Logs forensics — web attack


image

В данном задании нам дают лог Web-сервера и говорят, что на него была совершена атака, нам нужно понять, какие данные узнал злоумышленник. Откроем лог.

image

Видим, что в качестве параметра order закодированные в base64 данные. Напишем код, чтобы декодировать их.

from re import *
from base64 import *

f = open('ch13.txt')
log = f.read()
f.close()

k = findall("action=membres&order=(.*?) HTTP", log)
[print(str(b64decode(i.replace("%3D", "=")), "utf-8")) for i in k]

image

Немного преобразуем к понятному виду.

image

Таким образом, мы сравниваем первые два бита первой буквы пароля с 00, 01, 10, 11 и делаем соответствующую паузу — 0, 2, 4 и 6 секунд. Также происходит со вторыми и третьими двумя битами. После чего проверяется седьмой бит и в зависимости от равенсва 0 или 1 производится пауза 2 и 4 секунд.

Таким образом, по задержке мы можем определить, какие биты возвращает сервер.

image

Для примера: разница времени между первыми запросами 6 секунд, то есть это биты 11 и т.д. Автоматизируем этот процесс.

from re import *
from base64 import *
import binascii

f = open('ch13.txt')
log = f.read()
f.close()

k = findall("action=membres&order=(.*?) HTTP", log)
dec_k = [str(b64decode(i.replace("%3D", "=")), "utf-8") for i in k]

t = findall("2015:12:1(.*?) \+0200]", log)
tim = [int(i.split(':')[0])*60 + int(i.split(':')[1]) for i in t]
tim = [tim[i+1] - tim[i] for i in range(len(tim)-1)] + [0]

password = ""

for i in range(0, len(tim), 4):
	c = ''
	for sec in tim[i:i+3]:
		if sec == 0:
			c += '00'
		elif sec == 2:
			c += '01'
		elif sec == 4:
			c += '10'
		elif sec == 6:
			c += '11'
	if tim[i+3] == 2:
		c += '0'
	elif tim[i+3] == 4:
		c += '1'
	
	password += chr(int(c,2))
	
print(password)

Сдаем пароль.

image

Memory forensics — level 5


image

Нас просят найти пароль пользователя John и предоставляют дамп оперативной памяти. Как и в прошлый раз, узнаем какая операционная система используется.

image

Это Windows. У volatility есть опция hashdump.

image

Теперь найдем пароль пользователя.

image

Отправляем пароль и получаем очки.

image

Disk forensics — find the cat


image

Нам дают образ диска и просят найти место, где находится кот. Для подобных заданий можно использовать FTK Imager. Я буду решать его с помощью AutoPsy. Запустим программу.

image

Нам говорят открыть страницу в браузере. Открываем. Теперь создадим новый кейс и добавим хост. Далее необходимо добавить образ.

Изображения
image

image

image

image

image

image

image

После создания среды мы имеем следущее.

image"

Выбираем опцию анализ.

image

У нас отображается следующая структура раздела. В папке Documentations ничего интересно. Зайдем в Files.

image

Тут имеется интересный odt файл. Выбираем его.

image

Внизу отображается содержимое — там какое-то изображение. Выбираем extract для извлечения файла. Из скачанного файла извлекаем изображение.

image

Скорее всего это кот, которого нам нужно найти. Давайте посмотрим exif информацию.

image

Отлично, есть координаты места. Находим его в картах.

image

Отправляем ответ и получаем очки.

image

Дальше больше и сложнее… Вы можете присоединиться к нам в Telegram. Там можете предлагать свои темы и участвовать в голосовании на выбор темы для следующих статей.
Tags:
Hubs:
+8
Comments0

Articles

Change theme settings