27_03_14

home assignment: deadline: 25.03.14. - 22.00 1. **Pair work** Create slides for 3-min. presentation.You are going to get marks!

Topic "Viruses and Other Malicious Code"

Important : you should speak in front of the class standing at the blackboard + address the group, not your notes!

upload the file here or send me by e-mail

2. choose a paragraph and translate it into Russian. Upload your translation on this page right below your paragraph.

1. 3.3. Viruses and Other Malicious Code By themselves, programs are seldom security threats. The programs operate on data, taking action only when data and state changes trigger it. Much of the work done by a program is invisible to users who are not likely to be aware of any malicious activity. For instance, when was the last time you saw a bit? Do you know in what form a document file is stored? If you know a document resides somewhere on a disk, can you find it? Can you tell if a game program does anything in addition to its expected interaction with you? Which files are modified by a word processor when you create a document? Which programs execute when you start your computer or open a web page? Most users cannot answer these questions. However, since users usually do not see computer data directly, malicious people can make programs serve as vehicles to access and change data and other programs. Let us look at the possible effects of malicious code and then examine in detail several kinds of programs that can be used for interception or modification of data. __//Translation to// 1:__ Вирусы и другие вредоносные программы. Сами по себе программы редко угрожают безопасности. Программы, работающие с данными, начинают действовать только тогда, когда данные и изменение состояний вызывают её их Большая часть работы, которая выполняется программой, невидима для пользователей, которые, скорее всего, не в курсе всех каких-либо вредоносных действий. //Например, когда в последний раз Вы видели// их немного бит //?// Знаете ли Вы, в какой форме хранится файл? Если Вы знаете, что документ находится где-то на диске, Вы сможете найти его? //Можете ли Вы сказать,// делает ли //игровая программа// делает //что-то// дополнительно при ожидании помимо //взаимодействия с Вами,// которое от неё ожидают ? ( //Можете ли Вы сказать, если игровая программа делает что-то дополнительно,// она ожидает взаимодействия с Вами? ) Какие файлы были изменены с помощью текстового процессора при создании документа? Какие программы выполняются при запуске компьютера или при открывании веб-страницы? Большинство пользователей не могут ответить на эти вопросы. Однако так как пользователи обычно явно не видят компьютерных данных, злоумышленники могут сделать программы, которые служат в качестве средства для доступа и изменения данных и других программ. Давайте посмотрим на возможные последствия вредоносного кода и затем детально изучим несколько видов программ, которые могут быть использованы для перехвата или изменения данных. 1395759131

2. Sidebar 3-3: Nonmalicious Flaws Cause Failures In 1989, Crocker and Bernstein [CRO89] studied the root causes of the known catastrophic failures of what was then called the ARPANET, the predecessor of today's Internet. From its initial deployment in 1969 to 1989, the authors found 17 flaws that either did cause or could have caused catastrophic failure of the network. They use "catastrophic failure" to mean a situation that causes the entire network or a significant portion of it to fail to deliver network service. //__Translation to 2:__// Боковая панель 3-3: Незлонамеренные изъяны, вызывающие сбои. В 1989 году Крокер и Бернштейн [CRO89] изучали основные причины известных катастрофических сбоев, так называемой тогда того, что впоследствии получило название сети ARPANET, являющейся прототипом сети Интернет. С момента развития запуска (начала использования) этой компьютерной сети в 1969 году по 1989 год авторы обнаружили 17 изъянов, которые вызывали или могли вызывать катастрофические сбои в сети. Они [авторы] используют термин «катастрофический сбой» для обозначения ситуации, вызывающей причины сбоя всей сети или ее значительной части. 1395424474

3. The ARPANET was the first network of its sort, in which data are communicated as independent blocks (called "packets") that can be sent along different network routes and are reassembled at the destination. As might be expected, faults in the novel algorithms for delivery and reassembly were the source of several failures. Hardware failures were also significant. But as the network grew from its initial three nodes to dozens and hundreds, these problems were identified and fixed. Translation to 3 ARPANET была первой в своем роде сетью, где данные передаются независимыми блоками(называющимися "пакеты"), которые могут быть отправлены по разным сетевым путям и собраны снова в пункте приема. Как и следовало можно было ожидать, ошибки в новых алгоритмах доставки и сборки были источниками различных отказов. Аппаратные сбои также были значительны. Но как только сеть разрослась с начальных трех до десятков и сотен узлов, эти проблемы были найдены и исправлены.1395755000

