Серый, промозглый ноябрьский день навсегда врезался в память Анны бесконечной вереницей сочувственных взглядов, искусственных цветов и тяжелого, липкого запаха ладана. Она стояла у края разверстой могилы, чувствуя, как холод пронизывает тонкие подошвы черных туфель, поднимается вверх по ногам и ледяной хваткой сжимает сердце. Гроб, обитый темно-вишневым бархатом, медленно опускался вниз, и каждый сантиметр этого движения отдавался внутри нее глухим, почти физическим ударом. Вокруг шептались, плакали, кто-то сжимал ее локоть, но все звуки доносились словно сквозь толстый слой ваты, а лица расплывались в мутные пятна. Там, в этой лакированной деревянной коробке, лежал Дмитрий — ее муж, ее опора, человек, с которым она планировала встретить старость в их небольшом домике на побережье. Теперь все эти планы казались жестокой насмешкой судьбы.
Анна не плакала — ее горе было слишком глубоким для слез. Оно поселилось где-то в груди огромным, неподвижным камнем, мешая дышать, думать, существовать. Она механически принимала соболезнования, кивала в ответ на пустые слова утешения, но ее сознание отказывалось принимать реальность происходящего. Три дня назад Дмитрий уехал в короткую командировку в соседний город. Старый университетский друг, с которым он недавно возобновил общение, предложил выгодный контракт на разработку программного обеспечения. Дима, талантливый программист, недавно потерявший работу в крупной фирме, ухватился за эту возможность как за спасительную соломинку. Анна помнила его воодушевленное лицо, быстрый поцелуй на пороге и обещание вернуться через два дня. Он так и не вернулся.
В час ночи в их дверь позвонили. На пороге стояли двое мужчин в форме. Сухие, казенные слова “погиб в результате дорожно-транспортного происшествия” обрушили ее мир. Трасса, мокрая от дождя, потерявший управление грузовик, мгновенная смерть — так они сказали. Опознание проводить не рекомендовали, ссылаясь на сильные повреждения. Анне, пребывавшей в состоянии глубочайшего шока, и в голову не пришло настаивать. Она подписала какие-то бумаги, приняла какие-то вещи. Позже ей передали его телефон — разбитый, в царапинах, но каким-то чудом работающий. Она положила его в ящик прикроватной тумбочки, не в силах прикоснуться к последнему, что связывало ее с мужем.
Поминки прошли как в тумане. Коллеги Димы, старые институтские приятели, соседи — все говорили правильные слова о том, каким он был замечательным человеком. Анна сидела во главе стола, прямая, застывшая, с отсутствующим взглядом. Она почти не притронулась к еде. К десяти вечера последние гости разошлись, оставив после себя звенящую, пропитанную скорбью тишину. Квартира, еще недавно полная его смеха, его шагов, его присутствия, теперь казалась склепом. Анна бродила из комнаты в комнату, касаясь его вещей. Вот его любимая кружка с надписью “Лучшему мужу”, которую она подарила ему на годовщину. Вот книга на прикроватной тумбочке, заложенная старым билетом из кино. Вот его рабочий стол с двумя большими мониторами.
Она села в его кресло, провела рукой по холодной столешнице. И тут ее взгляд упал на ящик тумбочки. Тот самый, куда она положила его телефон. Какая-то сила заставила ее выдвинуть ящик и взять в руки поврежденный гаджет. Экран пересекала паутина трещин, уголок был сколот. Она нажала кнопку включения. Телефон завибрировал, и экран засветился. Фотография их с Димой на фоне заката — он целует ее в щеку, а она смеется. Анна почувствовала, как к горлу подступает ком, а на глазах наконец-то начинают жечь слезы.
Она провела пальцем по экрану, разблокировав телефон. Список пропущенных звонков, мессенджеры, почта. Она открыла его почтовый ящик — там были только рабочие письма и подтверждения регистрации на каких-то сайтах, которые он просматривал перед поездкой. Затем, повинуясь смутному, необъяснимому импульсу, она открыла историю браузера. Список посещенных страниц за тот роковой день. Новости, прогноз погоды, карта маршрута. А потом пошли странные запросы, датированные уже следующим днем после того, как ей сообщили о его гибели. “Как восстановить удаленные контакты”. “Блокировка сим-карты онлайн”. “Служба поддержки мессенджеров, вход без пароля”.
Сердце Анны пропустило удар. Она откинулась на спинку кресла. Кто-то пользуется телефоном Димы? Или его аккаунтами? Волна ледяного ужаса смешалась с искрой безумной, невозможной надежды. Она открыла список контактов, но он был почти пуст, лишь несколько стандартных номеров сервисных служб. Это было странно — у Димы всегда были сотни контактов. Затем она перешла в приложение онлайн-банка, которое он всегда держал на главном экране. Ярлык был на месте, но при попытке входа требовался код из СМС или отпечаток пальца. Она достала его бумажник, который ей тоже передали вместе с вещами. Нашла банковскую карту. Затем, холодея от собственной решимости, взяла свой ноутбук и вошла в их общий парольный менеджер, которым они изредка пользовались для хранения паролей от стриминговых сервисов и интернет-магазинов. К ее удивлению, там оказались сохранены данные от его основного почтового ящика.
Войдя в почту, она начала лихорадочно просматривать письма. Большинство были неинтересны, но одно, пришедшее рано утром в день, когда она его хоронила, приковало ее внимание. Оно пришло с адреса, который она не знала, и содержало всего несколько слов, заставивших кровь застыть в ее жилах: “Новый тариф активирован. Номер привязан. Услуга перенаправления сообщений подключена.”
Что за номер? Какая услуга? Дрожащими пальцами она открыла настройки аккаунта. Там, в разделе “Переадресация”, был указан новый, незнакомый ей номер телефона. Настоящий шок настиг ее, когда она увидела лог активности учетной записи. Несколько часов назад, когда она стояла на кладбище под ледяным дождем, кто-то вошел в его аккаунт из другого города. Геолокация указывала на точку в сотнях километров от места их проживания и от места аварии. Время сессии совпадало с поминальным обедом. С того же IP-адреса были отправлены запросы на восстановление доступа к его странице в социальной сети и, что самое пугающее, было отправлено несколько сообщений.
Она перешла в папку “Отправленные”. Ничего. Кто бы это ни был, он тщательно заметал следы, удаляя сообщения сразу после отправки. Но он не знал о другой, скрытой папке, которую Дима настроил давно, когда у них были проблемы с одним заказчиком, грозившим судом. По старой памяти он иногда дублировал туда важные данные. И среди этих писем она нашла черновики и копии того, что было отправлено.
Она открыла последнее сохраненное письмо и прочитала текст, от которого у нее потемнело в глазах. Сообщение было адресовано на номер, записанный в контактах как “А. Сергеев”, и гласило: “Антон, все прошло идеально. Она ничего не заподозрила. Сегодня похороны. Тело не опознавали. Деньги на счету. Как и договаривались, твоя доля. Жди перевод. С.”
Анна перечитала сообщение трижды. Буквы расплывались перед глазами. “Она ничего не заподозрила”. “Тело не опознавали”. Подписано “С”, а не “А”. Выходит, в этом участвовал не только Антон. Антон Сергеев. Тот самый старый друг, который нашел Диме этот злополучный контракт. Тот, кто звонил ему по три раза на дню в последние недели. Тот, кто стоял сегодня на похоронах с фальшивой скорбью на лице и говорил, что Дима был ему как брат.
В голове Анны с чудовищной скоростью начали складываться фрагменты мозаики, которую она раньше отказывалась видеть. Полгода назад Дима потерял престижную работу в крупной IT-компании. Сокращение штата, сказали ему. Но позже, через общих знакомых, Анна узнала, что его уволили из-за подозрений в краже корпоративных данных, подозрений, которые так и не были доказаны, но оставили пятно на его репутации. Тогда же на горизонте снова возник Антон, с которым Дима не общался со студенчества. Антон легко втерся в доверие, стал часто бывать у них дома, много говорил о совместных проектах, о том, как они вдвоем создадут стартап и заработают состояние.
За несколько недель до командировки Дима стал нервным, часто запирался в кабинете и подолгу с кем-то говорил по телефону. На вопросы Анны отвечал уклончиво — мол, готовится крупная сделка, нужно быть осторожным с информацией. Однажды она случайно услышала обрывок разговора. “Нет, Антон, это слишком рискованно… Мы не можем подставить людей… Если они узнают, нам конец”. Дима тогда резко прервал разговор, а на ее расспросы ответил, что это просто рабочие моменты.
Теперь, сидя в пустой, темной квартире, Анна начала понимать страшную правду. Это была не просто афера со страховкой. Дима и Антон не играли в шпионов-одиночек. Они, скорее всего, вышли на какую-то более крупную структуру или же пытались продать кому-то информацию, которую Дима, возможно, действительно вынес с прошлой работы. Но что-то пошло не так. Возможно, Дима начал колебаться, захотел выйти из игры. Или же Антон с самого начала планировал избавиться от него, чтобы не делить деньги. Несчастный случай был инсценировкой. В аварии никто не погибал. Погиб кто-то другой, или же тело в морге — вовсе не Дима.
Эта мысль обожгла ее. Если тела не опознавали, возможно, Дима жив. Но тогда почему он не связывается с ней? Ответ напрашивался сам собой. Сообщение “Она ничего не заподозрила” было отправлено не Антону. Она посмотрела на подпись “С”. Кто этот С.? “Деньги на счету. Как и договаривались, твоя доля. Жди перевод”. Антон — лишь исполнитель. Дима скорее всего имел дела напрямую с этим “С.”, возможно, нашел покупателя на данные в даркнете. И теперь Дима скрывается, залег на дно после инсценировки собственной смерти, чтобы уйти от ответственности, а может, от кредиторов или конкурентов. А она, Анна, была для него лишь прикрытием, частью образа добропорядочного семьянина. Ее горе, ее слезы, ее сегодняшняя сломленность — все это было просто частью спектакля, и где-то там он, вероятно, читает отчет Антона о том, как успешно прошли “похороны”.
Чувство жгучей, всепоглощающей ярости начало вытеснять из ее сердца ледяной камень горя. Она больше не была раздавленной вдовой. Она стала женщиной, которую предали самым чудовищным образом. Женщиной, у которой украли будущее, растоптали память и выставили дурой. В эту минуту старая Анна, наивная и доверчивая, умерла. В кресле, сжимая в руке разбитый телефон, рождался кто-то совершенно другой.
Первым делом она подключила телефон к своему ноутбуку и запустила программу для восстановления данных. Она искала все, что могло быть стерто в последние дни. Контакты, заметки, фотографии, данные геолокации. Программа работала медленно, а Анна тем временем взяла его старый ноутбук, которым он не пользовался уже год, но который хранился в кладовке. Она включила его и начала методично прочесывать жесткий диск. В папке “Рабочее” среди старых проектов она нашла зашифрованный файл. Название ничего не говорило, но дата последнего изменения совпадала с днем перед его “гибелью”.
Ключ к шифру. Нужен был ключ. И тут она вспомнила о менеджере паролей на своем ноутбуке. Открыв его, она пробежалась по сохраненным записям. Среди паролей от стриминга и почты нашлась одна странная запись, сделанная Димой пару месяцев назад. Вместо логина стояло слово “Сцилла”, а в поле пароля — длинная буквенно-цифровая последовательность. Анна скопировала ее и попыталась расшифровать файл. Не подошло. Тогда она попробовала ввести последовательность наоборот. Файл открылся.
Внутри была переписка, скопированная из какого-то зашифрованного мессенджера. Диалоги с двумя абонентами — Тень_01 (она поняла, что это Антон) и Харон (вероятно, загадочный С.). Она начала читать, и с каждой строчкой картина преступления становилась все яснее и страшнее. Речь шла не просто о краже кода. Они продавали за границу алгоритм шифрования, разработанный в военном ведомстве. Дима работал над этим проектом три года назад, еще до того, как перешел в IT-компанию. Оказывается, он сделал копию ключевого модуля и хранил ее все эти годы, выжидая момент.
Антон вышел на Харона — посредника, представляющего интересы иностранной разведки. Сумма сделки исчислялась миллионами долларов. Но в последний момент Дима запаниковал. Он боялся, что их вычислят, боялся, что ему не дадут спокойно уйти. Он предложил Антону инсценировать свою смерть, чтобы навсегда исчезнуть. Антон, судя по переписке, согласился, но у него был свой план. Он не хотел делить деньги. Более того, последние сообщения от Харона к Антону уже были адресованы напрямую, минуя Диму: “Первичный актив ликвидирован. Менеджер, завершите проект и получите бонус”. “Первичный актив” — это Дима. Антону заплатили за то, чтобы он убрал лишнего свидетеля. Антон не собирался инсценировать смерть Димы — он сделал ее реальной. Похороны были настоящими. Но он убедил Харона, что жена Дмитрия может быть опасна, если начнет собственное расследование, получив злополучный телефон. И Харон нехотя дал добро на ликвидацию еще одного человека.
Последнее сообщение, отправленное Антону с того самого IP-адреса, принадлежало Харону: «Жду подтверждения чистоты. Актив №2 должен быть нейтрализован в течение 24 часов. Никаких следов».
Холод прошел по спине Анны. “Актив №2” — это она. “Нейтрализован в течение 24 часов”. У нее меньше суток.
Страх накрыл ее с головой, но ярость оказалась сильнее. Они убили ее мужа, пусть и ставшего преступником, но все еще ее мужа. Они собираются убить ее. И они думают, что имеют дело с безвольной, убитой горем домохозяйкой. Но они ошиблись адресом.
Анна была не просто женой программиста. До замужества она пять лет прослужила в киберполиции, в отделе по борьбе с высокотехнологичными преступлениями. Она ушла со службы, когда вышла за Диму, желая спокойной семейной жизни. Но старые навыки, старая школа, старые связи не исчезли. Она умела не только анализировать цифровые следы, но и работать с оружием, планировать операции и, самое главное, — играть роли, которые ей назначала жизнь.
Теперь у нее было несколько часов, чтобы стать охотником, а не жертвой. Она начала действовать быстро и методично. Сначала она вошла в свой старый, законсервированный, но все еще действующий аккаунт в закрытой полицейской сети. Написала бывшему коллеге и другу, майору Олегу Князеву, короткое сообщение с просьбой проверить по базам ДТП за последнюю неделю. Ответ пришел через двадцать минут. Грузовик, столкнувшийся с машиной Дмитрия, был найден сгоревшим. Номерные знаки были крадеными. Рядом с местом аварии обнаружено тело водителя легковушки, но его личность официально не установлена. По первичному ДНК-анализу, проведенному в закрытом режиме по запросу Князева, тело не принадлежало Дмитрию. Ее муж не погиб в той аварии. Он был убит в другом месте и, скорее всего, в другое время. Опознание было фальсифицировано купленным патологоанатом. Но куда дели настоящее тело? Ответ на этот вопрос мог дать только Антон.
Анна открыла приложение для отслеживания телефона, которое они с мужем установили друг у друга в шутку много лет назад. Учетная запись Димы все еще была активна, а геолокация, как ни странно, транслировалась. Его телефон, который, по-видимому, был у Антона, находился в загородном коттеджном поселке в сорока километрах от города. Тот самый “домик друга”, о котором упоминал Антон. Там он праздновал свой успех.
План сложился в ее голове мгновенно. Она переоделась в темную, неприметную одежду. Достала из сейфа, о котором Дима даже не подозревал, свой старый, но ухоженный травматический пистолет “Оса”, переделанный под боевые патроны — сувенир с одной давней спецоперации. Проверила обойму, дослала патрон. Затем открыла программу для подмены голоса, которой пользовалась еще на службе. Создала на ноутбуке виртуальный номер, замаскировав его под технический номер банка, в котором у Антона был открыт счет. И набрала его номер.
Гудок. Еще один. На том конце послышался настороженный, но самодовольный голос Антона.
— Слушаю.
— Господин Сергеев? — произнесла Анна, и ее собственный голос, измененный программой, звучал как сухой, безэмоциональный автомат. — Вас беспокоит служба безопасности банка. Зафиксирована подозрительная активность по вашему счету. Крупное зачисление заблокировано в соответствии с протоколом по противодействию легализации доходов.
В трубке повисла пауза, а затем раздался нервный смешок.
— Какая активность? Кто это говорит? Я ничего не ждал.
— Перевод от отправителя с идентификатором “Х-Ноль” на сумму семьсот пятьдесят тысяч долларов США, — спокойно, зачитывая данные из переписки, продолжила Анна. — Для разблокировки средств вам необходимо лично явиться в отделение по месту открытия счета. Альтернативный вариант — оставить заявку через доверенное лицо. Диктуйте девятизначный код-идентификатор операции.
Антон попался на крючок. Сумма, фигурировавшая в афере, и имя отправителя, которое Анна ловко адаптировала из его же переписки, заставили его поверить. Он засуетился, начал просить подождать, говорил, что не может найти бумаги. Анна, пользуясь его замешательством, сбросила ему на телефон программу удаленного доступа, замаскированную под смс-ссылку для подтверждения операции. Как только он перешел по ней, чтобы “увидеть код”, его телефон синхронизировался с ее компьютером.
Камера его телефона показала роскошный интерьер. Камин, кожаные кресла, початая бутылка виски на столике. Рядом с бутылкой лежал знакомый разбитый телефон. Антон же, не подозревая, что за ним наблюдают, ходил по комнате, пытаясь одновременно говорить по своему новому смартфону и искать какие-то документы.
Анна отключила звонок, оборвав его на полуслове. Теперь у нее были координаты, визуальное подтверждение и полный доступ к его цифровой жизни. Она быстро скачала всю его переписку, контакты, заметки. Этого было более чем достаточно, чтобы сдать его с потрохами. Но сдать — не значит обезопасить себя. Харон и его люди не оставят ее в покое. Ее смерть заказана независимо от того, жив Антон или нет.
Решение пришло неожиданно. Нужно было заставить Антона думать, что она мертва, и одновременно заманить его в ловушку. Если Антон сообщит Харону о ее “ликвидации”, это даст ей небольшую фору по времени, чтобы исчезнуть или нанести ответный удар. Но для этого нужен был спектакль.
Поздним вечером она отправила Антону сообщение с телефона Димы, замаскированное под пересланное из мессенджера Харона. Текст был лаконичен: “Твое задание под угрозой. Объект №2, возможно, ведет расследование. Срочно проверь ее квартиру. Убедись, что она не успела скопировать данные. Действуй по обстоятельствам. Подтверждение ликвидации жду до 2:00.”
Анна была уверена, что Антон, окрыленный успехом и желанием получить оставшиеся деньги, клюнет. Он не захочет сообщать нанимателю о проблеме и захочет решить все сам, быстро…