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