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

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 47_Optimized

.pdf
Скачиваний:
16
Добавлен:
20.04.2024
Размер:
11.92 Mб
Скачать

 

 

 

 

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

 

 

 

 

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

80 ЗАЩИТА ХИТРЫЙ ТЮНИНГ И ГРАМОТНАЯ ЗАЩИТА

Toxa (toxa@cterra.ru)

ХИТРЫЙ ТЮНИНГ И ГРАМОТНАЯ ЗАЩИТА

ПОЛЕЗНЫЕ ПРИЕМЫ НАСТРОЙКИ СЕРВЕРА

Òы поставил и настроил сервер. У тебя все работает, пользователи довольны, и теперь настало время добавить в систему ту самую изюминку, о которую, возможно, сломает зуб не один взломщик.

 

 

 

 

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

 

 

 

 

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

SYN-флуд – переполнение очереди открытых соединений в состоянии SYN-sent.

Узнать

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

»

ТЮНИНГУЕМ

СИСТЕМУ

 

 

 

 

Первый шаг - обе-

 

 

 

 

 

зопасить себя встроен-

ными средствами. Общение с ядром будем проводить че- рез sysctl - удобный интерфейс для тюнинга сетевой подсистемы. Расскажу на примере FreeBSD. В этой системе нужно обратить внимание, как минимум, на следующие переменные:

net.inet.tcp.blackhole=2

net.inet.udp.blackhole=1

По стандарту, если на закрытый порт сервера приходит SYN-пакет, машина должна ответить RST-пакетом. Это упрощает сканирование портов, а также дает достаточное количество информации (в виде ответов от сканируемого сервера) для определения версии ОС. "Черные дыры" заставляют FreeBSD быть предельно лаконич- ной, не отсылая ничего в ответ на запросы к закрытым портам. Идем дальше.

Маршрутизацию от источника можно смело отключить:

net.inet.ip.sourceroute=0 net.inet.ip.accept_sourceroute=0

Чтобы сервер не стал жертвой DoSатаки, можно включить механизм syncookies, который служит для защиты сервера от SYN-флуда. При серьезной атаке может не менее серьезно выручить. Выстави следующую переменную:

net.inet.tcp.syncookies=1

Чтобы затруднить определение версии твоей ОС анализом приходящих от нее пакетов, изменим значение Time To Live:

net.inet.ip.ttl=64

Современная система не должна отвечать на широковещательные пинги, но и по сей день существуют сети, которые могут стать источником DoS-

атаки. Чтобы не попасть в их список, выставляем:

net.inet.icmp.bmcastecho=0

Если ты хочешь отслеживать коннекты на закрытые порты твой машины, используй следующую переменную:

net.inet.tcp.log_in_vain=1

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

Если не нужна поддержка смешного протокола T/TCP (TCP for Transactions), то пакеты с флагами SYN+FIN можно смело отбрасывать как неликвидные :). Делается это так:

net.inet.tcp.drop_synfin=1

Протокол редко где используется, а потому это имеет смысл.

ОБМАНЫВАЕМ СКАНЕРЫ

Вторжение в систему начинается со сканирования - это прописная истина. Можно (и нужно) уже на этом этапе усложнить жизнь злоумышленнику. Так, пакетный фильтр OpenBSD PF имеет встроенную возможность определения и блокирования сканеров, используя технологию Passive OS Fingerprinting. Достаточно добавить правило "block quick from any os NMAP" в pf.conf, чтобы результаты работы популярного сканера nmap заставили хакера почесать затылок. Также nmap'у можно противодействовать с помощью "scrub in all" и фильтрации TCP-пакетов с особыми флагами, к примеру:

block return-rst in log quick proto tcp all flags FP/FP

block return-rst in log quick proto tcp all flags SE/SE

block return-rst in log quick proto tcp all flags FUP/FUP

Но можно обойтись и userland-сред- ствами. Например, утилитой portsentry, которая открывает для прослушивания указанные TCP/UDP-порты, логирует обращения к ним и позволяет реагировать на сканирование. После скачивания с http://packetstormsecurity.nl/UNIX/IDS/ и установки portsentry правим portsentry.conf:

TCP_PORTS="42,88,135,139,145,389,443,445, 464,593,636,637,1025,1026,1027,1029,1433,337 2,3389"

UDP_PORTS=""

Я указал набор TCP-портов, очень похожий на тот, что открывает Windows 2000 Server в дефолтовой установке. UDP-порты прослушивать мы не будем - их редко сканируют.

После этого имеет смысл указать хосты, чье сканирование мы будем игнорировать, например, машины из локалки. Пропиши путь к файлу со списком игнорируемых хостов:

IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"

Чтобы portsentry не занималась ненужным отображением IP-адреса в имя хоста, отключи обратный резольвинг:

