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