#c #antivirus #trojan
#c #антивирус #троян
Вопрос:
Я установил компилятор c для Windows с помощью MinGW. Я попытался создать простую программу:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!";
return 0;
}
И сохранил его как try.cc
. После этого я открыл cmd в папке и запустил g try.cc -o some.exe
. Он сгенерирован some.exe
, но мой антивирус (avast) распознал его как вредоносное ПО. Я думал, что это может быть ложное срабатывание, но в нем конкретно сказано, что это троян.
Я удалил файл из антивирусного хранилища и загрузил его в «https://www.virustotal.com /» Результат:
24 из 72 движков обнаружили его как вредоносное ПО, и многие из них — как троян.
Это ложное срабатывание? Почему он будет обнаружен как троян? Если это так, как мне избежать получения этого предупреждения каждый раз, когда я создаю новую программу?
Редактировать:
Спасибо всем за помощь, я провел полную проверку своего компьютера с помощью 2 антивирусов, и все казалось чистым. Я также проверил папку MinGW и ничего.
Проблема продолжает появляться каждый раз, когда я создаю новую программу на c . Я попытался изменить код и имя, но AV продолжал обнаруживать его как вирус. Забавно, что изменение кода изменило тип вируса, о котором сообщал av.
Я все еще не уверен на 100%, что компилятор чист, поэтому я не знаю, следует ли мне игнорировать его и запускать программы в любом случае. Я скачал MinGW с «https://osdn.net/projects/mingw/releases /»
Если кто-нибудь знает, как быть полностью уверенным, что созданные исполняемые файлы не являются вирусами, а только ложными срабатываниями, я был бы рад, если бы они поделились этим.
Правка 2:
Мне пришло в голову, что если компилятор заражен и добавляет код, я мог бы увидеть его с помощью декомпилятора / дизассемблера, загрузив в него исполняемый файл. Я скачал декомпилятор c , который я нашел здесь «snowman», и использовал его в файле. Проблема в том, что код перешел из 7 строк в исходном исполняемом файле в 5265, и его немного сложно понять. Если у кого-то есть некоторый опыт в обратном проектировании, ссылка на исходный файл находится в комментариях ниже.
Комментарии:
1. Если ваш набор инструментов не был заражен, чтобы заставить его производить трояны, я бы не стал беспокоиться об этом. Просто
exe
так получилось, что у вас один и тот же отпечаток пальца, что и у некоторых троянов. Посмотрите, есть лиg -O3 -g0 try.cc -o some.exe
разница.2. Похоже на настоящий положительный результат (его обнаруживают несколько несвязанных движков). Возможно, вы бесплатно скачали какой-нибудь хитроумный пакет mingw с дополнительным вредоносным ПО. Просканируйте свой компьютер сейчас.
3. Как именно вы установили mingw?
4. Avast не является полезным продуктом на компьютере разработчика.
Ответ №1:
Проблема возникала раньше. Программы, скомпилированные с помощью mingw, как правило, время от времени вызывают тревогу snake oil (т.Е. антивирусную программу). Вероятно, это связано с тем, что mingw является популярной цепочкой инструментов для авторов вирусов, и поэтому его выходные данные соответствуют общим шаблонам, встречающимся в true positives. Это повторялось снова и снова, также на SE (например https://security.stackexchange.com/questions/229576/program-compiled-with-mingw32-is-reported-as-infected). [rant] На мой взгляд, это истинное свидетельство неспособности AV-компаний, потому что это было бы легко исправить, и заставляет задуматься, лучше ли реализованы основные функции их программ. [/ rant]
Ваш случай немного подозрителен, потому что количество запущенных AV-программ очень велико. Хотя я никогда не слышал о взломанном mingw, и беглый поиск в Google этого не изменил, это не невозможно. Компрометация компиляторов, безусловно, является эффективным методом распространения вируса; самый известный пример с дополнительным уровнем косвенности — это взлом Кена Томпсона.
Также, безусловно, возможно, что ваш компьютер заражен вирусом, не созданным mingw, который просто внедряется в новые исполняемые файлы, которые он находит на диске. Это должно быть легко выяснить обычными средствами. Отправной точкой может стать онлайн-проверка нескольких других (не mingw) новых исполняемых файлов; они должны запускать те же AV-программы.
Обратите внимание, что, хотя у меня есть некоторый общий опыт в ИТ, у меня нет специальных знаний в области ИТ-безопасности; воспринимайте все, что я говорю, как отправную точку для ваших собственных исследований и действий.
Ответ №2:
Это может быть вызвано двумя причинами
-
Это действительно троянец, вы загрузили свой mingw из некоторых мест, где его код был изменен, чтобы добавить вирус в каждую созданную вами программу. Это делается почти для всех коммерческих компиляторов, все «бесплатные» (взломанные) версии содержат этот код внутри, каждый раз, когда вы компилируете свой код, вирус добавляется в ваш exe.
-
Хэш вашего exe-файла по какой-то причине соответствует существующему вирусу, вы можете подтвердить это, изменив один символ в своем коде, например, «привет, мир!» на «привет, мир?» и посмотрите, по-прежнему ли это считается вирусом, если да, существует очень высокая вероятность того, что ваш компилятор добавляет вирусы в ваши программы.
Комментарии:
1. Можете ли вы указать на отчеты о конкретных примерах таких скомпрометированных компиляторов?
2. В оба пункта трудно поверить. У вас были какие-либо ссылки?
3. Первый вариант очень легко сделать, например, если ваш вирус является функцией, во время компиляции и в фоновом режиме вы переименовываете main в oldmain, и ваш вирус main вызывает main после его исключения. вы также можете запустить два потока (основную программу и вирус), вы можете создавать пользовательские библиотеки с помощью virus (например: заменить printf на callVirusCode, затем printf) это всего лишь примеры. Во-вторых, теория называется «столкновение» (когда совпадают хэши).
4. Для 1.: Да, но я никогда не слышал о такого рода атаках. Я думаю, что этот вид не очень ценен. Это только предположение? Для 2.: Да, но более 24 столкновений для каждой соответствующей программы? Хэш-коллизии очень редки…
5. Для 1: «Вы» никогда не слышали об этом, это не значит, что его не существует. для 2 это зависит от используемого размера хэша и количества вирусов в нем.
Ответ №3:
Обновить:
На самом деле это была какая-то коллизия хэшей, компилятор не был заражен. Я несколько раз менял строку в функции печати, как и предлагалось, даже добавляя разрывы строк, но каждый раз мой AV обнаруживал ее как вредоносную. Я также попытался удалить некоторые строки кода (includes и print), и он также обнаружил его как вредоносное ПО.
Как ни странно, когда я добавил больше строк в код, AV перестал распознавать его как вирус. Заставляет задуматься, как работает используемая хэш-функция и как она соотносится с фактическим содержимым программ.
Так решается, и все было хорошо, просто некоторая небрежность AV (которая, я думаю, имеет свои причины).
Комментарии:
1. Интересно, и полезно знать. Но вы уверены, что это столкновение хэшей ? Хэши чувствительны к малейшим изменениям в коде. Я бы подумал, что это какая-то другая форма распознавания образов. Например, может возникнуть идея, что полезные программы не могут быть меньше некоторого минимального размера, что делает AV-программы предвзятыми по отношению к небольшим программам.
2. Да, возможно, вы правы, но помните, что удаление строк кода изменило тип обнаруживаемого вируса, поэтому дело не может быть только в размере исполняемого файла. Мне было интересно, насколько сложно игнорировать строки программы после компиляции, прежде чем вычислять хэш-функцию. Это может объяснить, почему изменения в печати не оказали эффекта (но я предполагаю, что это потенциально можно использовать, вставляя код в строки), но я не уверен.
3. В случае столкновения хэшей будет только один соответствующий AV. Вероятность столкновения очень и очень мала. @Peter Восстановить Монику, думаю, намного лучше.
4. Каждый раз, когда код, написанный на C , компилируется, MinGW добавляет к нему исправленный код. Этот код является лишь небольшой частью исполняемого файла, но по мере уменьшения размера исполняемого файла доля исходного кода также уменьшается. Это означает, что если есть какое-либо вредоносное ПО небольшого размера, использующее MinGW, то по мере уменьшения размера моей программы процент ее кода, идентичного вредоносному, увеличивается. Если какой-либо AV применяет хэш-функцию к разделам кода (что может помочь в обнаружении полиморфных вирусов), а затем проверяет совпадения, высокое сходство может привести к ложному срабатыванию.