RESOLVE_HOST = "0"

Достаточно добавить правило "block quick from any os NMAP" в pf.conf, чтобы результаты работы популярного

сканера nmap заставили хакера почесать затылок.

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

 

Далее блокируем IP-адреса хостов, с

 

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

которых производится сканирование:

 

 

 

 

 

 

 

 

 

BLOCK_TCP="1"

А теперь укажи, как ты хочешь это делать. Например, добавлением правила фаервола:

KILL_ROUTE="/sbin/ipfw add 1 deny all from $TARGET$:255.255.255.255 to any"

Также можно заносить атакующих в hosts.deny для усиления защиты демонов, использующих tcpwrappers:

KILL_HOSTS_DENY="ALL: $TARGET$ : DENY"

Наконец, можно указать баннер, выдаваемый при подключении к порту, прослушиваемому portsentry:

PORT_BANNER="WHOM DO YOU WANT TO HACK TODAY?"

Учти, что блокировать хосты таким образом - крайняя мера, так как есть возможность превратить network в notwork, заблокировав легитимных клиентов. В общем случае я бы не рекомендовал использовать KILL_ROUTE. У меня уже два с лишним года работает машинка, приспособленная в свое время именно для снятия подобной статистики (ради ин-

Так много сервисов? Нет, portsentry!

МНЕНИЕ ЭКСПЕРТА

Андрей "Andrushock" Матвеев, редактор рубрики "Unixoid" журнала "Хакер":

«Идеальной или совершенной защиты не бывает. Мы можем только стремиться к обеспечению должного уровня безопасности за счет своевременного обновления программного обеспечения, грамотного разграничения доступа, корректной настройки интернетслужб и, конечно же, предотвращения утечек информации - здесь я подразумеваю весь спектр предпринимаемых действий начиная с сокрытия сервисных баннеров и заканчивая воспрепятствованием перехвату конфиденциальных данных организации. Очень многое зависит от системного администратора, от его политики, опыта, навыков работы и знаний. Известны случаи, когда правильно сконфигурированные серверы на базе Red Hat Linux могли похвастаться тысячедневными аптаймами, в то время как хосты под управлением OpenBSD не выдерживали и недельного натиска глобальной сети. За счет открытого исходного кода можно каждый день изменять поведение системы и/или стека TCP/IP, главное - придерживаться одного простого правила: не ломать стандарты, задокументированные в RFC».

81

тереса). В настоящее время в hosts.deny содержится 12373 записи, и помимо злачных притонов интернета в черный список попали вполне легитимные адреса. Сервисы, работающие на том сервере, не используют tcpwrappers, так что никто не страдает. Но сам факт достоин внимания.

МЕНЯЕМ БАННЕРЫ

Любой демон, принимающий внешние соединения, так или иначе "демонстрирует себя" баннером - однострочным приветствием, выдающимся клиенту в ответ на соединение

ñним. Самый простой способ увидеть это - совершить соединение telnet'ом

ñсервером на порт, прослушиваемый демоном:

[(22:42)(29.10%)(p1):~/articles/tricksec ] telnet smtp.gameland.ru 110

Trying 62.213.71.4...

Connected to smtp.gameland.ru. Escape character is '^]'.

+OK Microsoft Exchange Server 2003 POP3 server version 6.5.7226.0 (server500.gameland.ru) ready.

Почти всегда это служебная инфор-

 

мация, нужная для работы сервиса,

 

но иногда - совершенно бесполезная

 

и даже вредная. Разные сервисы ве-

 

дут себя по-разному: кто-то ограни-

 

чивается лаконичным именем хоста

 

и типом сервиса (domain.com

»

 

 

 

 

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

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Для тех, кому не хватает Portsentry, Snort - мощная, динамично развивающася IDS

В дополнение к portsentry можно скачать и анализатор логов logsentry

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

NOW!

o

82

 

ЗАЩИТА

ХИТРЫЙ ТЮНИНГ И ГРАМОТНАЯ ЗАЩИТА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

ESMTP), а кто-то выдает себя с пот-

 

#define AP_SERVER_BASEPRODUCT

 

 

 

 

VsFTPd

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

рохами, раскрывая свое имя и вер-

"Apache"

 

 

 

 

 

 

Это чрезвычайно безопасный ftp-

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сию. Если в нашем примере будет

 

#define AP_SERVER_MAJORVERSION "2"

 

 

 

 

сервер с поддержкой ssl-соединений.

 

 

 

 

 

 

 

 

 

 

 

найдена уязвимость в определенных

 

#define AP_SERVER_MINORVERSION "0"

 

 

 

 

Указать баннер можно прямо в vsft-

 

 

 

 

 

 

 

 

 

 

 

 

версиях Exchange, то взломщик за

 

