книги хакеры / Защита_от_взлома_сокеты,_эксплойты,_shell_код_Фостер_Дж_
.pdf
|
|
|
|
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 |
|
|
|||
Содержание |
11 |
|
to |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||||
|
w Click |
|
|
|
|
|
|
m |
|||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
Клиенты и серверы для протокола UDP |
266 |
df |
-x cha |
|
e |
|
|||||
|
|
|
|
||||||||
|
|
|
|
|
|
n |
|
|
|
||
Компиляция .............................................................................................. |
271 |
|
|
|
|
|
|
|
|
||
Пример выполнения................................................................................. |
271 |
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
272 |
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
275 |
Обзор изложенного материала ..................................................................... |
276 |
Часто задаваемые вопросы ............................................................................ |
277 |
Глава 6. Написание переносимых программ .................................... |
279 |
Введение ............................................................................................................. |
280 |
Рекомендации по переносу программ между платформами UNIX |
|
è Microsoft Windows ......................................................................................... |
280 |
Директивы препроцессора ............................................................................. |
281 |
Использование директив #ifdef ..................................................................... |
281 |
Определение операционной системы ........................................................... |
283 |
Пример исполнения ................................................................................. |
284 |
Анализ ....................................................................................................... |
284 |
Порядок байтов ............................................................................................. |
285 |
Пример исполнения ................................................................................. |
286 |
Анализ ....................................................................................................... |
286 |
Создание и завершение процессов............................................................... |
287 |
Системный вызов exec .................................................................................... |
287 |
Пример исполнения ................................................................................. |
288 |
Анализ ....................................................................................................... |
288 |
Пример исполнения ................................................................................. |
289 |
Анализ ....................................................................................................... |
289 |
Пример исполнения ................................................................................. |
292 |
Анализ ....................................................................................................... |
292 |
Системный вызов fork ................................................................................... |
293 |
Системный вызов exit .................................................................................... |
293 |
Многопоточность .......................................................................................... |
293 |
Создание потока............................................................................................. |
294 |
Пример исполнения ................................................................................. |
295 |
Анализ ....................................................................................................... |
295 |
Пример исполнения ................................................................................. |
296 |
Анализ ....................................................................................................... |
296 |
Синхронизация потоков ................................................................................ |
297 |
Пример исполнения ................................................................................. |
299 |
Анализ ....................................................................................................... |
299 |
Пример исполнения ................................................................................. |
301 |
|
|
|
|
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 |
|
|
12 Защита от взлома: сокеты, эксплойты и shell#код |
|
|
|
|
to |
|
|
|
|
|
|
||||||
w Click |
|
|
|
w Click |
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
m |
|||||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
-xcha |
|
|
|
Анализ |
|
|
p |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
e |
|
|
301-x cha |
|
e |
|
|||||||||||||
|
|
|
df |
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Сигналы .......................................................................................................... |
|
302 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
303 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
304 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Работа с файлами............................................................................................ |
|
304 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
305 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
307 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Работа с каталогами ........................................................................................ |
|
307 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
308 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
309 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
311 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Библиотеки ..................................................................................................... |
|
311 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Динамическая загрузка библиотек ............................................................... |
|
313 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
315 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
316 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Программирование демонов и Win32-сервисов .......................................... |
|
317 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример исполнения ................................................................................. |
|
319 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
319 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
323 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Управление памятью ..................................................................................... |
|
324 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
325 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Обработка аргументов, заданных в командной строке ................................ |
|
325 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
326 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
328 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример исполнения ................................................................................. |
|
329 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
329 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Целочисленные типы данных ....................................................................... |
|
330 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
331 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
|
332 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Обзор изложенного материала ..................................................................... |
|
332 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Часто задаваемые вопросы ............................................................................ |
|
332 |
|
|
|
|
|
|
Глава 7. Написание переносимых сетевых программ ..................... |
335 |
Введение ............................................................................................................. |
336 |
BSD-сокеты и Winsock ..................................................................................... |
336 |
Требования спецификации Winsock ............................................................. |
337 |
Анализ ....................................................................................................... |
338 |
Подлежащие переносу компоненты ............................................................. |
338 |
Возвращаемые значения ............................................................................... |
338 |
|
|
|
|
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 |
|
|
||||
Содержание |
13 |
|
to |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||||
|
w Click |
|
|
|
|
|
|
|
m |
|||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
g |
.c |
|
|||
Анализ |
|
|
p |
|
-x cha |
|
|
|
||||
339 |
df |
|
e |
|
||||||||
|
|
|
|
|
|
n |
|
|
|
|
||
Анализ ....................................................................................................... |
340 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
341 |
|
|
|
|
|
|
|
|
|
||
Расширенная информация об ошибках ....................................................... |
341 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
342 |
|
|
|
|
|
|
|
|
|
||
API................................................................................................................... |
343 |
|
|
|
|
|
|
|
|
|
||
Расширения, определенные в Winsock 2.0 .................................................... |
343 |
|
|
|
|
|
|
|
|
|
||
Функции read() и write() ................................................................................ |
343 |
|
|
|
|
|
|
|
|
|
||
Функция socket() ............................................................................................ |
343 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
345 |
|
|
|
|
|
|
|
|
|
||
Функция connect() .......................................................................................... |
346 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
348 |
|
|
|
|
|
|
|
|
|
||
Функция bind() ............................................................................................... |
348 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
351 |
|
|
|
|
|
|
|
|
|
||
Функция listen() ............................................................................................. |
351 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
354 |
|
|
|
|
|
|
|
|
|
||
Функция accept() ............................................................................................ |
354 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
357 |
|
|
|
|
|
|
|
|
|
||
Функция select() .............................................................................................. |
358 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
362 |
|
|
|
|
|
|
|
|
|
||
Функции send() и sendto() .............................................................................. |
363 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
366 |
|
|
|
|
|
|
|
|
|
||
Функции recv() и recvfrom()........................................................................... |
366 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
370 |
|
|
|
|
|
|
|
|
|
||
Функции close() и closesocket() ...................................................................... |
370 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
372 |
|
|
|
|
|
|
|
|
|
||
Функция setsockopt() ...................................................................................... |
372 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
375 |
|
|
|
|
|
|
|
|
|
||
Функции ioctl() и ioctlsocket() ........................................................................ |
375 |
|
|
|
|
|
|
|
|
|
||
Анализ ....................................................................................................... |
377 |
|
|
|
|
|
|
|
|
|
||
Простые сокеты ............................................................................................. |
378 |
|
|
|
|
|
|
|
|
|
||
Обзор API ....................................................................................................... |
378 |
|
|
|
|
|
|
|
|
|
||
Заголовочные файлы..................................................................................... |
379 |
|
|
|
|
|
|
|
|
|
||
Заголовок IPv4 ......................................................................................... |
379 |
|
|
|
|
|
|
|
|
|
||
Заголовок ICMP ........................................................................................ |
381 |
|
|
|
|
|
|
|
|
|
||
Заголовок UDP .......................................................................................... |
381 |
|
|
|
|
|
|
|
|
|
||
Заголовок TCP ........................................................................................... |
382 |
|
|
|
|
|
|
|
|
|
||
Определение локального IP-адреса .............................................................. |
383 |
|
|
|
|
|
|
|
|
|
||
Запрос у пользователя .................................................................................... |
383 |
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
. |
|
|
|
|
g |
.c |
|
|||
Перечисление интерфейсов |
|
|
p |
|
|
|
|
|
|
|
||
...................................................................... |
384-x cha |
|
e |
|
||||||||
|
|
|
|
df |
|
|
n |
|
||||
|
|
|
|
|
|
|
|
|
|
|||
Пример исполнения ................................................................................. |
|
388 |
|
|
|
|
|
|
||||
Анализ ....................................................................................................... |
|
388 |
|
|
|
|
|
|
Библиотеки pcap и WinPcap ........................................................................ |
389 |
Пример исполнения ................................................................................. |
394 |
Анализ ....................................................................................................... |
394 |
Резюме ................................................................................................................ |
396 |
Обзор изложенного материала ..................................................................... |
397 |
Часто задаваемые вопросы ............................................................................ |
397 |
Глава 8. Написание shell#кода I ........................................................... |
399 |
Введение ............................................................................................................. |
400 |
Что такое shell-код? ......................................................................................... |
400 |
Инструменты ............................................................................................ |
401 |
Язык ассемблера ....................................................................................... |
402 |
Анализ .................................................................................................. |
403 |
Анализ .................................................................................................. |
403 |
Анализ .................................................................................................. |
404 |
Ассемблер в Windows и UNIX .................................................................. |
406 |
Проблема адресации ...................................................................................... |
406 |
Применение команд call и jmp ............................................................... |
407 |
Анализ .................................................................................................. |
407 |
Анализ .................................................................................................. |
408 |
Заталкивание аргументов в стек ............................................................. |
408 |
Проблема нулевого байта ............................................................................... |
409 |
Реализация системных вызовов..................................................................... |
410 |
Номера системных вызовов ........................................................................... |
410 |
Аргументы системных вызовов ............................................................... |
411 |
Анализ .................................................................................................. |
411 |
Анализ .................................................................................................. |
412 |
Анализ .................................................................................................. |
412 |
Значение, возвращаемое системным вызовом ....................................... |
413 |
Внедрение shell-кода в удаленную программу ............................................ |
413 |
Shell-êîä для привязки к порту ..................................................................... |
413 |
Анализ .................................................................................................. |
415 |
Shell-код для использования существующего дескриптора сокета .............. |
415 |
Анализ .................................................................................................. |
416 |
Внедрение shell-кода в локальную программу ............................................ |
417 |
Shell-êîä, выполняющий execve..................................................................... |
417 |
|
|
|
|
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 |
|
|
|
|
|
|
|
Содержание |
15 |
|
to |
|
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
m |
|
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
-xcha |
|
e |
|
|
Shell-код, выполняющий setuid |
419 |
df |
-x cha |
|
e |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Shell-êîä, выполняющий chroot .................................................................... |
420 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Написание shell-êîäà äëÿ Windows................................................................ |
425 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
431 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Обзор изложенного материала ..................................................................... |
431 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Ссылки на сайты................................................................................................ |
433 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Списки рассылки .............................................................................................. |
434 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Часто задаваемые вопросы ............................................................................ |
434 |
|
|
|
|
|
|
|
|
|
Глава 9. Написание shell#кода II.......................................................... |
437 |
Введение ............................................................................................................. |
438 |
Примеры shell-кодов ........................................................................................ |
438 |
Системный вызов write .................................................................................. |
441 |
Анализ ....................................................................................................... |
442 |
Анализ ....................................................................................................... |
444 |
Системный вызов execve ................................................................................ |
446 |
Анализ ....................................................................................................... |
446 |
Анализ ....................................................................................................... |
447 |
Анализ ....................................................................................................... |
449 |
Анализ ....................................................................................................... |
451 |
Анализ ....................................................................................................... |
453 |
Анализ ....................................................................................................... |
454 |
Shell-êîä для привязки к порту ..................................................................... |
455 |
Анализ ....................................................................................................... |
456 |
Системный вызов socket ................................................................................ |
458 |
Анализ ....................................................................................................... |
458 |
Системный вызов bind ................................................................................... |
459 |
Анализ ....................................................................................................... |
459 |
Системный вызов listen ................................................................................. |
460 |
Анализ ....................................................................................................... |
460 |
Системный вызов accept ................................................................................ |
460 |
Анализ ....................................................................................................... |
461 |
Системный вызов dup2 ................................................................................. |
461 |
Анализ ....................................................................................................... |
462 |
Системный вызов execve ................................................................................ |
462 |
Анализ ....................................................................................................... |
462 |
Анализ ....................................................................................................... |
466 |
Shell-êîä для обратного соединения ............................................................. |
468 |
Анализ ....................................................................................................... |
470 |
|
|
|
|
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 |
|
|
|
16 Защита от взлома: сокеты, эксплойты и shell#код |
|
|
|
|
to |
|
|
|
|
|
|
|||||
w Click |
|
|
|
|
w Click |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
m |
||||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
-xcha |
|
e |
|
Shell-код для повторного использования сокета |
|
471-x cha |
|
e |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
473 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Повторное использование файловых дескрипторов .................................. |
|
474 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
474 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
476 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
477 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
478 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
479 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
480 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
480 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Кодирование shell-êîäà .................................................................................. |
|
481 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
482 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
485 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
486 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Повторное использование переменных программы ................................ |
|
488 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Программы с открытыми исходными текстами ..................................... |
|
488 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
489 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Программы с недоступными исходными текстами ................................ |
|
490 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
491 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
492 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Shell-код, работающий в разных ОС ............................................................. |
|
492 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
493 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Как разобраться в работе готового shell-кода?.......................................... |
|
493 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
496 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
|
499 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Обзор изложенного материала ..................................................................... |
|
499 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Ссылка на сайты................................................................................................. |
|
500 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Списки рассылки .............................................................................................. |
|
500 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Часто задаваемые вопросы ............................................................................ |
|
501 |
|
|
|
|
|
|
Глава 10. Написание эксплойтов I....................................................... |
503 |
Введение ............................................................................................................. |
504 |
Обнаружение уязвимостей ............................................................................. |
504 |
Эксплойты для атаки на локальные и удаленные программы................. |
505 |
Анализ ....................................................................................................... |
507 |
Атаки на форматную строку ........................................................................... |
507 |
Форматные строки ........................................................................................ |
507 |
Анализ ....................................................................................................... |
508 |
Анализ ....................................................................................................... |
509 |
|
|
|
|
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 |
|
|
|||
17 |
|
to |
|
|
|
|
|
|||
|
|
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
m |
|||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
форматной строки .................................................................................... |
510 |
Пример: уязвимость xlockmore вследствие задания пользователем |
|
форматной строки (CVE-2000-0763) ............................................................. |
510 |
Детали уязвимости.................................................................................... |
510 |
Детали эксплойта....................................................................................... |
511 |
Анализ ....................................................................................................... |
513 |
Уязвимости TCP/IP........................................................................................... |
513 |
Гонки ................................................................................................................... |
514 |
Гонки, связанные с файлами ......................................................................... |
515 |
Гонки, связанные с сигналами ...................................................................... |
516 |
Пример: ошибка в программе man при контроле входных данных ...... |
517 |
Детали уязвимости.................................................................................... |
517 |
Резюме ................................................................................................................ |
520 |
Обзор изложенного материала ..................................................................... |
521 |
Ссылки на сайты................................................................................................ |
523 |
Часто задаваемые вопросы ............................................................................ |
523 |
Глава 11. Написание эксплойтов II ..................................................... |
525 |
Введение ............................................................................................................. |
526 |
Программирование сокетов и привязки к порту в эксплойтах.............. |
527 |
Программирование клиентских сокетов ...................................................... |
527 |
Анализ ....................................................................................................... |
528 |
Анализ ....................................................................................................... |
529 |
Программирование серверных сокетов ....................................................... |
529 |
Анализ ....................................................................................................... |
530 |
Эксплойты для переполнения стека .............................................................. |
531 |
Организация памяти ...................................................................................... |
531 |
Переполнение стека ......................................................................................... |
532 |
Поиск поддающихся эксплуатации переполнений стека в программах |
|
с открытыми исходными текстами .......................................................... |
537 |
Пример: переполнение XLOCALEDIR в X11R6 4.2 .................................... |
538 |
Описание уязвимости .............................................................................. |
538 |
Эксплойт ................................................................................................... |
541 |
Вывод ........................................................................................................ |
543 |
Поиск переполнений стека в программах с недоступными исходными |
|
текстами .................................................................................................... |
543 |
Эксплойты для затирания кучи...................................................................... |
544 |
|
|
|
|
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 |
|
|
|
18 Защита от взлома: сокеты, эксплойты и shell#код |
|
|
|
|
to |
|
|
|
|
|
|
|||||
w Click |
|
|
|
|
w Click |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
m |
||||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
-xcha |
|
e |
|
Реализация Дуга Леа |
|
545-x cha |
|
e |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
547 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример: уязвимость, связанная с переполнением буфера |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
из-за неправильно сформированного клиентского ключа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
â OpenSSL SSLv2, CAN-2002-0656 .................................................................. |
|
549 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Описание уязвимости .............................................................................. |
|
550 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Описание эксплойта ................................................................................. |
|
550 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Трудности.................................................................................................. |
|
552 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Усовершенствование эксплойта............................................................... |
|
553 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Вывод ........................................................................................................ |
|
553 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Код эксплойта для переполнения буфера из-за неправильно |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сформированного клиентского ключа в OpenSSL SSLv2................. |
|
554 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Реализация malloc в ОС System V ............................................................ |
|
560 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
562 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
563 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Эксплойты для ошибок при работе с целыми числами........................... |
|
564 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Переполнение целого числа .......................................................................... |
|
564 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
565 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
567 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Обход проверки размера ................................................................................ |
|
567 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
568 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
569 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Другие ошибки, связанные с целыми числами ........................................... |
|
569 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример: уязвимость OpenSSH из-за переполнения целого в процедуре |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
оклика/отзыва CVE-2002-0639 ........................................................................ |
|
570 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Детали уязвимости ......................................................................................... |
|
570 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Детали эксплойта....................................................................................... |
|
571 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Пример: уязвимость в UW POP2, связанная с переполнением буфера, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CVE-1999-0920 ................................................................................................... |
|
574 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Детали уязвимости ......................................................................................... |
|
574 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
|
584 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Обзор изложенного материала ..................................................................... |
|
584 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Ссылки на сайты................................................................................................ |
|
585 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Часто задаваемые вопросы ............................................................................ |
|
586 |
|
|
|
|
|
|
Глава 12. Написание эксплойтов III .................................................... |
587 |
Введение ............................................................................................................. |
588 |
Использование каркаса Metasploit Framework............................................. |
588 |
Разработка эксплойтов с помощью каркаса Metasploit .............................. |
595 |
|
|
|
|
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 |
|
|
|
|
|
|
|
Содержание |
19 |
|
to |
|
|
|
|
|
|
||||
w Click |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
m |
|
w Click |
|
|
|
|
|
|
|
m |
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
|||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
-xcha |
|
e |
|
|
Определение вектора атаки |
596 |
df |
-x cha |
|
e |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Нахождение смещения .................................................................................. |
597 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Выбор вектора управления ............................................................................ |
602 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычисление адреса возврата .......................................................................... |
607 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Использование адреса возврата ..................................................................... |
612 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Определение недопустимых символов ......................................................... |
614 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Определение ограничений на размер............................................................ |
615 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Дорожка из NOP-команд ............................................................................... |
617 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Выбор полезной нагрузки и кодировщика .................................................... |
619 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Интегрирование эксплойта в каркас ............................................................. |
629 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Внутреннее устройство каркаса .................................................................... |
629 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Анализ существующего модуля эксплойта ................................................... |
631 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Переопределение методов ............................................................................. |
637 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Резюме ................................................................................................................ |
638 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Обзор изложенного материала ..................................................................... |
639 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Ссылки на сайты................................................................................................ |
640 |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Часто задаваемые вопросы ............................................................................ |
641 |
|
|
|
|
|
|
|
|
|
Глава 13. Написание компонентов для задач, связанных |
|
с безопасностью ..................................................................................... |
643 |
Введение ............................................................................................................. |
644 |
Модель COM...................................................................................................... |
644 |
COM-объекты ................................................................................................ |
645 |
COM-интерфейсы .......................................................................................... |
645 |
Интерфейс IUnknown ............................................................................... |
645 |
Соглашение о вызове.............................................................................. |
645 |
Среда исполнения COM ................................................................................. |
646 |
Реализация COM-объекта .............................................................................. |
647 |
Регистрация COM-объекта ....................................................................... |
647 |
Êëþ÷ HKEY_CLASSES_ROOT\CLSID ....................................................... |
649 |
Êëþ÷ HKEY_CLASSES_ROOT\CLSID\ |
|
{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx} ................................................. |
649 |
Êëþ÷ InprocServer32................................................................................. |
649 |
Êëþ÷ LocalServer32 ................................................................................... |
649 |
Реализация внутрипроцессного сервера ....................................................... |
649 |
Функция DllGetClassObject ....................................................................... |
650 |
Функция DllCanUnloadNow...................................................................... |
650 |
Функция DllRegisterServer.......................................................................... |
650 |
|
|
|
|
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 |
|
|
|
20 Защита от взлома: сокеты, эксплойты и shell#код |
|
|
|
|
to |
|
|
|
|
|
|
|||||
w Click |
|
|
|
|
w Click |
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
m |
||||||||||||
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
-xcha |
|
e |
|
Функция DllUnregisterServer |
|
651-x cha |
|
e |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
df |
|
|
n |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Библиотека ATL ................................................................................................. |
|
651 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Шаблоны в языке C++................................................................................... |
|
652 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Технология реализации клиента с помощью ATL ........................................ |
|
652 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Интеллектуальные указатели ................................................................... |
|
653 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Поддержка типов данных ......................................................................... |
|
653 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Тип данных BSTR ..................................................................................... |
|
653 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Тип данных VARIANT .............................................................................. |
|
654 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Технология реализации сервера с помощью ATL ........................................ |
|
656 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Композиция классов ................................................................................. |
|
656 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Язык определения интерфейсов ............................................................. |
|
659 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Регистрация класса .................................................................................... |
|
663 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Реализация внутрипроцессного COM-сервера ....................................... |
|
666 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Глобальная переменная _AtlModule ......................................................... |
|
666 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Функции, экспортируемые из DLL.......................................................... |
|
667 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Точка входа в модуль................................................................................. |
|
669 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Реализация внепроцессного COM-сервера ............................................. |
|
669 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Глобальная переменная _AtlModule ................................................... |
|
669 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Точка входа в модуль................................................................................. |
|
669 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты ATL ................................................................................................ |
|
670 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Атрибут module ......................................................................................... |
|
672 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Атрибут interface ....................................................................................... |
|
673 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Атрибут coclass .......................................................................................... |
|
674 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Компиляция COM-сервера .................................................................. |
|
675 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Добавление COM-расширений в программу RPCDUMP ......................... |
|
675 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
678 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Поток управления ......................................................................................... |
|
680 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
681 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Процедуры интеграции с приложением ....................................................... |
|
682 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
683 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Определение интерфейсов COM-объектов .................................................. |
|
685 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Интерфейс IRpcEnum .............................................................................. |
|
686 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Интерфейс IEndPointCollection ................................................................ |
|
686 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Интерфейс IEndPoint ................................................................................ |
|
688 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Классы компонентов ...................................................................................... |
|
688 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
689 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
690 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
693 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Интеграция с приложением: файл COMSupport.h ........................................ |
|
695 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
Анализ ....................................................................................................... |
|
695 |
|
|
|
|
|
|