How to Become a Security Researcher

How to Become a Security Researcher

Д.Колегов

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

Возможно возникает законный вопрос: зачем? Ведь разработаны подробные программы обучения (ФГОС), имеются ФОСы, а в некоторых ВУЗах даже ПОСы, специальности аккредитованы… Неужели этого мало? Неужели это не гарантирует того, что выпускник, успешно прошедший обучение, побывавший на практике, сдавший государственный экзамен и защитивший квалификационную работу автоматически станет специалистом по компьютерной безопасности?

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

И тут дело даже не в том, что в ВУЗы (например, классические) часто  оторваны от современных технологий и производства, не обладают преподавателями с опытом работы в практических подразделениях по компьютерной безопасности, не имеют необходимой материальной базы. Дело в том, что студентам не отвечают на два простых вопроса: “Зачем?” и “Как?” А отвечают лишь на вопрос: “Что?”

Зачем ему изучать конечные автоматы? чтобы моделировать простейший светофор? А зачем ему английский? Чтобы читать топики о родном ВУЗе? Зачем изучать компьютерные сети, если большинство разработчиков часто не представляют ничего кроме конкретного протокола, с которым они работают, или его API.

А если у студента первые курсы не отбили желание стать исследователем, то как ему учиться и развиваться? Неужели достаточно только самостоятельной работы студента из наспех написанных программ по дисциплинам?

При этом почти каждый год особо смелые и романтически настроенные студенты (еще несколько месяцев назад ученики 11-х классов) задают примерно один и тот же вопрос: а мы станем хакерами? Нас научат быть хакерами? И на этот вопрос следует один и тот же ответ: нет!

Безусловно все то, что дается в рамках специальностей по компьютерной безопасности важно и нужно, но есть и другой более тяжелый путь, которым идут немногие студенты. За 10 лет преподавания из 200 студентов по этому пути пошли лишь 5. Что же это за такой путь? Ничего особенного в нем нет, это всего лишь набор из 8 пунктов, которые с нашей точки зрения очень важны и должны обязательно попасть в личный план обучения студента.

Правило 1. Делайте все эффективно

Предположим поставлена цель: стать специалистом по компьютерной безопасности. Для этого нужно очень много чего изучить, прочитать, попробовать на практике. И очень важно не то, что придется делать, а будет ли это делаться вообще и как будет делаться. К сожалению сейчас проблема не отсутствие информации, а ее обилие. При этом часто используется паттерн - если я скачал что-то, то я это изучил и проработал. Ввиду того, что средний человек ограничен в ресурсах (как правило, в “мыслетопливе”, а не во времени, хотя думает, что время  - это единственное что его останавливает) возникает потребность делать это что-то эффективно. И это то, чему необходимо обучать в первую очередь. Для людей приближенных к IT существует очень хорошая методология Максима Дорофеева “Джедайские техники пустого инбокса”. Вот с них и следует начать прежде всего.

Однажды известному разработчику Ariya Hidayat задали вопрос: “What is your top 10 computer science / software engineering books that every software engineer should read ?” Ответ был следующим:

It's hard for me to formulate such a list since my understanding of software development came from a practical experience (I didn't study Computer Science). See my answer to question #21 (What prompted your transition out of your area of academic study?) for more details. Yet, if you are an aspiring software engineer and you want to push your career to the next level, here is the list of non-engineering books which I highly recommend.
Find some inspirations:
Masters of Doom (David Kushner)
Coders at Work (Peter Seibel)
Organize yourself, be super-productive:
The 7 Habits of Highly Effective People (Stephen Covey)
Gettings Things Done (David Allen)
Thinking, Fast and Slow (Daniel Kahneman)
Understand people you work with:
Drive (Daniel Pink)
Beyond Office Politics (Linda Sommer)
Communicate like a pro:
The Elements of Style (Strunk & White)
The New Articulate Executive (Granville Toogood)
Starts with Why (Simon Sinek)
I hope this list will be helpful!


Правило 2. Выучите английский язык

Предположим, Вы потрясающий хакер (исследователь, багхантер, математик, физик, ...), но вы не знаете или не знаете язык на нужном для вас уровне. Какие у вас возникают ограничения? Нельзя отправить заявку на CFP на Black Hat или Defcon, а если вы и сумеете написать тезисы и их примут, то как вы будете выступать перед многонациональной аудиторией, которая скорее всего только мечтает выучить русский язык.

Точно также возникают сложности с описанием найденных вами уязвимостей, написанием научных статей, подготовкой презентаций и т.д. 

Про то, что вся адекватная и современная техническая литература только на английском даже говорить не стоит.