4. More than ten years after the network was born, three interesting nonmalicious flaws appeared. The initial implementation had fixed sizes and positions of the code and data. In 1986, a piece of code was loaded into memory in a way that overlapped a piece of security code. Only one critical node had that code configuration, and so only that one node would fail, which made it difficult to determine the cause of the failure. Более чем через 10 лет после создания сети появилось 3 интересных безопасных недочета. Первый запуск исправил версия имела фиксированные размеры и позиции текста программы и данных. В 1986 году часть кода была загружена в память так, что перекрыла часть кода в системе защиты. Только на одном критическом узле была эта конфигурация кода, и поэтому упал бы только этот один узел, что делало выявление причины краха сбоя сложной задачей.1395761068

5. In 1987, new code caused Sun computers connected to the network to fail to communicate. The first explanation was that the developers of the new Sun code had written the system to function as other manufacturers' code did, not necessarily as the specification dictated. It was later found that the developers had optimized the code incorrectly, leaving out some states the system could reach. But the first explanationdesigning to practice, not to specificationis a common failing.

6. The last reported failure occurred in 1988. When the system was designed in 1969, developers specified that the number of connections to a subnetwork, and consequently the number of entries in a table of connections, was limited to 347, based on analysis of the expected topology. After 20 years, people had forgotten the (undocumented) limit, and a 348th connection was added, which caused the table to overflow and the system to fail. But the system derived this table gradually by communicating with neighboring nodes. So when any node's table reached 348 entries, it crashed, and when restarted, it started building its table anew. Thus, nodes throughout the system would crash seemingly randomly after running perfectly well for a while (with unfull tables). None of these flaws were malicious nor could they have been exploited by a malicious attacker to cause a failure. But they show the importance of the analysis, design, documentation, and maintenance steps in development of a large, long-lived system.

7.

Why Worry About Malicious Code?
None of us like the unexpected, especially in our programs. Malicious code behaves in unexpected ways, thanks to a malicious programmer's intention. We think of the malicious code as urking inside lour system: all or some of a program that we are running or even a nasty part of a separate program that somehow attaches itself to another (good) program. Translation to 7: Почему вредоносный код вызывает должен вызывать беспокойство? Никому не нравится неожиданное, особенно в наших программах. Вредоносный код ведет себя самым неожиданным образом, благодаря вмешательству намерению злоумышленника. Мы думаем, что вредоносный код скрывается внутри нашей системы: как о/это все или некоторые программы, которые мы запускаем или даже зараженная часть отдельной программы, которая как-нибудь вредит остальным (незловредным) программам. 1395760965

8. How can such a situation arise? When you last installed a major software package, such as a word processor, a statistical package, or a plug-in from the Internet, you ran one command, typically called INSTALL or SETUP. From there, the installation program took control, creating some files, writing in other files, deleting data and files, and perhaps renaming a few that it would change. A few minutes and a quite a few disk accesses later, you had plenty of new code and data, all set up for you with a minimum of human intervention. Other than the general descriptions on the box, in documentation files, or on web pages, you had absolutely no idea exactly what "gifts" you had received. You hoped all you received was good, and it probably was. The same uncertainty exists when you unknowingly download an application, such as a Java applet or an ActiveX control, while viewing a web site. Thousands or even millions of bytes of programs and data are transferred, and hundreds of modifications may be made to your existing files, all occurring without your explicit consent or knowledge.

__Translation to 8:__ Как возникает такая ситуация? Когда вы последний раз устанавливали крупный пакет программного обеспечения, такой как текстовый редактор, пакет со статистикой или плагин из интернета, вы запускали одну команду, как правило называемую INSTALL или SETUP (установка). Отсюда, программа установки брала всё под свой контроль, создавая некоторые файлы, записываясь в различные файлы, удаляя данные и файлы, и, возможно переименовывая. Через несколько минут и довольного малого обращения к диску, вы получаете много нового кола и данных, всё настроено с минимум человеческого вмешательства. Кроме общих описаний на боксе, (коробке?) документации или на веб-страницах, вы не могли точно представить, что какие получите такие "подарки". Вы надеялись, что всё, что вы получили - хорошо и, что так и должно быть. возможно, так и было. Та же неопределённость возникает тогда, когда вы неосознанно загружаете приложения, например Java аплет или Activex control, во время просмотра веб-сайтов. Тысячи и миллионы байтов передаются и сотни модификаций может быть осуществлено над вашими файлами без вашего явного согласия и знания.

9.

