Компоновка и использование набора инструментов для расследования хакерских атак, то есть для "живого ответа" в системе Windows
"Живой ответ" (live response) позволяет собрать кратковременно живущие данные, которые теряются, когда машина-жертва выключается. Живой ответ может быть вашим единственный шансом, если не зависящие от вас обстоятельства не позволят вам выключить сервер. Эта ситуация случается, когда сервер не имеет резервного копирования. (Да, мы видели, что такое случается!) В этой лекции обсуждаются инструментальные средства, которые вы можете использовать, чтобы выполнить "живой ответ" для операционных систем 2000 или Windows NT.
Из инструментальных средств, обсуждаемых в этой лекции, вы сгенерируете набор инструментов для "живого ответа" и запишите его на компакт-диск или на дискету, чтобы затем их можно было перенести на машину-жертву, поскольку у большинства машин должен быть CD-ROM или привод гибких дисков (либо и то и другое). В дальнейшем мы будем ссылаться на этот CD-ROM или дискету, как на "носитель ответа" (response media). Вы должны скопировать каждое из инструментальных средств, перечисленных в этой лекции, из его источника (приведенного в каждом разделе) на "носитель ответа". Кроме того, чтобы не затрагивать файлы на исходной машине (машине, которая, возможно, подверглась атаке хакера), вы должны скопировать все сопутствующие динамически загружаемые библиотеки (DLL) и вспомогательные файлы, необходимые для работы каждого исполняемого файла. Например, любые программы, которые мы хотели бы использовать из дистрибутива Cygwin (см. лекцию "Cygwin" ), должны быть связаны с библиотекой cygwin1.dll. Хотя это только один инструмент из набора, обычно использующегося для выполнения живого ответа, любой инструмент может быть включен в набор, если он тщательно исследован, и все файлы его поддержки (такие как DLL) включены в набор.
Чтобы использовать набор инструментов "живого ответа", войдите в систему, как истинный администратор (или, по крайней мере, с привилегиями администратора). Большинство этих команд не смогут сделать вывод, если у вас нет доступа администратора к объектам, для анализа которых они были разработаны.
Вывод всех команд, выполненных в ответе, будет передаваться на заданную рабочую станцию для хранения и анализа, поскольку вы не захотите писать информацию на локальный жесткий диск машины-жертвы, так как это может уничтожить потенциальные свидетельства случившегося. Вы передаете информацию по сети с помощью Netcat (или Cryptcat), используя следующую команду, выполненную на машине-адресате (использующейся для судебной экспертизы):
C:\ > nc -l -p <destination port> > <command>.txt
Маркер <command> означает каждую из команд, выполненных на исходной машине-жертве.
На исходной машине напечатайте следующую команду, чтобы выполнить <command> и передать информацию на рабочую станцию по нужному адресу <destination IP> через TCP-порт адресата <destination port>:
D:\> <command> |D:\nc <destination IP> <destination port>
CMD.EXE
Встаньте на время на место взломщика. Вы хотите скрыть свой несанкционированный доступ к учетной записи системного администратора. Если вы поместите измененную версию командной оболочки на взломанном сервере, которая скрывает сетевые подключения, происходящие с вашего атакующего компьютера, вы сможете развить свою атаку дальше.
Теперь поставьте себя снова в положение человека, отвечающего на атаку. Поскольку командная оболочка может быть изменена (так обычно случается после того, как учетная запись администратора была взломана), то человек, отвечающий на атаку, не может доверять ее выводу. Поэтому, при расследовании инцидента мы должны принести свою собственную оболочку.
Надежная командная оболочка - это файл cmd.exe, который расположен в каждой системе Windows NT или 2000 в каталоге C:\winnt\system32\cmd.exe.
Реализация
Первым инструментом, который необходим в вашем комплекте средств "живого ответа", будет надежная командная оболочка. После того как вы вошли на машину-жертву, выберите Start/Run, а затем наберите следующую команду:
D:\cmd.exe
Новая командная оболочка появится на диске D:. Все другие команды, обсуждаемые в этой лекции, будут выполнены внутри этой надежной командной оболочки. Любые команды, используемые здесь, будут считаться надежными, потому что они не выполняются через ненадежную командную оболочку (расположенную в C:\winnt\system32\cmd.exe) взломанного сервера.
Fport
Команда fport - одна из первых команд, которые мы обычно выполняем на взломанном сервере в процессе ответных действий. fport - это бесплатный инструмент, распространяемый компанией Foundstone, Inc, сайт http://www.foundstone.com. Этот инструмент устанавливает соответствие между каждым открытым TCP- и UDP-портом на машине-жертве и исполняемым файлом, запущенным в системе. Утилиту fport полезно использовать для поиска различных лазеек (backdoor-утилиты скрытого удаленного администрирования), которые могут открыть взломщику более легкий вход в вашу систему.
Реализация
Утилиту fport легко использовать из командной строки:
D:\> fport
fport возвращает информацию, подобную следующей (эта специфическая информация получена из машины, которая обсуждается в разделе "Пример из жизни" в конце этой лекции).
FPort v1.31 - TCP/IP Process to Port Mapper Copyright 2000 by Foundstone, Inc. http://www.foundstone.com Securing the dot com world Pid Process Port Proto Path 600 tcpsvcs -> 7 TCP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 9 TCP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 13 TCP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs- -> 17 TCP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 19 TCP C:\WINNT\System32\tcpsvcs.exe 1076 inetinfo -> 21 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 1076 inetinfo -> 25 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 972 wins -> 42 TCP C:\WINNT\System32\wins.exe 1036 dns -> 53 TCP C:\WINNT\System32\dns.exe 1076 inetinfo -> 80 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 440 svchost -> 135 TCP C:\WINNT\system32\svchost.exe 8 System -> 139 TCP 1076 inetinfo -> 443 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 8 System -> 445 TCP 600 tcpsvcs -> 515 TCP C:\WINNT\System32\tcpsvcs.exe 8 System -> 548 TCP 492 msdtc -> 1025 TCP C:\WINNT\System32\msdtc.exe 808 MSTask -> 1026 TCP C:\WINNT\system32\MSTask.exe 600 tcpsvcs -> 1029 TCP C:\WINNT\System32\tcpsvcs.exe 1036 dns -> 1034 TCP C:\WINNT\System32\dns.exe 972 wins -> 1036 TCP C:\WINNT\System32\wins.exe 1076 inetinfo -> 1038 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 8 System -> 1041 TCP 8 System -> 1044 TCP 492 msdtc -> 3372 TCP C:\WINNT\System32\msdtc.exe 924 termsrv -> 3389 TCP C:\WINNT\System32\termsrv.exe 1076 inetinfo -> 3940 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 1464 NC -> 62875 TCP C:\InetPub\Scripts\NC.EXE 600 tcpsvcs -> 7 UDP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 9 UDP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 13 UDP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 17 UDP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 19 UDP C:\WINNT\System32\tcpsvcs.exe 972 wins -> 42 UDP C:\WINNT\System32\wins.exe 1036 dns -> 53 UDP C:\WINNT\System32\dns.exe 600 tcpsvcs -> 67 UDP C:\WINNT\System32\tcpsvcs.exe 600 tcpsvcs -> 68 UDP C:\WINNT\System32\tcpsvcs.exe 440 svchost -> 135 UDP C:\WINNT\system32\svchost.exe 8 System -> 137 UDP 8 System -> 138 UDP 868 snmp -> 161 UDP C:\WINNT\System32\snmp.exe 8 System -> 445 UDP 248 lsass -> 500 UDP C:\WINNT\system32\lsass.exe 616 svchost -> 1030 UDP C:\WINNT\System32\svchost.exe 616 svchost -> 1031 UDP C:\WINNT\System32\svchost.exe 1036 dns -> 1032 UDP C:\WINNT\System32\dns.exe 1036 dns -> 1033 UDP C:\WINNT\System32\dns.exe 972 wins -> 1035 UDP C:\WINNT\System32\wins.exe 236 services -> 1037 UDP C:\WINNT\system32\services.exe 1076 inetinfo -> 1039 UDP C:\WINNT\System32\inetsrv\inetinfo.exe 616 svchost -> 1645 UDP C:\WINNT\System32\svchost.exe 616 svchost -> 1646 UDP C:\WINNT\System32\svchost.exe 616 svchost -> 1812 UDP C:\WINNT\System32\svchost.exe 616 svchost -> 1813 UDP C:\WINNT\System32\svchost.exe 600 tcpsvcs -> 2535 UDP C:\WINNT\System32\tcpsvcs.exe 1076 inetinfo -> 3456 UDP C:\WINNT\System32\inetsrv\inetinfo.exe18.1.
Просматривая данные вывода утилиты fport, мы видим, что TCP-порт 62875 открыт, и это подозрительно, потому что он был открыт из исполняемого файла с именем C:\inetpub\scripts\nc.exe. Кроме того, мы видим, что идентификатор ID этого процесса равен 1464. Это нечто такое, что обычно не устанавливается на новой системе, так что процесс заслуживает дальнейшего анализа. Хотя это и очевидно, но все же стоит заметить: путь и имя файла для сервисной программы с PID 1464, в данном случае, выглядят подозрительно, однако взломщик мог бы назвать программу и каким-нибудь более безобидным именем.