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.
85 lines
3.5 KiB
85 lines
3.5 KiB
МОДУЛЬ РАСПРОСТРАНЕНИЯ
|
|
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
|
|
|
|
ЦЕЛЬ
|
|
|
|
Доработать имеющийся модуль распространения по сети:
|
|
* Добавить универсальный интерфейс для добавления новых эксплойтов
|
|
* Определить используемый тип эксплойта и оформить его для работы через интерфейс
|
|
* Добавить эксплойт BlueKeep в модуль.
|
|
|
|
|
|
ОПИСАНИЕ МОДУЛЯ
|
|
|
|
Модуль сканирует локальную сеть и применяет на найденных машинах некий эксплойт - тип пока неизвестен.
|
|
Известно, что шелл-код скачивает нагрузку по адресу http://galamatics.com/jomangi1.png и http://galamatics.com/jomangi2.png
|
|
(вероятней всего через DownloadFromUrlA) и запускает ее. Организация шелл-кода неизвестна:
|
|
если он специфичный для эксплойта, там может быть ROP.
|
|
Если нет, то возможно там производится поиск нужных функций в таблице импорта и работа через них.
|
|
|
|
Сканирование производится по трем типам сетевого окружения:
|
|
- обычная рабочая группа Windows
|
|
- домен Windows
|
|
- LDAP
|
|
|
|
Модуль оформлен в соответствии с документом module_HOWTO.
|
|
|
|
|
|
ДОРАБОТКА
|
|
|
|
Все доработки должны проводиться в рамках документа module_HOWTO.
|
|
|
|
Код сканирования сети не требует доработки.
|
|
|
|
Доработки требует следующее:
|
|
1) Интерфейс работы с эксплойтами:
|
|
- у эксплойта должен быть основной метод Exploit(const char* hostname) (здесь может быть адрес машины или ее имя)
|
|
- код сканирования сети должен быть изолирован от кода эксплуатации
|
|
- модуль должен собираться как конструктор, из нужной комбинации сканера сети и варианта эксплойта, условной компиляцией.
|
|
Цель - переиспользовать код сканирования, для создания на его основе разных модулей.
|
|
Комбинация "каждый с каждым" не нужна (каждый эксплойт с каждым вариантом сканирования) - нету цели достичь полной вариативности.
|
|
|
|
Реализовать такой конструктор следует так:
|
|
- макросами в файле config.h выбирается, какой именно модуль мы собираем.
|
|
Этими же макросами отключаем неиспользуемый в данной сборке код.
|
|
Например, если используем эксплойт FOO, делаем
|
|
|
|
config.h:
|
|
#define FOO
|
|
#undef BAR
|
|
|
|
foo.cpp:
|
|
#include "config.h"
|
|
#ifdef FOO
|
|
...
|
|
code here
|
|
...
|
|
#endif
|
|
|
|
- Название выходного файла должно быть разным для разных вариаций
|
|
- Лучше всего использовать профили компиляции в Visual Studio для разных вариантов
|
|
В таком случае можно макросы препроцессора задавать непосредственно в настройках сборки для конкретного профиля проекта.
|
|
На каждый вариант создать свой профиль сборки.
|
|
|
|
2) В модуль следует добавить эксплойт BlueKeep в соответствии с интерфейсом работы с эксплойтами.
|
|
Информация по BlueKeep:
|
|
https://github.com/umarfarook882/CVE-2019-0708
|
|
https://github.com/n1xbyte/CVE-2019-0708
|
|
https://github.com/adalenv/CVE-2019-0708-Tool
|
|
https://github.com/gobysec/CVE-2019-0708
|
|
https://github.com/Ekultek/BlueKeep
|
|
https://github.com/robertdavidgraham/rdpscan
|
|
https://github.com/zerosum0x0/CVE-2019-0708
|
|
https://github.com/dothanthitiendiettiende/BlueKeep
|
|
https://github.com/Ekultek/BlueKeep/blob/master/bluekeep_poc.py
|
|
|
|
3) Дооформление модуля
|
|
- обфусцировать строки библиотекой Andrivet Advanced Obfuscator, применить шифрование из MetaString4.h
|
|
- обфусцировать системные вызовы через GetApi
|
|
- добавить следующие события:
|
|
+ Module wormDll build %date% %time% started - при старте модуля
|
|
+ Trying %sploit% on %hostname% (%addr%) - при применении эксплойта к хосту
|
|
- сделать логирование в файл в текущем каталоге. Имя лога такое же, как у запускаемого модуля, но с расширением .log
|
|
Использовать приложенную библиотеку логирования.
|
|
- логирование должно происходить только в профилях сборки Debug, Release_logged. В профиле Release_nologs логирование должно отключаться
|
|
(отключением макросов LOG_TO_FILE, LOG_TO_CONSOLE)
|