Скрипты для парсинга различных сайтов:
- Бюллетени НКЦКИ (https://safe-surf.ru/) -
parsing_pdf.py
; - Сайт https://www.opencve.io/ -
parsing_opencve.py
; - Сайт https://cvetrends.com/ -
parsing_cvetrends.py
; - Сайт https://www.first.org/epss/data_stats -
add_epss.py
; - Сайт https://otx/alienvault.com/ - функция
get_ttp
в скриптеchanging_all_issues.py
для получения тактик (техник) реализации уязвимости; - Сайт https://attack.mitre.org/ - функция
get_mitigations
в скриптеchanging_all_issues.py
, которая получает значения из функцииget_ttp
и возвращает mitigations (смягчающие меры) для закрытия уязвимости; - Сайт https://api.msrc.microsoft.com/ -
get_kb.py
или функцияget_kb
в каждом из файлов. - Сайт https://www.cisa.gov/known-exploited-vulnerabilities-catalog
use_real_attack.py
- Сайт https://msrc.microsoft.com/update-guide/releaseNote/ -
get_cve_from_month_update.py
. - Репозиторий nu11secur1ty на гитхабе с эскполитами - функция
get_exploit_info
в каждом из скриптов; - Репозиторий trickest на гитхабе с PoC'ами - функция
get_exploit_info_2
в каждом из скриптов.
Добавлен скрипт для интеграции трекера задач YouTrack и платформы RVision.
Для установки запустить
pip3 install -r requirements.txt
P.S. если какого-то пакета будет не хватать, то:
pip3 install <'packet_name'>
Перед началом работы необходимо создать файл .env
и добавить в него необходимые ссылки и креды.
Создать .env
файл
touch .env
Добавить информацию в .env
# .env file
# tokens, API_kyes and passwords
YOU_TRACK_TOKEN='<YOU_TRACK_TOKEN>'
YOU_TRACK_PROJECT_ID='<YOU_TRACK_PROJECT_ID>'
API_KEY_ALIENVAULT='<API_KEY_ALIENVAULT>'
USERNAME_OPENCVE='<USERNAME_OPENCVE>'
PASSWORD_OPENCVE='<PASSWORD_OPENCVE>'
# any URLs
YOU_TRACK_BASE_URL='<YOU_TRACK_BASE_URL>'
MAIN_URL_ADD_EPSS='<MAIN_URL_ADD_EPSS>'
MAIN_URL_CHANGING='<MAIN_URL_CHANGING>'
MAIN_URL_CVETRENDS='<MAIN_URL_CVETRENDS>'
MAIN_URL_OPENCVE='<MAIN_URL_OPENCVE>'
MAIN_URL_PDF='<MAIN_URL_PDF>'
MAIN_URL_REMOVE='<MAIN_URL_REMOVE>'
URL_REMOVE='<URL_REMOVE>'
URL_GET_PRODUCTS='<URL_GET_PRODUCTS>'
URL_GET_VERSIONS='<URL_GET_VERSIONS>'
#ALERTING:
# e-mail settings
EMAIL_HOST='<EMAIL_HOST>'
EMAIL_PORT='<EMAIL_PORT>'
EMAIL_HOST_PASSWORD='<EMAIL_HOST_PASSWORD>'
EMAIL_HOST_USER='<EMAIL_HOST_USER>'
USER1='<USER1>' # e-mail user_1
USER2='<USER2>' # e-mail user_2
# telegram settings
BOT_TOKEN='<BOT_TOKEN>' # telegram bot API_key
CHAT_ID_J='<CHAT_ID_J>' # chat_id user_1
CHAT_ID_R='<CHAT_ID_R>' # chat_id user_2
CHAT_ID_L='<CHAT_ID_L>' # chat_id user_3
Если не нужен тот или иной функционал в скриптах, то следует удалить закоментировать соответствующие строки, как в скриптах так и в файле .env
CHAT_ID_*
используется для уведомления пользователей через телеграмм бота.
Чтобы создать своего бота, нужно писать этому боту @BotFather
Чтобы узнать chat_id, нужно писать этому боту @getmyid_bot
Для автоматической работы скриптов следует использовать cron
Рекомендуемый порядок запуска скриптов:
0 * * * * python3 scripts_for_YT/parsing_pdf.py # Каждую нулевую минуту
4 * * * * python3 scripts_for_YT/parsing_opencve.py # Каждую четвертую минуту
12 */3 * * * python3 scripts_for_YT/changing_all_issues.py # Каждую двенадцатую минуту, каждого третьего часа
30 * * * * python3 scripts_for_YT/add_epss.py # Каждую тридцаитую минуту
40 * * * * python3 scripts_for_YT/remove_repetitions.py # Каждую сороковую минуту
8 * * * * python3 scripts_for_YT/parsing_cvetrends.py # Каждую восьмую минуту
Description:
На вход скрипт принимает список идентификаторов уязвимостей (cve). На выходе выводится список митигэйшэнов сразу в разметке Markdown.
Input:
cve_list = ['CVE-2021-27365', 'CVE-2021-28313', 'CVE-2021-28315', 'CVE-2021-32761', 'CVE-2021-40444', 'CVE-2021-44228', 'CVE-2019-17571', 'CVE-2021-43803', 'CVE-2021-43808', 'CVE-2021-41270', 'CVE-2021-34787', 'CVE-2021-40125']
Usage:
python3 parse_alienvault.py
Output (mardown example):
Output default:
No mitigations for CVE-2021-27365
No mitigations for CVE-2021-28313
No mitigations for CVE-2021-28315
No mitigations for CVE-2021-32761
['[M1047 - Audit ](https://attack.mitre.org/mitigations/M1047)', '[M1017 - User Training ](https://attack.mitre.org/mitigations/M1017)', '[M1028 - Operating System Configuration ](https://attack.mitre.org/mitigations/M1028)', '[M1038 - Execution Prevention ](https://attack.mitre.org/mitigations/M1038)', '[M1040 - Behavior Prevention on Endpoint ](https://attack.mitre.org/mitigations/M1040)', '[M1018 - User Account Management ](https://attack.mitre.org/mitigations/M1018)', '[M1026 - Privileged Account Management ](https://attack.mitre.org/mitigations/M1026)', '[M1042 - Disable or Remove Feature or Program ](https://attack.mitre.org/mitigations/M1042)']
['[M1017 - User Training ](https://attack.mitre.org/mitigations/M1017)', '[M1027 - Password Policies ](https://attack.mitre.org/mitigations/M1027)', '[M1032 - Multi-factor Authentication ](https://attack.mitre.org/mitigations/M1032)', '[M1018 - User Account Management ](https://attack.mitre.org/mitigations/M1018)', '[M1026 - Privileged Account Management ](https://attack.mitre.org/mitigations/M1026)']
['[M1037 - Filter Network Traffic ](https://attack.mitre.org/mitigations/M1037)', '[M1018 - User Account Management ](https://attack.mitre.org/mitigations/M1018)', '[M1040 - Behavior Prevention on Endpoint ](https://attack.mitre.org/mitigations/M1040)', '[M1026 - Privileged Account Management ](https://attack.mitre.org/mitigations/M1026)', '[M1049 - Antivirus/Antimalware ](https://attack.mitre.org/mitigations/M1049)']
No mitigations for CVE-2021-43803
No mitigations for CVE-2021-43808
No mitigations for CVE-2021-41270
No mitigations for CVE-2021-34787
No mitigations for CVE-2021-40125
Description:
На вход скрипт принимает список идентификаторов уязвимостей (cve). На выходе выводится epss_scoring (оценка вероятности использования уязвимости в реальных компьютерных атаках) для каждой уязвимости. Что такое epss можно почитать тут
Description:
Скрипт обновляет описание для каждой уязвимости исходя из парсинга сайтов приведенных в самом начале.
Description:
Скрипт удаляет дублирующиеся задачи.
Description
В этом файле лежит массив со стикерами.
Для того чтобы добавить сюда стикеры, нужно скинуть стикер боту @idstickerbot
и он вернет id стикера, который необходимо положить в массив stickers
.
Description
Скрипт собирает информацию об обновлениях безопасности для уязвимостей в продуктах Microsoft.
На вход принимается идентификатор уязвимости cve на выходе - список обновлений
безопасности (KB). Вывод всегда можно поправить, по умолчанию
он собирается сразу в разметке markdown
.
Input:
cve = 'CVE-2022-26809'
Usage:
python3 get_kb.py
Output (markdown):
KB5012647 - 2022-04 Cumulative Update for Windows Server 2019 for x64-based Systems
KB5012591 - 2022-04 Cumulative Update for Windows 10 Version 1909 for x64-based Systems
KB5012599 - 2022-04 Dynamic Cumulative Update for Windows 10 Version 20H2 for x64-based Systems
Output cosmetic:
2022-04 Cumulative Update for Windows Server 2019 for x64-based Systems - https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5012647
2022-04 Cumulative Update for Windows 10 Version 1909 for x64-based Systems - https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5012591
2022-04 Dynamic Cumulative Update for Windows 10 Version 21H2 for x86-based Systems - https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5012599
...
Description
Скрипт парсит отресерченные в YouTrack уязвимости и заводит рекомендации по закрытию уязвимости задачей в платформу R-Vision Incident Response Platform.
Отресерченная задача имеет два определенных кастомных поля (customField)
Usage:
python3 export_YT_to_RV.py
Output:
1 / 2:
Создана задача TSK-5555
Добавлено оборудование к задаче TSK-5555
Добавлен комментарий к задаче 2-11111
Состояние задачи 2-11111 изменилось
2 / 2:
Создана задача TSK-6666
Добавлено оборудование к задаче TSK-6666
Добавлен комментарий к задаче 2-22222
Состояние задачи 2-22222 изменилось
Description
Скрипт парсит сайт с обновлениями Microsoft и собирает список уязвимостей, которые закрываются месячным обновлением от Microsoft.
Usage:
python3 get_cve_from_month_update.py
Output:
2019-Jan:
['CVE-2019-0536', 'CVE-2019-0537', 'CVE-2019-0545', 'CVE-2019-0549', 'CVE-2019-0553', 'CVE-2019-0554', 'CVE-2019-0559', 'CVE-2019-0560', 'CVE-2019-0561', 'CVE-2019-0569', 'CVE-2019-0585', 'CVE-2019-0588']
2019-Feb:
['CVE-2019-0540(May include further steps)', 'CVE-2019-0600', 'CVE-2019-0601', 'CVE-2019-0602', 'CVE-2019-0615', 'CVE-2019-0616', 'CVE-2019-0619', 'CVE-2019-0621', 'CVE-2019-0628', 'CVE-2019-0635', 'CVE-2019-0636', 'CVE-2019-0643', 'CVE-2019-0648', 'CVE-2019-0658', 'CVE-2019-0660', 'CVE-2019-0661', 'CVE-2019-0664', 'CVE-2019-0669', 'CVE-2019-0676', 'CVE-2019-0686(May include further steps)', 'CVE-2019-0724(May include further steps)', 'CVE-2019-0741']
...
Description
Скрипт парсит сайт CISA, на котором ведется перечень с уязвимостями, которые использовались в реальных атаках и добавляет информацию в CustomField для каждой задачи в трекере задач YouTrack.
Для того, чтобы просто получить список уязвимостей, необходимо принтануть функцию основную функцию: print(use_real_attack_cve())
Usage:
python3 use_real_attack.py
Output:
['CVE-2021-27104', 'CVE-2021-27102', 'CVE-2021-27101', 'CVE-2021-27103', 'CVE-2021-21017', 'CVE-2021-28550', 'CVE-2018-4939', 'CVE-2018-15961', 'CVE-2018-4878', 'CVE-2020-5735', 'CVE-2019-2215', ...]
По состоянию на 04.07.2022 г. в данном перечне 888 уязвимостей.