Miner Search

Обсуждение Miner Search v1.4.7.5

BlendLog

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

Ссылка на скачивание → Github MinerSearch

Основан на Miner Killer.
  • Улучшен процесс сканирования процессов;
  • Добавлено статическое сканирование каталогов;
  • Добавлена функция автоматической очистки от вредоносных каталогов;
  • Уничтожение вредоносных процессов (в том числе помеченные как критические)
  • Сканирование вредоносных ключей реестра...
Версия v1.3
  • Добавлена проверка цифровой подписи файлов
  • Добавлены дополнительные разделы сканирования реестра (разделы автозапуска, appinit_dlls)
  • Изменён метод ведения логов. Статистика сканирования параллельно записывается в файл в формате MinerSearch_ГГГГММддммсс.log
  • Исправлены незначительные недоработки
Для запуска требуется NET Framework 4.5 и выше.

215475650-25d31515-d52a-485b-b194-7db63e0e9962.webp
215356942-8080b05a-f324-4006-9864-6843923ff2be.webp
 
Последнее редактирование модератором:
Очень странно, проверял на различных версиях Windows 10 и 11 c последними обновами, никакого детекта небыло. Скорее всего ему не нравятся строки с путями каталогов, куда обычно антивирусы ставятся. Их майнер создает, блокирует доступ, чтобы установить АВ нельзя было
 
Еще вариант, что на виртуалке запустил без обновления баз.
 
Ложная тревога, на виртуалке были через чур старые базы у защитника.
 
Я так понимаю бекапа ключей реестра перед удалением утилита не делает?
 
На данный момент нет
И hosts считаю надо делать на всякий случай бэкап. Юзер может не подумав согласиться, на очистку, а потом горевать.
И по идее лучше было бы делать бэкап всего, что удаляется. На вашем месте я бы делал бы даже бекап ACL прав на папки. На случай если вдруг утилита сфолсит где-то.
 
И hosts считаю надо делать на всякий случай бэкап. Юзер может не подумав согласиться, на очистку, а потом горевать.
И по идее лучше было бы делать бэкап всего, что удаляется. На вашем месте я бы делал бы даже бекап ACL прав на папки. На случай если вдруг утилита сфолсит где-то.
hosts создается бэкап, насчет значений в реестре не думаю что это обязательно, ибо она удаляет ветку, где 100% поработал майнер. Не думаю, что простой юзер будет запрещать запуск утилит
 
hosts создается бэкап
Не заметил, что через cmd его бэкапите. Собственно разве не проще было через File.Move.
ибо она удаляет ветку, где 100% поработал майнер. Не думаю, что простой юзер будет запрещать запуск утилит
Если исходить, что это запускалось на машине, где был майнер. А вдруг запустили на какой-то офисной, где майнера и не было, также может юзер использовал раньше какой-то другой защитный софт который добавил такие записи, или ещё какой-то вариант о котором и не задумывались сначали. Сделать бэкапы не сложно, зато в случае если вдруг вылезут какие-то проблемы легче будет исправить.

И использование дробных частей для веса подозрительности, по мне лучше было бы использовать целые числа, чтобы случайно не вылезли проблемы на ОС где другой разделитель дробной части.
 
@BlendLog, весьма существенная доработка проекта Miner Killer.
В процессе тестирования вылезли некоторые баги:
Код:
[29.03.2023 19:08:23]:     [!] File is not signed: C:\Windows\System32\ctfmon.exe in key ctfmon
Программа не умеет проверять файлы, подписанные через каталог безопасности.
Код:
[29.03.2023 19:08:24]:     [!] File is not found: C:\Windows\syswow64\RunDll32.exe C:\Windows\Syswow64\cmicnfgp.dll,CMICtrlWnd from Key "Cmaudio8788"
Программа неправильно парсит путь к файлу из записи реестра, от чего ругается, что файла нет, а на самом деле он есть.
Точно такая же ошибка возникает, когда путь к файлу прописан с кавычками, но так же имеет аргументы.

Из предложений по улучшению:
Код:
[29.03.2023 19:08:04]:     [!!!] Don't have valid signature in file: C:\Users\Alex\AppData\Local\Yandex\YandexBrowser\Application\browser.exe
[29.03.2023 19:08:05]:     [!!!] Don't have valid signature in file: C:\Users\Alex\AppData\Local\Yandex\YandexBrowser\Application\browser.exe
и таких много ...
Если путь один и тот же, то выводить в лог только первый.

Код:
[29.03.2023 19:08:03]:     [!!!] Don't have valid signature in file: C:\Users\user\AppData\Roaming\Telegram Desktop\Telegram.exe
Дополнительно выводить текстовое описание кода ошибки, возвращаемого функцией WinVerifyTrust.
Объясню для чего это нужно: в случае выше - подпись считается невалидной, потому что система Windows 7 и она не получила корневой сертификат цепочки этой подписи. На самом деле подпись валидна, и код ошибки будет иным, чем просто в случае, когда отсутствует подпись, или когда неверный хеш.
 
Последнее редактирование:
Собственно разве не проще было через File.Move.
Да, вы правы.
Программа неправильно парсит путь к файлу из записи реестра, от чего ругается, что файла нет, а на самом деле он есть.
Точно такая же ошибка возникает, когда путь к файлу прописан с кавычками, но так же имеет аргументы.
Есть такое. У меня не получилось обрабатывать значения с пробелами в имени .exe файла. Также не учитывается аргументы такого вида как у rundll32, а типа "--background-service" учитывает. Я и не предполагал, что там будет висеть rundll. Надо думать.
Дополнительно выводить текстовое описание кода ошибки, возвращаемого функцией WinVerifyTrust.
То есть вместо Signed | Not Signed лучше выводить конкретное значение из WinTrust? (Сертификат истек, поставщик неизвестен и тд)
Программа не умеет проверять файлы, подписанные через каталог безопасности.
Как узнать, какой именно каталог безопасности принадлежит файлу и есть ли он вообще?
 
Собственно разве не проще было через File.Move.
Тоже хотел предложить, но зная, что .Net любит кидаться эксепшинами на I/O операции, я бы такую функции обязательно оборачивал в блок try-catch (да и не только ее, а все обертки).
Заодно и вместо "del" и "rm" - File.Delete и Directory.Delete(d, true); так сказать для гарантированного удаления, если вдруг в именах попадётся юникод или символы, которые ком. строка не очень жалует, даже будучи в кавычках, тот же знак процента.
Есть такое. У меня не получилось обрабатывать значения с пробелами в имени .exe файла. Также не учитывается аргументы такого вида как у rundll32, а типа "--background-service" учитывает. Я и не предполагал, что там будет висеть rundll. Надо думать.
Я понял, вы имеете в виду что-то вроде:
Код:
C:\Program Files (x86)\Download Master\dmaster.exe -autorun
когда и пробелы, и при том нет кавычек, и для винды это корректное значение в ключе Run.
Ну, по хорошему, надо бы заснять ProcMon-ом с включением трассировки загрузки ОС, и посмотреть как именно винда проверяет путь (есть предположение, что она перебирает варианты).
То есть вместо Signed | Not Signed лучше выводить конкретное значение из WinTrust? (Сертификат истек, поставщик неизвестен и тд)
Я предлагаю оставить префикс как есть, но дописывать расшифровку кода ошибки в конце строки в скобках.
Как узнать, какой именно каталог безопасности принадлежит файлу и есть ли он вообще?
Если вам чисто для образовательных целей, то здесь в разделе 1.7 описывал. Но для проверки подписи вам этого знать не нужно. WinVerifyTrust сама все сделает, если ей передать нужные параметры. После чего она же и расскажет, в каком каталоге нашла (есть конечно способ "брута" в лоб, но нам он не нужен).
Вкратце, алгоритм такой: сперва ЭЦП проверяется по каталогу, если контекст каталога получен не был, то проверяется внутренняя подпись (как у вас сейчас).
Проверка по каталогу выполняется заполнением полей структур WINTRUST_DATA и WINTRUST_CATALOG_INFO такими данными.
Соответственно, эти данные нужно сперва получить через специфические WinAPI-вызовы CryptCATAdminAcquireContext2 (CryptCATAdminAcquireContext для хешей старее sha256), CryptCATAdminCalcHashFromFileHandle2 (CryptCATAdminCalcHashFromFileHandle).
Проще будет подсмотреть в исходнике Process Hacker, т.к. в HiJackThis перегружено лишним и будет тяжело для понимания.
Если заморачиваться не собираетесь, отпишитесь, возможно у меня найдётся время и сделаю пул риквест, но это не скоро.
 
Последнее редактирование:
@regist, такой вопрос назрел. Майнер ставит RDP Wrapper. Стоит ли его выносить? Он по идее вредоносный, или нет?
 
@regist, такой вопрос назрел. Майнер ставит RDP Wrapper. Стоит ли его выносить? Он по идее вредоносный, или нет?
В AVbr я его выношу, тем более пути которые использует RDP Wrapper в этом майнере отличаются от путей которые использует "легальная" версия. Легальная в кавычках ибо такого класса программы в любом случае относятся к потенциально опасным - "not-a-virus".
 
В AVbr я его выношу, тем более пути которые использует RDP Wrapper в этом майнере отличаются от путей которые использует "легальная" версия. Легальная в кавычках ибо такого класса программы в любом случае относятся к потенциально опасным - "not-a-virus".
Понял.
И использование дробных частей для веса подозрительности, по мне лучше было бы использовать целые числа, чтобы случайно не вылезли проблемы на ОС где другой разделитель дробной части.
А что на разных версиях винды разный разделитель?
 
А что на разных версиях винды разный разделитель?
Разные не версии, а разные локализации.
К примеру на русской локали разделитель дробной части это запятая, а на англ. это точка. А запятой обычно отделяют тысячи.
 
Для наглядности посмотри на разделитель дробной части в этом сообщении Помощник по изучению англ. языка.
Там где написано по русски и где он перевёл по англ. Собственно как понимаю, у тебя там точка используется из-за этого, что автор исходного "Miner Killer" был англоязычным.
 
Последнее редактирование:
Назад
Сверху Снизу