#define AP_SERVER_PATCHLEVEL "50"

 

 

 

 

pd.conf:

 

 

 

 

 

 

 

 

 

 

 

 

 

пару минут напишет баннер-граббер,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

который соединяется с хостами и

Postfix

 

 

 

 

 

 

ftpd_banner=mydomain.com Microsoft FTP

 

 

 

 

 

 

 

 

 

снимает с них версию Exchange. Та-

 

Этот удобный и (относительно, как и

 

 

 

 

Service (Version 5.0)

 

 

 

 

 

 

 

 

 

 

 

 

 

ким нехитрым способом можно легко

все в этом мире) безопасный SMTP-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

найти уязвимый хост. Теперь понят-

сервер позволяет указать баннер

 

 

 

 

BSD FTPd

 

 

 

 

 

 

 

 

 

 

 

 

 

но, почему смена баннера имеет

прямо в конфиге, main.cf:

 

 

 

 

 

 

Во Free/Net/OpenBSD можно попра-

 

 

 

 

 

 

 

 

 

 

 

смысл: она позволяет скрыть версию

 

 

 

 

 

 

 

 

вить приветствие стандартного ftpd.

 

 

 

 

 

 

 

 

 

 

 

 

сервиса или даже ввести в заблуж-

 

$smptd_banner = $mydomain ESMTP

 

 

 

 

Для этого нужно найти в файле

 

 

 

 

 

 

 

 

 

 

 

 

 

дение взломщика. По этой причине

MyCoolServer

 

 

 

 

/usr/src/libexec/ftpd/ftpd.c строчку:

 

 

 

 

 

 

 

 

 

 

 

 

 

многие демоны имеют возможность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

считывать баннер прямо из конфига.

Sendmail

 

 

 

 

 

 

reply(220, "%s FTP server (%s) ready.",

 

 

 

 

 

 

 

 

 

 

 

 

Åñëè æå íåò - ìû â ìèðå OpenSource

 

По умолчанию sendmail выдает

 

 

 

 

hostname, version);

 

 

 

 

 

 

 

 

 

 

 

 

 

и не поленимся залезть в исходники.

слишком много информации. В нем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Учти, смена баннера не даст нам пол-

часто находят уязвимости, так что

 

 

 

 

Она может встретиться несколько

 

 

 

 

 

 

 

 

 

 

 

 

 

ной иллюзии "другого" сервиса.

светить версией - себе дороже. Мож-

 

 

 

 

раз, так, во FreeBSD за баннер отвеча-

 

 

 

 

 

 

 

 

 

Шанс определить демона и, напри-

но поправить sendmail.cf:

 

 

 

 

ет конструкция:

 

 

 

 

 

 

 

 

 

 

 

 

 

мер, отличить Apache от IIS все рав-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

но остается - по поведению прог-

 

O SmtpGreetingMessage=$j ESMTP

 

 

 

 

 

 

if (hostinfo)

 

 

 

 

 

 

 

 

 

 

 

 

 

раммы в ответ на различные запро-

InsecureMailserver

 

 

 

 

 

 

reply(220, "%s FTP server (%s) ready.",

 

 

 

 

 

 

 

 

 

 

 

 

сы, коду ошибок, специфичных сооб-

 

 

 

 

 

 

 

 

hostname, version);

 

 

 

 

 

 

 

 

 

 

 

 

 

щений, формированию заголовков

Èëè sendmail.mc:

 

 

 

 

 

 

else

 

 

 

 

 

 

 

 

 

 

 

 

 

писем (в случае SMTP-сервера) и т.п.,

 

 

 

 

 

 

 

 

 

 

reply(220, "FTP server ready.");

 

 

 

 

 

 

 

 

 

 

 

 

 

так как жестких стандартов поведе-

 

define(`confSMTP_LOGIN_MSG', `$j ESMTP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ния того же почтового сервера нет и

UnsecureMailserver')

 

 

 

 

В обоих случаях в выводе строки

 

 

 

 

 

 

 

 

 

 

 

 

 

каждый реализует протокол по-свое-

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

му. Однако от примитивных механиз-

BIND

 

 

 

 

(а можно поступить более 31337-но -

 

 

 

 

 

 

 

 

 

 

 

 

мов определения демона мы защи-

 

Named - популярный DNS-сервер от

 

 

 

 

изменить значение hostinfo на 0 пе-

 

 

 

 

 

 

 

 

 

 

 

 

тимся (подробнее про fingerprinting

Internet Software Consorcium. Извес-

 

 

 

 

ред вышеуказанным блоком if).

 

 

 

 

 

 

 

 

 

 

 

 

 

читай в другой статье этого номера).

тен прежде всего своей историей уяз-

 

 

 

 

 

 

Эти нехитрые трюки, конечно, по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вимостей, так что рассказать миру о

 

 

 

 

могут тебе изменить поведение сер-

 

 

 

 

 

 

 

 

 

 

 

OpenSSH

том, какая у тебя версия named - зна-

 

 

 

 

вера, но они не закрывают уязви-

 

 

 

 

 

 

 

 

 

 

 

 

 

Самый популярный пакет для уда-

чит жить как на иголках до следую-

мостей в сервисах, так что маскиров-

 

 

 

 

 

 

 

 

 

 

ленного администрирования по про-

щей Security Advisory. Правь

 

 

 

 

ка не лишает тебя главной задачи -

 

 

 

 

 

 

 

 

 

 

 

токолу ssh, хоть и написанный весьма

named.conf. В глобальной секции

 

 

 

 

патчить, патчить и еще раз патчить.

 

 

 

 

 

 

 

 

 

 

 

компетентными хакерами из OpenBSD

options {} ïèøè:

 

 

 

 

Желаю тебе как можно реже испы-

 

 

 

 

 

 

 

 

 

 

 

team, но имеющий длинную историю

 

version "Microsoft DNS";

 

 

 

 

тывать в этом необходимость. E

 

 

 

 

 

 

 

 

 

 

 

 

 

взломов. Баннер в конфиге не выс-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тавляется, так что будем править сор-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цы. Найди в файле version.h следую-

 

Разные сервисы ведут себя по-разному: кто-

 

 

 

 

 

 

 

 

 

 

щие строки:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#define SSH_VERSION "OpenSSH_3.8p1"

 

то ограничивается лаконичным именем

 

 

 

 

 

 

 

 

 

 

 

 

 

Их и следует изменить. Полностью

 

хоста и типом сервиса (domain.com ESMTP),

 

 

 

 

 

 

 

 

 

 

 

 

а кто-то выдает себя с потрохами, раскрывая

 

 

 

 

 

 

 

 

 

 

удалять строку не нужно, согласно

 

 

 

 

 

 

 

 

 

 

 

стандарту, сервер обязан выдать вер-

 

свое имя и версию.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сию ssh-протокола, а затем - имя де-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мона. Я советую ограничиться удале-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нием версии openssh, но ты можешь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

проявить фантазию. Затем собирай

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

openssh как обычно.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Apache

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Это классика. Смена баннера самого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

популярного web-сервера - весьма

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

частое развлечение админов. Здесь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тоже не обойтись без правки исход-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ных текстов. В каталоге с исходника-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ми найди файл src/include/httpd.h, а в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нем - следующие строки:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#define SERVER_BASEPRODUCT "Apache"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#define SERVER_BASEREVISION "1.3.29"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь меняй их на Microsoft-IIS 4.0 и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

коллекционируй сигнатуры старых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

добрых unicode-атак :). В Apache 2.0.x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

надо править файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

include/ap_release.h, строки:

 

Íà FreeBSD - Microsoft DNS è FTPd?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

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

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

DVD ЭКСПЕРТ – новый журнал

 

 

w Click

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

о технике для домашнего кинотеатра

Читайте в октябре:

Подробные обзоры лучших моделей месяца, а также:

З2 теста DVD-плееров

35 тестов AV-ресиверов, усилителей, процессоров

28 тестов акустических систем

26 тестов видеопроекторов

13 тестов телевизоров

ñ

â

продаже

 

 

13

октября!

 

 

 

Каждый номер с фильмом на DVD

Смотрите в октябре –

Фильм Джули Тэймор

«Тит – правитель Рима»

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

84 ЗАЩИТА ЛОГИ ДЛЯ УМНЫХ

the_Shadow (theshadow@sources.ru)

ЛОГИ ДЛЯ УМНЫХ

СИСТЕМА LOG-ФАЙЛОВ ДЛЯ *NIX-СИСТЕМ

Ëоги – органы чувств администратора в чреве системы. В этой статье я постараюсь рассказать тебе о работе системы ведения log-файлов, ее грамотной настройке и о том, что из нее вообще можно выжать.

 

 

 

 

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

 

 

 

 

Размер

буфера

сообщений

ÿäðà

содержится в файле printk.c в макросе LOG_BUF_L EN.

ТЕОРИЯ

» При старте системы запускается механизм протоколирования, состоящий из двух под-

систем ведения протокола - ядра и процессов. Собственно, работа их начнется сразу после того, как syslogd и klogd стартанутся в процессе init. Тогда создастся сокет /dev/log, на который в дальнейшем смогут поступать логи с удаленных машин, также откроются файлы, описанные для логирования в твоей системе.

С этого момента система будет ждать твоих логов.

KLOGD

Сообщения ядра - это не самое важное, но упомянуть о них я обязан. Ты наверняка встречался с этими сообщениями, так как при загрузке система вовсю выводит их на консоль. Их можно получить также в любой момент с помощью команды dmesg либо заглянув в файлы /var/adm/messages и /var/adm/syslog, в которых по умол- чанию хранится весь протокол ядра.

Все сообщения от ядра и его модулей хранятся в кольцевом буфере, размер которого - 16 Кб по умолча- нию. Если размера буфера не хватает (к примеру, если ты используешь его для вывода отладочных сообщений от твоего модуля), то его можно увеличить, подкорректировав сорцы ядра. Именно за работу с данным буфером и отвечает демон klogd, который во многом похож на рассматриваемый

Мануал по написанию приложений, использующих klogd

ниже syslogd (без него он, кстати, даже работать не может).

SYSLOGD

syslogd – демон, отвечающий как за протоколирование сообщений процесса, так и всей системы в целом. Процесс, которому надлежит, по замыслу авторов, протоколировать свои данные, должен включать в свое тело библиотечные функции, при вызове которых происходит обращение к syslogd и передача тому данных для записи (см. врезку).

Как правило, большая часть демонов, функционирующих в системе, имеет в опциях конфигурации настройку параметров подсистемы протоколирования (см. тот же BIND). Со стороны системы все еще проще. Существует файл (у меня это /etc/syslog.conf) - основа для конфигурации всей работы демона syslogd, и если что-то надо поменять в протоколировании сообщений системы, то именно здесь.

В принципе, нам никто не мешает работать с логами даже из простого приложения. Таким образом, в протокол можно сбрасывать все действия приложения/пользователя, что применимо для отладки, хотя для отладки приложения есть другие и более адекватные механизмы. А вот для че- го это точно может понадобиться, так это для контроля за действиями пользователя. Своего рода "черный ящик" для систем, где действия пользователей стоит записывать.

Сообщение ядра

НАСТРОЙКА SYSLOG

Для настройки надо понять, что есть ряд уровней ("уровней приоритета" или "серьезности") того или иного условия, которое протоколируется, и ряд типов приложений ("средств"). Для каждой конкретной системы они описаны в коде ядра. И их значения разъяснены в манах.

"Серьезность" имеет 8 значений (0- 7), где 0 - аварийная ситуация, когда всем пользователям шлется широковещательное сообщение и система останавливает свою работу. После такого отказа система, в принципе, может и не завестись. 7 - отладочное сообщение (для отладки приложения,

èне более). Стоит заметить, что аналогичные уровни серьезности используются и в Cisco IOS. Эта система протоколирования очень похожа на никсовую.

“Средства" - это ряд типов процессов от ядра до подсистемы почтовых сообщений, включая аутентификацию, авторизацию, демонов etc.

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

èотправляет строку в файл, указанный в конфиге. Как видишь, все просто.

Настраивая демона syslogd через /etc/syslog.conf, вполне можно добиться достойной нас информативности.

Вот пример (кусок реального файла) с комментариями:

#Все, что касаемо аутентификации. authpriv.* -/var/log/secure

#Все сообщения уровня Emergency (0) всем пользователям.

*.emerg

*

#Писать сообщения от info до warn для сервисов, за исключением

#authpriv, cron - для этих сервисов есть другое место

#см. первую строку.

.info;*.!warn;\

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

authpriv.none,

 

.

 

 

 

 

 

e

 

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

-xcha

 

 

cron.none -/var/log/messages

 

 

 

 

 

 

 

 

 

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

Далее. Есть еще горячая парочка логов – wtmp и utmp, бинарные файлы, и с ними нам придется работать аккуратно. В них хранится информация о подключении пользователей к системе. Но есть ряд тонкостей:

1.utmp хранит данные о подключе- нии пользователей в текущий момент (см. команду who, к примеру);

2.wtmp хранит данные обо всех подключениях к системе. Если, к примеру, некто вошел в систему и сразу вышел, то именно здесь он и "наследил". Самые свежие записи хранятся

âначале файла;

3.если файлов в системе нет, syslogd их создавать не станет. Самому придется создать через touch. Но! Если они были, то где они теперь?

БЕЗОПАСНОСТЬ

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

К примеру, есть роутер Cisco, есть web-сервер, FTP-сервер (на одной системе), есть мэйл-сервер и DNS (на второй). Знаю, что не по правилам, но так уж вышло.

Также есть тачка админа, который для повседневной работы использует ту же систему, что и на его серверах. Где писать логи? Ответ сам напрашивается: на компьютере админа! Если система взломана, то логов хакер на ней не найдет! Придется еще и систему админа ломать :).

Что писать? Аутентификация - раз, подсистемы (FTP, mail ...) - два. Это минимум. В данном случае любые попытки доступа и/или использования наших серверов будут записываться. Получа- ем картинку того, что в сети творится. Во-вторых (я противник такого метода, но... он самый надежный), все логи, поступающие на машину админа, сле-

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

