528 lines
20 KiB
Markdown
528 lines
20 KiB
Markdown
|
+++
|
|||
|
Title = "keypoints"
|
|||
|
hidden = true
|
|||
|
+++
|
|||
|
|
|||
|
(наверное не финальная версия)
|
|||
|
|
|||
|
# Введение
|
|||
|
|
|||
|
>старт
|
|||
|
|
|||
|
>клик
|
|||
|
- 70% не делятся прогами
|
|||
|
>клик
|
|||
|
- замечательный мир, +1.3млн репозиториев, диски в хранилку
|
|||
|
|
|||
|
# Whoami
|
|||
|
>клик
|
|||
|
|
|||
|
- Я Casual, независимый иследователь и топ-50 standoff365
|
|||
|
|
|||
|
## Для кого, о чём и зачем этот доклад?
|
|||
|
>клик
|
|||
|
|
|||
|
- для начинающих хакеров, первый инструмент.
|
|||
|
- А PRO выкладывать в OpenSource
|
|||
|
- Цель заманить в OpenSource -> Free
|
|||
|
>клик
|
|||
|
- лицензия доклада
|
|||
|
- (интерактив) кто уже выкладывал что-то на github + расскажите
|
|||
|
|
|||
|
# Что такое OpenSource и Free Software?
|
|||
|
>клик
|
|||
|
- теория OSS ("4свободы"),
|
|||
|
>клик
|
|||
|
- Free (4 важнейшие свободы)
|
|||
|
>клик
|
|||
|
- OSS = Free?
|
|||
|
>клик
|
|||
|
- не совсем
|
|||
|
|
|||
|
## Идеология
|
|||
|
>клик
|
|||
|
|
|||
|
- OSI и FSF (free=свободная, не бесплатно)
|
|||
|
- разница, 4свободы
|
|||
|
- намерения разрабов OSS заменить ком. прод, Free - предоставить свободы
|
|||
|
- калькулятор,
|
|||
|
>клик
|
|||
|
- "нельзя просто так взять и модифицировать калькулятор"
|
|||
|
- обход - root/прошивка
|
|||
|
- "те у кого кастомный android можно пересчитать по пальцам в этом зале"
|
|||
|
- (интерактив) У кого custom android? (11-ый, опусти руку)
|
|||
|
- вендор-угнетатель, никакого OSS
|
|||
|
>клик
|
|||
|
- root на Xiaomi + месяц
|
|||
|
- если gnu GPLv3 - можно было бы обновить
|
|||
|
- решение - поставить калькулятор как обычное приложение.
|
|||
|
- но я не люблю ставить лишние приложения и не знать что установлено на моём устройстве.
|
|||
|
- не новы случаи предустановленного бэкдора
|
|||
|
- А где есть google services, google владеет телефоном
|
|||
|
>клик
|
|||
|
- фотки на запрещёнку, доступ к смс и уведомлениям, удалённая блокировка или обнуление. "В общем"
|
|||
|
>клик
|
|||
|
- "Literally 1984"
|
|||
|
- Возвращаясь к Xiaomi, на флагманах просто нет кастомных прошивок
|
|||
|
|
|||
|
# Лицензии
|
|||
|
>клик
|
|||
|
- back to OpenSource, кратенько про licenses
|
|||
|
- OpenSource = permissive/copyleft
|
|||
|
- License - нужна для защиты разработчика
|
|||
|
- permissive - база (4 свободы)
|
|||
|
- permissive схожа с copyleft, но она не запрещает приватизацию
|
|||
|
>клик
|
|||
|
- в случае с copyleft - компания обязаны выложить их программу в opensource с этой же лицензией
|
|||
|
|
|||
|
# +/- for dev
|
|||
|
## +
|
|||
|
>клик
|
|||
|
- совместная разработка = недопонимания
|
|||
|
>клик
|
|||
|
- выложить прогу = сделать мир лучше.
|
|||
|
- Столлман изменил весь мир сделав GNU/Linux таким каким мы его знаем
|
|||
|
>клик
|
|||
|
- вы более узнаваемы в комьюнити = приглосы на events/work
|
|||
|
- Мур попал в Rapid7 из-за metasploit
|
|||
|
>клик
|
|||
|
- при устройстве на работу - будет круто иметь OSS.
|
|||
|
- В моём прошлом собесе так было
|
|||
|
>клик
|
|||
|
- делая OSS, get PRs => improve skills/pentest.
|
|||
|
- Moore got better at writting exploits while working on metasploit
|
|||
|
>клик
|
|||
|
- when code public - you write better. Это Эффект Хоторна
|
|||
|
|
|||
|
# +/- for usr
|
|||
|
## -
|
|||
|
|
|||
|
>клик
|
|||
|
- there might be no user support, project may die in next month
|
|||
|
- I have sent PR to one youtuber, but he abandoned project
|
|||
|
>клик
|
|||
|
- downloading OSS without checking code = downloading cracked software
|
|||
|
- latest big example - XZ (backdoor)
|
|||
|
>клик
|
|||
|
- no one is responsible if something goes wrong and you loose your data
|
|||
|
>клик
|
|||
|
- there might be no documentation for project
|
|||
|
- Once I've found one specific library for python, but there wasn't almost any documentation,
|
|||
|
|
|||
|
|
|||
|
## +
|
|||
|
>клик
|
|||
|
- free
|
|||
|
>клик
|
|||
|
- you own program and you can do anything with it.
|
|||
|
- Guy with FL-studio like programm couldn't install version which he bought 10y ago, bc online activation
|
|||
|
>клик
|
|||
|
- user can check security
|
|||
|
- XZ, secResearcher found backdoor, in proprietary software it could be not found at all
|
|||
|
>клик
|
|||
|
- user customize entire program
|
|||
|
>клик
|
|||
|
- any user can help dev with prj
|
|||
|
- not only about code, also proposals, discussions, user support, documentation
|
|||
|
- ProxmoxVE devs gets more fixes from users than from companies
|
|||
|
|
|||
|
# Особенности написания хакерских утилит
|
|||
|
|
|||
|
>клик
|
|||
|
- example of how its to write cool tool
|
|||
|
>клик
|
|||
|
- hero - H.D. Moore, Metasploit dev
|
|||
|
>клик
|
|||
|
- in 90-ых M was 18, job as pentester
|
|||
|
- at those times, hard to find exploits
|
|||
|
- today we google "prod ver exploit"
|
|||
|
- get exploit = search people in IRC chats
|
|||
|
>клик
|
|||
|
- when PC of M was full of diff exploits = creation metasploit
|
|||
|
- metasploit = select exploit, write input data, run
|
|||
|
- (Interact) Imagine you are boss of infosec company, and your сотрудник shows program which can give ANYONE ability to hack ANY company. How would you do?
|
|||
|
- In right hands - instrument to def many companies
|
|||
|
- In wrong - cyberweapon
|
|||
|
- When M shown to his boss - he was afrid of consicuences
|
|||
|
- but he could get rid of M due to many active pentests
|
|||
|
- In 2003 metasploit going OpenSource in metasploit.com
|
|||
|
- =serious народное волнение, никто не остался в стороне
|
|||
|
- M company
|
|||
|
- his clients
|
|||
|
- black hat hackers
|
|||
|
- darknet hackers who write exploits
|
|||
|
- other pentesters - they thought M steal theirs work releasing this simple tool
|
|||
|
- all those who didn't liked -> try site hacks, DDoSs
|
|||
|
- 1 hacker even hacked провайдера M, bc he couldn't hack site
|
|||
|
- then they attack M = клевета, identity theft, anything you can think
|
|||
|
- M's boss also got mail to fire M, bc what did M was unresponsible to their believe
|
|||
|
- but M was getting more motivated by that
|
|||
|
- Not only hackers were annoyed - vendors didn't wanted to have exploit in metasploit for their software
|
|||
|
- M liked being attacker and target
|
|||
|
- gov also didn't liked Metsplt - M had money for адвоката if he got in jail by night
|
|||
|
- постепенно dev team = 200
|
|||
|
- and In 2009, M had долги, стартап, беременная жена, rapid7 propose to buy Metasploit
|
|||
|
- = we have openSource and Pro version. M got high paing job + company вступилась за него
|
|||
|
- Now metasploit not only tool for pentesters, it's tought in schools.
|
|||
|
- Программа Мура прошла сквозь ненависть всего мира к общепринятому стандарту.
|
|||
|
- Сейчас Мур уволился из Rapid7 и у него своя компания.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# Как писать программы, если вы не программист?
|
|||
|
>клик
|
|||
|
- now i hope you think "OpenSource is cool"
|
|||
|
- пройдёмся по курсу молодого боййца -> вы могли выйти готовыми начать писать свою программу
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Язык программирования
|
|||
|
>клик
|
|||
|
- про то на чём писать
|
|||
|
>клик
|
|||
|
- холивар за язык программирования,
|
|||
|
>клик
|
|||
|
- но самый крутой язык - английский. Помогает где угодно
|
|||
|
>клик
|
|||
|
- а если не знаете - выберите GoLang
|
|||
|
- только не показывайте друзьям их маскот
|
|||
|
|
|||
|
|
|||
|
### Как ему научиться
|
|||
|
>клик
|
|||
|
- я не люблю монотонно учиться, учитесь...
|
|||
|
>клик
|
|||
|
- пиша свой и читая чужой код, then you will learn
|
|||
|
- если первый язык - то
|
|||
|
>клик
|
|||
|
- 1. офф туториал как запустить
|
|||
|
- 2. интерактивная экскурсия
|
|||
|
- 3. туториал на примерах
|
|||
|
- = отличная база
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# Как ~~программировать~~ гуглить
|
|||
|
>клик
|
|||
|
- прогеры не пишут, прогеры...
|
|||
|
>клик
|
|||
|
- звучит смешно, но - научитесь гуглить самостоятельно
|
|||
|
>клик
|
|||
|
>клик (Дабл)
|
|||
|
- 1. на английском
|
|||
|
>клик
|
|||
|
- 2. конструкция запроса
|
|||
|
>клик
|
|||
|
- 3. нет ответа -> перефразируй, можно chatgpt, без ответа
|
|||
|
>клик
|
|||
|
- 4. не проси помощи у знакомых и на форумах за 25м, научись
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## ОС
|
|||
|
>клик
|
|||
|
- пара слов - используй GNU/Linux
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Git и все-все-все
|
|||
|
>клик
|
|||
|
- про git
|
|||
|
- git - система контроля версий. откат до предыдущего сохранения
|
|||
|
- кооперация. совмещение кода
|
|||
|
- сервисы для доступа к git - gtihub, на него и грузим
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Guidelines по созданию OpenSource проекта
|
|||
|
>клик
|
|||
|
- как же сделать свой OpenSource
|
|||
|
>клик
|
|||
|
- 0. регаемся
|
|||
|
>клик
|
|||
|
- 1. создаём repo
|
|||
|
>клик
|
|||
|
- 2.license - MIT=idk/GPL=free
|
|||
|
>клик
|
|||
|
- 3. git clone
|
|||
|
- if git clone SSH = error - no ssh key in GitHub
|
|||
|
>клик
|
|||
|
- `ssh-keygen`, 3xEntr, cat key | copy
|
|||
|
>клик
|
|||
|
- paste SSH pub key -> github. We can download (via SSH)/+update changes
|
|||
|
>клик
|
|||
|
- 4. составьте план разработки
|
|||
|
>клик
|
|||
|
- u need:
|
|||
|
- write which functions prog have
|
|||
|
- write which input
|
|||
|
- devide funct to steps
|
|||
|
- set proirity
|
|||
|
- essential func
|
|||
|
- additional
|
|||
|
- enchantment
|
|||
|
- for instance:
|
|||
|
- i wannt prog to check DOS - compare server response time bofer atck and after (DOS Checker)
|
|||
|
>клик
|
|||
|
- also in real time, with beautiful TUI
|
|||
|
>клик
|
|||
|
- Plus custom headers
|
|||
|
>клик
|
|||
|
- And POST if backend task
|
|||
|
>клик
|
|||
|
- Also check requests - HTTP porxy
|
|||
|
>клик
|
|||
|
- for accuracy - few requests, среднее время ответа
|
|||
|
>клик
|
|||
|
- input we need:
|
|||
|
>клик
|
|||
|
- url link
|
|||
|
>клик
|
|||
|
- request type GET/POST (GET default)
|
|||
|
>клик
|
|||
|
- request body for POST
|
|||
|
>клик
|
|||
|
- link to Proxy
|
|||
|
>клик
|
|||
|
- monitoring?
|
|||
|
|
|||
|
>клик
|
|||
|
- lets devide func to steps
|
|||
|
- for DOS checker we need
|
|||
|
>клик
|
|||
|
- get link from terminal
|
|||
|
>клик
|
|||
|
- write to var
|
|||
|
>клик
|
|||
|
- make GET to url
|
|||
|
>клик
|
|||
|
- get response time
|
|||
|
>клик
|
|||
|
- write to var
|
|||
|
>клик
|
|||
|
- let user start attack, wait any button press
|
|||
|
>клик
|
|||
|
- repeat GET and Response time and write to another var
|
|||
|
>клик
|
|||
|
- compare vars, if 2x+ then attack successful
|
|||
|
|
|||
|
>клик
|
|||
|
- http proxy - get var from term. If not empty, set as Proxy in every request func
|
|||
|
>клик
|
|||
|
- POST req + body - another func which sends POST with body from flag.
|
|||
|
>клик
|
|||
|
>клик (дабл)
|
|||
|
- custom Header - if flag not empty - add to headers
|
|||
|
>клик
|
|||
|
- monitoring mode - find libr for TUI. Imagine how it should look. И т.д.
|
|||
|
|
|||
|
>клик
|
|||
|
- and now priorities:
|
|||
|
>клик
|
|||
|
- essential: DOS, Proxy
|
|||
|
>клик
|
|||
|
- Add-ons: среднее время, POST
|
|||
|
>клик
|
|||
|
- echancment: headers, monitoring
|
|||
|
|
|||
|
>клик
|
|||
|
- 5. dev from very basic
|
|||
|
- just sit and do element which you want. Google may bless you
|
|||
|
- if google give 0 => более мал. элементы
|
|||
|
- when new feature, check that prog works.
|
|||
|
- then upload changes to repo with `git add,commit,push`
|
|||
|
>клик
|
|||
|
- but you will failure cuz Git don't know your email/nick, add them with suggested `git config`
|
|||
|
- А, `git add` - new files to repo
|
|||
|
- `git commit` - фиксирует изменения, to revert
|
|||
|
- `git push` - upload to github, need to add SSH key, what we already did
|
|||
|
- after that, local changes will appear in github
|
|||
|
>клик
|
|||
|
- Напишите README
|
|||
|
- README = txt describes proj. It's first thing that potential user will see in your tool.
|
|||
|
- Readme should answer:
|
|||
|
>клик
|
|||
|
+ what project do?
|
|||
|
>клик
|
|||
|
+ Why is it helpful, which usecase
|
|||
|
>клик
|
|||
|
+ How to install and try it?
|
|||
|
>клик
|
|||
|
+ Which func exist and how to use them (documentation)
|
|||
|
- And now about owncloud_bruteforcer
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## пример - owncloud_bruteforcer
|
|||
|
>клик
|
|||
|
- In pentest I've found OwnCloud
|
|||
|
>клик
|
|||
|
- owncloud - opensource cloud.
|
|||
|
- after few login tries - i wasn't locked out, So I would make отчёт and get reward
|
|||
|
- BUT i couldnt find prog with requirments
|
|||
|
- for owncloud auth need:
|
|||
|
>клик
|
|||
|
- CSRF token from body
|
|||
|
>клик
|
|||
|
- Cookies from headers
|
|||
|
>клик
|
|||
|
- specific client header
|
|||
|
- I want write bruteforcer - auth with wordlist
|
|||
|
- более того, with userlist
|
|||
|
- in owncloud case, before auth, we nedd GET CSRF+cookie
|
|||
|
|
|||
|
- So idea is simple, we need
|
|||
|
### Идея
|
|||
|
>клик
|
|||
|
- get input data via CLI
|
|||
|
>клик
|
|||
|
- with ability to attack userlist,specified user,or default
|
|||
|
> пауза
|
|||
|
>клик
|
|||
|
- Get CSRF+cookie, for that we need:
|
|||
|
>клик
|
|||
|
- make GET to login page
|
|||
|
>клик
|
|||
|
- with regexp get token from body
|
|||
|
>клик
|
|||
|
- with regexp get cookie from headers
|
|||
|
- and put them to variables
|
|||
|
>клик
|
|||
|
- Use wordlist for attacking user
|
|||
|
- and then try to auth
|
|||
|
>клик
|
|||
|
- в цикле воркеры авторизуются паралельно
|
|||
|
>клик
|
|||
|
- before each auth worker get new token+cookie
|
|||
|
>клик
|
|||
|
- each worker get next password and try to auth with all parameters
|
|||
|
>клик
|
|||
|
- worker checks if login was successful or not by response from server
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
### Разработка
|
|||
|
>клик
|
|||
|
- in dev, inconvinient if auth sucessful, by showing packet to Term, => add http proxy, to check auth
|
|||
|
>клик
|
|||
|
- in dev, were bugs, a lot, that's the unexpected one:
|
|||
|
- the point - I use channels, In go, Channel is used to transfer vars beetwen parallel OP
|
|||
|
- you can think as tube which contain X vars, and they выстраиваются в очередь.
|
|||
|
- after getting var out of chan, var dissapear, good in my case
|
|||
|
- So what's the problem in this pseudocode?
|
|||
|
>клик
|
|||
|
- You have 3 minutes, можете поднимать руку и высказывать предположение. Hint - bug will eat all RAM. Why?
|
|||
|
> 3m wait
|
|||
|
- that's another hint - quick fix
|
|||
|
>клик
|
|||
|
>1m wait
|
|||
|
- the problem - GC не успевает чистить, from vars in цикле.
|
|||
|
- but in this case prog user 250MB RAM, not what I expect.
|
|||
|
- Final решение..:
|
|||
|
> wait to read
|
|||
|
>клик
|
|||
|
- so prog run background proc which add passes up to 1000, when free - add new
|
|||
|
- next in parallel run bruteforcer
|
|||
|
- not going far from bugs - lets talk about slow programming and cult of done
|
|||
|
- because final solution - is faulty - everytime it reads again from disk. but я могу допустить этот баг
|
|||
|
- so to bugs I have 2 варианта подхода
|
|||
|
- Slow Proggraming and manifesto Cult of Done
|
|||
|
- What's SlowProgr? - It's when you prog to Заниматься творичиство and get удовольствие. You slowly, methodically, try to решить кусок кода эфф. решением. много получают кайф от этого.
|
|||
|
- 2nd var - follow manifest Cult of Done, it isn't aboud proggraming, but about do things faster. It's short and I like it, there is a part:
|
|||
|
>клик
|
|||
|
- "2.Смиритесь: всё, что вы делаете – это "черновой вариант". Так проще завершить работу."
|
|||
|
- expect that you will not complete, it will not have all func, code optimisation, full documentation
|
|||
|
>клик
|
|||
|
- "3.Этапа "редактирования" не существует."
|
|||
|
- if you expect to basically write basic func and then optimise them - you will not do it OR it will take much time. Write good solution right away
|
|||
|
>клик
|
|||
|
- "7.Сделав что-то, можно про это забыть."
|
|||
|
- написали программу? Забудьте про её поддержку. У вас и так достаточно проектов над которыми вам нужно работать.
|
|||
|
>клик
|
|||
|
- "8.Смейтесь над совершенством. Оно скучно и мешает вам завершить результат."
|
|||
|
- хоть я и перфекционист, но вы никогда не закончите проект, если будете делать его идеальным
|
|||
|
>клик
|
|||
|
- "10.Поражение тоже считается завершённостью. Совершайте ошибки."
|
|||
|
- если у вас не вышло написать программу, то вы всё ещё в выйгрыше, вы узнали что-то новое и в следующий раз сделаете лучше.
|
|||
|
|
|||
|
- Какой подход лучше - решать исключительно вам.
|
|||
|
- What was more unexpected - how owncloud reacts. Besides creating bruteforcer, I wrote DOS. When I tested in lab 100% CPU
|
|||
|
>клик
|
|||
|
>small wait
|
|||
|
- I tell ablout bugs so you understand errors = normal. they make you better. do mistakes
|
|||
|
- you can check prog in this QR + that's how it works
|
|||
|
>клик
|
|||
|
>30s wait
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
# Выводы
|
|||
|
>клик
|
|||
|
- резумируем доклад. Вы сегодня узнали:
|
|||
|
>клик
|
|||
|
- Узнали про OpenSource, виды лицензий и Free Software
|
|||
|
>клик
|
|||
|
- Узнали что будет если написать революционный хакерский инструмент
|
|||
|
>клик
|
|||
|
- узнали как сделать свой первый OpenSource проект, а это:
|
|||
|
>клик
|
|||
|
- сделать Git репозиторий,
|
|||
|
>клик
|
|||
|
- составить план разработки,
|
|||
|
>клик
|
|||
|
- выставить приоритеты для функций программы,
|
|||
|
>клик
|
|||
|
- разделить их на самые малые шаги,
|
|||
|
>клик
|
|||
|
- и начать писать
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Community track блиц
|
|||
|
>клик
|
|||
|
- А теперь небольшой Community track блиц:
|
|||
|
>клик
|
|||
|
- 1) Чего не хватает в современных профессиональных сообществах?
|
|||
|
- openness. pentesters don't share their methodology and when use them. Especially in short form. I lack it so I write my own and will share in blog
|
|||
|
>клик
|
|||
|
- 2) Представь, что проекты, которые ты описал в докладе не были созданы. Как бы ты решал исходную задачу?
|
|||
|
- i talked about metasploit,git,golang+owncloud_bruteforcer
|
|||
|
- metasploit made ИБ. if no history changes - I would use exploit-db - same exploits
|
|||
|
- no git - collaboration hell. I would use nextcloud + btrfs snaps
|
|||
|
- No go - write in C++/python -> Rust
|
|||
|
- no owncloud_bruteforcer - I would write script with curls.
|
|||
|
>клик
|
|||
|
- 3) Какой open source проект тебе хотелось бы создать если будет больше времени/ресурсов?
|
|||
|
- I already write this prog, but due to доклад он на паузе, Ruina - моя автоматизация Recon'a для пентеста. Как допишу до v1 вкину в блог
|
|||
|
|
|||
|
|
|||
|
- Вы можете оставить фидбек для меня, а также найти транскрипцию доклада, и материалы к ней по QR коду далее
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Final
|
|||
|
>клик
|
|||
|
- И раз уж вы все досмотрели этото доклад до конца, вы обязаны выполнять условия лицензии, я зачитаю несколько из секции 7.
|
|||
|
- Будьте этичными хакерами
|
|||
|
- Делитесь исходным кодом своих программ
|
|||
|
- Позвоните маме и сделайте комплимент.
|
|||
|
|
|||
|
> small wait
|
|||
|
|
|||
|
> клик
|
|||
|
- источники
|
|||
|
> клик
|
|||
|
- Спасибо за внимание!
|
|||
|
> wait until applause fin
|
|||
|
> клик
|
|||
|
|
|||
|
|