Получается, что минимально приемлемый уровень знания английского языка - это тот, что позволяет вам:

  • Прочитать без словаря нужную книгу (хотя бы техническую)
  • Просмотреть и понять любое выступление на английском
  • Подготовить тезисы, статью, презентацию, описание инцидента или уязвимости
  • Создать Issue на Github.com (Gitlab.com и т.п.), задать или ответить на вопрос на StackOverflow, сообщить результаты ваших исследований в блоге, написать твит, от которого от вас не отпишутся половина подписчиков
  • Поспорить о критичности той или иной найденной вами уязвимости на HackerOne, BugCrowd или сообщить необходимые детали команде безопасности
  • Выступить самостоятельно перед англоговорящей многонациональной аудиторией на конференции с вашим выдающимся исследованием
  • Говорить так, что вас понимают
  • Вы понимаете несколько акцентов


Правило 3. Освойте языки программирования

Современный специалист компьютерной безопасности должен знать несколько языков программирования. Одним из качественных наборов языков является следующий. Во-первых, один из языков типа Python или Golang для быстрой разработки прототипов, исследовательского программирования, реализации PoC, реализации модулей пентестерских фрэймворков (Grinder, Metasploit, BeEF, Recon-ng и др.), работы с библиотеками Machine Learning.

Во-вторых, язык ECMAScript (JavaScript, node.js) как основной язык web-язык (28 февраля 2017 года на сайте Стэнфордского университета появилось сообщение о переходе в некоторых курсах с языка Java, используемого ими с 1995 г., на язык JavaScript).

В-третьих, какой-то язык со строгой типизацией (Rust, Java, C++, Golang).

В-четвертых, какой нибудь функциональный язык (Haskell, OCaml, F*).

Минимально приемлемый уровень знания языка программирования - это тот, что позволяет вам:

  • Прочитать и понять код программы
  • Реализовать свой собственный модуль для фрэймворка
  • Найти и исправить ошибку в исходном коде
  • Реализовать PoC для демонстрации наличия уязвимости
  • Разработать прототип программного средства

На момент июля 2020 года для исследователей в области криптографии обязательными языками можно считать Rust и Go.


Правило 4. Участвуйте в CTF.

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

Вероятнее всего нет (ну, просто по опыту общения с людьми, которые не занимаются ничем, кроме учебы). Где же тогда получить практические навыки “быстро, бесплатно и без рекламы”? Ведь очень хочется что-то научиться взламывать, а времени не так много, ведь очередная сессия уже скоро, а через неделю еще коллоквиум по матану :)

Однозначно нужно пробовать сначала тренироваться, а потом играть в CTF.

Capture The Flag - игры по защите информации, которые существуют в 2х вариантах:

  1. Task based - когда каждой команде предлагается набор заданий на разные категории (реверс, веб, программирование, криптография, исследование инцидентов, ...)
  2. Attack-Defence - классический формат, наиболее приближенный к реальности, когда каждой команде выдается набор сервисов и стоит задача найти в них уязвимости, исправить и эксплуатировать на таких же сервисах других команд. 

Почему это важно?

  1. Эти игры, особенно классический формат, максимально приближены к реальным условиям работы IT-специалистов.
  2. Есть возможность попробовать разные “роли”, “направления”. Ведь однозначно хороший IT-специалист - это не универсал, который может ВСЕ, ну просто потому что все уметь нереально и трудно, а это скорее человек с широким кругозором, разными навыками, но умеющий что-то делать особенно хорошо в определенной области.
  3. ИТ профессии давно ушли от стереотипа, что ит-специалист - это человек-интроверт, который ответственен за широкий круг задач от “починить принтер”, до “написать сайт”. Сейчас такой специалист - это командный игрок. И очень важно научиться работать в команде, брать на себя задачи, ответственность, выполнять их самостоятельно, но уметь взаимодействовать с командой. Важно уметь просить о помощи и уметь помогать. И такие игры - отличный способ научиться этим навыкам.
  4. Огромное количество приобретенных hard skills. Только представьте, что вот вам сегодня за 8 часов необходимо разобраться в MS DOS, иначе команда проиграет, а в следующих соревнованиях научиться писать под android. И да, может быть вы и не собираетесь быть android-разработчиком, но может быть вы захотите стать пентестером и тогда вам эти навыки обязательно понадобятся. Ну и где еще можно попробовать различные эзотерические языки, работу с контейнерами или поадминистрировать сеть?!
  5. Да, очень важно быть в курсе происходящего. А ctf - это не только игры как таковые, но и невероятно большое сообщество интересных людей из других команд и организаторов. Люди - это очень важный ресурс, которые могут вам помочь новыми знаниями, навыками, информацией, стажировками и т.д..
  6. В конце концов троечник имеющий значительные результаты в CTF более привлекателен для работодателя, чем отличник, у которого из всех достижений, это только красный диплом и ни одной пропущенной пары.

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



Правило 5. Участвуйте в Bug Bounty

Участие в программах “Bug Bounty” или “Охота за ошибками” - это уникальный фактор мотивации не только студентов, но и специалистов любого уровня. Основная идея “Bug Bounty” заключатся в следующем. Заинтересованная компания публикует условия программы, направленной на поиск уязвимостей в ее информационных системах (сервисах, программном обеспечении, исходном коде и т.п.). Исследователи, которые принимают условия этой программы ищут уязвимости, сообщают о них компании, а последняя предлагаем им bounty. Это может быть денежное вознаграждение в зависимости от критичности найденной уязвимости (известные диапазоны от 20 до 20 000 долларов США), упоминание исследователя в своем зале славы, отправка исследователю футболки и т.п.

