Узнай своего врага II:

Выслеживаем черную шляпу

© Проект Honeynet
http://project.honeynet.org
Последние изменения: 18 июня, 2001
© Мяснянкин В.В., перевод на русский язык
14 октября 2001

Эта статья является второй в серии "Узнай своего врага". В первой статье мы рассмотрели средства и методологию, которые используют Script Kiddie, а именно как они отыскивают уязвимости и затем нападают. Третья статья рассказывает о том, что делают Script Kiddie, получив права root, а именно каким образом они заметают следы и что делают дальше. А здесь мы рассмотрим вопрос отслеживания действий злоумышленника. Как и в военных действиях, Вы должны следить за перемещениями плохих парней и знать, что они собираются делать. Мы узнаем, что Вы сможете, и что не сможете определить, используя регистрационные журналы Вашей системы. Вы можете установить, были ли попытки исследования Вашей системы, как это было сделано, какие инструментальные средства применялись, и привело ли это к успеху. Приведенные примеры ориентированы на Linux, но могут быть с успехом применены и к большинству других Unix-подобных операционных систем. Учтите, что нет гарантированного способа точно отследить каждый шаг злоумышленника, однако данная статья поможет Вам начать движение в этом направлении.

Защита регистрационных журналов


Эта статья не охватывает вопросы систем обнаружения атак (Intrusion Detection, IDS); на эту тему имеется немало прекрасных публикаций. Если Вы заинтересовались этой темой, то я рекомендую Вам обратить внимание на такие приложения как Network Flight Recorder или snort. Мы сконцентрируемся на процессе аналитического исследования, а именно, каким образом выяснить, что делает враг путем изучения регистрационных журналов системы. Вы будете удивлены, сколько интересной информации можно в них найти! Однако, прежде чем мы начнем говорить об их изучении, нам надо обсудить их защищенность. Эти журналы не будут представлять никакой ценности, если не обеспечить их целостность. Первое, что делает злоумышленник, проникнув в систему - это изменение регистрационных журналов. Имеется целый ряд средств (rootkits), удаляющих из журналов все следы присутствия (например, cloack), или полностью подменяющих подсистему регистрации (в частности "троянизированный" syslogd). Итак, первый шаг при рассмотрении Ваших журналов - это их защита.

