20 KiB
+++ 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
- если первый язык - то
клик
-
- офф туториал как запустить
-
- интерактивная экскурсия
-
- туториал на примерах
- = отличная база
Как программировать гуглить
клик
- прогеры не пишут, прогеры...
клик
- звучит смешно, но - научитесь гуглить самостоятельно
клик клик (Дабл)
-
- на английском
клик
-
- конструкция запроса
клик
-
- нет ответа -> перефразируй, можно chatgpt, без ответа
клик
-
- не проси помощи у знакомых и на форумах за 25м, научись
ОС
клик
- пара слов - используй GNU/Linux
Git и все-все-все
клик
- про git
- git - система контроля версий. откат до предыдущего сохранения
- кооперация. совмещение кода
- сервисы для доступа к git - gtihub, на него и грузим
Guidelines по созданию OpenSource проекта
клик
- как же сделать свой OpenSource
клик
-
- регаемся
клик
-
- создаём repo
клик
- 2.license - MIT=idk/GPL=free
клик
-
- 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 клик
-
- составьте план разработки
клик - 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
клик
-
- 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 блиц:
клик
-
- Чего не хватает в современных профессиональных сообществах?
- 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
клик
-
- Представь, что проекты, которые ты описал в докладе не были созданы. Как бы ты решал исходную задачу?
- 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.
клик
-
- Какой open source проект тебе хотелось бы создать если будет больше времени/ресурсов?
-
I already write this prog, but due to доклад он на паузе, Ruina - моя автоматизация Recon'a для пентеста. Как допишу до v1 вкину в блог
-
Вы можете оставить фидбек для меня, а также найти транскрипцию доклада, и материалы к ней по QR коду далее
Final
клик
- И раз уж вы все досмотрели этото доклад до конца, вы обязаны выполнять условия лицензии, я зачитаю несколько из секции 7.
- Будьте этичными хакерами
- Делитесь исходным кодом своих программ
- Позвоните маме и сделайте комплимент.
small wait
клик
- источники
клик
- Спасибо за внимание!
wait until applause fin клик