Вы здесь

Сисадмин. Поиск (Юрий Гиммельфарб)

Поиск

Автомобиль остановился возле самого подъезда. За всю дорогу охранник не произнес ни слова и даже не повернул головы. Высадив Сергея около его подъезда, он захлопнул дверцу машины и, не сказав ни слова – даже не попрощавшись – развернулся и уехал.

«Ну и манеры», – подумал Сергей. – «Ни тебе здрасьте, ни мне спасибо, ни нам до свиданья. Одно слово – гоблины».

Ладно, это все не так важно. Плевать ему на этого тупого верзилу. Его ждет работа. Жаль, конечно, что отпуск накрывается медным тазом, но зато можно весьма неплохо подзаработать. Хотя, почему сразу «накрывается»? Если выполнить всю работу за одну неделю, то останется еще три недели на весьма неплохой отдых. А, имея такие деньги на кармане, можно вдвоем с Ленкой махнуть не Сочи, а куда-нибудь получше!

Войдя в квартиру, Сергей подошел к своему столу и включил компьютер. Подождав немного, он вставил диск. На установку программы потребовалось совсем немного времени.

За свою жизнь Сергей никогда не ставил себе задачи специально ломать защиты или вскрывать программы. Но препятствия заводили его. Стоило появиться препятствию, стоило чему-то встать у него на пути – и Сергею сразу хотелось победить компьютер, обойти все преграды, добиться своего. Напротив, рутинная работа в конторе его раздражала именно из-за своей обыденности и рутинности. В его нынешней работе не было место творчеству, азарту, профессиональному риску. Вот и сейчас, даже зная, что, попавшись на взломе банковской системы, последствия могут быть весьма печальными, Сергей ощутил знакомый холодок безрассудства, какую-то бесшабашную удаль, азарт. Он не думал уже о последствиях: перед ним стояла задача, требующая своего решения. Он хотел быть лучшим.

По сути, Сергей и был одним из лучших. Самым простым способом заставить его что-либо сделать был вызов. Нужно было поставить перед ним невыполнимую задачу, сказать, что проблема неразрешима, освободить Сергея от работы. И тогда – откуда только брались силы, знания, энергия? – Сергей делал дело и добивался результата. Иногда казалось, что он родился с компьютером.

Компьютер был его другом. Только глядя на экран монитора и ощущая пальцами клавиши, Сергей ощущал полное душевное спокойствие. Это был его друг, собеседник – и в то же время соперник. Это было его второе «я», без которого Сергей просто не мог существовать. Во время работы, он разговаривал с ним, хвалил, ругал и в эти мгновенья компьютер казался Сергею живым существом.

Введя пароль, Сергей вошел в программу. Для начала он попробовал изменить пароль по своему усмотрению. Тут же оказалось, что это не так-то просто: простые пароли типа «один-два-три» не проходят и меньше восьми символов не принимаются. Более того, не проходили и пароли, состоящие только из цифр или только из букв: нужна была комбинация букв и цифр.

– Нормально сделано, – пробормотал Сергей самому себе. – Значит, вариант подбора пароля практически исключен.

Хотя, почему исключен? Если как у него: имя плюс год рождения и восклицательный знак? Бред, тут же оборвал себя Сергей. Ну, у одного так пароль подобрали, ну, – да и то, в самом крайнем случае! – у двоих, но ведь не у двадцати же шести одновременно? Нет, Костя в этом вопросе, безусловно, прав: со стороны потерпевших клиентов сговор и махинации исключались. Они пострадавшие в прямом, а не в переносном смысле.

Ладно, оставим пароль в покое. А что ключевая флэшка? Сергей попробовал ее скопировать. Нет, не выходит. Ладно, а если скопировать специальными программами? О как, тоже не выходит! Смотри-ка ты, ежики небритые, защита хорошо сделана! Значит, копироваться ты, зараза, не хочешь, да? Ладно, решил Сергей, мы тоже не пальцем деланы, а что вы скажете против моей программки копирования на физическом уровне? Ну-ка, давай теперь посмотрим…

Сергей вставил в разъем скопированную флэшку и попробовал снова войти в программу. Сверх всяких ожиданий, программа загрузилась. Опаньки, значит, вот где собака порылась! Значит, эта гребаная защита, сертифицированная ФАПСИ, ломается на физическом уровне. Ну, хорошо. Теперь попробуем тот же метод при запросе банковской выписки или отправке денег…

Выполнив все операции, Сергей стал ждать. Модем, пошуршав и пощелкав, замолчал. На экране появилось сообщение:

«Операция завершена успешно. Деньги переведены».

– Вот тебе, бабушка, и Юрьев день, – довольно пробормотал Сергей. – Немного же времени потребовалось для того, чтобы сломать защиту.

Ну что ж, значит, можно звонить Косте. Хотя, пожалуй, с этим есть смысл повременить. Еще зажилит оставшиеся двадцать штук, скажет, мол, что работы было на три копейки. Ничего, решил Сергей, позвоню через пару-тройку дней. А пока что надо выпить пивка. Кстати, кажется, в холодильнике завалялось пара бутылочек.

– Стоп, – вдруг сказал Сергей самому себе. – А чего, собственно говоря, я добился? Ну, хорошо, я взломал систему. Я скопировал ключ. Следовательно, по ложному ключу перевел деньги. Ну и что же мы имеем? Будем рассуждать логично. Я скопировал ключ потому, что он у меня был. Не имей я ключа – черта с два вошел бы в систему. Но что толку? Опять-таки, двадцать шесть кретинов не могли собрать в одном месте все двадцать шесть ключей. Но даже если и собрали? Вероятность такого сговора не больше чем вероятность одновременного извержения двадцати шести вулканов на планете.

Хотя опять-таки стоп. Кто делает ключевые флэшки? В самом банке. Тамошние инженеры. Значит, получается, что сделана копия? Теоретически возможно, но практически бесполезно. Одновременно запустить двадцать шесть копий программы на одном компьютере нереально. Хотя, почему нереально. Надо попробовать…

