Ленинград, 1967-й. В городе на Неве одна за другой гибнут женщины. Преступления совершаются ночью, в мрачных переулках у Обводного канала. Убийца не просто лишает жизни — он оставляет после себя странные послания, символы, начертанные углем на брусчатке или стенах. Дело поручают двум совершенно разным следователям.
Со стороны КГБ расследование ведет майор Чубин. Он человек с тяжёлым прошлым. Несколько лет назад он столкнулся с делом, связанным с оккультной сектой. Та история не была раскрыта до конца и едва не стоила ему жизни. Теперь Чубин боится темноты, а его сон тревожат воспоминания о собственной ошибке, приведшей к гибели человека. Он одержим идеей поймать преступника, чтобы искупить старую вину.
Его партнёром становится капитан милиции Фёдоров. Он вырос из обычного постового, знает город и его жителей. Но и у него не всё просто. Фёдоров тайно влюблён в жену своего самого близкого друга. Это чувство он тщательно скрывает, что лишь усиливает внутреннее напряжение. Практичный и прямолинейный, он поначалу скептически относится к мистическому следу в деле, предпочитая искать земные мотивы.
Руководство требует результатов немедленно. Давление на дуэт следователей колоссальное: город в панике, слухи растут. Чубин, изучая зловещие знаки, всё больше склоняется к мысли, что имеет дело не с обычным маньяком, а с кем-то, кто следует некоему ритуалу. Его опыт с сектой даёт тревожные подсказки. Фёдоров же методично прочёсывает район, опрашивает свидетелей, ищет закономерности в образе жизни жертв.
Им приходится объединить свои методы — интуицию и анализ, работу с уликами и погружение в мрачную символику. Каждая ночь грозит стать ночью нового преступления. Их задача — опередить убийцу, расшифровать его послания и остановить его, пока страх не парализовал весь город. От их действий зависят не только жизни будущих жертв, но и их собственное душевное равновесие, балансирующее на грани срыва.