25.11.2002

Если вас хакнули… Жизнь после взлома (окончание)

Я надеюсь, вы никогда не были жертвой компьютерной атаки. Но если вам когда-то не повезло, и это произошло – не стоит отчаиваться, все поправимо. Более того, как показывает практика, люди, чья система однажды была взломана компьютерными мошенниками или вандалами, обращают большее внимание на безопасность и избегают повторения неприятностей. Может быть, и эта статья окажется кому-то полезной и поможет справиться с возникшими трудностями.

Хакеры крайне редко упрощают нам процесс своей поимки, а те, которые все же каким-то образом способствуют этому – не хакеры, а обыкновенные лохи. Поэтому даже при запущенном зараженном приложении, имеющемся трояне и даже протекающей в настоящее время атаке неспециалисту не так то просто понять это на фоне остальных законных действий в системе. Возьмем пример Unix-системы (результаты команды top):

8:54pm  up 40 min,  2 users,  load average: 0.00, 0.01, 0.04
48 processes: 45 sleeping, 3 running, 0 zombie, 0 stopped
CPU states:  1.3% user,  0.9% system,  0.0% nice, 97.6% idle
Mem:   254200K av,  249128K used,    5072K free, 0K shrd, 57964K buff
Swap:  522104K av,     960K used,  521144K free  39936K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 1281 matt      18   0 11984  11M 10144 R     1.1  4.5   0:00 kdeinit
  825 root      16   0 83820  17M  3584 R     0.7  6.8   1:17 X
 1306 matt      11   0  1028 1028   836 R     0.1  0.4   0:00 top
    1 root       8   0   476  476   420 S     0.0  0.1   0:00 init
    2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd
    3 root      19  19     0    0     0 SWN   0.0  0.0   0:00 ksoftirqd_CPU0
    4 root       9   0     0    0     0 SW    0.0  0.0   0:00 kswapd
    5 root       9   0     0    0     0 SW    0.0  0.0   0:00 bdflush
    6 root       9   0     0    0     0 SW    0.0  0.0   0:00 kupdated
    8 root       9   0     0    0     0 SW    0.0  0.0   0:00 khubd
    9 root       9   0     0    0     0 SW    0.0  0.0   0:00 kjournald
  135 root       9   0     0    0     0 SW    0.0  0.0   0:00 kjournald
  460 root       9   0   560  560   472 S     0.0  0.2   0:00 syslogd
  465 root       9   0   444  444   384 S     0.0  0.1   0:00 klogd
  545 root       8   0   636  636   480 S     0.0  0.2   0:00 cardmgr
  677 root       9   0  1816 1816  1300 S     0.0  0.7   0:00 sendmail
  

Сложно? Неочевидно? Не стоит расстраиваться и сомневаться в своих умственных способностях. Это – естественная реакция любого нормального человека. Можно пойти несколько другим путем.

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

Так, что же вам стоит сделать? Для начала стоит посмотреть, какие сервисы законно должны идти, и какие порты при этом могут использоваться. Затем стоит запустить portscan. Имеются различия? Никакие непредусмотренные порты не должны быть открыты.

Пример работы сканера (Nmap):

[/home/matt]$ nmap -sT -v -v -v localhost
Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ )
Warning:  You are not root -- using TCP pingscan rather than ICMP
Host localhost.localdomain (127.0.0.1) appears to be up ... good.
Initiating Connect() Scan against localhost.localdomain (127.0.0.1)
Adding open port 25/tcp
Adding open port 6000/tcp
The Connect() Scan took 0 seconds to scan 1554 ports.
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1552 ports scanned but not shown below are in state: closed)
Port       State       Service
25/tcp     open        smtp
6000/tcp   open        X11

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

Пример простого фильтра для отсечения нормального трафика - tcpdump

[root@localhost matt]# /usr/sbin/tcpdump 
-elXnvvv -i eth0 dst port not 22 and 
dst port not 80 and dst port not 53

Другой инструмент, который можно использовать в исследовании - netstat. Он используется для получения списка активных сетевых соединений. При использовании его наряду с инструментами Unix, такими как lsof и fuser (или fport в случае Windows), мы получим своего рода карту – какие программы используют какие порты.

Пример Netstat

[/home/matt]$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address  State
tcp        0      0 *:printer               *:*        LISTEN
tcp        0      0 *:x11                   *:*        LISTEN
tcp        0      0 *:ssh                   *:*        LISTEN
tcp        0      0 localhost.localdom:smtp *:*        LISTEN

Что изменилось?

Эксплоит в общем случае может делать только одну из трех операций: добавлять, удалять или модифицировать  файлы. Что было удалено или изменено? Логи, как мы и говорили ранее, файлы или все сразу, если эксплоит особо вредный. Файлы, добавленные в систему – как правило, инструменты, типа снифферов или вирусов, которые могут использоваться для будущей «работы». В процессе поиска новых файлов вы их легко обнаружите – пусть даже они и будут скрытыми. Это все – мелочи, рассчитано на полных даунов. Чего действительно стоит опасаться, так это модифицированных файлов. С какого такого резона они изменились? И чем это нам грозит? Ситуацию с ними можно сравнить с проблемой с генетически модифицированной пищей – вроде бы съедобно, сразу от нее, как правило, не умирают. Но вот все последствия приема такой пищи не могут определить даже самые продвинутые специалисты-генетики (последствия варьируются от «безвредно» до «в лучшем случае – бесплодие детей, в худшем – же лучше и не задумываться»). Измененные файлы – самое опасное наследство взлома и самая тяжелая часть восстановления системы. Злоумышленник мог сотворить множество неприятных для вас вещей: создать новые аккаунты, двойную регистрацию, вставить трояны, целые галереи «черных ходов» - и т.д. Если вдуматься обо всех возможных последствиях, то и жить не захочется. Не в том, конечно, фатальном смысле, а в том, что «а не удалить ли мне систему на х...?» (на харде, а не то, что некоторые могли подумать). Действительно, многие эксперты-радикалы советуют в случае, когда нет возможности восстановить систему из backup, отформатировать винт и установить все заново. Но это, конечно, слишком серьезный шаг, в большинстве случаев систему можно обеззаразить.

С чего стоит начать? Критичны системные файлы. Все, что каким-либо образом относится к регистрации, паролям, привилегиям также требует особого внимания. 

Далееe, можно использовать инструменты find command для Unix или любых аналогичные аналогичные средства, проверяющими файловую систему на произошедшие изменения. Такие программы проверяют три параметра: время последнего доступа к файлу, время изменения статуса и время последней модификации файла. Вы можете составить список всех файлов, измененных в результате произошедшего инцидента. Просмотрите его, удалите или замените все зараженные файлы. В случае заражения каких-либо программ, следует переустановить с инсталляционного диска. Модификация бинариев часто означает наличие в вашей системе Трояна, открывающего «черный ход».

Unix find command (измененные файлы в /etc за последние 10 минут):

[root@localhost matt]# find /etc -mtime -10
/etc
/etc/sysconfig/hwconf
/etc/mtab
/etc/mail/statistics
/etc/dhcpc
/etc/dhcpc/dhcpcd-eth1.cache
/etc/dhcpc/dhcpcd-eth1.info
/etc/dhcpc/dhcpcd-eth1.info.old
/etc/aliases.db
/etc/adjtime
/etc/pcmcia
/etc/pcmcia/backup_wireless.opts
/etc/pcmcia/wireless.opts
/etc/pcmcia/1/etc/kde/kdm
/etc/kde/kdm/kdmsts
/etc/ioctl.save
/etc/.aumixrc

Все новые и модифицированные файлы перед уничтожением неплохо бы скопировать на отдельную машину, а еще лучше записать на CD для последующего изучения. Они являются непосредственными «свидетелями преступления» и могут многое рассказать о том, что именно произошло на вашем компьютере. Такие файы могут нести «отпечатки пальцев» эксплоитов – как уже известных, так и новых и представляют интерес для специалистов в области компьютерной безопасности. Если вы не уверены в своей компетенции в данном вопросе, то можно обратиться за помощью к опытным специалистам в данном вопросе. Из российских фирм можно порекомендовать Positive Technologies,  а из иностранных - CERT или Xforce. Даже обладая только этими файлами они, в большинстве случаев, смогут  восстановить всю картину происшествия и вернуть систему в рабочее состояние.

Прежде чем запустить систему снова

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

Осталось сделать три шага – настроить мониторинг протекающих процессов, сохранение логов в надежном месте (лучше всего – на отдельной машине). Стоит после инцидента внимательнее относиться к этим вещам, по крайней мере, в первое время. Будьте внимательны! Стоит ожидать повторных атак на вашу систему, кроме того, в случае недостаточно тщательного обеззараживания системы могли остаться «черные ходы», которые будут при этом выявлены. Как говорится, “Береженного Бог бережет” (сказала монашенка, натягивая на свечку второй презерватив).

Заключение

Я надеюсь, вы никогда не были жертвой компьютерной атаки. Но если вам когда-то не повезло, и это произошло – не стоит отчаиваться, все поправимо. Более того, как показывает практика, люди, чья система однажды  была взломана компьютерными мошенниками или вандалами, обращают большее внимание на безопасность и  избегают повторения неприятностей. Может быть, и эта статья окажется кому-то полезной и поможет справиться с возникшими трудностями.

В заключение, хочу порекомендовать инструменты, которые вы можете использовать в подобной работе:

Анализ процессов

  • top и ps: стандартные инструменты Unix.
  • Windows Task Manager: нажать клавиши Ctl-Alt-Delete и выбрать Task Manager.

Анализ работы сети

  • nmap: Windows и Unix portscanner.
  • tcpdump: сниффер для Windows и Unix.
  • netstat: стандартный инструмент Windows и Unix – создает список активных соединений.
  • fport: инструмент Windows для просмотра процессов и портов.
  • fuser and lsof: то же самое для Unix
  • Snort: система обнаружения вторжения.

Анализ защищенности системы

  • Xspider - программное средство сетевого аудита, предназначенное для поиска уязвимостей на серверах и рабочих станциях.

Анализ диска и файлов

  • find: инструмент Unix для поиска модифицированных файлов.
  • Forensic Toolkit: то же самое для Windows для анализа файловой системы NTFS.
  • The Coroner's Toolkit: инструмент Unix для анализа поврежденных и взломанных систем.

Целостность файлов

  • Tripwire: коммерческий продукт, как для Unix, так и для Windows.
  • AIDE: схожий, но бесплатный исходно открытый инструмент для Unix
или введите имя

CAPTCHA