В последней, третьей части, мы увидим трояна, действующего на пакетном уровне. Какой бы «умной» ни была шпионская программа, ей все равно необходимо «звонить домой». Делается это на пакетном уровне, который мы и проверим.
Если Вы пропустили предыдущие части этой статьи, то вы можете их прочесть:
Вторая часть закончилась конвертацией ASM в скрипт Perl. Он создает гнездо, необходимое для связи с сервером IRC. Для чего? Вероятнее всего, для создания агента-робота, который будет использоваться для DoS атаки на какой-нибудь сайт или пользователя.
Производя подобный анализ необходимо убедиться, что вы вводите сами пакеты. Я советую использовать windump для win32 или tcpdump для Linux. Применяя данные программы не забудьте загрузить и установить библиотеки winpcap или libpcap. Ссылки на них вы можете найти на страницах упомянутых программ. Это очень важно, потому что вы захотите увидеть результаты на уровне пакетов.
Наконец, мой совет – всегда вводить пакеты в двойном формате вместо ascii. Зачем? Это предоставляет больше возможностей. Открытый источник IDS произведет двойной ввод вместо ascii. Тоже самое можно сказать про windump и tcpdump, которые произведут двойные логии, что не коснется, тем не менее, логов ascii. Вы всегда сможете вывести файл ascii из двойного. Обратное действие невозможно.
Посмотрим на след пакета, сгенерированный во время исполнения кода. Мои комментарии размещаются сразу же после пакетов. Первым вы видите пакет, которым был сгенерирован троянским скриптом Perl первым.
linux:/home/Don/Documents # tcpdump —nXvSs 0 ip and host 192.168.1.102
tcpdump: listening on eth0, link—type EN10MB (Ethernet), capture size 65535 bytes
Вверху командная строка для tcpdump для сбора трафика.
10:46:36.797201 IP (tos 0x10, ttl 64, id 50697, offset 0, flags [DF], length: 55) 192.168.1.102.1037 > 24.153.22.67.53: [udp sum ok] 42190+ A? ir3ip.net. (27)
0x0000 4510 0037 c609 4000 4011 83b2 c0a8 0166 E..7..@.@……f
0x0010 1899 1643 040d 0035 0023 18bd a4ce 0100 …C…5.#……
0x0020 0001 0000 0000 0000 0569 7233 6970 036e ………ir3ip.n
0x0030 6574 0000 0100 01 et…..
Моя лаборатория отправляет запрос на мой сервер DNS ISP для определения адреса
10:46:41.797473 IP (tos 0x10, ttl 64, id 55698, offset 0, flags [DF], length: 55) 192.168.1.102.1038 > 24.153.23.66.53: [udp sum ok] 42190+ A? ir3ip.net. (27)
0x0000 4510 0037 d992 4000 4011 6f2a c0a8 0166 E..7..@.@.o*…f
0x0010 1899 1742 040e 0035 0023 17bd a4ce 0100 …B…5.#……
0x0020 0001 0000 0000 0000 0569 7233 6970 036e ………ir3ip.n
0x0030 6574 0000 0100 01 et…..
Моя лаборатория снова отправляет запрос на мой сервер DNS ISP для определения адреса. Был отправлен такой же пакет, но был отвергнут мною по причине сжатости.
10:46:54.087925 IP (tos 0x0, ttl 248, id 19941, offset 0, flags [DF], length: 149) 24.153.23.66.53 > 192.168.1.102.1038: [udp sum ok] 42190 1/2/2 ir3ip.net. A 212.210.194.124 (121)
0x0000 4500 0095 4de5 4000 f811 4289 1899 1742 E…M.@…B….B
0x0010 c0a8 0166 0035 040e 0081 85e8 a4ce 8180 …f.5……….
0x0020 0001 0001 0002 0002 0569 7233 6970 036e ………ir3ip.n
0x0030 6574 0000 0100 01c0 0c00 0100 0100 0002 et…………..
0x0040 5800 04d4 d2c2 7cc0 0c00 0200 0100 0002 X…..|………
0x0050 5800 1003 6e73 3207 7068 6f65 6e69 7802 X…ns2.phoenix.
0x0060 6974 00c0 0c00 0200 0100 0002 5800 0603 it……….X…
0x0070 6e73 31c0 3bc0 5300 0100 0100 0009 6400 ns1.;.S…….d.
0x0080 043e a921 0ac0 3700 0100 0100 0009 6300 .>.!..7…….c.
0x0090 043e a920 0a .>…
Сервер DNS отвечает на запрос.
10:46:54.088752 IP (tos 0x0, ttl 64, id 2073, offset 0, flags [DF], length: 60) 192.168.1.102.1063 > 212.210.194.124.6667: S [tcp sum ok] 1976828302:1976828302(0) win 5840 <mss 1460,sackOK,timestamp 5245335 0,nop,wscale 0>
0x0000 4500 003c 0819 4000 4006 d945 c0a8 0166 E..<..@.@..E…f
0x0010 d4d2 c27c 0427 1a0b 75d4 018e 0000 0000 …|.’..u…….
0x0020 a002 16d0 385e 0000 0204 05b4 0402 080a ….8^……….
0x0030 0050 0997 0000 0000 0103 0300 .P……….
С определенным именем для IP адреса моя лаборатория начинает устанавливать соединение. Верхний пакет – первый шаг на пути трехстороннего подтверждения связи TCP/IP,известный еще как синхропакет. Он используется для синхронизации последовательности чисел. Вы видите в этом пакете, что мой компьютер, на самом деле, указывает на существование связи с удаленным сервером IRC после исполнения троянского кода.
10:46:57.088090 IP (tos 0x0, ttl 64, id 2074, offset 0, flags [DF], length: 60) 192.168.1.102.1063 > 212.210.194.124.6667: S [tcp sum ok] 1976828302:1976828302(0) win 5840 <mss 1460,sackOK,timestamp 5248335 0,nop,wscale 0>
0x0000 4500 003c 081a 4000 4006 d944 c0a8 0166 E..<..@.@..D…f
0x0010 d4d2 c27c 0427 1a0b 75d4 018e 0000 0000 …|.’..u…….
0x0020 a002 16d0 2ca6 0000 0204 05b4 0402 080a ….,………..
0x0030 0050 154f 0000 0000 0103 0300 .P.O……..
Далее видно, что мой компьютер отправляет другой синхропакет на сервер IRC. Странно или нет? Ничего странного. Сервер не ответил в течение 3 секунд, поэтому был отправлен другой запрос. Это называется синхровход. Действительный пакет, отвечающий условиям TCP/IP.
10:46:57.761177 IP (tos 0x0, ttl 42, id 0, offset 0, flags [DF], length: 60) 212.210.194.124.6667 > 192.168.1.102.1063: S [tcp sum ok] 3389802460:3389802460(0) ack 1976828303 win 5792 <mss 1460,nop,nop,timestamp 67593225 5245335,nop,wscale 0>
0x0000 4500 003c 0000 4000 2a06 f75e d4d2 c27c E..<..@.*..^…|
0x0010 c0a8 0166 1a0b 0427 ca0c 47dc 75d4 018f …f…’..G.u…
0x0020 a012 16a0 c184 0000 0204 05b4 0101 080a …………….
0x0030 0407 6409 0050 0997 0103 0300 ..d..P……
Ага! Сервер IRC просыпается и отвечает следующим этапом в подтверждении связи: syn/ack.
10:46:57.761259 IP (tos 0x0, ttl 64, id 2075, offset 0, flags [DF], length: 52) 192.168.1.102.1063 > 212.210.194.124.6667: . [tcp sum ok] ack 3389802461 win 5840 <nop,nop,timestamp 5249008 67593225>
0x0000 4500 0034 081b 4000 4006 d94b c0a8 0166 E..4..@.@..K…f
0x0010 d4d2 c27c 0427 1a0b 75d4 018f ca0c 47dd …|.’..u…..G.
0x0020 8010 16d0 debf 0000 0101 080a 0050 17f0 ………….P..
0x0030 0407 6409 ..d.
Мой компьютер заканчивает подтверждение отправлением на сервер пакета ack, представленным выше.
10:46:57.761562 IP (tos 0x0, ttl 64, id 2076, offset 0, flags [DF], length: 76) 192.168.1.102.1063 > 212.210.194.124.6667: P [tcp sum ok] 1976828303:1976828327(24) ack 3389802461 win 5840 <nop,nop,timestamp 5249008 67593225>
0x0000 4500 004c 081c 4000 4006 d932 c0a8 0166 E..L..@.@..2…f
0x0010 d4d2 c27c 0427 1a0b 75d4 018f ca0c 47dd …|.’..u…..G.
0x0020 8018 16d0 74ca 0000 0101 080a 0050 17f0 ….t……..P..
0x0030 0407 6409 5553 4552 206b 202b 6920 6b20 ..d.USER.k.+i.k.
0x0040 3a6b 7631 0a4e 4943 4b20 6b0a :kv1.NICK.k.
Мой зараженный трояном компьютер входит на сервер IRC под именем K. Это видно в правой части пакета. В целях экономии времени я пропускаю оставшиеся пакеты, которыми обменивались мой компьютер и сервер IRC. Они необходимы для нормального входа на сервер IRC.
10:48:31.900760 IP (tos 0x0, ttl 64, id 2081, offset 0, flags [DF], length: 77) 192.168.1.102.1063 > 212.210.194.124.6667: P [tcp sum ok] 1976828327:1976828352(25) ack 3389804070 win 8688 <nop,nop,timestamp 5343162 67602681>
0x0000 4500 004d 0821 4000 4006 d92c c0a8 0166 E..M.!@.@..,…f
0x0010 d4d2 c27c 0427 1a0b 75d4 01a7 ca0c 4e26 …|.’..u…..N&
0x0020 8018 21f0 8abc 0000 0101 080a 0051 87ba ..!……….Q..
0x0030 0407 88f9 4a4f 494e 2023 3078 0a50 5249 ….JOIN.#0x.PRI
0x0040 564d 5347 2023 3078 203a 4869 0a VMSG.#0x.:Hi.
Посмотрим, где же мой компьютер входит в специальную клубную комнату на сервере IRC. Он отправляет слово «Hi» с помощью “PRIVMSG”. Эта комната была создана человеком, создавшим Трояна, для контроля за своим агентом-роботом.
10:48:32.043346 IP (tos 0x0, ttl 42, id 9116, offset 0, flags [DF], length: 163) 212.210.194.124.6667 > 192.168.1.102.1063: P [tcp sum ok] 3389804070:3389804181(111) ack 1976828327 win 5792 <nop,nop,timestamp 67602700 5343111>
0x0000 4500 00a3 239c 4000 2a06 d35b d4d2 c27c E…#.@.*..[…|
0x0010 c0a8 0166 1a0b 0427 ca0c 4e26 75d4 01a7 …f…’..N&u…
0x0020 8018 16a0 45d8 0000 0101 080a 0407 890c ….E………..
0x0030 0051 8787 7365 7276 2068 656c 700d 0a3a .Q..serv.help..:
0x0040 6972 3369 702e 616d 7072 2e6f 7267 2033 ir3ip.ampr.org.3
0x0050 3732 206b 203a 2d20 0d0a 3a69 7233 6970 72.k.:-…:ir3ip
0x0060 2e61 6d70 722e 6f72 6720 3337 3220 6b20 .ampr.org.372.k.
0x0070 3a2d 200d 0a3a 6972 3369 702e 616d 7072 :-…:ir3ip.ampr
0x0080 2e6f 7267 2033 3736 206b 203a 456e 6420 .org.376.k.:End.
0x0090 6f66 202f 4d4f 5444 2063 6f6d 6d61 6e64 of./MOTD.command
0x00a0 2e0d 0a …
Это сообщение от сервера IRC. Я пропускаю следующие два пакета, так как они не содержат никакой важной информации.
10:48:32.279645 IP (tos 0x0, ttl 42, id 9118, offset 0, flags [DF], length: 230) 212.210.194.124.6667 > 192.168.1.102.1063: P [tcp sum ok] 3389804181:3389804359(178) ack 1976828352 win 5792 <nop,nop,timestamp 67602723 5343344>
0x0000 4500 00e6 239e 4000 2a06 d316 d4d2 c27c E…#.@.*……|
0x0010 c0a8 0166 1a0b 0427 ca0c 4e95 75d4 01c0 …f…’..N.u…
0x0020 8018 16a0 639f 0000 0101 080a 0407 8923 ….c……….#!! Эти строки пропущены в личных целях !!
0x0070 6d20 4a4f 494e 203a 2330 780d 0a3a 6972 m.JOIN.:#0x..:ir
0x0080 3369 702e 616d 7072 2e6f 7267 2033 3533 3ip.ampr.org.353
0x0090 206b 2040 2023 3078 203a 6b20 404b 2d4c .k.@.#0x.:k.@K-L
0x00a0 4f52 5420 404b 696e 6120 4057 6172 4368 ORT.@Kina.@WarCh
0x00b0 696c 6420 0d0a 3a69 7233 6970 2e61 6d70 ild…:ir3ip.amp
0x00c0 722e 6f72 6720 3336 3620 6b20 2330 7820 r.org.366.k.#0x.
0x00d0 3a45 6e64 206f 6620 2f4e 414d 4553 206c :End.of./NAMES.l
0x00e0 6973 742e 0d0a ist…
В этом пакете мой компьютер идентифицировался в канале, поэтому я пропускаю данные строки. Это сделано в личных целях. Мы также видим, кто является модераторами комнаты: @K-LORT @Kina , and @WarChild. Это могут быть люди, которые пытаются внедрить своих роботов. Обращаю ваше внимание на «могут». Далее пропущены несколько пакетов, так как они не представляют никакого интереса.
115) 192.168.1.102.1063 > 212.210.194.124.6667: P [tcp sum ok] 1976828352:1976828415(63) ack 3389804429 win 11584 <nop,nop,timestamp 5353340 67603702>
0x0000 4500 0073 0825 4000 4006 d902 c0a8 0166 E..s.%@.@……f
0x0010 d4d2 c27c 0427 1a0b 75d4 01c0 ca0c 4f8d …|.’..u…..O.
0x0020 8018 2d40 4705 0000 0101 080a 0051 af7c ..-@G……..Q.l
0x0030 0407 8cf6 5052 4956 4d53 4720 2330 7820 ….PRIVMSG.#0x.
0x0040 3a75 6964 3d30 2872 6f6f 7429 2067 6964 :uid=0(root).gid
0x0050 3d30 2872 6f6f 7429 2067 726f 7570 733d =0(root).groups=
0x0060 3028 726f 6f74 292c 3634 2870 6b63 7331 0(root),64(pkcs1
0x0070 3129 0a 1).
В этом пакете мой компьютер сообщает в комнату, что у него есть корневой доступ. Это видно в строке uid=0 and gid=0.
Далее я пропускаю несколько пакетов в юридических целях. Я не юрист, но, тем не менее, практикую CYA в некоторых сферах. На этом этапе модераторы говорят о блоках шпионской программы. Далее идут другие блоки, которые я также не хочу раскрывать. Поняв всю суть происходящего, я отключаю портативные компьютеры друг от друга.
Надеюсь, вы извлекли полезный урок. Очень полезно поэкспериментировать с кодом в целях совершенствования безопасности. Но делать это необходимо в безопасном окружении. Если что-то кажется слишком хорошим, чтобы быть хорошим, значит так и есть. Авторы трояна охотятся на людей, которым нужен 0-дневный код. Как было сказано выше, это не очень эффективная уловка, нацеленная на начинающих пользователей. Я очень надеюсь, что данная статья оказалась полезной для вас. При наличии вопросов не стесняйтесь связываться со мной.
Источник www.windowsecurity.com
Tags: dns, linux, quote, redirect, tcpdump