Как "Казаки" паттерны мошенников-"Разбойников" вычисляют, вооружаясь технологиями.

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: Скопировать в буфер обмена
Код:
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: Используя инструменты для анализа связей транзакций, сотрудники ИБ смогли распознать сложные схемы отмывания денег, выявляя аномальные паттерны и связи между участниками.

Заключение.
Мы разобрали как ищут мошеннические схемы и операции, а так же какие инструменты можно использовать для данных мероприятий. Конечно, описанное мной в данной статье даёт лишь малое представление того, как финансовые организации вычисляют "Разбойников". Однако, даже это даст вполне не плохой старт для изучения или слздания собственных методов обработки поступающих данных с целью сохранения репутации компании и средств ваших клиентов.
До скорых встреч!
 
Сверху Снизу