Casual_blog/content/hidden/phd2/keypoints.md
2024-05-21 08:52:25 +03:00

20 KiB
Raw Blame History

+++ 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. офф туториал как запустить
    1. интерактивная экскурсия
    1. туториал на примерах
  • = отличная база

Как программировать гуглить

клик

  • прогеры не пишут, прогеры...

клик

  • звучит смешно, но - научитесь гуглить самостоятельно

клик клик (Дабл)

    1. на английском

клик

    1. конструкция запроса

клик

    1. нет ответа -> перефразируй, можно chatgpt, без ответа

клик

    1. не проси помощи у знакомых и на форумах за 25м, научись

ОС

клик

  • пара слов - используй GNU/Linux

Git и все-все-все

клик

  • про git
  • git - система контроля версий. откат до предыдущего сохранения
  • кооперация. совмещение кода
  • сервисы для доступа к git - gtihub, на него и грузим

Guidelines по созданию OpenSource проекта

клик

  • как же сделать свой OpenSource

клик

    1. регаемся

клик

    1. создаём repo

клик

  • 2.license - MIT=idk/GPL=free

клик

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

    1. составьте план разработки

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

клик

    1. 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

клик

    1. Представь, что проекты, которые ты описал в докладе не были созданы. Как бы ты решал исходную задачу?
  • 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.

клик

    1. Какой open source проект тебе хотелось бы создать если будет больше времени/ресурсов?
  • I already write this prog, but due to доклад он на паузе, Ruina - моя автоматизация Recon'a для пентеста. Как допишу до v1 вкину в блог

  • Вы можете оставить фидбек для меня, а также найти транскрипцию доклада, и материалы к ней по QR коду далее

Final

клик

  • И раз уж вы все досмотрели этото доклад до конца, вы обязаны выполнять условия лицензии, я зачитаю несколько из секции 7.
    • Будьте этичными хакерами
    • Делитесь исходным кодом своих программ
    • Позвоните маме и сделайте комплимент.

small wait

клик

  • источники

клик

  • Спасибо за внимание!

wait until applause fin клик