Casual_blog/content/hidden/phd2/keypoints.md
2024-05-21 08:52:25 +03:00

528 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
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
> клик