Сергей свернул программу и, не закрывая ее, попробовал запустить еще одну копию. Немедленно на экране появилась предупреждающая надпись:

«Внимание! Загрузка программы невозможна: вероятно, запущена еще одна копия программы Клиент-Банк!».

Ну вот, что и требовалось доказать! Впрочем, это предсказуемый вариант. Одновременный запуск программы на одном компьютере исключается. Хотя, постой… А что если этот злодей двадцать шесть компьютеров задействовал или запустил двадцать шесть виртуальных машин на одном компьютере?

– Ты соображаешь, что несешь? – сказал сам себе Сергей. – Во-первых, как он физически это осуществил? Как он запустил двадцать шесть виртуальных машин на одном компьютере? Никакой мощности не хватит! А во-вторых, где в одной комнате он нашел двадцать шесть компьютеров, причем так, чтобы этого ни одна живая душа не заметила подобной операции?

Хорошо, тогда придется заглянуть чуточку поглубже. Когда устанавливается связь с удаленным компьютером, порт открывается. Значит, чисто теоретически есть возможность подключиться удаленно к тому компьютеру в тот момент, пока программа работает.

Давай-ка будем рассуждать логично, подумал Сергей. Наверняка, в банке есть компьютер, который используется для внутренних коммуникаций сотрудниками. Значит, есть весьма высокая вероятность, что он находится на весьма открытом участке сети. Значит, надо просканировать адреса компьютеров «Кора-Банка», подключенные к сети. Впрочем, чего гадать на кофейной гуще? Надо попробовать, мы ничего не теряем…

Сергей был в своей стихии. Он работал самозабвенно, не обращая внимания на время, не чувствуя жажды и голода, не обращая внимания ни на что. В комнате были только двое: он и компьютер.

Он начал сканировать адреса банковских компьютеров и вскоре к своему приятному удивлению обнаружил, что он оказался прав. Довольно скоро он уже во всю шарил на дисках банковских компьютеров, но ничего интересного и подозрительного там не находил. Проверив параметры компьютеров банка, он быстро убедился, что в банке нет ни одного компьютера, на котором было бы физически возможно запустить двадцать шесть виртуальных машин на одном компьютере

Между тем наступил вечер. В комнате стемнело, на улице зажглись фонари. Сергей встал, включил настольную лампу, потом потянулся, пошел на кухню, поставил на плиту чайник. Так, размышлял Сергей. Где можно поискать что-либо интересное? Он привык работать, доверяя не столько своим знаниям, сколько интуиции, звериному чутью, которое необъяснимо просыпалось в нем в тот момент, когда нужно было решить какую-нибудь проблему, на первый взгляд казавшуюся неразрешимой.

Может покопаться в электронной почте? Мало ли, что интересного там можно найти… Или воспользоваться «дырками» в операционной системе – таких существует немало, причем некоторые Сергей нашел лично и они нигде, ни в одной документации не описаны. Например, при выходе в сеть некоторые сервера иногда зависают. Но все-таки: что искать? Как можно одновременно инициировать работу систем «Клиент-Банк»?

Свист чайника прервал мысли Сергея. Он снял чайник с плиты, достал из шкафчика кружку, банку кофе и сахарницу. Налив себе кофе, он взял в руки кружку и снова отправился в комнату. Сел за компьютер и задумался.

Погоди, сделаем в сканировании компьютеров небольшой перерыв, подумал Сергей. Временно оставим их в покое, тем более что никуда они не денутся. Давай порассуждаем логично. Одновременный платеж – ставлю миллион долларов на то, что это инициировали с одного компьютера. В пользу этого умозаключения говорит тот факт, что разница между транзакциями составляла несколько секунд. Но как же это сделали? Вручную – бред, это отпадает. Запустили программу по расписанию? В принципе, теоретически такое вполне возможно. Но если это сделали именно таким образом, то это означает, что тот злодей, который это осуществил – просто законченный клинический идиот, ибо подобные фокусы обнаруживается в два счета. А судя по тому, насколько четко и профессионально был продуман весь сценарий данного ограбления, автор его – далеко не дурак. Следовательно, давай будем исходить из того, что этот кибер-гопник – человек умный. Значит, таких явных следов оставлять он не будет. А как еще можно запустить такой процесс, если не по расписанию?

Стоп. А если он написал вирус? Допустим, он нашел способ написать некий вирус или, точнее, не вирус, а некий «троян», задача которого совершить некие целенаправленные и в данном случае вредоносные действия?

Сергей припомнил один случай, произошедший с ним лет семь назад. Он тогда работал программистом в небольшой фирме по разработке программного обеспечения. Директором фирмы был его старый знакомый Андрей, носивший редкую фамилию: Зимний. Однажды фирма заключила большой договор на разработку программы по учету начисления заработной платы. Договор был денежный и выгодный, но оформить его нужно было срочно, поэтому все носились по офису, как угорелые, и старались сделать все как можно быстрее. Девочка-секретарша куда-то запропастилась, поэтому Андрей велел Сергею быстро распечатать договор.

Сергей не любил такие примитивные работы, но делать было нечего. Загрузив текст, он почему-то задержал взгляд на шапке договора. Ничего особенного, самый обычный текст стандартного контракта.

«Договор на оказание научно-технических услуг

ООО «Алмис», именуемое далее Заказчик, в лице Директора Бугоркова Олега Викторовича, действующего на основании Устава и ООО «Центр новых информационных технологий и телекоммуникаций», именуемое далее Исполнитель, в лице Директора Зимнего Андрея Александровича, действующего на основании Устава, заключили настоящий Договор о нижеследующем:

Исполнитель принимает на себя разработку комплекса программ «Учет заработной платы» для обеспечения деятельности Заказчика на базе персональных ЭВМ, именуемый далее Система.

Требования, предъявляемые к разрабатываемой Системе, изложены в техническом задании, которое является неотъемлемой частью настоящего Договора»

Распечатав два экземпляра договора, Сергей, не глядя, вытащил их из принтера и отдал директору на подпись. Зимний, также, не глядя, подмахнул договор своей размашистой подписью, шлепнул печать и бросился к двери, на ходу засовывая договор в папку для бумаг.

