Casual_blog/content/hidden/phd2/keypoints.md

528 lines
20 KiB
Markdown
Raw Normal View History

2024-05-21 05:52:25 +00:00
+++
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
> клик