D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Автор: NomadSP
Источник: XSS.is
Мошеннические действия разного характера, стали обыденным предметом обсуждения на совещании каждого отдела безопасности в любой сфере деятельности, которые приобрели новый виток развития вместе с эволюцией технологий.
Поэтому адаптироваться приходится обеим сторонам. Одни ищут и мешают - другие пытаются обмануть. Этакие "Казаки-Разбойники". В данном случае мы поговорим о тех, которые "Казаки", а ещё что они делают для того, чтобы ловить было проще и мешать эффективнее, ведь схемы тоже имеют свои признаки в виде конкретных аномалий. В этой статье мы рассмотрим ряд программных решений, которые помогут в анализе мошеннических паттернов.
Что в арсенале?
- Мониторинг и реагирование.
Опыт мне подсказывает, что первоочередная задача - анализировать всё в реальном времени, поэтому использование таких систем как SAS Faud Management или FICO Falcon Fraud Manager является хорошим началом.
Обе системы позволяют анализировать, обнаруживать и предотвращать мошеннические действия. Не говоря о том, что SAS(прямо как Special Air Service) ещё и использует машинное обучение в совокупности с исторически логгируемыми данными для обучения моделей. Однако в противовес, FICO более заточен под сетевой анализ на основе взаимосвязей, например, между транзакциями.
- Визуализация.
Учитывая огромные объемы данных использование такого инструмента как Tableau позволит визуализировать в виде интерактивных дашбордов и отчётов всё необходимое. Вдобавок, интегрируя с различными базами данных, мы получаем уже систематизированные выводы.
- ИИ.
С распространением ИИ, потребность в мощных вычислительных инструментах для анализа относительно закрыта. При расследовании каких-то аномалий данных может быть масса, поэтому IBM Watson со своей функцией NLP(Обработка естественного языка) позволяет подключать ещё и анализ текстовых данных для вычисления схем.
В своих начинаниях, я могу отметить так же и функцию предсказательной аналитики, которая как палочка-выручалочка, предсказывала вероятность мошенничества, выявляя сложные паттерны.
- Анализ.
Neo4j в качестве базы данных графов, которая позволит визуализировать связи между сущностями и моделировать взаимосвязи между участниками транзакций, в результате может помочь выявить схемы мошенничества или дать дополнительные данные для анализа. Из преимуществ так же выделю поддержку Cypher Query Language, придающий удобности в плане запросов для работы с графами.
Это лишь малый набор инструментов, который я могу посоветовать для работы в плане аналитики и обнаружения. Однако, стоит учитывать, что это лишь утилиты, которые упрощают работу сотрудника, но не полностью её автоматизирует.
Распространенные методики.
Сотрудникам необходимо вырабатывать собственные методики анализа мошеннических паттернов, поэтому я с удовольствием поделюсь некоторыми выработанными опциями, которые применяются на практике или адаптируются под себя.
1. Метод сбора и обработки данных.
Кейс:
- В имеющихся транзакционных данных необходимо выявить подозрительные операции.
Действия:
- Сбор исторических данных за месячный временной промежуток.
- Поиск аномальных транзакций(Превышение лимита; Нетипичное время; Местоположение).
Практика:
- Используя Python, можно создать простую программу для выявления подобных транзакций.
Пример:
Python: Скопировать в буфер обмена
Итоги:
1. Данные: Мы создаем небольшой набор данных с идентификатором транзакции, суммой и Time Stamp.
2. Преобразование времени: Преобразуем столбец timestamp в формат datetime.
3. Критерии подозрительности:
- Транзакции, превышающие лимит (например, 2000).
- Транзакции, происходящие в необычное время (с 22:00 до 6:00).
- Транзакции менее 100.
4. Вывод результатов: Выводим все подозрительные транзакции.
2. Метод кластеризации.
Кейс:
- Необходимо сгруппировать транзакции по сходим признакам, чтобы в дальнейшем выявить подозрительные группы.
Действия:
- Создаём кластеризацию по необходимым признакам.
- Задаём алгоритм К-средних для анализа.
- Обнаруживаем аномалии по признакам.
Практика:
- Используем Python для поиска групп клиентов из одного региона, совершающие нетипичные транзакции.
Пример:
Python: Скопировать в буфер обмена
Итоги:
1. Данные: Мы создаем набор данных с идентификатором транзакции, суммой и местоположением.
2. One-hot encoding: Преобразуем категориальные данные (местоположение) в числовые значения.
3. Стандартизация: Используем StandardScaler для стандартизации данных перед кластеризацией.
4. K-средние: Применяем алгоритм K-средних для кластеризации данных на 3 группы.
5. Визуализация: Строим график для визуализации кластеров по сумме транзакций.
6. Анализ кластеров: Выводим статистику для каждого кластера.
3. Метод анализа связей.
Кейс:
-Необходимо задать метод построения взаимосвязей между участниками транзакций.
Действия:
- Создание граф для построения цепочек между потенциальными участниками мошеннических схем и создание алгоритма(например, алгоритм Лувена).
- Задаём узлы(клиенты) и ребра(транзакции).
- Создаём визуализацию для выявление сетей.
Практика:
- Создаём скрипт на Python, для выявления узлов с высокой степенью централизации с помощью инструментов для визуализации по типу Gephi.
Пример:
Python: Скопировать в буфер обмена
Итоги:
1. Сбор данных: Создаем DataFrame с данными о транзакциях.
2. Создание графа: Используем библиотеку NetworkX для создания граф.
3. Анализ структуры сети: Вычисляем степень и посредническую центральность узлов.
4. Визуализация графа: Используем Matplotlib для визуализации графа транзакций.
5. Вывод результатов: Выводим связи с высокой центральностью и соответствующие значения.
Применение.
С помощью таких методов включительно, сотрудники находят такие схемы как:
Мошенничество с кредитными картами: Обнаружение аномалий в транзакциях, таких как необычные суммы или частота операций, или нетипичная локация, или все в совокупности помогло выявить случаи несанкционированного использования карт. Например, алгоритмы кластерного анализа транзакционных данных позволяют быстро идентифицировать подозрительные активности.
AML: Используя инструменты для анализа связей транзакций, сотрудники ИБ смогли распознать сложные схемы отмывания денег, выявляя аномальные паттерны и связи между участниками.
Заключение.
Мы разобрали как ищут мошеннические схемы и операции, а так же какие инструменты можно использовать для данных мероприятий. Конечно, описанное мной в данной статье даёт лишь малое представление того, как финансовые организации вычисляют "Разбойников". Однако, даже это даст вполне не плохой старт для изучения или слздания собственных методов обработки поступающих данных с целью сохранения репутации компании и средств ваших клиентов.
До скорых встреч!
Источник: XSS.is
Мошеннические действия разного характера, стали обыденным предметом обсуждения на совещании каждого отдела безопасности в любой сфере деятельности, которые приобрели новый виток развития вместе с эволюцией технологий.
Поэтому адаптироваться приходится обеим сторонам. Одни ищут и мешают - другие пытаются обмануть. Этакие "Казаки-Разбойники". В данном случае мы поговорим о тех, которые "Казаки", а ещё что они делают для того, чтобы ловить было проще и мешать эффективнее, ведь схемы тоже имеют свои признаки в виде конкретных аномалий. В этой статье мы рассмотрим ряд программных решений, которые помогут в анализе мошеннических паттернов.
Что в арсенале?
- Мониторинг и реагирование.
Опыт мне подсказывает, что первоочередная задача - анализировать всё в реальном времени, поэтому использование таких систем как SAS Faud Management или FICO Falcon Fraud Manager является хорошим началом.
Обе системы позволяют анализировать, обнаруживать и предотвращать мошеннические действия. Не говоря о том, что SAS(прямо как Special Air Service) ещё и использует машинное обучение в совокупности с исторически логгируемыми данными для обучения моделей. Однако в противовес, FICO более заточен под сетевой анализ на основе взаимосвязей, например, между транзакциями.
- Визуализация.
Учитывая огромные объемы данных использование такого инструмента как Tableau позволит визуализировать в виде интерактивных дашбордов и отчётов всё необходимое. Вдобавок, интегрируя с различными базами данных, мы получаем уже систематизированные выводы.
- ИИ.
С распространением ИИ, потребность в мощных вычислительных инструментах для анализа относительно закрыта. При расследовании каких-то аномалий данных может быть масса, поэтому IBM Watson со своей функцией NLP(Обработка естественного языка) позволяет подключать ещё и анализ текстовых данных для вычисления схем.
В своих начинаниях, я могу отметить так же и функцию предсказательной аналитики, которая как палочка-выручалочка, предсказывала вероятность мошенничества, выявляя сложные паттерны.
- Анализ.
Neo4j в качестве базы данных графов, которая позволит визуализировать связи между сущностями и моделировать взаимосвязи между участниками транзакций, в результате может помочь выявить схемы мошенничества или дать дополнительные данные для анализа. Из преимуществ так же выделю поддержку Cypher Query Language, придающий удобности в плане запросов для работы с графами.
Это лишь малый набор инструментов, который я могу посоветовать для работы в плане аналитики и обнаружения. Однако, стоит учитывать, что это лишь утилиты, которые упрощают работу сотрудника, но не полностью её автоматизирует.
Распространенные методики.
Сотрудникам необходимо вырабатывать собственные методики анализа мошеннических паттернов, поэтому я с удовольствием поделюсь некоторыми выработанными опциями, которые применяются на практике или адаптируются под себя.
1. Метод сбора и обработки данных.
Кейс:
- В имеющихся транзакционных данных необходимо выявить подозрительные операции.
Действия:
- Сбор исторических данных за месячный временной промежуток.
- Поиск аномальных транзакций(Превышение лимита; Нетипичное время; Местоположение).
Практика:
- Используя Python, можно создать простую программу для выявления подобных транзакций.
Пример:
Python: Скопировать в буфер обмена
Код:
import pandas as pd
import numpy as np
# Пример данных о транзакциях
data = {
'transaction_id': [1, 2, 3, 4, 5, 6],
'amount': [100, 2500, 300, 150, 7000, 50],
'timestamp': [
'2024-10-01 08:30:00',
'2024-10-01 23:00:00',
'2024-10-02 14:00:00',
'2024-10-02 02:00:00',
'2024-10-02 15:30:00',
'2024-10-02 19:00:00'
]
}
# Создаем DataFrame
df = pd.DataFrame(data)
# Преобразуем столбец timestamp в тип datetime
df['timestamp'] = pd.to_datetime(df['timestamp'])
# Задаем лимит для транзакций
amount_limit = 2000
# Определяем "необычное время" (например, с 22:00 до 6:00)
unusual_hours_start = 22
unusual_hours_end = 6
# Функция для проверки на необычное время
def is_unusual_time(timestamp):
hour = timestamp.hour
return hour >= unusual_hours_start or hour < unusual_hours_end
# Ищем подозрительные транзакции
suspicious_transactions = df[
(df['amount'] > amount_limit) |
(df['timestamp'].apply(is_unusual_time))
]
# Добавляем дополнительную аномалию (например, транзакции менее 100)
suspicious_transactions = suspicious_transactions.append(
df[df['amount'] < 100]
)
# Удаляем дубликаты
suspicious_transactions = suspicious_transactions.drop_duplicates()
# Выводим результаты
print("Подозрительные транзакции:")
print(suspicious_transactions)
Итоги:
1. Данные: Мы создаем небольшой набор данных с идентификатором транзакции, суммой и Time Stamp.
2. Преобразование времени: Преобразуем столбец timestamp в формат datetime.
3. Критерии подозрительности:
- Транзакции, превышающие лимит (например, 2000).
- Транзакции, происходящие в необычное время (с 22:00 до 6:00).
- Транзакции менее 100.
4. Вывод результатов: Выводим все подозрительные транзакции.
2. Метод кластеризации.
Кейс:
- Необходимо сгруппировать транзакции по сходим признакам, чтобы в дальнейшем выявить подозрительные группы.
Действия:
- Создаём кластеризацию по необходимым признакам.
- Задаём алгоритм К-средних для анализа.
- Обнаруживаем аномалии по признакам.
Практика:
- Используем Python для поиска групп клиентов из одного региона, совершающие нетипичные транзакции.
Пример:
Python: Скопировать в буфер обмена
Код:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Пример данных о транзакциях
data = {
'transaction_id': range(1, 21),
'amount': [100, 2500, 300, 150, 7000, 50, 1200, 1800, 5000, 600,
200, 3000, 4000, 800, 900, 1500, 2200, 3500, 4500, 10000, 50],
'location': np.random.choice(['Location A', 'Location B', 'Locaion C', 'Locatiion D'], size=20)
}
# Создаем DataFrame
df = pd.DataFrame(data)
# Преобразуем местоположение в числовые значения (one-hot encoding)
df_encoded = pd.get_dummies(df[['location']], drop_first=True)
# Объединяем с оригинальным DataFrame
df_combined = pd.concat([df[['amount']], df_encoded], axis=1)
# Стандартизируем данные
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df_combined)
# Применяем алгоритм K-средних
kmeans = KMeans(n_clusters=3, random_state=42)
df['cluster'] = kmeans.fit_predict(X_scaled)
# Выводим результаты
print("Транзакции с присвоенными кластерами:")
print(df)
# Визуализация кластеров (по сумме)
plt.figure(figsize=(10, 6))
plt.scatter(df['amount'], df['cluster'], c=df['cluster'], cmap='viridis')
plt.title('Кластеризация транзакций по сумме')
plt.xlabel('Сумма транзакции')
plt.ylabel('Класс')
plt.colorbar(label='Кластер')
plt.show()
# Анализ кластеров
for cluster in range(3):
print(f"\nАнализ кластера {cluster}:")
cluster_data = df[df['cluster'] == cluster]
print(cluster_data.describe())
Итоги:
1. Данные: Мы создаем набор данных с идентификатором транзакции, суммой и местоположением.
2. One-hot encoding: Преобразуем категориальные данные (местоположение) в числовые значения.
3. Стандартизация: Используем StandardScaler для стандартизации данных перед кластеризацией.
4. K-средние: Применяем алгоритм K-средних для кластеризации данных на 3 группы.
5. Визуализация: Строим график для визуализации кластеров по сумме транзакций.
6. Анализ кластеров: Выводим статистику для каждого кластера.
3. Метод анализа связей.
Кейс:
-Необходимо задать метод построения взаимосвязей между участниками транзакций.
Действия:
- Создание граф для построения цепочек между потенциальными участниками мошеннических схем и создание алгоритма(например, алгоритм Лувена).
- Задаём узлы(клиенты) и ребра(транзакции).
- Создаём визуализацию для выявление сетей.
Практика:
- Создаём скрипт на Python, для выявления узлов с высокой степенью централизации с помощью инструментов для визуализации по типу Gephi.
Пример:
Python: Скопировать в буфер обмена
Код:
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
# Шаг 1: Сбор данных
# Пример данных о транзакциях
data = {
'client_1': ['A', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
'client_2': ['B', 'C', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'A'],
'amount': [100, 150, 200, 300, 400, 500, 600, 700, 800, 900]
}
# Создаем DataFrame
df = pd.DataFrame(data)
# Шаг 2: Создание графа
G = nx.Graph()
# Добавляем ребра в граф с весом
for index, row in df.iterrows():
G.add_edge(row['client_1'], row['client_2'], weight=row['amount'])
# Шаг 3: Анализ структуры сети
# Вычисляем центральность
degree_centrality = nx.degree_centrality(G)
betweenness_centrality = nx.betweenness_centrality(G)
# Находим узлы с высокой степенью центральности
high_degree_nodes = [node for node, centrality in degree_centrality.items() if centrality > 0.3]
print("Узлы с высокой степенью центральности:", high_degree_nodes)
# Шаг 4: Визуализация графа
plt.figure(figsize=(10, 8))
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=2000, font_size=12)
labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)
plt.title('Граф транзакций')
plt.show()
# Шаг 5: Вывод результатов
print("\nСтепень центральности:")
for node, centrality in degree_centrality.items():
print(f"{node}: {centrality:.4f}")
print("\nЦентральность посредничества:")
for node, centrality in betweenness_centrality.items():
print(f"{node}: {centrality:.4f}")
Итоги:
1. Сбор данных: Создаем DataFrame с данными о транзакциях.
2. Создание графа: Используем библиотеку NetworkX для создания граф.
3. Анализ структуры сети: Вычисляем степень и посредническую центральность узлов.
4. Визуализация графа: Используем Matplotlib для визуализации графа транзакций.
5. Вывод результатов: Выводим связи с высокой центральностью и соответствующие значения.
Применение.
С помощью таких методов включительно, сотрудники находят такие схемы как:
Мошенничество с кредитными картами: Обнаружение аномалий в транзакциях, таких как необычные суммы или частота операций, или нетипичная локация, или все в совокупности помогло выявить случаи несанкционированного использования карт. Например, алгоритмы кластерного анализа транзакционных данных позволяют быстро идентифицировать подозрительные активности.
AML: Используя инструменты для анализа связей транзакций, сотрудники ИБ смогли распознать сложные схемы отмывания денег, выявляя аномальные паттерны и связи между участниками.
Заключение.
Мы разобрали как ищут мошеннические схемы и операции, а так же какие инструменты можно использовать для данных мероприятий. Конечно, описанное мной в данной статье даёт лишь малое представление того, как финансовые организации вычисляют "Разбойников". Однако, даже это даст вполне не плохой старт для изучения или слздания собственных методов обработки поступающих данных с целью сохранения репутации компании и средств ваших клиентов.
До скорых встреч!