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