hugo config update
This commit is contained in:
parent
a4b914376c
commit
be654f32e7
@ -7,7 +7,7 @@ I write __short__ and clutterless aricles about:
|
||||
- productivity
|
||||
|
||||
|
||||
[More info](/whoami), [disclaimer](whoami/disclaimer), [license](/whoami/license)
|
||||
[More info](/whoami), [Telegram](https://t.me/casualblog), [disclaimer](whoami/disclaimer), [license](/whoami/license)
|
||||
|
||||
<!-- -->
|
||||
|
||||
|
57
content/hidden/phd2/abstract.md
Normal file
57
content/hidden/phd2/abstract.md
Normal file
@ -0,0 +1,57 @@
|
||||
+++
|
||||
Title = "Информация по докладу"
|
||||
hidden = true
|
||||
+++
|
||||
|
||||
# OpenSource и как написать свой первый хакерский инструмент?
|
||||
Другие названия:
|
||||
- OpenSource и написание инструментов для хакеров
|
||||
|
||||
|
||||
|
||||
### Время на доклад
|
||||
Суммарно = 30-40 минут
|
||||
5% - Введение
|
||||
10% - Что такое OpenSource?
|
||||
50% - Особенности написания хакерских утилит
|
||||
30% - Как писать программы, если вы не программист
|
||||
5% - Выводы
|
||||
?% - Q/A
|
||||
|
||||
## Краткое описание
|
||||
|
||||
Доклад про важность OpenSource в жизни пентестера и как новичкам начать писать программы с нуля.
|
||||
|
||||
## В чём смысл доклада?
|
||||
|
||||
Смотивировать хакеров больше писать OpenSource инструменты и выкладывать существующие.
|
||||
|
||||
## Для кого? (цельевая аудитория)
|
||||
|
||||
Для начинающих Red-Team хакеров/пентестеров.
|
||||
|
||||
### Есть ли в докладе новая информация для аудитории?
|
||||
|
||||
Потому что хоть и хакеры используют много OpenSource инструментов, при написании своих инструментов, они пишут инструменты и скрипты чисто для себя и под свои задачи, не делясь ими с миром.
|
||||
|
||||
### Почему для аудитории полезно использовать на практике информацию из доклада?
|
||||
|
||||
Хакер сможет написать свой первый хакерский инструмент. Хакер получит большую известность за счёт разработки своих утилит, а также получит развитие этих же утилит с помощью комьюнити. Следовательно и хакер узнает что-то новое.
|
||||
|
||||
### Почему доклад интересен для аудитории?
|
||||
|
||||
Потому что много начинающих хакеров хотят иметь свой собственный инструмент, который выполняет их нужды и облегчает им жизнь. Им будет интересно узнать как начать писать свою программу.
|
||||
|
||||
### Почему доклад вдохновляет аудиторию?
|
||||
|
||||
Потому что в нём рассказан пример человека, который пишит свой личный OpenSource хакерский инструмент, без обучения программированию
|
||||
|
||||
### Почему доклад забавный?
|
||||
|
||||
- есть шуточная лицензия для доклада, которая обязывает зрителей сделать шуточные вещи, о чём 99% людей узнают в конце доклада, если они не посмотрели о ней в начале доклада
|
||||
- есть несколько мемов из OpenSource комьюнити (+ оригинальный мем)
|
||||
- пример разработки Metasploit забавный из-за того как он влиял на мир и его создателя во время появления проекта
|
||||
|
||||
## Какое взаимодействие с аудиторией:
|
||||
- QR код на шуточную лицензию доклада и плот твист с шуточными требованиями для аудитории - для того, что бы показать важность ознакомления с лицензией
|
||||
- Вопросы к аудитории, как бы они поступили на месте героев доклада, с объяснением логики - к примеру, во время описания разработки Metasploit, спрашивать пару человек из аудитории, как бы они поступили на месте Мура.
|
91
content/hidden/phd2/feedback.md
Normal file
91
content/hidden/phd2/feedback.md
Normal file
@ -0,0 +1,91 @@
|
||||
+++
|
||||
Title = "Ваш фидбек"
|
||||
draft = false
|
||||
hidden = true
|
||||
+++
|
||||
|
||||
|
||||
Оцените мой доклад!
|
||||
|
||||
Вы можете оставить фидбек в вольной форме или ответить на следующие вопросы:
|
||||
- На сколько доклад держит ваше внимание (интерес)? (от 1 до 10)
|
||||
- На сколько доклад забавный?
|
||||
- На сколько доклад мотивирующий?
|
||||
- На сколько доклад познавательный? Много ли вы нового узнали?
|
||||
- Какой вывод вы можете сделать из доклада?
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
.form-container {
|
||||
<!-- border-radius: 10px; -->
|
||||
width: 400px; /* Width of the form container */
|
||||
margin: 0 auto; /* Center the form container horizontally */
|
||||
}
|
||||
.form-container label,
|
||||
.form-container input {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
<!-- height: 100px -->
|
||||
}
|
||||
.form-container button {
|
||||
background-color: #333333; /* Gray background color for the button */
|
||||
color: #fff; /* Text color for the button */
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.form-container button:hover {
|
||||
background-color: #888; /* Darker gray color on hover */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div class="form-container">
|
||||
<form id="postForm">
|
||||
<textarea rows="5" cols="50" id="textField" name="textField">
|
||||
</textarea>
|
||||
<!-- <input type="text" id="textField" name="textField"> -->
|
||||
<br>
|
||||
<button type="button" onclick="sendPostRequest()">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function sendPostRequest() {
|
||||
var textFieldData = document.getElementById("textField").value;
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
var url = "https://blog.ca.sual.in/api/message";
|
||||
xhr.open("POST", url, true);
|
||||
xhr.setRequestHeader("Content-Type", "application/json");
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
console.log(xhr.responseText);
|
||||
}
|
||||
};
|
||||
var data = JSON.stringify({"text": textFieldData, "username": "PHD2_feedback", "gateway": "gateway1"});
|
||||
xhr.send(data);
|
||||
alert("I got your message, thanks!")
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
---
|
||||
## Контакты
|
||||
|
||||
+ [Блог](https://blog.ca.sual.in/)
|
||||
+ [Блог в телеге](https://t.me/casualblog)
|
||||
+ [TG](https://t.me/AlexeyInfosec)
|
||||
+ [XMPP](xmpp://casual@pwned.life)
|
||||
|
||||
## Материалы
|
||||
|
||||
|
||||
- [Презентация](/hidden/PHD2_presentation.pptx)
|
||||
- [Abstract](../abstract)
|
||||
- [Транскрипция доклада](../trans)
|
||||
- [Keypoints](../keypoints)
|
||||
- [Лицензия доклада](../license)
|
527
content/hidden/phd2/keypoints.md
Normal file
527
content/hidden/phd2/keypoints.md
Normal file
@ -0,0 +1,527 @@
|
||||
+++
|
||||
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
|
||||
> клик
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
+++
|
||||
Title = "Лицензия доклада"
|
||||
hidden = true
|
||||
+++
|
||||
|
||||
|
||||
```txt
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
=======================================================================
|
||||
@ -436,4 +436,4 @@ It's a modification of Creative Commons BY-SA 4.0
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
||||
```
|
||||
|
||||
|
719
content/hidden/phd2/trans.md
Normal file
719
content/hidden/phd2/trans.md
Normal file
@ -0,0 +1,719 @@
|
||||
+++
|
||||
Title = "Транскрипция доклада"
|
||||
hidden = true
|
||||
+++
|
||||
|
||||
|
||||
|
||||
# Введение
|
||||
|
||||
Знаете ли вы что около 70% хакеров не делятся со всеми своими личными программами и скриптами
|
||||
(скрин со стендофф чата)
|
||||
А представьте, какой был бы замечательный мир, если эти 70%, делились ими! На github'e сейчас находится 571,000 результатов по ключевому слову 'hack'. Делим эту цифру на 30 процентов, умножаем на 70% получаем прирост на 1,300,000 репозиториев! Заодно, так мы бы заставили Microsoft купить для Github ещё парочку дисков в хранилку.
|
||||
( (571000 / 30) × 70 ≈ 1,332,333 )
|
||||
(скриншот с github)
|
||||
|
||||
<!-- 35s -->
|
||||
|
||||
## Whoami
|
||||
|
||||
Привет, я Casual
|
||||
Независимый иследователь, и я находился в топ-50 хакеров на Standoff365
|
||||
(независимый иследователь = безработный :) )
|
||||
Подробней обо мне вы можете посмотреть в моём блоге
|
||||
<!-- TODO может изменить статью в блоге -->
|
||||
|
||||
|
||||
|
||||
(QR и ссылка на about me в блоге)
|
||||
|
||||
|
||||
(Алексей - Casual)
|
||||
|
||||
<!-- 10s -->
|
||||
|
||||
## Для кого, о чём и зачем этот доклад?
|
||||
|
||||
(
|
||||
1. Научить писать hack tools
|
||||
2. Заставить их выкладывать
|
||||
)
|
||||
|
||||
Я сделал этот доклад для начинающих хакеров, которые хотят упростить себе жизнь и написать свой первый хакерский инструмент, который поможет вам легче и быстрее взламывать самые непростые штуки. А также замотивировать более опытных, распространить свои скрипты и программы в публичных git репозиториях.
|
||||
|
||||
То есть моя цель в том, чтоб заманить вас в движение OpenSource, а если у вас и схожая идеология, то и в движение Free Software, но об этом позже
|
||||
|
||||
|
||||
У этого доклада есть лицензия, смотря этот доклад вы принимаете её. Подробнее вы можете узнать по QR коду.
|
||||
(Casual BY-SA 4.0 - QR код на лицензию в блоге)
|
||||
|
||||
<!-- 40s -->
|
||||
|
||||
<!-- интерактив -->
|
||||
Кстати, поднимите руки те, кто уже выкладывал любые свои программы и скрипты на Github или ему подобные!
|
||||
А теперь, пожалуйста, скажите пару слов о них! (2-3 человека)
|
||||
|
||||
<!-- +3 минуты? (вне счёта)-->
|
||||
# Что такое OpenSource и Free Software?
|
||||
|
||||
И так, что такое OpenSource и Free Software?
|
||||
|
||||
Открытое программное обеспечение (OpenSource Software) — программы с открытым исходным кодом.
|
||||
|
||||
То есть это те программы, исходный код которых вы можете посмотреть, изменить, и распространять для любых целей.
|
||||
|
||||
|
||||
Свободное программное обеспечение (Free Software) - программы, которые делают то же самое, но уважают "важнейшие" свободы пользователя, кстати вот эти 4 свободы:
|
||||
(
|
||||
0. Свобода запускать программу для любых целей.
|
||||
1. Свобода изучать и изменять программу для ваших целей.
|
||||
2. Свобода распространять копии.
|
||||
3. Свобода распространять модифицированные версии.
|
||||
)
|
||||
Ничего не напоминает?
|
||||
|
||||
Так это получается ( OpenSource = Free Software )?
|
||||
Не совсем. Разница кроется в идеологии программистов.
|
||||
|
||||
( OpenSource != Free Software )
|
||||
|
||||
<!-- нужен пример? -->
|
||||
<!-- К примеру MetaSploit -->
|
||||
|
||||
<!-- 50s -->
|
||||
|
||||
## Идеология
|
||||
|
||||
Тут кстати нужно упоминуть о двух сообществах.
|
||||
Open Source Initiative (OSI) - сообщество продвигающее OpenSource Software (OSS).
|
||||
А также -
|
||||
Free Software Foundation (FSF) - (Free, в переводе не "бесплатно", а "свободная") сообщество продвигающее Свободное ПО(Free software)
|
||||
<!-- (икона со столманом) -->
|
||||
|
||||
А теперь о разнице OpenSource и Free. Помните те 4 свободы, которые о которых я сказал раньше?
|
||||
Что исходный код можно посмотреть, изменить, и распространять для любых целей.
|
||||
|
||||
хоть и технически соблюдаются лицензией в OpenSource проектах, но соблюдение которых, может и не быть приоритетом самих программистов.
|
||||
|
||||
Приоритет у OpenSource разработчиков, это сделать надёжный и эффективный инструмент, который, в какой-то мере, может заменить коммерческие аналоги.
|
||||
А приоритет у "Свободных" программистов, это предоставить пользователю упомянутые свободы, в процессе создания надёжного и эффективного инструмента.
|
||||
|
||||
Всё ещё не совсем ясно в чём конкретно разница, но сейчас объясню.
|
||||
|
||||
|
||||
К примеру, калькулятор на Android от Google. Для него используется лицензия Apache 2.0. Она соблюдает свободы. Однако калькулятор на вашем телефоне - это не свободная программа. Даже если у вас AOSP версия андроида, то есть собраная из исходников, и ваш каклькулятор полностью неизменённая версия того самого калькулятора,
|
||||
(мем - вы не можете просто так взять и установить калькулятор)
|
||||
вы не можете просто так взять, изменить его код и обновить его на вашем телефоне. Вам буквально запрещено установить свою версию калькулятора поверх предустановленного. Да, это решается прошивкой телефона или получением root прав. Но. Тех, у кого AOSP версия андроида, или скажем LinageOS можно пересчитать по пальцам в этом зале. (Кстати, Поднимите руки те, у кого кастомные прошивки на телефоне (шутка - эй, ты, ты 11-ый, пожалуйста опусти руку, ты нарушаешь правила этого доклада :) )
|
||||
А там, где вендор правит маскарадом, ситуация куда хуже.
|
||||
Он вам может ставить тот же калькулятор, но модифицированный, и из-за изменений в коде и вы не получите исходники этого уже проприетарного калькулятора. А вот кстати так выглядит инструкция по получение Root на флагмане Xiaomi, кстати для этого вам нужно подождать месяц
|
||||
(Скрин xiaomi)
|
||||
Если бы калькулятор использовал GNU GPLv3 лицензию, то его можно было бы обновить на свою версию.
|
||||
|
||||
|
||||
Очевидное решение - поставить ваш кастомный калькулятор не вместо стокового, а как обычное приложение. Но мне оно не нравится, по причине того, что я не люблю когда установлены лишние приложении, но что больше я не люблю, так это факт того, что я не знаю что, установлено на моём телефоне. Не новы случае, когда бэкдор уже предустановлен на телефон. А в случае Google, то везде где есть их сервисы, они по сути владеют Вашим телефоном.
|
||||
(google don't be evil)
|
||||
Они отправляют все ваши фотографии нейронке для провреки на запрещённый контент. У них доступ ко всем паролям от ваших сайтов. К вашим СМСкам и уведомлениям. Они могут обнулить или залочить ваш телефон в любой момент. В общем
|
||||
(literally 1984)
|
||||
А возвращаясь к Xiaomi, на их флагман просто нет кастомной прошивки.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Кстати распространяются программы на таких сервисах как GitHub, GitLab, SourceForge и куче других Git сервисов. Т.е. вы можете взять, найти понравившуюся вам программу на github, скачать, изменить её исходный код и выложить в открытый доступ. Кстати, этот процесс называется "Fork" (на экране вилка) -->
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- (мем со Столлманом и Линусом) (БЛЯЯЯ, Я ЗАБЫЛ ЧТО ЗА МЕМ) -->
|
||||
|
||||
|
||||
<!-- 3.30m -->
|
||||
|
||||
Но вернёмся к OpenSource.
|
||||
|
||||
## Лицензии
|
||||
|
||||
|
||||
Тут нужно кратенько рассказать про лицензии
|
||||
|
||||
Грубо говоря, для OpenSource у вас есть выбор использовать, либо Permissive, либо Copyleft лицензию.
|
||||
|
||||
Лицензия нужна для защиты разработчика и его продукта.
|
||||
|
||||
Permissive обеспечивает соблюдение свобод - исходный код можно посмотреть, изменить, и распространять для любых целей. Это к примеру MIT License.
|
||||
|
||||
Permissive и Copyleft лицензии очень похожи. Однако ключевое отличие - Permissive не запрещает приватизировать код. Т.е. корпорация может воспользоваться кодом из вашей программы, изменить её, и это уже будет её код.
|
||||
|
||||
(ah finally copyleft)
|
||||
|
||||
В случае же CopyLeft лицензии, компании нужно будет выложить любую модификацию вашей программы в открытый доступ под этой же лицензией. Т.е. просто взять и построить коммерческий продукт с такой лицензией не выйдет.
|
||||
|
||||
Пример CopyLeft лицензии - GNU GPLv3
|
||||
|
||||
<!-- 1m -->
|
||||
|
||||
## плюсы/минусы для разработчика
|
||||
|
||||
А теперь поговорим как изменится ваша жизнь, если вы выложите вашу программу или скрипт в OpenSource
|
||||
|
||||
Минусы:
|
||||
- Недопонимания - как и в любой совместной разработке, это общение с людьми, нужно быть готовым к разнице в восприятии и подходов
|
||||
|
||||
Плюсы:
|
||||
- Мотивация - Выложив программу в открытый доступ, Вы делаете мир лучше, это отлично мотивирует продолжать разработку. - Ричард Столлман, разрабатывал набор утилит GNU, чтоб все могли ими пользоваться. Его команда собрали то, какой мы видем GNU/Linux сейчас.
|
||||
<!-- Компании по всему миру используют OpenSource продукты. Один из самых популярных, я бы назвал GNU/Linux. Они чуть ли не основа таких больших корпораций, как Google. -->
|
||||
- Репутация - Вы становитесь более узнаваемым в комьюнити, вас могут приглашать на эвенты и предлагать работу. - К примеру H.D. Мур, создатель Metasploit благодаря своему инструменту попал на множество мероприятий и на пост главного исследователя в Rapid7.
|
||||
- Портфолио - Если вы будете устраиваться на работу, это будет плюсом, если у вас будут OpenSource проекты. - Для примера далеко ходить не нужно, в моём прошлом собеседовании меня попросили скинуть профиль на github.
|
||||
- Рост - Делая OpenSource проект, он будет получать изменения от других программистов, которые помогут вам вырости как специалисту и поднять уровень ваших навыкови кода. - Возвращаясь к Муру, он сильно прокачался в написании эксплоитов при работе над Metasploit.
|
||||
- Качество кода - вы будете писать код будет качественно, если будете знать, что его может увидеть абсолютно любой, чем если бы написали на коленке для себя. - в психологии это называется Эффект Хоторна.
|
||||
|
||||
<!-- 2m -->
|
||||
|
||||
## плюсы/минусы для пользователя
|
||||
|
||||
А теперь про плюсы и минусы для пользователя
|
||||
|
||||
Минусы:
|
||||
- Поддержка - её может и не быть, а разработка проекта может закончиться через месяц. - Я так одному ютуберу, который выложил свой скрипт вкинул несколько улучшений, но он забросил проект.
|
||||
- Безопасность - нет гарантии, что программа безопасна, скачивание OpenSource утилит не отличается от скачивания крякнутых программ, если вы конечно не прочитаете исходный код. - Недавний нашумевший пример - это библеотека XZ, которая почти поставила на все обновлённые системы бэкдор.
|
||||
- Гарантии - если программа поведёт себя как-то не так и приведёт к потере данных, никто не будет нести за это ответственность, кроме самого пользователя
|
||||
- Документация - Наличие, актуальность и точность документации также не гарантировано. - Помнится я нашёл одну очень специфичную библиотеку на Python, которая решала мою проблему, но как ей пользоваться, я узнал изучая её исходный код.
|
||||
|
||||
Плюсы:
|
||||
- Цена - бери и качай. Все OpenSource программы бесплатны для использования.
|
||||
- Платформы - OSS зачастую поддерживает больше платформ, чем проприетарный софт. К примеру, Adobe намеренно не разрабатывает Linux версию Photoshop, хотя у них есть версия под MacOS. А условная Krita, есть на всех платформах, да и вроде даже на Android.
|
||||
- Владение - то, что вы скачали, будет работать на любой другой схожей системе, эта программа принадлежит вам (в рамках лицензии) и у вас её не могут отнять. К примеру, у одного музыканта была прога по типу FL Studio, которую он купил в 10 лет назад. После этого вышло несколько новых версий которые сильно отличались от этой. Севрис онлайн активации отключили, а его комп поломался. И из-за этого он не смог активировать старую версию программы, а техподдержка отказалась помогать ему, не смотря, что лицензия продукта позволяла продолжать использовать старую версию. А ему нужна именно эта версия для его работы. В итоге у него отняли то, что он купил.
|
||||
- Безопасность - Пользователь может сам удостовериться, что программа безопасна и соответствует заявлениям разработчиков или вашим нуждам - вспоминая пример про XZ - иследователь нашёл бэкдор, а в проприетарном софте, к примеру Windows, он бы и остался необноруженным какое-то время.
|
||||
- Кастомизация - Пользователь может доработать программу, чтоб она соответсвовала его нуждам. - Не нравится цвет окошка? Подправьте его и пользуйтесь программой. Или вам не нравится какое-то навязчивое окошечко или настройки по умолчанию. Вы можете всё это изменить.
|
||||
- Community - любой пользователь может помочь разработчику с проектом. И речь не только о написании кода, это также помощь с обсуждением и предложением новых функций, написанием документации, поддержкой пользователей, созданием отчётов о багах или тестах программы. Каждый может помочь в разработке, внезависимости от умений, и получить от этого новые навыки. - К примеру разработчики сервера виртуализации Proxmox, получает больше фидбека от пользователей, чем от компаний. А некоторые пользователи сами им скидывают как исправить их программу, и это не просто костыль, а прям кусок кода, который основательно фиксит проблему.
|
||||
|
||||
|
||||
<!-- 1.50 + 1.15 = 3.10m -->
|
||||
<!-- =11.20 -->
|
||||
<!-- skip -->
|
||||
# Особенности написания хакерских утилит
|
||||
|
||||
А теперь я расскажу про пример, какого это писать крутой хакерский инструмент
|
||||
|
||||
## OpenSource = суматоха в жизни
|
||||
|
||||
И наш герой H.D. Мур, создатель и разработчик, легендарного хакерского инструмента - Metasploit
|
||||
|
||||
### пример - Metasploit
|
||||
|
||||
В 90-ых Муру было 18 лет, ему в этом возрасте предложили первую работу в ИБ, в частности пентестером.
|
||||
Но в то время было сложно получить эксплоиты, это сейчас мы просто берём и пишим в гугле, программу, её версию и "exploit". А тогда их так просто было не получить, нужно было искать людей в IRC чатах
|
||||
(IRC скрин)
|
||||
, у которых могли бы быть эти эксплоиты. И когда комп Мура был хаотично забит разными эксплоитами без организации и разными вариантами запуска, он решил объеденить все доступные ему эксплоиты в одну программу которую назвал Metasploit. Запустив её, вы можете выбрать эксплоит, ввести входные данные и запустить его.
|
||||
(вопрос к аудитории - А теперь вопрос к аудитории - представьте, вы босс компании по информационной безопасности, и ваш сотрудник показывает вам свою программу, которая может дать __любому__ возможность взломать любую компанию. Как бы вы поступили?)
|
||||
В правильных руках - это инструмент, который поможет защитить множество компаний от взломов, а в неправильных руках, это самое настоящие кибер-оружие. И когда Мур показал это своему нанимателю, он не особо поддерживал его инструмент, точнее, он боялся его. Компания не хотела быть связана с Metasploit и со всем, что делал Мур, но и в то же время они не могли от него избавиться, так как Мур выполнял большинство активных пентестов.
|
||||
|
||||
И вот, в 2003 год, он начал распространять Metasploit бесплатно, более того, Open-Source, на сайте metasploit.com. И это сразу же вызвало серьёзное народное волнение, причём казалось, что никто не остался в стороне:
|
||||
- компания на которую работал Мур,
|
||||
- клиенты,
|
||||
- black hat хакеры,
|
||||
- хакеры с даркнета, которые пишут эксплоиты,
|
||||
- другие пентестеры, потому что они считали, что Мур крадёт их работу, выпуская такой мощный и простой для использования инструмент.
|
||||
И много недовольных захотели положить его сайт. Попытки взлома, DDoS'ы, , всё дошло до того, что 1 хакер, у которого не получалось взломать сайт, взломал провайдера Мура. Под атаку попал не только сайт, но и сам Мур, у него пытались украсть личность, оклеветать его в сети, всё что можете представить. Успешно атаковать на Мура не выходило, вот и кто-то решил атаковать работодателя Мура.
|
||||
|
||||
Боссу Мура приходили письма с требованием уволить Мура, за то, что он делал в нерабочее время, так как считали, что то, что он выкладывает эксплоиты, это безответственно. Но это лишь сподвигло Мура работать усерднее над своим инструментом.
|
||||
Но естевственно не только хакеры и покупатели былли недовольны, также были недовольны и вендоры, разработчики программ, для которых Мур выкладывал эксплоиты. И чтоб компания Мура могла работала с вендорами, они хотели, чтоб не было эксплоитов для их продуктов в Metasploit.
|
||||
|
||||
Муру нарвилось всё это, ему нравилось быть как и быть в пентесте атакующим, так и целью атаки одновременно.
|
||||
|
||||
Позже Мур добавил инструмент Meterpreter, который делал Metasploit практически вирусом
|
||||
И помимо хакеров, его инструмент не нравился правительству. Всё это время у него были в запасе деньги, на которые он нанял бы адвоката, если бы его ночью арестовали. Но ничего такого не произошло.
|
||||
|
||||
Постепенно команда работающая над Metasploit - начала составлять 200 разработчиков
|
||||
И в 2009 году, когда у Мура были долги, стартап, который не приносил денег и беременная жена, компания Rapid7 предложила у него купить Metasploit. И в итоге мы имеем OpenSource версию Metasploit и проприетарную Pro версию. А Мур получил высокооплачиваюмую работу, а также компанию, которая вступилась за него и его проект.
|
||||
|
||||
Теперь Metasploit не просто инструмент для пентестеров, а этому учат даже в школах! Программа Мура прошла сквозь ненависть всего мира к общепринятому стандарту.
|
||||
|
||||
Сейчас Мур уволился из Rapid7 и у него своя компания.
|
||||
|
||||
(Source https://darknetdiaries.com/episode/114/)
|
||||
|
||||
<!-- 4m +5m на вопрос -->
|
||||
|
||||
# Как писать программы, если вы не программист?
|
||||
|
||||
На этом этапе я надеюсь, что убедил вас, что OpenSource это круто. Но теперь нужно узнать, как влиться в OpenSource в качестве разработчика.
|
||||
Мы сейчас быстренько пройдёмся по курсу молодого бойца, чтоб выйдя с этого доклада вы уже были готовы начать писать свою программу.
|
||||
|
||||
<!-- 20s -->
|
||||
|
||||
## Язык программирования
|
||||
|
||||
Про то, на чём писать вашу прогу.
|
||||
|
||||
Тут можно начать очередной холивар за язык программирования, но я скажу, что самый крутой язык будет - англисйкий! Он невероятно поможет в изучении практически чего угодно.
|
||||
|
||||
<!-- Хоть и речь идёт про язык программирования, я скажу то, что невероятно сильным плюсом для вас будет знание английского языка, не только в программирование, но и в пентесте. -->
|
||||
|
||||
А относительно языка программирования, если вы не знаете какой выбрать для написания пентестерских инструментов или у вас нет опыта, то выбирайте GoLang, или просто Go.
|
||||
Только не показывайте друзьям их маскот
|
||||
|
||||
<!-- 30s -->
|
||||
|
||||
### Как ему научиться
|
||||
|
||||
И как научиться Go?
|
||||
|
||||
Мне не нравится сидеть и монотонно изучать язык по книге, по этому я считаю, чтоб научиться писать, нужно просто
|
||||
(just do it)
|
||||
начать пробывать писать свой код и читать чужой, а в процессе вы изучите язык.
|
||||
|
||||
Однако, если вы всё-же хотите посидеть и почитать, особенно, если вы до этого в жизни не видели программный код, то я советую:
|
||||
1. оффициальный туториал о том как запустить Go на вашем компьютере,
|
||||
2. затем интерактивную экскурсию по языку,
|
||||
3. и в заключении перейти к туториалу на основе примеров.
|
||||
Так вы получите отличную базу.
|
||||
(стрелочки от ссылке к ссылке)
|
||||
https://go.dev/doc/tutorial/getting-started
|
||||
https://go.dev/tour
|
||||
https://gobyexample.com/
|
||||
|
||||
<!-- 40s -->
|
||||
|
||||
## Как ~~программировать~~ гуглить
|
||||
|
||||
Если вы думаете, что крутые программисты, сидят и просто пишут код, то вы не правы, программисты пишут код примерно так:
|
||||
|
||||
(Мем как пишут успешные программисты код - google)
|
||||
|
||||
Хоть это и звучит смешно, но первым делом, нужно научиться гуглить самостоятельно. Я говорю это, потому что я встречал много людей которые не могут это делать.
|
||||
|
||||
|
||||
1. Гуглите на английском. Так куда больше шансов найти что ответ.
|
||||
2. Конструкция запроса, примерно такая "язык программирования, что вы хотите"
|
||||
<!-- pro tip: в случае с go, используйте "golang что-то", так его обозначают, чтоб не путать с английским словом Go -->
|
||||
<!-- ({Go = идти {Go = GoLang, но GoLang != идти) -->
|
||||
3. Иногда вы не получите ответ, в таком случае вам нужно перефразировать вопрос, в крайнем случае вы можете обратиться к ChatGPT чтоб перефразировал для вас или. Но не используйте ChatGPT для получения самого ответа на ваш вопрос
|
||||
4. Не просите помощи на форумах и у знакомых, пока не потратили хотя бы 25 минут на поиск решения, вы должны научиться сами справлять с такими проблемами
|
||||
<!-- 1m -->
|
||||
|
||||
## ОС
|
||||
|
||||
|
||||
И пару слов об вашей операционке. Я настаятельно рекомендую установить и начать осваиваться GNU/Linux. Также и в ней программировать.
|
||||
|
||||
<!-- И пару слов об вашей операционке. Я настаятельно рекомендую установить Linux. -->
|
||||
<!-- -->
|
||||
<!-- В идеале вместо вашей винды, -->
|
||||
<!-- но я рекомендую начать с установки рядом с вашей виндой, т.е. при включении компьютера, вы сможете выбрать, что запускать, винду или линукс. -->
|
||||
<!-- Но для тех, кому пока ещё сложно с компьютерами то установите линукс на виртуальную машину. -->
|
||||
<!-- -->
|
||||
<!-- (логотипы) -->
|
||||
<!-- А в качестве ОС, это Kubuntu, или если вы хотите приключения и сложности для более быстрого прокачивания навков, то Arch Linux (btw) -->
|
||||
<!-- -->
|
||||
<!-- Гайдов очень много на каждый из вариантов установок, главное будьте осторожны. -->
|
||||
|
||||
<!-- 15s -->
|
||||
|
||||
## Git и все-все-все
|
||||
|
||||
А теперь про Git
|
||||
|
||||
Git - это система контроля версий. Это программа позвоялет откатывать изменения в файлах до предыдущего их сохранения.
|
||||
Также она помогает работать нескольким людям над проектом. Т.е. она умеет совмещать изменения сделаные несколькими разработчиками.
|
||||
|
||||
Есть сервисы, которые предоставляют доступ к git репозиториям, самый популярный - GitHub. На него мы и будем загружать наш проект
|
||||
|
||||
<!-- А по этой ссылке вы увидете решения типичных проблем с git - https://ohshitgit.com/ru -->
|
||||
<!-- (qr) -->
|
||||
|
||||
<!-- 35s -->
|
||||
|
||||
## Guidelines по созданию OpenSource проекта
|
||||
|
||||
|
||||
|
||||
Так как же сделать свой OpenSource проект?
|
||||
|
||||
(сделать скрины к каждому элоементу)
|
||||
0. Зарегестрируйтесь на Github
|
||||
1. Создайте Git репозиторий
|
||||
2. Выберете лицензию
|
||||
- MIT, если не знаете что выбрать
|
||||
- GNU GPLv3, если вы хотите, чтоб ваш проект был свободным ПО
|
||||
3. Склонируйте репозиторий `git clone REPO_LINK`
|
||||
Однако если мы склонируем по SSH ссылке, мы получим ошибку. Т.к. сам github говорит, что мы не добавили SSH ключ в наш аккаунт.
|
||||
Нажимаем по ссылке, а пока идём в терминал и генерируем SSH ключ с помощью `ssh-keygen`, нажимаем 3 раза enter. Выводим публичный SSH ключ с помощью `cat` и копируем его.
|
||||
Далее вставляем в наши SSH ключи на Github. После этого мы сможем скачивать репозитории по SSH и загружать изменения, что предотвратит проблемы в будущем.
|
||||
4. Составьте план разработки
|
||||
Вам нужно:
|
||||
- Запишисать какие функции должна выполнять программа
|
||||
- Запишисать какие входные данные нужны для неё
|
||||
- Разбейить эти функции на мельчайшие компоненты, шаги, который должны выполнить программа
|
||||
- поставьте для них приоритеты:
|
||||
- базовые/необходимые функции
|
||||
- дополнительные функции
|
||||
- улучшения
|
||||
К примеру, изначальная идея:
|
||||
"Я хочу написать программу, которая будет помогать определить работает ли DOS на сайт, то есть сравнить скорость ответа от веб сервера до того как я начну атаку и после (назовём это DOS Checker), а также было бы круто, если бы она делала это в реальном времени и с красивым интерфейсом. Также нужна возможность вставлять кастомные Header'ы и делать POST запросы, если мы ломаем что-то на бэкэнде. А также хочется иметь возможность проверить, правильно ли происходят запросы, так что нужна поддержка http proxy для перехвата запросов. И для точности измерений, пусть она делает несколько запросов и вычесляет среднее время ответа."
|
||||
|
||||
В качестве входных данных нам нужны: опрашиваемая URL страница, тип запроса GET/POST (по умолчанию GET), тело запроса (для POST), ссылка на http proxy и запускать ли в режиме мониторинга.
|
||||
|
||||
Теперь нужно разбить эти функции на мельчайшие шаги:
|
||||
- DOS Checker:
|
||||
- получить ссылку из терминала
|
||||
- Записать её в переменную
|
||||
- с помощью библеотеки, сделать GET запрос к ссылке
|
||||
- получить из библеотеки время ответа
|
||||
- записать в переменную
|
||||
- дать пользователю запустить атаку, то есть будем ждать нажатия любой кнопки
|
||||
- повторить процедуру
|
||||
- сравнить перемынные, если время ответа увеличилось в 2 раза или больше, значит атака успешна
|
||||
- http proxy
|
||||
- получить переменную из флага терминала
|
||||
- если переменная не пуста, значит устанавливаем её в качестве прокси в библеотеке во всех функциях
|
||||
- POST запросы + тело запроса
|
||||
- Сделать отдельную функцию, которая будет делать POST запросы, на вход принимать тело запроса
|
||||
- если POST флаг присутсвует, то вместо функции GET запроса, отправляем POST запрос с переменной из фалга тела запроса
|
||||
- кастомные header'ы
|
||||
- если флаг не пустой, то добавить его в header'ы всех функций, которые делают запросы
|
||||
<!-- - среднее время ответа -->
|
||||
<!-- - если присутствует флаг, сделать несколько запросов через промежутки времени вместо одного запроса, получить их время ответа -->
|
||||
<!-- - вычислить среднее время ответа -->
|
||||
- Режим мониторинга
|
||||
- найти библеотеку для красивого отображения терминального интерфейса
|
||||
- представить как оно должно выглядеть
|
||||
- ...
|
||||
А теперь приоритеты:
|
||||
Необходимые функции:
|
||||
- DOS Checker
|
||||
- http proxy
|
||||
Дополнительные функции:
|
||||
- среднее время ответа
|
||||
- POST запросы
|
||||
Улучшения
|
||||
- кастомные header'ы
|
||||
- режим мониторинга
|
||||
5. Начните разрабатывать вашу программу начиная с базовых функций
|
||||
Просто садитесь и старайтесь сделать тот элемент, которую вы хотите. Гугл вам в помощь. Если гугл не даёт вам нужных результатов, значит нужно разбить функцию на ещё более маленькие элементы.
|
||||
и как привнесёте нужные изменения, проверьте, что прграмма функционирует как вы хотит. Затем загрузите изменеия в репозиторий с помощью комманд `git add . && git commit -am 'новая фича' && git push`.
|
||||
Однако вы наверняка столкнётесь с тем, что git не знает кто вы, по этому он попросит вас добавить ваш email и имя командами `git config`.
|
||||
А, `git add .` - добавляет новые файлы в репозиторий
|
||||
`git commit -am 'новая фича'` - фиксирует сохранение измений, к которым можно потом вернуться
|
||||
`git push` - загружает их на GitHub. Для этого нужно будет добавит SSH ключ вашего ПК в Github аккаунт, но мы уже это сделали.
|
||||
После этого наши локальные изменения отобразятся на github.
|
||||
6. Напишите README
|
||||
README, это простой текстовый файл, который описывает ваш проект, и это первое, что увидет потенциальный пользователь в вашем инструменте.
|
||||
README должен ответить на вопросы
|
||||
- Что делает проект?
|
||||
- Почему он будет полезен, то есть какой usecase?
|
||||
- Как мне установить и попробывать его?
|
||||
- Какие есть функции и как ими пользоваться? То есть небольшная документация
|
||||
|
||||
|
||||
|
||||
И сейчас я расскажу свой опыт разработки
|
||||
|
||||
|
||||
<!-- 5.30m (но я торопился, так что 6.30m) -->
|
||||
|
||||
## пример - owncloud_bruteforcer
|
||||
|
||||
|
||||
Во время пентеста, я нашёл owncloud сервис. Owncloud - это OpenSource облачное хранилище, которое можно развернуть на своём сервере. И сделав несколько попыток авторизации, я заметил, что сервис их не блокирует. Я решил, что можно перебирать пароли для пользователей, сделать отчёт и получить за него вознаграждение.
|
||||
|
||||
Вот только возникла проблема, я не нашёл программу, которая могла выполнить все требования owncloud для авторизации. Видите ли, owncloud нужно для авторизации:
|
||||
- валидный CSRF токен, который можно получить в теле страницы логина
|
||||
(показать как на owncloud оно в исходниках)
|
||||
- cookie, которые можно получить в header'ах ответа
|
||||
(показать как на owncloud оно в header'ах сервера)
|
||||
- а также определённые Header'ы в запросе, по типу "accept", которое приложение ожидает от клиента
|
||||
(показать как на запросах он идёт)
|
||||
|
||||
|
||||
Я хочу написать bruteforcer, т.е. программу, которая пытается найти нужный пароль для пользователя, пытаясь авторизорваться с помощью wordlist'a, т.е. файла с паролями. Более того, я хочу иметь возможность атаковать сразу нескольких пользователей одной командой, предоставляя вместо имени пользователя, файл с пользователями. А в случае с owncloud, перед каждой попыткой авторизоваться, программа должна перейти на страницу логина, чтоб получить CSRF токен и cookie.
|
||||
|
||||
<!-- 1.30m -->
|
||||
|
||||
### Идея
|
||||
|
||||
( визуализировать то о чём я говорю, т.е. каждый элемент)
|
||||
|
||||
И так, идея была проста, нам нужно:
|
||||
- получить входные данные через флаги запуска программы
|
||||
- с возможностью атаковать либо одного юзера, либо сразу множество из файла
|
||||
- получить CSRF токен с cookie
|
||||
- то есть сделать GET запрос на страницу логина
|
||||
- с помощью регулярных выражений вычленить от туда токен
|
||||
- с помощью регулярных выражений вычленить cookie из Header'ов
|
||||
- и вставить их в переменные
|
||||
- использовать файлом с паролями, для перебора
|
||||
- попытаться авторизоваться
|
||||
<!-- (только сейчас клик) -->
|
||||
- в цикле запускается несколько воркеров, паралельных операций, которые будут пытаться авторизоваться
|
||||
- каждый воркер, получает новый CSRF токен, а заодно и cookie
|
||||
- каждый из воркеров берёт следующий пароль из wordlist'a и пытается авторизоваться, т.е. делает POST запрос подставляя username и пароль в тело запроса
|
||||
- происходит проверка успешности авторизации через то, что ответит сервер на запрос
|
||||
|
||||
<!-- 2.50m (слишком торопился) -->
|
||||
|
||||
### Разработка
|
||||
|
||||
|
||||
|
||||
Во время разработки, я понял, что очень неудобно дебажить работает ли попытка авторизация, выводя весь пакет в терминале, по этому нужно добавить поддержку http proxy, чтоб я мог смотреть его в burp и иметь возможность проверить, что мы успешно авторизуемся
|
||||
(скрин бурпа)
|
||||
(сделать, чтоб по нажатии он добавлялся в презенташку в список идей)
|
||||
|
||||
Во время разработки были баги, много багов. Помимо скучных и не совсем понятных багов, был и неожиданный:
|
||||
Суть в том, что я изначально использовал channel, Channel в Go используется для передачи данных между разными частями программы, которые работают параллельно. Вы можете представить себе channel как трубку, через которую данные могут быть переданы из одной части программы в другую. И в эту трубку можно ложить какое-то количество переменных,где они выстраиваются в очередь,
|
||||
После извлечения переменной из канала, она пропадает. Это решение отлично подходило в моём случае, потому что, у меня несколько воркеров, каждому из которых нужен следующий по списку, неиспользованный пароль.
|
||||
Так в чём заключалается проблема в этом псевдокоде?
|
||||
<!-- 1.30m -->
|
||||
(псевдокод, упрощён для понимания)
|
||||
```go
|
||||
func main() {
|
||||
|
||||
// делаем что-то
|
||||
|
||||
for _,user := range users { // Цикл, для каждого пользователя выполнится код ниже.
|
||||
// а также получаем переменную user, из массива users
|
||||
|
||||
pass := make(chan string, 15000001) // Создаём канал pass, с буффером в 15млн переменных.
|
||||
// rockyou - 14,344,391
|
||||
|
||||
for passwords.Scan() { // Для каждого пароля из всех паролей из файла
|
||||
pass <- string(passwords.Text()) // добавим пароль в канал pass
|
||||
}
|
||||
close(pass) // закрываем канал, чтоб функция bruteforce
|
||||
// не ждала новых переменных в канале
|
||||
|
||||
for i:=0; i<10; i++ { // выполняем цикл 10 раз,
|
||||
go bruteforce(user,pass) // go - запустить паралельно функцию.
|
||||
// В следствии чего запускаем 10 функций bruteforce,
|
||||
// которые в цикле читают пароли из канала
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
(3 минуты таймаут)У вас 3 минуты, можете поднимать руку и высказывать предположения. Дам подсказку, этот баг в итоге сожрёт всю оперативу, почему именно это происходит?
|
||||
|
||||
|
||||
|
||||
Дам ещё подсказку, вот так можно на скорую руку, починить проблему
|
||||
```go
|
||||
func main() {
|
||||
|
||||
// делаем что-то
|
||||
|
||||
for _,user := range users {
|
||||
pass := make(chan string, 15000001)
|
||||
|
||||
for passwords.Scan() {
|
||||
pass <- string(passwords.Text())
|
||||
}
|
||||
close(pass)
|
||||
|
||||
for i:=0; i<10; i++ {
|
||||
go bruteforce(user,pass)
|
||||
}
|
||||
|
||||
runtime.GC() // Чистим память от неиспользуемых переменных
|
||||
}
|
||||
}
|
||||
```
|
||||
В общем проблема заключается в том, что чистильщик памяти (garbage collector) в Go, не успевает чистить память от уже неиспользуеммых каналов которые создаются в цикле. Но при этом варианте, программа всё ещё занимает под 250МБ памяти, что как минимум, не то, что я от неё ожидаю. Так что финальное решение стало:
|
||||
<!-- 1м -->
|
||||
```go
|
||||
func main() {
|
||||
|
||||
// делаем что-то
|
||||
|
||||
for _,user := range users {
|
||||
pass := make(chan string, 1000) // Меняем буфер на 1000 элементов
|
||||
// т.е. мы ожидаем, что одновременно
|
||||
// будет работать меньше 1000 потоков
|
||||
|
||||
go func(){ // запускаем добавление паролей в фоне
|
||||
for passwords.Scan() {
|
||||
pass <- string(passwords.Text())
|
||||
}
|
||||
close(pass)
|
||||
}()
|
||||
|
||||
for i:=0; i<10; i++ {
|
||||
go bruteforce(user,pass)
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
То есть программа запускает фоновый процесс, который добавляет пароли пока не заполнится буфер в 1000 элементов, а как место освободится, он добавляет новые пароли. В то же время дальше паралельно запускаются воркеры, которые уже брутфорсят пароль юзера
|
||||
|
||||
и не отходя далеко от темы багов можно поговорить за медленное программирование и cult of done, потому что у финального решения есть недостаток - мы для каждого пользователя по новой читаем файл с паролями, а если у нас пароли на медленном и умирающем жёстком диске, то это как минимум замедлит брутфорс. Тем не менее, это решение работает в рамках того какие баги я могу допустить.
|
||||
Т.е. к багам, лично для меня есть 2 варианта подхода:
|
||||
Медленное программирование
|
||||
и
|
||||
Следовать манифесту Cult of Done
|
||||
|
||||
Что такое медленное программирование? - Это когда вы программируете, не для того, чтоб выполнить задачу, а чтобы заниматься творчеством и получать удовольствие от этого. То есть вы медленно, спокойно, пытаетесь решить проблему, элемент кода, самым эффективным решением. И много людей получают от этого кайф.
|
||||
|
||||
И второй вариант это следовать манифесту Cult of Done, он не про программирование, но он про то как быстрее делать задачи. А ещё он короткий и мне нравится, вот часть манифеста:
|
||||
|
||||
2.Смиритесь: всё, что вы делаете – это "черновой вариант". Так проще завершить работу. - Ожидайте, что ваш проект никогда не будет законченным, он не будет иметь всех функций, иметь самый оптимизированный код, или полнуй документацию.
|
||||
3.Этапа "редактирования" не существует. - Если вы считаете, что вот вы напишите сейчас основные функции программы, а потом начнёте их оптимизировать, то знайте, этого либо не будет, либо займёт непомерно много времени. По этому нужно писать хорошее решение сразу.
|
||||
7.Сделав что-то, можно про это забыть. - написали программу? Забудьте про её поддержку. У вас и так достаточно проектов над которыми вам нужно работать.
|
||||
8.Смейтесь над совершенством. Оно скучно и мешает вам завершить результат. - хоть я и перфекционист, но вы никогда не закончите проект, если будете делать его идеальным
|
||||
10.Поражение тоже считается завершённостью. Совершайте ошибки. - если у вас не вышло написать программу, то вы всё ещё в выйгрыше, вы узнали что-то новое и в следующий раз сделаете лучше.
|
||||
|
||||
|
||||
Какой подход лучше - решать исключительно вам.
|
||||
|
||||
Но что для меня оказалось более неожиданным, так это то как реагирует owncloud на мою прогрмму.
|
||||
Оказывается, помимо программы по брутфорсу паролей, я написал программу по DoS-у. Когда я тестил программу в своей лабе, я заметил, owncloud грузит процессор на 100%.
|
||||
(скрин)
|
||||
|
||||
Я вам расказываю про баги, для того, чтоб вы понимали, что ошибки в процессе - это совершенно нормально, без ошибок, ваша программа, и особенно вы, не станете лучше. Совершайте ошибки.
|
||||
|
||||
Изучить финальную программу можно по qr коду, а вот так работает программа
|
||||
(Демка)
|
||||
|
||||
<!-- 4м -->
|
||||
|
||||
# Выводы
|
||||
|
||||
|
||||
И так, резумируем доклад. Вы сегодня узнали:
|
||||
- Узнали про OpenSource, виды лицензий и Free Software
|
||||
- Узнали что будет если написать революционный хакерский инструмент (metasploit)
|
||||
- узнали как сделать свой первый OpenSource проект, а это:
|
||||
- сделать Git репозиторий,
|
||||
- составить план разработки,
|
||||
- выставить приоритеты для функций программы,
|
||||
- разделить их на самые малые шаги,
|
||||
- и начать писать
|
||||
|
||||
|
||||
<!-- 30s -->
|
||||
|
||||
## Community track блиц
|
||||
|
||||
А теперь небольшой Community track блиц:
|
||||
|
||||
1) Чего не хватает в современных профессиональных сообществах?
|
||||
Я считаю, что не хватает открытости, к примеру крайне мало пентестеров пишут о том как ищут уязвимости, какая у них методология и в каком случае она подходит. Особенно если в краткой форме. Мне лично очень этого не хватает, так что я пишу такие методологии для себя и буду делиться ими в своём блоге.
|
||||
|
||||
2) Представь, что проекты, которые ты описал в докладе не были созданы. Как бы ты решал исходную задачу?
|
||||
Я говорил про metasploit, Git, GoLang, а также про owncloud_bruteforcer
|
||||
- Как по мне, Metasploit сделал ИБ сообщество таким, которое оно есть сейчас. Но если бы оно никак не повлияло на ход истории, то я бы просто пользовался exploit-db, т.к. там уже есть эксплоиты из metasploit.
|
||||
- Если бы у нас не было git, то программисты делились бы кодом, в zip архивах и это было бы коллабарационный ад. Разработка затягивалась бы в десятки раз. А я сам бы пользовался контролем версий в Nextcloud, а также снапшотами BTRFS.
|
||||
- Не будь у нас Go, я бы наверное писал на C++ или python, но потихоньку переходил бы на rust.
|
||||
- Если бы я не написал owncloud_bruteforcer - я бы сделал скриптец, который через curl'ы имитировал бы мою программу. Но разработка бы затянулась, чтоб сделать процесс мультипоточным.
|
||||
|
||||
3) Какой open source проект тебе хотелось бы создать если будет больше времени/ресурсов?
|
||||
Я уже начал разработку такого проекта, но из-за доклада он на паузе. Это Ruina - моя автоматизация Recon'а для пентеста. Как допишу до первой стабильной версии - выложу в opensource и сообщу в своём блоге.
|
||||
|
||||
<!-- Если получится интегрировать в канву доклада, то хорошо) Можно просто перед последним слайдом "Спасибо". Сделать слайд "Community track блиц" с этими вопросами и кратко ответить) -->
|
||||
<!-- Основная идея в том, чтобы узнать ваше мнение и побудить слушателей глубже задуматься об открытых проектах и сообществах. -->
|
||||
<!-- Ответы не должны быть длинные, чтобы не отнимать время вашего доклада. Буквально по минуте рассуждений в свободной форме. -->
|
||||
|
||||
|
||||
Вы можете оставить фидбек для меня, а также найти транскрипцию доклада, и материалы к ней по QR коду далее
|
||||
(TODO транскрипция доклада, и материалы по QR коду)
|
||||
(qr код на фидбек)
|
||||
|
||||
<!-- 2.30m -->
|
||||
|
||||
## Final
|
||||
|
||||
<!-- (плот твист с закрытой лицензией доклада) -->
|
||||
И раз уж вы все досмотрели этото доклад до конца, вы обязаны выполнять условия лицензии, я зачитаю несколько из секции 7.
|
||||
- Будьте этичными хакерами
|
||||
- Делитесь исходным кодом своих программ
|
||||
- Позвоните маме и сделайте комплимент.
|
||||
(qr код на лицензию + фотка интересной части)
|
||||
|
||||
<!-- И вот вам FunFact - Эта призентация была на столько большая, что изначально она была на полтора часа -->
|
||||
|
||||
Источники.
|
||||
|
||||
Спасибо за внимание!
|
||||
|
||||
<!-- 25s -->
|
||||
|
||||
---
|
||||
|
||||
# источники
|
||||
|
||||
https://choosealicense.com/
|
||||
https://www.youtube.com/watch?v=B5GF3ror7WI
|
||||
https://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
|
||||
https://stackoverflow.com/questions/3902754/mit-vs-gpl-license
|
||||
https://www.gnu.org/philosophy/open-source-misses-the-point.html
|
||||
https://dev.to/opensauced/open-source-101-a-beginners-guide-to-getting-started-37fb
|
||||
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BF%D1%80%D0%B8%D0%B5%D1%82%D0%B0%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
|
||||
<!-- https://www.theverge.com/2023/12/5/23989290/playstation-digital-ownership-sucks -->
|
||||
<!-- https://www.reddit.com/r/playstation/comments/pso78i/sony_has_permanently_banned_my_ps5_reported/ -->
|
||||
https://www.gnu.org/proprietary/proprietary.html
|
||||
https://www.gnu.org/philosophy/open-source-misses-the-point.html
|
||||
https://www.gnu.org/philosophy/free-sw.html
|
||||
https://www.quora.com/What-are-examples-of-open-source-software-that-are-not-free-software
|
||||
https://opensource.guide/starting-a-project/
|
||||
https://www.makeareadme.com/
|
||||
https://gist.github.com/PurpleBooth/109311bb0361f32d87a2
|
||||
https://darknetdiaries.com/transcript/111/
|
||||
https://www.infosecinstitute.com/resources/malware-analysis/malware-as-a-service/
|
||||
https://habr.com/ru/articles/727464/
|
||||
https://www.labirint.ru/books/495586/
|
||||
чатик standoff365
|
||||
https://cleverics.ru/digital/2012/05/cult-of-done/
|
||||
https://www.youtube.com/watch?v=bJQj1uKtnus
|
||||
https://kata.academy/article/kak-pravilno-guglit-programmistu
|
||||
https://en.wikipedia.org/wiki/Permissive_software_license
|
||||
https://en.wikipedia.org/wiki/MIT_License
|
||||
https://en.wikipedia.org/wiki/Apache_License
|
||||
lurk
|
||||
https://securelist.ru/the-hunt-for-lurk/29220/
|
||||
https://securelist.ru/bankovskij-troyanec-lurk-specialno-dlya-rossii/28708/
|
||||
https://www.interfax.ru/russia/821938
|
||||
https://www.kommersant.ru/doc/5216634
|
||||
https://unit42.paloaltonetworks.com/unit42-understanding-angler-exploit-kit-part-1-exploit-kit-fundamentals/
|
||||
https://i.redd.it/oy3zh5xhyra91.png
|
||||
https://vc.ru/legal/130439-polzovatelskoe-soglashenie-pyat-sovetov-ot-yurista
|
||||
https://yandex.ru/legal/rules/
|
||||
https://kata.academy/article/kak-pravilno-guglit-programmistu
|
||||
https://exploringyourmind.com/the-hawthorne-effect-we-change-when-people-watch-us/
|
||||
https://www.gnu.org/philosophy/free-sw.ru.html
|
||||
https://opensource.org/osd
|
||||
|
||||
---
|
||||
медиа
|
||||
https://cdn.business2community.com/wp-content/uploads/2015/06/Open-Source-Logo-517x500.png.png
|
||||
https://pngimg.com/uploads/hacker/hacker_PNG23.png
|
||||
https://img2.joyreactor.cc/pics/post/geek-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-6555426.png
|
||||
https://www.pngegg.com/en/png-twwdz
|
||||
https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwiki.installgentoo.com%2Fimages%2Fthumb%2Fb%2Fba%2FSaintstallman.png%2F240px-Saintstallman.png&f=1&nofb=1&ipt=17158a05b6e2ede086b09fd610edd9d2c3ce82f70b251c657131e3c4e7816ada&ipo=images
|
||||
https://www.meme-arsenal.com/create/meme/12552572
|
||||
https://programmerhumor.io/wp-content/uploads/2021/07/programmerhumor-io-programming-memes-7bab27ca853c90a-768x516.jpg
|
||||
https://dazeinfo.com/wp-content/uploads/2012/04/Google-dont-be-evil1.jpg
|
||||
https://programmerhumor.io/wp-content/uploads/2021/07/programmerhumor-io-programming-memes-7bab27ca853c90a-768x516.jpg
|
||||
https://logos-world.net/wp-content/uploads/2020/09/Google-Logo.png
|
||||
https://pplware.sapo.pt/wp-content/uploads/2011/06/metasploit_logo.png
|
||||
https://atomrace.com/blog/wp-content/uploads/2017/10/metasploit-logo-300x300.png
|
||||
https://upload.wikimedia.org/wikipedia/commons/c/c9/Hdm2018.png
|
||||
https://www.inforte.com/wp-content/uploads/2020/12/rapid-logo-mup.jpg
|
||||
https://ashitani.jp/golangtips/gopher.png
|
||||
https://gowithcode.com/wp-content/uploads/2021/04/top-programming-languages.jpg
|
||||
https://avatanplus.com/files/resources/original/570a76716c3a215400deab23.png
|
||||
https://www.freeiconspng.com/img/44299
|
||||
https://www.dirjournal.com/info/wp-content/uploads/2012/02/UK-Flag-1.jpg
|
||||
https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.meme-arsenal.com%2Fcreate%2Ftemplate%2F8677148&psig=AOvVaw3TWd4xa5Hr6ALcJMMO9TDs&ust=1715354545860000&source=images&cd=vfe&opi=89978449&ved=0CBAQjRxqFwoTCJC4oOXvgIYDFQAAAAAdAAAAABAE
|
||||
https://www.google.com/imgres?q=just%20do%20it%20meme&imgurl=https%3A%2F%2Fi.giphy.com%2Fmedia%2Fb7f0X8Okk1uyk%2Fsource.gif&imgrefurl=https%3A%2F%2Fdev.to%2Fspences10%2Fcomment%2Fhge&docid=eUXoB89XLopxnM&tbnid=Kl1WOHnH41Hn8M&vet=12ahUKEwjk6fKu8ICGAxWzKhAIHTdRA5QQM3oECGsQAA..i&w=1280&h=720&hcb=2&ved=2ahUKEwjk6fKu8ICGAxWzKhAIHTdRA5QQM3oECGsQAA
|
||||
https://computergeek.nl/wp-content/uploads/2015/01/linux-tux_00378819-1024x768.jpg
|
||||
https://carbon.now.sh
|
||||
https://github.com/charmbracelet/vhs
|
||||
https://www.youtube.com/watch?v=sqBvq0_UF6M
|
||||
https://doc.owncloud.com/webui/next/classic_ui/webinterface.html
|
||||
|
||||
https://stackoverflow.com/questions/28958192/no-output-from-goroutine
|
||||
https://go.dev/play/p/584-MAYeMUL
|
||||
https://gobyexample.com/command-line-flags
|
||||
https://gobyexample.com/channels
|
||||
|
||||
http://color.aurlien.net/#212121
|
BIN
content/hidden/test.jpg
Normal file
BIN
content/hidden/test.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
@ -4,7 +4,7 @@ draft = false
|
||||
+++
|
||||
|
||||
Chat with me on:
|
||||
- XMPP: casual@pwned.life
|
||||
- XMPP: [casual@pwned.life](xmpp://casual@pwned.life)
|
||||
|
||||
Or write your message here (with contact information) and I will contact you:
|
||||
<!--more-->
|
||||
|
12
hugo.yaml
12
hugo.yaml
@ -53,7 +53,7 @@ params:
|
||||
author: "Casual"
|
||||
email: c@sual.in # used for microformats
|
||||
avatar: "/images/me.png" # used for microformats
|
||||
description: "casual description #TODO"
|
||||
description: "Hacking blog"
|
||||
# Uncomment if you need this
|
||||
# images:
|
||||
# - images/og-featured.png # relative path to "static" directory
|
||||
@ -63,7 +63,7 @@ params:
|
||||
# - js/main.js # relative path to "assets" directory
|
||||
# dateFormat: "29.01.2024"
|
||||
# dateFormat: "29.01.2024"
|
||||
paginationSinglePost: true
|
||||
paginationSinglePost: false
|
||||
style: dark-without-switcher
|
||||
mainSections: [ "blog" ] # which sections should be on index/main page
|
||||
sectionsWithFullContentOnListPage: [ "notes" ] # for which sections content should be displayed on list pages
|
||||
@ -114,10 +114,10 @@ params:
|
||||
# icon: "hugo"
|
||||
#test rm me
|
||||
|
||||
# markup:
|
||||
# goldmark:
|
||||
# renderer:
|
||||
# unsafe: true # enable raw HTML in Markdown
|
||||
markup:
|
||||
goldmark:
|
||||
renderer:
|
||||
unsafe: true # enable raw HTML in Markdown
|
||||
# module:
|
||||
# imports:
|
||||
# - disable: false
|
||||
|
BIN
static/PHD2_presentation.pptx
Normal file
BIN
static/PHD2_presentation.pptx
Normal file
Binary file not shown.
BIN
static/hidden/PHD2_presentation.pptx
Normal file
BIN
static/hidden/PHD2_presentation.pptx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user