Криптовідсоси як конвергентна загроза: погляди на нові гібридні екосистеми атак
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
У звіті пояснюється, як усталена інфраструктура кіберзлочинності все більше конвергується з операціями зливу криптовалют, що призводить до появи гібридних екосистем атак, які ставлять під загрозу як активи Web2, так і Web3. Зловмисники покладаються на відшліфовані фішингові сторінки, тематика яких пов’язана з інструментами штучного інтелекту або фінансовими послугами, щоб переконати жертв підключити свої гаманці, авторизувати транзакції токенів і несвідомо переносити кошти через декілька блокчейнів. Два продемонстровані приклади, StepDrainer і EtherRAT, показують, як ця модель охоплює як злив гаманців у браузері, так і шкідливе програмне забезпечення для Windows з функціональністю, що усвідомлює блокчейн. В результаті загроза тепер поширюється далеко за межі користувачів криптовалют і глибше проникає в основні корпоративні середовища.
Розслідування
Дослідники вивчили роботу StepDrainer, як службу за підпискою на шкідливе ПЗ, включаючи його інфраструктуру на PHP і JavaScript та використання Web3Modal для відображення переконливих запрошень підключення до гаманців. Також вони проаналізували шкідливе ПЗ EtherRAT для Windows, яке постачалося через троянізований інсталятор TFTP, зберігало стійкість через ключ реєстру Run і взаємодіяло з кінцевими точками Ethereum та Solana RPC. Під час розслідування команда виявила індикатори, такі як шкідливі домени, ключі реєстру та артефакти командного рядка, пов’язані з обома шляхами атаки.
Пом’якшення
Організації повинні заблокувати доступ до відомих шкідливих доменів, вимагати багатофакторної аутентифікації для розширень гаманців де це можливо, та контролювати системи на предмет підозрілих записів реєстру Run та неочікуваних процесів Node.js. Команди безпеки також повинні перевіряти трафік до публічних сервісів RPC блокчейну на предмет аномальної поведінки та регулярно переглядати розширення браузера на предмет ознак підробки або зловживання.
Відповідь
Якщо така активність виявлена, негайно ізолюйте уражений хост, видаліть шкідливий запис реєстру Run, завершіть несанкціоновані процеси Node.js та скасуйте всі дозволи токенів, наданих ураженими гаманцями. Слідчі повинні потім провести криміналістичний аналіз, щоб виявити будь-які додаткові завантаження або механізми стійкості, а також оновити списки дозволених або заблокованих для запобігання подальшої комунікації з визначеною інфраструктурою командування і контролю.
graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes – Techniques initial_access[“<b>Technique</b> – <b>T1204.001 User Execution: Malicious Link</b><br/><b>Description</b>: As vítimas clicam num link criado que inicia conteúdo malicioso.”] class initial_access technique delivery_html_smuggling[“<b>Technique</b> – <b>T1027.006 Obfuscated Files or Information: HTML Smuggling</b><br/><b>Description</b>: JavaScript malicioso é entregue através de uma página web que esconde a carga útil em HTML.”] class delivery_html_smuggling technique delivery_compile_after[“<b>Technique</b> – <b>T1027.004 Obfuscated Files or Information: Compile After Delivery</b><br/><b>Description</b>: A carga útil é montada no host após a entrega inicial.”] class delivery_compile_after technique delivery_embedded_payloads[“<b>Technique</b> – <b>T1027.009 Obfuscated Files or Information: Embedded Payloads</b><br/><b>Description</b>: A carga útil está escondida dentro de outro ficheiro, como JavaScript.”] class delivery_embedded_payloads technique delivery_deobfuscate[“<b>Technique</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/><b>Description</b>: Dados Base64 são decodificados no navegador antes da execução.”] class delivery_deobfuscate technique persistence_run_key[“<b>Technique</b> – <b>T1127.002 Trusted Developer Utilities Proxy Execution: ClickOnce</b><br/><b>Description</b>: O instalador cria uma Runu2011key para iniciar um node.exe malicioso.”] class persistence_run_key technique persistence_appcert[“<b>Technique</b> – <b>T1546.009 Event Triggered Execution: AppCert DLLs</b><br/><b>Description</b>: DLLs assinadas com certificado confiável são carregadas para persistência.”] class persistence_appcert technique recon_hardware[“<b>Technique</b> – <b>T1592.001 Gather Victim Host Information: Hardware</b><br/><b>Description</b>: O malware consulta detalhes de hardware do sistema comprometido.”] class recon_hardware technique recon_firmware[“<b>Technique</b> – <b>T1592.003 Gather Victim Host Information: Firmware</b><br/><b>Description</b>: O malware recolhe versão de firmware e informações da BIOS.”] class recon_firmware technique c2_web_protocols[“<b>Technique</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/><b>Description</b>: Utiliza tráfego web padrão (HTTP/HTTPS) para comando e controlo.”] class c2_web_protocols technique c2_bidirectional[“<b>Technique</b> – <b>T1102.002 Web Service: Bidirectional Communication</b><br/><b>Description</b>: Permite comunicação bidirecional entre o implante e o servidor.”] class c2_bidirectional technique c2_oneway[“<b>Technique</b> – <b>T1102.003 Web Service: One-Way Communication</b><br/><b>Description</b>: Envia dados ao servidor sem esperar resposta.”] class c2_oneway technique c2_encrypted[“<b>Technique</b> – <b>T1573 Encrypted Channel</b><br/><b>Description</b>: O tráfego C2 é encriptado para evitar deteção.”] class c2_encrypted technique c2_data_encoding[“<b>Technique</b> – <b>T1132 Data Encoding</b><br/><b>Description</b>: Os dados são codificados (ex: base64) antes da transmissão.”] class c2_data_encoding technique c2_config_repo[“<b>Technique</b> – <b>T1602 Data from Configuration Repository</b><br/><b>Description</b>: Dados de configuração são obtidos de repositórios onu2011chain.”] class c2_config_repo technique asset_drain[“<b>Technique</b> – <b>T1204.002 User Execution: Token Approval</b><br/><b>Description</b>: A vítima aprova permissões de tokens via Web3Modal injetado, permitindo transferência de ativos.”] class asset_drain technique %% Nodes – Tools / Processes tool_malicious_link[“<b>Tool</b> – <b>Name</b>: Malicious Phishing Link<br/><b>Description</b>: URL criada que carrega o portal falso de trading.”] class tool_malicious_link tool tool_js_payload[“<b>Tool</b> – <b>Name</b>: Obfuscated JavaScript Payload<br/><b>Description</b>: Código Base64 executado no navegador.”] class tool_js_payload tool process_installer[“<b>Process</b> – <b>Name</b>: Windows Installer<br/><b>Description</b>: Instala Runu2011key e node.exe.”] class process_installer process tool_node_exe[“<b>Tool</b> – <b>Name</b>: node.exe<br/><b>Description</b>: Executa JavaScript malicioso após persistência.”] class tool_node_exe tool tool_web3modal[“<b>Tool</b> – <b>Name</b>: Web3Modal UI<br/><b>Description</b>: Interface injetada que solicita aprovação de transferências de tokens.”] class tool_web3modal tool %% Operators op_and((“AND”)) class op_and operator %% Connections – Attack Flow initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_app_cert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal
Потік атаки
Детекції
Можливі точки стійкості [ASEPs – Програмне забезпечення/Вулик NTUSER] (через подію реєстру)
Перегляд
Виконання NodeJS з нетипового розташування (через командний рядок)
Перегляд
Можливе перерахування антивірусного або міжмережевого програмного забезпечення (через створення процесу)
Перегляд
LOLBAS Conhost (через командний рядок)
Перегляд
Підозріле використання CURL (через командний рядок)
Перегляд
Можливі перевірки обходу (через Powershell)
Перегляд
Можлива спроба зловживання Publicnode Ethereum як каналу C2 (через dns-запит)
Перегляд
Можливе вивантаження / завантаження даних / C2 через сторонні сервіси / інструменти (через проксі)
Перегляд
Можливе вивантаження / завантаження даних / C2 через сторонні сервіси / інструменти (через dns)
Перегляд
Виявлення механізму стійкості EtherRAT з використанням conhost.exe в режимі без голови [Створення процесу в Windows]
Перегляд
Виконання команди EtherRAT через PowerShell для системної розвідки [Windows PowerShell]
Перегляд
Виконання симуляції
Попередня умова: Тест телеметрії та базової лінії перед польотом має пройти.
-
Опис атаки та команди
Зловмисник вже розмістив шкідливий файл JavaScript (
payload.js) на цілі. Щоб досягти стійкості, вони використовують встановленийnode.exeбінарний файл для запускуconhost.exeв режимі без голови, який потім завантажує JavaScript навантаження. Цей метод уникає видимих вікон консолі і зливається з нормальноюnodeвикористанням.- Скидання шкідливого навантаження (
payload.js) до тимчасового розташування. - Виконати
node.exeз командою, яка створюєconhost.exe --headlessз вказівкою на навантаження. - Створіть заплановану задачу яка виконує цю ж команду при запуску системи, забезпечуючи стійкість.
- Скидання шкідливого навантаження (
-
Скрипт регресійних тестів
# Імітація стійкості EtherRAT – PowerShell # ------------------------------------------------- # 1. Підготуй шкідливий JavaScript навантаження $payloadPath = "$env:TEMPpayload.js" @" // Мінімальний шкідливий JS – насправді він би завантажив імплантат EtherRAT const { exec } = require('child_process'); exec('calc.exe'); // Приклад побічного ефекту "@ | Set-Content -Encoding UTF8 $payloadPath # 2. Знайти node.exe (припускаємо, що він у PATH) $node = (Get-Command node.exe).Source if (-not $node) { Write-Error "node.exe не знайдено в PATH." exit 1 } # 3. Скласти командний рядок conhost $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`"" # 4. Запуск через node.exe (це створює відношення батько-дитина) $script = "require('child_process').exec(`"$conhostCmd`")" & $node -e $script # 5. НЕОБОВ’ЯЗКОВО: Створіть заплановану задачу для стійкості $taskName = "SystemUpdate" $action = New-ScheduledTaskAction -Execute $node -Argument "-e `"$script`"" $trigger = New-ScheduledTaskTrigger -AtLogOn Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force -
Команди очищення
# Вилучення запланованого завдання Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false # Видалити навантаження Remove-Item -Path "$env:TEMPpayload.js" -Force # Зупинити всі незавершені процеси conhost, створені тестом Get-Process conhost -ErrorAction SilentlyContinue | Where-Object { $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless' } | Stop-Process -Force