Это означает, что Вам придется использовать удаленный syslog-сервер. Независимо от того, насколько защищена Ваша система, Вы не можете доверять регистрационным журналам со скомпрометированного компьютера. Даже если черная шляпа не придумает ничего лучше, чем выполнить команду rm -rf /*, очистив таким образом жесткий диск, это уже сделает восстановление регистрационных журналов затруднительным. Чтобы защититься от этой ситуации, Вам придется настроить Ваши системы таким образом, чтобы они регистрировали трафик как локально, так и на удаленном log-сервере. Я рекомендую сделать такой сервер на базе выделенной машины, единственной задачей которой будет сбор журналов с других систем. Если величина материальных затрат является определяющим фактором, Вы можете построить log-сервер под управлением linux. Эта машина должна быть хорошо защищена, все сервисы на ней должны быть выключены, а доступ разрешен только с консоли (см. "Armoring Linux" для примера). Также, убедитесь, что 514 порт UDP блокирован или закрыт межсетевым экраном (firewall) со стороны Internet. Это защитит Ваш log-сервер от навязывания ложной регистрационной информации снаружи.

Для тех, кто любит перестраховываться, могу порекомендовать свой любимый трюк, заключающийся в перекомпиляции syslogd таким образом, чтобы он читал альтернативный файл конфигурации, например, /var/tmp/.conf. В этом случае черная шляпа не будет знать, где находится настоящий конфигурационный файл. Чтобы достичь этого, просто замените в исходном тексте syslogd строку "/etc/syslog.conf" на любое другое желаемое значение. После этого настроим наш новый конфигурационный файл на регистрацию событий как локально, так и на удаленном сервере (см. пример). Удостоверитесь, что в стандартной копии конфигурационного файла (/etc/syslog.conf) также сделаны настройки на локальную регистрацию. Не смотря на то, что этот файл теперь не играет никакой роли, эта мера предосторожности не даст черной шляпе понять, что есть еще и удаленная регистрация. Другой подход - использовать безопасный метод регистрации. Он заключается в замене стандартного syslogd другим, с проверкой целостности и дополнительными опциями. Один из вариантов - syslog-ng, который Вы можете найти по адресу http://www.balabit.hu/products/syslog-ng.html

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

Поиск характерных признаков

Обычно Вы можете определить факт сканирования портов Вашей системы путем простого анализа регистрационных журналов. Большинство Script Kiddie сканирует сеть в поисках какой-то определенной уязвимости. Если Вы замечаете в регистрационных журналах записи, указывающие на попытку установить соединение на один и тот же порт большинства Ваших систем с одного адреса, это указывает на такое специализированное сканирование. Вероятнее всего, злоумышленник имеет готовый эксплоит для какой-то определенной уязвимости и обследует сеть в ее поисках. Если поиск будет удачным, он попробует применить эксплоит. По умолчанию, большинство систем на базе Linux устанавливаются с программой TCP Wrapper, поэтому мы можем увидеть такие записи в /var/log/secure. Для других разновидностей Unix, мы можем фиксировать эти события путем запуска супердемона (inetd) с флажком "-t". Типичное сканирование на определенную уязвимость выглядит как приведенный ниже листинг. В данном случае злоумышленник пытается найти демон wu-ftpd, в котором есть уязвимости.

/var/log/secure
Apr 10 13:43:48 mozart in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:51 bach in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:54 hadyen in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:57 vivaldi in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:58 brahms in.ftpd[6613]: connect from 192.168.11.200

Здесь ясно виден источник сканирования нашей сети - 192.168.11.200. Обратите внимание, как источник последовательно перебирает каждый IP-адрес (так бывает не всегда). В этом одно из преимуществ выделенного log-сервера - Вы можете оценить картину в масштабе сети, т.к. регистрационные журналы объединены. Повторяющиеся соединения на порт 21 (ftp) наиболее вероятно указывают на поиск уязвимого демона wu-ftpd. Мы только что определили, что именно ищет черная шляпа. Очень часто сканирования идут волнами. Кто-то выпускает эксплоит для imap, и Вы обнаруживаете в регистрационных журналах всплеск сканирований порта imap. В следующем месяце Вы обнаружите повышенное внимание к ftp. Отличное место для получения информации о текущих эксплоитах - http://www.cert.org/advisories/. Иногда сканирование производится на предмет наличия нескольких уязвимостей; тогда Вы увидите в регистрационных журналах записи, свидетельствующие о попытках соединения из одного источника к нескольким портам Ваших систем.

Помните, что если Вы не регистрируете обращения к сервису, Вы не сможете отследить факт сканирования. Например, большинство rpc-соединений не регистрируется. Между тем, большинство сервисов могут быть просто добавлены в /etc/inetd.conf и попытки соединений будут зафиксированы с помощью TCP Wrapper. Например, Вы можете добавить в /etc/inetd.conf запись для NetBus. TCP Wrapper в этом случае настраивается на сброс и регистрацию соединения (см. Intrusion Detection для дополнительной информации по этому вопросу).

Какое средство применяется?

Иногда Вы можете достаточно точно определить, какое средство использовано для сканирования Вашей сети. Большинство простых средств сканирования, таких как ftp-scan.c, исследуют сеть в поисках конкретной уязвимости. Если в Вашей сети наблюдается интерес к какому-то определенному порту, наиболее вероятно, что используется одно из таких специализированных средств. Существуют, однако, и более универсальные средства, проверяющие наличие сразу нескольких уязвимостей. Два наиболее известных - это sscan (автор - jsbach) и nmap (автор - Fyodor). Я выделили именно эти два средства, так как они представляют две "категории" сканеров. Я настойчиво рекомендую Вам изучить собственные сети этими средствами - результаты могут вас удивить :).
ПРИМЕЧАНИЕ. sscan достаточно старый сканер (ему уже больше года), и он рассмотрен здесь лишь в качестве примера. Для сканирования Вашей собственной сети на предмет наличия уязвимостей я рекомендую использовать Nessus, распространяемый с открытыми исходными текстами.

Sscan, часто применяемый Script Kiddie, является многоцелевым сканером. Он проверяет сеть на наличие набора заранее определенных уязвимостей. Это настраиваемое средство: оно позволяет Вам добавить описание новых типов уязвимостей. Вы просто сообщаете ему адрес сети, и sscan делает остальную работу самостоятельно. Однако, для его использования необходимо иметь права root в системе, на которой он запускается. Выдаваемая им информация чрезвычайно легко интерпретируется, что и сделало его настолько популярным. Он выдает сводную информацию о многих уязвимых сервисах. Все, что Вам надо - это запустить сканирование выбранной сети, проанализировать выходную информацию (найти с помощью grep слово "VULN") и запустить соответствующий "эксплоит дня". Ниже приведен результат работы sscan, запущенного на анализ системы под названием mozart (172.17.6.30).

otto #./sscan -o 172.17.6.30

--------------------------<[ * report for host mozart *
<[ tcp port: 80 (http) ]>		<[ tcp port: 23 (telnet) ]>
<[ tcp port: 143 (imap) ]>		<[ tcp port: 110 (pop-3) ]>
<[ tcp port: 111 (sunrpc) ]>		<[ tcp port: 79 (finger) ]>
<[ tcp port: 53 (domain) ]>		<[ tcp port: 25 (smtp) ]>
<[ tcp port: 21 (ftp) ]>

--<[ *OS*: mozart: os detected: redhat linux 5.1
mozart: VULN: linux box vulnerable to named overflow.
<[ *CGI*: 172.17.6.30: tried to redirect a /cgi-bin/phf request.
<[ *FINGER*: mozart: root: account exists.
<[ *VULN*: mozart: sendmail will 'expn' accounts for us
<[ *VULN*: mozart: linux bind/iquery remote buffer overflow
<[ *VULN*: mozart: linux mountd remote buffer overflow
---------------------------<[ * scan of mozart completed *

Nmap входит в группу средств, добывающих "чистые данные". Он не пытается найти уязвимости, а просто сообщает, какие порты открыты, оставляя принятие решения об их защищенности Вам. Nmap быстро стал самым популярным сканером, и на то есть объективные причины. Он соединяет в одном средстве черты лучших сканеров, включая определение типа операционной системы, различные способы построения пакетов, сканирование как UDP, так и TCP, рандомизацию и т.д. Однако, необходимо обладать достаточными знаниями в области сетевых технологий, чтобы интерпретировать полученные данные. Ниже приведен пример работы nmap, запущенного для изучения той же самой системы.

otto #nmap -sS -O 172.17.6.30 

          Starting nmap V. 2.08 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/) 
          Interesting ports on mozart (172.17.6.30): 
          Port    State       Protocol  Service 
          21      open        tcp        ftp 
          23      open        tcp        telnet 
          25      open        tcp        smtp 
          37      open        tcp        time 
          53      open        tcp        domain 
          70      open        tcp        gopher 
          79      open        tcp        finger 
          80      open        tcp        http 
          109     open        tcp        pop-2 
          110     open        tcp        pop-3 
          111     open        tcp        sunrpc 
          143     open        tcp        imap2 
          513     open        tcp        login 
          514     open        tcp        shell 
          635     open        tcp        unknown 
          2049    open        tcp        nfs 

          TCP Sequence Prediction: Class=truly random Difficulty=9999999 (Good luck!) 
          Remote operating system guess: Linux 2.0.35-36 

          Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds

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

/var/log/secure
Apr 14 19:18:56 mozart in.telnetd[11634]: connect from 192.168.11.200
Apr 14 19:18:56 mozart imapd[11635]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.fingerd[11637]: connect from 192.168.11.200
Apr 14 19:18:56 mozart ipop3d[11638]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.telnetd[11639]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.ftpd[11640]: connect from 192.168.11.200
Apr 14 19:19:03 mozart ipop3d[11642]: connect from 192.168.11.200
Apr 14 19:19:03 mozart imapd[11643]: connect from 192.168.11.200
Apr 14 19:19:04 mozart in.fingerd[11646]: connect from 192.168.11.200
Apr 14 19:19:05 mozart in.fingerd[11648]: connect from 192.168.11.200

/var/log/maillog
Apr 14 21:01:58 mozart imapd[11667]: command stream end of file, while reading line user=??? host=[192.168.11.200]
Apr 14 21:01:58 mozart ipop3d[11668]: No such file or directory while reading line user=??? host=[192.168.11.200]
Apr 14 21:02:05 mozart sendmail[11675]: NOQUEUE: [192.168.11.200]: expn root

/var/log/messages
Apr 14 21:03:09 mozart telnetd[11682]: ttloop: peer died: Invalid or incomplete multibyte or wide character
Apr 14 21:03:12 mozart ftpd[11688]: FTP session closed

Sscan также определяет уязвимости cgi (common gateway interface). Эти попытки не будут зафиксированы в журналах syslogd, Вы найдете их в файле access_log. Я решил включить и этот пример для иллюстрации.

/var/log/httpd/access_log 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/phf HTTP/1.0" 302 192 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/Count.cgi HTTP/1.0" 404 170 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/test-cgi HTTP/1.0" 404 169 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/php.cgi HTTP/1.0" 404 168 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/handler HTTP/1.0" 404 168 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/webgais HTTP/1.0" 404 168 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/websendmail HTTP/1.0" 404 172 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/webdist.cgi HTTP/1.0" 404 172 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/faxsurvey HTTP/1.0" 404 170 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/htmlscript HTTP/1.0" 404 171 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/pfdisplay.cgi HTTP/1.0" 404 174 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/perl.exe HTTP/1.0" 404 169 
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/wwwboard.pl HTTP/1.0" 404 172 
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500] "GET /cgi-bin/ews/ews/architext_query.pl HTTP/1.0" 404 187 
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500] "GET /cgi-bin/jj HTTP/1.0" 404 163 

Обратите внимание, что для каждого порта создается полноценное соединение (SYN, SYN-ACK, ACK), которое затем закрывается. Это происходит потому, что sscan в данном режиме работает на уровне приложений. sscan не просто определяет, открыт ли порт ftp, но и какой именно демон ftp запущен. То же самое можно сказать и про imap, pop и т.д. Это легко увидеть при помощи sniffit - средства, широко применяемого для перехвата паролей.

mozart $ cat 172.17.6.30.21-192.168.11.200.7238
220 mozart.example.net FTP server (Version wu-2.4.2-academ[BETA-17](1) Tue Jun 9 10:43:14 EDT 1998) ready.

Как видно из приведенного выше примера, для определения версии wu-ftpd также создавалось полноценное соединение. Когда Вы видите в Ваших регистрационных журналах такие следы, это означает, что применялось средство поиска уязвимостей. Такие программы всегда создают полноценные соединения для определения версий исполняемого программного обеспечения.

Nmap, как и большинство сканеров портов, не интересуется, какая версия программного обеспечения запущена, он определяет, открыт ли соответствующий порт. Для этого nmap снабжен мощным набором опций, позволяющих Вам задать тип используемого соединения, включая SYN, FIN, Xmas, Null и т.п. Детальное описание этих опций можно получить по адресу http://www.insecure.org/nmap/nmap_doc.html. . Эти опции влияют на вид записей в Ваших регистрационных журналах, в зависимости от использованного атакующим набора параметров. Соединение с флагом -sT являются полноценными, поэтому записи в регистрационных журналах будут похожи на записи после применения sscan, с той лишь разницей, что nmap проверяет большее количество портов.

/var/log/secure
Apr 14 21:25:08 mozart in.rshd[11717]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:08 mozart in.rshd[11717]: connect from unknown
Apr 14 21:25:09 mozart in.timed[11718]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.timed[11718]: connect from unknown
Apr 14 21:25:09 mozart imapd[11719]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart imapd[11719]: connect from unknown
Apr 14 21:25:09 mozart ipop3d[11720]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart ipop3d[11720]: connect from unknown
Apr 14 21:25:09 mozart in.rlogind[11722]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.rlogind[11722]: connect from unknown

Еще один момент, о котором следует помнить, это опция -D (decoy). Эта опция позволяет установить для сканера поддельный обратный адрес. Вы можете увидеть соединения с 15 различных адресов одновременно, но только один из них будет настоящим. Чрезвычайно трудно определить, который из 15 источников является истинным. Более того, при сканировании портов часто используется опция -sS. Этот режим позволяет осуществить скрытное (стелс) сканирование. В этом случае сканер посылает только SYN-пакет, а после получения ответа от удаленной системы сразу же его разрывает посылкой пакета с флагом RST.

/var/log/secure

Ух! Здесь ничего нет! Причина кроется в том, что подсистема регистрации записывает данные только о полностью установленных соединениях. Так как nmap запускался с параметром sS, полноценное TCP-соединение не устанавливалось, и факт сканирования, таким образом, зафиксирован не был. Именно по этой причине данный тип сканирования является скрытным (стелс) - он не фиксируется в системных журналах. Для систем на базе Linux со старыми версиями ядра (а именно: 2.0.x), неполные соединения фиксируются, но как несостоявшиеся. Регистрационные журналы системы с таким ядром и просканированной с параметром -sS выглядят следующим образом (ПРИМЕЧАНИЕ: приведены только первые пять записей):

/var/log/secure
Apr 14 21:25:08 mozart in.rshd[11717]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:08 mozart in.rshd[11717]: connect from unknown
Apr 14 21:25:09 mozart in.timed[11718]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.timed[11718]: connect from unknown
Apr 14 21:25:09 mozart imapd[11719]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart imapd[11719]: connect from unknown
Apr 14 21:25:09 mozart ipop3d[11720]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart ipop3d[11720]: connect from unknown
Apr 14 21:25:09 mozart in.rlogind[11722]: warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.rlogind[11722]: connect from unknown

Обратите внимание на ошибки в установлении соединения. Так как последовательность SYN-ACK прерывается и установка соединения не завершена, демон не может определить систему-источник. Из регистрационных журналов видно, что Вас сканируют, но невозможно определить кто. Еще более тревожным является тот факт, что большинство систем (включая Linux с новыми ядрами) не фиксируют эти ошибки в журналах. Как сказал Fyodor "... основываясь на сообщениях 'connection reset by peer'. Эта особенность Linux 2.0.XX, практически все остальные системы (включая ядра 2.2 и поздние ядра 2.1) не показывают ничего. Ошибка (accept(), возвращающий управление до завершения трехшагового процесса установления соединения) исправлена."

Nmap имеет и другие опции для осуществления скрытого сканирования, такие как -sF, -sX, -sN, использующие различные флаги. Вот так выглядят регистрационные журналы после такого сканирования:

/var/log/secure

И снова, обратите внимание, что журналы пусты! Страшно подумать, Вы просканированы, но даже не подозреваете об этом! Все три типа сканирования дают одинаковые результаты, но Вы можете зафиксировать только первый - с опцией -sT (полное соединение). Чтобы обнаружить факты скрытного сканирования, Вам придется использовать специальные средства регистрации, такие как tcplogd или ippl. Некоторые коммерческие межсетевые экраны также могут обнаруживать и фиксировать попытки такого сканирования, в частности IPFilter, SunScreen или FireWall-1.

Получили ли они доступ?

После того, как Вы определили факт сканирования, следующий вопрос, которым Вы задаетесь "Смогли ли они проникнуть внутрь?" Большинство современных эксплоитов основано на переполнении буфера (известном также как срыв стека). Говоря простым языком, переполнение буфера возникает, когда программа (как правило, демон) получает на вход данные большего размера, чем ожидалось, перезаписывая критичные области памяти. В результате выполняется некоторый код, дающий права привилегированного пользователя (root). Дополнительную информацию о переполнении буфера можно найти в прекрасной статье (автор - Aleph1) по адресу ftp://ftp.technotronic.com/rfc/phrack49-14.txt.

Обычно следы атак на переполнение буфера можно обнаружить в файле /var/log/messages (или /var/adm/messages для других разновидностей Unix) для атак типа mountd. Вы также можете обнаружить аналогичные следы в файле maillog, если атака осуществлена на imapd. В регистрационных журналах это выглядит так:

Apr 14 04:20:51 mozart mountd[6688]: Unauthorized access by NFS client 192.168.11.200.
Apr 14 04:20:51 mozart syslogd: Cannot glue message parts together
Apr 14 04:20:51 mozart mountd[6688]: Blocked attempt of 192.168.11.200 to mount
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P3Û3À°^[Í~@3Ò3À~KÚ°^FÍ~@þÂuô1À°^BÍ~@~EÀubëb^V¬<ýt^FþÀt^Këõ°0þÈ~HFÿëì^°^B~
I^FþÈ~IF^D°^F~IF^H°f1ÛþÃ~IñÍ~@~I^F°^Bf~IF^L°*f~IF^N~MF^L~IF^D1À~IF^P°^P~IF^H°
fþÃÍ~@°^A~IF^D°f³^DÍ~@ë^DëLëR1À~IF^D~IF^H°fþÃÍ~@~Hð?1ÉÍ~@°?þÁÍ~@°?þÁÍ~@¸.bin@~
I^F¸.sh!@~IF^D1À~HF^G~Iv^H~IF^L°^K~Ió~MN^H~MV^LÍ~@1À°^A1ÛÍ~@èEÿÿÿÿýÿPrivet
ADMcrew~P(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(Apr 14 04:20:51
mozart ^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^
E^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^ H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H(-^E

Если Вы видите нечто подобное в Ваших регистрационных журналах, это означает, что кто-то пытался использовать уязвимость Вашей системы. Очень сложно определить, была ли попытка эксплоита успешной. Один из путей сделать это - сразу после попытки применения эксплоита посмотреть, нет ли соединений удаленной системы с Вашей. Если имеет место успешный вход из удаленной системы, то попытка применения эксплоита оказалась удачной. Другой признак - появление новых пользователей типа "moof", "rewt", "crak0" или "w0rm" в файле /etc/passwd. Эти пользователи (с UID=0) добавляются многими распространенными сценариями-эксплоитами. Как только черная шляпа получила доступ к Вашей системе, первая вещь, которую она обычно делает - это очистка регистрационных журналов и установка "троянизированной" подсистемы регистрации (см. "Они получают права root"). С этого момента Вы не сможете получать регистрационную информацию от Вашей системы, так как все уже скомпрометировано. Что делать дальше, является темой отдельной статьи :). А тем временем я рекомендую Вам изучить документ http://www.cert.org/nav/recovering.html

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

Korn shell script

Заключение

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



Honeynet project