Malicious Code Can Do Much (Harm)
Malicious code can do anything any other program can, such as writing a message on a computer screen, stopping a running program, generating a sound, or erasing a stored file. Or malicious code can do nothing at all right now; it can be planted to lie dormant, undetected, until some event triggers the code to act. The trigger can be a time or date, an interval (for example, after 30 minutes), an event (for example, when a particular program is executed), a condition (for example, when communication occurs on a network interface), a count (for example, the fifth time something happens), some combination of these, or a random situation. In fact, malicious code can do different things each time, or nothing most of the time with something dramatic on occasion. In general, malicious code can act with all the predictability of a two-year-old child: We know in general what two-year-olds do, we may even know what a specific two-year-old often does in certain situations, but two-year-olds have an amazing capacity to do the unexpected. __Translation to 9:__ Вредоносный код может натворить много (вреда ) Вредоносный код может делать все, что может любая другая программа, например, писать сообщение на экране компьютера, останавливать работающую программу , создавать звуки , или стирать файлы. Или он не сделает ничего сейчас, он будет в спячке , незамеченным , пока какое-либо условие не заставит его действовать. Условие может быть временем или датой, интервалом (например, через 30 минут ) , событием (например, когда выполняется конкретная программа) , состоянием (например, связь осуществляется через сетевой интерфейс ), значением (например, пятый раз что-то происходит ), некоторой комбинацией из вышеперечисленных или случайным событием. На самом деле, вредоносный код может делать разные вещи каждый раз, или не делать ничего большую часть времени, но сделать что-то плохое при удобном случае. В общем, вредоносный код может действовать с предсказуемостью двухлетнего ребенка : Мы знаем, в общем то, что они могут сделать, мы можем даже знать, что конкретный ребенок часто делает в определенных ситуациях , но у двухлетних ребят есть удивительная способность делать неожиданные вещи.1395827415 Молодец Дима :) Но в следующий раз с таким опозданием я не зачту.

10. Malicious code runs under the user's authority. Thus, malicious code can touch everything the user can touch, and in the same ways. Users typically have complete control over their own program code and data files; they can read, write, modify, append, and even delete them. And well they should. But malicious code can do the same, without the user's permission or even knowledge. //__Translation to 10:__// Вредоносный код запускается под(лучше "с"1395768441) правами пользователя. Таким образом, вредоносный код может __касаться__ затронут ь всего того, что может(все то, чего может...1395768441) касаться пользователь и точно таким же образом. Пользователи обычно имеют полный контроль над своим программным кодом и файлами данных; они могут читать, записывать, изменять, добавлять и даже удалять их. (не понимаю And well they should) примерно так: "И им даже непременно следует/нужно это делать." Но вредоносный код может делать то же самое без разрешения пользователя или без его ведома. 1395585017

11.

Malicious Code Has Been Around a Long Time
The popular literature and press continue to highlight the effects of malicious code as if it were a relatively recent phenomenon. It is not. Cohen [COH84] is sometimes credited with the discovery of viruses, but in fact Cohen gave a name to a phenomenon known long before. For example, Thompson, in his 1984 Turing Award lecture, "Reflections on Trusting Trust" [THO84], described code that can be passed by a compiler. In that lecture, he refers to an earlier Air Force document, the Multics security evaluation by Karger and Schell KAR74, KAR02]. In fact, references to virus behavior go back at least to 1970. Ware's 1970 study (publicly released in 1979 [WAR79]) and Anderson's planning study for the U.S. Air Force [AND72] still accurately describe threats, vulnerabilities, and program security flaws, especially intentional ones. What is new about malicious code is the number of distinct instances and copies that have appeared and the speed with which exploit code appears. (See Sidebar 3-4 on attack timing.)

12. So malicious code is still around, and its effects are more pervasive. It is important for us to learn what it looks like and how it works so that we can take steps to prevent it from doing damage or at least mediate its effects. How can malicious code take control of a system? How can it lodge in a system? How does malicious code spread? How can it be recognized? How can it be detected? How can it be stopped? How can it be prevented? We address these questions in the following sections. //Translation:// Итак, вредоносный код по-прежнему существует и его последствия все более распространяются. Для нас важно узнать как он выглядит и как работает, чтобы мы могли принять меры по предотвращению вреда, который он наносит или хотя бы (по меньшей мере) ослабить его последствия. Как вредоносный код может контролировать систему? Как он может проникнуть в систему? Как вредоносный код распространяется? Как его можно распознать? Как его можно обнаружить? Как он может быть остановлен? Как его можно предотвратить? Рассмотрим эти вопросы в следующих разделах (параграфах). 1395750685 ОК :)

13.

