Алексей Лукацкий
заместитель технического директора Научно-инженерного предприятия "Информзащита",
luka@infosec.ru

История о троянском коне, рассказанная Гомером, прочно вошла в жизнь специалистов по ИТ. "Троянскими конями" стали называть небольшие программы, которые незаметно размещаются на компьютерах пользователей и выполняют различные несанкционированные действия (кража паролей, изменение или удаление файлов и т.д.). Как правило, такой троянец проникает на компьютер через электронную почту, и пользователь, прельстившись завлекательным названием или аннотацией, запускает этот файл, собственными руками внедряя враждебную программу на свой компьютер. К другим способам распространения можно отнести присоединение к вполне безобидной программе, которая, будучи запущенной на компьютере пользователя, автоматически инсталлирует и троянца.

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

Существует несколько распространенных способов обнаружения троянских коней. Это:

  • контроль открытых портов;
  • контроль взаимодействия между компонентами троянского коня;
  • контроль системного реестра;
  • контроль запущенных процессов;
  • контроль определенных файлов;
  • контроль сигнатур троянских коней.

Последний метод достаточно трудно организовать без помощи специальных средств, поэтому в статье мы обсудим только первые пять методов.

Контроль открытых портов

Один из основных способов обнаружения работы "троянских коней" - анализ открытых портов. По такому принципу можно обнаружить абсолютное большинство троянцев, в которых жестко "зашиты" номера используемых портов. Обнаружить открытые порты можно либо локально, либо удаленно. В первом случае, запустив утилиту netstat с параметром "-а", вы увидите список всех открытых портов.

Обнаружение троянского коня NetBus (результат команды netstat -a)
Active Connections

Proto	Local Address	Foreign Address	State
TCP	ws_lukich:135	0.0.0.0:0	LISTENING
TCP	ws_lukich:901	0.0.0.0:0	LISTENING
TCP	ws_lukich:2998	0.0.0.0:0	LISTENING
TCP	ws_lukich:9991	0.0.0.0:0	LISTENING
TCP	ws_lukich:12345	0.0.0.0:0	LISTENING
TCP	ws_lukich:12346	0.0.0.0:0	LISTENING
TCP	ws_lukich:1026	0.0.0.0:0	LISTENING
TCP	ws_lukich:1026	localhost:1027	ESTABLISHED
TCP	ws_lukich:1027	localhost:1026	ESTABLISHED
TCP	ws_lukich:137	0.0.0.0:0	LISTENING
TCP	ws_lukich:138	0.0.0.0:0	LISTENING
TCP	ws_lukich:nbsession	0.0.0.0:0	LISTENING
TCP	ws_lukich:nbsession	ws_luka:3055	ESTABLISHED
UDP	ws_lukich:135	*:* 
UDP	ws_lukich:nbname	*:* 
UDP	ws_lukich:nbdatagram	*:* 

В данном случае на локальном узле WS_LUKICH обнаружено присутствие широко известного троянца NetBus, который функционирует на портах 12345 и 12346. Список портов, используемых троянцами, можно получить с Web-сервера НИП "Информзащита" (http://www.infosec.ru/pub/pub_frame.html).

Удаленное обнаружение реализуется при помощи любого сканера портов, например, nmap, который может функционировать под управлением большинства Unix-подобных ОС, а также Windows NT:

Обнаружение троянского коня NetBus
(результат команды nmapnt -sS 200.0.0.200)
Starting nmapNT V. 2.53 by ryan@eEye.com 
eEye Digital Security (http://www.eEye.com)
based on nmap by fyodor@insecure.org  
(www.insecure.org/nmap/)

We skillfully deduced that your address is 0.0.0.0
Interesting ports on WS_LUKICH (200.0.0.200):
(The 1518 ports scanned but not shown below 
are in state: closed)
Port       State       Service
135/tcp    open        unknown                 
139/tcp    open        unknown                 
901/tcp    open        unknown                 
12345/tcp  open        NetBus                  
12346/tcp  open        NetBus                  

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

Удаленное сканирование узла WS_LUKICH также обнаружило открытые порты 12345 и 12346, что говорит о наличии на сканируемом узле троянского коня NetBus.

Можно воспользоваться и нетрадиционным способом. Например, некоторые троянские кони имеют возможность сканирования заданного диапазона адресов и определения их установленных компонентов. Такой возможностью обладает и NetBus (рис. 1).

Fig.1 Рис. 1. Сканирование заданного диапазона адресов троянцем NetBus.

Контроль взаимодействия между компонентами троянского коня

Некоторые троянские кони реализованы по технологии клиент-сервер, где в качестве сервера выступает небольшая программа, незаметно устанавливаемая, например, на атакуемом узле, а в качестве клиента - консоль управления сервером. При этом с одной консоли можно управлять различными серверами, установленными в различных местах. Эти компоненты (клиент и сервер) взаимодействуют между собой по протоколам TCP, UDP или ICMP.

Снова продемонстрируем этот метод на примере NetBus. Первый вариант взят из журнала регистрации межсетевого экрана IPFW, а второй - из журнала регистрации межсетевого экрана SecureConnect 3.03 компании Ascend.

Обнаружение троянского коня NetBus (журнал IPFW)
Jan 19 18:56:10 XXX /kernel: ipfw: 2400 Deny TCP 
193.10.185.3:11111 24.221.48.XXX:12345 in via ed1

Обнаружение троянского коня NetBus
(журнал Ascend SecureConnect 3.03)

Mar 29 21:48:34 209-30-73-81.flash.net ASCEND: 
wan2 tcp 209.30.73.81;12345 <- 211.45.208.151;3647 62 
syn !pass (totcp-1)
Mar 29 21:48:39 209-30-73-81.flash.net ASCEND: 
wan3 tcp 209.30.73.82;12345 <- 211.45.208.151;3648 62 
syn !pass (totcp-1)
Mar 29 21:48:44 209-30-73-81.flash.net ASCEND: 
wan3 tcp 209.30.73.83;12345 <- 211.45.208.151;3649 62 
syn !pass (totcp-1)
Mar 29 21:48:49 209-30-73-81.flash.net ASCEND: 
wan3 tcp 209.30.73.84;12345 <- 211.45.208.151;3650 62 
syn !pass (totcp-1)
Mar 29 21:48:54 209-30-73-81.flash.net ASCEND: 
wan2 tcp 209.30.73.85;12345 <- 211.45.208.151;3651 62 
syn !pass (totcp-1) 

Как обнаружить взаимодействие компонентов троянских коней другими средствами, продемонстрируем на примере троянца SubSeven, который обычно использует порт 1243 (или 27374 в версии 2.1).

Обнаружение троянского коня SubSeven
(журнал системы обнаружения атак Snort)
 [**] BACKDOOR Attempt- Subseven [**]
12/26-23:09:42.219109 0:90:27:F:22:A2 -> 0:40:5:F6:34:51 
type:0x800 len:0x4E
216.192.29.30:3216 -> 206.18.108.130:1243 TCP TTL:64 
TOS:0xD0 ID:11841 
S***** Seq: 0x4908C6 Ack: 0x0 Win: 0x2000
TCP Options => MSS: 536 NOP WS: 0 NOP NOP TS: 0 0 Opt 9 
(40): 0000 0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 

Обнаружение троянского коня SubSeven (журнал IPCHAINS)

Jan 5 02:56:39 input REJECT eth1 PROTO=TCP 
152.166.212.218:2102 192.168.1.1:1243 L=48 S=0x00 
I=38494 F=0x4000 T=108 SYN (#13) 

Обнаружение троянского коня SubSeven (журнал ZoneAlarm)

Name Packet sent from 24.226.103.143 (TCP Port 3387) 
to x.x.x.x (TCP Port 27374) was blocked 
  Status Dropped 
  Source IP Address 24.226.103.143 
  Destination IP Address x.x.x.x 
  Source Port 3387 
  Destination Port 27374 
  Link Layer Protocol 1 
  Network Layer Protocol 1 
  Transport Layer Protocol 2 
  Count 1 
  Status Code 100002 
  Lock Level 0 
  Security Information 0,1,0,2 
  Operating System Windows 98-4.10.1998- -SP 
  Product ZoneAlarm 
  ProductVersion 2.0.26 
  Language 0409 
  State Find Code 13 

Обнаружение троянского коня SubSeven
(журнал NFR Back Officer)

17:54:19.596269 ip 60: 24-216-141-52.hsacorp.net 
.1566 > my.box.1243: 
  S 12759610:12759610(0) win 8192 <mss 1460> (DF) 
(ttl 19 , id 61249)
17:54:19.624034 ip 54: my.box.1243 > 24-216-141-52
.hsacorp.net.1566: 
  R 0:0(0) ack 12759611 win 0 (ttl 128, id 4263) 

Обнаружение троянского коня SubSeven
(журнал BlackICE Defender)

59  2000-05-04 19:35:31  2003105  SubSeven port 
probe  172.142.109.211  
  AC8E6DD3.ipt.aol.com  152.207.70.106  
port=1243&name=Sub_7  8	

Обнаружение троянского коня SubSeven
(журнал межсетевого экрана Cisco Secure Pix Firewall)

Jun 03 00:06:26 [FW1] Jun 03 2000 00:08:00: 
%PIX-2-106001: 
  Inbound TCP connection denied from 216.58.19.218/3483 
  to server1/27374 flags SYN 
Jun 03 00:06:26 [FW1] Jun 03 2000 00:08:00: %PIX-7-106011: 
  Deny inbound (No xlate) tcp src 
outside:216.58.19.218/3487 
  dst outside:global/27374 

Выше рассматривались классические троянцы, построенные в соответствии с моделью "один к одному" (одна консоль - один сервер) или "один ко многим" (одна консоль - несколько серверов). Однако существуют и другие, так называемые распределенные троянские кони или "зомби", соответствующие моделям "многие к одному" и "многие ко многим". По этому принципу построены такие троянцы, как Trinoo, TFN2K, Stacheldraht, mstream и т.д. Однако и для них используются те же самые механизмы обнаружения.

Обнаружение троянского коня WinTrinoo
(журнал маршрутизаторов Cisco)
Feb 25 21:14:38 134.161.1.101 21043: 
%SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.57(4419) -> 
134.161.67.71(34555), 1 packet
Feb 25 21:14:51 134.161.1.101 21044: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.57(4420) -> 
134.161.67.71(34555), 1 packet
Feb 25 21:14:57 134.161.1.101 21045: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.57(4421) -> 
134.161.67.71(34555), 1 packet
Feb 25 21:15:00 134.161.1.101 21046: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.57(4422) -> 
134.161.67.71(34555), 1 packet
Feb 26 00:35:40 134.161.1.101 22024: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.57(4523) -> 
134.161.67.71(34555), 1 packet
Feb 26 11:01:56 134.161.1.101 24967: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.170(4531) -> 
134.161.67.71(34555), 1 packet
Feb 26 11:09:24 134.161.1.101 25007: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.170(4541) -> 
134.161.67.71(34555), 1 packet
Feb 26 11:09:26 134.161.1.101 25008: %SEC-6-IPACCESSLOGP: 
list ingress denied udp 38.29.63.170(4542) -> 
134.161.67.71(34555), 1 packet

Контроль системного реестра

На узлах, функционирующих под управлением ОС Windows, троянцев можно обнаружить по наличию соответствующих записей в системном реестре. Например, троянский конь Donald Dick обнаруживается по наличию раздела HKLM\System\CurrentControlSet\Service\VxD\VMLDR (для Windows 95 и 98) или HKLM\SYSTEM\CurrentControlSet\Control\SessionManager (для Windows NT). Троянский конь BackOrifice может быть обнаружен в системном реестре в разделе HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices. Данный раздел системного реестра, а также разделы Run и RunOnce, очень часто используются троянскими конями, автоматически загружающимися вместе с ОС. Например, троянца NetBus можно обнаружить по наличию ключа с названием загружаемого файла Patch.exe (рис. 2).

Fig.2
Рис. 2. Обнаружение троянского коня NetBus в реестре по наличию ключа с именем файла Patch.exe.

Контроль запущенных процессов

Список запущенных процессов также можно использовать для обнаружения троянских коней. В ОС Unix этот список получают при помощи утилиты ps, а в Windows NT -запустив Task Manager (рис. 3).

Fig.3 Рис. 3. Обнаружение троянских коней в списке запущенных процессов в Task Manager.

Контроль определенных файлов

Последний способ обнаружения троянских коней - контроль файлов. Поскольку большинство троянцев имеют заранее известные имена файлов, то появление файлов с такими именами на вашем компьютере может указывать на несанкционированную деятельность. Например, файл с именем Patch.exe может говорить о наличии на узле троянцев NetBus, Digital RootBeer, Krenx или Solid Gold. Список известных имен файлов троянцев можно найти по адресу: http://www.simovits.com/trojans/trojans_files.html.

Заключение

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