Закон Архимеда, если верить популярной легенде, всплыл из мыльной пены в ванной древнегреческого инженера. И не он один. Герой нашего нового блога о “Профессиях будущего”, принимая ванну, придумал решение для борьбы с вредоносными ботами. Кто после этого скажет, что кодинг — это скучно?  Занимаясь исследованиями киберпреступлений и реагированиями на инциденты, специалисты Group-IB постоянно сталкивались с парадоксом: компании, чью инфраструктуру атаковали, чьи данные были слиты или чьи деньги похищены, пользовались разными средствами кибербезопасности. Но это не останавливало преступников. Опыт Group-IB позволял восстанавливать всю цепочку преступления, исследовать инструменты, тактику, мотивацию атакующих. “Используя эти знания, мы могли бы не только расследовать, что произошло, или реагировать на инцидент в режиме реального времени, но и… предотвращать киберпреступления”, — подумали  лет десять назад отцы-основатели Group-IB.  Так, если совсем кратко, начался наш путь к предикативной аналитике и разработке сложных технологий мониторинга, прогнозирования и предупреждения атак — Threat Intelligence и Fraud Protection, о которых мы недавно подробно рассказывали.  Пришло время заглянуть "под капот".  О том, что программистам делать в кибербезе, что их драйвит и какими качествами нужно блеснуть на собеседовании, рассказывает главный разраб Group-IB — Александр Батенёв.  Профайл:Имя:  Александр Батенёв.Должность: руководитель Департамента разработки Group-IB.Специализация: программирование.Возраст: 42 года.Образование: МАИ, 806 кафедра.Хобби: путешествия, ежегодно планирует длительные поездки с полным погружением в быт и историю местного населения. На его персональной карте более 28 стран. Я не знаю, зачем все пишут в описании вакансий про “горящие глаза” — глаза лучше поберечь. Лично я, когда набираю ребят к себе в команду, всегда смотрю, чтобы у кандидата присутствовали и интеллект, и энтузиазм.  Естественно без опыта и какого-то объёма техскилов, требуемых на конкретной позиции, не обойтись, но без этих двух составляющих не бывает больших результатов в IT.  Объяснение тут простое, без интеллекта нельзя делать крутые вещи, а энтузиазм — главный а, возможно, и единственный драйвер прогресса в профессии. Я не могу себе представить, чтобы сильный программист стал таковым, превозмогая себя, заставляя себя изучать новое, разбираться... Единственный вариант — любить это всё.  Потому, честно, не советую идти в IT только за деньгами, без любви к своей работе — вы всегда будете середнячком.  И это будет мучение. Если же вам интересно — это лучшая профессия на земле. Мне 42, я программирую с 11 лет и до сих пор ещё не надоело. Мне скажут: у вас много рутинных, скучных задач? Да, есть, но на то мы и айтишники, чтобы найти максимально интересное для нас решение (и пусть оно займёт чуть больше времени, чем могло бы!). Если же у вас больше половины задач это рутина, подумайте, возможно, что-то вы делаете не так или не то или... не там? ;) И тут напрашивается совет руководителям — помните, что в первую очередь вы работаете с людьми. По этому поводу я люблю фразу: крутой программист работает за деньги, но никогда не ради денег. Людям нужен драйв, чувство востребованности, команда которая добивается целей, и идея, которая вдохновляет. Идея борьбы с киберпреступностью — это то, что имеет смысл. Никогда не искал работу. Я начал программировать подростком, примерно в 11 лет (это был 1992), тогда большого выбора не было — ZX Spectrum и бейсик, но если хотелось написать что-то более-менее быстрое — ассемблер, последнее дало очень неплохое понимание архитектуры компьютеров (в базе своей мало что изменилось и по сей день). В 15 лет мама купила мне Pentium (intel) и дальше я долгое время в основном писал на Си/С++.  Когда мне говорят "что ты от человека хочешь, он ещё в институте учится?", мне это странно слышать. В 1998-99-ом, на 2-3 курсе института, я писал свой 3d-движок с реализацией минимизации полигонов, bsp пространств и т.п. Да, сейчас все пишут своих Telegram-ботов в институте, а тогда  популярно было писать простые игрушки, компиляторы придуманного языка на bison/yacc и 3d движки на directx/opengl. Первую серьезную оплачиваемую подработку мне предложил знакомый то ли на 3-ем, то ли на 4-ом курсе (ничего не изменилось за 25 лет, не так ли?), надо было определять ритм wav/mp3 семпла и раскладывать по соответствующим папкам. Да, сейчас всё есть готовое, а тогда не было ничего. Ну а дальше через эту подработку я попал в "стартап" (хотя такого слова тогда не было) и, как мне казалось, стал зарабатывать "большие бабки", больше родителей! Притом работе не помешала даже армия, в которую я, как очень правильный мальчик, пошёл после института, на 2 года, офицером, конечно, и потому у меня было достаточно много свободного времени. В какой-то момент нашему стартапу достался проект от одной крупной компании, её руководству так понравился результат, что по окончанию проекта она нас всех просто позвала к себе в штат на более выгодных условиях. Проще говоря, купила стартап целиком. Да, в то время я поглядывал на заработки в индустрии и на проекты, и даже ходил на собеседования ради интереса, но оказалось, что у меня и проект интересный, и зарплата в рынке. Став менеджером, я понимаю, что с хорошими программистами так всегда — их практически нет на рынке, они редко ищут работу, им  всегда её предлагают, причем на хороших условиях.  С Ильей Сачковым я встретился в баре. У нас был один общий друг, который познакомил нас, и в тот вечер  Илья позвал меня в Group-IB. Тогда он мне “продал” не работу в Group-IB, не должность, да я и не знал компанию совсем. Он “продал” мне себя — умного, энергичного, целеустремлённого и при этом честного человека, с которым просто хотелось общаться, и работать вместе. Я до сих пор помню ту нашу встречу, через месяц, после которой я вышел на работу в Group-IB.  Это было 13 июня 2011 года, как позже оказалось, ровно в День рождения Ильи — ему исполнилось 25 лет. В Group-IB мощная энергетика от основателей.  Было видно, что и Илья Сачков, и Дима Волков  — очень целеустремленные люди и с решениями не тормозят. Компания тогда была небольшой, человек 20-25 (большинство из них работают до сих пор, руководят международными офисами и департаментами), но она была хорошо известна в узких кругах — своими расследованиями компьютерных преступлений и цифровой криминалистикой. На тот момент в Group-IB  практически не было разработчиков, но несколько энергичных студентов пытались сделать всё и сразу, нагенерив массу  proof of concept. Я начал формировать свою команду в "лучших традициях", переманив самого сильного программиста из моей бывшей компании. Каюсь, нехорошо, но он и по сей день работает в Group-IB и является моим замом. Сейчас наша разработка  — это больше сотни людей и несколько проектных команд.  Fraud Protection, Threat Intelligence, Digital Risk Protection — эти и многие другие наши решения — защищают сотни миллионов клиентов по всему миру от Бразилии до Австралии, обрабатывая гигабайты информации в секунду на серверах расположенных в 9 странах мира, в различных регионах планеты. Для бизнеса это продукты, но для программистов это реализация их потенциала в высоконагруженных, кластерных (сотни серверов kubernetes!) масштабируемых решениях, которые при этом приносят ощутимую пользу в борьбе с киберзлом. Людей очень просто обмануть. Киберпреступникам на самом деле не всегда нужны сложные схемы, чтобы выудить деньги у пользователей. Когда я первый раз столкнулся с  фишингом, удивился, что в сообщении  было прямым текстом написано — "пришлите нам данные вашей карты, потом сообщите код”. На мой вопрос, кто ж на такое купится, наш руководитель Центра реагирования на инциденты информационной безопасности (CERT-GIB) улыбнулся и ответил, что за те два часа, пока этот ресурс был онлайн, мошенники собрали почти $10 000 с доверчивых людей. Для меня это было просто шокирующим откровением,  но самое печальное, что годы идут, а ничего не меняется. Сейчас скамеры так же постят под фейковым видео Илона Маска ссылку на криптокошельки и обещают удвоить вложения  — пришли один эфир, а тебе якобы скинут два. И многие верят.  Не ведитесь! Если что мои коллеги собрали  все актуальные примеры мошеннических схем в нашем проекте — Scamopedia, посмотрите.  Если людей развели, значит они сами виноваты?  К сожалению, в среде инженеров бытует и такое мнение, что печально. Надо отбросить "корону" и понять, что именно мы, айтишники, обязаны сделать эту среду безопасной для людей, которые в этом совершенно не разбираются и, что важно, и не должны разбираться. Смеясь над незнанием других людей в IT, надо помнить, что так же над вами может смеяться повар, если вы не умеете готовить, однако любите вкусно есть, автомеханик, если вы любите погонять, но не умеете чинить автомобиль, лётчик, если вы так любите путешествовать, но понятия не имеете как пилотировать самолёт.  Пользователь должен делать все, что ему в голову взбредет с сайтом интернет-магазина или мобильным приложением банка и оставаться в безопасности. Ещё в начале моей работы в Group-IB, когда были очень популярны антивирусы на рынке, у Ильи и Димы уже было понимание, что воевать на стороне клиента — провальный сценарий, это уже последний бастион. Нужна новая концепция защиты:  за любым преступлением стоит конкретный человек, который совершает киберпреступление и наносит вред людям, бизнесу, государствам своими разрушительными действиями, инструментами, тактикой, ведомый различными типами мотивации (финансовая выгода, дестабилизация, шпионаж, терроризм). И именно он, атакующий, должен стать целью системы защиты, именно его Group-IB и будет останавливать до того, как он проник на компьютер потенциальной жертвы, а в идеале, когда он ещё только готовится, исследует возможности, разворачивает свою инфраструктуру. Это мы и стали делать. И не надо для этого мучить клиентов, заставляя их ставить и настраивать какие сложные программы или железо в свою инфраструктуру. В итоге, решение этой задачки и вылилось  в стек наших продуктов, нацеленных на предотвращение кибератак. Но это звучит просто, а на деле нам потребовались годы, чтобы создать адаптивные технологии, позволяющие остановить атакующего до того, как он совершит преступление.   Несколько лет назад наше решение уберегло сотни компаний в России от потери денег. Один из наших проектов собирает действия пользователей на защищаемом сайте и любые изменения клиентского окружения, преданализирует и отправляет на сервера для дальнейшего глубокого анализа. Кроме прочего, он собирает подозрительные javascript'ы. Однажды, один человек из глубинки, который всё делал правильно, через 2 анонимных vpn'а и "правильные" браузеры тестировал свой скрипт-инжект на сайте потенциальной жертвы (одного из банков) в течение пары недель. Cкрипт был оригинальный, он не просто подменял счёт назначения денег при переводе, а ещё и пытался запутать жертву, чтобы та не сразу поняла, что её обокрали. Однажды этот человек зашёл на этот сайт без vpn, почистив куки и отключив некоторые плагины, он не делал ничего плохого и вёл себя как обычный пользователь, ввёл логин и пароль настоящего пользователя — себя. Но по косвенным признакам окружения это был тот же компьютер. На тот момент у нас был уже практически git-репозитарий изменений его скрипта, скрипт был отсигнатурен и на него были настроены алерты. Это был тогда ещё редкий случай, когда мы нашли конкретного человека, который написал и впоследствии внедрил инжект ещё до того, как от него пострадали люди, сейчас подобная работа ведётся регулярно.  Бизнес Group-IB начинался с расследований и компьютерной криминалистики — в этом наша сила. И в уникальной коллекции данных.  Как это все было, например, в 2014? Произошел инцидент, компьютер главбуха заразили трояном и вывели со счета фирмы деньги. Криминалисты из нашей Лаборатории выезжали на место, брали логи и “руками” смотрели-разбирали, что случилось. После этих исследований у нас оставались массивы ценных данных. Если хакер засветил свой ник, email, IP, или много других параметров, надо было посмотреть, где он еще мелькал. Благодаря этим исследованиям появились паттерны: как, чем и кого атакуют, какую инфраструктуру используют. Так мы стали собирать атрибуты, паттерны используемые ресурсы, данные об инфраструктуре, хранить историю и систематизировать всю эту информацию. Потом аппетит увеличился и мы стали собирать информацию не только по уже произошедшим эпизодам, но и всю, что потенциально может помочь в подобных расследованиях. Мы начали хранить всё и "натравливать" на эти массивы разные аналитические алгоритмы, что уже начало давать результаты. Украсть деньги так, чтобы совсем не оставить следов, теоретически, возможно. Другое дело, что киберпреступник, который способен на это, не родился и не жил в вакууме. А, значит, он не стремился всегда заметать свои следы. Он рос, развивался, писал какие-то скрипты, оставлял комментарии на форумах, всё это время он оставлял свои данные в различных источниках. Ему, например, в 15 лет нравился ник Sancho-Puncho. И он регистрировал сайты с доменами в которых есть Sancho-Puncho или использовал это как ник. Такие артефакты остаются в интернете... навсегда! И если их много лет собирать, то рано или поздно случится так, что хакер Sancho-Puncho, который правильно выбрал анонимный VPN, правильно настроил сетевой стек и все роутинги, правильно выбрал и настроил браузер… попался.  Как так? Он же вроде бы не оставил следов во время атаки? Так и есть, однако он оставил их в истории... Наша система Group-IB Threat Intelligence  (Киберразведка)  — это такой огромный ненасытный хаб, который собирает и хранит огромное количество информации:  фиды, хэши, утёкшие карты, аккаунты, фишинг под их ресурсы, информацию с закрытых форумов, индикаторы атак и многое другое. Можно не просто смотреть данные, но и строить по ним связи, находя иногда очень интересные зависимости. И человек, который пять лет назад выпустился из вуза, и тогда еще ничего не воровал, уже пользовался почтой, WhatsApp, “ВКонтакте”, Facebook, Instagram... И мы это запомнили. А вот как именно компактно запомнить и эффективно искать —  это уже хороший вызов для толковых технарей. Сила продуктов Group-IB в нашей экосистеме. Технологически можно повторить каждый из продуктов, но все они работают у нас не сами по себе, а являются частью экосистемы, они органично дополняют друг друга и остальную традиционную работу. Данные размечаются на основании реальных расследований и реагирования на инциденты, которых уже тысячи. Это именно то, что не хватает другим средствам защиты, которые как обходили, так и обходят. Как шифровали шифровальщики критические данные, так и продолжают. Разве у этих компаний не стоят системы защиты? Стоят, только не те... Интернет на самом деле не такой уж и большой. Активных доменов в нем на данный момент порядка 300 миллионов. Не очень большой порядок по нынешним меркам скоростей и компьютеров. Допустим, мы сканируем открытые порты, и один сервер может проверить за одну секунду несколько тысяч адресов, получается, что сотня серверов может проверить сотни тысяч, а их всего в тысячу раз больше. Несложно посчитать, что один цикл опроса всех адресов в интернете займёт пару часов. Наша Threat Intelligence ежедневно сканирует все IPv4 пространство (считай весь Интернет), что позволяет оперативно предупреждать клиентов о возможных угрозах. Конечно, хочется узнать много больше и собрать работающие сервисы, а может и что-то ещё из этих сервисов… Такой скан может занимать неделю. Потом это всё ещё надо как-то сохранить, чтобы с этим объёмом можно было удобно работать. Да, все сложно, но в этом и кроется интерес нашей работы.   Идею для антифрода нам подсказали веб-инжекты, один из популярных ранее векторов атак на интернет-банкинг. Представьте ситуацию. Бухгалтер фирмы целый год сидел с двух айпишников в Москве, а тут вдруг оказался в Нью-Йорке или вышел из-под TOR и начал переводить круглые суммы на левые счета. Или клиент переводит деньги через мобильный банк, в то время, как его телефон лежит экраном в стол и даже заблокирован. Можно ли распознать мошенников? Да, можно. При каждом входе в личный кабинет интернет-банка или интернет-магазина наша система Fraud Protection внимательно анализирует “окружение”  посетителя (например, какая у него видеокарта, какие приложения открыты...) и его действия (как двигает мышкой, какие любит открывать окна браузера, с какой скоростью и как набирает текст). При этом системе не нужны личные или персональные данные (логины-пароли, данные карты). Она ничего не блочит и вообще не вмешивается в работу сайта или приложения. Мы просто анализируем ситуацию и сигнализируем о наших подозрениях, ну или 100% проблемах, клиенту. Сейчас эта технология защищает 300 млн клиентов банков по всему миру, о ней недавно рассказывал мой коллега Зафар Астанов.  Выборка по нескольким артефактам покажет, что из 100 миллионов человек, уникальными оказываются очень небольшое количество людей, а зачастую — один. Смешной пример был сразу же на старте разработки Fraud Protection, оказалось, что только один пользователь одного из больших банков из числа наших клиентов “сидел” на Arch Linux с определённой видеокартой. И это был наш админ. То есть зачастую не надо много параметров и уж тем более кук, чтобы идентифицировать пользователя. Может показаться, что, если у вас Windows и популярная графическая карта, то эти параметры не будут иметь большого веса и это правда, однако в сочетании с монитором и/или bluetooth-мышкой может опять оказаться, что вы такой один-единственный.  Скажу честно, раньше я довольно скептически оценивал возможность определять людей по клавиатурному набору. Все эти параметры, типа: скорости печати, интервалы между нажатиями, ошибки, переходы от одной до другой клавиши — разве можно по ним точно определить, кто из миллионов людей сейчас сидит за клавиатурой? Оказалось, можно.  Мои ребята, занимающиеся ML-алгоритмами, реализовали решение, которое очень точно определяло одного человека из нескольких миллионов по параметрам набора слова из 10-12 символов, вот уже несколько лет подобный алгоритм отлично работает в продакшене. Сейчас мы интегрируемся не только с порталами, Интернет-банкингом, сайтами, но и с мобильными приложениями, а там развернуться с артефактами можно ещё лучше.  Толковая идея может догнать тебя в самом неожиданном месте, например, в ванной.  Пару лет назад на нас вышел один известный сервис бронирования. Их одолели боты, которые скрейпили цены на отели. Для понимания. Есть «хорошие боты», к которым относятся, например, программы индексации сайтов, а есть вредоносные боты, которые создают спам-заказы, «скликивают» рекламные объявления, «сжигая» рекламный бюджет, собирают информацию о пользователях той или иной кредитной организации или магазина. У нас был неожиданный конф-колл с технарями клиента и он застал меня в ванной (я бы никогда этого не рассказал, но PR-щики наши меня заставили), тогда мы прямо на ходу придумали концептуально новое решение, как бороться с ботами. Насколько я помню, клиент тогда отвалился, но мы решили таки реализовать эту идею и так в Fraud Protection появился модуль Preventive Proxy, который останавливает вредоносную бот-активность. Сейчас он давно и успешно используется нашими клиентами. Круто оглядываться назад и видеть, что ты построил. А если ты часто меняешь работы,  ты, вроде, как в деньгах растешь, учишься находить лучшие вакансии, скиллы прокачиваешь. При этом у тебя за спиной зачастую нет ничего значимого, грандиозного, чтобы ты построил — потому что “срок жизни” твоих рабочих проектов очень короткий.  Мне надо, чтобы все было идеально. То, что идеально не бывает, я тоже понимаю — я уже достаточно взрослый человек, тем более, что программирование быстро этому учит.  Но ты должен стремиться. Те, кто искренне хотят делать лучше, у них и получается.  Плохо, когда для  молодых руководителей "руковождение" — самоцель. Они путают цели команды и проекта со своими личными амбициями, забывая, что команда набрана не для того, чтобы удовлетворять пожелания руководителя. Естественный же путь руководителя идёт через принятие на себя сначала большей работы, потом вместе с работой растёт и большая ответственность. Потом к ним присоединяется доверие со стороны коллег и начальства и, как результат, вы и начинаете рулить всем процессом. Так стали руководителями все главы наших технических подразделений — все они в своё время просто больше всех работали и им было больше всех не наплевать на результат. С такими людьми очень приятно общаться, они всегда тебе скажут, как есть на самом деле, а не как ты хотел бы услышать, они не будут капризничать, конфликтовать и интриговать, с такими людьми всегда можно найти решение любой проблемы. Собственно именно на них и держится каркас нашей компании. Однажды я был шокирован так, что помню до сих пор. Это научило меня не ожидать даже от крупных компаний слишком многого в плане безопасности. В одном очень известном банке на пилоте не заработало наше решение. Оказалось, что наш SSL-сертификат считался их клиентом (прокси) недействительным, а вернее — неподтвержденным вышестоящими рутовыми сертификатами. Когда мы приехали, посмотрели, как же так получилось, выяснилось, что рут-сертификаты у них давно “протухли” и не обновлялись неприличное количество времени. Вдумайтесь: они не ставили обновления на банковский сервер, который имеет выход в интернет в течение как минимум года! Я спросил об этом админа уже после того, как мы точечно обновили только нужный нам сертификат, и после того, как я похвалил его перед начальством за то, что мы быстро нашли общий язык (типичный менеджерский булшит), он честно сказал мне: «Да, мы как-то обновились и все сломалось, ну нафиг, пока работает — руками не трогай». Если об этом узнал кто-нибудь другой, он мог бы просто прогуглить "дырки". И, скорее всего, кто-то их уже" прогуглил", просто повезло, что не нашёлся тот, кто использовал это во зло.   Упорство и умение работать в команде выходят на первый план, когда нужно создать что-то действительно сложное. Я частенько вижу на собеседованиях  толковых ребят, которые из-за неумения находить общий язык и идти на компромиссы так и остаются в рамках задач, которые они могут решить в одиночку, вместо того, чтобы в команде заниматься более амбициозными задачами. Идея не стоит ничего, реализация — вот, где реальная ценность. Конечно, это преувеличение, просто многие демотивируют программистов, приходя и спрашивая, что-то вроде: почему вы не сделали то-то, это ведь так круто было бы? Сделать можно почти все. Более того, вы только спросите, и мы, программисты, сами выдадим вам в сто раз больше идей, что было бы круто сделать. Вопрос-то в реализации. Всегда приходится выбирать, что делать и от чего отказаться. Однако есть и обратная проблема. Часто люди, которые не сильно разбираются в разработке, не предлагают действительно интересных идей, потому что считают, что их очень сложно осуществить. Они делают такие выводы на основании своего понимания, как пишутся и работают программы, а, зачастую, это понимание очень далеко от реальности. Так что, если хотите совет — придумывайте побольше идей! Но старайтесь облекать их в менее конфликтные формы подачи. Ну, а чтобы побольше крутых идей реализовывалось — приводите к нам ваших знакомых крутых прогеров! Мы ищем таких. Хотите знать больше о работе программистов в кибербезе, как устроен найм и как готовиться к собеседованию? Не забудьте тогда посмотреть выпуск видеоподкаста “Разрабы” с участием Александра Батенёва.  Нужно больше информации? Подпишитесь на остросюжетный Telegram-канал Group-IB об информационной безопасности, хакерах, APT, кибератаках, мошенниках и пиратах. Расследования по шагам, практические кейсы с применением технологий Group-IB и рекомендации, как не стать жертвой. Подключайтесь!