Инструменты безопасности с открытым исходным кодом

         

Применение lsof


Программа lsof имеет множество применений и подробную оперативную справку, а также несколько информационных файлов README для различных приложений. Однако в данном разделе рассматривается лишь несколько специфических команд, полезных для судебных исследований.

Если вы хотите увидеть все открытые в данный момент файлы в системе и ассоциированные с ними процессы, наберите

lsof -n

Опция -n предписывает lsof не пытаться разрешать записи DNS для каждого IP-адреса, подключившегося к вашей машине. Это существенно ускоряет процесс. Примерный вид выдачи показан на листинге 11.2.

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME xfs 903 xfs 0r DIR 3,1 4096 2 / atd 918 daemon rtd DIR 3,1 4096 2 / atd 918 daemon txt REG 3,6 14384 273243 /usr/sbin/atd sshd 962 root cwd DIR 3,1 4096 2 / sshd 962 root rtd DIR 3,1 4096 2 / sshd 962 root txt REG 3,6 331032 274118 /usr/sbin/sshd dhcpcd 971 root cwd DIR 3,1 4096 2 / dhcpcd 971 root rtd DIR 3,1 4096 2 / dhcpcd 971 root txt REG 3,1 31576 78314 /sbin/dhcpcd xinetd 1007 root cwd DIR 3,1 4096 2 / xinetd 1007 root 5u IPv4 1723 TCP 127.0.0.1:1024 (LISTEN) xinetd 1007 root 8u unix 0xc37a8540 1716 socket rwhod 1028 root cwd DIR 3,1 4096 61671 /var/spool/rwho rwhod 1028 root rtd DIR 3,1 4096 61671 /var/spool/rwho rwhod 1028 tim cwd DIR 3,1 4096 61671 /var/spool/rwho crond 1112 root cwd DIR 3,1 4096 14 /var/spool crond 1112 root lw FIFO 0,5 1826 pipe 1112 root 2w FIFO 0,5 1827 pipe nessusd 1166 root cwd DIR 3,1 4096 2 / nessusd 1166 root rtd DIR 3,1 4096 2 / nessusd 1166 root txt REG 3,6 1424003 323952 init 1 root cwd DIR 3,1 4096 2 / init 1 root rtd DIR 3,1 4096 2 / init 1 root txt REG 3,1 31384 75197 /sbin/init

Листинг 11.2. Вывод команды lsof -n

Соединения на этом листинге выглядят нормально, вопросы вызывает лишь подключение через службу rwho. Стоит убедиться, что допустимый пользователь применяет команду законно. Если этот счет принадлежит кому-то из нетехнического персонала, может понадобиться дальнейшее расследование.

lsof можно также применять для поиска определенного файла.
Если вы хотите увидеть, обращался ли кто-то к файлу паролей, можно воспользоваться следующей командой:

lsof маршрут/имя_файла

Замените маршрут/имя_файла маршрутом и именем файла, который вас интересует, в данном случае - /etc/passwd. Необходимо задать для lsof полное маршрутное имя, чтобы программа нашла этот файл.

Еще один вариант применения lsof - получение списка всех открытых сокетов. В этом случае можно будет увидеть работающий сервер, о котором вы не знаете. Формат этой команды таков:

lsof -i

В результате получается выдача, аналогичная представленной на листинге 11.3. На нем можно видеть все выполняющиеся программы, включая sshd и nessusd - демоны для SSH и Nessus. Можно даже видеть отдельные соединения с этими службами. Похоже, что кто-то использует в данный момент сервер Nessus. Проверив IP-адрес, можно понять, что это внутренний пользователь. На самом деле это ваша собственная машина! Поэтому беспокоиться не о чем.

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME portmap 733 rpc 3u IPv4 1417 UDP *:sunrpc portmap 733 rpc 4u IPv4 1426 TCP *:sunrpc (LISTEN) sshd 962 root 3u IPv4 1703 TCP *:ssh (LISTEN) xinetd 1007 root 5u IPv4 1728 TCP localhost.localdomain:1024 (LISTEN) rwhod 1028 root 3u IPv4 1747 UDP *:who nessusd 1166 root 4u IPv4 1971 TCP *:1241 (LISTEN) nessusd 1564 root 5u IPv4 1972 TCP 192.168.1.101:1024->192.168.1.2:1994 (ESTABLISHED)

Листинг 11.3. Вывод команды lsof -i

Можно задать для просмотра определенный IP-адрес или хост, помещая знак @ и адрес после ключа -i. Например, команда

lsof -i@192.168.1.0/24

отображает все соединения, исходящие из вашей сети, при условии, что ваша внутренняя сеть в нотации с косой чертой задается как 192.168.1.0/24.


Содержание раздела