Статья Как стать ниндзей

higaru

HDD-drive
Пользователь
Регистрация
31.01.2012
Сообщения
47
Оценка реакций
3
Баллы
13
Предисловие переводчика
VRT - это подразделение Sourcefire, которое занимается поиском зиродеев и написанием под них сигнатур для снорта. Довольно давно на их блоге была хорошая статья на тему с чего начать в эксплойтинге. Ниже будет её перевод. Она написана в довольно шутливом тоне и довольно легко читается, но это мой первый опыт в переводах (читать то читаю легко), так что за исправление косяков в тексте поблагадарю.

-------------------

How do I become a Ninja?

Ранее мы опубликовали на блоге пост — Задайте вопрос VRT. Несколько человек написали нам и задали вопросы, относящиеся к Snort`у. Но далее случилось кое что интересное. Некто под ником mish спросил - «Как мне стать Ниндзей?» (Его вопрос был несколько длинее и конечно мы подразумеваем «Ниндзя - иследователь уязвимостей»).

Мы задали этот вопрос нескольким людям из VRT и по видимому нажали на горячую кнопку нашего старшего директора группы исследования уязвимостей — Matt Watchinski. Далее следует его манифест в ответ на вопрос mish`а:

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

2. Чтение книг без попыток перевести информацию из них в практические знания не сделает из вас ниндзю. Только опыт делает ниндзю тем, чем он является. Сидение в библиотеке не даст ничего полезного. Как только вы исправите свой образ мышления на первый план выходят технические навыки.

3. Главное в технических навыках это то, что вам не надо быть мастером ни в одном из них, но вам надо быть мастером в поиске мест, где эта информация находится когда она вам нужна.

4. Возьмите себе старую RedHat без PAX/AppArmor/и тд, убедитесь, что рандомизация стека выключена и скачайте все уроки ABO`s from Gera ( http://community.corest.com/~gera/InsecureProgramming/ ). Начните работать над простыми примерами переполнения буфера. Если вы застряните — все ответы находятся в гугле (но не мошенничайте, оно того не стоит).

5. После этого вы будете ненавидеть GDB. Настало время перейти к настоящему отладчику. Возьмите виртуалку с Windows XP (без сервис пака) или с Windows 2000 с любым сервис паком (к слову, VMWare — великая вещь). Начните работать с AWBO ( http://www.snort.org/vrt/tools/awbo.html ). Там будет все, вплоть до эксплуатации уязвимости через seh на Windows. Никто не ожидает, что после завершения изучения этих примеров вы станете мастером в эксплойтах, но все базовые вещи должны быть освоены. Дополнительно, к этому моменту вы наверное прочтете все документы по теме переполнений, которые можно найти через гугл. Также вы должны уже свободно владеть WinDbg, OllyDbg или ImmunityDebugger (WinDbg круче) и к сожалению GDB, худшим отладчиком на планете.

6. Теперь пришло время попробовать немного code auditing. Простейший путь — провести аудит на предмет известных уязвимостей. Лучший пример работы этого типа здесь http://xorl.wordpress.com/category/bugs/ . Начните делать точно то, что делает этот парень. Также пришло время скачать C99 стандарт и прочитать его. Также неплохо скачать мануалы интела. После аудита нескольких сотен программ вы будете относительно фамильярны с паттернами Си и других языков, которые приводят к ошибкам. На самом деле весь code audit заключается в поиске паттернов, тк реальное программное обеспечение очень большое и способность быстро находить опасные шаблоны очень важна, так как позволяет вам пропустить тонны говно кода и сфокусироваться только на интересных кусках.

7. Теперь наступило время начать использовать другие инструменты. По моему мнению лучшее с чего можно начать это фаззеры, чтото типа FileFuzz от iDefense (http://packetstormsecurity.org/files/39626/FileFuzz.zip.html ). Также посмотрите на Sully и Peach. Запустите кучу виртуальных машин с различными программами и фаззьте их в фонновом режиме, пока изучаете другие вещи. В конце концов вы возненавидите эти инструменты так сильно, что у вас появится идея переписать их с нуля. Поддайтесь этой идее и начните писать простейший файловый фаззер. Но учитесь ненавидеть Sully/Peach и работать с ними одновременно, так как написание подобного инструмента с нуля займет кучу времени и вы забудете много всего написать по пути. Однако вы можете полюбить питон в процессе, правда не уверен хорошо это или плохо =).

8. Надеюсь к этому моменту вы получили несколько падений от своих фаззеров. Пришло время начать читать RFC, документацию на протоколы, форматы файлов и всего прочего, что имеет отношение к падению. Также это время купить IDA Pro (прим. переводчика — или скачать =)). Работайте над созданием надежного тест кейза (при. переводчика — минимально необходимого и надежного триггера падения) для вашего падения, чтобы точно понять, что происходит. Это искусство и нет более надежного способа обучится этому, чем отладка бинарных приложений без исходников, но это требует кучи проб и ошибок. В этот момент вы встанете над пропастью алкоголизма, так как будете биться головой о проблемы, которые не можете понять и из-за этого прикладываться к бутылке, чтобы унять боль. Настало время найти поддержку, не для алкоголизма, но для вашей проблемы. Алкоголизм — это нормально (не совсем). Если вы действительно хороши в эксплойтах, вам нужен алкоголь, чтобы прожить день, так как вы понимаете, что каждый инструмент и приложение, которое ты запускаешь содержит громадное количество уязвимостей, которые можно использовать, чтобы поиметь компьютер. Также если в процессе обучения вы писали себе инструменты вы найдете в них ошибки, так как большинство ниндзь в процессе обучения — хреновые кодеры (иногда настоящие ниндзя продолжают быть хреновыми кодерами) (заметка редактора — точнее они все хреновые кодеры).

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

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

11. Если вы выбрали путь работы на кого-то, то у вас есть возможность для специализации. Это хорошо, так как вам будет нужно писать новые тулзы и разрабатывать новые техники если вы выберите направление где нет публично доступной информации. К примеру возьмем реверсинг приложений под vxWorks. Ничего полезного об этом нигде нет. Прости, Matasano, но твой единственный пост в блоге на эту тему не считается и возможно нарушает что-то в DMCA, так что я не могу дать ссылку на него здесь.

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

Оригинал : http://vrt-blog.snort.org/2009/07/how-do-i-become-ninja.html
Перевод : higaru
 

Darkmist

HDD-drive
Пользователь
Регистрация
16.02.2008
Сообщения
40
Оценка реакций
0
Баллы
13
вот такие должны быть статьи!!

+
 

shyrka

RAID-массив
Пользователь
Регистрация
30.03.2011
Сообщения
50
Оценка реакций
0
Баллы
13
Статья супер !! Респект тебе за перевод!!
 

12309

(L3) cache
Пользователь
Регистрация
06.07.2011
Сообщения
151
Оценка реакций
3
Баллы
18
круто, спасибо.
3. Главное в технических навыках это то, что вам не надо быть мастером ни в одном из них, но вам надо быть мастером в поиске мест, где эта информация находится когда она вам нужна.
нам препод по физике в инсте так же говорил :)
типа "инженер не должен помнить формулу наизусть, но он должен помнить наизусть, на какой странице справочника эту формулу можно найти"
 

Mr._Zed

HDD-drive
Пользователь
Регистрация
23.05.2011
Сообщения
29
Оценка реакций
0
Баллы
8
>>Лучший путь о котором я когда нибудь слышал, приводящим к этому - «Будьте злым». :D
Респект - получилось очень занимательно )
 

Indy

RAID-массив
Пользователь
Регистрация
14.07.2011
Сообщения
74
Оценка реакций
0
Баллы
13
нам препод по физике в инсте так же говорил
У нас младший научный сотрудник грузчиком работает(оказалось что все эти эйнштейны, экономики прочая погань никому не нужна), ну и что с того ?
 

Barack

RAM
Пользователь
Регистрация
28.03.2011
Сообщения
129
Оценка реакций
0
Баллы
18
норм статья :punk:
p.s. только не показывайте ее Владику :fie:
 

higaru

HDD-drive
Пользователь
Регистрация
31.01.2012
Сообщения
47
Оценка реакций
3
Баллы
13
Indy
Инди, у вас какая-то страсть цеплятся не к смыслу, а к частностям, что не дает ничего нового, кроме инфы о ваших тараканах. В не зависимости от того, кто так говорит это правильно. Проблемы младших научных сотрудников - только их проблемы.

2ALL

Спасибо всем за отзывы. Хотел добавить несколко своих хинтов, но не успел:

1) ABO`s from Gera прекрасно компилятся под виндой (кроме части про сигналы и гуардед стек), так что вполне можно пропустить знакомство с гдб (ещё та бяка).
2) В части про аудит исходников я немного не согласен, в реалиях винды надо сразу уходить в реверсинг бинарей и разбирать старые сплойты с exploit-db. Для многих сплойтов к известным программам и багам в винде можно найти подробные анализы в интернетах (так же не забываем про китайские источники, там зачастую более полные обзоры уязвимостей можно встретить, гугл транслейт в помощь).
3) ВинДбг крут конечно, но не удобен для анализа без исходников. Связка ВинДбг+Ида крута, но довольна тяжела, но в некоторых случаях очень сподручна + используется иммунити, тк имеет довольно удобный скриптовый интерфейс и более шутра чем ида+виндбг.
4) Очень крутая подборка практически всех значимых статей про эксплойты http://code.google.com/p/it-sec-catalog/wiki/Exploitation
5) Да и читайте доки с конференций, к примеру от того же Аарона Портного из ZDI довольно хорошие доклады есть с интересными подходами к реверсу.
 

Vladik

HDD-drive
Пользователь
Регистрация
09.08.2005
Сообщения
46
Оценка реакций
1
Баллы
13
норм статья 
p.s. только не показывайте ее Владику
Почему мне не показывать ? :D

Я уже успел её прочитать и узнал для себя пару полезных вещей. (правда тех о чем мне уже говорили , проосто еще раз убедился в них)
Насчет того что недостаточно читать просто книги , надо еще проверять все это на практике это поидее любой знает , но вот у меня был случай что у меня есть друг который пошел учится в университет на программиста (он через пару месяцев бросил , но это не важно и сам он в компьютерах не особо понимает , это я уже понял по разговору с ним) , так вот я ему говорил что начал сам языки программирования учить , методы взлома , вобщем хочу стать хакером. Так он у меня спросил , могу ли я написать калькулятор , я ему ответил что калькулятор это херня , я еще не учил с++ который ты начал учить , зато я сайт могу построить , а калькулятор найду где то в интернете как делается , так он меня прогрузил что типо если я сам не могу написать калькулятор )) то мне незачем дальше учиться. И я вообще должен все сам напамять писать , тогда у меня что то получится. Он мне настолько это повтирал что я в это поверил и уже думал что надо будет все что я выучил заного переучивать чтобы зазубрить , а тут вдруг статья которая облегчила мне жизнь в которой написано что не обязательно знать все на память , достаточно знать где все это найти когда вам это понадобится. Вобщем статья очень обрадовала. Я потом спал спокойно)
(Скрыл чтобы небыло написано мое сообщение на пол страницы, если бы можно было без количествы сообщений скрывать я бы так скрыл)
Спасибо за статью.
 
  • Like
Реакции: Nil$

demien

(L2) cache
Пользователь
Регистрация
29.09.2008
Сообщения
496
Оценка реакций
4
Баллы
18
2higaru молодец!
то что опыт это наше все, основная мысль статьи лишний раз доказывает мою точку зрения ;)

2Barack
p.s. только не показывайте ее Владику
по предыдущим его постам оч хорошо понимаю суть вашего предупреждения :D

2Vladik
Почему мне не показывать ?

Я уже успел её прочитать и узнал для себя пару полезных вещей. (правда тех о чем мне уже говорили , проосто еще раз убедился в них)
потому что до поиска уязвимостей в приложениях тебе еще оч далеко, сначала выкури советы с https://xss.is/index.php?topic=22435 :P
 

higaru

HDD-drive
Пользователь
Регистрация
31.01.2012
Сообщения
47
Оценка реакций
3
Баллы
13
demien
о сколько парился над тем, что инфа улетучивалась из быстрой памяти =) но уже понял, что это не страшно в конце концов =) Главное общая шаристость и опыт))
 

demien

(L2) cache
Пользователь
Регистрация
29.09.2008
Сообщения
496
Оценка реакций
4
Баллы
18
главное чтобы на eip шеллкод попадал после переполнения) а дойти до этого не так уж и просто бывает ;(
 

higaru

HDD-drive
Пользователь
Регистрация
31.01.2012
Сообщения
47
Оценка реакций
3
Баллы
13
demien
да все писатели запускателей блокнотов это знают или догадываюся )
 

rtkm

(L3) cache
Пользователь
Регистрация
16.01.2013
Сообщения
160
Оценка реакций
48
Баллы
30
Классное чтиво :)
Рекспект.
Думаю будет интересно почитать :)
 

pixe1

HDD-drive
Пользователь
Регистрация
30.08.2014
Сообщения
30
Оценка реакций
36
Баллы
26
да статья в кой то мере отражает реальность
 
  • Like
Реакции: rtkm

Quake3

генератор Зла
Модератор
Регистрация
03.11.2010
Сообщения
700
Оценка реакций
280
Баллы
71
Лично мне Виндбг не удобен, но мб я просто не умею им пользоваться.
По теме - для разработки эксплоитов надо очень много чего изучить, прочитать, попробовать, выпить, и так далее. Огромный объем инфы, которого как бы меньше не становится из-за развития вайтхетов и индустрии в целом.
 

Dark Koder

(L2) cache
Пользователь
Регистрация
21.03.2010
Сообщения
362
Оценка реакций
109
Баллы
30
статья просто отличная, и действительно отражает реалии с той точки зрения, как есть но...
если бы в момент обучения или чтения падаваны штудировали правильно (или им бы правильно тыкнули носом) в четкой последовательности что и за чем идёт (дада, методология!) + практика = не нужно прыгать как в статье по огороду =)

что имею в виду, если короче:

1. чтение информации из первоисточник (а-ля rfc, блок-схемы и пр. естественно, на языке оригинала!).
2. внимательное!!! осмысливание информации из п.1 и начало практики того, что в мануалах.
3. после того, как будут отработана база (из первых 2-х пунктов - уже автоматически на 50% становиться понятно какие слабые/интересмные места (при условии что изучающий действительно осмыслил и понял. а не заучил!).
4. а дальше начало практики с применением теорий и идей, отличных от базы.

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

к примеру, можно 10 ночей потратить, чтобы понять что и как работает aslr, а можно потратить день на чтение документации (если есть) и остальное время - на практику обхода)))

как-то так
 

NumPad

CD-диск
Пользователь
Регистрация
28.01.2019
Сообщения
16
Оценка реакций
0
Баллы
1
По Москве гонять самое то
 

Joirik

CD-диск
Пользователь
Регистрация
14.04.2019
Сообщения
17
Оценка реакций
4
Баллы
3
Отличная статья !
 
Верх