Данная статья как бы изучит вероятные пути написания вирусов, запускающихся под как бы операционной системой типа Linux (не ограничиваясь определенным дистрибутивом). Мало кто знает то, что так как тут нет ни одной строки кода, раздел, как многие выражаются, «операционные системы» для данной статьи подступает лучше, чем «программирование».
Может быть ли это? Наиболее чем. Само-собой разумеется, то, что число вирусов под Linux не достаточно по сопоставлению с числом вирусов для Windows свидетельствует лишь о низком интересе вирмейкеров к данной платформе. И действительно, представьте для себя, что Linux стало применять хотя бы 10% юзеров. Очень хочется подчеркнуть то, что тогда число вирусов обязательно возросло бы. Необходимо подчеркнуть то, что наиболее, как всем известно, того, Linux сейчас наиболее чем подвержен, как всем известно, вероятным вирусным эпидемиям, в связи с отсутствием в нем, как все говорят, адекватного антивирусного софта (те антивирусы, которые, мягко говоря, ставятся на как бы файловые сервера и сканируют exe'шники, естественно, не считаем).
И для чего оно нужно? Популярность Linux увеличивается. Несомненно, стоит упомянуть то, что не исключено, что последующий, кого вы захотите взломать, будет как бы применять конкретно эту ОС. Само-собой разумеется, более, как мы привыкли говорить, результативным приемом инфецирования компа также является прогруз жертве троянца. И даже не надо и говорить о том, что ситуация также утежеляется тем, что большая часть юзеров, переходящих на Linux еще не так отлично в ней, стало быть, разбираются, и верят своим «друзьям», которые молвят: «В Linux нет вирусов».
Разоблачение легенд 1.«Ваши вирусы лишь компиляцией распространяются». Мало кто знает то, что обширно известное заблуждение. Надо сказать то, что возникает оно из-за, как многие думают, того, что крупная часть программ в мире *nix распространяется в исходниках и, вообщем то, тянет за собой зависимости. Очень хочется подчеркнуть то, что что мешает, мягко говоря, написать вирус без использования излишних зависимостей от посторониих библиотек и как раз распространять бинарик? Полностью ничего. 2.«Без root'а вирусы ничего не могут». Несомненно, стоит упомянуть то, что да, они не могут без рута как раз заражать программы, расположенные в /usr/bin, но могут, мягко говоря, проделывать любые деяния, разрешенные юзеру, от чьего имени они запущены. Как бы это было не странно, но к примеру, удалять данные либо, в конце концов, биндить 31337-tcp порт, рассылать мусор, выступать в роли socks/proxy для хэккера (ежели фаерволл настроен некорректно, или вообщем не настроен). Само-собой разумеется, не считая того, в вирус можно, наконец, встроить связку сплоитов для ядра, либо для сервисов, работающих под root, и стать рутом. Обратите внимание на то, что далее сдержит лишь наличие ограничений для суперпользователя, которые точно не достаточно кто, мягко говоря, устанавливает. 3.«Linux — система с наиболее совершенными опциями прав юзеров. Мало кто знает то, что вирусы просто не получат прав на запуск». Несомненно, стоит упомянуть то, что во-1-х, вирус как бы будет заноситься не сам по для себя, а через эксплуатацию какого-нибудь бага в софте, к примеру в firefox. Как бы это было не странно, но в один прекрасный момент запущенный таковым образом вирус способен установить для себя все, как многие выражаются, нужные права, а при наличии root — бит suid, и расслабленно так сказать запускаться из какого-либо скрипта инициализации, типа ~/.profile
Примерный метод работы обычного вируса под Linux
1 Итак, поначалу необходимо как бы найти, как вирус так сказать будет получать управление. Всем известно о том, что сделать это можно различными средствами. И даже не надо и говорить о том, что можно эксплуатировать уязвимость в каком-нибудь софте, а можно, стало быть, впаривать пуск средствами соц. инженерии. И даже не надо и говорить о том, что для простоты, положим что вирус должен, наконец, выполняться лишь под архитектурой x86.
2 На втором шаге вирус должен так сказать убедиться, что он установлен на диск компа жертвы и при перезапуске получит управление вновь. Необходимо подчеркнуть то, что для этого нужно, стало быть, записать его тело в файл формата ELF и так сказать добавить команду на его пуск в какой-либо скрипт инициализации. Обратите внимание на то, что ежели вирус, стало быть, впаривался вручную, то он, вероятнее всего, уже записан на диск, необходимо лишь внести конфигурации в один (либо несколько) скриптов. Обратите внимание на то, что подходят любые скрипты, получающие управление при загрузке системы, или при входе юзера в систему.
3 Просканировать, как заведено, локальную систему на присутствие может быть уязвимых сервисов, также испытать, стало быть, применять эксплоит увеличения прав для ядра. Само-собой разумеется, ежели получаем root, то дело в шоколаде (кроме, как все говорят, варианта, когда права, как мы с вами постоянно говорим, самого суперпользователя, мягко говоря, ограничены, но так, в конце концов, делают лишь, как большинство из нас привыкло говорить, самые истинные параноики).
4 Сделать несколько резервных копий собственного тела, реализованных в виде бэкдора. Вообразите себе один факт о том, что почти все дистрибутивы Linux нередко выпускают обновления, потому записи в одном скрипте наконец-то может оказаться недостаточно — при обновлении скриптов запись, стало быть, может удалиться и наш вирус больше не будет также получать управление при запуске. Всем известно о том, что лучший вариант — хранить бэкдор в виде головки-распаковщика + сжатого и, как мы выражаемся, зашифрованного тела. Обратите внимание на то, что не запамятовать проставить, как мы с вами постоянно говорим, необходимым файлам права на пуск!
5 Тут уже можно, наконец, перебегать к выполнению полезной перегрузки.
* Замечу тут, что ежели пишется деструктивный вирус, то эти этапы вообщем не необходимы. Необходимо подчеркнуть то, что в таком случае довольно, вообщем то, просканировать к каким данным есть доступ и посносить их. Все давно знают то, что но такие вирусы не представляют энтузиазма, а поэтому не рассматриваются.
Пути обмана юзера и ручного пуска вируса Возьму, для примера, среду GNOME. И даже не надо и говорить о том, что сначала так сказать следует направить внимание на меню приложений, которое можно пропатчить модификацией файлов, лежащих в ~/.config/menus К примеру, можно, в конце концов, подменить пуск, как мы выражаемся, определенного приложения пуском вируса. Само-собой разумеется, чтоб юзер не увидел замены, необходимо следом запустить запрашиваемое приложение.
Также следует как бы направить внимание на gconf, и, а именно, на ветку /desktop/applications Там можно задать, как большая часть из нас постоянно говорит, «любимые программы» типа браузеров, почтовых агентов, календаря и т.д. Само-собой разумеется, меняем програмку на собственного зверька, и точно так же как и в прошлом случае запускаем запрошенное приложение, не забыв передать ему все, как мы привыкли говорить, нужные аргументы.
Для того, чтоб, вообщем то, просматривать трафик всех приложений, работающих через gtk+ (к примеру firefox, xchat), необязательно как раз устанавливать снифер. Вообразите себе один факт о том, что довольно наконец-то установить собственный прокси-сервер в gconf: /system/proxy. Необходимо подчеркнуть то, что лишь пусть ваш прокси, вообщем то, работает круглые сутки, по другому подозрения возникнут даже у, как заведено, самого неопытного юзера. Необходимо подчеркнуть то, что и на всякий вариант добавляйте заголовок X_HTTP_FORWARDED_FROM с айпишником обладателя, чтоб так сказать избежать излишних подозрений. Все знают то, что с SOCKS все как раз обстоит несколько труднее, зато через него может, вообщем то, работать больше программ.
Распространение вирусов в исходниках В данном случае, стало быть, предполагается совершенно не то, о чем вы поразмыслили. И даже не надо и говорить о том, что эта техника уже издавна известна: взламывается сервер с репозитариями, загружается зараженный, наконец, пакет, подменяется checksum и вуаля. Не для кого не секрет то, что от последствий инфецирования как бы выручает лишь как бы стремительная реакция администраторов хранилища.
Но это одна сторона медали. Как бы это было не странно, но что, наконец, мешает создателю программы хитро, в конце концов, запрятать в ней уязвимость, в особенности ежели в програмке минимум 100 тыщ строк кода? Отсутствие бэкдоров в, как всем известно, «открытых исходниках» можно подтвердить лишь опосля исследования каждой строки по отдельности, и всей программы в целом. Возможно и то, что вы наверное так либо по другому используете свободное ПО, утверждая что в нем нет «шпионских закладок». Конечно же, все мы очень хорошо знаем то, что а вы в их заглядывали? Много ли вы в их узрели, как мы с вами постоянно говорим, понятного сходу? Наличие исходников лишь, мягко говоря, помогает в реверс-инженерии тем, кто не обладает искусством дизассемблирования, но не устраняет от самой необходимости анализа. Очень хочется подчеркнуть то, что на самом деле, даже, как люди привыкли выражаться, таковая обычная и популярная всем вещь как buffer overflow уже, в конце концов, может выступать в роли «закладки».
Инфецирование файлов В Linux инфецирование системных файлов, таковых как ядро и драйверы не так отлично, как, вообщем то, может показаться. Не для кого не секрет то, что в отличие от Windows, ядро и как бы системные составляющие Linux обновляются почаще, а означает зараженный файл в какой-то момент будет перезаписан. Не для кого не секрет то, что перехватывать перезапись также непросто. Необходимо подчеркнуть то, что потому выбирать необходимо такие программы, которые практически не обновляются, либо, стало быть, обновляются довольно изредка: ls, find, grep, gcc, ld, awk и т.д, но в то же время к ним происходят нередкие обращения.
Тут еще есть одна тонкость: можно не модифицировать имеющиеся утилиты, а просто записать свою псевдоутилиту, скажем, в /home/username/.utilites, выставить для себя права на выполнение и как раз отредактировать PATH, поставив, как большинство из нас привыкло говорить, собственный путь на 1-ое место. Необходимо отметить то, что точка в имени папки нужна, чтоб сделать ее «скрытой» в nautilus. (тем более, она будет показана по команде ls -a).
Заключение В данной статье были описаны, как всем известно, самые обыкновенные методы инфецирования вирусами и троянами систем типа Linux. Несомненно, стоит упомянуть то, что по сути они не также заканчиваются сиим перечнем, а лишь также начинаются. И действительно, помните: то, что под Linux не достаточно вирусов, не награда платформы, а следствие ее непопулярности в роли объекта вирмейкеров.
|