Офис его заказчика Олега Бугоркова находился в том же здании четырьмя этажами выше, но Андрей не стал ждать лифта и пулей, перепрыгивая через две ступеньки, вбежал в офис компании «Алмис».

– Директор у себя? – тяжело дыша и вытирая пот со лба, спросил Зимний.

– Да, Андрей Александрович, у себя и ждет вас, – миловидная секретарша Леночка быстро встала и распахнула перед Зимним дверь директорского кабинета.

Войдя в кабинет, Зимний поднял руку в знак приветствия, подошел к Бугоркову и, не произнося не слова, протянул ему договор.

Взяв экземпляр договора из рук запыхавшегося Андрея, Бугорков водрузил на нос очки и погрузился в чтение. Но, едва прочитав несколько строчек, он вначале разинул рот от удивления, остолбенело поднял глаза на Андрея, а затем, спустя несколько секунд, захохотал.

– Ты чего? – удивился Андрей.

Олег не отвечал. Он хохотал, бился в истерике, и, будучи не в силах произнести ни единого слова из-за душившего его дикого смеха, корчился в кресле и лишь тыкал пальцем в договор. Зимний взял бумагу из трясущихся рук Бугоркова и прочитал:

«Договор на оказание научно-идиотских услуг

ООО «Алмис», именуемое далее Заказчик, в лице Директора Бугоркова Олега Викторовича, трахающего на основании Устава и ООО «Центр дебильных вонючих технологий и телекоммуникаций», именуемое далее Исполнитель, в лице Директора Тупого Андрея Александровича, сморкающего на основании Устава, заключили хреновый Договор о нижеследующем:

Исполнитель принимает на себя разработку комплекса программ «Учет идиотской платы» для обеспечения деятельности Заказчика на базе мерзких ЭВМ, именуемый далее Система.

Требования, предъявляемые к хреновой Системе, изложены в дебильном задании, которое является вонючей частью долбаного Договора»

И дальше все шло в том же духе: такая же несусветная околесица.

Выругавшись, Зимний резко развернулся и пулей кинулся к выходу. За его спиной слышался хохот Бугоркова.

– Твою мать! – заорал Зимний, ворвавшись в офис. – Это что такое? Что за идиотские шуточки? Ты что напечатал?

Прочитав всю эту немыслимую бредятину и придя в себя от душившего его хохота, Сергей быстро сообразил, в чем дело. Какой-то «троян», засев в оперативной памяти, при выводе текста на печать, просто-напросто менял прилагательные в тексте на нехитрый набор своих прилагательных, оставляя сам текст нетронутым. Пользователь, набирая текст, читал, как правило, не бумажный, а электронный вариант. Случайный набор прилагательных давал сногсшибательный эффект при прочтении.

Вспомнив этот случай, Сергей не смог сдержать улыбки. А что если у этого трояна в данном случае иная задача: перехватить работу программы и по определенным счетам при запросе выписки добавить в выписку одну запись? Хм-м, а что, вполне может быть… Но тогда размер тела этого трояна должен быть значительным. Хотя, погоди-ка… А что если данные с перечнем счетов хранятся не в теле этого трояна, а отдельно? Если хранить данные отдельно, то брать данные он будет из сторонней таблицы и тогда размер его будет мизерным и кроме антивирусного монитора его никто и ничто не обнаружит – разве что случайно. Но в банке наверняка установлен входной антивирусный контроль и гарантированно ведется антивирусный мониторинг: не дебилы же банковские программисты, в конце-то концов: это же азы, элементарные основы компьютерной безопасности! Как же в таком случае этот троянец смог обойти защиту? Почему антивирусный монитор не обнаружил постороннюю процедуру в оперативной памяти компьютера?

Ладно, это все досужие рассуждения. По крайней мере, теперь понятно, что искать и где искать. Если кто-то и проник в банковскую систему извне, то сделать это можно только через почтовый сервер. Посмотрим на почтовом сервере, который управляет и обеспечивает работу системы «Клиент-Банк». Так, где ты у нас, родной? Вот ты где, красавец! Ну-ка иди к папочке! Посмотрим, как ты управляешь нашими денежками…

Сергей начал осторожно просматривать содержимое этого сервера. Все нормально, антивирусная программа установлена, мониторинг производится, так что все в ажуре! Опаньки, секундочку, а это что за ерунда на постном масле? Антивирусная защита есть на все – даже почтовые базы в режиме он-лайн сканируют, параноики! – только оперативная память остается полностью вне любого антивирусного контроля! Ну, дают, красавцы удалые! Значит, в оперативной памяти почтового сервера может находиться любой компьютерный триппер – и никто в банке даже и не почешется! Надо просмотреть содержимое оперативной памяти этого компьютера.

Точно! Вот и разгадка, вот он, троянец, сидит в оперативной памяти, как у себя дома! Причем, забавно: он размещается именно по тем адресам памяти, к которым обращается и программа «Клиент-Банк». О как! Н-да, меня терзают смутные сомнения…

– Вот ты где! – победно воскликнул Сергей. В его голосе прозвучала радость исследователя, решившего сложную задачу. – Вот ты мне и попался, троянец бесхвостый! Дай-ка, дружище, я тебя к себе скопирую для исследования!

Скопировав себе на компьютер найденного «трояна», Сергей довольно улыбнулся. Классно, ай да Серега, ай да сукин сын! Но работы еще – непочатый край: надо понять, что этот троян там делает конкретно и какие вредоносные действия выполняет. А чего тут мудрствовать лукаво? Надо запустить его у себя и посмотреть, чего он делает.

Сергей отключил антивирусный мониторинг на своем компьютере, запустил найденного неизвестного троянца на выполнение и стал отслеживать обращения. Но – странное дело! – вредоносная программа тут же выгрузилась из памяти и прекратила работу. Очень странно. Погоди-ка, сам же говорил, что эта зараза может обращаться к какому-то файлу, в котором будет храниться таблица этих расчетных счетов, которые и были хакнуты! Надо еще раз поискать. Хотя, в данном случае – что искать? Иголку в стоге сена? Но попробовать все равно надо.

Хотя, постой. А если запустить контекстный поиск по диску одного из тех счетов, которые этот кибер-гопник хакнул? Это побыстрее получится.

Результат не заставил себя долго ждать. Через несколько минут Сергей нашел маленький текстовый файл.

– Ну вот, – сказал сам себе Сергей. – Все на месте. Теперь повторим операцию.

Сергей снова запустил троянца на выполнение и стал ждать. Теперь же, при появлении на диске списка счетов, найденный зловред не выгрузился из памяти. Создалось впечатление, что ничего не происходило. Сергей запустил антивирус. Тут же на экране появилось сообщение: «В оперативной памяти компьютера обнаружен неизвестный вирус!». В порядке эксперимента Сергей отключил проверку оперативной памяти и снова запустил антивирус. На этот раз никакого сообщения не появилось.

– Вот, Костя, тебе и ответ на твой первый вопрос, а именно: как эти гады данный взлом провернули, – вслух сказал себе Сергей. – Остается теперь только выяснить самую малость: надобно понять, кто же это такой умный у тебя в банке работает?

Так, подумал Сергей, пора временно остановиться и позвонить Косте. На данном этапе без него тут не разобраться. По крайней мере, теперь есть, что докладывать. Первый и очень важный результат есть.

Часы показывал около половины первого ночи. Сергей взял в руки телефон, подаренный Костей, и нажал кнопку вызова. После первого же сигнала в трубке раздался знакомый голос с характерной хрипотцой: очевидно Костя ждал звонка.

– Обойдемся без имен, – вместо приветствия сказал Костя. Теперь он не любезничал, от игривого тона не осталось и следа. Теперь он говорил коротко и жестко. – Никакой лирики, никаких имен, излагай только факты. Что успел накопать?

– Значит так, – в тон ему без приветствия начал Сергей. – Факты следующие. Я пока ответил только на первый, но зато на самый главный вопрос: понял, каким образом была осуществлена данная хитроумная операция. Докладываю: взлом был произведен с одного компьютера и это компьютер значится в твоей сети под именем SYS_ADMIN. Разумеется, имен ваших компьютеров я не знаю – да и откуда у меня может быть такая информация? – но, рассуждая логически, предполагаю, что, скорее всего, это компьютер твоего системного администратора. Это было сделано при помощи неизвестного троянца, который сидит в оперативной памяти этого компьютера. Но по сети он не распространился.

– Чего? – недоуменно спросил Костя. – Троянца? А что это хреновина с морковиной?

– Ну, как тебе объяснить, – замялся Сергей. – Это программа, которая, как правило, выдает себя за что-нибудь мирное и чрезвычайно полезное. Есть масса подобной дряни: например, интернет-трояны, которые либо дают доступ к компьютеру с другого компьютера без ведома пользователя, либо высылают по определенному адресу какую-либо информацию с компьютера-жертвы (как правило, чужие пароли). А в твоем случае, это управление системой «Клиент-Банк» – впрочем, я еще до этого не дошел. Хорошо, тогда встречный вопрос: ты знаешь, что такое «вирус»?

– Да, знаю, – нетерпеливо ответил Костя. – Но все равно не понимаю: что же у меня в банке-то завелось?

– Если тебе так будет легче, то давай, я буду употреблять термин «вирус», – снисходительно ответил Сергей. – Хотя, в данном случае это будет не совсем правильно, но я не возражаю. Хорошо, считай, что у тебя завелся вирус.

– Тогда сразу вопрос, – перебил Костя. – На всех компьютерах у нас установлены антивирусные программы. Причем, это было мое личное распоряжение в форме официального приказа по банку. Почему же программа не обнаружила этот вирус? Твою мать, какой кретин не выполнил мой приказ?!

– Ты погоди, не спеши, а лучше послушай. Это твое распоряжение на самом деле выполнено. Но выполнено формально. Тут есть два мелких, но весьма забавных обстоятельства. Во-первых, это вирус новый и распространения он не получил. Поэтому в базе данных антивирусной программы его просто нет. Уверен, что он был написан специально по чьему-то заказу и специально для вашего банка. Причем, именно для подобного взлома. Я пришел к этому выводу потому, что преступник слишком хорошо знал особенности работы именно вашей системы «Клиент-Банк» – а ты ведь сам говорил, что в каждом банке подобная система своя. Так вот, если этот вирус сидит в памяти компьютера, на котором нет системы «Клиент-Банк» – ничего не произойдет. Но все это далеко не самое главное. Этот вирус все равно был бы обнаружен вашими антивирусами: в подобных программах предусмотрен эвристический анализ операционной системы и поведенческий анализ загруженных приложений, поэтому он все равно был бы обнаружен. Тут имеется другое обстоятельство. А именно следующее: на этом компьютере был отключен мониторинг оперативной памяти, а этот вирус именно там и сидел. На всех других компьютерах контроль оперативной памяти был включен, а на этом – выключен. Вот в этом и фишка, вот почему я сказал тебе, что твой приказ формально исполнен, придраться тут не к чему!

– Ах, вот оно что, – в голосе Кости явно послышалось удивление. – Понятно. Вот теперь многое становится понятным и это многое объясняет. Да, извини, я тебя перебил. Внимательно слушаю дальше.

– А вот дальше начинается самое интересное. Этот вирус работает следующим образом. Он никак себя не проявляет до определенного момента, а активизируется только в момент начала работы твоей системы «Клиент-Банк». Далее все сделано весьма оригинально: происходит простое считывание данных со счетов твоих самых богатых клиентов и если у них на счете есть сумма четыреста тысяч долларов – тогда этот вирус вклинивается в работу твоей программы «Клиент-Банк» и к банковской выписке каждого из твоих двадцати шести олигархов добавляет по одной строчке. Если хотя бы у одного такая сумма на счету будет отсутствовать – этого перевода не произойдет и никто ничего не заметит! Но если наступает момент, когда каждый – подчеркиваю: каждый, как говорится, «все или ничего»! – из них имеет на счету сумму четыреста тысяч долларов… А вот тогда и имеем то, что получили. Правда, я не совсем понимаю, почему выбрана сумма именно четыреста тысяч, а не другая, ну да это неважно. Только одно скажу – работа филигранная! Тот, кто это задумал и осуществил – просто гений. Это я тебе говорю, как профессионал.

