Техника сетевых атак
Шрифт:
· fd ptyp1 ptyq8 tty07 tty30 ttypc
· fd0 ptyp2 ptyq9 tty08 tty31 ttypd
· fd1 ptyp3 ptyqa tty09 tty32 ttype
· lp ptyp4 ptyqb tty10 tty33 ttypf
· lp0 ptyp5 ptyqc tty11 tty34 ttyq0
· lp1 ptyp6 ptyqd tty12 tty35 ttyq1
· lp2 ptyp7 ptyqe tty13 tty36 ttyq2
· mod0 ptyp8 ptyqf tty14 tty37 ttyq3
· mod1 ptyp9 rmt0 tty15 tty38 ttyq4
· mod2 ptypa rmt0n tty16 tty39 ttyq5
· mod3 ptypb rmt1 tty17 tty40 ttyq6
· mod4 ptypc rmt1n tty18 ttyp0 ttyq7
· mod5 ptypd stderr tty19 ttyp1 ttyq8
· mod6 ptype stdin tty20 ttyp2 ttyq9
· mod7 ptypf stdout tty21 ttyp3 ttyqa
· mt0 ptyq0 tty tty22 ttyp4 ttyqb
· mt0n ptyq1 tty00 tty23 ttyp5 ttyqc
· mt1 ptyq2 tty01 tty24 ttyp6 ttyqd
· mt1n ptyq3 tty02 tty25 ttyp7 ttyqe
· null ptyq4 tty03 tty26 ttyp8 ttyqf
· ptmx ptyq5 tty04 tty27 ttyp9 windows
· ptymx ptyq6 tty05 tty28 ttypa
Под
Описание UWIN останется не полным, если не снять с него крышку, и не заглянуть под капот. Архитектурно эмулятор состоит всего из двух динамических библиотек POSIX.DLL и AST5x.DLL. В POSIX реализовано множество системных вызовов UNIX таких, как fork, exec, malloc; фактически образующих ядро виртуальной UNIX. Ядро заведует памятью, управляет процессами и отвечает за операции ввода-вывода. Роль AST5x гораздо скромнее - это всего лишь аналог стандартной библиотеки Си “stdio”, написанной с учетом особенностей эмуляции UNIX. (Смотри рисунок 042)
Рисунок 042 Архитектура эмулятора UWIN
При этом все UWIN-приложения разделяют общий регион памяти, содержащий в частности таблицу открытых файлов и кучу. («UWIN maintains an open file table in a memory-mapped region, which is shared by all the currently active UWIN processes; this region is writable by all UWIN processes so that the appropriate information can be shared between them»). (Смотри рисунок 006.txt) Отсюда следует, одно UWIN приложение потенциально способно «уронить» другое, или иными словами, некорректно работающий код может скинуть ласты, предоставив злоумышленнику привилегированный доступ к системе. Поэтому, если UWIN используется в качестве серверной платформы, не следует запускать приложения сомнительного происхождения.
Рисунок 006. Разделяемая память UWIN-приложений
В остальном же, UWIN приложения ничем не отличаются от обычных исполняемых файлов Windows и могут запускаться непосредственно из Explorer, минуя среду UIWN.
Логотип CYGWIN
Другой популярный эмулятор UINX - CYGWIN по многим показателям заметно уступает UWIN, зато распространяется вместе с исходными текстами и, разумеется, абсолютно бесплатен. Зато плохо документирован и рассчитан на опытного пользователя, который сам разберется что к чему.
Собственно, CYGWIN никакой не эмулятор UNIX, а всего лишь
· UWIN
· $ cat /etc/passwd
· root:x:0:13:Built-in account/domain:/tmp:/usr/bin/ksh
· telnetd:x:1:1:telnetd:/:/dev/null
· CYGWIN
· $ cat /etc/passwd
· /etc/passwd: No such file or directory
В CYGWIN вообще нет файла “/etc/passwd” и он не эмулирует подсистему безопасности UNIX. Конечно, это не мешает написать соответствующие процедуры самостоятельно, но не лучше ли воспользоваться готовым UWIN? Кстати, в UWIN изначально входит базовый набор утилит и оболочек, автоматически устанавливаемых программой инсталляции. Напротив же, пользователи CYGWIN вынуждены самостоятельно скачивать необходимые компоненты с сервера, порой исправляя грубые ошибки, часто приводящие к полной неработоспособности кода (благо исходные тексты доступны).
Больше всего огорчает отсутствие в CYGWIN механизма поддержки демонов. Так, на момент написания книги, не известно ни одной реализации telnet-сервера под CYGWIN. В остальном же архитектуры этих двух эмуляторов достаточно близки. Как и в UWIN используется разделяемая память для всех приложений ("…creates shared memory areas… used to keep track of open file descriptors and assist fork and exec, among other purposes" [88]). Реализация fork сводится к созданию приостановленного процесса с последующим копированием сегмента данных ("…creates a suspended child process using the Win32 CreateProcess call; next… fills in the child's.data and.bss sections by copying from its own address space into the suspended child's address space”). А выполнение exec приводит к образованию нового процесса и подмене идентификаторов в локальной таблице эмулятора -"…exec present their own set of difficulties. Because there is no way to do an actual exec under Win32, Cygwin has to invent its own Process IDs"
Поэтому, в точности воспроизведения ядра UNIX оба эмулятора практически идентичны и все отличия выпадают на долю прикладных утилит. Проигрывая в этом вопросе, CYGWIN значительно превосходит UWIN в производительности, особенно в операциях ввода-вывода. К сожалению, UWIN слишком медленно обращается с экраном и работа с “Mortal Commander” превращается в сплошное мучение [89]. Между тем, он идеально подходит для демонстрации многих примеров, приведенных в этой книге.
К сожалению, CYGWIN не поддерживает сырых гнезд, никак не отмечая этот прискорбный факт в документации [90] - “The current release includes all POSIX.1/90 calls except for setuid and mkfifo, all ANSI C standard calls, and many common BSD and SVR4 services including Berkeley sockets”. В результате этого, многие программы, работающие с IP протоколом на низком уровне (большей частью для атак на чужие системы), не смогут корректно выполнятся в среде CYGWIN.
Человек, который способен взять что-то заурядное, привычное и осветить его новым светом, может устрашить. Мы не хотим, чтобы наши представления изменялись; нам кажется, что требовать этого, значит, угрожать нам. "Все важное мне уже известно!" - кричим мы. И тут приходит Изменяющий и выбрасывает все наши представления прочь - словно ненужный мусор.
Мастер Дзен-суфи
Первые шаги с UNIX (глава для начинающих)
O В этой главе: