Наследник Zeus: чем опасен троян IcedID для клиентов банков

    Эксперты Group-IB проанализировали троян, атакующий клиентов банков США, и выложили в публичный доступ результаты глубокого разбора формата динамических конфигурационных данных с Python-скриптами и информацию по CnC-серверам.

    image

    В ноябре 2017 года команда исследователей из IBM X-Force опубликовала отчет по новому трояну — IcedID, который нацелен преимущественно на клиентов американских банков. Бот обладает многими возможностями печально известного вредоносного ПО Zeus, в том числе: загружает и запускает модули, собирает и передает на сервер аутентификационные данные, информацию о зараженном устройстве, осуществляет атаку man-in-the-browser (MITB). Несмотря на то, что по своим функциональным возможностям новый троян оказался похож на другие популярные банкеры — Trickbot, GOZI, Dridex, активно атакующие клиентов банков, IcedID использует нестандартный бинарный формат хранения конфигурационных данных. Другой отличительной особенностью этого вредоносного ПО является возможность развертывания прокси-сервера прямо на зараженной машине для проведения атаки MITB.

    Текст: Иван Писарев, специалист по анализу вредоносного кода Group-IB

    Сразу отметим, что IcedID не так сильно распространен по сравнению с другими троянами, однако уже сейчас имеет достаточно функциональных возможностей для достижения поставленных перед ним задач, из которых главной является кража учетных данных жертв. Достигнуть этого можно многими способами, начиная от банальной кражи файлов и записей реестра с зараженного компьютера, и заканчивая перехватом и изменением зашифрованного трафика браузера (атака man-in-the-browser).

    В случае IcedID происходила кража данных из учетных записей: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! и Outlook. Атака MITB производится при помощи Proxy-сервера, который троян поднимает на зараженном устройстве, тем самым пропуская весь сетевой трафик через себя и модифицируя его. Также IcedID имеет модуль обработки команд от сервера, позволяющий удаленно загружать и запускать файл (к примеру, в исследуемом случае семпл загрузил модуль VNC, программный код которого имеет схожие участки кода с IcedID).

    Использование Proxy-сервера для MITB является нетипичным поведением для данного типа троянов. Чаще происходит встраивание вредоносной программы в контекст браузера и перенаправление вызовов функций из стандартных библиотек на ее функции-обработчики (пример: WinHttpConnect(), InternetConnect(), InternetReadFile(), WinHttpReadData() и т.д.). Ранее трюк с Proxy-сервером уже был использован в GootKit.

    IcedID распространялся с помощью другого вредоносного ПО — Emotet (в настоящее время он часто используется как загрузчик, хотя имеет расширенные функциональные возможности) и уже на старте включал в себя обширный список современных методов хищения пользовательских данных.

    Сейчас троян имеет достаточно слабые механизмы противодействия анализу (шифрование строк, header corrupt) и не имеет никаких методов VM-detect. С точки зрения исследователя, вредоносное ПО все еще находится в разработке и данные механизмы защиты будут добавлены позже.

    Система киберразведки Group-IB Threat Intelligence не обнаружила продажи IcedID на тематических форумах, что означает либо появление новой группы на арене банковских троянов, либо продажу трояна по приватным каналам. Цели бота, судя по динамическим конфигурационным данным (далее – конфиги), расположены в основном в США.

    Список целей
    Chase
    Charles Schwab
    Bank of America
    USAA
    American Express
    Wells Fargo
    Capital One
    Td Commercial Banking
    TD Bank
    Central Bank
    U.S. Bank
    Union Bank of California
    Amazon
    PNC Online Banking
    Synovus
    BB&T Bank
    Citibank
    eBanking
    Huntington
    Сashanalyzer
    E-Trade
    JPMorgan Chase
    CIBC
    Regions OnePass
    Post Oak Bank
    Comerica
    Discover Bank
    KeyBank
    Frost Cash Manager
    HSBC
    RBC
    Halifax
    Verizon Wireless
    Lloyds Bank
    M&T Bank
    VirWoX
    ADP

    Данная статья включает в себя подробный анализ трояна, глубокий разбор формата динамических конфигов с Python-скриптами и информацию по CnC.

    Техническая часть


    Общее описание работы трояна


    Изначально секция .data трояна зашифрована. В первую очередь после запуска он расшифровывает секцию по алгоритму:

    image

    Переменные initial_seed и size_seed находятся вначале секции данных (первые 8 байт секции), после чего находятся зашифрованные данные размером size байт. Функция make_seed() – уникальная функция генератора псевдослучайных чисел (ГПСЧ) для IcedID, к которой мы еще неоднократно вернемся. Python-вариант функции вы можете найти тут.

    Изначально бот содержит зашифрованные строки. С целью облегчения анализа для IDA Pro был написан скрипт, расшифровывающий строки (необходимо вставить адрес функции расшифрования в вашем семпле).

    Следующий этап – добавление обработчика исключений при помощи функции SetUnhandledExceptionFilter(). При возникновении любого исключения в процессе работы приложения просто происходит его перезапуск.

    После добавления обработчика исключений троян собирает информацию о зараженной системе:

    1. Версия ОС
    2. Номер сборки ОС
    3. Версия Service Pack
    4. Разрядность системы
    5. Тип ОС

    Приложение создает дескриптор безопасности: D:(A;;GA;;;WD)(A;;GA;;;AN)S:(ML;;NW;;;S-1-16-0), после чего выделяет память для логирования информации в процессе работы трояна. Пример логируемых строк (строки были получены при помощи скрипта в IDA):

    1. E|C|IN|INS|ISF|CP %u
    2. I|C|IN|INT|CI| %u
    3. W|C|IN|INT|CI|CRLL

    IcedID может принимать несколько параметров. Среди них:

    • --svc= — сохраняет строку из параметра в реестр по ключу с именем IcedID_reg(«*p*»), где IcedID_reg(str) — функция генерации имени ключа от строки str (алгоритм генерации имен ключей реестра будет описан позже), после чего троян обращается к событию с именем Global\<%Строка из случайных символов%>. В случае возникновения ошибки бот создает копию своего процесса с параметром /w=. Если и это не удалось сделать, создает значение в реестре:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\<%Строка длины 9 из случайных символов алфавита [a-z]%>

    тем самым обеспечивая себе персистентность в системе. Данный ключ предназначен для первоначального запуска трояна.

    • /u – по умолчанию вредоносное ПО пытается запустить себя от имени администратора домена (посредством программы runas). Если присутствует данный флаг, троян не производит данную операцию и просто создает свою копию в директории C:\Users\<%username%>\AppData\Local\<%Строка длины 9 из случайных символов алфавита [a-z]%> с именем <%Строка длины 9 из случайных символов алфавита [a-z]%>.exe, и записывает путь к файлу в реестр, тем самым обеспечивая себе персистентность в системе.

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\<%Строка длины 9 из случайных символов алфавита [a-z]%>

    Похоже, данный ключ используется при обновлении банкера. Перед перезапуском троян “засыпает” на 5 секунд.

    • /c – перед исполнением вредоносных функций троян «засыпает» на 5 секунд
    • /w= — сохраняет строку из параметра в реестр по ключу с именем IcedID_reg(«*p*»)

    После обработки параметров приложение обращается к реестру и достает оттуда динамические конфигурационные данные, которые содержат CnC-адреса, а также Web-инжекты. Формат хранения данных в реестре описан в следующих разделах.

    После обращения к реестру программа создает поток, который раз в 5 или 10 минут (в зависимости от внутреннего флага) обращается к CnC с целью получения команд. Тут стоит отметить нестандартный механизм «засыпания» бота между обращением к CnC: разработчики не стали использовать стандартную функцию Sleep(), вместо этого они создали событие в несигнальном состоянии и не переводя его в сигнальное состояние вызывают функцию WaitForSingleObject(). Функция создания потока обращения к CnC:

    image

    Аналог функции Sleep() в IcedID:

    image

    Долгий промежуток обращения к серверу, а также нестандартная «функция засыпания» скорее всего предназначены для противодействия анализу.

    Для скрытия трафика между сервером и приложением используется протокол SSL.

    После запуска потока бот «поднимает» на локальной машине Proxy-сервер с целью обработки трафика на зараженной машине.

    Протокол общения сервера и зараженного устройства будут разобраны в следующих разделах. Однако стоит отметить, что вредоносная программа по команде сервера может обновлять конфиги, запускать и останавливать VNC-сервер, исполнять команды cmd.exe, загружать файлы.

    Взаимодействие IcedID и CnC-сервера


    Список CnC-адресов хранится в теле банкера в зашифрованном виде, а также в реестре в виде динамического конфига. Взаимодействие между сервером и трояном осуществляется при помощи протокола HTTPS. Данные отправляет на сервер POST-запросами, для получения данных использует GET.

    Строка запроса к серверу имеет следующий вид:

    <%CnC%> /forum/viewtopic.php?a=<%Integer%>&b=<%Long integer%>&d=<%Integer%>&e=<%Integer%>&<%Другие данные%>

    Значение полей:

    • a – тип запроса, данное поле может принимать значения:
      Значение Действие
      0,1 Отправить информацию о зараженной машине
      2,3 Отправить другие данные на сервер
      4 Получить последнюю версию динамических конфигов и поместить их в реестр по ключу с именем IcedID_reg(«*cfg1»)
      5 Получить последнюю версию динамических конфигов и поместить их в реестр по ключу с именем IcedID_reg(«*cfg0»)
      6 Получить последнюю версию динамических конфигов и поместить их в реестр по ключу с именем IcedID_reg(«*rtd») (CnC-адреса)
      7 Получить последнюю версию VNC-модуля
      8 Получить последнюю версию бота
    • b – ID бота
    • d – флаг
    • e – константа, находится непосредственно в коде бота

    Далее значения полей зависят от поля «a». Если оно равно 0 либо 1, то запрос выглядит следующим образом:

    POST /forum/viewtopic.php?a=<%0 или 1%>&b=<%BotID%>&d=<%Integer%>&e=<%Constant%>&f=<%Cfg1 Checksum%>&g=<%Cfg0 Checksum%>&h=<%Rtd Checksum%>&r=<%VNС Checksum%>&i=<%Время запроса%> HTTP/1.1
    Connection: close
    Content-Type: application/x-www-form-urlencoded
    Content-Length:

    Тело запроса содержит информацию о зараженной машине. Информация предоставляется в виде:

    k=<%String%>&l=<%String%>%j=<%Integer%>&n=<%Integer%>&m=<%String%>

    Где:

    • k – имя компьютера в UNICODE
    • l – участник домена в UNICODE
    • m – Информация о системе:
      1. Версия ОС
      2. Номер сборки ОС
      3. Версия Service Pack
      4. Разрядность системы
      5. Тип ОС

    Если поле равно 2 либо 3, то запрос выглядит следующим образом:

    POST /forum/viewtopic.php?a=<%3 или 2%>&b=<%BotID%>&d=<%Integer%>&e=<%Constant%> HTTP/1.1
    Connection: close
    Content-Type: application/octet-stream
    Content-Length:

    В противном случае запрос выглядит следующим образом:

    GET /forum/viewtopic.php?a=<%4-8%>&b=<%BotID%>&d=<%Integer%>&e=<%Constant%>&o=<%Object checksum%>
    HTTP/1.1
    Connection: close

    Content-Type: application/x-www-form-urlencoded
    Content-Length:

    Примеры запросов представлены на рисунках ниже. Заголовок пакета при обращении к серверу:

    image

    Тело сообщения:

    image

    Троян может принимать команды от сервера. Команды представлены в виде целочисленных значений. Все команды приходят боту в виде строк, параметры которой разделены символом «;». Программа может обрабатывать 23 команды:

    Команда Значение
    0 Ничего не делает (вероятно в дальнейшем будет добавлен функционал)
    1 Обновить значение по ключу реестра с именем IcedID_reg(«*cfg0»)
    2 Обновить значение по ключу реестра с именем IcedID_reg(«*cfg1»)
    3 Обновить значение по ключу реестра с именем IcedID_reg(«*rtd»)
    4 Загрузить файл, сохранить в директории AppData и исполнить
    5 Запустить программу, имя и аргументы запуска приходят как параметры
    6 Получить информацию о запущенных процессах, среди которых: PID и имя процесса
    7 Выключить компьютер с информацией, в качестве параметров функции:
    SHTDN_REASON_FLAG_PLANNED
    SHTDN_REASON_MINOR_INSTALLATION
    SHTDN_REASON_MAJOR_APPLICATION

    8 Записать значение в реестр (имя генерируется на основании алгоритма, описанного ниже)
    9 Прочитать значение в реестре (имя генерируется на основании алгоритма, описанного ниже)
    10 Удалить ключ из реестра (имя генерируется на основании алгоритма, описанного ниже)
    11 Запустить расширенный модуль обработки команд от сервера
    12 Остановить работу расширенного модуля обработки команд от сервера
    13 Обновить VNC модуль (расположен в директории %TEMP%)
    14 Получить список файлов на рабочем столе зараженного устройства
    15 Загрузить файл, сохранить его с именем <%Строка из случайных символов%>.tmp и запустить его с ключом \u. Похоже, данная команда необходима для обновления версии бота на зараженном устройстве.
    16 Удалить файл, имя которого содержит строку (приходит как параметр)
    17 Запустить модуль распространения по сети. Распространение происходит посредством копирования и запуска бота в директорию Windows на другое устройство при помощи протокола LDAP.
    18 Получить лог-данные бота
    19 Перевести событие обращения к серверу в сигнальное состояние
    20 Получить данные учетных записей следующих приложений: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! и Outlook
    21 Изменить интервал между обращением к серверу
    22 Получить путь из переменной окружения, скачать файл и сохранить его по данному пути
    21 Загрузить файл в директорию AppData, запустить его с параметрами /t=<%Хендл специально сгенерированного события%> /f=<%Хендл 2 специально сгенерированного события%>. После перевода событий в сигнальное состояние загруженый файл удаляется из директории AppData

    В случае успешного исполнения команды троян отправляет на сервер строку «True», иначе «False».

    В случае получения команды на запуск модуля расширенных команд приложение отправляет на сервер два байта, после чего ожидает ответ. Первый полученный от сервера байт соответсвует расширенной команде из таблицы:

    Команда Значение
    5 Запустить поток, исполняющий на зараженной машине команды cmd.exe.
    6 Запустить VNC-сервер. В исследуемом случае VNC-сервер был представлен в виде DLL-библиотеки, которая имела схожий алгоритм шифрования строк.
    7 Исполнить команду из таблице выше. Для получения обычной команды троян отправляет на сервер два символа, уведомляющих сервер о готовности принятием бота команд.

    VNC-сервер может запускаться двумя возможными способами (в зависимости от внутреннего флага):

    1. При помощи функции CreateProcessA() с параметром rundll32.exe kernel32,Sleep -s <%param%>
    2. При помощи функции CreateProcessA() с параметром svchost.exe -s <%param%>

    где <%param%> — 16 байт в строковом представлении, заполняются следующим образом:

    image

    Сразу после запуска VNC-модуль проверяет наличие ключа -s, после чего читает передаваемый параметр, проверяет условие:
    paramValue[0] == paramValue[1] ^ (paramValue[3] | (paramValue[2] << 16)) 

    и при помощи функции DuplicateHandle() создает копию хендла сокета для дальнейшего взаимодейтсвия с сервером.

    Параметр StartupInfo функции CreateProcessA() содержит имя специально сгенерированного Desktop'a: Default<%flag%>. Также в параметр ProcessInformation перед вызовом функции помещется адрес VNC-модуля:

    image


    Как видно из представленного списка IcedID обладает широким спектром возможностей для полного управления зараженной машиной. Даже если оператор столкнется с проблемой отсутствия какой-либо функции, он просто загрузит при помощи трояна другую программу и выполнит поставленные перед ним задачи. К примеру, в конце декабря 2017 года нами было зафиксировано распространение с помощью данного банкера TrickBot’a.

    Информация о конфигурационных данных


    Генерация имен для записей в реестре


    Все конфигурационные данные, которые программа получает от сервера, хранятся в реестре зараженного устройства (за исключением VNC-модуля, который хранится в директории %TEMP% в формате tmp%0.8X01.dat).

    Имена ключей реестра, в которых хранятся интересующие нас конфигурационные данные, вычисляются при помощи следующей функции:

    image

    Как видно из представленного рисунка, имя ключа – MD5-хеш значение от двух переменных – str и computerSeed. От значения первой переменной зависит какого типа данные хранятся в переменной реестра. К примеру, при значении переменной – *cfg0 или *cfg1 ключ реестра хранит Web-инжекты, при значении *rtd ключ хранит список CnC.

    computerSeed – уникальная для конкретного пользователя переменная. Высчитывается она на основании SID’a пользователя. В скрипте представлена python-версия вычисления данной переменной.

    Полный путь к конфигурационным записям в реестре:

    HKEY_CLASSES_ROOT\CLSID\<%MD5-значение в формате: {%0.8X-%0.4X-%0.4X-%0.4X-%0.4X%0.8X}%>

    Описанный выше алгоритм как раз и является алгоритмом генерации имени IcedID_reg(), которые неоднократно упоминался выше.

    Мы обнаружили следующие значения строк, которые участвуют в генерации имен реестра важной для банкера информации:

    • *cfg0 — содержит в себе общий список Web-инжектов
    • *cfg1 — содержит в себе список адресов и строк для полной кражи данных страницы
    • *rtd — список CnC-адресов
    • *bc* — уведомляет о состоянии модуля обработки расширенных команд от сервера. Если данная запись присутствует в реестре – модуль запущен
    • *p* — сохраняет параметры запуска с ключами --svc= и /w=

    Структура хранения динамических конфигурационных файлов


    Динамические конфиги хранятся в реестре в зашифрованном виде. VNC-сервер, который находится в %TEMP% директории, зашифрован аналогичным образом.

    Для шифрования данных используются два алгоритма: собственный алгоритм трояна и RC4. Схема алгоритма расшифрования:

    image

    Давайте перейдем от теории к практике. Изначально зашифрованные данные после прочтения из реестра:

    image

    После получения данных вредоносная программа расшифровывает их при помощи собственного алгоритма:

    image

    И мы снова встречаемся с функцией make_seed()!

    После расшифрования имеем (обратите внимание на адреса – расшифровывается в том же участке памяти):

    image

    После уже второго расшифрования в памяти мы видим следующее:

    image

    После данные разархивируются и парсятся. Примечательно, что перед освобождением памяти данные обратно зашифровываются по RC4 — защита от динамического анализа приложения.

    Дальнейшая структура данных зависит от типа конфигурационных данных. К примеру, конфигурационные данные с префиксом rtd хранятся в формате:

    typedef struct CNCStruct {  
        char signedMD5sum[128];
        int checksum;
        BStrings cnc[N];
    } CNCStruct;
    
    typedef struct BStrings {
        int length;
        char str[length];
    } BStrings;
    

    Список CnC-адресов в одном из исследований:

    image

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

    image

    Конфигурации с префиксом cfg хранятся в формате:

    typedef struct CfgStruct {
        int checksum;
        int elements_count;
        char config[];
    } CfgStruct;

    В исследуемом случае мы видели следующие данные:

    image

    Данные хранятся в уникальном бинарном формате, который будет рассмотрен далее.

    Алгоритм генерации ключей реестра, а также расшифрования конфигурационных данных вы можете посмотреть в скрипте.

    Алгоритм разбора конфигурационных данных


    После расшифрования данных программа парсит их и сохраняет в виде связного списка, который в дальнейшем участвует при анализе трафика на зараженном устройстве (MITB). В первую очередь данные разбиваются на блоки, которые имеют структуру:

    typedef struct BaseBlock {
        int size;
        char type;
        char global_flag; 
        char data[size - 6];
    } BaseBlock; 

    Структура поля data зависит от флага type. Флаг в данной структуре говорит о том, что происходит при обнаружении строки в URL/теле запроса. Поле может принимать следующие значения:

    Флаг Значение
    0x10 Частичная замена тела страницы, в качестве параметров – теги, между которыми необходимо провести замену, а также значение, на которое будет заменено тело
    0x11,0x13 Частичная замена тела страницы, в качестве параметров – участок страницы, который необходимо заменить, а также значение, на которое будет заменено тело
    0x12 Полная замена тела страницы
    0x20 Кража тела страницы. В качестве параметров – теги, между которыми находится интересующий участок страницы
    0x21 Полная кража тела страницы
    0x22 Полная кража тела страницы, тело сохраняется в реестр
    0x2E Поиск в теле страницы строк с тегами 0x40 и 0x41, в случае обнаружения – кража тела страницы
    0x30 Блокирование запроса
    0x31 Сделать screenshot страницы
    0x32,0x33 Редирект на другую страницу (путь к странице — один из параметров). Помимо этого в качестве параметра — строка <%Registry Salt%>#<%URL%>, бот обращается к <%URL%>, загружает оттуда данные, после чего сохраняет их в реестр по ключу IcedID_reg(<%Registry Salt%>)
    0x34 Редирект на другую страницу (путь к странице — один из параметров)
    0x40,0x41 Строки-паттерны в теле страницы
    0x51 Проигнорировать страницу
    0x60 Сохранить значение переменной в реестр (заменяет тело страницы на «True» либо «False» в зависимости от результата выполнения команды, имя генерируется на основании алгоритма, описанного выше)
    0x61 Продемонстрировать переменную из реестра (имя генерируется на основании алгоритма, описанного выше)
    0x62 Удалить переменную из реестра (заменяет тело страницы на «True» либо «False» в зависимости от результата выполнения команды, имя генерируется на основании алгоритма, описанного выше)
    0x63 Запустить расширенный модуль обработки команд от сервера (заменяет тело страницы на «True» либо «False» в зависимости от результата выполнения команды)
    0x64 Сохранить тело страницы в память бота (заменяет тело страницы на «True» либо «False» в зависимости от результата выполнения команды)
    Структура поля data если type равен 0x40 или 0x41:

    typedef struct ConfigBlock {
        BStrings patterns[N];
        int(0);
    } ConfigBlock;

    Иначе структура поля:

    typedef struct BaseBlock {
        int typeSizeStr;
        string urlStr;
        int flagSize;
        char flag[flagSize];
        int firstOptStrSize;
        char firstOptStr[firstOptStrSize];
        int secondOptStrSize;
        char secondOptStr[secondOptStrSize];
        int thirdOptStrSize;
        char thirdOptStr[thirdOptStrSize];
    } BaseBlock; 

    Давайте поближе рассмотрим один из блоков семпла:

    image

    Обратим в первую очередь внимание на поле «Config block type» в блоке «Config block common information». Оно равно 0x11 – значит, что при загрузке пользователем страницы, URL которой попадает под правило регулярного выражения ^[^=]*\/wcmfd\/wcmpw\/CustomerLogin$ произойдет замена в теле страницы строки <body (второй аргумент) на строку <body style=«display: none;» (третий аргумент).

    В памяти приложения для каждого из типов создается связный список. Алгоритм парса на связные списки представлен на рисунке ниже в виде скрина IDA Pro. Python-скрипт парса конфигурационных данных вы можете увидеть тут.

    image

    Информация по CnC


    За несколько месяцев наблюдения за развитием IcedID мы обнаружили много доменов, которые троян включал в список динамических конфигов в раздел CnC. Домены представим в виде соответствия (e-mail с которого происходила регистрация → домен):
    Почта Домены
    davidphugley@jourrapide.com percalabia.com
    borrespons.com
    divorough.com
    eyrannon.com
    britically.com
    joshuastaube@dayrep.com manismay.com
    deterhood.com
    marrivate.com
    greatoric.com
    phonetarif.com
    CynthiaTHeller@grr.la binncu.net
    PatriceAAdams@grr.la arcadyflyff.com
    LindaJRowan@dayrep.com yutlitsi.com
    SeanHumphreys@pokemail.net urnachay.com
    RuthFThigpen@pokemail.net oksigur.net
    FlorenceTButler@pokemail.net rfisoty.com
    FreidaDDelgado@pokemail.net urnisim.net
    TinaLHobson@grr.la cupicratings.com
    ElisaRTucker@pokemail.net freegameshacks.net
    DaleKMontes@pokemail.net gordondeen.net
    patrickggutierez@dayrep.com poorloo.com
    dismissey.com
    euphratt.com
    detrole.com
    JustineRBoatner@pokemail.net lumpyve.com
    MatthewAPerkins@grr.la gooblesooq.com
    fzlajsf.net
    JosephLSmith@grr.la newpctoday.com
    triodgt.com
    DominicNDecker@pokemail.net onsunga.net
    MarcellaBCraighead@pokemail.net rybatas.com
    KellyJMaldonado@grr.la netocraze.net
    irtazin.net

    Давайте теперь подробно рассмотрим пользователей, на которые были зарегистрированы домены:

    Информация о регистрирующих лицах
    Почта davidphugley@jourrapide.com:

    • Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com
    • Name: David P. Hugley (registrant, admin, tech)
    • Street: 2453 Round Table Drive (registrant, admin, tech)
    • City: Hamilton (registrant, admin, tech)
    • State: Ohio (registrant, admin, tech)
    • Postal: 45011 (registrant, admin, tech)
    • Country: US (registrant, admin, tech)
    • Phone: 15138878784 (registrant, admin, tech)

    Почта joshuastaube@dayrep.com:

    • Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com
    • Name: Joshua S. Taube (registrant, admin, tech)
    • Organization:
    • Street: 2173 Kyle Street (registrant, admin, tech)
    • City: Hay Springs (registrant, admin, tech)
    • State: Nevada (registrant, admin, tech)
    • Postal: 69347 (registrant, admin, tech)
    • Country: US (registrant, admin, tech)
    • Phone: 13086385612 (registrant, admin, tech)

    Почта CynthiaTHeller@grr.la:

    • Registrar: Eranet International Limited
    • Name: Cynthia Heller (registrant, admin, billing, tech)
    • Organization:
    • Street: 396 Tennessee Avenue (registrant, admin, billing, tech)
    • City: Southfield (registrant, admin, billing, tech)
    • State: MX (registrant, admin, billing, tech)
    • Postal: 48034 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 12482469621 (registrant, admin, billing, tech)

    Почта PatriceAAdams@grr.la:

    • Registrar: Eranet International Limited
    • Name: Patrice Adams (registrant, admin, billing, tech)
    • Organization
    • Street: 3997 Marietta Street (registrant, admin, billing, tech)
    • City:Cazadero (registrant, admin, billing, tech)
    • State: JL (registrant, admin, billing, tech)
    • Postal: 95421 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 17076322681 (registrant, admin, billing, tech)

    Почта LindaJRowan@dayrep.com:

    • Registrar: Eranet International Limited
    • Name: Linda Rowan (registrant, admin, billing, tech)
    • Organization:
    • Street: 1908 Luke Lane (registrant, admin, billing, tech)
    • City: Elk City (registrant, admin, billing, tech)
    • State: EK (registrant, admin, billing, tech)
    • Postal: 73644 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 15802259140 (registrant, admin, billing, tech)

    Почта SeanHumphreys@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Sean Humphreys (registrant, admin, billing, tech)
    • Organization:
    • Street: 4661 Kincheloe Road (registrant, admin, billing, tech)
    • City: Portland (registrant, admin, billing, tech)
    • State: EL (registrant, admin, billing, tech)
    • Postal: 97205 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 16384273711 (registrant, admin, billing, tech)

    Почта RuthFThigpen@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Ruth Thigpen (registrant, admin, billing, tech)
    • Organization
    • Street: 765 Michael Street (registrant, admin, billing, tech)
    • City: Houston (registrant, admin, billing, tech)
    • State: DK (registrant, admin, billing, tech)
    • Postal: 77021 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 17137485876 (registrant, admin, billing, tech)

    Почта FlorenceTButler@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Florence Butler (registrant, admin, billing, tech)
    • Organization:
    • Street: 4554 Par Drive (registrant, admin, billing, tech)
    • City: Lompoc (registrant, admin, billing, tech)
    • State: JL (registrant, admin, billing, tech)
    • Postal: 93436 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 198058660048 (registrant, admin, billing, tech)

    Почта FreidaDDelgado@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Freida Delgado (registrant, admin, billing, tech)
    • Organization:
    • Street: 4439 Burning Memory Lane (registrant, admin, billing, tech)
    • City: Philadelphia (registrant, admin, billing, tech)
    • State: BX (registrant, admin, billing, tech)
    • Postal: 19115 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 12153306416 (registrant, admin, billing, tech)

    Почта TinaLHobson@grr.la:

    • Registrar: Eranet International Limited
    • Name: Tina Hobson (registrant, admin, billing, tech)
    • Organization:
    • Street: 3960 Woodridge Lane (registrant, admin, billing, tech)
    • City: Memphis (registrant, admin, billing, tech)
    • State: TN (registrant, admin, billing, tech)
    • Postal: 38110 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 19012994734 (registrant, admin, billing, tech)

    Почта ElisaRTucker@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Elisa Tucker (registrant, admin, billing, tech)
    • Organization
    • Street: 3316 Corbin Branch Road (registrant, admin, billing, tech)
    • City: Johnson City (registrant, admin, billing, tech)
    • State: TN (registrant, admin, billing, tech)
    • Postal: 37601 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 14234332211 (registrant, admin, billing, tech)

    Почта DaleKMontes@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Dale Montes (registrant, admin, billing, tech)
    • Organization:
    • Street: 2719 Norman Street (registrant, admin, billing, tech)
    • City: Los Angeles (registrant, admin, billing, tech)
    • State: JL (registrant, admin, billing, tech)
    • Postal: 90008 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 13232919311 (registrant, admin, billing, tech)

    Почта patrickggutierez@dayrep.com:

    • Registrar: PDR Ltd. d/b/a PublicDomainRegistry.com
    • Name: Patrick G. Gutierez (registrant, admin, tech)
    • Organization:
    • Street: 1146 Mount Olive Road (registrant, admin, tech)
    • City: Atlanta (registrant, admin, tech)
    • State: Georgia (registrant, admin, tech)
    • Postal: 30328 (registrant, admin, tech)
    • Country: US (registrant, admin, tech)
    • Phone: 16789874672 (registrant, admin, tech)

    Почта JustineRBoatner@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Justine Boatner (registrant, admin, billing, tech)
    • Organization:
    • Street: 2875 Kemper Lane (registrant, admin, billing, tech)
    • City: Kearns (registrant, admin, billing, tech)
    • State: YT (registrant, admin, billing, tech)
    • Postal: 84118 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 18019026902 (registrant, admin, billing, tech)

    Почта MatthewAPerkins@grr.la:

    • Registrar: Eranet International Limited
    • Name: Matthew Perkins (registrant, admin, billing, tech)
    • Organization:
    • Street: 2507 Locust Street (registrant, admin, billing, tech)
    • City: Ellaville (registrant, admin, billing, tech)
    • State: QZ (registrant, admin, billing, tech)
    • Postal: 31806 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 12299379022 (registrant, admin, billing, tech)

    Почта JosephLSmith@grr.la:

    • Registrar: Eranet International Limited
    • Name: Joseph Smith (registrant, admin, billing, tech)
    • Organization:
    • Street: 2808 Ruckman Road (registrant, admin, billing, tech)
    • City: Oklahoma City (registrant, admin, billing, tech)
    • State: EK (registrant, admin, billing, tech)
    • Postal: 73102 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 14058506091 (registrant, admin, billing, tech)

    Почта DominicNDecker@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Dominic Decker (registrant, admin, billing, tech)
    • Organization:
    • Street: 1169 Golden Ridge Road (registrant, admin, billing, tech)
    • City: Gloversville (registrant, admin, billing, tech)
    • State: NY (registrant, admin, billing, tech)
    • Postal: 12078 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 15187485876 (registrant, admin, billing, tech)

    Почта MarcellaBCraighead@pokemail.net:

    • Registrar: Eranet International Limited
    • Name: Marcella Craighead (registrant, admin, billing, tech)
    • Organization:
    • Street: 1659 Lilac Lane (registrant, admin, billing, tech)
    • City: Savannah (registrant, admin, billing, tech)
    • State: QZ (registrant, admin, billing, tech)
    • Postal: 31401 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 19125956971 (registrant, admin, billing, tech)

    Почта KellyJMaldonado@grr.la:

    • Registrar: Eranet International Limited
    • Name: Kelly Maldonado (registrant, admin, billing, tech)
    • Organization: NA
    • Street: 4391 Ben Street (registrant, admin, billing, tech)
    • City: Albany (registrant, admin, billing, tech)
    • State: NY (registrant, admin, billing, tech)
    • Postal: 12207 (registrant, admin, billing, tech)
    • Country: US (registrant, admin, billing, tech)
    • Phone: 15182623616 (registrant, admin, billing, tech)


    И наконец, рассмотрим хронологию изменения IP-адресов доменов. В таблицу были добавлены все IP-адреса начиная с ноября 2017 года:

    Таблица IP-адресов
    Domain IP Country First seen in the wild
    gooblesooq.com 185.127.26.227 RU 11/7/2017
    irtazin.net 185.127.26.227 RU 11/7/2017
    netocraze.net 185.5.251.33 RU 11/7/2017
    triodgt.com 185.5.251.33 RU 11/7/2017
    newpctoday.com 185.5.251.33 RU 11/7/2017
    fzlajsf.net 185.127.26.227 RU 11/25/2017
    netocraze.net 185.48.56.139 NL 11/27/2017
    triodgt.com 185.48.56.139 NL 11/27/2017
    newpctoday.com 185.48.56.139 NL 11/29/2017
    netocraze.net 185.22.65.17 KZ 12/1/2017
    triodgt.com 185.22.65.17 KZ 12/1/2017
    newpctoday.com 185.22.65.17 KZ 12/1/2017
    gordondeen.net 185.127.26.227 RU 12/11/2017
    netocraze.net 46.148.26.106 UA 12/11/2017
    arcadyflyff.com 46.148.26.106 UA 12/12/2017
    cupicratings.com 46.148.26.106 UA 12/12/2017
    freegameshacks.net 185.127.26.227 RU 12/12/2017
    newpctoday.com 46.148.26.106 UA 12/13/2018
    onsunga.net 107.150.99.20 CN 12/17/2017
    oksigur.net 107.150.99.20 CN 12/17/2017
    rfisoty.com 107.150.99.20 CN 12/17/2017
    rybatas.com 107.150.99.20 CN 12/17/2017
    urnachay.com 107.150.99.20 CN 12/17/2017
    rfisoty.com 46.148.26.106 UA 1/24/2018
    rybatas.com 185.127.26.227 RU 1/24/2018
    urnachay.com 185.127.26.227 RU 1/24/2018
    yutlitsi.com 185.127.26.227 RU 1/24/2018
    urnisim.net 185.127.26.227 RU 1/24/2018
    oksigur.net 185.127.26.227 RU 1/26/2018
    urnachay.com 109.234.35.121 RU 1/31/2018
    oksigur.net 109.234.35.121 RU 1/31/2018
    yutlitsi.com 109.234.35.121 RU 2/1/2018
    urnisim.net 109.234.35.121 RU 2/1/2018
    divorough.com 46.148.26.106 UA 2/21/2018
    percalabia.com 109.234.35.121 RU 2/22/2018
    borrespons.com 46.148.26.106 UA 2/26/2018
    britically.com 46.148.26.106 UA 2/26/2018
    eyrannon.com 109.234.35.121 RU 2/26/2018
    deterhood.com 109.234.35.121 RU 3/1/2018
    greatoric.com 109.234.35.121 RU 3/1/2018
    manismay.com 46.148.26.106 UA 3/1/2018
    marrivate.com 109.234.35.121 RU 3/1/2018
    moindal.com 46.148.26.106 UA 3/1/2018
    phonetarif.com 46.148.26.106 UA 3/1/2018
    moindal.com 185.169.229.119 CH 3/5/2018
    dismissey.com 46.148.26.106 UA 4/3/2018
    euphratt.com 109.234.35.121 RU 4/4/2018
    percalabia.com 46.148.26.11 UA 4/23/2018
    deterhood.com 46.148.26.11 UA 4/24/2018
    eyrannon.com 46.148.26.11 UA 4/24/2018
    greatoric.com 46.148.26.11 UA 4/24/2018
    marrivate.com 46.148.26.11 UA 4/24/2018
    euphratt.com 46.148.26.11 UA 4/25/2018
    borrespons.com 185.48.56.134 NL 5/7/2018
    britically.com 185.48.56.134 NL 5/7/2018
    dismissey.com 185.48.56.134 NL 5/7/2018
    divorough.com 185.48.56.134 NL 5/7/2018
    rfisoty.com 185.48.56.134 NL 5/7/2018
    detrole.com 109.236.87.25 NL 5/8/2018
    manismay.com 185.48.56.134 NL 5/8/2018
    phonetarif.com 185.48.56.134 NL 5/13/2018
    binncu.net 46.148.26.106 UA 5/17/2018
    urnisim.net 46.148.26.11 UA 5/17/2018
    urnachay.com 46.148.26.11 UA 5/18/2018
    yutlitsi.com 46.148.26.11 UA 5/18/2018
    oksigur.net 46.148.26.11 UA 5/21/2018
    greatoric.com 5.187.0.158 DE 5/22/2018
    marrivate.com 5.187.0.158 DE 5/22/2018
    percalabia.com 5.187.0.158 DE 5/22/2018
    urnachay.com 5.187.0.158 DE 5/22/2018
    yutlitsi.com 5.187.0.158 DE 5/22/2018
    lumpyve.com 185.48.56.134 NL 5/24/2018
    urnisim.net 5.187.0.158 DE 5/27/2018
    borrespons.com 85.143.202.82 RU 6/7/2018
    manismay.com 85.143.202.82 RU 6/7/2018
    phonetarif.com 85.143.202.82 RU 6/7/2018
    rfisoty.com 85.143.202.82 RU 6/7/2018
    borrespons.com 212.83.61.213 DE 6/20/2018
    manismay.com 212.83.61.213 DE 6/20/2018
    rfisoty.com 212.83.61.213 DE 6/20/2018
    lumpyve.com 212.83.61.213 DE 6/20/2018
    phonetarif.com 212.83.61.213 DE 6/20/2018


    Изучив представленные данные, можно резюмировать, что все домены регистрируются на почту, сгенерированную при помощи сервиса временной почты. Местоположение фиктивного региструющего лица — США, в то время как сами домены расположены в России, Украине, Нидерландах, Китае, Казахстане и Германии (в последнее время наблюдается тенденция «переезда» доменов на Украину и в Германию). Все домены находятся в доменных зонах «com» и «net». Алфавит, из которого состоит домен, включает в себя только буквы английского алфавита. На стороне CnC поднят Web-сервер OpenResty.

    Заключение


    Несмотря на «древность» зевсоподобных троянов, их актуальность не падает. Как результат – появление IcedID на арене троянов, нацеленных на клиентов банков. Хотя банкер уже на старте имел обширный список возможностей, он все еще совершенствуется: усложняются методы распаковки, происходит расширение списка целей. Вероятнее всего в дальнейшем вредоносная программа обзаведется механизмами противодействия анализу, а CnC-сервер начнет избирательно отдавать Web-инжекты зараженным устройствам. Пока же троян не удовлетворяют всем требованием своих «пользователей», о чем говорит использование в декабре прошлого года TrickBot’а совместно с IcedID.

    В Group-IB знают о киберпреступности всё, но рассказывают самое интересное.

    Остросюжетный Telegram-канал (https://t.me/Group_IB) об информационной безопасности, хакерах и кибератаках, хактивистах и интернет-пиратах. Расследования нашумевших киберпреступлений по шагам, практические кейсы с применением технологий Group-IB и, конечно, рекомендации, как не стать жертвой в интернете.

    YouTube-канал Group-IB
    Фотолента Group-IB в Instagram www.instagram.com/group_ib
    Короткие новости в Twitter twitter.com/GroupIB

    Компания Group-IB — один из ведущих разработчиков решений для детектирования и предотвращения кибератак, выявления мошенничества и защиты интеллектуальной собственности в сети со штаб-квартирой в Сингапуре.
    Group-IB
    Компания

    Комментарии 6

      0
      Сначала пишете, что противодействия анализу нет (строки не шифрованы и т.д.), а затем приводите алго расшифровки строк, говорите, что они зашифрованы, и вообще описываете практически один в один описание функционала и семплов Dridex'а (разбирал его когда-то).
        0

        Извиняюсь, увидел, что слова Нет нету.

        0
        VNC-сервер представлял из себя DLL-библиотеку, которая запускалась при помощи функции CreateProcessA() с параметрами rundll32.exe kernel32,Sleep -s <%Путь к DLL%>
        Что обозначает параметр -s? Поискал, нигде это не документировано.
          +2
          qw1 большое спасибо за вопрос! Повторно посмотрел на участок, отвечающий за запуск VNC-модуля и подробнее описал данную процедуру (плюс исправил неточность с параметром запуска после ключа -s).

          Ключ -s предназначен для VNC-модуля. За ним следует параметр, который основной модуль передает VNC. VNC в свою очередь проверяет наличие ключа, получает из параметра PID процесса-трояна и хендл сокета, при помощи которого происходит взаимодействие с CnC, при помощи функции DuplicateHandle() создает его копию и в дальнейшем использует для взаимодействия с сервером.
            0
            Всё равно непонятно, почему rundll32 kernel32,Sleep запускает VNC.
            Может, exe-файл сервера переименован в rundll32, но понять это из текста нельзя
              +1
              Судя по коду, после запуска rundll32 (или svchost) троян должен заинжектить код VNC-модуля в легитимное приложение и вызывать функцию DllEntryPoint(). Однако единственное место, где я вижу использование адреса VNC-модуля — это передача его в параметр ProcessInformation.hProcess. В документации написано, что ProcessInformation используется для получения информации о созданном процессе — то есть адрес не используется.

              Еще один интересный момент — svchost.exe создается с флагом CREATE_SUSPENDED:
              CreateProcessA(0, &CommandLine, 0, 0, 0, 4, 0, 0, &StartupInfo, &ProcessInformation)

              и после запуска приложения не происходит запуск потоков, svchost остается висеть в состоянии suspend.

              При этом приложение запускает оригинальные исполняемые файлы. К примеру, путь к rundll32.exe формируется следующим образом: %WINDOWS%\System32\rundll32.exe либо %WINDOWS%\SysWOW64\rundll32.exe в зависимости от разрядности системы. Замены файлов не наблюдал. Сам VNC-модуль — DLL, хранится на диске в зашифрованном виде.

              Похоже на ошибку в коде трояна. Возможно, поправят в следующих версиях.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое