МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Несанкционированный доступ к терминалам серверов с операционными системами семейства UNIX. На примере octopus.stu.lipetsk.ru

    выполнить на рабочей станции с ОС Windows 95 или Windows NT следующую

    команду: ping -l 65527 victim.destination.IP.address (по этой команде атака

    и получила свое название - Ping Death).

    Так как обычный размер IP-заголовка составляет 20 байт, а размер 1СМР-

    заголовка - 8 байт, то подобный ICMP-пакет будет превышать максимально

    возможный размер IP-пакета на 20 байт: 65 527 +20+8-65 535 = 20.

    Основываясь на приведенном расчете, эти «эксперты» декларировали, что

    обычной командой ping можно нарушить работоспособность практически любой

    сетевой ОС. В завершение предлагалась следующая таблица тестирования

    различных операционных систем

    |Операционная система |Версия ПО |Симптомы |

    |Solaris (x86) |2.4, 2.5, 2.5.1 |Перезагрузка |

    |Minix |1.7.4, v2.0 и другие |Сбой |

    |HP3000 MPE/iX |4.0, 5.0, 5.5 |Сброс системы |

    |Convex SPP-UX |Все версии |Сбой |

    |Apple Mac |MacOs 7.x.x |Сбой |

    |Windows 3.11 with |? |Смешанные отчеты |

    |Trumpet winsock | | |

    |Novell Netware |3.x |Смешанные отчеты |

    |Windows 95 |Все версии |Сбой |

    |AIX |3 и 4 |Сброс системы |

    |Linux |2.0.23 |Спонтанная перезагрузка|

    | | |или зависание (kernel |

    | | |panic) |

    |DEC UNIX / OSF1 |2.0 и выше |зависание (kernel |

    | | |panic) |

    |Open VMS for AXP |Различные |Смешанные отчеты |

    |HP-UX |9.0 по 10.20 |Сбой, перезагрузка, |

    | | |зависание. |

    |Windows NT |3.5.1 |Смешанные результаты |

    |Irix |5.3 |зависание (kernel |

    | | |panic) |

    |Windows NT |4 |Сбой |

    |SCO Openserver |4.2, 5.0.x |Уязвима |

    |DEC TOPS-20, TOPS-10 |Все |Ошибки |

    |Digital Firewall |? |Уязвима |

    |AltaVista Firewall for |? |Уязвима |

    |UNIX | | |

    (здесь она приводится в сокращении), на которые данная удаленная атака

    якобы произвела необходимый эффект. Итак, мы начали тестирование и, честно

    говоря, абсолютно не удивились, когда исследуемые ОС - IRIX, AIX, VMS,

    SunOs, FreeBSD, Linux, Windows NT 4.0, даже Windows 95 и Windows for

    WorkGroups 3.11- абсолютно не реагировали на подобный некорректный запрос,

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

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

    данная атака. Ей оказалась Windows 3.11 с WinQVT - эта ОС действительно

    «зависла».

    Этим «экспертам», которым столь доверяют CERT и С1АС, мы послали запрос,

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

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

    данной атаки зависит от многих факторов, а именно: программного и

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

    фазы Луны. Как говорится, без комментариев. Для полноты картины мы хотели

    бы привести описание exploit, созданного для Windows NT 4.0, задача

    которого, используя ping, «завесить» собственный компьютер (!). Сначала

    предлагалось запустить Web Browser, затем-taskmgr (Task Manager): так Ping

    Death якобы лучше работает (еще не хватает шаманского бубна!). И наконец,

    требовалось запустить 18 ping-процессов (почему не 100?). Если вы думаете,

    что после всего этого ваша ОС немедленно «повиснет», то ошибаетесь! В

    комментариях к exploit до получения эффекта предлагалось ждать примерно 10

    минут, а может быть, несколько больше или несколько меньше.

    Можно сделать вывод, что опасения по поводу данного воздействия ни на чем

    не основаны, и нам остается только назвать эту атаку очередной

    программистской байкой и причислить ее к разряду практически

    неосуществимых.

    причины усПЕХА УДАЛЕННЫХ АТАК

    «То, что изобретено одним человеком,

    может быть понято другим», - сказал Холме.

    А. Конан Доил. Пляшущие человечки

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

    К сожалению, взаимодействие объектов по виртуальному каналу в

    распределенной ВС не является панацеей от всех проблем, связанных с

    идентификацией объектов РВС. ВК - необходимое, но не достаточное условие

    безопасного взаимодействия. Чрезвычайно важным в данном случае становится

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

    требование, предъявляемое к этим алгоритмам, состоит в следующем: перехват

    ключевой информации, которой обмениваются объекты РВС при создании ВК, не

    должен позволить атакующему получить итоговые идентификаторы канала и

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

    создании ВК в большинстве существующих сетевых ОС, это требование

    практически не учитывается.

    ( Отсутствие контроля за виртуальными каналами связи

    Объекты распределенной ВС, взаимодействующие по виртуальным каналам,

    могут подвергаться типовой атаке «отказ в обслуживании». Особенность этого

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

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

    причина успеха данной атаки? В отсутствии необходимого контроля над

    соединением. При этом задача контроля распадается на две подзадачи:

    • контроль за созданием соединения;

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

    Если пути решения второй задачи понятны - обычно соединение разрывается

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

    сетевых ОС (однако тут возникает серьезная проблема выбора конкретного

    значения тайм-аута), то контроль за созданием ВК достаточно сложен: в

    системе, где отсутствует статическая ключевая информация обо всех ее

    объектах, невозможно отделить ложные запросы на создание соединения от

    настоящих. Очевидно также, что если один субъект сетевого взаимодействия

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

    связи с удаленным объектом, то подобная система может быть полностью

    парализована данным субъектом. Таким образом, если любой объект в

    распределенной системе способен анонимно послать сообщение от имени другого

    объекта (например, в Internet маршрутизаторы не проверяют IP-адрес

    отправителя), то в подобной распределенной ВС практически невозможен

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

    типовой угрозы «отказ в обслуживании» - это отсутствие приемлемого решения

    задачи контроля за маршрутом сообщений.

    ( Отсутствие возможности контролировать маршрут сообщений

    Если в РВС не предусмотреть контроля за маршрутом сообщения, то адрес

    отправителя сообщения оказывается ничем не подтвержденным. Таким образом, в

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

    указания в заголовке сообщения чужого адреса отправителя (IP Spoofing). В

    подобной РВС затруднительно определить, откуда на самом деле пришло

    сообщение, а следовательно - вычислить координаты атакующего (в Internet

    невозможно найти инициатора однонаправленной удаленной атаки).

    ( Отсутствие полной информации об объектах РВС

    В распределенной системе с разветвленной структурой, состоящей из

    большого числа объектов, может возникнуть ситуация, когда для доступа к

    определенному хосту у субъекта взаимодействия не окажется необходимой

    информации, то есть адреса данного объекта. Очевидно, что в системе

    подобного типа существует потенциальная опасность внесения ложного объекта

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

    поисковый запрос.

    ( Отсутствие криптозащиты сообщений

    В распределенных ВС связь между объектами системы осуществляется по

    виртуальным каналам связи, а следовательно, хакер имеет принципиальную

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

    информации, которой обмениваются по сети се абоненты. Если эта информация

    не зашифрована, то возникает угроза атаки типа «анализ сетевого трафика».

    ( Отсутствие выделенного канала связи между объектами сети Internet

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

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

    канал связи с любым другим объектом. Поэтому в Internet связь

    осуществляется через цепочку маршрутизаторов, а следовательно, сообщение,

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

    перехвачено. Также к Internet подключено большое число локальных Ethernet-

    сетей, использующих топологию «общая шина»; в сетях с такой

    топологией несложно программно осуществлять перехват сообщений.

    ( Недостаточные идентификация и аутентификация

    В базовых протоколах обмена идентификация и аутентификация объектов

    практически отсутствуют. Так, например, в прикладных протоколах . FTP,

    TELNET, РОРЗ имена и пароли пользователей передаются по сети в виде

    открытых незашифрованных сообщений.

    ( Использование нестойких алгоритмов идентификации объектов при создании

    виртуального TCP-соединения

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

    протоколом транспортного уровня, в функции которого заложена защита

    соединения. Однако использование простейшего алгоритма идентификации

    объектов при создании виртуального TCP-канала, особенно при условии

    применения в сетевых ОС простейших времязависимых законов генерации TCP-

    идентификаторов (ISN), сводит на нет все попытки обеспечения идентификации

    канала и объектов при их взаимодействии по протоколу TCP.

    ( Отсутствие криптозащиты сообщений

    В существующих базовых протоколах семейства TCP/IP, обеспечивающих

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

    возможность шифрования сообщений, хотя очевидно, что добавить ее в протокол

    TCP не составляло труда. Разработчики решили переложить задачу криптозащиты

    на протоколы более высоких уровней, например прикладного уровня. При этом

    базовые протоколы прикладного уровня (FTP, TELNET, HTTP и др.) также не

    предусматривали никакого шифрования сообщений. Только не так давно появился

    общедоступный прикладной протокол SSL, встроенный в Netscape Navigator,

    позволяющий как надежно зашифровать сообщение, так и подтвердить его

    подлинность. В заключение хотелось бы заметить, что все описанные выше

    причины, по которым возможна успешная реализация угроз безопасности РВС,

    делают сеть Internet небезопасной. А следовательно, все пользователи сети

    могут быть атакованы в любой момент.

    Подведем итоги.

    Учитывая все вышесказанное, я думаю, что студентам кафедры АСОИУ уже

    сейчас не представляется никакой сложности для несанкционированного доступа

    к терминалам серверов с правами администраторов (причем это не

    необоснованное высказывание). Другой вопрос – целесообразности всего этого.

    Я думаю что не стоит проверять все вышесказанное на практике в целях своей

    же безопасности.

    В целом, вычислительная сеть университета администрируется весьма

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

    последние версии операционных систем. Однако на chuck.stu.lipetsk.ru почему-

    то у обычных пользователей нет прав на компилирование Си программ. Почему?

    Может это и есть слабое звено в администрировании, или это еще одна

    предосторожность администратора? Хотя на tomcat.am.lstu обычным смертным

    разрешено…

    Вообще-то взлом octopus.stu.lipetsk.ru был бы неуважением своей же

    кафедры. Ведь та защита которая там присутствует направлена не для того,

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

    от неопытных пользователей.

    ПРИЛОЖЕНИЕ.

    В целях безопасности, приводим только фрагменты программы. Файл john.c

    #include

    #include

    #include

    #include

    #include "arch.h"

    #include "misc.h"

    #include "params.h"

    #include "path.h"

    #include "memory.h"

    #include "list.h"

    #include "tty.h"

    #include "signals.h"

    #include "idle.h"

    #include "common.h"

    #include "formats.h"

    #include "loader.h"

    #include "logger.h"

    #include "status.h"

    #include "options.h"

    #include "config.h"

    #include "bench.h"

    #include "charset.h"

    #include "single.h"

    #include "wordlist.h"

    #include "inc.h"

    #include "external.h"

    #include "batch.h"

    #if CPU_DETECT

    extern int CPU_detect();

    #endif

    extern struct fmt_main fmt_DES, fmt_BSDI, fmt_MD5, fmt_BF;

    extern struct fmt_main fmt_AFS, fmt_LM;

    extern int unshadow(int argc, char **argv);

    extern int unafs(int argc, char **argv);

    extern int unique(int argc, char **argv);

    static struct db_main database;

    static struct fmt_main dummy_format;

    static void john_register_one(struct fmt_main *format)

    {

    if (options.format)

    if (strcmp(options.format, format->params.label)) return;

    fmt_register(format);

    }

    static void john_register_all()

    {

    if (options.format) strlwr(options.format);

    john_register_one(&fmt_DES);

    john_register_one(&fmt_BSDI);

    john_register_one(&fmt_MD5);

    john_register_one(&fmt_BF);

    john_register_one(&fmt_AFS);

    john_register_one(&fmt_LM);

    if (!fmt_list) {

    fprintf(stderr, "Unknown ciphertext format name requested\n");

    error();

    }

    }

    static void john_load()

    {

    struct list_entry *current;

    umask(077);

    if (options.flags & FLG_EXTERNAL_CHK)

    ext_init(options.external);

    if (options.flags & FLG_MAKECHARS_CHK) {

    options.loader.flags |= DB_CRACKED;

    ldr_init_database(&database, &options.loader);

    if (options.flags & FLG_PASSWD) {

    ldr_show_pot_file(&database, LOG_NAME);

    database.options->flags |= DB_PLAINTEXTS;

    if ((current = options.passwd->head))

    do {

    ldr_show_pw_file(&database, current->data);

    } while ((current = current->next));

    } else ldr_show_pot_file(&database, LOG_NAME);

    return;

    }

    if (options.flags & FLG_STDOUT)

    if (options.flags & FLG_PASSWD) {

    if (options.flags & FLG_SHOW_CHK) {

    options.loader.flags |= DB_CRACKED;

    ldr_init_database(&database, &options.loader);

    ldr_show_pot_file(&database, LOG_NAME);

    if ((current = options.passwd->head))

    do {

    ldr_show_pw_file(&database, current->data);

    } while ((current = current->next));

    printf("%s%d password%s cracked, %d left\n",

    database.guess_count ? "\n" : "",

    database.guess_count,

    database.guess_count != 1 ? "s" : "",

    database.password_count -

    database.guess_count);

    return;

    }

    if (options.flags & (FLG_SINGLE_CHK | FLG_BATCH_CHK))

    options.loader.flags |= DB_WORDS;

    else

    if (mem_saving_level)

    options.loader.flags &= ~DB_LOGIN;

    ldr_init_database(&database, &options.loader);

    if ((current = options.passwd->head))

    do {

    ldr_load_pw_file(&database, current->data);

    } while ((current = current->next));

    ldr_load_pot_file(&database, LOG_NAME);

    ldr_fix_database(&database);

    printf("Loaded %d password%s%s",

    database.password_count,

    database.password_count != 1 ? "s" : "",

    database.password_count ? "" : ", exiting...");

    if (database.password_count > 1) {

    printf(" with ");

    printf(database.salt_count != 1 ? "%d" : "no",

    database.salt_count);

    printf(" different salts");

    }

    if (database.password_count)

    printf(" (%s [%s])\n",

    database.format->params.format_name,

    database.format->params.algorithm_name);

    else

    putchar('\n');

    if ((options.flags & FLG_PWD_REQ) && !database.salts) exit(0);

    }

    }

    static void john_init(int argc, char **argv)

    {

    #if CPU_DETECT

    if (!CPU_detect()) {

    #if CPU_REQ

    fprintf(stderr, "Sorry, %s is required\n", CPU_NAME);

    error();

    #endif

    }

    #endif

    path_init(argv);

    cfg_init(CFG_NAME);

    status_init(NULL, 1);

    opt_init(argc, argv);

    john_register_all();

    common_init();

    sig_init(idle_yield);

    john_load();

    }

    static void john_run()

    {

    if (options.flags & FLG_TEST_CHK)

    benchmark_all();

    else

    if (options.flags & FLG_MAKECHARS_CHK)

    do_makechars(&database, options.charset);

    else

    if (options.flags & FLG_CRACKING_CHK) {

    if (!(options.flags & FLG_STDOUT)) log_init(LOG_NAME);

    tty_init();

    if (options.flags & FLG_SINGLE_CHK)

    do_single_crack(&database);

    else

    if (options.flags & FLG_WORDLIST_CHK)

    do_wordlist_crack(&database, options.wordlist,

    (options.flags & FLG_RULES) != 0);

    else

    if (options.flags & FLG_INC_CHK)

    do_incremental_crack(&database, options.charset);

    else

    if (options.flags & FLG_EXTERNAL_CHK)

    do_external_crack(&database);

    else

    if (options.flags & FLG_BATCH_CHK)

    do_batch_crack(&database);

    status_print();

    tty_done();

    if (!(options.flags & FLG_STDOUT)) log_done();

    }

    }

    static void john_done()

    {

    path_done();

    check_abort();

    }

    int main(int argc, char **argv)

    {

    char *name;

    #ifdef __DJGPP__

    if (--argc 4)

    if (!strcmp(strlwr(name) + strlen(name) - 4, ".exe"))

    name[strlen(name) - 4] = 0;

    #endif

    if (!strcmp(name, "john")) {

    john_init(argc, argv);

    john_run();

    john_done();

    return 0;

    }

    if (!strcmp(name, "unshadow"))

    return unshadow(argc, argv);

    if (!strcmp(name, "unafs"))

    return unafs(argc, argv);

    if (!strcmp(name, "unique"))

    return unique(argc, argv);

    fprintf(stderr, "Sorry, I can't find myself\n");

    return 1;

    }

    Файл des_bs.c

    #include

    #include "arch.h"

    #include "DES_std.h"

    #include "DES_bs.h"

    DES_bs_combined DES_bs_all;

    int DES_bs_mem_saving = 0;

    extern void DES_bs_body();

    void DES_bs_init()

    {

    int index, bit;

    for (index = 0; index < 0x300; index++) {

    bit = DES_K_bits[index];

    bit -= bit >> 3;

    DES_bs_all.Kp[index] = &DES_bs_all.K[55 - bit];

    }

    }

    void DES_bs_set_salt(ARCH_WORD salt)

    {

    register int src, dst;

    register ARCH_WORD mask;

    mask = 1;

    for (dst = 0; dst < 48; dst++) {

    if (dst == 24) mask = 1;

    if (salt & mask) {

    if (dst < 24) src = dst + 24; else src = dst - 24;

    } else src = dst;

    DES_bs_all.E[dst] = &DES_bs_all.B[DES_E[src]];

    DES_bs_all.E[dst + 48] = &DES_bs_all.B[DES_E[src] + 32];

    mask >= 1);

    }

    }

    void DES_bs_crypt(int count)

    {

    register int bit;

    register ARCH_WORD R, L;

    memset(DES_bs_all.B, 0, sizeof(DES_bs_all.B));

    do {

    DES_bs_body();

    if (!--count) break;

    for (bit = 0; bit < 32; bit++) {

    R = DES_bs_all.B[bit];

    L = DES_bs_all.B[bit + 32];

    DES_bs_all.B[bit + 32] = R;

    DES_bs_all.B[bit] = L;

    }

    } while (1);

    }

    ARCH_WORD *DES_bs_get_binary(char *ciphertext)

    {

    static ARCH_WORD out[64];

    ARCH_WORD *raw;

    int bit;

    int index, shift;

    int value;

    raw = DES_raw_get_binary(ciphertext);

    out[1] = out[0] = 0;

    for (bit = 0; bit < 64; bit++) out[bit >> 5]

    return out;

    }

    int DES_bs_binary_hash(ARCH_WORD *binary, int count)

    return result;

    int DES_bs_get_hash(int index, int count)

    /*

    * The trick I used here allows to compare one ciphertext against all the

    * DES_bs_crypt() outputs in just O(log2(ARCH_BITS)) operations.

    */

    int DES_bs_cmp_all(ARCH_WORD *binary, int count)

    {

    register int bit;

    register ARCH_WORD mask;

    mask = 0;

    if (DES_bs_mem_saving)

    for (bit = 0; bit < ((count < 32) ? count : 32); bit++) = DES_bs_all.B[bit] ^

    else

    for (bit = 0; bit < count; bit++)

    return 1;

    }

    int DES_bs_cmp_one(ARCH_WORD *binary, int count, int index)

    {

    register int bit;

    register ARCH_WORD mask;

    if (DES_bs_mem_saving) {

    for (bit = 0; bit < count; bit++)

    if (((DES_bs_all.B[bit] >> index) ^

    (binary[bit >> 5] >> (bit & 0x1F))) & 1) return 0;

    return 1;

    }

    mask = (ARCH_WORD)1 ;L

    >;=>5 8

    ID 8 3@C??0

    Local profile

    e

    Заш. пароль

    Полное имя

    ID и группа

    Local profile

    Страницы: 1, 2


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.