Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
17
Добавлен:
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

 

 

INetSim  143 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

 

 

 

 

 

crontab также можно рассматривать как вариант.

root@spider-c2-1:~# cp /etc/letsencrypt/live/spider.ml/fullchain.pem

/usr/share/inetsim/data/certs/

root@spider-c2-1:~# cp /etc/letsencrypt/live/spider.ml/privkey.pem

/usr/share/inetsim/data/certs/

Вероятно,намстоитпопытатьсякакможнолучшезащититьзакрытыйключ. Мы установим для владельца файла значение inetsim и ограничим права доступа для всех остальных пользователей, используя команду chmod.

root@spider-c2-1:~# chown inetsim:inetsim /usr/share/inetsim/data/certs/privkey.pem

root@spider-c2-1:~# chmod 400 /usr/share/inetsim/data/certs/privkey.pem

Теперь можем включить смоделированную HTTPS-службу и проверить подлинность сертификата.

Рис.6.4. HTTPS-сертификат сервера,предоставленный Let's Encrypt

INetSim

Для легкости будем использовать INetSim, чтобы эмулировать различные сетевые сервисы.

Он быстро настраивает слушателей для множества известных портов и даже предоставляет ответы по умолчанию, используя соответствующий прото-

 

 

 

 

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 144  Глава 6.Обнаружение и эксплуатация уязвимостей в приложениях...

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

кол.Например,можно запустить FTP-службу,которая будет принимать любые

 

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

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

Двоичные файлы, исходный код и документация по INetSim до-

ступны на странице http://www.inetsim.org/.

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

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

root@spider-c2-1:~# echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list

root@spider-c2-1:~#

ЧтобынедопуститьжалоботсистемыDebianвовремяустановки,можнополучить ключ подписи репозитория с помощью команды wget. Мы передадим ответ в apt-key,чтобы добавить его в нашу цепочку ключей.

root@spider-c2-1:~# wget -O - https://www.inetsim.org/inetsimarchive- signing-key.asc | apt-key add -

[...]

(464 MB/s) - written to stdout [2722/2722] OK

root@spider-c2-1:~#

Следующий шаг – получение пакета inetsim из недавно установленного репозитория apt и его установка.

root@spider-c2-1:~# apt-get update && apt-get install inetsim

[...] root@spider-c2-1:~#

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

 

 

 

 

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

 

 

INetSim  145 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

 

 

 

 

 

тернете.

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

Можно отключить ненужные нам сервисы, отредактировав файл /etc/ inetsim/inetsim.conf. Можем добавить к каждой строке start_service, ко-

торую хотим отключить, знак решетки (#), как показано ниже.

Рис.6.5. Редактирование файла конфигурации INetSim, чтобы активировать только имитацию DNS,HTTP и HTTPS

Конфигурацию DNS по умолчанию также нужно изменить, чтобы соответствовать делегированной зоне c2.spider.ml. Значение dns_default_ip должно указывать на внешний IP-адрес командно-контрольного сервера, поскольку мы хотим,чтобы HTTP-трафик также перенаправлялся туда.

Значение dns_default_hostname будет поддоменом зоны c2, а значение dns_default_domainname – родительским доменом spider.ml. По сути, таким

 

 

 

 

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 146  Глава 6.Обнаружение и эксплуатация уязвимостей в приложениях...

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

образом мы даем указание INetSim отвечать на любые запросы в данной зоне,

 

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

используя значение dns_default_ip.

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

Рис.6.6. Параметры dns_default_ *,измененные в файле конфигурации /etc/inetsim/inetsim.conf

По умолчанию INetSim отвечает на запросы «поддельными» данными по умолчанию для любого запрашиваемого протокола. Эти «поддельные» файлы хранятся в /var/lib/inetsim, и они довольно наглядны. Чтобы быть немного более тайным, следует по крайней мере добавить невинный текст в HTTPответы по умолчанию.

Приведенная ниже команда echo заменит содержимое примеров HTTPфайлов на безобидный код JavaScript.

root@spider-c2-1:~# echo 'console.log("1");' > /var/lib/inetsim/http/fakefiles/sample.html

root@spider-c2-1:~# echo 'console.log("2");' > /var/lib/inetsim/http/wwwroot/index.html

Чтобы подключитьнаш простой командно-контрольный сервер к сети,нужно запустить домен INetSim и предписать ему слушать на всех адресах маши-

 

 

 

 

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

 

 

INetSim  147 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

ны, указав IP-адрес

0.0.0.0, используя опцию --bind-address, как показано

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ниже.

root@spider-c2-1:~# inetsim --bind-address=0.0.0.0 INetSim 1.2.7 by Matthias Eckert & Thomas Hungenberg [...]

Forking services...

*dns_53_tcp_udp - started (PID 4110)

*https_443_tcp - started (PID 4112)

*http_80_tcp - started (PID 4111) done.

Simulation running.

Мы можем протестировать DNS-сервер, предоставленный INetSim, перейдя к случайному поддомену в рамках делегированного домена, либо выполнив запрос dig со своего атакующего компьютера, где установлен Kali.

root@kali:~# dig +short c2FudGEgY2xhdXNlIGlzIG5vdCByZWFs.c2.spider.ml 35.196.100.89

Наш DNS-запрос проходит через интернет по следующему пути.

1.Клиент запрашивает ответ у своих локальных DNS-серверов.

2.Локальный DNS-сервер пересылает запрос на корневые серверы.

3.Корневыесерверыперенаправятзапрос кавторитативномусерверудомена верхнего уровня ML.

4.Авторитативный сервер передаст запрос доменному центру spider.ml.

5.Запись NS, которую мы добавили ранее, перенаправит запрос на наш командно-контрольный сервер.

Поскольку мы контролируем этот DNS-сервер, отвечающий за зону c2, то можем проверить /var/log/inetsim/service.log и наблюдать ответ, отправленный запросу dig, используя команду tail, как показано ниже.

root@spider-c2-1:~# tail /var/log/inetsim/service.log [...] [11033] [dns_53_tcp_udp 11035] connect

[...] [11033] [dns_53_tcp_udp 11035] recv: Query Type A, Class IN, Name c2FudGEgY2xhdXNlIGlzIG5vdCByZWFs.c2.spider.ml

[...] [11033] [dns_53_tcp_udp 11035] send: c2FudGEgY2xhdXNlIGlzIG5vdCByZWFs.c2.spider.ml 3600 IN A 35.196.100.89 [...] [11033] [dns_53_tcp_udp 11035] disconnect

[...] [11033] [dns_53_tcp_udp 11035] stat: 1 qtype=A qclass=IN