Троян Qakbot встревает в переписку жертв, чтобы увеличить свою популяцию

Троян Qakbot встревает в переписку жертв, чтобы увеличить свою популяцию

Троян Qakbot встревает в переписку жертв, чтобы увеличить свою популяцию

Исследователи из Sophos изучили повадки Qakbot — модульного Windows-зловреда, который, несмотря на почтенный возраст, сохранил свою актуальность как угроза. Троян даже стал еще более агрессивным в отсутствие основных конкурентов — сошедшего со сцены Trickbot и потерявшего былую мощь Emotet.

Дебютировавший как банкер вредонос за десять с лишним лет научился воровать и другую информацию, а также регистрировать клавиатурный ввод, открывать бэкдор, избегать обнаружения и, следуя примеру Trickbot и Emotet, загружать другие вредоносные программы, в том числе шифровальщиков.

Разбор недавних атак Qakbot, он же QBot, QuackBot и Pinkslipbot, показал, что он по-прежнему распространяется через спам, доставляет различную полезную нагрузку и сканирует сети жертв в поисках слабых мест. Вредонос также сохранил способность к самораспространению через перехват переписки своих жертв в Outlook и рассылку поддельных реплик на найденные входящие сообщения.

Как оказалось, такие зловредные письма используют форму reply-all («ответить всем»); в них даже цитируется легитимное сообщение, на которое троян отозвался от имени жертвы. Фальшивое послание лаконично: оно состоит из одной фразы и ссылки (URL или хотлинк), указывающей на веб-ресурс с архивным файлом, содержащим вредоносный документ в редком формате .xlsb (Excel Binary Workbook).

Примечательно, URL в письмах Qakbot обычно включают несколько слов на латыни, как в этом примере Sophos (nulla quia — «никаких ибо», eum — «ему»):

 

Как и следовало ожидать, при открытии xlsb-файла пользователя попросят включить режим редактирования и активировать макрос, запускающий цепочку заражения. Опасная функциональность Microsoft Office по умолчанию отключена, а скоро, видимо, и вовсе исчезнет из пользовательского интерфейса.

При установке Qakbot создает на диске C: папку с произвольным 5-значным именем для своих файлов, а затем начинает собирать подробную информацию о зараженной машине. Каждые пять минут работающий в памяти троян (DLL загружаются в память процесса Exporer.exe или Msedge.exe с помощью regsvr32) пытается связаться со своим сервером.

В ответ на присланные данные зловреду отдают дополнительные модули, которые тоже загружаются в память по методу process hollowing (создание нового экземпляра запущенного процесса в состоянии ожидания и замена легитимного кода в памяти вредоносным). Экспертам удалось выявить три таких компонента:

  • инжектор, внедряющий код для кражи паролей в веб-страницы Facebook, Microsoft, Google и систем онлайн-банкинга;
  • сканер сети, использующий протокол ARP;
  • модуль-спамер, который пытается подключиться к SMTP-серверу (заданный список содержит десяток позиций) и начать рассылку вредоносных писем.

Зловредные коды и C2-коммуникации тщательно маскируются с использованием обфускации и шифрования. Аналитикам пришлось изрядно повозиться, чтобы добраться до ключевых строк кода Qakbot, параметров конфигурации и вшитых адресов центра управления.

Зловред также умеет скрывать обращения к API Windows с помощью хеш-таблиц — похожий механизм использует Dridex. Кешируя данные в системном реестре, троян шифрует их ключом, сгенерированным в ходе заражения. При выполнении многих функций он использует команды WMI, которые тоже шифруются (по методу XOR).

Обмен с C2-сервером осуществляется по HTTPS (с TLS-щифрованием); каждое послание кодируется по base64 уникальным ключом. Сохраняемую локально информацию вредонос тоже шифрует, генерируя для этого отдельный ключ.

Не исключено, что авторы Qakbot-атак подрабатывают, продавая доступ к взломанным сетям. Экспертам попадались сэмплы, пытавшиеся загрузить на хост маячок Cobalt Strike, который можно потом использовать для дальнейшего проникновения в сеть.

Создатель Диспетчера задач объяснил, почему загрузка CPU в Windows врёт

Бывший инженер Microsoft Дэйв Пламмер, приложивший руку к таким знаковым вещам, как поддержка ZIP в Windows и меню «Пуск» в Windows NT, рассказал, как на самом деле Диспетчер задач считает загрузку процессора. И заодно объяснил, почему цифры в этом инструменте иногда кажутся немного странными, особенно если сравнивать их с тем, как компьютер ощущается в реальной работе.

По словам Пламмера, идея просто показать, насколько занят процессор на деле куда сложнее, чем кажется.

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

Сам Диспетчер задач, как объяснил Пламмер, работает не в режиме мгновенного измерения. Он обновляет данные через определённые интервалы, то есть показывает скорее интерпретацию того, что происходило между обновлениями, а не живую картину в каждый конкретный момент. Поэтому цифры на экране — это всегда усреднённый результат, а не моментальный снимок состояния процессора.

Самым очевидным решением мог бы быть простой расчёт по времени между обновлениями интерфейса. Но Пламмер от такого подхода отказался: он посчитал, что полагаться на точность GUI-таймера — идея так себе. Он даже сравнил это с попыткой доверить точный ритм метронома, который едет в кузове пикапа по разбитой дороге.

Вместо этого он заложил в Диспетчер задач другой принцип. Утилита запрашивает, сколько процессорного времени каждый процесс суммарно использовал с момента запуска (отдельно в пользовательском и системном режимах).

Затем из нового значения вычитается предыдущее, полученное во время прошлого обновления. Так определяется, сколько CPU-времени процесс съел за конкретный промежуток. А дальше это сравнивается с общим объёмом процессорного времени, которое было израсходовано всеми процессами за тот же период.

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

Сегодня на работу CPU влияют динамическое изменение частоты, турбобуст, тепловые ограничения, глубокие режимы простоя и другие механизмы. Из-за этого один и тот же процент загрузки уже не всегда означает один и тот же объём реально выполненной работы. Пламмер привёл образное сравнение: современная загрузка CPU больше похожа не на пройденное расстояние, а на загруженность шоссе. Полупустая трасса с быстрыми спорткарами может перевезти больше, чем полностью забитая дорога со старыми грузовиками.

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

RSS: Новости на портале Anti-Malware.ru