Почему вас все равно взломают
Тему этой небольшой статьи навеяла небольшая дискуссия на хабре, свидетелем которой я стал. Один участник дискуссии был ярым сторонником ОС Linux и утверждал, что если всех простых пользователей перевести на Linux, то все будет просто зашибись — и не взломают и данные не украдут.В этом небольшом эссе я попытаюсь на простом языке объяснить, как вас могут теоретически взломать. Я попробуй обойтись без сложных терминов, для обычных пользователей статья даст красочное представление о взломе ОС, а более продвинутые пользователи между строк будут читать техническую информацию. Считаю, что пользователю любой ОС, а тем более тем, кто связан с этим по работе, необходимо понимать, что профессиональные вирусы — это не исполняемый файл, который переименовали в документ и просят вас запустить. И не всегда блокировка макросов не даст злоумышленнику выполнить код на вашей систему.
Знаете, последний раз участником подобных дискуссий я становился еще в школе в далеком 9–10 классе. Тогда я был ярым фанатом Windows, а мой друг использовал Linux, потом через некоторое время я начал разрабатывать под Linux — и все поменялось, я стал фанатом Linux и публично всех агитировал перейти на него. Я это веду к тому, если ваш оппонент страждет подискутировать на подобную тему в таком ключе, сразу вспоминайте тех двух школьников. Сам пользуюсь обеими операционками, и давно уже не сторонник таких холиваров, у меня работают сервера на Linux Debian, а сам пишу этот текст на ПК с Windows 8. Далее будет много негатива про Linux, но он не связан с какими-либо фанатическим убеждениями, просто я хочу объективно рассказать и убедить, что не важно какой ОС вы пользуетесь — взломать вас могут везде.
На сколько дырява ОС Windows…… на сколько дырява ОС Windows можно рассуждать годами, но интересно на сколько безопасен Linux? Если спросит у любителей Linux, а если ли у вас антивирус, то в ответ будет только смех. Аргумент такой — Linux создан профессионалами и все там by default защищено. Вот сажаем свою любимую собаку за Ubuntu и можно за ее данные не волноваться. Можно… пока.
Вообще есть две вещи, которые бесконечны, вселенная и дураки. С вселенной все понятно, но как быть с последними? Вот как объяснить различным пользователям Windows, что нельзя работать без антивирусной защиты? А как объяснить создателям отечественных мега-СЗИ, что нельзя защититься от взлома матрицей доступа и что взлом это не всегда: «Вдруг процесс А пишет файл autorun.exe, а вот матрицей доступа такой поток блокируется на запись и значит система защищена».
Ваша защищенность выглядит хорошей только в теории. Допустим вы тот самый пользователь Ubuntu (один из любимых моих дистрибутивов), вы устанавливаете на ПК своей любимой собаки Боб эту ОС. Тогда многие утверждают следующее — если Бобу на почту придет сообщение myDocument.docx, то даже если это окажется исполняемый файл, и он его по инструкции запустит, то ничего не произойдет — ведь для большинства действий необходим пароль root. Вы серьезно? Вы от нашествия представителей младших классов школы защищаетесь? Или все-таки от злоумышленников, которые являются членами преступных группировок, контролируют большие финансовые потоки и просто косят на своих собратьях бабло?
Уважаемые представители отечественных неназываемых СЗИ и авторы многих учебников по ИБ, вы, когда говорите, что если дословно цитирую: «Программе Word запретить выполнение макросов, а ее процессу запретить запись на диск и работу с реестром, то система 100% защищена». Вы правда так считаете?
Давайте все порядкуДавным-давно, когда Linux только зарождался его пользователи в большинстве, были профессионалы. Но со временем появились удобные для простого пользователя в работе дистрибутивы и начался рост числа пользователей-домохозяек. А что делает любая домохозяйка, правильно, совершает интернет-платежи, а там где деньги — туда слетают как пчелы на мед рой различного отребья, которое хочет на этом безвозмездно поправить свои финансы. 90% домохозяек пользуются Windows — и вирусы разрабатываются под эту ОС, и только хотя бы 20–30% домохозяек перейдут на Linux, то туда сразу будут вливаться большие финансы под разработку вредоносного ПО. И отчеты антивирусных компаний показывает о медленном, но увеличивающемся количестве таких программ.
Ок, вернемся к Бобу, единственная причина не беспокоится о своей безопасности одна — разработка троянца под его ОС нерентабельна. А вот так — экономически не выгодна, возможный доход злоумышленников будет меньше расходов. Долго ли так будет продолжаться большой вопрос.
Но все же, технически, на сколько возможно, что Боба взломают и данные уведут? Если конек безопасности Боба в том, что он никому не нужен и вирусы под его ОС пока еще не пишут — то это игра в русскую рулетку.
АлисаАлиса, подруга Боба, знает, что на счету Боба лежит кругленькая сумма монет, ключ лежит на ПК Буратино, и они вместе с Буратино решили сообразить на двоих. Что им для этого требуется: небольшой стартовый капитал, прямые руки Буратино и немного отваги.
Алиса знает, что Боб пользуется Ubuntu 14 LTS. Как себе представляет процесс взлома Боб? Он, как и большинство пользователей, считает, что Алиса отправит ему на почту файл с вложением, которое его попросят запустить и так как он считает себя спецом в области ПК и файл он не запустит, то конечно его данные в безопасности!
Многоходовочка от ПедроТогда Алиса идет на некоторый безымянный и распространенный ресурс и покупает у Педро уязвимость в любимом браузере Боба за N-ое количество зеленых. Педро не только снабжает Алису технической информации об уязвимости, но и высылает для Буратино (подельника Алисы) пример как запустить.Уязвимость, которую получает Алиса — уязвимость нулевого дня в браузере Google Chrome. Например, недавно открытые дыры CVE-2015–1233 или CVE-2014–3177, CVE-2014–3176, CVE-2013–6658 и сколько их еще не закрыто и о них известно только в ограниченных кругах — большой вопрос.
Как видно из описания уязвимостей Алиса может выполнить код в контексте процесса и работать это будет не только в ОС Windows, но и в Linux и Mac OS. Уязвимости взяты для примера случайным образом.
ActionБуратино составляет скрипт и записывает туда shell-код, который должен выполнится на целевой системе — ПК Боба. Для этого ему необходимо как-то передать ссылку. Первый вариант с почтой Алиса и Буратино сразу отмели — Боб осторожный пользователь и ссылки из почты не открывает. Тогда они решили немного сымпровизировать. Им известно, что Боб обычный человек и паранойей не страдает… ладно короче не суть, для простоты Боб, просто перешел по ссылке — Алиса уговорила.
После посещения Бобом ссылки в контексте процесса его браузера выполнился небольшой код, который написал Буратино — буквально несколько команд, которые в дальнейшем загрузили тело вируса и перешли в его выполнение. Но как же. Боб уверен, что Алиса просто показывает ему свои фотографии, никакие файлы на диск не загружаются, предупреждений нет, паролей от root никто не спрашивает.
Повышаем привилегииПосле того как разработка Буратино начала выполнять свои первые инструкции на процессоре Боба, стал вопрос, а что делать дальше? В теории Боба даже если и произойдет заражение, то ему ничего не будет, Боб поставил сложный пароль для root, да и вводить его вдруг во что бы то ни стало он не будет.
Буратино с Алисой предусмотрели такой вопрос и заранее его решили. Тот же самый Педро подсказал им, что у него есть парочка уязвимости нулевого дня в ядре Linux, наподобие свежих уязвимостей в ядре версии 3.17 и 3.14 — CVE-2014–9322, CVE-2014–3153.
Прочитав описание уязвимостей Буратино понял, что они позволят ему выполнить код в контексте ядра ОС Боба. И все что ему необходимо это чтобы его вредоносное приложение, воспользовавшись этими свежими дырами и выполнила код в ring-0.
Пока ни о чем не подозревающий Боб рассматривает фотографии Алисы, код Буратины уже серьезно вторгся в просторы его системы и ни антивирус (его просто нет), ни чего-либо еще не могут даже отобразить сообщение об вторжении. Так как Буратино решил не останавливаться на достигнутом, то он пошел дальше. Попав на самый нижний уровень ОС Боба в котором предполагается выполнение только доверенного кода, Буратино начал поиск файла, который ответственен за запуск ОС. Как только ПО от Буратины нашло этот файл, оно модифицирует его таким образом, чтобы при перезагрузке ПК Боба продолжался выполняться код Буратины.
RootkitИ так Буратино и Алиса получили доступ к ПК Боба под управление ОС Linux, но как им скрыть свое присутствие? Боб не дурак и каждые 5 минут проверят целостность системных файлов ОС. Для этого Буратино решили, что перезапишут код самой операционной системы, который загружен в память ПК Боба, но как? Ведь если те же действия провести на ОС Windows, то один небольшой системный компонент обнаружит это и принудительно перезагрузит ПК.
Боб за свою безопасность не беспокоится — ведь даже если код злоумышленника и выполнится в ядре, то ведь в последних версиях ядра Linux системные области памяти защищены от записи. Даже если Буратино и попытается перезаписать код ОС в ОЗУ, то процессор выдаст ошибку и произойдет перезагрузка ПК.
Тогда Буратино открыл документацию на процессор, который стоит на ПК Боба и стал изучать… Ему известно, что архитектура процессора Боба x86, но что это дает? Ведь на необходимые ему страницы в ядре стоит защита от записи. Тогда Буратино обратил внимание на регистр cr0 — небольшой блок памяти в котором хранятся данные с которыми работает процессор. А что будет если я 16-ый бит установлю в ноль, быстро перезапишу необходимые методы ядра и сразу же восстановлю регистр — подумал Буратино. И так и сделал, как оказалось если сбросить этот бит в ноль, то защиту от записи можно временно отключить.
Таким образом Буратино получил полный контроль над ОС Боба, да уязвимость потом нашли и исправили, но программный код, который засел таким образом в ОС Боба уже никак не обнаружить. Ежеминутный контроль целостности показывает, что ни один файл в системе не изменен — программа Буратины просто подменяет его при чтении. Процессов новых нет — вредоносный процесс просто скрыт и если на другой ОС существуют решения, которые давно уже обнаруживают такие техники, то под ОС Боба такого нет.
Вообщем, заключение, Алиса и Буратино сжалились над Бобом… и удалили все его файлы. Ах ладно, если серьезно, то никогда не будьте на столько фанатично уверенным в чем-либо. Я попробовал в легкой форме и без технических терминов изложить суть проблемы. Таким как Буратино совет не писать больше вирусов, всем Педрам сделать come out и сдать все неопубликованные уязвимости в публичный доступ для их исправления, а Бобу меньше верить бородатым гномам, не жмякать по левым ссылкам и думать своей головою. И используйте ту ОС, которая вам по душе! Абсолютно безопасного нет ничего. Надеюсь всем немного поднял настроение)
P.S. Если интересно, то могу ближе к лету написать с примерами на C небольшую статью о перехвате функций ядра в последней версии Linux Kernel.