Основные контрмеры против атак, направленных на расширение привилегий
Процессы
Для обнаружения тех хакерских инструментов, которые нельзя переименовать или скрыть каким-либо другим способом, можно проанализировать список выполняющихся на компьютере процессов. Например, с помощью команды AT можно запланировать задание, которое просматривает список процессов и удаляет из него такие обнаруженные процессы, как remote.exe или nс.ехе. Поскольку для использования сервера remote в системном администрировании нет особых причин (особенно, если учесть, что эта утилита не выполняет аутентификации), то для периодического удаления ее из списка процессов можно использовать команду kill.exe из набора NTRK. В следующем примере показано, как с помощью команды AT запланировать задание, которое будет выполняться каждый день в шесть часов утра и удалять процесс remote. Это немного грубо, но зато эффективно – вам остается лишь настроить время запуска в соответствии со своими предпочтениями.
C:\> at 6А /е:1 ""kill remote.exe"" Added a new job with job ID = 12 C:\>at Status ID Day Time Command Line 12 Each 1 6:00 AM kill remote.exe C:\> kill remote.exe process #236 [remote.exe] killed
Для этих же целей можно использовать утилиту rkill.exe из набора NTRK. Она отличается от kill.exe тем, что может выполняться на удаленном компьютере, а также тем, что в отличие от утилиты kill.exe, нуждается в предоставлении ей в качестве параметра идентификатора удаляемого процесса (PID – Process ID). PID процесса удаленного компьютера можно получить с помощью утилиты pulist.exe, которая также входит в состав NTRK. Можно создать целую автоматизированную систему, в которой регулярно запускается утилита pulist и собирает информацию о выполняющихся на узлах сети запрещенных процессах с последующей передачей этой информации rkill. Конечно, еще раз нужно оговориться, что такую систему очень легко обойти, присвоив выполняемому файлу remote.exe какое-нибудь другое, не вызывающее подозрений имя, например WINLOG.EXE. Однако она сможет эффективно противостоять процессам, которые нельзя переименовывать, например winVNC. EXE.
Порты
Даже если такие утилиты, как remote или nс, были переименованы, утилита netstat поможет выявить их присутствие по наличию портов, находящихся в состоянии ожидания или соединения. Периодический запуск netstat с целью проверки подобных соединений – это иногда наилучший способ найти их. В следующем примере показано, как утилита netstat, запущенная на целевом сервере в то время, когда взломщик подключился к нему с помощью утилит remote, nc и установил соединение с портом 8080, отображает результаты опроса портов (описание параметра -an можно узнать, введя в командной строке команду netstat /?). Обратите внимание, что в соединении remote используется порт TCP 139, а утилита netcat находится в состоянии ожидания и имеет одно установленное соединение с портом TCP 8080 (остальные данные, отображаемые netstat, удалены для наглядности).
С:\> netstat – an Active Connections Proto Local Address Foreign Address State TCP 192.168.202.44:139 0.0.0.0:0 LISTENING TCP 192.168.202.44:139 192.168.202.37:1817 ESTABLISHED TCP 192.168.202.44:8080 0.0.0.0:0 LISTENING TCP 192.168.202.44:8080 192.168.202.37:1784 ESTABLISHED
Из приведенного фрагмента листинга команды netstat видно, что наилучшей защитой против использования утилиты remote является блокирование доступа к портам 135-139 потенциальных целей или на уровне брандмауэра либо отключение привязки NetBIOS для незащищенных адаптеров, как описывалось в разделе "Контрмеры: Защита От Подбора Пароля" выше в данной главе.
С помощью конвейера, организованного между командами netstat и find, можно получить данные об определенных портах. Так, с помощью следующей команды выполняется поиск серверов NetBus, прослушивающих порт по умолчанию:
netstat – an| find "12345"
Утилита fport от компании Foundstone (http://www.foundstone.com) позволяет получить комбинированную информацию о процессах и портах. Она предоставляет перечень всех активных сокетов и идентификаторов процессов, использующих соединение. Вот пример ее результатов.
FPORT – Process port mapper Copyright (с) 2000, Foundstone, Inc. http://www.foundstone.com PID NAME TYPE PORT 184 IEXPLORE UDP 1118 249 OUTLOOK UDP 0 265 MAPISP32 UDP 1104 265 MAPISP32 UDP 0