Итак, все инструменты для анализ собраны
- пора приступать к анализу данных.
Начинать надо, понятное дело, с того, что
может измениться в любой момент, а затем уже
переходить к той информации, которая
находится в относительно неизменном
состоянии.
1. Снять скриншот с экрана, например с
использованием цифровой камеры. Шаг
конечно мало полезный, но все таки - не
повредит :). Это самое простое, а вот что
делать дальше? Любое дальнейшее действие
так или иначе изменит память взломанной
системы, но этим в так или иначе придется
пожертвовать... Необходимо подсоединить
внешний накопитель с программами, а сделать
это можно только используя программы
системы, которые могут быть
скомпрометированы взломщиком. Это ключевой
момент использования подозреваемой
системы, так как дальше можно будет
использовать инструменты, записанные на
диск и которым мы доверяем. Так что
необходимо посмотреть, как например mount
диска изменит общее состояние системы.
# strace /bin/mount /mnt/cdrom
Вот что он делает:
Файл | Модификации |
/etc/ld.so.cache | atime |
/lib/tls/libc.so.6 | atime |
/usr/lib/locale/locale-archive | atime |
/etc/fstab | atime |
/etc/mtab* | atime, mtime, ctime |
/dev/cdrom | atime |
/bin/mount | atime |
Можно предположить ситуацию, при которой
хакер модифицирует mount так ,что бы тот
удалял все следы присутствия инородного
пользователя в системе при использовании.
Это конечно тупик и рассматривать его
дальше не имеет смысла. Предположим, что это
не так и продолжим сбор данных смонтировав
CD:
# mount -n /mnt/cdrom
2. Напомню, что все данные стоит посылать на
удаленный хост, для этого используем netcat
(в примере адрес удаленного хоста 192.168.1.100).
Откроем ТСР порт:
(remote host)# nc -l -p 8888 > date_compromised
На взломанной системе:
(compromised host)# /mnt/cdrom/date | /mnt/cdrom/nc 192.168.1.100 8888 -w 3
Для достоверности считаем контрольные
суммы получаемых данных:
(remote host)# md5sum date_compromised > date_compromised.md5
(compromised host)# /mnt/cdrom/md5sum /etc/fstab | /mnt/cdrom/nc 192.168.1.100 8888 -w 3
3. Время
(remote)# nc -l -p port > date_compromised
(compromised)# /mnt/cdrom/date -u | /mnt/cdrom/nc (remote) port
(remote)# md5sum date_compromised > date_compromised.md5
4. Таблицы кэша. В первую очередь стоит
взять с взломанной машины кэш, время жизни
которого довольно мало. Соберем данные из
таблиц arp и роутинга:
Mac address cache table:
(remote)# nc -l -p port > arp_compromised
(compromised)# /mnt/cdrom/arp -an | /mnt/cdrom/nc (remote) port
(remote)# md5sum arp_compromised > arp_compromised.md5
Kernel route cache table:
(remote)# nc -l -p port > route_compromised
(compromised) # /mnt/cdrom/route -Cn | /mnt/cdrom/nc (remote) port
(remote)#md5sum route_compromised > route_compromised.md5
5. Текущие соединения и порты.
(remote)#nc -l -p port > connections_compromised
(compromised)# /mnt/cdrom/netstat -an | /mnt/cdrom/nc (remote) port
(remote)#md5sum connections_compromised > connections_compromised.md5
Можно использовать cat вместо netstat.
Информация об открытых портах хранится в /proc/net/tcp
и /proc/net/udp, а о соединениях в /proc/net/netstat. Вся
информация в шестнадцатеричном формате,
например 0100007F:0401 на самом деле 127.0.0.1:1025. Все
соединения могут быть отслежены так же
анализом трафика в сети. Легкий способ
определить руткит в системе - сравнить
результаты сканирования с внутренними
сведениями об открытых портах, ведь часто
руткиты прячут свои порты. Однако
сканирование в очередной раз изменить
состояние системы, поэтому вероятно лучше к
такому способу не прибегать.