LinuxCheck
Инструмент для аварийного реагирования Linux, сбора информации, обнаружения уязвимостей. Поддерживает 13 категорий и более 70 проверок: базовая конфигурация, сетевой трафик, планировщик задач, переменные окружения, информация о пользователях, службы, bash, вредоносные файлы, руткиты ядра, SSH, веб-шеллы, майнинг-файлы, майнинг-процессы, цепочка поставок, риски сервера и т.д.
Обновления
Журнал изменений: 20 апреля 2024 г.
- Изменен вывод на отчет Markdown
- Отказ от ag, теперь используется встроенная команда grep в Linux, чтобы избежать дополнительной установки
- Оптимизация форматирования кода, больше не нужно использовать tee -a для каждой строки
- Обновлена логика обнаружения веб-шеллов
- Обновлена логика обнаружения authorized_keys
- Добавлена проверка JDWP и Python HTTP Server в проверки рисков сервера
- Добавлено обнаружение контейнеров Docker
- Добавлено обнаружение бэкдоров PAM
- Добавлена возможность локальной загрузки отчетов для аварийной обработки пакетных машин.
Журнал изменений: 5 августа 2022 г.
- Исправлена проблема с чрезмерным количеством логов при проверке модулей ядра
Журнал изменений: 7 марта 2022 г.
- Добавлено обнаружение бэкдоров SSH через символьные ссылки
Дата обновления: 17 октября 2021 г.
- Добавлено обнаружение майнеров Ntpclient/WorkMiner/TeamTNT
- Добавлена логика обнаружения руткит-модулей
- Добавлено обнаружение отравления Python pip
- Добавлен просмотр $HOME/.profile
- Добавлена проверка рисков сервера (Redis)
Функции
- Проверка базовой конфигурации
- Проверка изменений системной конфигурации
- Информация о системе (IP-адрес / пользователь / время включения / версия ОС / имя хоста / серийный номер сервера)
- Загрузка процессора
- Информация о вошедших пользователях
- ТОП-15 процессов по CPU
- ТОП-15 процессов по памяти
- Проверка свободного места на диске
- Смонтированные диски
- Проверка часто используемого ПО
- /etc/hosts
- Проверка сети/трафика
- ifconfig
- Сетевой трафик
- Прослушиваемые порты
- Открытые внешние порты
- Сетевые соединения
- Состояние TCP-соединений
- Таблица маршрутизации
- Перенаправление маршрутов
- DNS-сервер
- ARP
- Проверка режима promiscuous сетевых карт
- Межсетевой экран iptables
- Проверка заданий по расписанию
- Задания текущего пользователя
- Системные задания /etc/
- Время создания файлов заданий
- Проверка бэкдоров crontab
- Проверка переменных окружения
- env
- path
- LD_PRELOAD
- LD_ELF_PRELOAD
- LD_AOUT_PRELOAD
- PROMPT_COMMAND
- LD_LIBRARY_PATH
- ld.so.preload
- Проверка информации о пользователях
- Пользователи, способные входить в систему
- Дата изменения файла passwd
- sudoers
- Информация о входах (w/last/lastlog)
- История IP-адресов входа
- Проверка служб
- Запущенные службы SystemD
- Время создания служб SystemD
- Проверка bash
- History
- Аудит команд History
- /etc/profile
- $HOME/.profile
- /etc/rc.local
- ~/.bash_profile
- ~/.bashrc
- Обратные шеллы bash
- Проверка файлов
- ...скрытые файлы
- Проверка времени изменения системных файлов
- Проверка временных файлов (/tmp /var/tmp /dev/shm)
- alias
- Проверка специальных прав SUID
- Файлы, не найденные для существующих процессов
- Изменения файлов за последние 7 дней (mtime)
- Изменения файлов за последние 7 дней (ctime)
- Большие файлы > 200 МБ
- Аудит подозрительных файлов (nmap/sqlmap/ew/frp/nps и другие хакерские инструменты)
- Подозрительные хакерские файлы (загруженные wget/curl и т.п., или вредоносные программы, переименованные в обычное ПО, например, файл nps в mysql)
- Проверка руткитов ядра
- Подозрительные модули lsmod
- Проверка таблицы символов ядра
- Проверка rootkit hunter
- Проверка модулей .ko руткитов
- Проверка SSH
- Брутфорс SSH
- Обнаружение SSHD
- Конфигурации бэкдоров SSH
- Проверка бэкдоров SSH inetd
- SSH-ключи
- Проверка веб-шеллов
- Проверка php-веб-шеллов
- Проверка jsp-веб-шеллов
- Проверка майнинг-файлов/процессов
- Проверка майнинг-файлов
- Проверка майнинг-процессов
- Обнаружение WorkMiner
- Обнаружение Ntpclient
- Проверка отравления цепочки поставок
- Проверка отравления Python PIP
- Проверка рисков сервера
- Обнаружение слабых паролей Redis
- Обнаружение службы JDWP
- Обнаружение Python http.server
- Проверка прав Docker
Использование
Первый способ: установка через git clone
git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh
Второй способ: запуск напрямую онлайн [при онлайн-вызове невозможна загрузка отчета]
bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"
Файл будет сохранен в формате ipaddr_hostname_username_timestamp.log
Автоматическая загрузка отчета
При развертывании на нескольких машинах, после выполнения скрипта отчет будет автоматически отправлен на указанный URL. Измените webhook_url в скрипте на свой адрес.
# Адрес для отправки отчета
webhook_url='http://localhost:5000/upload'
upload_report() {
# Отправка на указанный API
if [[ -n $webhook_url ]]; then
curl -X POST -F "file=@$filename" "$webhook_url"
fi
}
Запустите службу Flask на вашем сервере, чтобы принимать отчеты Markdown с клиентских машин.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
if file:
filename = file.filename
file.save(filename)
return "File successfully uploaded", 200
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9999)
Ссылки
В основе этого инструмента лежат следующие инструменты/статьи, а также личный опыт автора.
Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan