Не возникало ли у вас ощущения, что защита вашего сайта была виртуозно пройдена, и вы об этом не знаете? Несомненно, вы можете своевременно устанавливать заплаты, правильно настраивать ACL, однако всем известно, что каждую неделю выпускаются десятки новых эксплоитов, причем многие из них никогда не будут обнародованы. Так как вы же убедиться, что вы защищены? Иногда кажется, что с работой программ что-то не в порядке из-за того, что вы были атакованы. И хотя большинство атакующих оставляют следы, по которым можно просто обнаружить вторжение, но некоторые самые опытные хакеры профессионалы проникают незаметно и не оставляют никаких улик, что вдвойне опасно.
Не возникало ли у вас ощущения, что защита вашего сайта была виртуозно пройдена, и вы об этом не знаете? Несомненно, вы можете своевременно устанавливать заплаты, правильно настраивать ACL, однако всем известно, что каждую неделю выпускаются десятки новых эксплоитов, причем многие из них никогда не будут обнародованы. Так как вы же убедиться, что вы защищены? Иногда кажется, что с работой программ что-то не в порядке из-за того, что вы были атакованы. И хотя большинство атакующих оставляют следы, по которым можно просто обнаружить вторжение, но некоторые самые опытные хакеры профессионалы проникают незаметно и не оставляют никаких улик, что вдвойне опасно.
В этой статье будут предложены методы, которые вы можете использовать для обнаружения вторжения. Существует множество сторонних продуктов, которые помогают в обнаружении вторжения, но мы можем использовать встроенные инструментальные средства Windows 2000 для раскрытия вторжения. Но самое главное, анализируя поведение атакующего, мы можем определить наиболее эффективные методы, которые могли бы помочь в определении таких нападений.
Представим себя на месте злоумышленника, который хочет проникнуть в вашу сеть. С чего бы он начал? Скорее всего, сначала он бы попытался собрать как можно больше информации о структуре вашей сети. Предположительно, что он бы использовал инструменты типа whois, dig, nslookup, tracert, а также доступные источники информации в Интернет. Предположим, что он сумел найти маленькую часть вашей сети, которая не была защищена межсетевой защитой. К примеру, он проводил сканирование портов и заметил, что у некоторых компьютеров открыты 135, 139, 389 и 445 порты – самая опасная лазейка в Windows 2000. Он мог также заметить, к примеру, что у одного из компьютеров открыты 80 и 443 порты, которые, скорее всего, относятся к Web серверу IIS 5.0.
Как мы можем обнаружить злоумышленника при этих действиях? Прежде всего, легко заметить сканирование портов. Также можно заметить внезапное увеличение сетевого трафика. Обычно для этого можно использовать специальные инструменты, но в Windows 2000 вы можете просто добавить предупреждение в мониторе производительности (performance monitor), когда превышен определенный предел. Хорошими индикаторами сетевого трафика являются счетчики TCP-Segments/Sec. или Network Interface-Packets/Sec. Сканирование портов обычно проявляется как устойчивое увеличение трафика в течение нескольких минут, в зависимости от количества просмотренных портов. Другой простой индикатор сетевого трафика на вашем компьютере – это значок на панели задач, который показывает деятельность вашего сетевого адаптера. Для включения индикатора, зайдите в панель задач, и отметьте опцию "Show icon in taskbar when connected". И, наконец, есть встроенный инструмент командной строки netstat. Если вы подозреваете просмотр ваших портов, вы можете использовать команду:
Netstat -p tcp -n
Если ваши порты в настоящее время действительно сканируют, то в зависимости от используемого инструмента, вы получите результаты, аналогичные этим:
Active Connections
Proto Local Address Foreign Address State
TCP 127.13.18.201:2572 127.199.34.42:135 TIME_WAIT
TCP 127.13.18.201:2984 127.199.34.42:1027 TIME_WAIT
TCP 127.13.18.201:3106 127.199.34.42:1444 SYN_SENT
TCP 127.13.18.201:3107 127.199.34.42:1445 SYN_SENT
TCP 127.13.18.201:3108 127.199.34.42:1446 SYN_SENT
TCP 127.13.18.201:3109 127.199.34.42:1447 SYN_SENT
TCP 127.13.18.201:3110 127.199.34.42:1448 SYN_SENT
TCP 127.13.18.201:3111 127.199.34.42:1449 SYN_SENT
TCP 127.13.18.201:3112 127.199.34.42:1450 SYN_SENT
TCP 127.13.18.201:3113 127.199.34.42:1451 SYN_SENT
TCP 127.13.18.201:3114 127.199.34.42:1452 SYN_SENT
Заметьте последовательность портов, связанных с местным и внешним адресом.
Также заметьте большое количество SYN_SENT входов. Некоторые средства просмотра
могут отображаться как ESTABLISHED или TIME_WAIT. Ключевой индикатор -
последовательность портов и большое количество подключений с одного хоста.
Но вернемся к нашему сценарию. Далее, на месте атакующего, стоило бы попытаться найти слабые сетевые пароли Windows или эксплуатировать уязвимости в обнаруженном web-сервере. Так как сетевой вход в систему дал бы хакеру больше прав, скорее всего, он бы пытался сперва пойти по первому варианту. Он загружает имена учетных записей, и выбирает ту, которая реже всего используется (возможно, учетная запись гостя). Далее делается несколько попыток войти в систему с этой учетной записью, пока она не будет заблокирована, чтобы точно определить установленную политику блокировки. Далее используется сценарий, который пробует множество входов в систему для каждой учетной записи (но с условием, чтобы не вызвать блокировки). Конечно, так как учетная запись Администратора не блокируется, составляется список обычных паролей, и предпринимаются попытки войди в систему под ними. Параллельно, через публичный прокси сервер хакер может пытаться эксплуатировать известные уязвимости IIS.
Тем временем, вы должны были получить уже несколько предупреждений от некоторых ключевых счетчиков производительности. Первый из них – Web Service-Connection Attempts/sec. Этот счетчик сообщит вам, когда ваш Web-трафик внезапно увеличился. Другой очень важный счетчик - Web Service-Not Found Errors/sec. Так как любой Web-сканер проверяет, существуют ли определенные URL, счетчик покажет резкое увеличение 404 ошибки. Вы можете заранее установить предупреждения, которые указали бы, что против вас используется cgi сканер. Параллельно, другие счетчики должны поднять тревогу, что против компьютеров вашей сети начато нападение грубой силы. Здесь вам помогут два счетчика - Server-Logon/sec и Server-Errors Logon.
Установка предупреждения при более чем двух входах в систему в секунду и больше чем пяти ошибках входа быстро сообщит вам о предпринятой попытке нападения грубым перебором. Быстрая проверка Security Event Log подтвердит предположение о большом количестве неудачных входов в систему, сделанных с одного компьютера.
Теперь допустим, что пока мы пытались обнаружить вторжение, хакеру повезло, и он сумел подобрать пароль. Пусть это был пустой пароль администратора для системы, которая была только что установлена и не полностью защищена. Хакер использует этот пароль, чтобы соединиться с этой машиной, и первое, что должен бы сделать – установить несколько утилит для организации дальнейшего взлома. Первое, что приходит на ум – это lsadump2.exe, nc.exe, tlist.exe, и несколько собственных средств сканирования. Некоторые другие небходимые программы, типа nbtstat.exe, уже присутствуют в вашей системе. Хакер запускает службу планировщика и выбирает nc.exe, что бы он запустился через 1 минуту и переадресовывал cmd.exe к порту типа 1234. Он ждет 1 минуту и использует локальный nc.exe для связи с удаленной командной строкой. Затем запускается tlist.exe, для просмотра списка процессов (хакер замечает, что включена экранная заставка), и затем выполняется lsadump2.exe, для получения сохраненных паролей и затем просматривается жесткий диск на наличие интересного материала.
Если вы в это время находитесь в этой системе, вы можете заметить в Task Manager процесс cmd.exe с высоким ID процесса. Вы также замечаете, что выполняется служба планировщика. Посмотрев в C:\Winnt\SchedLgU.txt можно заметить недавнюю запись для процесса nc.exe, который также присутствует в менеджере задач. Поискав файлы, которые были недавно созданы, вы найдете несколько исполняемых файлов в system32, включая nc.exe. Т.е вы обнаружили вторжение и теперь вам нужно собрать как можно больше информации об злоумышленнике. Перезагрузка компьютера предупредит его, что он возможно был обнаружен. Просмотр журнала событий покажет вам несколько неуспешных входов в систему и в конце один успешный вход. Однако запись в журнале регистрации не покажет IP адрес компьютера на другом конце, а только имя компьютера. Для определения IP адреса злоумышленника введите следующую команду:
netstat -a –n
И ищите подключения к 139 и 445 TCP портам и 137 и 445 UDP портам.
Запомните этот IP адрес, и затем выполните поиск всех подключений с ним:
nbtstat -A
В результатах вы заметите Netcat сеанс с 1234 портом. Также вы заметите
несколько подключений по 137 и 138 порту с другими компьютерами в вашей сети.
Тем временем хакер просмотрел другие компьютеры в вашей сети, используя
удаленный Netcat сеанс. Он обнаружил ресурс по имени PUBLIC на компьютере с
именем FILESERVER и начинает изучать все вокруг. Из-за NetBIOS подключений к
другим компьютерам в вашей сети, вы подозреваете, что этот компьютер может
использоваться для взлома вашей внутренней сети. Поэтому вы вводите команду:
net view
Вы замечаете подключение к диску на внутреннем файл сервере, и решаете, что у
вас достаточно доказательств посягательства на вашу внутреннюю сеть. Вы
выполняете команды снова и записываете результаты в файл.
После изучения ваших ресурсов, взломщик снова выполняет tlist.exe, и замечает,
что экранная заставка больше не выполняется и что приглашение к вводу
команды(command prompt) является открытым. Не уверенный, что вы его обнаружили,
он делает новую запись в реестре, чтобы снова выполнить netcat при запуске и
разъединяется. Затем он ждет приблизительно 10 минут и при просмотре компьютера
получает ответ Request timed out. Очевидно он понял, что был обнаружен, и пора
сматывать удочки.
Конечно, этот пример вымышленный и немного упрощенный, но в нем описаны многие
элементы сетевого нападения и методы их обнаружения. Почти все сетевые
нападения могут быть обнаружены, если вы прослеживаете следующую информацию:
Отслеживая состояние этих компонентов, вы сможете помешать множеству попыток
взлома, без использования каких либо сторонних продуктов обнаружения вторжения.
Конечно, другие приложения могут помочь, но вы должны всегда знать эти шесть
элементов, описанных выше. В описанном сценарии, произошло единичное нападение.
В реальной жизни может происходить множество нападений, встречающихся 24 часа в
день. Некоторые могут заканчиваться обычным сканированием портов, а другие
могут компрометировать всю сеть. Не реально постоянно наблюдать регистрируемые
данные целый день. Но использование методов, изученных в нашем примере, вы
можете построить систему, которая будет на вас работать. Вы можете настроить
систему таким образом, чтобы предупреждения посылались вам по электронной почте
или по пейджеру. Вы также можете использовать службу планировщика, чтобы
регулярно регистрировать все процессы или сетевые подключения, выполняющиеся в
настоящее время. Создавая небольшой сценарий и используя несколько бесплатных
инструментов, вы можете построить систему обнаружения вторжения, которая может
выиграть у любой коммерческой IDS системы. Для определения вторжения не
обязательно иметь более мощное программное обеспечение, чем стандартные
средства Windows.
Спойлер: мы раскрываем их любимые трюки