DevartNigga
@DevartNigga
Потный

Можно ли написать вирус на JavaScript?

Можно ли написать вирус на чистом javascript и какой сложности(оценивается в нанесеном им ущербе) ? Интересно было бы послушать конкретно о стиллерах на js :)
  • Вопрос задан
  • 23670 просмотров
Решения вопроса 1
Начнем с того, что вирус - это довольно сложная вещь и состоит он обычно из нескольких модулей. Один из них - это эксплойт. Его основная задача - эксплуатировать уже известную уязвимость с целью получения возможности выполнения произвольного кода (как пример).

Если мы мельком полистаем список уязвимостей, то увидим, что во многих из них фигурирует JS. Вот график взятый с того же сайта:
RXmc_1mXxXA.jpg
На нем прекрасно видно динамику уязвимостей приводящих к удаленному выполнению кода (красная линия). Отсюда логичный вывод - js можно использовать как эксплоит.

Некоторые предыдущие ораторы неверно отмечали - браузер, как и любое другое полноценное приложение, имеет доступ к файловой системе (тот самый обычный доступ, когда можно писать, читать, создавать не системные файлы) посредством API операционной системы (например: WinAPI для windows). Внутри это все выглядит как системный вызов - программа передает управление на уровень ядра, предварительно сказав, что нужно открыть\создать\записать такой-то файл. Значит, нам нужен ассемблерный (да-да, не удивляйтесь) код, на который наш эксплоит передаст управление.

Ок. Теперь перейдем к самому эксплоиту. Есть такая техника - heap spraying: мы берем нашу полезную (вредную) нагрузку и заполняем ей всю память:
var buf = new Array();
// заполним 200МБ памяти
for(var i = 0;  i != 200; ++i) {
  buf[i] = nop + shellcode;
}


И, вполне возможно, что мы перезапишем определенные области (не буду вдаваться в подробности) и сможем выполнить наш shellcode. И да, как сказал riot26 - браузер после такого, скорее всего, крэшнется ... но нам это уже не важно - код будет внедрен и выполнен. Конечно, это банальщина и есть еще 100500 различных вариантов, о которых вам никто не расскажет, но идея ясна.

PS пользуясь случаем - передаю привет людям в погонах!
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
Разумеется никому не нужен браузер, который вам позволит, не спрашивая пользователя, сделать на его машине что-либо серьезное. Фактически, в браузере и API-то толком нет, чтобы, допустим, файловую систему шерстить. Оно там и не нужно, веб-приложение на то и веб, что большинство данных берет с сервера, в отличие от приложения десктопного.
Другое дело, что в браузере можно искать уязвимости, и пытаться их эксплуатировать, но "на чем" будет написан ваш вирус в таком случае - вопрос конкретной уязвимости. Если это будет удаленное выполнение кода, то на js вы скорее всего напишете лишь непосредственно эксплоит, а полезная нагрузка уже должна быть в нативном коде платформы жертвы.
Писать обыкновенные вирусы на языках вроде C/C++/C# можно потому, что они исполняются как процессы операционной системы, и имеют доступ либо к нативному API, либо к API некоей плафтормы, такой как .NET. А эти API имеют достаточно средств для доступа к системе - достаточно лишь заставить жертву запустить тело вируса и, возможно, дать повышенные привелегии (хотя тем же шифровальщикам повышенные привелегии совсем не нужны - им ничто не мешает перезаписывать несистемные (пользовательские) файлы и вымогать деньги за дешифратор). В браузере таких средств нет. Если они и появятся, то тогда наверняка будет какой-либо механизм четкого разграничения доступа.
Максимум что можно сделать, как сказал Itvanya - завалить движок js хламом (навыделять памяти, запилить кучу таймеров), с контролем съедаемых ресурсов сейчас у браузеров плоховато.
Ответ написан
Комментировать
@vGrabko99
html, css, js, php, golang, mysql
можно ддос ботнет запилить на js
Ответ написан
Комментировать
riot26
@riot26
<:З )~~
Крашнуть браузер -- максимум что можешь сделать на js
Ответ написан
Комментировать
@teslor
Вирус в классическом понимании этого слова написать нельзя, но можно написать вредоносную программу.
В Windows к примеру JavaScript встроен в оболочку - Windows Script Host (в виде JScript), скрипты имеют доступ к файловой системе, реестру и т.д, т.е. сделать можно очень много чего. Но пользователь сам должен запустить вредоносный js-файл на исполнение (и иметь административные права).
В браузере, как уже вам ответили, ничего особенного сделать нельзя, т.к. браузер - это песочница, и все действия JS там сильно ограничены в целях безопасности.
Ответ написан
Комментировать
@hime2
Нет, тебе в сторону с++/с# java итд.
Но стоит напомнить о наказании, все это фиксится и очень быстро.
Ты можешь использовать 1000 прокси, но это лишь увеличит отсрочку до того момента, когда придут к тебе.
На js можно попробовать его установить и запустить.
Но опять же, если пользователь адекватный у тебя ничего не выйдет.
Ответ написан
Комментировать
mrTyler
@mrTyler
Frontend Developer
смотрите в сторону chrome plugins, много статей на habr было опубликовано об этом.
Ответ написан
Комментировать
@Itvanya
Доколе браузерный JavaScript не имеет доступа к файловой системе, то ничего кроме локальной перегрузки браузера сделать он не может. Другое дело - технология node.js, которая имеет нужный api для того, чтобы делать все то, что можно сделать на любом другом яп. Вопрос, честно говоря, изначально поставлен неправильно.
Ответ написан
@BUTURUM
слышали про nodeJS? она имеет доступ к файловой системе, без каких-то ограничений. в браузере вы вирус не напишите
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы