ВАЖНО Miner Search - Поиск и уничтожение скрытых майнеров


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
215475650-25d31515-d52a-485b-b194-7db63e0e9962.png


Программа разработанная для поиска и уничтожения скрытых майнеров. Является вспомогательным инструментом для поиска подозрительных файлов, каталогов, процессов и тд. и НЕ является антивирусом.

Обнаруживает и приостанавливает вредоносные процессы. Запускает удаление заблокированных папок через список контроля доступа на вкладке безопасность. При нахождении каких либо подозрительных или вредоносных объектов требуется подтверждение на запуск автоматической очистки.

Основан на Miner Killer.
  • Улучшен процесс сканирования процессов;
  • Добавлено статическое сканирование каталогов;
  • Добавлена функция автоматической очистки от вредоносных каталогов;
  • Уничтожение вредоносных процессов (в том числе помеченные как критические)
  • Сканирование вредоносных ключей реестра и т.д...
Для запуска требуется NET Framework 4.5 и выше.

Ссылка на гитхаб (Можно ознакомиться с кодом программы):

Скачать бинарник можно здесь:

Автор:@Spectrum735
 
Последнее редактирование:

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
По человечески скажите что надо сделать, с божьей помощью я скачал это с гитхаба. Как это открыть чтобы мой майнер наконец ушел?
Попробуй запустить лечащую утилиту Касперского, как минимум этот майнер он может удалять.


Вообще рекомендую установить антивирус тогда.
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
По человечески скажите что надо сделать, с божьей помощью я скачал это с гитхаба. Как это открыть чтобы мой майнер наконец ушел?
запустить и подождать. Надеюсь вы скачали exe файл
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Вообще рекомендую установить антивирус тогда
если это не тот вредный realtek HD, который блочит установку антивирусов. Я просто не понимаю, что там может не получаться
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
если это не тот вредный realtek HD, который блочит установку антивирусов. Я просто не понимаю, что там может не получаться
Да я к тому-что если такие атаки проходят и кто-то плохо шарит в компах, как минимум виндовый антивирус неотключали-бы хоть, ведь он тоже его детектит кстати.

А лучше-да установить платный, много разговоров что АВ не нужен, в целом отчасти это так, но при условии если пользователи хоть как-то умеют пользоваться ПК и соблюдаюто основные правила...

Если нет, проще ну потратить там 2К в год и купить лицензию, но важно ещё его и не отключать если будет блокировать что-то.

Так-что почти 100% угроз такого типа антивирусы детектят, если не сканером, то в момент запуска.)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
Последняя версия программы:
Обновил шапку.
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Последняя версия программы:
Обновил шапку.
лучше указывать https://github[.]com/BlendLog/MinerSearch/releases/latest
чтобы гитхаб автоматом перенаправлял на последнюю
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Обновление MinerSearch

Версия v1.4.3
- Добавлен сигнатурное обнаружение подозрительных файлов
- Добавлена краткая информация о системе в лог
- Удаление вредоносных записей в hosts файле, а не самого файла. Подтверждение не требуется
- Исправлен баг, при котором не удается получать аргументы командной строки в связи с отключением службы WMI.
- Добавлен карантин. Кроме файлов, обнаруженных при статическом анализе, также создается txt файл с прежними путями этих файлов
- Исправить баг при неверном определении инжекта в процесс Dwm на Win 8 (не 8.1)
- Удаление пользователя John, если это не текущий пользователь
- Добавлена создание защищенных скрытых файлов от повторного заражение
- Обработка исключения TCP подключений для процессов
- Исправлен баг с ошибкой "Отказано в доступе" для некоторых файлов
- Исправлен баг с невозможностью разблокировать каталог при установленом Антивирусе
- Добавлено автоматическое удаление недействительных задач из планировщика на основе результата последнего запуска. Для лучшего результата следует перезагрузить ПК после сканирования. Параметр --remove-empty-tasks также работает.
- Добавлен параметр запуска --no-signature-scan для пропуска скнирования по сигнатурам

 

Вложения

  • MinerSearch_v1.4.3.0.zip
    184.5 КБ · Просмотры: 1

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Добрый день, коллеги!
Пытаюсь сообразить по алгоритму нахождения майнера в статике. Есть даже исходник его
Вам нужно авторизоваться, чтобы просмотреть содержимое.

