В марте 2021 года Центр безопасности 360 обнаружил атаку, замаскировавшую установочный пакет Telegram. После выполнения «установочного пакета» будет загружен законный установочный пакет Telegram, чтобы скрыть злонамеренное поведение в тайне, и он будет находиться через службу RDP.
Схема атаки выглядит следующим образом:
Метод атаки:
Ссылка для скачивания троянца: hxxps: //iplogger.org/2r64b6 (данные показывают, что исходная страница короткой ссылки — hxxps: //telegram.ccmmsl.com/). Когда браузер получает доступ к ссылке для загрузки, он будет перенаправлен на URL-адрес: hxxps: //cdn.discordapp.com/attachments/815911118606172214/818981362928713758/tsetup.exe.
По последней ссылке на ресурс видно, что троянец размещается на сервере Discord CDN. Discord — популярное программное обеспечение для общения в чате, в основном для геймеров, и количество пользователей растет с каждым годом. Вложения, загруженные в Discord, могут быть загружены всеми, а обмен файлами и передача между пользователями происходит быстро и удобно, что также привлекло внимание киберпреступников. Из этого следует, что на сервере CDN Discord размещено большое количество вредоносных программ, чтобы предоставить для удаленной загрузки троянских коней.
Например, ссылка на ресурс троянского коня в этой атаке.
Атака казнью
В этой атаке скачанный по ссылке «установочный пакет» был написан на языке C # и замаскирован под 32-битный файл установщика Telegram через значок программы. Чтобы лучше замаскироваться, «установочный пакет» украл легальную подпись программного обеспечения Telegram Telegram FZ-LLC, но по атрибутам файла видно, что подпись на самом деле недействительна.
Подготовка среды исполнения
Троянец, маскирующийся под установочный пакет, получит MAC-адрес локального компьютера и сопоставит его 13 345 MAC-адресов. Если он в списке, он не будет заражен. Кроме того, в программе есть такие функции, как обход указанного списка IP-адресов, региона и задержка выполнения вредоносного кода, но они не включены. А чтобы избежать повторных заражений, программа определяет,что была ли заражена текущая машина, подтверждая наличие файла% LocalAppData% \\ ASUNCB-dcBdklMsBabnDBlU. Если это так, он выйдет и самоуничтожится, а если нет, он создаст файл. Затем он перейдит по URL-адресу hxxps: //www.google.com/, чтобы убедиться, что сеть доступна, в противном случае он продолжает ждать, пока ответ о посещении не будет успешным.
Для плавного продвижения процесса атаки троянец отключает SmartScreen и UAC, изменяя ключи реестра, такие как EnableBalloonTips, EnableSmartScreen, EnableLUA, ConsentPromptBehaviorAdmin, PromptOnSecureDesktop и т. Д., Снижая возможности защиты системы и делая пользователей неуверенными в процессе атаки. Затем троянец загрузит обычный установщик Telegram с официального URL-адреса Telegram: hxxps: //updates.tdesktop.com/tsetup/tsetup.2.6.1.exe в каталог% LocalAppDta% и запустит легальный установщик с полномочиями администратора (runas) , завершит первоначальную работу установочного пакета.
Наконец, траянец создает два файла bat% TEMP% \ Action.bat и% TEMP% \ Remove.bat, напишит пакетные команды и выполнит сценарии. Action.bat выполняет последующий процесс атаки, а Remove.bat завершает самоудаление.
Скачивание и запуск сценария Powershell
Файл сценария Action.bat использует powershell для выполнения удаленных сценариев: hxxp: //ppoortu8.beget.tech/new_file.txt, а new_file.txt действует как загрузчик для загрузки трех других сценариев и выполнения start.vbs.
start.vbs заражает только машины с объемом ПЗУ более 128 КБ. Если условия соблюдены, он запустит % TEMP% \ ready.ps1.
Ready.ps1 исправит заголовок функции AmsiScanBuffer модуля amsi.dll в процессе PowerShell самого исправления и позволит функции напрямую вернуть 0x80070057 (E_INVALIDARG), чтобы избежать обнаружения вредоносного содержимого сценария в памяти AMSI (интерфейс сканирования AntiMalware). Наконец, он использует команду iex (Invoke-Expression) для выполнения содержимого сценария Get-Content.PS1. Этот метод не перезапустит новый дочерний процесс PowerShell, поэтому предыдущий патч все еще действителен. Однако сам файл Get-Content.ps1 также был исправлен asmi.
Выпуск и место проживания бэкдорных программ
Get-Content.ps1, как последний выполненный сценарий, отвечает за завершение операций выпуска и резидентных операций программы бэкдора. Прежде всего, сценарий определяет, что имеет ли текущая среда выполнения сценария права администратора (S-1-5-32-544) через SID, если есть, он выполнит последующие операции, если нет, он перезапустит start.vbs. При перезапуске start.vbs Get-Content.ps1 использует обход SilentCleanup UAC для повторного выполнения start.vbs от имени администратора.
Причина, по которой служба SilentCleanup может использоваться для обхода UAC: во-первых, служба SilentCleanup имеет наивысшие полномочия на выполнение; во-вторых, услуга может быть запущена обычными пользователями; в-третьих, переменная окружения% windir% используется в пути запуска программы во время выполнения. , Эту переменную можно изменить, изменив значение ключа windir под HKCU \\ Environment под общими полномочиями.
Для использования SilentCleanup в Get-Content.ps1, выполняемые сценарием включают:
(1) Изменить значение ключа windir в разделе реестра HKCU \\ Environment на «wscript $ env: temp \ start.vbs» (в конце строки есть 2 пробела);
(2) Запустить службу silentcleanup, и значение ключа windir будет загружено для выполнения из командной строки:
schtasks / run / tn \ Microsoft \ Windows \ DiskCleanup \ SilentCleanup / I
(3) Удалить значение ключа windir, чтобы не повлиять на другие системные программы.
После успешного использования сценарий начинает подготовку к выпуску бэкдора dll, задействованная служба — termservice (служба удаленного рабочего стола). Сначала добавьть три каталога в исключения из сканирования Защитника Windows, чтобы предотвратить очистку связанных файлов в каталогах:
(1) C: \ windows \ брендинг \
(2) C: \ users \ wgautilacc \ desktop \
(3) C: \ Пользователи \ зеркала \ рабочий стол \
Затем он проверит, существует ли служба termservice и была ли создана, и импортирует соответствующую конфигурацию реестра (путь к файлу конфигурации:% Temp% \\ rpds.reg). Когда служба Termservice существует, поскольку последующие атаки изменят соответствующую конфигурацию службы, Get-Content.ps1 установит для типа запуска службы значение «отключено» и завершит соответствующий процесс svchost.exe.
Значение параметра выполнения завершенной svchost — -k networkservice.
Затем расшифруются и создаются следующие файлы:
% SystemRoot% \ branding \ mediasrv.png (DLL-оболочка RDP);
% SystemRoot% \ branding \ mediasvc.png (DLL-библиотека ServHelper BackDoor);
% SystemRoot% \ branding \ wupsvc.png (файл конфигурации RDP Wrapper);
Если следующих юридических файлов нет в системе, создаются эти:
% SystemRoot% \ system32 \ rdpclip.exe;
% SystemRoot% \ system32 \ rfxvmt.dll.
Изменятся значения реестра, связанные со службой TermService:
(1) Установить порт, используемый RDP-Tcp, на 7201 (0x1C21):
-HKLM \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp \ PortNumber
(2) Использовать файл dll% SystemRoot% \\ branding \\ mediasrv.png, выпущенный на предыдущем шаге, как ServiceDll для termservice:
-HKLM \ system \ currentcontrolset \ services \ TermService \ parameters \ ServiceDLL
(3) Отключить модель драйвера дисплея WDDM и использовать старую версию XDDM.
-HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows NT \ Terminal Services \ fEnableWddmDriver
Установить автоматический режим запуска TermService. Таким образом, служба будет загружать ServiceDll каждый раз при запуске, то есть% SystemRoot% \\ branding \\ mediasrv.png, а ServiceDll загрузит бэкдор, чтобы программа бэкдора находилась на машине.
Изменить SID сетевой службы: S-1-5-20 на имя пользователя NT Authority \ Network Service и добавить его в группу администраторов.
Наконец, изменить время создания, доступа и изменения всех файлов в каталоге% SystemRoot% \ branding \\ на 2014/11/11 12:00:00.
Запустить службы удаленного рабочего стола rdpdr, TermService.
Удалить файлы, связанные с этой атакой, в каталоге% TEMP%.
Запуск программы бэкдора
При запуске службы TermService будет загружен mediasrv.png (ServiceDll). mediasrv.png на самом деле является программой RDP Wrapper, но, кроме того, есть дополнительное действие для загрузки вредоносной DLL (% SystemRoot% \\ branding \\ mediasvc.png) в код Dll.
Обычно mediasrv.png выполняет следующие три операции:
(1) Импортировать исходную библиотеку DLL системы, относящуюся к RDP: termsrv.dll, получить от нее адреса функций ServiceMain и SvchostPushServiceGlobals и передать их собственному вызову функции с тем же именем, тем самым косвенно предоставив исходные функции termsrv.dll для снаружи;
(2) Использовать расшифрованный файл конфигурации оболочки RDP (% SystemRoot% \\ branding \\ wupsvc.png), чтобы реализовать упаковку функций RDP и поддерживать больше функций. На следующем рисунке показана конфигурация SLPolicy в wupsvc.png, в которой имена полей, такие как AllowRemoteConnections, AllowMultipleSessions и т. Д., можно примерно понимать его эффект;
(3) Загрузить mediasvc.png как DLL, и последующие действия атаки будут завершены основной функцией DLL из mediasvc.png.
Загруженная DLL: mediasvc.png, названный трояном-бэкдором ServHelper, впервые появился в конце 2018 года. Троянец разработан с использованием языка Delphi, обычно в форме DLL, и упакован с помощью PECompact, чтобы завершить свое пребывание на машине жертвы путем взлома службы RDP.
Большинство конфиденциальных строк в троянских файлах, выпущенных в результате этой атаки, были зашифрованы, а ключом дешифрования был «RSTVWVDJ». Метод дешифрования заключался в использовании ключа для сдвига зашифрованного текста в пределах диапазона букв.
После выполнения ServHelper подключится к C2: hxxps: //jfuag3.cn/figjair/b.php и выполнит соответствующие операции в соответствии с полученными командами. Он поддерживает 32 инструкции, включая создание пользователя, загрузку файла, настройку инструмента удаленного управления и ведение журнала с клавиатуры, управление каналом разговора и другие функции.
Расшифрованная строка содержит URL-адреса, записи реестра, командные строки, пути к файлам и т. Д., участвующие в различных командах.
Поддерживаемые командные строки:
bk | Session channel creation |
info | Get machine information |
fixrdp | Set the registry key and restart the system |
reboot | Restart the computer |
updateuser | Update the user name and password of the administrator group and remote account, if not, the default user is WgaUtilAcc |
deployns | Deploy NetSupport remote control tool |
keylogadd | Add a keylogger, write «add^» to the pipe \\.\pipe\txtpipe |
keylogdel | Delete the keylogger, write «del^» to the pipe \\.\pipe\txtpipe |
keyloglist | List keyloggers, write «list» to the pipe \\.\pipe\txtpipe |
keylogreset | Reset the keylogger, write «reset» to the pipe \\.\pipe\txtpipe |
keylogstart | Start the keylogger by executing the exported function euefnaiw in the module |
sshurl | Download ssh.zip |
getkeylog | Get keylog
(c:\\windows\\temp\\tv.txt) |
getchromepasswords | Get the chrome password, stored in c:\\windows\\temp\\logins_read.txt |
getmozillacookies | Get mozallia Cookies,stored in c:\\windows\\temp\\moz.txt |
getchromecookies | Get chrome cookies, stored in
c:\\windows\\temp\\cookies.txt |
search | Query content in mozallia and chrome Cookies |
bkport | Designated tunnel port |
hijack | Hijack the user account by executing the module export function gusiezo3 |
persist | Persistence |
stophijack | Stop hijacking |
sethijack | Hijacking active users |
setcopyurl | Set the copy tool url |
forcekill | Forcibly terminate the process |
nop | Heartbeat package |
Tun | Create an ssh channel, the local port is 7201 |
Slp | Sleep |
killtun | Close the ssh process |
shell | Execute cmd command and echo |
update | Module update |
load | Download the executable file from the url |
socks | Create ssh channel |
Последующие обновления
Через несколько дней после атаки файл замаскированного инсталляционного пакета был обновлен раз. Загруженный файл основан на загрузчике, написанном проектом с открытым исходным кодом github go-clr. После запуска расшифровать троянского коня C # и использовать CLR для его размещения и выполнения.
Внутреннее имя выпущенного и исполняемого C # трояна — Droper.exe, который реализует только одну функцию, выпускает и выполняет два сценария PowerShell:
(1)% TEMP% \ get-content.ps1;
(2)% TEMP% \ ready.ps1;
После успешного выпуска запустить файл ready.ps1.
По сравнению с предыдущим примером, Dropper.exe больше не загружает легальный установочный пакет для установки, больше не использует размер ПЗУ в качестве условия выполнения и не требует подключения к Интернету после успешного выполнения.
Совет по безопасности
В настоящее время 360 Total Security может в первую очередь перехватывать и уничтожать такие троянские угрозы. В то же время перед лицом коварных и постоянно меняющихся троянских угроз Центр безопасности 360 также предоставляет пользователям следующие рекомендации по безопасности для безопасной загрузки:
- При загрузке и установке программного обеспечения пользователи могут сначала найти и установить их через официальный сайт программного обеспечения;
- Пользователи, на которые влияет синий экран, могут перейти на сайт www.360totalsecurity.com, чтобы вовремя загрузить и установить 360 Total Security, чтобы принудительно обнаруживать и уничтожать такие вирусные трояны.
- Повысьте уровень безопасности и не открывайте по желанию различные файлы, отправленные незнакомцами. Если вам нужно открыть его, обязательно проверьте, соответствует ли суффикс файла имени файла.
IOCs:
MD5
675f88e0715be722e6609e4047f2aad7
de78b574c81eb85652c198e70898a9a0
8a4e2ee2fa9195022c3747a363baa092
3a9821c769ecbf95d44117a04729f2f2
b1a2d11ae871805b8fcb2b4820b47e7e
37330f50cf392bca59567a22de3b836a
7fcaacd9d9ba4695d12e82020d84a95d
aa5219949ca4ecdcd0d9afe7615124fb
6c5b7af9c87ee08c7a7bd43ed7f75d6d
URL
hxxps://telegram.ccmmsl.com/
hxxps://iplogger.org/2r64b6
hxxps://cdn.discordapp.com/attachments/815911118606172214/818981362928713758/tsetup.exe
hxxp://ppoortu8.beget.tech/new_file.txt
hxxp://ppoortu8.beget.tech/start.vbs
hxxp://ppoortu8.beget.tech/Get-Content.ps1
hxxp://ppoortu8.beget.tech/ready.ps1
hxxp://bromide.xyz/ssh.zip
hxxp://sdsddgu.xyz/khkhkt
hxxps://raw.githubusercontent.com/sqlitey/sqlite/master/speed.ps1
nvursafsfv.xyz
pgf5ga4g4b.cn
String decryption script
def decbkd(s, k = ‘RSTVWVDJ’):
l = len(s)
kl = len(k)
o = »
for i in range(l):
if s[i].isalpha():
o += chr((ord(s[i].upper()) — ord(k[i%kl].upper()) + 26)%26 + (ord(‘A’) if s[i].isupper() else ord(‘a’)))
else:
o += s[i]
return o
reference
- https://www.binarydefense.com/an-updated-servhelper-tunnel-variant/
- https://www.proofpoint.com/us/threat-insight/post/servhelper-and-flawedgrace-new-malware-introduced-ta505
Подробнее о 360 Total Security