Функций printk

но, будут неизменны, у нас останется жесткая копия. Здесь, правда, перед нами встает этический вопрос - а стоит ли весь этот бред жизни деревьев, переводимых на бумагу :)?

Получив логи, отвечающие должным требованиям, не стоит забывать об их обслуживании.

ОБСЛУЖИВАНИЕ ЛОГОВ

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

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

«Что искать», - спросишь ты? Все подозрительное: некорректные входы в систему, отказы в аутентификации пользователя, строки login/password etc. Как пример, многие win-пользова- тели привыкли к тому, что при входе в систему имя пользователя уже введено и остается только вбить пароль. В *nix это не так. В результате, в логе вполне могут оказаться актуальные пароли, вбитые как имя пользователя. Система, конечно же, не пропустила, но в лог записала. Если это повторится, то пора с данным юзером профилактическую беседу проводить.

Особое внимание стоит уделить поиску строк типа /bin/sh. В этом случае, если строчка чередуется с "мусором", вполне

УЧИМСЯ ПИСАТЬ ЛОГИ

Сначала добавляем к сорцу хидер <syslog.h>.

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

На этом этапе можно писать лог с помощью функции syslog(уровень_серьезности, сообщение) или vsyslog(), которая работает с форматированным выводом, как и printf.

В конце закрываем подсистему: closelog().

85

Конфигурационный файл syslogd

логично предположить, что тебя пытались поломать (и ты видишь shell-код).

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

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

Логи должны храниться в течение некоторого разумного времени (к примеру, в течение недели). В особенных слу- чаях можно писать логи на CD и хранить их столько, сколько нужно. Для этих целей есть фича logrotate. Идея такова: прописать в /etc/logrotate.conf, как и что хранить (пересылать ли на e- mail, копировать, сжимать, обрезать размер до нуля - см. man logrotate), а затем через cron раз в какой-то период запускать этого хозяйство. Важно то, что ты сам можешь настроить механизм замены логов так, как это нужно. К примеру, все отладочные сообщения просто и без затей уничтожать, доступ к HTTP - хранить и т.д.

На этом все! Если возникли вопросы, то читай маны, рой сеть и только потом пиши мне :). E

Сообщение системы

 

 

 

 

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

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Для программного доступа к буферу ядра есть функция klogctl, которая очень похожа на syslog().

Демон syslog работает на порту 514/UDP (сокет /dev/log), но можно перенаправить его и на иной порт через фаервол.

Хранилище логов должно принадлежать root'у.

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

86

ЗАЩИТА

IDS/SNORT

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

the_Shadow (theshadow@sources.ru)

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

g

.c

 

IDS/SNORT

 

p

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

СИСТЕМЫ ОБНАРУЖЕНИЯ АТАК

Êрайне важным помощником в админовском деле является IDS, или по-русски система обнаружения атак. С ее помощью админы всего мира уже предотвратили огромное число взломов. Пора и тебе включить ее в постоянный

рацион :).

SNORT - одна из самых первых и наиболее удачных реализаций системы IDS.

»

ТЕОРИЯ

 

 

При анализе атак,

 

 

причем как на реаль-

ные, работающие систе-

мы, так и на различные

OpenHack\honeypot\honeynet (о которых ты сможешь прочесть в этом номере), были выявлены общие признаки, демаскирующие взломщика. И основываясь именно на этих признаках, умные девелоперы создали первую IDS.

Системы обнаружения вторжений в "чистом виде" бывают двух типов:

-HIDS (host based intrusion detection system) - анализ того, что творится на хосте. Системы tripware, анализаторы log'ов.

-NIDS (network based intrusion detection system) - анализ сетевого трафика. Это куда интереснее, но и сложнее. Дело в том, что такая система работает как снифер, перехватывая и

Рулесы Снорта

Конфигурационный файл

анализируя весь собранный трафик. По идее, NIDS должен уметь обнаруживать атаки как по сигнатурам, встречающимся в перехваченных пакетах, так и по хитрому анализу протоколов. Отличным примером такой системы является SNORT, о котором и пойдет дальше речь. Снорт седлает сетевые интерфейсы и осуществляет наблюдение за трафиком. Если вдруг что-то ему кажется подозрительным, то он громко “визжит” в логи. Идея несложная, правда?

УСТАНОВКА СВИНЬИ

Для начала надо понять, где же предпочтительнее всего ставить поросячью IDS. Так как наша задача - герметизировать сеть или подсети, то в достаточной мере очевидным будет то, что основное место для установки SNORT'а - роутеры.

Но помни: вторжение может осуществляться как извне, так и изнутри сети. Да, и свои “внутресетевые”, пардон, дятлы могут "помочь".

Скачивай Снорта с его официальной паги: www.snort.org/downloads/snort-sta- ble.tgz, растаривай в каталог, а в нем набирай:

./configure; make; su; make install

Затем создавай директорию для поросячьих логов:

mkdir /var/log/snort.

Теперь Снорт должен быть готов к настройке.

Конфигурировать нужно файлик /etc/snort.conf. Конкретно ты должен сделать следующее:

1.Опиши свою сеть - адреса, используемые протоколы (порты) и т.п. Тем самым ты укажешь, за чем надо присматривать. Чем полнее пропишешь, тем лучше.

2.Укажи, где и какие брать сигнатуры. В стандартной поставке хряка должны быть файлы типа *.rules. Тебе надо указать только те правила, которые реально необходимы твоей системе (какие сервисы в сети крутятся, такие *.rules и отбирай). По этим сигнатурам будет анализироваться трафик. Все это чем-то напоминает работу антивируса, только для TCP/IP. Кстати, когда разберешься, как работает эта IDS, то и сам сможешь создавать рулесы.

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

Настроив, имеем полное право запустить SNORT:

snort -D -c snort.conf

SNORT

SNORT - одна из самых первых и наибо-

лее удачных реализаций системы IDS, работающая на основе анализа трафика. Я называю эту систему обнаружения атак "грязным свинтусом", так как на первом

сайте, посвященном Снорту (еще до версии 1.0), на титульной странице, была вывешена фотография матерого хряка, упершегося рылом прямо в объектив фотографа. С тех пор система значительно повзрослела, сайт перенесли из домена .au в домен .org, а тельце старины Снорта отправили живым весом на колбасу, но имя его и образ живут. На логотипе по-прежнему присутствует довольная рожа (или рыло?) мультяшного хряка.

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

df-xchan

 

 

o

 

АЛЬТЕРНАТИВА ЕСТЬ ВСЕГДА!

 

.

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

Не одинок наш Снорти в этом мире. Полезно посмотреть:

-libnids - библиотека для создания такого рода систем (libnids.sourceforge.net). Собственно, я сам при необходимости именно ей и пользуюсь. Всегда приятно несколько обескуражить скриптодятла.

-iplog - анализ протокола на предмет атак.

-courtney - старушка Кортни, которая является простеньким перловым скриптом для обнаружения факта сканирования. Безнадежная пенсионерка.

Родной web-сайт Хрюшки

УЯЗВИМОСТЬ

Но рано радоваться. Увы, старина Снорт уязвим. У взломщика есть возможность (и еще какая!) заставить Снорт никак не реагировать на твои действия. Если есть правила, то их не стоит нарушать, их следует обойти. Свинка-то у нас глупенькая, и даже если она поймает в свои лапки shellкод, но сигнатура его окажется ей неизвестна, то будет молчать себе свинка в тряпочку.

Придется разбираться с *.rules. Есть некое свинское правило, hellcode.rules зовется. Ты только посмотри на него: в нем практически все мыслимые и несколько немыслимых shell-кодов. Ох-ох-ох, что ж я маленьким не сдох... ;)

Но как ни странно, не зря не сдох. Обойти это правило очень просто. Дело в том, что SNORT – это не антивирус, и он не обладает эмулятором кода, который сможет распознать shell-код не по сигнатуре, а по алгоритму (даешь эвристический IDS :)! - прим. AvaLANche'а). Следовательно, тебе надо несколько видоизменить сигнатуру shell-кода. Это можно сделать, просто переписав shell-код до неузнаваемости под себя. Самый простой способ – изменить (но без потери функциональности!) порядок следования команд или понатыкать NOP'ов (opкод – 90), создав “промежутки” в shell-коде. Конечно, при этом вырастет размер кода, но зато его сиг-

МНЕНИЕ ЭКСПЕРТА

Антон Карпов, специалист по сетевой безопасности, системный администратор:

«Часто говорят: если ты отражаешь атаку - ты уже проиграл. Доля правды в этих словах есть. Любые атаки желательно выявлять еще на стадии их зарождения, нежели разбираться с их результатом. К счастью, *nix-системы имеют для этого все средства. Развитая система протоколирования событий и своевременное наблюдения за аномалиями в системном журнале, а также использование сетевых средств обнаружения вторжений, конечно, помогут, но все что они позволяют - это отработать по факту того, что атака уже идет. Вот почему популярны не только системы обнаружения, но также и системы предотвращения вторжений. Простейший пример превентивной меры - соединение IDS с пакетным фильтром и подача команды на блокирование атакующего адреса.»

87

натура обманет Снорта. Как еще можно поменять сигнатуру?

1.Менять одни команды на другие. Тут тебе надо очень хорошо ориентироваться в асме и инструкциях целевого процессора. По сути дела, нужно написать свой shell-код, “неизученный” Снортом.