Если смотреть через hex редактор, то можно увидеть частые повторения строк определенной длины вида
строка:
аjfk5RN2hoqfaovgigiwT†N,ijxz
pfrpюburioqfaovgigiwtrwlhjxz
Bќfrp•жI2hoqfхlvgigiwtrwlhjxz
kqfrp}йI2hoqfIзJ'hgiwбqwlhjxz
kqfrpmaurioqf)›O'hgiw4ъK,ijxz
Для каждого билда эти строки конечно же разные

пробовал находить такие строки по 16 байт и передвигать плавающее окно тоже по 16 байт вместо одного и считать кол-во повторений. Таких повторений встречается в диапазоне 500-2000 + вычисление энтропии по Шеннону всех ранее встречающихся последовательностей байт (колебание от 0.52-0.54). Исключаются также повторения только из нулей. В общей сложности выходит 75% точность опеределения.

Код представлен ниже

псевдодетект вредоносности:
        public static bool CheckByteSequenceOccurrences(string filePath, int sequenceLength, int minOccurrences)
        {
            // Считываем все байты из файла
            byte[] allBytes = File.ReadAllBytes(filePath);

            // Создаем словарь для отслеживания встречаемых последовательностей
            Dictionary<string, int> sequenceCounts = new Dictionary<string, int>();

            for (int i = 0; i < allBytes.Length - sequenceLength; i += sequenceLength)
            {
                byte[] sequenceBytes = new byte[sequenceLength];
                Array.Copy(allBytes, i, sequenceBytes, 0, sequenceLength);

                if (!ContainsOnlyZeros(sequenceBytes))
                {
                    string sequenceHash = BitConverter.ToString(sequenceBytes);

                    // Если последовательность встречалась ранее, увеличиваем счетчик
                    if (sequenceCounts.ContainsKey(sequenceHash))
                    {
                        sequenceCounts[sequenceHash]++;
                    }
                    else
                    {
                        // Иначе добавляем последовательность в словарь
                        sequenceCounts[sequenceHash] = 1;
                    }
                }
            }

            int maxOccurrences = sequenceCounts.Values.Max();
            string mostCommonSequence = sequenceCounts.FirstOrDefault(x => x.Value == maxOccurrences).Key;
            double shannonEntropy = CalculateShannonEntropy(sequenceCounts, sequenceLength);

            // Если максимальное количество превышает или равно minOccurrences, возвращаем true
            if (maxOccurrences >= minOccurrences && shannonEntropy >= 0.53 && shannonEntropy <= 0.54)
            {
                Console.WriteLine($"FOUND SEQUENCE:\n\t{mostCommonSequence}\n\tInclusions {maxOccurrences}\n");
                Console.WriteLine($"Entropy: {shannonEntropy}");
                return true;
            }
            else
            {
                return false;
            }
        }

        static bool ContainsOnlyZeros(byte[] sequenceBytes)
        {
            foreach (byte b in sequenceBytes)
            {
                if (b != 0)
                {
                    return false;
                }
            }

            return true;
        }

        static double CalculateShannonEntropy(Dictionary<string, int> sequenceCounts, int sequenceLength)
        {
            int totalOccurrences = sequenceCounts.Values.Sum();
            double entropy = 0.0;

            foreach (var count in sequenceCounts.Values)
            {
                double probability = (double)count / totalOccurrences;
                entropy -= probability * Math.Log(probability, 2);
            }

            return entropy / sequenceLength; // Нормализация по длине последовательности
        }

Изначально хотел вычислять заголовки PE файла и вычислять их энтропию, как это делает Detect it easy, но средствами C# на Framework это сделать не представляется возможным (по крайней мере я не нашел решения). Может быть кто-то подскажет как повысить точность?
 
Последнее редактирование:

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 085
Репутация
8 208
Изначально хотел вычислять заголовки PE файла и вычислять их энтропию, как это делает Detect it easy, но средствами C#
А вычислять заголовки PE и интрапию, это что имеется в виду ?

И почему нельзя сделать на C#.

Вообще вроде есть консольные утилиты для работы с PE, если я ничего не путаю, можно эти консольные тулзы вызывать из C#, а результат парсить, если тяжело делать самому, как вариант.
 
Верх Низ