Artificial Intelligence and Machine Learning Blogs
Explore AI and ML blogs. Discover use cases, advancements, and the transformative potential of AI for businesses. Stay informed of trends and applications.
cancel
Showing results for 
Search instead for 
Did you mean: 
AndersonOliveir
Advisor
Advisor
In an era where cybersecurity threats, especially phishing, are becoming increasingly prevalent, it's crucial to understand both the strengths and limitations of machine learning tools in protecting our digital environment. SAP Labs France, in collaboration with the "Maison de l’Intelligence Artificielle," aims to heighten awareness on these topics. To achieve this, we've launched a challenge designed to help individuals identify malicious emails using AI.

Given the limited data available, we opted for few-shot learning. This approach showcases that even with a handful of examples, one can derive significant insights. This blog post delves into how we use this technique to distinguish French emails as either phishing attempts or legitimate messages. And here's the unique aspect: our model not only classifies but also explains its decisions, offering users a deeper understanding of why an email might be flagged as suspicious.


Our Kakemono at the MIA



Addressing the Dataset Deficit


Before delving into the technicalities, it's essential to grasp the core challenge we faced. There is a notable lack of open-source datasets for phishing emails in French. This absence hinders the development of models tailored to protect French-speaking users. Nevertheless, by harnessing few-shot learning and synthetic data generation, we've charted a novel course. We began by instructing ChatGPT to produce phishing examples, employing various prompts, one of which includes:
"Create examples of benign and phishing emails in French. Produce an array of python tuples containing a pair of items for each different example. The first item is the phishing email, the second item of the pair is an explanation why that sample belongs to either class. The email message must be a single string, without line breaks. It contains the sender, the subject, and the message text. The message that may contain URLs. Include real URLs related to the legitimate senders of the benign emails. Use malicious URLs for the phishing samples. Include real organisations from France in the samples, like companies, e-commerce websites, S&P 500 companies, and social media. Mind to use very clear split in vocabulary for phishing and for legitimate emails. The explanation starts with the class, and has a single sentence focusing on the email features. Generate at least 20 examples."

Clearly, the output didn't include any actual malicious URLs. This is because ChatGPT's output filtering effectively sanitized the generated samples. Below are a few examples:

examples = [
(
"De: support@paypal.fr\nSujet: Votre compte PayPal a été mis à jour\nCher utilisateur,\nNous vous informons que votre compte PayPal a été mis à jour avec succès. Si vous avez des questions ou des préoccupations, n'hésitez pas à nous contacter.\nCordialement,\nL'équipe PayPal",
"benin",
"Ceci est un exemple d'email inoffensif (benin). Le message provient d'une adresse email légitime (support@paypal.fr) et informe l'utilisateur que son compte PayPal a été mis à jour. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes ou de demandes d'informations sensibles."
),
(
"De: info@votreecole.fr\nSujet: Inscription aux cours de langues\nCher parent,\nNous vous rappelons que les inscriptions aux cours de langues pour la prochaine session sont maintenant ouvertes. Veuillez vous rendre sur notre site web officiel pour plus d'informations et pour inscrire votre enfant.\nCordialement,\nL'équipe de Votre École",
"benin",
"Ceci est un exemple d'email inoffensif (benin). Le message provient d'une adresse email légitime (info@votreecole.fr) et informe les parents des inscriptions aux cours de langues. Le message redirige les destinataires vers le site web officiel de l'école pour obtenir plus d'informations et procéder à l'inscription. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: securite@banquefrance.fr\nSujet: Urgent - Vérification de sécurité requise\nCher client,\nNous avons détecté une activité suspecte sur votre compte bancaire. Pour protéger votre compte et éviter tout accès non autorisé, nous vous demandons de vérifier vos informations de sécurité en cliquant sur le lien suivant : https://www.phishingurl.com\nCordialement,\nBanque de France",
"phishing",
"Ceci est un exemple d'email de phishing. Le message prétend provenir d'une adresse email légitime (securite@banquefrance.fr), mais il contient des caractéristiques typiques de phishing, notamment en signalant une activité suspecte sur le compte bancaire du destinataire et en le redirigeant vers une URL suspecte (https://www.phishingurl.com) au lieu du site officiel de la Banque de France. Le langage utilisé peut sembler alarmant et incite le destinataire à cliquer sur le lien pour fournir des informations sensibles."
),
(
"De: support@impots.gouv.fr\nSujet: Remboursement d'impôts\nCher contribuable,\nNous avons le plaisir de vous informer que vous avez droit à un remboursement d'impôts. Veuillez cliquer sur le lien suivant pour finaliser le processus de remboursement : https://www.phishingurl.com\nCordialement,\nService des Impôts",
"phishing",
"Ceci est un exemple d'email de phishing. Le message prétend provenir d'une adresse email légitime (support@impots.gouv.fr) et informe le destinataire qu'il a droit à un remboursement d'impôts. Cependant, le message contient une demande de cliquer sur un lien suspect (https://www.phishingurl.com) pour finaliser le processus de remboursement, au lieu de fournir des instructions claires ou de rediriger vers le site officiel du service des impôts. Le langage utilisé peut sembler incitatif et cherche à inciter le destinataire à fournir des informations sensibles en cliquant sur le lien."
),
...

]


