feat: нарушители по Методике ФСТЭК от 05.02.2021 (без выдумок)
- attacker_categories.json: 2 категории (внешний/внутренний) с формулировками п. 5.1.6
- attacker_levels.json: 4 уровня возможностей Н1-Н4 (Приложение 8):
базовые, базовые повышенные, средние, высокие — с полным описанием
и видами нарушителей по каждому уровню
- attacker_types.json: 13 видов нарушителей (п. 5.1.3) — спецслужбы ИГ,
террористические группировки, преступные группы, хакеры, конкуренты,
разработчики ПО, поставщики, персонал, пользователи, сисадмины, бывшие работники
- вкладка «Безопасность»: категория (combobox) + уровень Н1-Н4 (combobox) +
виды нарушителей (listbox с кнопками 📚 из словаря)
- модель: attacker_level, attacker_types; маппинги collect/select/copy/import;
генератор: item.attacker_level, item.attacker_types
This commit is contained in:
@@ -1,5 +1,10 @@
|
|||||||
[
|
[
|
||||||
"внешний нарушитель",
|
{
|
||||||
"внутренний нарушитель",
|
"name": "Внешний нарушитель",
|
||||||
"внешний и внутренний нарушитель"
|
"description": "Нарушитель, не имеющий прав доступа в контролируемую (охраняемую) зону (территорию) и (или) полномочий по доступу к информационным ресурсам и компонентам систем и сетей, требующим авторизации"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Внутренний нарушитель",
|
||||||
|
"description": "Нарушитель, имеющий права доступа в контролируемую (охраняемую) зону (территорию) и (или) полномочия по автоматизированному доступу к информационным ресурсам и компонентам систем и сетей. К внутренним нарушителям относятся пользователи, имеющие как непривилегированные (пользовательские), так и привилегированные (административные) права доступа"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"level": "Н1",
|
||||||
|
"name": "Базовые возможности",
|
||||||
|
"description": "Нарушитель, обладающий базовыми возможностями. Имеет возможность использовать только известные уязвимости, скрипты и инструменты, свободно распространяемые в сети «Интернет» и разработанные другими лицами. Обладает базовыми компьютерными знаниями и навыками на уровне пользователя. Имеет возможность реализации угроз за счет физических воздействий на технические средства обработки и хранения информации, линии связи и обеспечивающие системы при наличии физического доступа к ним. Может реализовывать только известные угрозы, направленные на известные (документированные) уязвимости, с использованием общедоступных инструментов.",
|
||||||
|
"types": [
|
||||||
|
"Отдельные физические лица (хакеры)",
|
||||||
|
"Лица, обеспечивающие поставку программных, программно-аппаратных средств, обеспечивающих систем",
|
||||||
|
"Лица, обеспечивающие функционирование систем и сетей или обеспечивающих систем (администрация, охрана, уборщики и т.д.)",
|
||||||
|
"Авторизованные пользователи систем и сетей",
|
||||||
|
"Бывшие работники (пользователи)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"level": "Н2",
|
||||||
|
"name": "Базовые повышенные возможности",
|
||||||
|
"description": "Обладает всеми возможностями нарушителей с базовыми возможностями. Хорошо владеет средствами и инструментами, понимает, как они работают, и может вносить изменения в их функционирование для повышения эффективности реализации угроз. Оснащен фреймворками и наборами средств для реализации угроз и использования уязвимостей. Имеет навыки самостоятельного планирования и реализации сценариев угроз. Обладает практическими знаниями о функционировании систем и сетей, операционных систем, а также знаниями защитных механизмов. Может реализовывать угрозы, в том числе направленные на неизвестные (недокументированные) уязвимости, с использованием специально созданных инструментов. Не имеет возможностей реализации угроз на физически изолированные сегменты систем и сетей.",
|
||||||
|
"types": [
|
||||||
|
"Преступные группы (два лица и более, действующие по единому плану)",
|
||||||
|
"Конкурирующие организации",
|
||||||
|
"Поставщики вычислительных услуг, услуг связи",
|
||||||
|
"Лица, привлекаемые для установки, настройки, испытаний, пусконаладочных и иных видов работ",
|
||||||
|
"Системные администраторы и администраторы безопасности"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"level": "Н3",
|
||||||
|
"name": "Средние возможности",
|
||||||
|
"description": "Обладает всеми возможностями нарушителей с базовыми повышенными возможностями. Имеет возможность приобретать информацию об уязвимостях, размещаемую на специализированных платных ресурсах (биржах уязвимостей), приобретать дорогостоящие средства и инструменты для реализации угроз, самостоятельно разрабатывать средства (инструменты), необходимые для реализации угроз (атак). Имеет возможность получения доступа к встраиваемому программному обеспечению аппаратных платформ, системному и прикладному программному обеспечению, телекоммуникационному оборудованию для проведения их анализа. Обладает знаниями и практическими навыками проведения анализа программного кода для получения информации об уязвимостях. Имеет возможность реализовывать угрозы в составе группы лиц. Не имеет возможностей реализации угроз на физически изолированные сегменты систем и сетей.",
|
||||||
|
"types": [
|
||||||
|
"Террористические, экстремистские группировки",
|
||||||
|
"Разработчики программных, программно-аппаратных средств"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"level": "Н4",
|
||||||
|
"name": "Высокие возможности",
|
||||||
|
"description": "Обладает всеми возможностями нарушителей со средними возможностями. Имеет возможность получения доступа к исходному коду встраиваемого программного обеспечения аппаратных платформ, системного и прикладного программного обеспечения, телекоммуникационного оборудования для получения сведений об уязвимостях «нулевого дня». Имеет возможность внедрения программных (программно-аппаратных) закладок или уязвимостей на различных этапах поставки программного обеспечения или программно-аппаратных средств. Имеет возможность создания методов и средств реализации угроз с привлечением специализированных научных организаций, создания и применения специальных технических средств для добывания информации. Имеет возможность долговременно и незаметно для операторов систем и сетей реализовывать угрозы. Обладает исключительными знаниями и практическими навыками о функционировании систем и сетей. Имеет практически неограниченные возможности реализовывать угрозы, в том числе с использованием недекларированных возможностей, программных, программно-аппаратных закладок, встроенных в компоненты систем и сетей.",
|
||||||
|
"types": [
|
||||||
|
"Специальные службы иностранных государств"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
[
|
||||||
|
"Специальные службы иностранных государств",
|
||||||
|
"Террористические, экстремистские группировки",
|
||||||
|
"Преступные группы (криминальные структуры)",
|
||||||
|
"Отдельные физические лица (хакеры)",
|
||||||
|
"Конкурирующие организации",
|
||||||
|
"Разработчики программных, программно-аппаратных средств",
|
||||||
|
"Лица, обеспечивающие поставку программных, программно-аппаратных средств, обеспечивающих систем",
|
||||||
|
"Поставщики услуг связи, вычислительных услуг",
|
||||||
|
"Лица, привлекаемые для установки, настройки, испытаний, пусконаладочных и иных видов работ",
|
||||||
|
"Лица, обеспечивающие функционирование систем и сетей или обеспечивающих систем оператора (администрация, охрана, уборщики и др.)",
|
||||||
|
"Авторизованные пользователи систем и сетей",
|
||||||
|
"Системные администраторы и администраторы безопасности",
|
||||||
|
"Бывшие (уволенные) работники (пользователи)"
|
||||||
|
]
|
||||||
@@ -71,6 +71,8 @@ class InformationSystem:
|
|||||||
|
|
||||||
# Безопасность (236 приказ)
|
# Безопасность (236 приказ)
|
||||||
attacker_category: str = "" # Категория нарушителя (внешний/внутренний)
|
attacker_category: str = "" # Категория нарушителя (внешний/внутренний)
|
||||||
|
attacker_level: str = "" # Уровень возможностей нарушителя (Н1-Н4, Методика ФСТЭК 05.02.2021)
|
||||||
|
attacker_types: str = "" # Виды нарушителей (\n — разделитель, п. 5.1.3 Методики)
|
||||||
threats: str = "" # Основные угрозы безопасности информации (\n — разделитель)
|
threats: str = "" # Основные угрозы безопасности информации (\n — разделитель)
|
||||||
incidents: str = "" # Типы компьютерных инцидентов (\n — разделитель)
|
incidents: str = "" # Типы компьютерных инцидентов (\n — разделитель)
|
||||||
criteria_values: str = "" # Показатели критериев значимости (\n — разделитель)
|
criteria_values: str = "" # Показатели критериев значимости (\n — разделитель)
|
||||||
|
|||||||
+36
-2
@@ -993,15 +993,41 @@ class DokoGenApp:
|
|||||||
# ===== Левая колонка =====
|
# ===== Левая колонка =====
|
||||||
ttk.Label(sec_left, text="Категория нарушителя:").pack(anchor=tk.W)
|
ttk.Label(sec_left, text="Категория нарушителя:").pack(anchor=tk.W)
|
||||||
self.is_attacker_category_combo = ttk.Combobox(sec_left, state='readonly')
|
self.is_attacker_category_combo = ttk.Combobox(sec_left, state='readonly')
|
||||||
self.is_attacker_category_combo.pack(fill=tk.X, pady=(2, 4))
|
self.is_attacker_category_combo.pack(fill=tk.X, pady=(2, 2))
|
||||||
try:
|
try:
|
||||||
import json as _json
|
import json as _json
|
||||||
_ac = os.path.join(os.path.dirname(__file__), 'dictionaries', 'attacker_categories.json')
|
_ac = os.path.join(os.path.dirname(__file__), 'dictionaries', 'attacker_categories.json')
|
||||||
with open(_ac, encoding='utf-8') as _f:
|
with open(_ac, encoding='utf-8') as _f:
|
||||||
self.is_attacker_category_combo['values'] = [''] + _json.load(_f)
|
_cats = _json.load(_f)
|
||||||
|
self.is_attacker_category_combo['values'] = [''] + [c['name'] for c in _cats]
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
ttk.Label(sec_left, text="Уровень возможностей нарушителя:").pack(anchor=tk.W)
|
||||||
|
self.is_attacker_level_combo = ttk.Combobox(sec_left, state='readonly')
|
||||||
|
self.is_attacker_level_combo.pack(fill=tk.X, pady=(2, 2))
|
||||||
|
try:
|
||||||
|
import json as _json
|
||||||
|
_al = os.path.join(os.path.dirname(__file__), 'dictionaries', 'attacker_levels.json')
|
||||||
|
with open(_al, encoding='utf-8') as _f:
|
||||||
|
_levels = _json.load(_f)
|
||||||
|
self.is_attacker_level_combo['values'] = [''] + [
|
||||||
|
f"{l['level']} — {l['name']}" for l in _levels]
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
ttk.Label(sec_left, text="Виды нарушителей:").pack(anchor=tk.W)
|
||||||
|
sec_at_row = ttk.Frame(sec_left)
|
||||||
|
sec_at_row.pack(fill=tk.X, pady=(2, 4))
|
||||||
|
self.is_attacker_types_listbox = tk.Listbox(sec_at_row, height=3, exportselection=False)
|
||||||
|
self.is_attacker_types_listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
|
||||||
|
sec_at_btn = ttk.Frame(sec_at_row)
|
||||||
|
sec_at_btn.pack(side=tk.RIGHT, padx=(4, 0))
|
||||||
|
ttk.Button(sec_at_btn, text="-", width=2,
|
||||||
|
command=lambda: self._del_sw_item(self.is_attacker_types_listbox)).pack(pady=1)
|
||||||
|
ttk.Button(sec_at_btn, text="📚", width=3,
|
||||||
|
command=lambda: self._select_sw_from_dict(self.is_attacker_types_listbox, 'attacker_types.json')).pack(pady=1)
|
||||||
|
|
||||||
ttk.Label(sec_left, text="Основные угрозы БИ:").pack(anchor=tk.W)
|
ttk.Label(sec_left, text="Основные угрозы БИ:").pack(anchor=tk.W)
|
||||||
sec_thr_row = ttk.Frame(sec_left)
|
sec_thr_row = ttk.Frame(sec_left)
|
||||||
sec_thr_row.pack(fill=tk.BOTH, expand=True, pady=(2, 4))
|
sec_thr_row.pack(fill=tk.BOTH, expand=True, pady=(2, 4))
|
||||||
@@ -1321,6 +1347,10 @@ class DokoGenApp:
|
|||||||
('is_os_sw_listbox', 'os_sw'),
|
('is_os_sw_listbox', 'os_sw'),
|
||||||
('is_app_sw_listbox', 'app_sw'),
|
('is_app_sw_listbox', 'app_sw'),
|
||||||
('is_attacker_category_combo', 'attacker_category'),
|
('is_attacker_category_combo', 'attacker_category'),
|
||||||
|
('is_attacker_level_combo', 'attacker_level'),
|
||||||
|
('is_attacker_types_listbox', 'attacker_types'),
|
||||||
|
('is_attacker_level_combo', 'attacker_level'),
|
||||||
|
('is_attacker_types_listbox', 'attacker_types'),
|
||||||
('is_threats_listbox', 'threats'),
|
('is_threats_listbox', 'threats'),
|
||||||
('is_incidents_listbox', 'incidents'),
|
('is_incidents_listbox', 'incidents'),
|
||||||
('is_criteria_values_listbox', 'criteria_values'),
|
('is_criteria_values_listbox', 'criteria_values'),
|
||||||
@@ -1634,6 +1664,8 @@ class DokoGenApp:
|
|||||||
app_sw=src.app_sw,
|
app_sw=src.app_sw,
|
||||||
balance_value=src.balance_value,
|
balance_value=src.balance_value,
|
||||||
attacker_category=src.attacker_category,
|
attacker_category=src.attacker_category,
|
||||||
|
attacker_level=src.attacker_level,
|
||||||
|
attacker_types=src.attacker_types,
|
||||||
threats=src.threats,
|
threats=src.threats,
|
||||||
incidents=src.incidents,
|
incidents=src.incidents,
|
||||||
criteria_values=src.criteria_values,
|
criteria_values=src.criteria_values,
|
||||||
@@ -2825,6 +2857,8 @@ class DokoGenApp:
|
|||||||
app_sw=is_data.get('app_sw', ''),
|
app_sw=is_data.get('app_sw', ''),
|
||||||
balance_value=is_data.get('balanceValue', is_data.get('balance_value', '')),
|
balance_value=is_data.get('balanceValue', is_data.get('balance_value', '')),
|
||||||
attacker_category=is_data.get('attacker_category', ''),
|
attacker_category=is_data.get('attacker_category', ''),
|
||||||
|
attacker_level=is_data.get('attacker_level', ''),
|
||||||
|
attacker_types=is_data.get('attacker_types', ''),
|
||||||
threats=is_data.get('threats', ''),
|
threats=is_data.get('threats', ''),
|
||||||
incidents=is_data.get('incidents', ''),
|
incidents=is_data.get('incidents', ''),
|
||||||
criteria_values=is_data.get('criteria_values', ''),
|
criteria_values=is_data.get('criteria_values', ''),
|
||||||
|
|||||||
@@ -329,6 +329,8 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]:
|
|||||||
'app_sw': getattr(isys, 'app_sw', '') or '—',
|
'app_sw': getattr(isys, 'app_sw', '') or '—',
|
||||||
'balance_value': getattr(isys, 'balance_value', '') or '—',
|
'balance_value': getattr(isys, 'balance_value', '') or '—',
|
||||||
'attacker_category': getattr(isys, 'attacker_category', '') or '—',
|
'attacker_category': getattr(isys, 'attacker_category', '') or '—',
|
||||||
|
'attacker_level': getattr(isys, 'attacker_level', '') or '—',
|
||||||
|
'attacker_types': getattr(isys, 'attacker_types', '') or '—',
|
||||||
'threats': getattr(isys, 'threats', '') or '—',
|
'threats': getattr(isys, 'threats', '') or '—',
|
||||||
# Алиасы под шаблон «Сведения о результатах категорирования» (ФСТЭК)
|
# Алиасы под шаблон «Сведения о результатах категорирования» (ФСТЭК)
|
||||||
'objective': getattr(isys, 'purpose', '') or '—',
|
'objective': getattr(isys, 'purpose', '') or '—',
|
||||||
|
|||||||
Reference in New Issue
Block a user