Pss, hermano… ¿escuchaste que Windows ya lo es todo? Todos se pasan indiscriminadamente al software libre, a veces incluso doméstico. Eres un hombre de seguridad, así que ve seguro. Y aquí tienes un caso: un ordenador con Linux y una incidencia. O no hubo incidente, pero hay que comprobar que todo está limpio. ¿Sabes que hacer? Si no, te lo contamos ahora. Y si lo sabes, mira de todos modos! Hemos recopilado recetas para todas las ocasiones y al final del artículo compartiremos una selección de herramientas útiles.
Aquí es donde comienza nuestra historia. Bajo los términos de la tarea, se consideran distribuciones de Linux basadas en Debian: Kali, Astra y otras. Es necesario recopilar información sobre el host, la actividad del usuario y otros artefactos que pueden ser útiles para analizar cualquier потуactividad de terceros. Es muy recomendable recopilar todos los datos automáticamente, sin usar un montón de paquetes con dependencias. Probablemente pienses que tendrás que ingresar manualmente todos los comandos en la terminal, hacerte una lista de verificación … ¿Pero por qué? ¡Escribamos un script Bash y guárdelo en una unidad flash!
Puede ensamblar su secuencia de comandos a partir de los comandos anteriores, como si fuera un constructor. O tome este material como una hoja de trucos de Linux para un joven guardia de seguridad. Por supuesto, puede probar todos los comandos en la terminal, todos solo recopilan y muestran información sin cambiar nada en el sistema.
Formatee previamente la unidad flash a NTFS si se comunicará con Windows más tarde, o a ext4 si no. Vamos a crear un archivo ifrit.sh
(respuesta forense de incidentes en la terminal) y agréguele un preámbulo. El script registrará la hora de inicio y creará un directorio para recopilar archivos (artefactos) de la máquina y nuestros registros. Se llamará así:
<имя_хоста>_<юзер>_
Al final de la parte principal, creamos un subdirectorio en esta carpeta para futuros artefactos y permitimos que se copie, luego contamos el tiempo transcurrido y abrimos la carpeta en el administrador de archivos. Escribiremos todas nuestras acciones en el registro general.
#!/bin/bash
# IFRIT. Stands for: Incident Forensic Response In Terminal =)
# Использование: chmod a+x ./ifrit.sh && ./ifrit.sh
# Фиксируем текущую дату
start=`date +%s`
# Проверка, что мы root
[[ $UID == 0 || $EUID == 0 ]] || (
echo "Current user:"
# «Без root будет бедная форензика»
echo $(id -u -n)
)
echo "Наш sudo-юзер:"
echo $SUDO_USER
# Делаем директорию для сохранения всех результатов (если не указан аргумент скрипта)
if [ -z $1 ]; then
part1=$(hostname) # Имя хоста
echo "Наш хост: $part1"
time_stamp=$(date +%Y-%m-%d-%H.%M.%S) # Берем дату и время
curruser=$(whoami) # Текущий юзер
saveto="./${part1}_${curruser}_$time_stamp" # Имя директории
else
saveto=$1
fi
# Создаем директорию и переходим в нее
mkdir -pv $saveto
cd $saveto
# Создаем вложенную директорию для триаж-файлов
mkdir -p ./artifacts
# Начинаем писать лог в файл
{
# Пример команды в формате:
# <команда> >> <тематический файл>
# Сведения о релизе ОС, например из файла os-release
# Аналоги: cat /usr/lib/os-release или lsb_release
cat /etc/*release
# Список всех запущенных процессов — вывод в тематический файл test
ps aux >> test
...
# Завершающая часть после выполнения необходимых команд
# Для выходной директории даем права всем на чтение и удаление
chmod -R ugo+rwx ./../$saveto
end=`date +%s`
echo ENDED! Execution time: `expr $end - $start` seconds.
echo "Проверяй директорию ${saveto}!"
# Открываем директорию в файловом менеджере — работает не во всех дистрибутивах. В Astra также можно использовать команду fly-fm
xdg-open .
} |& tee ./console_log # Наш лог-файл
Dichos scripts generalmente escriben todo en un registro común o en muchos archivos pequeños, o intentan sistematizar de alguna manera su salida colocando un archivador con datos jugosos cerca. Elegiremos la última opción, pero más sobre eso más adelante.
En los listados, indicamos solo el comando, para ahorrar dinero, escribimos en los comentarios lo que hace y enviamos su resultado a uno de los archivos temáticos, por ejemplo. >> case1.log
(también omitimos esta parte en los listados). En un script real, recomendamos que cada comando esté acompañado por la salida de su nombre y la información que lo acompaña, para que quede claro lo que está sucediendo:
# Выводим текущий этап в консоль
echo "Название модуля"
# Выводим текущий этап в профильный лог
echo "Название модуля" >>
# Выводим результат работы команды в профильный лог
<выполняемая команда> >>
# Вставляем пустую строку в файл для удобочитаемости и разделения результатов отдельных команд
echo -e "n" >>
Recopilación de datos del host
Primero, arreglamos la información básica sobre el host y el sistema operativo y la escribimos en un archivo host_info
. De repente hay muchos coches y en el futuro será necesario distinguirlos. El script debe ejecutarse como root para obtener la salida más detallada de los comandos. Cuando sea absolutamente necesario, iniciaremos el comando con sudo
.
# Начинаем писать файл host_info. Далее вывод каждой команды здесь подразумевает в конце добавление ">> host_info", для краткости опустим это
echo -n > host_info
date # Фиксируем текущую дату и время
hostname # Пишем имя хоста
who am i # и юзера, от имени которого запустили скрипт
ip addr # Информация о текущем IP-адресе
uname -a # На каких ОС и ядре мы находимся
# Получим список живых пользователей. Зачастую мы хотим просто посмотреть реальных пользователей, у которых есть каталоги, чтобы в них порыться. Запишем имена в переменную для последующей эксплуатации
ls /home
# Исключаем папку lost+found
users=`ls /home -I lost*`
echo $users
# Раскомментируй следующую строчку, чтобы сделать паузу и что-нибудь скушать. Затем нажми Enter, чтобы продолжить
# read -p "Press [Enter] key to continue fetch..."
Información básica sobre la actividad: encendido, apagado, nivel de batería de la computadora portátil (repentinamente útil). Un día, el automóvil se encendió por primera vez, especialmente para mí, por primera vez en cinco años.
# Текущее время работы системы, количество залогиненных пользователей, средняя загрузка системы за 1, 5 и 15 мин
uptime
# Список последних входов в систему с указанием даты (/var/log/lastlog)
lastlog
# Список последних залогиненных юзеров (/var/log/wtmp), их сессий, ребутов и включений и выключений
last -Faiwx
# Информация о текущей учетной записи и ее членстве в группах
id
for name in $(ls /home) # ... и обо всех остальных
# Здесь же можно использовать и нашу переменную $users
do
id $name
done
# Проверимся на руткиты, иногда помогает
chkrootkit 2>/dev/null
# Здесь можно встретить информацию в виде dat-файлов о состоянии батареи ноутбука, включая процент зарядки, расход и состояние отключения батарейки и ее заряда
cat /var/lib/upower/* 2>/dev/null
Caso 1. ¿Quién se equivoca?
Algunos de los usuarios se dedican a la indecencia en el trabajo. Steam lo instalará, luego escribirá un tratado en LiveJournal. Tratemos de resolverlo por nuestra cuenta.
Paso 1. Profundizando en el sistema de archivos
Primero debe mirar la actividad en los directorios de usuarios estándar. Esta es la forma más rápida y fácil de encontrar a aquellos que no limpian después de sí mismos. Aquí estamos haciendo una búsqueda de todos los directorios de inicio a la vez, lo que requiere privilegios de superusuario. Si está comprobando sólo un usuario actual, en lugar de /home/*
en los comandos de abajo puedes escribir ~/
.
# В этих каталогах можно поискать последние пользовательские документы и файлы, что позволит узнать, какие документы открывал пользователь и что качал из интернета
sudo ls -la /home/*/Downloads/ 2>/dev/null
sudo ls -la /home/*/Загрузки/ 2>/dev/null
sudo ls -la /home/*/Documents/ 2>/dev/null
sudo ls -la /home/*/Документы/ 2>/dev/null
sudo ls -la /home/*/Desktop/ 2>/dev/null
sudo ls -la /home/*/Рабочий стол/ 2>/dev/null
# Составляем список файлов в корзине
sudo ls -laR /home/*/.local/share/Trash/files 2>/dev/null
# Для рута тоже на всякий случай
sudo ls -laR /root/.local/share/Trash/files 2>/dev/null
# Кешированные изображения могут помочь понять, какие программы использовались
sudo ls -la /home/*/.thumbnails/
Como resultado, puede encontrar signos de descarga de archivos, documentos, aplicaciones. Los episodios eliminados de series o algo así pueden permanecer en la cesta.
Puede ser útil buscar en los directorios archivos con el contenido o el término que está buscando. Por ejemplo, intentemos buscar todos los archivos con la mención de la palabra “theremin” (supongamos que el usuario escribió un borrador en un archivo de texto antes de publicarlo en LiveJournal) y mostrar dos líneas arriba y abajo para entender el contexto de uso .
# Ищем в домашних пользовательских папках
grep -A2 -B2 -rn 'терменвокс' --exclude="*ifrit.sh" --exclude-dir=$saveto /home/* 2>/dev/null >> ioc_word_info
Puede buscar todos los archivos con la extensión que nos interese. Sin embargo, este comando se puede ejecutar Muy долго.
sudo find /root /home -type f -o -name *.jpg -o -name *.doc -o -name *.xls -o -name *.csv -o -name *.odt -o -name *.ppt -o -name *.pptx -o -name *.ods -o -name *.odp -o -name *.mbox -o -name *.eml 2>/dev/null >> interes_files_info
Es útil crear una línea de tiempo de archivos en directorios de inicio con fechas de modificación y guardarla como CSV. La línea de tiempo puede ayudarlo a comprender más adelante en qué momento algo salió mal, qué archivos, cuándo y dónde se crearon.
echo "[BUILDING SACRED TIMELINE!]"
echo -n >> timeline_file
echo "file_location_and_name, date_last_Accessed, date_last_Modified, date_last_status_Change, owner_Username, owner_Groupname,sym_permissions, file_size_in_bytes, num_permissions" >> timeline_file
echo -n >> timeline_file
sudo find /home /root -type f -printf "%p,%A+,%T+,%C+,%u,%g,%M,%s,%mn" 2>/dev/null >> timeline_file #
Paso 2 Aplicaciones
Ahora echemos un vistazo a las listas de aplicaciones. Para empezar, echemos un vistazo a lo que generalmente tenemos instalado en el sistema además de las cosas estándar. Debe verificar qué navegadores, mensajeros instantáneos y servidores de correo se utilizan. ¿Qué pasa si se cometieron malas acciones a través de ellos? Esto puede ser útil para los analistas en el futuro cuando investiguen el incidente.
2023-05-03 15:04:00
#Qué #esconde #pingüino #guía #definitiva #pruebas #Linux #Hacker,