To enhance the realism of the samples, we merged the generated ones with actual malicious URLs, of which many datasets are readily available online. While this might sound like a tedious task, few-shot learning simplifies the process. By manually adjusting just a handful of samples, we can achieve satisfactory performance for our educational objectives.

The Training Loop and Its Nuances


We employed the T5 (Text-to-Text Transfer Transformer) pre-trained model in this project. T5 casts any NLP task as a text generation problem, making it highly versatile. In this case, it's not just classifying emails as phishing or harmless, but also providing a detailed description, which can be highly informative for end-users.

The model is initialized with weights from the t5-base pretrained model. This means it benefits from knowledge gained from vast amounts of data during its pre-training phase. Transfer learning generally results in faster convergence and better generalization. The approach was based on this blog post.

T5, like other transformer models, employs a multi-head self-attention mechanism. This allows it to focus on different parts of an input text when generating output. For phishing detection, this is crucial as the model can pay attention to suspicious phrases or patterns within emails.

The heart of our model's learning is encapsulated in the training loop. Each iteration refines the model's understanding of phishing versus legitimate emails. Here are some key points:

  1. Data Initialization:

    • The tuples list contains several email samples. Each tuple in the list consists of:

      • An email message.

      • A label indicating if the email is "Inoffensif" (Harmless) or "phishing".

      • A detailed description of the email.



    • The model is being trained to generate the detailed description based on the email message.



  2. Data: The dataset comprises only 14 email samples with corresponding labels and descriptions.

  3. Training: The core of the code is the training loop. Here, the model undergoes 20 epochs of training. For each email, it tokenizes the input, predicts the description, computes the loss, and updates its weights accordingly.


# Import necessary libraries
import random
import pandas as pd
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader

from transformers import (
AdamW,
T5ForConditionalGeneration,
T5Tokenizer,
get_linear_schedule_with_warmup
)

# Set random seeds for reproducibility
def set_seed(seed):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)

set_seed(42)

# Check for GPU availability and set the device accordingly
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Initialize the T5 tokenizer and model using pretrained weights from 't5-base'
tokenizer = T5Tokenizer.from_pretrained('t5-base')
t5_model = T5ForConditionalGeneration.from_pretrained('t5-base').to(device)

# Configure the AdamW optimizer with specific parameters
no_decay = ["bias", "LayerNorm.weight"]
optimizer_grouped_parameters = [
{
"params": [p for n, p in t5_model.named_parameters() if not any(nd in n for nd in no_decay)],
"weight_decay": 0.0,
},
{
"params": [p for n, p in t5_model.named_parameters() if any(nd in n for nd in no_decay)],
"weight_decay": 0.0,
},
]
optimizer = AdamW(optimizer_grouped_parameters, lr=3e-4, eps=1e-8)

# Sample email messages for training, each with a message, label, and detailed description
tuples = [
[
(
"De: contact@laposte.fr\nSujet: Votre colis est en route\nCher client,\nVotre colis a été expédié et est en route vers votre adresse de livraison. Vous pouvez suivre l'état de livraison en utilisant le numéro de suivi suivant : 123456789.\nCordialement,\nL'équipe La Poste",
"Inoffensif",
"Inoffensif. Le message informe le destinataire que son colis a été expédié. Le message fournit un numéro de suivi permettant de suivre l'état de la livraison. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes. Le message ne contient aucun lien web."
),
(
"De: support@orange.fr\nSujet: Promotion spéciale pour les abonnés\nCher abonné,\nNous avons le plaisir de vous informer d'une promotion spéciale réservée exclusivement aux abonnés Orange. Veuillez vous rendre sur notre site web pour plus de détails : https://www.orange.fr/promotion\nCordialement,\nL'équipe Orange",
"Inoffensif",
"Inoffensif. Le message informe les abonnés d'Orange d'une promotion spéciale. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: info@airfrance.fr\nSujet: Réservation confirmée - Votre vol AF123\nCher(e) passager(e),\nVotre réservation pour le vol AF123 a été confirmée. Veuillez consulter les détails de votre vol sur notre site web : https://www.airfrance.fr\nCordialement,\nAir France",
"Inoffensif",
"Inoffensif. Le message confirme la réservation d'un vol (AF123) pour le destinataire. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: info@unicef.fr\nSujet: Appel aux dons pour les enfants défavorisés\nCher donateur,\nNous lançons une campagne d'appel aux dons pour soutenir les enfants défavorisés. Votre contribution peut faire une réelle différence dans la vie de ces enfants. Veuillez visiter notre site web pour faire un don : https://www.unicef.fr/don\nMerci pour votre soutien.\nCordialement,\nUNICEF France",
"Inoffensif",
"Inoffensif. Le message fait appel aux dons pour soutenir les enfants défavorisés. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: contact@booking.com\nSujet: Confirmation de réservation\nCher(e) client(e),\nVotre réservation pour l'hôtel XYZ a été confirmée. Veuillez consulter les détails de votre réservation sur notre site web : https://www.booking.com\nCordialement,\nÉquipe Booking.com",
"Inoffensif",
"Inoffensif. Le message confirme la réservation d'un hôtel (XYZ) pour le destinataire. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: support@orange.fr\nSujet: Maintenance du réseau\nCher(e) client(e),\nNous effectuerons une maintenance sur notre réseau. Pendant cette période, vous pouvez rencontrer des interruptions temporaires des services. Nous nous excusons pour les désagréments occasionnés.\nCordialement,\nService client Orange",
"Inoffensif",
"Inoffensif. Le message informe les clients d'Orange sur une maintenance à venir sur leur réseau. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes. Le message ne contient aucun lien web."
),
(
"De: info@lacoste.fr\nSujet: Votre code de réduction exclusif\nCher(e) client(e),\nVoici votre code de réduction exclusif pour votre prochain achat chez Lacoste : CODE123. Utilisez ce code lors de votre commande sur notre site web : https://www.lacoste.fr\nCordialement,\nÉquipe Lacoste",
"Inoffensif",
"Inoffensif. Le message offre un code de réduction exclusif pour les clients de Lacoste. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: support@linkedin.fr\nSujet: Nouvelle demande de connexion\nCher(e) utilisateur/trice,\nVous avez reçu une nouvelle demande de connexion sur LinkedIn. Connectez-vous à votre compte pour accepter ou refuser la demande : https://www.linkedin.fr\nCordialement,\nÉquipe LinkedIn",
"Inoffensif",
"Inoffensif. Le message informe les utilisateurs de LinkedIn qu'ils ont reçu une nouvelle demande de connexion. Le langage utilisé est professionnel et ne présente pas de caractéristiques suspectes."
),
(
"De: support@impots.gouv.fr\nSujet: Remboursement d'impôts\nCher contribuable,\nNous avons le plaisir de vous informer que vous avez droit à un remboursement d'impôts. Veuillez cliquer sur le lien suivant pour finaliser le processus de remboursement : https://tinyurl.com/btdk39c\nCordialement,\nService des Impôts",
"phishing",
"Phishing. Le message informe le destinataire qu'il a droit à un remboursement d'impôts. Cependant, le message contient une demande de cliquer sur un lien suspect (https://tinyurl.com/btdk39c) pour finaliser le processus de remboursement. Le langage utilisé cherche à inciter le destinataire à fournir des informations sensibles en cliquant sur le lien."
),
(
"De: serviceclient@credit-agricole.fr\nSujet: Mise à jour obligatoire de vos informations\nCher client,\nPour des raisons de sécurité, nous vous demandons de mettre à jour vos informations bancaires en cliquant sur le lien suivant : https://www.creditagricole.fr.wpjsvx0ljnxvxd5pnczgk3olpztff9uzs7egwrv1gcepixsc355ujwinqirag9.adityac... de votre coopération.\nCordialement,\nCrédit Agricole",
"phishing",
"Phishing. Le message contient des caractéristiques typiques de phishing en demandant une mise à jour obligatoire des informations bancaires du destinataire via un lien suspect (https://www.creditagricole.fr.wpjsvx0ljnxvxd5pnczgk3olpztff9uzs7egwrv1gcepixsc355ujwinqirag9.adityacalibrationservice.com). Le langage utilisé cherche à inciter le destinataire à fournir des informations sensibles en cliquant sur le lien."
),
(
"De: serviceclient@paypal.fr\nSujet: Avis important concernant votre compte PayPal\nCher(e) client(e),\nNous avons détecté une activité suspecte sur votre compte PayPal. Veuillez vous connecter à votre compte pour plus d'informations : https://vvww.paypal.fr-----vldfgifeq7dua2hckj.net/webscr.php?cmd=_login-run&dispatch=5885d80a13c0db1... client PayPal",
"phishing",
"Phishing. Le message contient des caractéristiques typiques de phishing en indiquant une activité suspecte sur le compte du destinataire et en redirigeant vers une URL suspecte (https://vvww.paypal.fr-----vldfgifeq7dua2hckj.net/webscr.php?cmd=_login-run&dispatch=5885d80a13c0db1f1ff80d546411d7f8a8350c132bc41e0934cfc023d4e8f9e5348f0abb68a0357a8661323d6b2fc2b4348f0abb68a0357a8661323d6b2fc2b4). Le langage utilisé peut sembler urgent et incite le destinataire à se connecter pour plus d'informations."
),
(
"De: securite@caissedepargne.fr\nSujet: Vérification de votre compte\nCher(e) client(e),\nNous procédons à une vérification de sécurité de votre compte Caisse d'Épargne. Veuillez cliquer sur le lien suivant pour continuer : https://www.emailformwizard.com/form.php?id=caisseepargnefr\nCordialement,\nService de sécurité Caisse d'Épargne",
"phishing",
"Phishing. Le message contient des caractéristiques typiques de phishing en indiquant une vérification de sécurité du compte du destinataire et en redirigeant vers une URL suspecte (https://www.emailformwizard.com/form.php?id=caisseepargnefr). Le langage utilisé incite le destinataire à cliquer sur le lien pour fournir des informations sensibles."
),
(
"De: securite@paypal.fr\nSujet: Action requise - Votre compte est suspendu\nCher utilisateur,\nNous avons temporairement suspendu votre compte PayPal en raison d'une activité suspecte. Pour réactiver votre compte, veuillez cliquer sur le lien suivant et confirmer vos informations : https://wmember.paypal.com.cgi.bin.webscr.cmd.flow.session.lohzumu98pjkwkwudgtj3ie6btlub.online77588... de sécurité PayPal",
"phishing",
"Phishing. Le message contient des caractéristiques typiques de phishing en signalant la suspension du compte PayPal du destinataire en raison d'une activité suspecte et en redirigeant vers une URL suspecte (https://member.paypal.com.cgi.bin.webscr.cmd.flow.session.lohzumu98pjkwkwudgtj3ie6btlub.online775885d80a13c0db1f8e263663d3faee8d43b1bb6ca3ufquez.craftycarlos.com/e69373d909ae778218b770b4b62b175a/). Le langage utilisé peut sembler urgent et incite le destinataire à cliquer sur le lien pour fournir des informations sensibles."
),
(
"De: securite@bnp-paribas.fr\nSujet: Votre compte BNP Paribas nécessite une mise à jour\nCher(e) client(e),\nNous avons remarqué une activité inhabituelle sur votre compte BNP Paribas. Veuillez mettre à jour votre compte en suivant ce lien : https://www.bnp-paribas-securite.fr/mise-a-jour\nCordialement,\nService de sécurité BNP Paribas",
"phishing",
"Phishing. Le message contient une URL suspecte (https://www.bnp-paribas-securite.fr/mise-a-jour) qui peut tromper les destinataires en pensant qu'il s'agit du site officiel de BNP Paribas. Le message demande aux destinataires de mettre à jour leur compte en suivant le lien, ce qui est une tactique courante utilisée par les attaquants pour voler des informations sensibles."
),
]

]