– Погоди-ка, – ошеломленно сказал Костя. – Ты что же, хочешь сказать, что этот чертов вирус до сих пор сидит на моих компьютерах и такой перевод денег теоретически может повториться снова? Я тебя правильно понял?

– Именно так, – ответил Сергей. В его голосе звучали нотки гордости и восхищения. Гордости за свое мастерство и восхищение мастерством коллеги по цеху. Он умел искренне восхищаться мастерством других.

– Повторение подобного можно ожидать в любой день, – продолжал Сергей. – Достаточно только чтобы снова все твои двадцать шесть олигархов имели одновременно на счете каждый по четыреста тысяч зеленых. Как только это произойдет, они снова потеряют денежки.

– Ни х… себе. Полный п…ц! – от души и с чувством выругался Костя. – Все равно ни хрена понять не могу! Как эта зараза работает? Что это за мерзость? Ты можешь это мне объяснить, учитывая то, что я разбираюсь в компьютерах не лучше, чем слон в высшей математике?!

– Ладно, – усмехнулся Сергей. – Тяжело, но попробую. Представь себе, что ты в банке завел такой порядок: твои задания должны выполняться быстро и четко, не вдумываясь в смысл твоих приказов.

– Да так оно и есть, – ответил Костя. – Это ты к чему сказал?

– А вот к чему. Представь себе свою секретаршу, который приходит на работу к себе в офис и каждый день обнаруживает у себя на столе стопку бумаги со списком заданий, которые она должна выполнить за рабочий день. Представил, да? Итак, твоя секретутка берет верхний лист, читает твои мудрые указания, пунктуально их выполняет, выбрасывает «отработанный» лист в мусорную корзину, а затем переходит к следующему листу. А вот теперь представь, что к вам в банк тайком пробрался некий злоумышленник, в отсутствии твоей секретарши подходит к ее рабочему месту и подкладывает в стопку бумаг лист, на котором написано следующее: «Переписать этот лист два раза и положить копии в стопку заданий соседей». Что сделает твоя секретарша? Будучи дисциплинированной и привыкшая точно исполнять твои задания, она это и сделает: дважды перепишет лист, положит его соседям на стол, уничтожит оригинал и перейдет к выполнению второго листа из стопки. То есть продолжит выполнять свою настоящую работу. Теперь смотри, что произойдет дальше. Что сделают соседи, являясь такими же аккуратными сотрудниками, привыкшие также выполнять твои приказы? Обнаружив новое задание, они сделают то же самое, что и твоя секретутка: перепишут лист по два раза и раздадут следующим сотрудникам. Итого, в конторе бродят уже четыре копии первоначального документа, которые и дальше будут копироваться и раздаваться на другие столы. Вот примерно так же работает и компьютерный вирус, только стопками бумаг-указаний являются программы, а вместо секретарши – компьютер. Так же как и секретарша, компьютер аккуратно выполняет все команды программы (в моем примере это листы заданий), начиная с первой. Если же первая команда звучит как «скопируй меня в две другие программы», то компьютер так и сделает, – и команда-вирус попадает в две другие программы. Когда компьютер перейдет к выполнению других «зараженных» программ, вирус тем же способом будет расходиться все дальше и дальше по всему компьютеру. В моем примере про твою секретаршу и ее высокоинтеллектуальную работу лист-вирус не проверяет, заражена очередная папка заданий или нет. В этом случае к концу рабочего дня все твои служащие будут завалены такими копиями и будут заниматься только тем, что переписывать один и тот же текст и раздавать его соседям! Смотри: секретарша сделает две копии, очередные жертвы вируса – уже четыре, затем восемь, шестнадцать, тридцать две, шестьдесят четыре и так далее. То есть количество копий каждый раз будет увеличиваться в два раза.

– Интересная мысль, – хмыкнул Костя. – Такое никогда не приходило мне в голову.

– Это еще не все, – довольно пробормотал Сергей. – Теперь проанализируй ситуацию. Если, допустим, каждый твой сотрудник на переписывание одного листа тратит тридцать секунд и еще столько же на раздачу копий, то через час по конторе будет «бродить» более десять в восемнадцатой степени копий вируса! Ты себе это представляешь? Скорее всего, конечно же, в банке на эту забавную операцию просто не хватит бумаги, и распространение вируса будет остановлено по столь банальной причине.

На другом конце трубки раздался Костин смех.

– Как это ни смешно, но именно такой случай произошел в однажды в Соединенных Штатах, – сказал Сергей. – Это было в восемьдесят восьмом году. Хотя, честно говоря, всем пострадавшим в этом инциденте было совсем не смешно. Тогда несколько глобальных сетей передачи информации оказались переполненными копиями сетевого вируса. Он назывался «вирус Морриса». Он рассылал сам себя от компьютера к компьютеру. Поэтому «правильные» вирусы делают так: «Переписать этот лист два раза и положить копии в стопку заданий соседей, если у них еще нет этого листа». Проблема решена – «перенаселения» нет, но каждая стопка содержит по копии вируса, при этом клерки еще успевают справляться и с обычной работой.

– Но я слышал, что вирусы могут еще и уничтожать данные – спросил Костя. – Или я путаю?

– Нет, не путаешь, – ответил Сергей. – Если мы снова для примера возьмем твою длинноногую секретуточку, то все будет очень просто – достаточно дописать на лист примерно следующее: «Первое. Переписать этот лист два раза и положить копии в стопку заданий соседей, если у них еще нет этого листа. Второе. Посмотреть на календарь – если сегодня пятница, попавшая на тринадцатое число, то следует выкинуть все документы в мусорную корзину» Кстати, примерно именно это и выполняет давно известный старый вирус «Иерусалим», который в начале девяностых наделал немало бед.

Костя хмыкнул.

– Кстати, на примере твоей секретарши очень хорошо видно, почему в большинстве случаев нельзя точно определить, откуда в компьютере появился вирус, – заметил Сергей. – Все твои служащие имеют одинаковые – причем, заметь: с точностью до почерка! – КОПИИ, но оригинал-то с почерком злоумышленника уже давно в корзине! Вот тебе простое объяснение работы вируса. Плюс к нему имей в виду две аксиомы, которые, как это ни странно, не для всех являются очевидными.

– Какие? – заинтересованно спросил Костя.

– Во-первых, вирусы не возникают сами собой, – ответил Сергей. – Их создают очень злые и нехорошие программисты-хакеры и рассылают затем по сети передачи данных или подкидывают на компьютеры знакомых. И твой случай – не исключение. Вирус не может сам собой появиться на ваших банковских компьютерах – либо тебе его подсунули на флэшках, на компакт-диске, из Интернета, по почте, либо ты сам его случайно скачал откуда-нибудь. Либо вирус жил у тебя в компьютере с самого начала, либо – и это есть самое ужасное! – программист-хакер влез к тебе в сеть примерно так же, как влез в нее я. И второе: компьютерные вирусы заражают только компьютер и ничего больше, поэтому не надо бояться – через клавиатуру и мышь они человеку не передаются.

После этих слов Сергей засмеялся.

– Чего ты ржешь? – мрачно спросил Костя. – Меня обули на десять лимонов твоими вирусами, а он ржет!

– Я не над тобой смеюсь, – ответил Сергей, справившись с приступом безудержного веселья. – У тебя иной случай: мы здесь имеем дело не с вирусом, а с трояном, то есть такой программой, которая не размножается, а делает свою целенаправленную черную работу. Впрочем, это не имеет значения: хочешь называть этого зловреда вирусом – я не возражаю, пусть будет так. А смеюсь я потому, что вспомнил одну забавную историю пятилетней давности.

– Что за история?

– Я тогда работал в одной конторке, где был производственно-экономический отдел. И работала в этом отделе одна дамочка предпенсионного возраста, дама очень странная, если не сказать с прибабахом: ну точно не от мира сего! И вот однажды у нее вышел из строя компьютер. Ничего особенного, просто перестал заводиться. Ну, я поковырялся в нем – дело-то плевое! – и поставил диагноз: компьютер заражен вирусом. Причем, знаешь, хорошо заражен! Ерунда вопрос, есть очень хороший антивирус, который этого вируса замочит. Ставлю я этот самый антивирус на теткин компьютер, запустил, и по ходу дела и говорю, что этот вирус вдобавок делает фрагментацию на жестком диске, поэтому после излечения я еще должен выполнить дефрагментацию. Так, машинально ляпнул! Не подумал о том – кто меня слушает! Делаю, ясен перец! А теткин винт забит информацией примерно на три четверти, а вирус фрагментировал его основательно. Я злюсь, ругаюсь, что не могу работать, и, желая хоть как-то развлечься, нарочно громко вслух говорю:

– Как бы не заразиться вирусом от компьютера.

Тетка от моих слов аж встрепенулась и спрашивает:

– Ты шутишь?

– Какие тут шутки, – говорю. – Вы же слышали, что я сказал: этот вирус очень мощный.

– И что же ты тогда будешь делать? – вопрошает тетя.

– Ясен пень, – говорю. – Дефрагментацию мозга.

– Это как? – спрашивает она, так и не понимая, что я прикалываюсь.

– Под общим наркозом, – отвечаю я, делая мрачное лицо.

И надо же такой беде случиться, что ночью очень резко похолодало. Температура упала с плюс пятнадцати до минус одного (апрель, блин). А я спал с открытой форточкой и под легким одеялом, да еще с мокрой башкой (лень было сушить после помывки). Короче, схватил насморк. Сижу на следующий день, злой как черт, сморкаюсь поминутно в платок. Людмила Васильевна спрашивает:

– Ты где простудился?

– Известно где, – отвечаю. – Вирус от компьютера подхватил.

– И что же теперь будет? – спрашивает она.

– Пока не сделают дефрагментацию, буду его распространять.

Смотрю – берет лист бумаги и что-то пишет по форме. Потом встает и уходит. Через пять минут вызывает Главный Начальник (в настоящий момент уже бывший). Он – человек нормальный, шутки понимает, поэтому встречает меня, давясь от смеха, и протягивает мне лист с почерком этой самой тетки. И вопрошает:

– Ты зачем над человеком так издеваешься?

И ты не поверишь – читаю:

«Главному Начальнику от (тетки) Заявление. Прошу временно предоставить мне другой кабинет до того, пока системный администратор не сделает себе дефрагментацию головного мозга в связи с болезнью. Он распространяет опасный вирус и подвергает меня опасности заражения».

– Иди, работай, – сказал Главный Начальник. – А бумагу эту я для потомков сохраню, которые после нас здесь работать будут.

После этих слов Костя и Сергей дружно расхохотались.

Помолчав немного и придя в себя, Костя спросил:

– Ладно, давай все-таки вернемся к нашим баранам: повеселились – и будет! Ты мне ответь: а почему этот вирус выбирает именно этих двадцать шесть счетов? У нас гораздо больше богатых клиентов. Откуда ты узнал, что выбор идет именно по этому списку?

– Это тоже сделано с большим вкусом, уважаю! Данный вирус читает список, который ему кто-то подсунул. И это простой список счетов, которых хранится в отдельном текстовом файле. Поскольку это файл текстовый, то никто – ни антивирус, ни специальные программы, ни пользователи! – не найдут в нем ничего криминального. Обычный текст, перечень каких-то счетов – ну и что? Но ты знаешь, что в этом во всем самое забавное?

– Что? – мрачно спросил Костя. Судя по голосу, он уже был готов к любой новости, даже самой неприятной и неожиданной.

– Самое интересное то, что этот список полностью совпадает с тем, который ты мне дал. Измени содержимое этого списка – и вирус окучит другие счета. Более того: первая строка в этом списке – это сумма, на которую твоих клиентов «обули». Ты понял, что это означает? Этим вирусом можно управлять, понимаешь? А вот теперь, с твоего позволения выскажу свое личное мнение. Я абсолютно уверен: этим списком кто-то управляет до сих пор.

– Почему ты так думаешь? – удивленно спросил Костя.

– А потому, что этот кибер-гопник в этом деле допустил одну небольшую небрежность, – торжествующе сказал Сергей. – Он не поменял системную дату файла. Тут он сработал несколько неаккуратно! Понимаешь, дата последнего изменения этого списка счетов совпадает с той датой, когда тебя хакнули. А дата создания этого вируса – на неделю раньше. Впрочем, с моей точки зрения, уверовав в собственную безнаказанность, человек, как говорится, «теряет нюх».

Костя снова длинно, грязно и забористо выругался.

– Блин, чем глубже роешь, тем лучше пахнет!

– Ты прав. Но вот кто конкретно эти художества вытворяет – на этот вопрос я тебе ответить пока не могу.

Костя не ответил. Некоторое время в трубке было слышно только его тяжелое напряженное дыхание. Сергей физически ощутил, что его друг с трудом сдерживает ярость.

– А ты сам мог бы написать такой вирус? – неожиданно спросил Костя. – Ведь ты, Серый, тоже специалист высочайшего класса.

Сергей улыбнулся.

– Нет, Костя, – решительно возразил Сергей. – Хотя слышать твои слова мне очень лестно, но, к сожалению, вынужден признать, что такая задача мне не по зубам. И вот почему. Тот, кто написал эту программу, имеет высочайшую квалификацию не только, как разработчик, но и как системный администратор. А это редкое сочетание. Да, ты прав: без ложной скромности скажу, что я системщик высокого класса. Но я никогда не специализировался, как разработчик. Ты пойми, что профессия программиста имеет много общего с профессией врача. Любой врач имеет представление об анатомии человека, но, тем не менее, всегда специализируется в чем-то одном. Ты ведь не пойдешь лечить зубы к окулисту, а глаза лечить – к дантисту! Вот и в нашей профессии все то же самое!

– Ладно, эту тему закрыли, – помолчав, сказал Костя. – Так, тогда у меня к тебе два других вопроса. Как думаешь, наши программисты могли обнаружить твое присутствие в нашей сети? Хотя, что я несу: их сейчас в банке нет… Завтра они смогут обнаружить, что ты был в банковской сети?

– Сомневаюсь, – ответил Сергей. – Не стану утомлять тебя техническими терминами, просто скажу: вероятность обнаружения – одна на миллион. Я принял некоторые меры предосторожности, ни с кем в переговоры не вступал, а только смотрел и наблюдал. Поэтому считаю, что даже если сейчас кто-то из твоих архаровцев сидит на работе – в чем я лично тоже сильно сомневаюсь! – меня никто не видел. А завтра они тем более ничего не обнаружат.

– Отлично! В дальнейшем действуй в том же духе. Теперь второй вопрос. Ты выгружал из памяти этого компьютера этот вирус и этот список? Ты что-нибудь там трогал? Изменял что-нибудь?

– Нет, конечно! – обиженно проговорил Сергей. – Я ведь не идиот: работа не закончена, еще ничего не выяснено – зачем же мне обнаруживать себя и что-либо менять?!

– Молодец, – удовлетворенно ответил Костя. – Совершенно правильно сделал. И в дальнейшем до моей команды пока ничего не трогай и не меняй. Необходимо, чтобы все следы преступления, все улики и факты были в целости и сохранности до самого последнего момента. А отследить изменения ты можешь? В том смысле – возможно, проследить за тем, кто, когда и откуда изменит этот вирус или этот список?

– Да проследить-то в принципе можно, – задумчиво сказал Сергей. – Только понимаешь, Костя, теперь уже изменять этот троян, вносить в него какие-то доработки, нет ни малейшего смысла. Он настолько гениально сделан, что в этой операции нет ни малейшей необходимости. Достаточно просто изменить список счетов, которые этот хакер намерен окучивать. Поэтому тот гад, который тебе устроил весь этот цирк Шапито вряд ли туда снова полезет. Я просто пытаюсь поставить себя на его место. Скорее всего, он просто ждет.

– Тогда так. Следи за ними. Ни на секунду не прекращай наблюдение. Да, и вот еще что. Просмотри на всякий случай архивы нашей электронной почты. Не по воздуху же этот вирус к нам прилетел!

– Не по воздуху – это точно, в этом ты совершенно прав! Только ведь его и на флэшках могли принести. Или из Интернета скачать. Так что, я, конечно, просмотрю вашу почту, но, на мой взгляд, это будет совершенно напрасной и бесполезной тратой драгоценного времени. Чем больше я этим делом занимаюсь, тем больше убеждаюсь в том, что тот кибер-гипник, который все это затеял – далеко не дурак. По крайней мере, его можно уважать, как человека умного. Это достойный противник. А значит, вряд ли это пришло по почте. Смотри сам: у вас установлен входной контроль почты. Значит, неизвестное вложение тут же было бы обнаружено. Вычислить отправителя – не самая сложная задача для профессионала. Но даже если он это и прислал по почте – он бы сразу удалил бы это письмо. Вот и все дела!

– Красиво излагаешь. Только на поверку выходит, что не такой уж на самом деле гениальный этот твой кибер-гопник, если с системной датой списка счетов так лопухнулся, что ты это в два счета обнаружил!

– Он такой же мой, как и твой, – обиделся Сергей.

– Ладно, ладно, не цепляйся к словам. Что ты, словно ребенок, обижаешься на всякую ерунду? Ты войди в мое положение, пойми мое теперешнее состояние, а потом сделай выводы! Я не о том говорю. Ты ведь главного не знаешь, точнее, судя по твоим словам, просто не обратил на это внимания.

– Ты о чем? – удивленно спросил Сергей. – Чего я не знаю?

