Bolt - это небольшой, но мощный сканер уязвимостей CSRF, который находится в бета-версии. Он автоматически сканирует и обнаруживает уязвимости CSRF в веб-приложениях. Bolt выполняет обход целевого веб-сайта на заданную глубину и сохраняет все найденные HTML-формы в базе данных для дальнейшей обработки.
2. Trivy
Trivy - это сканер уязвимостей с открытым исходным кодом, разработанный компанией Aqua Security. Он специализируется на выявлении уязвимостей в контейнерах, Kubernetes, репозиториях Git, образах виртуальных машин и AWS.
3. Scriptkiddi3
Scriptkiddi3 - это быстрый инструмент, автоматизирующий процесс обнаружения уязвимостей для охотников за ошибками. Он объединяет множество открытых инструментов и скриптов, предоставляя комплексное решение для разведки целевой системы. Затем он использует эту информацию для поиска известных уязвимостей и потенциальных векторов атак, предупреждая вас о любых проблемах высокого риска.
4. CVS
CVS - это современный сканер с улучшенной стратегией тестирования и мощным движком VDSL, позволяющий легко и быстро сканировать практически все уязвимости. Он также имеет легкий вес, один двоичный файл, кроссплатформенность и не требует дополнительных зависимостей.
5. Nucleimonst3r
Nucleimonst3r - это высокоскоростной сканер уязвимостей, созданный для охотников за ошибками и красных команд. Он предназначен для быстрого и эффективного выявления потенциальных уязвимостей. Для его работы необходим Nuclei в системе.
Еще больше полезного в нашем тг канале, подпишись!
Порою возникают ситуации, когда необходимо использовать в скрипте Python IP-адрес используемый активной сетевой картой, которая смотрит в Интернет, узнать MAC-адрес этой карты и имя сетевого соединения. К сожалению, функций из коробки пока что не наблюдается. Есть сторонние модули, которые позволяют узнать MAC-адрес, например getmac, но в качестве параметров в них нужно также передавать или IP-адрес, или имя соединения. Но, что, если их нужно определять программно и вводить вручную не вариант? Я нашел для себя решение, которое работает, но требует тестирования на большом количестве систем. Хотя, думаю, что на большинстве ОС семейства Windows или Linux оно будет работать.
Импорт библиотек
В данном решении не требуется устанавливать сторонние библиотеки. Необходимо лишь импортировать в скрип те, что нужны для его работы. Выполним их импорт:
Получение IP-адреса активной сетевой карты
Уже очень давно, около 15 лет назад на Stack Overflow был дан ответ по поводу получения «основного», имеющего маршрут по умолчанию, IP-адреса. Как описывает его автор скрипта, он работает под всеми основными ОС: Windows, Linux, OSX. Вот ссылка на данный пост. Несмотря на то, что скрипту уже довольно много лет, он работает до сих пор. Потому, вместо изобретения велосипеда я использую его, за неимением лучшего. Тем более что он ни разу не давал сбоев. Вот сам скрипт:
Теперь, когда мы определились с тем, каким способом будем получать IP-адрес, приступим к написанию скрипта для получения IPv6-, MAC- адресов, а также имени сетевого интерфейса.
Получение информации об активном сетевом интерфейсе
Создадим класс NetInfo,который при инициализации будет получать необходимые данные в зависимости от операционной системы. Здесь мы определяем платформу с помощью модуля system библиотеки platform и в зависимости от этого запускаем тот или иной скрипт.
Двигаемся дальше. Создадим функцию для получения локального IP-адерса и объявим ее статическим методом, так как в ней не используются переменные класса.
Напишем функцию mac_iface_win(self) в которой выполним получение нужных нам параметров. Для этого мы будем использовать возможности командной строки Windows, с частности инструмент командной стоки wmic. В частности будем использовать псевдоним NICCONFIG, который используется для управления сетевыми адаптерами. Отфильтруем только активные сетевые адаптеры. А их может быть в системе несколько, включая виртуальные: IPEnabled=true . После этого получим MAC – и IP – адреса используя GET MACAddress, IPAddress /FORMAT:csv, с указанием вывода полученных значений в формате csv для того, чтобы нам было проще их распарсить.
Вот полный вид данной команды:
wmic NICCONFIG WHERE IPEnabled=true GET MACAddress, IPAddress /FORMAT:csv
После того, как мы получим список активных сетевых адаптеров, поитерируемся по нему в цикле и проверим, есть ли в данном списке адаптер, IP-адрес которого равен полученному ранее локальному адресу. Если есть, забираем MAC-адрес, а также IPv6 адрес, если он не отключен в системе.
После того, как мы получим необходимые данные, выполним команду getmac /FO csv /NH /V с помощью которой получим список сетевых интерфейсов. Также в цикле проитерируемся по нему и будем проверять, есть ли уже полученный MAC-адрес в строке с параметрами интерфейса. Если есть, забираем название сетевого интерфейса.
Если в предыдущей функции мы получили данные для сетевого интерфейса в ОС Windows, то следует также написать аналогичную функцию и для Linux. Поэтому создадим функцию mac_iface_lin(self). В ней кода будет поменьше, так как в командах Linux содержится больше информации в одном месте и ее легче распарсить. Команда, которую мы будем использовать выглядит следующим образом:
ip -h -br a | grep UP
Здесь мы получим название сетевого интерфейса и IPv6-адрес. В Linux данный адрес можно получить, даже если он отключен в настройках адаптера. После этого выполним похожую команду, но уже отфильтруем из ее вывода MAC-адрес:
ip a | grep ether | gawk '{print $2}'
Осталось только свести написанный код, если вы этого еще не сделали воедино.
Итак, продолжим. Полный код скрипта выглядит следующим образом:
Теперь необходимо протестировать его в операционных системах. В данном случае у меня доступны две системы: Windows 10 и Linux Mint.
Создадим в данном скрипте вызов нашего класса и выведем в терминал полученные параметры:
Для начала, запустим в ОС Windows:
А теперь то же самое в Linux Mint:
Как видим, скрипт справляется со своей работой. Для чего он может пригодиться? Ну, например, для автоматической установки активного сетевого интерфейса по умолчанию в Scapy при прослушивании пакетов с активного сетевого интерфейса. Но о Scapy поговорим немного позже.
Спасибо за внимание. Надеюсь, данная информация будет вам полезна
1. Hexedit - это простой редактор в командной строке. Он предлагает базовые функции редактирования:
• Поддержка работы в командной строке.
• Возможность работать с файлами любого размера.
2. Ghex - это простой в использовании редактор рабочего стола Gnome:
• Поддержка базавого редактирования
• Поддержка плагинов
3. Okteta - это универсальный редактор, который может редактировать разные типы файлов:
• Поддержка плагинов
• Сравнение файлов
• Возможность редактирования файлов в сжатом виде
4. Bless - это легкий и быстрый редактор с минималистичным интерфейсом:
• Поддержка основных функций редактирования
• Поиск и замена
• Небольшой размер
5. xxd - это мощный hex редактор, входящий в состав большинства дистрибутивов Linux:
• xxd имеет интерфейс командной строки
• Является частью vim
+ Бонус:
Бесплатный онлайн hex редактор - HexEd.it. Инструмент, который работает в веб-браузере. Он позволяет анализировать и редактировать бинарные файлы где угодно.
1. Wireshark - это анализатор, который позволяет вам видеть, что происходит в вашей сети в режиме реального времени. Он поддерживает широкий спектр протоколов и может быть использован для мониторинга сетевой активности, а также для обнаружения и устранения проблем с сетью.
С его помощью можно анализировать и расшифровывать сетевой трафик, включая HTTP-запросы и защищённый трафик через SSL/TLS, с помощью специфических фильтров (по IP-адресам, номерам портов, протоколам) и логических операторов.
Плюсы:
- Бесплатный и открытый исходный код.
- Поддержка широкого спектра протоколов.
- Возможность анализа пакетов в режиме реального времени.
Минусы:
- Требует некоторого уровня технической подготовки.
2. Nagios - инструмент для мониторинга сетевой активности, который позволяет вам отслеживать состояние сетевых устройств, серверов и приложений. Он может быть настроен для отправки уведомлений о предупреждениях и оповещений при обнаружении проблем с сетью.
Nagios поддерживает мониторинг широкого спектра сетевых сервисов (SMTP, POP3, HTTP и т.д.) и ресурсов серверов (загрузка процессора, используемое дисковое пространство), предоставляя возможность создавать собственные обработчики событий для автоматического реагирования на проблемы. Управление производится через веб-интерфейс, доступ к которому ограничивается с помощью механизма аутентификации.
Для настройки системы необходимо правильно сконфигурировать ряд файлов, описывающих хосты, сервисы, группы контактов для уведомлений и команды проверки сервисов. Процесс требует тщательного внимания к деталям, так как ошибки в описании хостов или сервисов могут привести к невозможности запуска Nagios.
После настройки и успешного запуска, Nagios предоставляет администратору детальный контроль над состоянием сетевой инфраструктуры, возможностью просматривать активные события и историю изменений.
Плюсы:
- Бесплатный и открытый исходный код.
- Поддержка широкого спектра сетевых устройств и приложений.
- Возможность настройки уведомлений и оповещений.
Минусы:
- Сложно масштабировать для больших сетей.
3. ManageEngine OpManager - инструмент, который предоставляет детальную информацию о состоянии сети, включая уровень загрузки, пропускную способность и время отклика. Он может быть настроен для отправки уведомлений и оповещений при обнаружении проблем с сетью.
Также позволяет пользователям анализировать проблемы маршрутизатора, проверять пропускную способность и доступность каналов. Программа обеспечивает визуализацию сетей для выявления сбоев и зон с пониженной производительностью, а также анализ сетевого трафика для отслеживания использования сети и активности пользователей. Дополнительно, OpManager предлагает создание 3D-моделей центров обработки данных для мониторинга производительности устройств в реальном времени.
Плюсы:
- Предоставляет детальную информацию о состоянии сети.
- Возможность настройки уведомлений и оповещений.
- Поддержка широкого спектра сетевых устройств и приложений.
Минусы:
- Платный.
4. PRTG Network Monitor - предоставляет информацию о состоянии сети, включая уровень загрузки, пропускную способность и время отклика. Он может быть настроен для отправки уведомлений и оповещений при обнаружении проблем с сетью.
Программа подходит как для небольших, так и для крупных сетей, предлагая гибкую систему лицензирования от 500 до неограниченного количества сенсоров. Возможности решения включают мониторинг серверов, виртуализации, доступности веб-сайтов, сетевых устройств, приложений, а также параметров окружающей среды и многое другое. Поддерживает централизованное управление через веб-интерфейс, мобильные приложения и настраиваемые дашборды для мониторинга ключевых показателей производительности в удобной форме.
Плюсы:
- Предоставляет детальную информацию о состоянии сети.
- Возможность настройки уведомлений и оповещений.
- Поддержка широкого спектра сетевых устройств и приложений.
Получение адреса по координатам, довольно полезная функция, которую можно использовать в различных целях. Например, вам скинули геолокацию. Можно сделать телеграм-бота, отправить ему полученные данные и в ответ получить адрес. Данный функционал можно реализовать на Python. Давайте посмотрим, как это можно сделать.
Для получения адреса по геолокации будем использовать библиотеку geopy. В ней реализованы классы для работы с сервисами геокодирования, такими как OpenStreetMap Nominatim, Google Geocoding API (V3) и многими другими. В нашем коде мы будем использовать OpenStreetMap, так как его использование бесплатно и не требует получения дополнительных ключей.
Установка библиотеки
Для установки библиотеки пишем в терминале команду:
pip install geopy
Импорт модулей в скрипт
После того, как библиотека будет установлена, необходимо импортировать модули для работы с ней в скрипт. Пишем следующий код:
Получаем адрес по координатам. Обратное геокодирование
Создадим функцию get_addr(location: list) -> str, которая на входе получаем широту и долготу в виде списка, а возвращает адрес в виде строки. В случае ошибки будет возвращен текст «Unknown».
После этого инициализируем класс Nominatim и передаем в него user_agent. Здесь использование какого-то специализированного агента не принципиально и можно просто передать «GetLoc». Если мы заглянем в параметры данного класса, то увидим, что в него, кроме user_agent можно передать таймаут, прокси и еще множество других параметров, которые в данном случае не принципиальны.
Обратимся к инициализированному классу и его методу reverse, в который передадим координаты в виде списка с широтой и долготой. В ответ мы получим адрес, который и возвратим из функции, обратившись к методу address.
Запрос координат у пользователя. Вывод полученного адреса в терминал
Создадим функцию main(), в которой будем запрашивать широту и долготу у пользователя. После передадим их в функцию get_addr и выведем полученный результат в терминал. Здесь необходимо немного обработать полученные данные, так как они возвращаются в обратном порядке, начиная с номера дома и заканчивая страной. Поэтому, добавлена обратная сортировка, разбиение строки по запятой в список и обратное его объединение.
Тестирование функции
Протестируем написанный код. Возьмем произвольные координаты объекта с Яндекс.Карты и введем в запросе скрипта. В ответе мы видим полученный адрес, который совпадает с тем, что указан на Картах.
Итог:
Как видим, с помощью использования сторонней библиотеки получить адрес по координатам не такая уж сложная задача. К слову, возникновение исключений, когда адрес не был найден, происходит достаточно редко. В большинстве случаев все отрабатывает корректно.
1. SQLMap - Это автоматизированный инструмент для тестирования проникновения, который позволяет обнаруживать и эксплуатировать уязвимости SQL инъекций в веб-приложениях. SQLMap поддерживает широкий спектр баз данных, включая MySQL, Oracle, PostgreSQL и другие.
SQLMap может тестировать уязвимости в параметре "id" веб-страницы. С помощью него также можно эффективно обнаружить и эксплуатировать SQL-инъекции, способствуя улучшению безопасности данных. Инструмент предлагает различные типы инъекций и подробно проанализирует технологии веб-приложения, обеспечивая комплексное тестирование безопасности базы данных.
Плюсы:
- Поддержка многих баз данных.
- Гибкие опции для различных уровней тестирования.
Минусы:
- Сложно анализировать большой объем вывода.
- Требует некоторого уровня технической подготовки.
- Его могут обнаружить некоторые системы безопасности.
2. NoSQLMap - Этот инструмент нацелен на автоматизацию эксплуатации и обнаружение уязвимостей в NoSQL-базах данных. Если ваша организация использует такие системы как MongoDB, CouchDB или другие NoSQL решения, NoSQLMap станет вашим незаменимым помощником.
Плюсы:
- Автоматизация тестирования безопасности систем NoSQL.
- Помогает выявлять распространенные уязвимости.
Минусы:
- Ограниченный набор поддерживаемых баз данных по сравнению с SQLMap.
3. DataSunrise Database Security - DataSunrise включает в себя механизмы обнаружения угроз, маскировку данных и аудит, обеспечивая комплексную защиту баз данных в режиме реального времени. Поддерживается работа с популярными облачными провайдерами и базами данных.
Плюсы:
- Комплексная защита баз данных с функциями обнаружения угроз, маскировки данных и аудита.
- Предлагает функцию регистрации каждой транзакции SQL.
Минусы:
- Платный.
- Сложная установка и настройка.
4. Greenbone Security Manager (GSM) - GSM представляет собой решение для управления уязвимостями, которое охватывает не только тестирование баз данных, но и широкий спектр IT-инфраструктуры. Этот инструмент помогает находить, классифицировать и устранять уязвимости.
Включает в себя OpenVAS, средство активного мониторинга узлов сети и управления уязвимостями. Предлагает мультисканерную архитектуру и удобный веб-интерфейс для анализа результатов сканирования, делая процесс управления уязвимостями более эффективным.
Плюсы:
- Широкий спектр функций для управления уязвимостями в IT-инфраструктуре.
Почти все браузеры, основанные на chromium, хранят закладки похожим образом. Меняются только директории, в которые эти браузеры установлены. Исключением является только Mozilla Firefox. При этом закладки хранятся в открытом виде, так что, любой желающий может получить к ним доступ. Не сказать, чтобы это была супер секретная информация. Но все же, стоило бы продумать этот момент. В данной статье мы рассмотрим код, который в автоматизированном режиме получает все закладки из распространенных браузеров с помощью Python.
Создадим файл browser_check.py. В нем, напишем код, который будет производить поиск браузеров по пути указанному в одном из словарей.
Импортируем необходимые библиотеки для работы скрипта и определим список, в который будем помещать словари с найденными браузерами:
Следующим шагом будет создание двух словарей, в которые поместим пути к распространенным браузерам на операционных системах Windows и Linux, так как поиск браузеров будет производиться по путям, которые специфичны для каждой из операционных систем.
Создадим функцию browser_find(platform: dict) -> None, которая на входе будет получать словарь с путями к закладкам браузеров и проверять их существование. Если путь существует, в объявленный ранее список browser будет добавляться словарь с названием браузера и путем к его закладкам.
Следует обратить внимание на тот факт, что пути к закладкам браузеров указаны при установке их в директории по умолчанию. Если же пользователь поменял расположение директории с браузером, то он найден не будет.
Двигаемся далее и создадим функцию main, в которой будем определять платформу, на которой запущен скрипт. В принципе, если у вас MacOS, то нужно добавить еще один словарь с путями и условие, в котором определяется ваша система. Но, в данном случае детектируются только две операционные системы: Windows и Linux.
В зависимости от того, какая из систем установлена на компьютере с запущенным скриптом, забираем нужный словарь с путями к закладкам и передаем его в функцию browser_find, которую напишем в отдельном файле.
После этого проверяем, есть ли что-то в списке с браузерами. Если список пуст, выводим сообщение для пользователя, что браузеры не найдены. Если же список не пуст, итерируемся по нему в цикле, забираем словари и получаем название браузера, которое содержится в переменной key и путь к закладкам, содержащийся в переменной value.
Передаем полученное значение в функцию по парсингу json. На самом деле, файл с закладками, это json-файл с достаточно большой структурой вложенности.
Часть структуры файла закладок
В зависимости от того, что вернет функция парсинга, а возвращает она или список со словарями, в которых содержаться полученные значения или False, двигаемся дальше. Если мы получаем список, то открываем файл с названием браузера на запись. Обратите внимание на то, что в данном случае файл открыт в режиме дозаписи, о чем свидетельствует параметр «a». Затем итерируемся по полученному списку, забираем из словарейОбратите внимание на ветку «roots», в которой и находятся все закладки. Так как закладки в браузере, это не просто последовательный набор названий и ссылок, то их группировка происходит по директориям создаваемым пользователем. Данные директории имеют название «children» и имеют тип «folder». Также, к примеру, на Панели закладок могут быть как директории с закладками, так и просто закладки для быстрого доступа. Тип закладок без папок «url».
Создадим файл bookmarks_find.py и приступим к написанию кода. Для начала импортируем библиотеки, которые понадобятся в данном скрипте.
import json
Создадим функцию rec(file: str) -> (list, bool), в которую передается путь к закладкам браузера. Возвращает же данная функция список со словарями, в которых содержится имя и url закладки. В случае же, если закладки найти не удалось, возвращается False.
Объявляем список urls, в который будем помещать найденные закладки в виде словарей. Откроем файл с закладками для чтения, поместим его содержимое в переменную roots.
Так как значение данной переменной будет являться словарем, проитерируемся по нему в цикле, указав ветку «roots» в качестве стартовой. Получим ключ и значение и проверим, есть ли в нем название «children». Если да, передаем полученную ветку в функцию process_tree, которую мы создадим чуть позже для обработки. Также передаем в эту функцию список urls. По сути, при передаче списка, если вспомнить его свойства, мы передаем указатель на оригинальный список, так как его копирования в данном случае не происходит. А значит, при его изменении в других функциях измениться и оригинальный словарь.
После того, как завершим итерацию по файлу, проверяем, пуст или нет список. Если список не пуст, возвращаем его из функции. Если пуст - возвращаем False.
Теперь создадим функцию process_tree(children_ist: dict, urls: list) -> None, которая получает на входе словарь из полученной директории и указатель на список, в котором будут храниться найденные ссылки в виде словарей.
Здесь все просто. Данная функция как переходник, в котором мы итерируемся по полученному словарю и передаем полученные значения в следующие функции для обработки.
Создадим функцию process_urls(item: dict, urls: list) -> None, которая на входе получает словарь со значениями и ссылку на список. У данной функции предназначение – выявить ссылки в переданном словаре. Для этого проверяем, есть ли в переданном словаре ключ «type» и является ли его значение «url». Если да, забираем название ссылки и саму ссылку и добавляем в виде словаря в список urls.
И еще одна функция, которая будет необходима для проверки, не является ли полученный словарь директорией со ссылками «children». Создадим функцию process_folders(item: dict, urls: list) -> None, которая на входе получает словарь со значениями и ссылку на список.
Здесь все тоже просто, проверяем, есть или нет «children» в переданном словаре. Если есть, передаем его рекурсивно в функцию process_tree для дальнейшей обработки.
Полный код скрипта:
import json
На этом вроде бы все. Основные скрипты и функции написаны, осталось только проверить, как это будет работать.
В процессе работы скрипт выведет несколько сообщений: о том, сколько было найдено браузеров, для какого из браузеров найдены закладки и для какого количества из найденных закладки сохранены.
Сообщения в терминале
Если скрипт найдет браузеры в системе, в директории скрипта будут созданы файлы с названиями найденных браузеров, в которых содержатся закладки.
Файлы с найденными закладками
Как видно на скриншоте, у меня установлено два браузера. Давайте откроем один из файлов и посмотрим на часть его содержимого.
Содержимое файла с найденными закладками
Как видим, закладки найдены. За годы работы в данном браузере их накопилось чуть более 3000. Конечно же, показывать все я не буду, потому, только самое начало, для того, чтобы убедиться, что скрипт работает.
Скрипт работает как на Windows, так и на Linux. Вот скрин с работой скрипта в Fedora Workstation, в которой браузеры установлены по умолчанию, с помощью пакетов.
Работа скрипта в Fedora Workstation
Подведем итоги:
В данной статье мы научились рекурсивно парсить файл json, узнали, каким способом можно определить операционную систему, установленную на компьютере, а также сохранять данные из json в текстовый файл.
В перспективе, применений данному скрипту можно найти достаточно много. Все зависит только от вашей фантазии.