# Move the model to the GPU if available
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
t5_model.to(device)

# Set the model to training mode
t5_model.train()

# Training configuration
epochs = 20
max_length=256

# Training loop
for epoch in range(epochs):
print("epoch ", epoch)
for input, label, output in tuples:
# Prefix the input with "classify:" and tokenize both input and output
input_sent = "classify: " + input + " </s>"
output_sent = output + " </s>"
tokenized_inp = tokenizer.encode_plus(input_sent, max_length=max_length, pad_to_max_length=True, return_tensors="pt")
tokenized_output = tokenizer.encode_plus(output_sent, max_length=max_length, pad_to_max_length=True, return_tensors="pt")

# Move tokenized data to the chosen device
input_ids = tokenized_inp["input_ids"].to(device)
attention_mask = tokenized_inp["attention_mask"].to(device)
lm_labels = tokenized_output["input_ids"].to(device)
decoder_attention_mask = tokenized_output["attention_mask"].to(device)

# Forward pass: compute predictions and loss
output = t5_model(input_ids=input_ids, lm_labels=lm_labels, decoder_attention_mask=decoder_attention_mask,
attention_mask=attention_mask)
loss = output[0]
print("Loss: ", loss.item())

# Backward pass: compute gradients and update model parameters
loss.backward()
optimizer.step()
optimizer.zero_grad()

 