Участвовать в таких программах считается достаточно престижным. Многие известные исследователи являются успешными багхантерами. Более того если ты не занимаешься собственными исследованиями, то тебе будет очень трудно конкурировать и находить интересные уязвимости.

На наш взгляд Bug Bounty должно являться уникальным способом мотивации. Ведь фактически здесь идет речь о быстром денежном вознаграждении за проведенные практические исследования.


Правило 6. Будьте в курсе происходящего

Вы знаете или учите языки программирования, активно участвуете в CTF, иногда ищите уязвимости в рамках программ Bug Bounty. Несколько часов назад Shadow Brokers опубликовали несколько zero day, а спустя 30 минут были опубликованы слайды с конференции BlackHat Russia. Как вы об этом узнаете? Через сколько вы об этом узнаете? Узнаете ли вообще?

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


Правило 7. Работайте каждый день  как только можете чтобы быть лучше всех хотя бы в чем-то одном

“You are your projects. As a beginner, or even as an advanced practitioner, nobody should ever ask you what you’re working on and you say, “Nothing.” Unless you’re taking a break in-between, of course.”

Собственные исследования, как правило начинаются, на 2-3 курсе университета под названием “курсовая работа”. Очень часто ее выполняют для того, чтобы отстал научный руководитель и наконец-то поставили оценку в зачетную книжку. 

Давайте перечислим, что могут дать качественные собственные исследования (речь не идет о выдающихся открытиях, номинированных на премию Алана Тьюринга):

  • Защита диссертации на первом или втором годе обучения в аспирантуре
  • Выступления на практических  (Positive Hack Days Young School, Zero Nights, Defcon, Black Hat и т.д.) и академических конференциях (SibeCrypt, RusCrypto и т.д.) по компьютерной безопасности
  • Зарабатывание денег путем применения результатов полученных исследований (обнаруженных уязвимостей, разработанных инструментов) в программах Bug Bounty
  • Получение президентских и правительственных повышенных стипендий, превосходящих заработную плату многих преподавателей ВУЗов
  • Признание и известность (попадание в Hall of Fame ведущих мировых компаний Google, Facebook, Microsoft, F5 Networks, Twitter, Yandex, MailRU)


Правило 8. Занимайтесь спортом

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

Всемирная организация здравоохранения (ВОЗ) считает недостаточную физическую активность четвертым из важнейших фактором риска, которые являются причинами смерти. По данным ВОЗ физическая инертность (недостаточная физическая активность) является четвертым по значимости фактором риска глобальной смертности (6% случаев смерти в мире). Кроме того, по оценкам, физическая инертность является основной причиной примерно 21-25% случаев рака молочной железы и толстой кишки, 27% случаев диабета и примерно 30% случаев ишемической болезни сердца.

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


Правило 9. Не делайте то, что вам не интересно или что вам не нравится

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

В настоящее время наука не приблизилась к пониманию центральных процессов, происходящих в человеке - сновидения, обучение, мотивация, восстановление - все это пока остается без ответов. Есть множество теорий, принятых моделей, ученых степеней, статей, званий, но на такой простой вопрос как “Как заинтересовать человека X в Y?” ответа нет. Нейробиолог Роберт Сапольски говорит, что в головном мозге могут произойти изменения за секунду, за день, за неделю, месяц, кардинально меняющие взгляды человека. Поэтому здесь мы можем дать лишь некоторые рекомендации, следование которым дает повод надеяться на то, что, интерес возникнет из ниоткуда:

  • Смотреть тематические фильмы и сериалы
  • Читать книги
  • Посещать конференции, митапы, группы
  • Общаться с интересными на ваш взгляд людьми

Фильмы:

  • Mr. Robot (первый сезон)
  • Бюро легенд
  • Кремниевая долина
  • Сноуден
  • Who am I?

Книги:

Правило 10. Следуйте правилам доктора Питерсона

Вот некоторые из них:

  1. Eat a protein and fat rich breakfast every day.
  2. Get up early.
  3. Do a couple of unpleasant but necessary tasks every day.
  4. Read as much as you can.
  5. Take your vacations.
  6. Take your coworkers to lunch.
  7. Work hard on expanding and maintaining your social networks.
  8. Write clearly, carefully and concisely.
  9. Buy clothes that are slightly better than you can afford.
  10. Have an updated CV on hand at all times.
  11. Learn the difference between real work and pseudo-work.
  12. Protect your time.
  13. Surround yourself with straightforward, productive people.
  14. Ask a question if you don’t know something.
  15. Object to stupid new rules.
  16. Read the “12 Rules Book”.

Литература

  1. http://blog.erratasec.com/2010/04/first-steps-to-career-in-information.html
  2. https://danielmiessler.com/blog/build-successful-infosec-career/
  3. https://github.com/ariya/ama/issues/26


Report Page