Коллектив авторов - Защита от хакеров корпоративных сетей

Тут можно читать онлайн Коллектив авторов - Защита от хакеров корпоративных сетей - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Коллектив авторов - Защита от хакеров корпоративных сетей краткое содержание

Защита от хакеров корпоративных сетей - описание и краткое содержание, автор Коллектив авторов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

Лучшая защита – это нападение. Другими словами, единственный способ остановить хакера заключается в том, чтобы думать, как он. Эти фразы олицетворяют подход, который, по мнению авторов, позволит наилучшим образом обеспечить безопасность информационной системы.

Перевод: Александр Петренко

Защита от хакеров корпоративных сетей - читать онлайн бесплатно ознакомительный отрывок

Защита от хакеров корпоративных сетей - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Коллектив авторов
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

– pop EDX 5A

– pop EBP 5D

– pop ESI 5E

– pop EDI 5F

– ret C3

Переход по содержимому регистра.Способ перехода по содержимому регистра (call register) применяется, если в регистре содержится адрес необходимого программного кода полезной нагрузки. В этом случае в регистр EIP загружается указатель на команду при выполнении команды call EDX, call EDI или ee эквивалента (в зависимости от регистра, в который загружен указатель на программу).

– call EAX FF D0

– call EBX FF D3

– call ECX FF D1

– call EDX FF D2

– call ESI FF D6

– call EDI FF D7

– call ESP FF D4

При просмотре памяти процесса из библиотеки KERNEL32. DLL были найдены следующие подходящие пары шестнадцатеричных байтов:

77F1A2F7 FF D0 call EAX

77F76231 FF D0 call EAX

7FFD29A7 FF D0 call EAX ; a whole block of this pattern exists

7FFD2DE3 FF E6 jmp ESI ; a whole block of this pattern exists

7FFD2E27 FF E0 jmp EAX ; a whole block of this pattern exists

77F3D793 FF D1 call ECX

77F7CEA7 FF D1 call ECX

77F94510 FF D1 call ECX

77F1B424 FF D3 call EBX

77F1B443 FF D3 call EBX

77F1B497 FF D3 call EBX

77F3D8F3 FF D3 call EBX

77F63D01 FF D3 call EBX

77F9B14F FF D4 call ESP

77F020B0 FF D6 call ESI

77F020D5 FF D6 call ESI

77F02102 FF D6 call ESI

77F27CAD FF D6 call ESI

77F27CC2 FF D6 call ESI

77F27CDB FF D6 call ESI

77F01089 FF D7 call EDI

77F01129 FF D7 call EDI

77F01135 FF D7 call EDI

Эти пары шестнадцатеричных байтов могут быть использованы практически в любой программе. Но поскольку найденные пары шестнадцатеричных байтов – часть интерфейса ядра динамически подключаемой библиотеки DLL, то обычно они находятся по фиксированным адресам памяти, которые можно жестко запрограммировать. Имейте в виду, что в различных версиях Windows и, возможно, версиях служебных пакетов Service Pack они могут отличаться. Переход по только что записанному в стек адресу.Способ перехода по только что записанному в стек адресу (push return) слегка отличается от предыдущего, хотя и в нем используется значение, сохраненное в регистре. Различие состоит в использовании вместо команды ret команды call. Если известно, что адрес перехода загружен в регистр EAX, EBX, ECX, EDX, EBP, ESI или EDI, но команду call найти не удается, то попробуйте найти в двоичном коде пару команд push <���регистр> и ret.

– push EAX 50

– push EBX 53

– push ECX 51

– push EDX 52

– push EBP 55

– push ESI 56

– push EDI 57

– ret C3

В динамически подключаемой библиотеке Kernel32.DLL содержатся следующие подходящие пары шестнадцатеричных байтов:

77F3FD18 push EDI

77F3FD19 ret

(?)

77F8E3A8 push ESP

77F8E3A9 ret

Программа поиска точек перехода Findjmp.На рисунке 8.23 представлена небольшая программа, которая сканирует двоичный код динамически подключаемой библиотеки. Входными параметрами программы являются имя динамически подключаемой библиотеки и название регистра из командной строки. Программа ищет характерные для поддерживаемых способов комбинации шестнадцатеричных цифр в размещенном в памяти двоичном коде заданной динамически подключаемой библиотеки. Она поддерживает способы передачи управления по только что записанному в стек адресу (push return), по содержимому регистра (call register) и явный переход по содержимому регистра (jump register).

Рис. 8.23. Исходный текст программы Findjmp.c

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

Программа легко адаптируется для поиска других способов перехода или образцов программного кода в динамически подключаемой библиотеке DLL. В настоящее время программа поддерживает поиск следующих команд:

1) jmp reg;

2) call reg;

3) push reg / ret.

Всех их объединяет общий результат: в регистр EIP загружается содержимое регистра reg. Программа также распознает следующие регистры:

• EAX;

• EBX;

• ECX;

• EDX;

• ESI;

• EDI;

• ESP;

• EBP.

Программа компилируется как консольное приложение на любой платформе, поддерживающей интерфейс 32-разрядных Windows-приложений. Приложение может быть найдено в разделе сайта издательства www.syngress.com/solutions, посвященном книге.

Подпрограмма usage()выводит в стандартное устройство вывода (консоль или принтер) краткую инструкцию по использованию программы.

void usage()

{

printf(“FindJmp usage\nfindjmp DLL reg\nEx: findjmp

KERNEL32.DLL ESP\n”);

exit (0);

}

/*The findjmp function is the workhorse. It loads the

requested dll, and searches for specific patterns for jmp

reg, push reg ret, and call reg.*/

void findjmp(char *dll,char *reg)

{

/* patterns for jmp ops */

BYTE jmppat[8][2]= {{0xFF,0xE0},{0xFF,0xE3},{0xFF,0xE1},

{0xFF,0xE2},{0xFF,0xE6},{0xFF,0xE7},

{0xFF,0xE4},{0xFF,0xE5}};

/* patterns for call ops */

BYTE callpat[8][2]= {{0xFF,0xD0},{0xFF,0xD3},{0xFF,0xD1},

{0xFF,0xD2},{0xFF,0xD6},{0xFF,0xD7},

{0xFF,0xD4},{0xFF,0xD5}};

/* patterns for pushret ops */

BYTE pushretpat[8][2]= {{0x50,0xC3},{0x53,0xC3},{0x51,0xC3},

{0x52,0xC3},{0x56,0xC3},{0x57,0xC3},

{0x54,0xC3},{0x55,0xC3}};

/*base pointer for the loaded DLL*/

HMODULE loadedDLL;

/*current position within the DLL */

BYTE *curpos;

/* decimal representation of passed register */

DWORD regnum=GetRegNum(reg);

/*accumulator for addresses*/

DWORD numaddr=0;

/*check if register is useable*/

if(regnum == -1)

{

/*it didn’t load, time to bail*/

printf(“There was a problem understanding the

register.\n”\

“Please check that it is a correct IA32 register

name\n”\

“Currently supported are:\n ”\

“EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP\n”\

);

exit(-1);

}

loadedDLL=LoadLibraryA(dll);

/* check if DLL loaded correctly*/

if(loadedDLL == NULL)

{

/*it didn’t load, time to bail*/

printf(“There was a problem Loading the requested

DLL.\n”\

“Please check that it is in your path and readable\n” );

exit(-1);

}

else

{

/*we loaded the dll correctly, time to scan it*/

printf(“Scanning %s for code useable with the %s

register\n”,

dll,reg);

/*set curpos at start of DLL*/

curpos=(BYTE*)loadedDLL;

__try

{

while(1)

{

/*check for jmp match*/

if(!memcmp(curpos,jmppat[regnum],2))

{

/* we have a jmp match */

printf(“0x%X\tjmp %s\n”,curpos,reg);

numaddr++;

}

/*check for call match*/

else if(!memcmp(curpos,callpat[regnum],2))

{

/* we have a call match */

printf(“0x%X\tcall %s\n”,curpos,reg);

numaddr++;

}

/*check for push/ret match*/

else if(!memcmp(curpos,pushretpat[regnum],2))

{

/* we have a pushret match */

printf(“0x%X\tpush %s –“\

“ ret\n”,curpos,reg);

numaddr++;

}

curpos++;

}

}

__except(1)

{

printf(“Finished Scanning %s for code

useable with”\

“ the %s register\n”,dll,reg);

printf(“ Found %d usable addresses\n” ,numaddr);

}

}

}

DWORD GetRegNum(char *reg)

{

DWORD ret=-1;

if(!stricmp(reg,“EAX”))

{

ret=0;

}

else if(!stricmp(reg,“EBX”))

{

ret=1;

}

else if(!stricmp(reg,“ECX”))

{

ret=2;

}

else if(!stricmp(reg,“EDX”))

{

ret=3;

}

else if(!stricmp(reg,“ESI”))

{

ret=4;

}

else if(!stricmp(reg,“EDI”))

{

ret=5;

}

else if(!stricmp(reg,“ESP”))

{

ret=6;

}

else if(!stricmp(reg,“EBP”))

{

ret=7;

}

/*return our decimal register number*/

return ret;

}

Смещение.Термин смещение (offset) в основном относится к переполнению буфера на локальной машине. Поскольку на многопользовательских машинах традиционно установлена операционная система Unix, то замечено, что при рассмотрении переполнения буфера термин «смещение» в системе Unix используется гораздо чаще, чем в какой-либо другой. Злонамеренный пользователь машины UNIX всегда располагает какими-то учетными записями пользователя и, как правило, обычно стремится приобрести права суперпользователя root. У пользователя Unix всегда имеется возможность откомпилировать любую программу, в том числе и программу переполнения буфера. На локальной машине программа переполнения буфера иногда вычисляет базовый адрес собственного стека, предполагая, что он совпадает с базовым адресом атакованной программы. В результате у злоумышленника появляется удобная для него возможность указать в команде явного перехода (direct jump) смещение относительно вычисленного базового адреса. Если все сделано правильно, то величина «базовый адрес+смещение» (base+offset) в коде злоумышленника будет указывать на код жертвы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Коллектив авторов читать все книги автора по порядку

Коллектив авторов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Защита от хакеров корпоративных сетей отзывы


Отзывы читателей о книге Защита от хакеров корпоративных сетей, автор: Коллектив авторов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x