Conti Ransomware malware leak WITH LOCKER
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

211 lines
6.3 KiB

ЦЕЛЬ
Автоматизировать тестирование модуля инжектора
ОПИСАНИЕ ИНЖЕКТОРА
Инжектор представляет из себя модуль, выполненый в 2-х вариантах и запускаемый 2-мя различными способами:
- с логом
- без лога
и
- автономно
- посредством бота
Логированый модуль требует наличие следующих конфигов:
c:/temp/sinj4.xml
c:/temp/dinj.xml
c:/temp/dpost.xml
Логи создаются в
c:/temp/loader.log
c:/temp/core-dll.log
ТЕСТЫ
Тест - это функция на PowerShell v2.0, проверяющая одно простое условие,
и возвращающая булево значение о выполнении этого условия.
Успешное выполнение теста соответсвует логической истине.
Тесту должно соответсвовать свойство Message.
При любом исходе теста в это свойство записывается диагностика, подтверждающая данный исход.
Например, если в логе есть искомая строка (по которой проверяется условие теста),
в это свойство копируется найденая строка. Если строка отсутствует, поле заполняется произвольным
описанием причины (к примеру, "*substring*: no match in c:/temp/logname.log"
Необходимо написать следующие тесты:
sinj_proxy_alive
dinj_proxy_alive
dpost_proxy_alive
* эти три теста делать в последнюю очередь
loader_log_started
core_log_started
chrome_has_inject
ff_has_inject
ie_has_inject
edge_has_inject
chrome_dpost_ok
ff_dpost_ok
ie_dpost_ok
edge_dpost_ok
chrome_http2_off
ff_http2_off
ie_http2_off
ТОДО битность броузеров
битность ОС
РЕАЛИЗАЦИЯ
Результатом должен быть скрипт на PowerShell v2.0.
Скрипт должен возвращать в ОС код возврата, равный количеству проваленых тестов.
При запуске скрипт должен выполнять автообновление аналогично другим скриптам автотестов.
В начале каждого теста (кроме тестов *proxy* и других оговореных случаев) скрипт должен
запускать из текущего каталога файл loader.exe, а после выполнения теста убивать этот процесс
и удалять файлы логов.
Тест должен вести лог вида
2018-08-14 00:01:02 test_name started
* сообщение теста, если есть (Message)
2018-08-14 00:01:12 test_name: OK|FAILED|SKIPPED
При провале любого теста (кроме тестов прокладок) дальнейшие тесты следует пропустить,
скрипт завершить. Пропущеные тесты логически засчитываются как проваленые.
НАСТРОЙКИ
Настройки выносятся в переменные, вынесенные в самое начало скрипта:
- путь к конфигу sinj
- путь к конфигу dinj
- путь к конфигу dpost
- путь к логу loader.log
- путь к логу core-dll.log
- таймаут прогрева модуля (20 секунд по умолчанию)
- таймаут прогрева броузеров (35 секунд по умолчанию)
- таймаут устойчивости броузеров (1 минута по умолчанию)
- логин и url для автообновления
ПОДРОБНОЕ ОПИСАНИЕ ТЕСТОВЫХ СЛУЧАЕВ
* sinj_proxy_alive
Из конфига sinj выбирается первая по счету прокладка, открывается TCP-соединение
на заданный порт.
Тест успешен, если удалось открыть TCP-соединение.
* dinj_proxy_alive
Из конфига dinj выбирается первая по счету прокладка, открывается TCP-соединение
на заданный порт.
Тест успешен, если удалось открыть TCP-соединение.
* dpost_proxy_alive
В конфига dpost проверяются все прокладки путем открытия TCP-соединения на заданный порт.
Тест успешен, если удалось открыть TCP-соединение хотя бы на одну прокладку.
* loader_log_started
Запускается loader.exe.
Тест успешен, если после времени прогрева:
- появился файл loader.log по нужному пути
- в нем есть запись
Browsers payload unpacked successfully
* chrome_has_inject
Запускается loader.exe.
После времени прогрева запускается процесс Хрома.
После прогрева броузера проверяются следующие условия:
- появился файл core-dll.log по нужному пути
- в нем есть записи
We are Chrome
Chrome version: xxx
Chrome SSL functions found
(это является сообщением к тесту)
- в списке процессов имеется минимум 3 процесса chrome.exe после таймаута устойчивости броузеров
(при нарушении этого пункта тест провален, в сообщение теста добавляется строка
browser crashed!
)
- если в логе есть запись
Chrome SSL functions NOT FOUND
то тест провален, а данное сообщение и адреса функций (ниже в логе) копируется в сообщение теста
* ff_has_inject
Запускается loader.exe.
После времени прогрева запускается процесс Mozilla Firefox.
После прогрева броузера проверяются следующие условия:
- появился файл core-dll.log по нужному пути
- в нем есть записи
We are Firefox
Mozilla Firefox version: xxx
(это является сообщением к тесту)
- в списке процессов имеется минимум 1 процесс firefox.exe после таймаута устойчивости броузеров
(при нарушении этого пункта тест провален, в сообщение теста добавляется строка
browser crashed!
)
* ie_has_inject
Запускается loader.exe.
После времени прогрева запускается процесс Internet Explorer.
После прогрева броузера проверяются следующие условия:
- появился файл core-dll.log по нужному пути
- в нем есть записи
We are IE
IE version xxx
(это является сообщением к тесту. Если строк с версией больше одной, клеим к сообщению их все)
- в списке процессов имеется минимум 1 процесс iexplore.exe после таймаута устойчивости броузеров
(при нарушении этого пункта тест провален, в сообщение теста добавляется строка
browser crashed!
)
* edge_has_inject
chrome_dpost_ok
ff_dpost_ok
ie_dpost_ok
edge_dpost_ok
* chrome_http2_off
Запускается loader.exe.
После времени прогрева запускается процесс Chrome.
После прогрева броузера проверяются следующие условия:
- хотя бы у одного процесса chrome.exe присутствуют ключи командной строки
--disable-http2 --use-spdy=off --disable-quic
* ff_http2_off
Запускается loader.exe.
После времени прогрева производится поиск файла %APPDATA%\Mozilla\Firefox\Profiles\<profileName>\prefs.js
Тест считается успешным, если в файле есть подстрока
user_pref("network.http.spdy.enabled.http2", true)
* ie_http2_off
Запускается loader.exe.
После времени прогрева проверяется значение ключа реестра:
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\EnableHTTP2 == 0
ЗАДАЧИ ВТОРОГО ЭТАПА
* автоматическая подготовка ВМ к тестированию, включает в себя:
- установку или обновление Google Chrome
- установку или обновление Mozilla Firefox
* интеграцию с тестированием бота:
- добавить тесты, проверяющие наличие инжекта в броузере БЕЗ парсинга логов.
Для этого нужно найти способ просматривать код страницы запущенного броузера, из скрипта.
* базовый тест инжекта (общий для всех броузеров)
Запускается loader.exe.
После времени прогрева запускается броузер.
После времени прогрева открывается страница из списка.
По окончанию загрузки страницы открывается ее исходный код.
В исходном коде ищется подстрока
TODO
Тест успешен, если подстрокат найдена.
Тест требует работы с окнами через WinAPI.