Данная статья содержит решений заданий, направленных на криминалистику памяти, оперативной памяти, и логов web-сервера. А также примеры использования программ Volatility Framework и Autopsy.
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Memory forensics — level 2
В данном задании нам дают образ оперативной памяти и просят найти имя машины. Для решения такого типа заданий будем использовать Volatility Framework. Загрузим образ следующей командой, указав в качестве параметра путь к образу. Сначала узнаем информацию об образе.
volatility -f ch2.dmp imageinfo
Таким образом мы узнаем, что это образ памяти операционной системы Windows. То есть имя машины мы можем узнать из реестра. Теперь мы должны указывать профиль в качестве параметра. Вывести значение по ключу в реестре можно следующим способом.
volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName"
И теперь узнаем имя компьютера.
volatility -f ch2.dmp --profile=Win7SP1x86_23418 printkey -K "ControlSet001\Control\ComputerName\ActiveComputerName"
Видим имя компьютера. Сдаем, получаем очки.
Logs forensics — web attack
В данном задании нам дают лог Web-сервера и говорят, что на него была совершена атака, нам нужно понять, какие данные узнал злоумышленник. Откроем лог.
Видим, что в качестве параметра 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]
Немного преобразуем к понятному виду.
Таким образом, мы сравниваем первые два бита первой буквы пароля с 00, 01, 10, 11 и делаем соответствующую паузу — 0, 2, 4 и 6 секунд. Также происходит со вторыми и третьими двумя битами. После чего проверяется седьмой бит и в зависимости от равенсва 0 или 1 производится пауза 2 и 4 секунд.
Таким образом, по задержке мы можем определить, какие биты возвращает сервер.
Для примера: разница времени между первыми запросами 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)
Сдаем пароль.
Memory forensics — level 5
Нас просят найти пароль пользователя John и предоставляют дамп оперативной памяти. Как и в прошлый раз, узнаем какая операционная система используется.
Это Windows. У volatility есть опция hashdump.
Теперь найдем пароль пользователя.
Отправляем пароль и получаем очки.
Disk forensics — find the cat
Нам дают образ диска и просят найти место, где находится кот. Для подобных заданий можно использовать FTK Imager. Я буду решать его с помощью AutoPsy. Запустим программу.
Нам говорят открыть страницу в браузере. Открываем. Теперь создадим новый кейс и добавим хост. Далее необходимо добавить образ.
Изображения
После создания среды мы имеем следущее.
"
Выбираем опцию анализ.
У нас отображается следующая структура раздела. В папке Documentations ничего интересно. Зайдем в Files.
Тут имеется интересный odt файл. Выбираем его.
Внизу отображается содержимое — там какое-то изображение. Выбираем extract для извлечения файла. Из скачанного файла извлекаем изображение.
Скорее всего это кот, которого нам нужно найти. Давайте посмотрим exif информацию.
Отлично, есть координаты места. Находим его в картах.
Отправляем ответ и получаем очки.
Дальше больше и сложнее… Вы можете присоединиться к нам в Telegram. Там можете предлагать свои темы и участвовать в голосовании на выбор темы для следующих статей.