• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Решено Маскируем вирус за 5 минут или как скрыть exe из автозагрузки [.NET C#].

Egolds

Green Team
17.02.2019
20
15
BIT
0
Суть проста, ищем уже добавленные файлы в автозагрузку, и случайный из них заменяем собой.
Код реализован на C#. И конечно же требует доработок.
Что скажете?

 
  • Нравится
Реакции: zozeik, Vlad789 и Gnom74
C

Changer431

Суть проста, ищем уже добавленные файлы в автозагрузку, и случайный из них заменяем собой.
Код реализован на C#. И конечно же требует доработок.
Что скажете?

допустим ты подменил оригинальный хром. юзаер запускет ярлык по хрому- ниче не происходит. максимум сутки жить такой маскировке.

Плохой способ.
 

Egolds

Green Team
17.02.2019
20
15
BIT
0
допустим ты подменил оригинальный хром. юзаер запускет ярлык по хрому- ниче не происходит. максимум сутки жить такой маскировке.

Плохой способ.
Почему ничего не происходит? ведь там есть запуск оригинального файла (хрома) и всё, хром запустился, а вирус уже подменил другой файл.
 

<Gh0St>

Green Team
23.10.2018
18
6
BIT
0
А что мешает запустить в основном потоке свой код, а в дополнительном ту программу, которую ты заменил?
Для примера рассмотрим тот же хром:
  1. Копируем/переименовываем оригинальный хром
  2. Вместо оригинального хрома сохраняем свой exe'шник
  3. При запуске своего exe'шника из автозагрузки, запускаем оригинальный хром в отдельном потоке (или отдельным процессом)
  4. А в основном потоке выполняем свой exe'шник
Таким образом и подмена сработает и юзер ничего не заподозрит
 

Egolds

Green Team
17.02.2019
20
15
BIT
0
А что мешает запустить в основном потоке свой код, а в дополнительном ту программу, которую ты заменил?
Для примера рассмотрим тот же хром:
  1. Копируем/переименовываем оригинальный хром
  2. Вместо оригинального хрома сохраняем свой exe'шник
  3. При запуске своего exe'шника из автозагрузки, запускаем оригинальный хром в отдельном потоке (или отдельным процессом)
  4. А в основном потоке выполняем свой exe'шник
Таким образом и подмена сработает и юзер ничего не заподозрит
а как быть с тем, что у оригинального файла (хрома) уже будет другое имя процесса? и он там сам себя запускает на каждую новую вкладку?
 

<Gh0St>

Green Team
23.10.2018
18
6
BIT
0
Тогда, можно пойти обратным путём: делаем code-inject в хром и внедряем код, который запустит в отдельном процессе/потоке наш exe'шник.
Куда инжектить? Думаю, code cave можно найти в хроме, как пример.
 

Egolds

Green Team
17.02.2019
20
15
BIT
0
Тогда, можно пойти обратным путём: делаем code-inject в хром и внедряем код, который запустит в отдельном процессе/потоке наш exe'шник.
Куда инжектить? Думаю, code cave можно найти в хроме, как пример.
на c# можно наброски?
 
C

Changer431

Тогда, можно пойти обратным путём: делаем code-inject в хром и внедряем код, который запустит в отдельном процессе/потоке наш exe'шник.
Куда инжектить? Думаю, code cave можно найти в хроме, как пример.
это слишком мудренно уже как-то. ради автозагрузки я бы так замораживаться не стал.
 
  • Нравится
Реакции: Egolds

Egolds

Green Team
17.02.2019
20
15
BIT
0
Можно искать в гугл:
Из стоящего нашел инжект dotnet'овских dll, и то сам инжект и вызов реализован на c++.
И поковырялся в коде, можно инжектить свой dotnet код уже в запущенный процесс, приложение которого также dotnet, а не нативное.
И ещё разве что редактировать с помощью класса Assembly, исходный код чужого приложения, добавляя в него свой код, но также это не сработает с нативным приложением.

Если можно более конкретную ссылку, потому что в гугл посылать с банальным запросом я тоже умею.
 

<Gh0St>

Green Team
23.10.2018
18
6
BIT
0
Вот поэтому и используют С++ для таких дел. Рекомендую обратить внимание в сторону С++.

В теории можно и на С# такое сделать, принцип одинаков. Могу где-то ошибиться, но нужно делать так:
1) При запуске наш инжектор копирует наш exe'шник куда-нибудь и запоминает путь
2) Инжектор хранит в себе в виде шелл-кода код, который запустит в отдельном процессе наш exe'шник по сохранённому пути
3) Затем инжектор находит в хроме (например) место, куда можно внедрить наш шелл-код и внедряет его
4) В точке входа хрома заменяем оригинальные asm-инструкции на jump к началу нашего шелл-кода
5) Оригинальные инструкции сохраняем и дописываем после нашего шелл-кода
6) После дописываем jump на asm-инструкцию, которая идёт сразу за jump на наш шелл-код в точке входа
Это уже не инжект, а патчинг получается. Рекомендую погуглить об этом тоже.

Итого, что получается: при запуске хрома, будет выполнен переход на наш шелл-код, который запустит в отдельном процессе наш exe'шник, а затем будет выполнен переход обратно на код хрома.

Здесь следует так же учитывать пару моментов:
1) При патчинге, самое главное - не повредить файл, который патчим, не нарушить его целостность
2) АВ на такую активность может среагировать
 
Последнее редактирование:
  • Нравится
Реакции: morgot и Vertigo

black-icarus

One Level
10.10.2021
2
2
BIT
0
Пару лет (10+ лол) назад был способ через NtCreateRegistryKey (вроде так называется не помню точно) функцию, создать параметр в реестре с терминальным нулем в начале и таким образом его не было видно в редакторее реестра и в диспетчере задач, работал (и должен работать на <7) и вроде работал на 10 (не проверял), смысл в том что в обычной функции RegCreateKeyEx есть валидация аргумента с именем ключа, а NtCreateRegistryKey его нет. (только минус будет сообщение об ошибке при открытии раздела в редакторе реестра)
 
  • Нравится
Реакции: Artem N и Pernat1y
Мы в соцсетях:

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