To sum it up, the goal is to fine-tune the T5 model to generate in-depth descriptions of emails, helping in distinguishing benign emails from potential phishing threats. The detailed descriptions generated by the model can serve as a form of interpretability. Users can better understand why a certain email was flagged, which can help in building trust in the system.

Some drawbacks of this approach are worth mentioning:

  1. Computational Requirements:

    • Training transformer models like T5 can be computationally intensive. They often require powerful GPUs or TPUs, especially for larger datasets. This can make it inaccessible for those without the necessary hardware resources.



  2. Model Size:

    • T5 models, especially the larger variants, can have hundreds of millions of parameters. This can make deployment challenging, especially in resource-constrained environments like mobile devices.



  3. Overfitting:

    • Given the model's complexity and the relatively small dataset (as seen in the code), there's a risk of overfitting. The model might perform exceptionally well on the training data but might fail to generalize to unseen phishing patterns.



  4. Sensitivity to Adversarial Attacks:

    • Deep learning models, including T5, can be sensitive to adversarial attacks. Craftily designed phishing emails with slight alterations might bypass the model's detection mechanisms.



  5. Dependency on Predefined Prefix:

    • The model's behavior is conditioned on a predefined prefix (e.g., "classify:"). If the prefix is changed or omitted, the model might not perform as expected. This dependency can be seen as a limitation.




 

In Conclusion


In conclusion, the T5 model's architecture, combined with its training strategy, makes it a powerful tool for phishing awareness. Its capability to provide detailed insights rather than simple classifications can play a significant role in educating users about the intricacies of phishing attempts.

Join Us for a Live Experience!


For those intrigued, this entire demonstration will be showcased at the Maison de l'Intelligence Artificielle. Witness the confluence of AI, cybersecurity, and the challenge of working with limited data!

Acknowledgements


There were many colleagues who contributed with work and/or ideas and throughout the many versions of this demonstrator: Aswhin Tanjore Shyamsundar, Magali Seguran, Sylvie Quillier, Imen Chebi, Anthony Bacchieri, Gwendoline Tabourin, Lucile Ortola, Axelle Choisy, Olena Kushakovska, Aline Senart, Michele Bezzi, Biaggio Montarulli, Khawla Mallat, Nicolas Petralia.
1 Comment