Kinds of Malicious Code
Вредоносный код или мошенническая программа – это общее именование для неожиданных или нежелательных эффектов работы программы, причина которых – намеренное нанесение вреда агентом. Это определение не включает ненамеренные ошибки, хотя они могут также иметь серьезный негативный эффект. Оно также не включает совпадение, в котором 2 доброкачественные программы совместно создают негативный эффект. Этот  агент – писатель/ автор  программ (программист) или человек, который __создал этот дистрибутив__. способствует её распространению  По этому определению, большинство дефектов, обнаруживаемых находят  при проверке программного обеспечения, просмотре и тестировании, выполняемых  не квалифицируются как с целью найти  вредоносный код, потому как мы специально об этом не  думаем о них как о непреднамеренных . Однако, следует иметь ввиду при просмотре этой главы, что ненамеренные ошибки могут фактически запускать некоторые такие же  реакции (процессы) как намеренные недоброкачественные; вызвать причину повлекшую доброкачественные программы/причины могут вызвать  пагубный эффект. А.Рябухин.
 * Malicious code** or **rogue program** is the general name for unanticipated or undesired effects in programs or program parts, caused by an agent intent on damage. This definition excludes unintentional errors, although they can also have a serious negative effect. This definition also excludes coincidence, in which two benign programs combine for a negative effect. The **agent** is the writer of the program or the person who causes its distribution. By this definition, most faults found in software inspections, reviews, and testing do not qualify as malicious code, because we think of them as unintentional. However, keep in mind as you read this chapter that unintentional faults can in fact invoke the same responses as intentional malevolence; a benign cause can still lead to a disastrous effect.
 * Виды вредоносного кода: **

14. You are likely to have been affected by a virus at one time or another, either because your computer was infected by one or because you could not access an infected system while its administrators were cleaning up the mess one made. In fact, your virus might actually have been a worm: The terminology of malicious code is sometimes used imprecisely. A **virus** is a program that can replicate itself and pass on malicious code to other nonmalicious programs by modifying them. The term "virus" was coined because the affected program acts like a biological virus: It infects other healthy subjects by attaching itself to the program and either destroying it or coexisting with it. Because viruses are insidious, we cannot assume that a clean program yesterday is still clean today. Moreover, a good program can be modified to include a copy of the virus program, so the infected good program itself begins to act as a virus, infecting other programs. The infection usually spreads at a geometric rate, eventually overtaking an entire computing system and spreading to all other connected systems. Вероятно, вы были затронуты вирусом в тот или иной момент, либо поскольку ваш компьютер был заражен или вы не могли получить доступ в зараженную систему, когда администраторы устраняли последствия заражения. Вообще ваш вирус может мог быть червем: терминология вредоносного ПО иногда используется неточно. Вирус представляет собой программу, которая может копировать себя и встраивать вредоносный код в другие невредоносные программы, изменяя их. Термин «вирус» был придуман, потому что пострадавшая программа действует как биологический вирус: она заражает другие «здоровых» программы, присоединяя себя к программе и либо уничтожая ее или сосуществующих с ним. либо сосуществуя с ней. Поскольку вирусы коварны, мы не можем предположить, что еще вчера «чистая» программа все еще «чистая» сегодня. Кроме того, «хорошая» программа может быть изменена, чтобы включать в себя копию вируса, так что сама начинает действовать как вирус, заражая другие программы. Инфекция обычно распространяется в геометрической прогрессии, в конечном итоге обгоняя заполняя всю вычислительную систему и распространяясь на другие подключенные системы. Е. Сальникова

15. A virus can be either transient or resident. A **transient virus** has a life that depends on the life of its host; the virus runs when its attached program executes and terminates when its attached program ends. (During its execution, the transient virus may spread its infection to other programs.) A **resident virus** locates itself in memory; then it can remain active or be activated as a stand-alone program, even after its attached program ends. Вирус может быть как несамостоятельным, так и самостоятельным. В первом случае его __работа__ + существование зависит напрямую от программы, в код которой он встроен, т.е. данный вирус как активизируется с данной программой, так и завершается вместе с ней (Во время выполнения данный вирус может заразить остальные программы). __Во втором случае__ уже не очень понятно (далековато от первого предложения) вирус располагается в памяти как отдельная программа, __причём его работа не зависит от работы__ (и работает также независимо от) той программы, с которой он связан. Stepanov A.P.

16.

Sidebar 3-4: Rapidly Approaching Zero
Y2K or the year 2000 problem, when dire consequences were forecast for computer clocks with 2-digit year fields that would turn from 99 to 00, was an ideal problem: The threat was easy to define, time of impact was easily predicted, and plenty of advance warning was given. Perhaps as a consequence, very few computer systems and people experienced significant harm early in the morning of 1 January 2000. Another countdown clock has computer security researchers much more concerned.

Боковая панель 3-4: Стремительно приближается к нулю «Y2K-совместимость» или «проблема 2000 года», когда были прогнозируемы тяжелые последствия для компьютерных часов с 2-значным полем отведенным под год, которые __изменились бы__ должно было измениться с 99 до 00, была образцовой проблемой: угрозу было нетрудно определить, время удара было легко предсказать, и было дано достаточно заблаговременных предупреждений. Возможно, как следствие, очень мало компьютерных систем и людей ощутили значительный ущерб ранним утром 1 января 2000 года. Другой случай обратный отсчет обеспокоил исследователей компьютерной безопасности гораздо больше. 1395658918