2.Вариант попроще – поменять вызов шелла. Строка /bin/sh приводит к поросячьей активности Снорта и, позже, админа, а строка %2Fbin%2Fsh – нет. Вот только не всегда это возможно. Хорошо этот способ работает, как правило, на web-сервисах.

3.Более сложный вариант – применение вирусных технологий (правда, вирусами тут и не пахнет). Никто не забыл о шифрации/дешифрации исполняемого кода? Можно написать (и многие пишут) shell-код, который будет в зашифрованном виде передаваться жертве, а при запуске расшифровываться “на лету”. Меняя алгоритм шифрования или ключ, можно будет получать все новые и новые сигнатуры, неизвестные ранее этой IDS. Естественно, в сигнатуре будет светиться коротенький расшифровщик, но его видоизменить до неузнаваемости не составляет труда (подробнее о написании shell-кодов читай

âавгустовском Спеце #08.04(45)). Таким образом, грамотный взлом-

щик помнит о SNORT'е и готовит эксплоиты собственоручно. Как в армии, где есть правило: оружие, обмундирование и снаряжение каждый готовит себе САМ! E

Снорт в активном режиме

IDS выплевывет статистику

 

 

 

 

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

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Снорт седлает сетевые интерфейсы и осуществляет наблюдение за трафиком.

Основное место для установки Снорта – роутеры.

Снорта можно легко обойти, видоизменив по максимуму сигнатуру shell-кода.

 

 

 

 

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

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

88 ЗАЩИТА ХАКЕРЫ ЛЮБЯТ МЕД

Крис Касперски aka мыщъх

ХАКЕРЫ ЛЮБЯТ МЕД

 

 

 

 

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

 

 

 

 

РАЗБИРАЕМСЯ В РАБОТЕ НОNEYPOT

Âпоследнее время создаются все более и более изощренные системы борьбы с хакерами, одной из которых является honeypot - своеобразный капкан для атакующих. Сколько людей отправилось за решетку с его "помощью"! Даже

в нашей традиционно лояльной к хакерам стране имеется несколько случаев условных осуждений. Единственный выход - задавить идею honeypot'ов в зародыше.

Типичный honeypot представляет собой грандиозный програ- ммно-аппа- ратный комплекс, состоящий из узлаприманки, сетевого сенсора и коллектора.

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

»

ГОРШОЧЕК МЕДА

 

 

Однажды некий

 

 

мужчина приобрел су-

пернавороченный

сейф и повсюду хвас-

тался им: какой он надежный и проч- ный. Забравшиеся к нему грабители прожгли какой-то хитрой кислотой в сейфе дыру и… не обнаружили внутри ничего! Деньги и драгоценности хранились совсем в другом месте, взломщиков посадили.

Подобная тактика широко используется и для раскрытия компьютерных атак. На видном месте сети устанавливается заведомо уязвимый сервер, надежно изолированный ото всех остальных узлов и отслеживающий попытки несанкционированного проникновения в реальном времени с передачей IP-адреса атакующего в ФСБ или подобные ему органы.

Сервер, играющий роль приманки, называется "горшок с медом" ("honeypot"), а сеть из таких серверов - honeynet.

Противостоять honeypot'ам довольно сложно. Внешне они ничем не отличаются от обычных серверов, но в действительности это хорошо замаскированный капкан. Один неверный шаг - и хакеру уже ничто не поможет. Утверждают, что опытная лиса ухитряется съесть приманку, не попав в капкан. Так чем же мы хуже?

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

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

Работаем с tcpdump

Архитектура honeypot'ов плохо проработана и уязвима.

ВНУТРИ ГОРШКА

Типичный honeypot представляет собой грандиозный программно-аппа- ратный комплекс, состоящих из следующих компонентов: узла-приманки, сетевого сенсора и коллектора (накопителя информации).

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

МНЕНИЕ ЭКСПЕРТА

Никита Кислицин, редактор рубрики "Взлом" журнала "Хакер":

"Не стоит думать, что honeypot и honeynet - это что-то экзотичное, чрезвычайно редкое и малоэффективное. Это не так. Могу совершенно определенно сказать, что в ряде сетей популярных российских сетевых проектов действуют развернутые сети honeypot, которые вылавливают тысячи скрипткидисов в месяц. Хотя иногда попадаются и действительно ценные рыбки - взломщики с приватными сплоитами, которые пытаются повалить какой-то сетевой демон доселе неизвестным shell-кодом. Это является первоочередной задачей подобных систем. Именно поэтому сетевому взломщику чрезвычайно важно уметь идентифицировать и определять honey- pot-системы, чтобы не пропалить собственные секреты".

ХАКЕРСПЕЦ 10(47) 2004