– А того, что на внешних носителях принести эту заразу к нам в банк просто не могли, – сказал Костя нравоучительным тоном. – Это невозможно чисто физически. Насколько я понял, ты копался в наших компьютерах, а, значит, мог видеть их конфигурацию. Ты разве не обратил внимания на то, что у нас приводы для компакт-дисков установлены только на трех компьютерах: на моем, на компьютере главного бухгалтера и на компьютере моего системного администратора? Это первое. Второе: разъемы для флэшек у всех также заблокированы и доступны только на четырех компьютерах: на вышеперечисленных плюс еще один компьютер, отключенный от внутренней сети и от Интернета. Мы так сделали в целях безопасности. Так что, дружище, круг подозреваемых явно сужается. Я отпадаю – это мы с тобой уже обсудили, и теперь, надеюсь, этот факт у тебя сомнений не вызывает. Главбух мой, Серега, тоже исключается.

– Почему? – перебил Сергей. – Тебе, конечно, виднее, но сейчас я повторю твои слова: пока нет фактов, я бы никого не торопился исключать из числа подозреваемых.

– Потому что он туп, как пробка, – объяснил Костя. – Мне частенько приходится объяснять ему такие элементарные вещи, которые очевидны даже для выпускника экономического факультета. У моего дорогого главбуха на такую фантастическую операцию просто мозгов не хватит, это ему даже в голову не придет – в этом я уверен! Более того, в компьютерах он разбирается не лучше, чем корова в высшей математике! Я всегда считал, что это я полный профан в компьютерах. Но, как говорится, нет предела совершенству: мой любезный главбух разбирается в компьютерах еще хуже меня! К тому же, есть и третье соображение, говорящее в пользу того, что этот дебил здесь ни при чем: он труслив, как заяц и боится собственной тени. Нет, Серега, своего главного бухгалтера я напрочь исключаю. Следовательно, остается мой дорогой системный администратор, мать его за ногу! Хотя, если честно, такой расклад у меня просто в голове не укладывается! Очень трудно мне поверить в то, что это он. И вовсе не потому, что считаю его образцом порядочности и честности – вовсе нет. Мне трудно в это поверить по трем причинам. Во-первых, он не очень-то высокой квалификации сотрудник. До нас компьютерной графикой занимался в рекламном агентстве. Но как системный администратор он слабоват: для серьезных работ мы всегда нанимаем сторонние фирмы, именно потому, что подобные задачи моему дорогому сисадмину не по зубам. Во-вторых, сюда он не с улицы пришел, а его отец к нам пристроил: дело в том, что он сын одного из наших учредителей. А если точнее – главного учредителя, владеющего контрольным пакетом акций «Кора-Банка». Не станет же он грабить своего папашу! Да и к тому же характер у парня – не рисковый. И, наконец, в-третьих, как только мне стало известно о том, что нас ограбили, я, конечно, немедленно приставил к нему наблюдение: втайне и от папаши и от него самого. Причем, наблюдение такое плотное, что не дай тебе Бог! Мы фиксируем все его телефонные переговоры, отслеживаем все его перемещения, все его покупки, состояние банковского счета. Мы отслеживаем абсолютно все его контакты – даже случайные! – и все проверяем! Даже в его квартире, которую ему папочка подарил, мы прослушку установили, понял? Ты понимаешь, ЧТО это означает? Но только ничего это наблюдение не дало, абсолютно никакого результата! Парень ведет обычную жизнь, совершенно не изменил своего поведения! Но из того, что ты мне сообщил, коль скоро на этом кренделе все сходится – значит, возьмем в оборот…

– А что ты к одному своему сисадмину привязался? – с любопытством спросил Сергей. – Разве других своих программистов ты исключаешь?

– Знаешь, Серый, я теперь никого уже не исключаю, – со злостью и явным раздражением в голосе произнес Костя. – Если ты мне завтра скажешь, что этот взлом сделала моя бабушка или меня использовали «в темную» – в сложившейся ситуации я теперь даже и этого уже исключать не стану. Но мне не логические умозаключения нужны, а факты, причем, бронебойные факты, такие, от которых невозможно отпереться, которые нельзя опровергнуть! Сам подумай: если мне придется обвинять в подобном преступлении сына нашего главного учредителя, то ты что думаешь, мне за это премию дадут или путевку на Канары? К тому же, откуда я знаю: может быть, сынок вообще по заданию папаши действовал… Поэтому мне факты нужны, а не досужие рассуждения – пусть даже такого умного мужика, как ты. Поэтому ищи неопровержимые доказательства.

– Ладно, а мне что сейчас делать?

– Наблюдать, – сказал Костя. – Все-таки просмотри архивы электронной почты. И следи за работой этого вируса. Как только он снова заработает или таблицу со списком счетов изменят – сию же секунду мне звони. В любое время. Ты меня понял?

– Все понятно, – огорченно ответил Сергей. – Чувствую, что спать мне сегодня, к сожалению, не придется.

– Потом отоспишься, – нетерпеливо сказал Костя. – Если все получится – я тебя сверх обещанного еще и на неделю на отдых отправлю. Куда скажешь – туда и полетишь. Все оплачу – только найди вора и деньги. Все, до связи.

Костя повесил трубку.

Ладно, подумал Сергей. Отследить изменения и работу вируса ему было несложно. Самое нудное – это просмотреть почту. Шут с ним, вначале надо наладить контроль за работой вируса и изменением таблицы счетов, подлежавших взлому. Налажу мониторинг – и пару часиков надо поспать. Он ведь тоже не железный.

Сергей налаживал систему слежения за процессом. Закончив, он посмотрел на часы. Ого, надо же: уже четвертый час утра. Все, хватит. Сейчас, еще пара штрихов – и все сделано. Три часа на сон – и утречком, с бодрой головой начнем изучать почту этих балбесов. Хотя, чего Костя волну гонит, нет там ничего. При чем тут электронная почта? Все, не хочу больше об этом думать. Хочу спать!

Сергей скачал себе на компьютер архив электронной почты и собирался уже встать из-за стола, когда что-то на экране привлекло его внимание. Он внимательно посмотрел на монитор. Потом удивленно хмыкнул.

В банковской системе кроме него, находился кто-то еще…