От чего можно получить вирусы
" title="Рисунки Владимира Орехова"/>
Все сейчас говорят о вирусах: коронавирус, грипп, ВИЧ, гепатит, ВПЧ, оспа и т.д. В мире существует более тысячи видов вирусов, способных поражать различные живые клетки, да практически все виды клеток. А что же такое вирусы и с чем их едят (в прямом и переносном смысле)? Где они живут, как попадают к нам в организм, что там делают и есть ли лекарства против них? Статей и постов в интернете много, в том числе, антинаучных и дилетантских. Поэтому ТИА обратилось за информацией в Тверской медуниверситет, к профессору кафедры микробиологии и вирусологии, доктору медицинских наук, декану фармацевтического факультета Юлии Червинец.
Что такое вирус и в чём отличие от бактерий?
Название "вирус" произошло от латинского слово virus и переводится как "яд". По сути, это мельчайшие внутриклеточные микробы-паразиты, потому что живут и размножаются они только внутри хозяина - практически во всех живых организмах (бактериях, грибах, растениях, животных и человеке). Несмотря на своё "коварство", все вирусы имеют примитивное строение: одна нуклеиновая кислота (ДНК или РНК), окруженная одной или несколькими оболочками. Различают просто устроенные вирусы (безоболочечные) и сложно устроенные вирусы (оболочечные). К простым вирусам относят: вирусы полиомиелита, гепатита А, аденовирусы. Примеры сложных вирусов: гепатит В, грипп, парагрипп, корь, ВИЧ, герпес. Различаются вирусы и по форме:
- палочковидная (вирус табачной мозаики)
- пулевидная (вирус бешенства)
- сферическая (вирусы полиомиелита, ВИЧ)
- нитевидная (филовирусы)
- в виде сперматозоида (многие бактериофаги).
Размеры вирусов настолько малы (18-400 нм), что увидеть их можно только с помощью электронного микроскопа. Единицы измерения - нанометры, в отличие от бактерий (микрометры, мкм). Кстати, вирусы приблизительно в 100 раз меньше бактерий. Наиболее мелкими вирусами являются вирус полиомиелита (20 нм), гепатита А (30 нм), гепатита С (50 нм), вирус бешенства (170 нм), наиболее крупным — вирус натуральной оспы (350 нм).
От бактерий вирусы отличаются не только размерами, но и количеством генов (минимальное у вирусов от 4 до сотни, у бактерий – от 3000); нуклеиновыми кислотами (вирусы содержат только одну - ДНК или РНК, а бактерии – обе); количеством ферментов и, конечно же, самой формой жизни: вирусы размножаются только внутри живых существ, а бактерии – свободноживущие.
Интересный факт: первооткрыватель вирусов и основоположник вирусологии - русский ученый Д.И. Ивановский. В 1892 году описал необычные свойства возбудителей болезни табака (табачной мозаики), которые проходили через бактериальные фильтры и были названы "фильтрующимися частицами".
Жизненный цикл вирусов состоит из нескольких этапов:
1. Вирус прикрепляется к поверхности чувствительной клетки. Для каждого вируса есть свои чувствительные клетки, например, для гепатита – клетки печени, для гриппа – клетки дыхательных путей и т.д.
2. Проникновение вируса в клетку: либо его оболочка сливается с мембраной клетки или клетка сама его захватывает и поглощает.
3. Далее в клетке идёт процесс как бы “раздевания” вируса от всех его оболочек и активация его нуклеиновой кислоты.
4. Начинается синтез нуклеиновых кислот и белков вируса, т.е. вирус подчиняет системы клетки хозяина и заставляет их работать на своё воспроизводство.
5. Сборка вируса — многоступенчатый процесс, включающий в себя соединение всех компонентов.
6. Последний этап - выход вирусных частиц из клетки взрывным путем или почкованием. Полный цикл размножения вирусов завершается через 5-6 ч (вирус гриппа) или через несколько суток (вирус кори). Из погибающей клетки, которая длительное время может сохранять жизнеспособность, одновременно выходит большое количество вирусов. В результате пораженные вирусом клетки в основном погибают от истощения, а новые вирусы завоевывают и разрушают другие клетки. Но возможна и так называемая онкогенная трансформация клетки: тогда в организме появляется и начинает расти из мутированных клеток раковая опухоль.
Сколько вирус может жить вне организма хозяина и где?
Как правило, большинство вирусов малоустойчивы во внешней среде: они становятся инертны и погибают от многих причин, если снова не попадут в чувствительную клетку. Некоторые вирусы во внешней среде могут образовывать кристаллы, что свойственно только неживой материи.
Вирусы быстро погибают под действием солнечных лучей, ультрафиолета, стандартных веществ для дезинфекции. В воздухе помещений вирусы могут сохраняться несколько часов. При кипячении полностью инактивируются в течение нескольких минут.
Однако вирусы устойчивы к низким температурам: сохраняют свою жизнеспособность при t +4°С в течение нескольких недель, а при замораживании - в течение нескольких месяцев, а иногда и лет (особенно супернизких температурах).
Устойчивость вируса на различных поверхностях различна и зависит от температуры. На бумаге вирус разрушается за 3 часа, на банкнотах - за 4 дня, на дереве и одежде - за 2 дня, на стекле - за 4 дня, на металле и пластике - за 7 дней. Кстати, на внутреннем слое использованной маски они могут жить 7 дней, а на внешней поверхности маски – даже более недели (данные соответствуют условиям при температуре +22 °С и влажности 65 %).
Есть и исключения. Некоторые вирусы обладают значительной устойчивостью при комнатной температуре: вирус гепатита В сохраняет жизнеспособность в течение трех месяцев, гепатита А – в течение нескольких недель. ВИЧ сохраняется в высохшей крови до двух недель, в донорской крови вирус остается жизнеспособным в течение нескольких лет.
Что такое штаммы и почему вирусы мутируют?
Штамм (от нем. Stamm - "ствол,род") — чистая культура вирусов, изолированная в определённое время и в определённом месте. Один и тот же штамм не может быть выделен второй раз из того же источника в другое время. В зависимости от среды обитания – почва, вода, воздух, время года, чувствительный организм (человек, животные, птицы) - вирусы подразделяют на штаммы. Например, водный штамм, весенний, птичий, свиной и т.п. Во внешней среде геном вируса подвержен различным воздействиям, например, ультрафиолетовое облучение, солнечная радиация, химические вещества, что приводит к различного рода мутациям, т.е. изменениям в структуре нуклеиновой кислоты. В зависимости от характера мутаций вирусы могут изменять свои свойства, скажем, сменить хозяина. Так, вирус гриппа, который поражал только птиц, стал поражать и людей.
Как часто происходит в мировом научном сообществе открытие нового вируса?
Ученые каждый год открывают новые вирусы. Так, в 1972 г. открыт вирус Эбола, 1980-1989 гг. - вирусы иммунодефицита человека, гепатита Е и С, коронавирус человека впервые был выделен в 1965 году от больных ОРВИ. В Китае 2002—2003 годах была зафиксирована вспышка атипичной пневмонии или тяжелого острого респираторного синдрома (ТОРС, SARS). Заболевание было вызвано штаммом коронавируса SARS-CoV. В результате болезнь распространилась на другие страны, всего заболело 8273 человека, 775 умерло (летальность 9,6 %). И вот в 2019 году появился новый штамм коронавируса CoViD 19, который вызвал пандемию.
Так откуда берутся вирусы?
Вопрос риторический. Пока ответа у науки нет. Может быть, они были привнесены из космоса на космических телах. Ведь при низких температурах они могут сохраняться неопределенно долгое время.
Как они попадают в организм человека/животного и т.д.?
Разными путями: воздушно-капельным (корь, грипп, ветряная оспа), половым (ВИЧ, вирус простого герпеса 2 типа), через кровь (гепатит В,С, ВИЧ), через инфицированные продукты (гепатит А, Е) или через членистоногих (скажем, клещей). Различают вирусы, вызывающие инфекции с преимущественным поражением органов дыхания (респираторные), кишечника (ротавирусы), печени (вирус гепатита), иммунной (ВИЧ) или нервной системы (бешенство, энцефалит).
Как организм реагирует на вирус?
Частицы самого вируса, а также биологически активные вещества, выделяющиеся при разрушении наших клеток, могут вызвать повышение температуры тела, тошноту, рвоту, сильную слабость, головокружение вплоть до потери сознания, нарушение работы сердечно-сосудистой системы и др. На фоне нарушения функционирования различных органов и систем к вирусной инфекции может присоединиться бактериальная (стафилококки, стрептококки, кишечные бактерии) и грибковая (дрожжевые грибы), усугубив воспалительный процесс с тяжелыми последствиями вплоть до летального исхода.
Как наш организм борется?
Однако организм человека не простая мишень для атаки болезнетворных микроорганизмов, он активно борется, и в этом нам помогает иммунная система. Вырабатываются специфические, нейтрализующие данный вирус антитела, формируются клетки-"убийцы" или Т-лимфоциты, которые уничтожают как поражённые, инфицированные клетки, так и сам вирус. Но иммунной системе нужно время, чтобы вычислить "чужака", "вирусного преступника", который не просто прячется внутри наших клеток, но и старается обмануть иммунную систему. Например, новое или мутировавшее поколение вируса наша иммунная система поначалу не видит. Конечно же, со временем все вирусные клетки распознаются, но к сожалению, с потерей драгоценного времени для нашего организма.
Возможно ли повторное заражение одним и тем же вирусом?
Наше здоровье зависит напрямую от активности и лабильности иммунной системы. Если она работает со сбоями и не справляется с негативным воздействием патогенов, заболевание может перейти в хроническую форму вплоть до смертельного исхода. Поэтому повторное заражение этим же вирусом возможно. Другая причина появления рецидива заболевания - мутации вируса. Если вирус стабилен, то наша иммунная система запоминает его и, как правило, повторных случаев инфицирования не бывает. Но если вирус подвергается изменчивости, то попав в организм человека, он воспринимается уже как новый вирус.
Есть ли лекарственные препараты для лечения вируса? Что может убить вирус?
Да есть, но не против всех вирусов. Антибиотики, применяемые при лечении бактериальных инфекций, здесь совершенно не работают, т.к. они воздействуют на структуры клетки только бактерий. В случае вирусной инфекции нужны препараты, которые блокируют различные этапы размножения вируса в клетке. Таким неспецифическим веществом является интерферон, который вырабатывается клетками организма человека (кишечника, печени).
Если выработка интерферона недостаточна, то можно применить индукторы интерферона, например: ламовакс, курантил, дибазол, адаптогены растительного (элиутерококк, оралия) и животного происхождения (вытяжка из мидий). Активно действуют при респираторных вирусных заболеваниях препараты интерферона - виферон, амиксин и др. Подавляют активность вируса гриппа на ранних стадиях ремантадин, амантадин, арбидол. Герпес подавляет ацикловир (зовиракс) и т.п. Однако пока точно неизвестны препараты, подавляющие репродукцию коронавируса. К специфическому лечению от коронавируса относится введение плазмы от переболевших людей, которая содержит антитела, но этот метод находит ограниченное применение.
Зачем нужна вакцинация? Как и из чего делают вакцины?
По сути, вакцины - это препараты для создания искусственного активного иммунитета. Термин "вакцина" произошел от французского vacca – "корова". Его ввел Л. Пастер в честь Дженнера, применившего вирус коровьей оспы для иммунизации людей против натуральной оспы человека. Вакцины – это препараты, содержащие сами микроорганизмы (убитые или живые ослабленные), части микроорганизмов, а также анатоксины (токсин, лишенный своих ядовитых свойств, но сохранивший свойства активировать иммунный ответ). После введения вакцины вырабатываются специфические антитела, которые нейтрализуют, прежде всего, поверхностные рецепторы вируса, с помощью которых он проникает в клетку. Таким образом блокируется основной механизм проникновения вируса в клетку. Многие вакцины создают пожизненный иммунитет у человека, например, вакцина от гепатита В, кори, краснухи, полиомиелита, эпидемического паротита.
Сколько времени уходит на создание вакцины?
На создание вакцины уходит 1-2 года, в течение которого должны пройти многочисленные проверки на эффективность и безопасность препарата, испытания на животных, потом на людях-добровольцах, а после – наладить массовое фармацевтическое производство.
Что представляют собой тесты на вирус? Как в лабораториях выявляют положительные результаты анализов?
Диагностика вируса основана на определении структуры вируса (специфических рецепторов и нуклеиновой кислоты), а также противовирусных антител у переболевших людей. Используются различные реакции: иммуноферментный анализ (ИФА), полимеразная цепная реакция (ПЦР). Время диагностики зависит от производителя тестов - от нескольких часов до 1 суток.
Несколько примеров самых массовых с убийственных с точки зрения эпидемий вирусов в истории человечества
Вирусы гриппа постоянно циркулируют среди населения, вызывая сезонные подъемы заболевания, периодически приобретающие характер эпидемий и даже пандемий. Эпидемии гриппа наносят огромный экономический ущерб, приводят к людским потерям. Это, прежде всего, относится к вирусам типа А, который каждые 2-3 года вызывает эпидемии, а несколько раз в столетие - пандемии с числом заболевших 1-2 млрд. человек. Эпидемии, вызываемые вирусом типа В, повторяются через 3-6 лет.
Пандемии гриппа, вызванные мутированными вирусами, против которых у людей нет иммунитета, возникают 2-3 раза в 100 лет. Пандемия гриппа 1918—1919 ("испанка", штамм H1N1) унесла жизни 40-50 миллионов человек. Предполагают, что вирус "испанки" возник в результате рекомбинации генов вирусов гриппа птиц и человека. В 1957—1958 была пандемия "азиатского гриппа", вызванная штаммом H2N2; в 1968—1969 - пандемия "гонконгского гриппа" (H3N2).
С 2009 появилось новое заболевание людей и животных, вызываемое штаммами вируса гриппа А/H1N1, А/H1N2, А/H3N1, А/H3N2 и А/H2N3, известных под общим названием "вирус свиного гриппа". Он распространён среди домашних свиней, а также может циркулировать в среде людей, птиц и др. видов; этот процесс сопровождается его мутациями.
Как уберечься от вирусов? Существуют ли действенные меры профилактики и гигиены?
Выделяют специфические и неспецифические способы профилактики вирусных инфекций. Специфические заключаются в использовании вакцин, при их наличии. При их введении у человека формируется как правило пожизненный иммунитет (вакцина от кори, краснухи, эпидемического паротита, ветряной оспы, гепатита В). Существует также экстренная профилактика. Ее проводят во время эпидемического подъема заболеваемости. Для экстренной профилактики, например, гриппа применяют противовирусные химиопрепараты: ремантадин (активен только против вирусов типа А), арбидол, амиксин, оксалиновую мазь и др. Используют также интерферон, дибазол, различные индукторы интерферона (например, элеутерококк, продигиозан).
Против многих вирусных инфекций вакцин не существует. В этом случае помогает неспецифическая профилактика. Существуют ряд общих правил:
- соблюдать личную гигиену (мойте руки перед приемом пищи, после использования туалета; не трогайте грязными, немытыми руками нос, глаза, рот).
- обязательно поддерживать здоровый образ жизни с помощью сбалансированного питания, занятий физкультурой, прогулок на свежем воздухе и многое другое.
Но для каждого вируса неспецифическая профилактика своя. Если речь идет о вирусах, передающихся воздушно-капельным путем, то необходимо придерживаться следующих правил:
- надевать маски, причем на больного человека, чтобы исключить попадание в пространство крупных частиц слюны при кашле и чихании, мелкие же частицы она не задерживает;
- тщательно убирать помещения, так как вирус любит теплые и пыльные помещения, поэтому стоит уделить время влажной уборке и проветриванию;
- избегать массовых скоплений людей и воздержаться от походов в общественные места.
Если вирус передается с помощью фекально-орального механизма, например, вирус гепатита А, то необходимо соблюдать следующее:
- употреблять чистую или кипяченую воду;
- мыть фрукты, ягоды, овощи кипяченой водой:
- поливать свой сад и огород проточной водой.
Если вирус передается через кровь, например, вирус гепатита В,С, ВИЧ, то необходимы:
- дезинфекция, стерилизация медицинских изделий;
- обследование доноров крови;
- не употреблять наркотики;
- использовать индивидуальные предметы личной гигиены;
- быть осторожными с маникюром, пирсингом и татуировками, делать это только в профессиональном салоне.
Если вирус передается половым путем, например, ВИЧ, то нужно:
- исключить незащищенные половые контакты, если вы не уверены в своём партнёре;
- использовать барьерные средства контрацепции, если вы не знаете статус своего партнера.
Коронавирус становится поводом пошутить над незнакомцем, ему посвящают мемы, о нем слагают песни. Вирус проникает не только в организмы живых существ, но и в поп-культуру. Однако пройдет время, и о нем все забудут, как когда-то перестали говорить о вирусе Эбола, атипичной пневмонии и оспе.
Север Туркмении, 1980-е годы. В Средней Азии возникла вспышка ранее неизвестного вируса. Обстановка сложная и напряженная. Вирус передается через зараженную воду. Из-за ее употребления количество заболевших резко растет. В большинстве случаев болезнь протекает относительно благополучно, но ужас в том, что умирают в основном женщины в третьем триместре беременности.
Михаил Фаворов,
эпидемиолог, доктор медицинских наук
Сегодня Михаил Фаворов живет в США, занимает пост президента компании DiaPrep System Inc и продолжает активно работать в области диагностики, контроля и профилактики инфекционных заболеваний.
Вирус — простейшая форма жизни. Принято считать, что если он находится внутри человека или животного, то становится живым существом — размножается и обменивается информацией. Но когда вирус находится вне организма, он считается неживым. О вирусах мы узнали сравнительно недавно, около 100 лет назад. М икробиолог Дмитрий Ивановский опубликовал исследование о существовании некой субстанции, которая проходит через фильтры, задерживающие бактерии, и назвал ее вирусом. В то время как чума человечеству известна многие тысячелетия, у нее другая природа — она вызывается бактериями, которые являются более сложным и крупным организмом. Ее распространение было связано с низким уровнем жизни и плохой гигиеной. Процент летальности достигал 25%, то есть при легочной форме погибал каждый четвертый.
Среди вирусных инфекций самой страшной была оспа, которая затронула все страны мира. Вызывалась она вирусом натуральной оспы. Вакцину удалось изобрести благодаря случайному знакомству с коровьей оспой. Вирус животных, которые выступали переносчиками, вводили в организм человека, но вакцинированные не заболевали человеческой формой болезни: организм защищали антитела введенного вируса. Уникальность натуральной оспы в том, что это антропонозный вирус — им болели только люди. Поэтому, когда произвели вакцину, оспу удалось искоренить. В 1950-х годах в Африке были вакцинированы последние контактировавшие с больными, а с 1978 года вирус был полностью ликвидирован. Оспа исчезает, когда у последнего заболевшего появляются антитела, — он выздоравливает и перестает быть переносчиком.
Рецепты с летучей мышью
Тепло наших тел
По уровню плотности населения Китай и Индия превосходят все остальные регионы планеты, а разнообразие видов животных в Африке настолько велико, что большинство из нас вряд ли догадываются о существовании некоторых из них, например окапи, виверр, руконожек. Как редкие животные, так и плотность населения становятся дополнительными стимулами высокой скорости распространения заражения. Вирусы не поражают отдельно китайцев или представителей других наций, вирусы аполитичны и не имеют вероисповедания. Они умеют приспосабливаться к любым изменениям среды не хуже человека. Все, что им нужно, — тепло наших тел и, возможно, определенные рецепторы.
Вспышка эпидемий — это не просто случайность, а стечение обстоятельств.
Все закрыто: рынки, магазины, метро. Остановки общественного транспорта абсолютно пусты. По тротуарам проплывает только мусор, гонимый ветром, исчезающий в желтоватой дымке. Странно, если учесть, что в городе проживают миллионы человек. Изредка на улице появляются люди в респираторных масках, некоторые сделаны из подручных средств. Однажды увидев такую картину, вряд ли возможно спутать с чем-то эпицентр распространения респираторного заболевания, и защищаться надо незамедлительно.
Чтобы обезопасить себя и свою семью во время респираторной эпидемии, главное — находиться на расстоянии не ближе 2 м от заболевшего, чихающего или кашляющего человека, мыть руки каждые два часа, проветривать помещения, минимально контактировать с людьми.
История человечества насчитывает десятки тысяч кровавых войн, но самые страшные по потерям, пожалуй, — войны с паразитами. По некоторым данным, от чумы умерло больше людей, чем в результате всех войн, вместе взятых, — около 186 млн человек. От одной Юстиниановой чумы, первой зарегистрированной в истории, погибли 100 млн человек. Разработка защиты от биологической угрозы требует больших затрат, поэтому вакцины создаются только для тех вирусов, которые представляют реальную опасность. Более того, к некоторым вакцинам вирусы привыкают, становятся устойчивыми и меняют свою структуру, поэтому человечеству приходится постоянно быть начеку и придумывать что-то новое.
Респираторная маска вполне может защитить, но проблема в том, что надежна она всего 20 минут.
На уроках биологии нам говорили, что жизнь — это способ существования нуклеиновых кислот. Один из вариантов существования нуклеиновых кислот — это вирусы, которые живут на других организмах. Они совершенно не заботятся о нашем благополучии, они пытаются приспособиться, как и все живые существа на планете. Единственное, за что стоит их благодарить, — эволюционное совершенство иммунной системы человека. Веками, когда появлялось какое-либо заражение, организм человека вырабатывал антитела и формировал клеточный иммунитет. Все знают, что если держать человека в стерильной среде, а потом выпустить на улицу, он вскоре умрет, потому что у него не будет механизма выработки защиты. Но это не цель существования вирусов, скорее побочный эффект.
Прогнозировать возникновение вспышек вирусов еще сложнее, чем рассуждать о высших смыслах. Это всегда уникальная ситуация, которая происходит в результате изменения состояния окружающей среды, при которой человек попадает в новые условия взаимодействия с другими видами животных. А сегодня антропогенное воздействие на окружающую среду достигло абсолютно несопоставимых масштабов по сравнению с предыдущими поколениями, к тому же человек как вид постоянно растет. У ученых есть возможность наблюдать за попытками вирусов совершить кроссвидовой переход благодаря лабораторным методам слежения. Врачи ликвидировали оспу и почти победили вирус полиомиелита — это внушает надежду, что с новым вирусом можно будет хотя бы договориться. Как бы ни сложились эти взаимоотношения, стоит помнить: пока человек будет существовать как вид, всегда найдутся те, кто захочет на нем паразитировать.
Как защититься от коронавируса? Узнайте здесь.
Поговорим о компьютерных вирусах? Нет, не о том, что вчера поймал ваш антивирус. Не о том, что вы скачали под видом инсталлятора очередного Photoshop. Не о rootkit-e, который стоит на вашем сервере, маскируясь под системный процесс. Не о поисковых барах, downloader-ах и другой малвари. Не о коде, который делает плохие вещи от вашего имени и хочет ваши деньги. Нет, всё это коммерция, никакой романтики…
В общем, для статьи вполне достаточно лирики, перейдем к делу. Я хочу рассказать о классическом вирусе, его структуре, основных понятиях, методах детектирования и алгоритмах, которые используются обеими сторонами для победы.
Мы будем говорить о вирусах, живущих в исполняемых файлах форматов PE и ELF, то есть о вирусах, тело которых представляет собой исполняемый код для платформы x86. Кроме того, пусть наш вирус не будет уничтожать исходный файл, полностью сохраняя его работоспособность и корректно инфицируя любой подходящий исполняемый файл. Да, ломать гораздо проще, но мы же договорились говорить о правильных вирусах, да? Чтобы материал был актуальным, я не буду тратить время на рассмотрение инфекторов старого формата COM, хотя именно на нем были обкатаны первые продвинутые техники работы с исполняемым кодом.
Начнём со свойств кода вируса. Чтобы код удобней было внедрять, разделять код и данные не хочется, поэтому обычно используется интеграция данных прямо в исполняемый код. Ну, например, так:
Все эти варианты кода при определенных условиях можно просто скопировать в память и сделать JMP на первую инструкцию. Правильно написав такой код, позаботившись о правильных смещениях, системных вызовах, чистоте стека до и после исполнения, и т.д., его можно внедрять внутрь буфера с чужим кодом.
Исполняемый файл (PE или ELF) состоит из заголовка и набора секций. Секции – это выровненные (см. ниже) буферы с кодом или данными. При запуске файла секции копируются в память и под них выделяется память, причем совсем необязательно того объёма, который они занимали на диске. Заголовок содержит разметку секций, и сообщает загрузчику, как расположены секции в файле, когда он лежит на диске, и каким образом необходимо расположить их в памяти перед тем, как передать управление коду внутри файла. Для нас интересны три ключевых параметра для каждой секции, это psize, vsize, и flags. Psize (physical size) представляет собой размер секции на диске. Vsize (virtual size) – размер секции в памяти после загрузки файла. Flags – атрибуты секции (rwx). Psize и Vsize могут существенно различаться, например, если программист объявил в программе массив в миллион элементов, но собирается заполнять его в процессе исполнения, компилятор не увеличит psize (на диске содержимое массива хранить до запуска не нужно), а вот vsize увеличит на миллион чего-то там (в runtime для массива должно быть выделено достаточно памяти).
Флаги (атрибуты доступа) будут присвоены страницам памяти, в которые секция будет отображена. Например, секция с исполняемым кодом будет иметь атрибуты r_x (read, execute), а секция данных атрибуты rw_ (read,write). Процессор, попытавшись исполнить код на странице без флага исполнения, сгенерирует исключение, то же касается попытки записи на страницу без атрибута w, поэтому, размещая код вируса, вирмейкер должен учитывать атрибуты страниц памяти, в которых будет располагаться код вируса. Стандартные секции неинициализированных данных (например, область стека программы) до недавнего времени имели атрибуты rwx (read, write, execute), что позволяло копировать код прямо в стек и исполнять его там. Сейчас это считается немодным и небезопасным, и в последних операционных системах область стека предназначена только для данных. Разумеется, программа может и сама изменить атрибуты страницы памяти в runtime, но это усложняет реализацию.
Также, в заголовке лежит Entry Point — адрес первой инструкции, с которой начинается исполнение файла.
Необходимо упомянуть и о таком важном для вирмейкеров свойстве исполняемых файлов, как выравнивание. Для того чтобы файл оптимально читался с диска и отображался в память, секции в исполняемых файлах выровнены по границам, кратным степеням двойки, а свободное место, оставшееся от выравнивания (padding) заполнено чем-нибудь на усмотрение компилятора. Например, логично выравнивать секции по размеру страницы памяти – тогда ее удобно целиком копировать в память и назначать атрибуты. Даже вспоминать не буду про все эти выравнивания, везде, где лежит мало-мальски стандартный кусок данных или кода, его выравнивают (любой программист знает, что в километре ровно 1024 метра). Ну а описание стандартов Portable Executable (PE) и Executable Linux Format (ELF) для работающего с методами защиты исполняемого кода – это настольные книжки.
Если мы внедрим свой код в позицию точно между инструкциями, то сможем сохранить контекст (стек, флаги) и, выполнив код вируса, восстановить все обратно, вернув управление программе-хосту. Конечно, с этим тоже могут быть проблемы, если используются средства контроля целостности кода, антиотладка и т.п., но об этом тоже во второй статье. Для поиска такой позиции нам необходимо вот что:
- поставить указатель точно на начало какой-нибудь инструкции (просто так взять рандомное место в исполняемой секции и начать дизассемблирование с него нельзя, один и тот же байт может быть и опкодом инструкции, и данными)
- определить длину инструкции (для архитектуры x86 инструкции имеют разные длины)
- переместить указатель вперед на эту длину. Мы окажемся на начале следующей инструкции.
- повторять, пока не решим остановиться
Это минимальный функционал, необходимый для того, чтобы не попасть в середину инструкции, а функция, которая принимает указатель на байтовую строку, а в ответ отдает длину инструкции, называется дизассемблером длин. Например, алгоритм заражения может быть таким:
- Выбираем вкусный исполняемый файл (достаточно толстый, чтобы в него поместилось тело вируса, с нужным распределением секций и т.п.).
- Читаем свой код (код тела вируса).
- Берем несколько первых инструкций из файла-жертвы.
- Дописываем их к коду вируса (сохраняем информацию, необходимую для восстановления работоспособности).
- Дописываем к коду вируса переход на инструкцию, продолжающую исполнение кода-жертвы. Таким образом, после исполнения собственного кода вирус корректно исполнит пролог кода-жертвы.
- Создаем новую секцию, записываем туда код вируса и правим заголовок.
- На место этих первых инструкций кладем переход на код вируса.
Это вариант вполне себе корректного вируса, который может внедриться в исполняемый файл, ничего не сломать, скрыто выполнить свой код и вернуть исполнение программе-хосту. Теперь, давайте его ловить.
Думаю, не надо описывать вам компоненты современного антивируса, все они крутятся вокруг одного функционала – антивирусного детектора. Монитор, проверяющий файлы на лету, сканирование дисков, проверка почтовых вложений, карантин и запоминание уже проверенных файлов – все это обвязка основного детектирующего ядра. Второй ключевой компонент антивируса – пополняемые базы признаков, без которых поддержание антивируса в актуальном состоянии невозможно. Третий, достаточно важный, но заслуживающий отдельного цикла статей компонент – мониторинг системы на предмет подозрительной деятельности.
Итак (рассматриваем классические вирусы), на входе имеем исполняемый файл и один из сотни тысяч потенциальных вирусов в нем. Давайте детектировать. Пусть это кусок исполняемого кода вируса:
Как мы увидели, для быстрого и точного сравнения детектору необходимы сами байты сигнатуры и ее смещение. Или, другим языком, содержимое кода и адрес его расположения в файле-хосте. Поэтому понятно, как развивались идеи сокрытия исполняемого кода вирусов – по двум направлениям:
- сокрытие кода самого вируса;
- сокрытие его точки входа.
Сокрытие кода вируса в результате вылилось в появление полиморфных движков. То есть движков, позволяющих вирусу изменять свой код в каждом новом поколении. В каждом новом зараженном файле тело вируса мутирует, стараясь затруднить обнаружение. Таким образом, затрудняется создание содержимого сигнатуры.
Сокрытие точки входа (Entry Point Obscuring) в результате послужило толчком для появления в вирусных движках автоматических дизассемблеров для определения, как минимум, инструкций перехода. Вирус старается скрыть место, с которого происходит переход на его код, используя из файла то, что в итоге приводит к переходу: JMP, CALL, RET всякие, таблицы адресов и т.п. Таким образом, вирус затрудняет указание смещения сигнатуры.
Гораздо более подробно некоторые алгоритмы таких движков и детектора мы посмотрим во второй статье, которую я планирую написать в ближайшее время.
Рассмотренный в статье детектор легко детектирует неполиморфные (мономорфными их назвать, что ли) вирусы. Ну а переход к полиморфным вирусам является отличным поводом, наконец, завершить эту статью, пообещав вернуться к более интересным методам сокрытия исполняемого кода во второй части.
Читайте также: