• Nenhum resultado encontrado

Philippe Beaucamps

N/A
N/A
Protected

Academic year: 2023

Share "Philippe Beaucamps"

Copied!
176
0
0

Texto

Ils simulent une page de site bancaire pour obtenir des données sensibles (phishing et tabnabbing). Ils exploitent les bugs du site en insérant un script dans le site pour se faire passer pour des utilisateurs et ainsi accéder à toutes leurs données (XSS).

Objectifs

Le premier objectif de cette thèse est donc de formaliser la détection de comportements suspects dans un contexte d'analyse statique ou dynamique. Le deuxième objectif de cette thèse est donc la formalisation de l'analyse du comportement au niveau sémantique.

Travaux existants

Dans [79], les auteurs proposent un système expert qui surveille l'exécution d'un programme à la recherche de comportements malveillants connus. Enfin, l’approche n’est là encore applicable qu’à une seule piste et exclut donc un scénario d’analyse statique.

Contributions

Dans le cas d'une interaction réseau, il peut s'agir du destinataire, des données envoyées et d'un code d'erreur. Son comportement lors de l'exécution consiste en une séquence composée d'un actionFileReader.new, d'un actionBufferedReader.new, d'une série d'actionsBufferedReader.readLine puis d'un actionBufferedReader.close.

Définitions

Fa, un ensemble fini de symboles de fonction ou de constantes, avec la signature Datan→Action,n∈N, décrivant des actions. Un automate arborescent (de haut en bas) est un quadruple A = (F, Q, q0,∆), où F est un alphabet fini, Q est un ensemble fini d'états, q0 ∈Q est un état initial et ∆ est un ensemble de règles de forme sans plus.

Ensemble de Traces d’un Programme

Dans une deuxième approche, nous définissons donc une trace d'exécution par un terme issu de l'algèbre définie dans la section 2.2. Ainsi l'alphabetΣ est désormais un sous-ensemble de l'alphabet Fa et les constantes de Fd identifient les arguments et renvoient les valeurs des appels à la bibliothèque.

Formalisation de la Détection Comportementale Classique

Ainsi, l'automate trace d'une machine M représente la modélisation de son ensemble de traces par un automate fini. Dans le cadre de nos expérimentations, nous avons donc développé un outil qui construit un traceur à partir d'un ensemble de traces d'exécution.

Figure 3.1: Exemple de construction d’un automate de traces en présence de threads.
Figure 3.1: Exemple de construction d’un automate de traces en présence de threads.

Construction par Analyse Statique

Construction d'une représentation abstraite de la mémoire du programme Nous utilisons des techniques d'analyse de forme. L'exemple suivant illustre la construction d'une représentation abstraite de la mémoire d'un programme dans un cas concret.

Figure 3.2: Exemple d’état de la représentation abstraite de la mémoire.
Figure 3.2: Exemple d’état de la représentation abstraite de la mémoire.

Exemple d’Automate de Traces (Java) : Fuite de SMS

Notons enfin que puisque l’approche d’abstraction des flux de données consiste à analyser les arguments des appels de bibliothèque sous forme d’objets manipulés par le programme, les traces construites par analyse statique sont similaires aux traces collectées par analyse dynamique. En fait, une trace collectée par analyse dynamique est une séquence d'appels à la bibliothèque dont les paramètres sont des objets gérés par le programme.

Exemple d’Automate de Traces (C) : Keylogger

Ainsi, la représentation abstraite de la mémoire prend en compte les variables du programme et les allocations dynamiques. Figure 3.6 : Keylogger : Représentation abstraite de la mémoire. décider de réutiliser l'espace alloué à un autre usage).

Figure 3.5: Fuite de SMS : Automate de traces.
Figure 3.5: Fuite de SMS : Automate de traces.

Behavior Patterns

Il contient trois modèles de comportement : envoyer une requête ping à un hôte distant, ouvrir une connexion Netbios et parcourir les disques durs locaux. Par exemple, nous pouvons définir la fonctionnalité de navigation sur le disque dur local à l'aide du modèle de comportement : {GetLogicalDriveStrings.GetDriveType. Si nous considérons la trace d'exécution suivante générée par l'extrait de code du ver Allaple.a, nous remarquons qu'elle présente le modèle de comportement précédent.

Figure 4.1: Extrait du code du ver Allaple.a.
Figure 4.1: Extrait du code du ver Allaple.a.

Abstraction de Traces

Nous étendons l'abstraction de l'ensemble de traces à l'ensemble des modèles de comportement communs et l'ensemble de traces L est maintenant normalisé par →C dans l'ensemble de traces abstrait L↓C. Lorsqu'un ensemble de traces est extrait d'un ensemble de modèles comportementaux, les détails qui n'ont pas été utilisés pour l'abstraction doivent être supprimés. L’ensemble de traces Γ-abstrait peut alors être comparé au comportement abstrait de logiciels malveillants connus ou à un comportement générique défini sur Γ.

Abstraction d’Ensembles Réguliers de Traces

Nous nous intéressons ensuite au calcul de l'ensemble des traces Γ-abstraites à partir d'un langage de traces régulier. Soit A un automate de suivi à n états et C={Bi}1≤i≤n un ensemble de modèles de comportement reconnus par SRS{RBi}1≤i≤n régulier. L'automate qui reconnaît l'ensemble des pistes Γ abstraites d'Allaple.a, pour Γ ={PING,SCAN_DRIVES}, est représenté sur la Figure 4.4.

Figure 4.2: Automate de traces de l’extrait d’Allaple.a.
Figure 4.2: Automate de traces de l’extrait d’Allaple.a.

Détection de Comportements

A noter que le patternSCAN_DRIVES, qui est présent dans l'automate de trace Γ-abstrait de l'extrait Allaple.a, n'apparaît pas ici car la signature décrit un comportement discriminant commun à tous les échantillons Allaple. Testez ensuite si l'automate résultant reconnaît que l'ensemble vide prend un temps linéaire, d'où le résultat. Un programme serait alors infecté si au moins une de ses traces contenait un modèle comportemental.

Figure 4.5: Signature d’Allaple.
Figure 4.5: Signature d’Allaple.

Expérimentations

À partir de l'analyse automatique de la piste abstraite Γ des logiciels malveillants connus, les comportements génériques peuvent être déterminés en identifiant des séquences de fonctionnalités communes à plusieurs logiciels malveillants et des caractéristiques de comportement malveillant. La figure 4.6 illustre le type de traces capturées dans le cas du virus Virut.ao. La figure 4.7 montre l'automate de trace construit par l'outil d'analyse à partir d'un ensemble de traces capturées à l'aide de l'outil de capture.

Figure 4.6: Outil de capture - Capture de traces.
Figure 4.6: Outil de capture - Capture de traces.

Conclusion

Par convention, on note tσ ou σ(t) l'application d'une instanciation σ à un terme t ∈ T(F, X) et Lσ l'application de σ à un ensemble de termes L⊆T(F, X) . Ensemble nous appelons les descendants d'un terme t (respectivement d'un ensemble de termes L) jusqu'à l'ordre n l'ensemble R≤n(t) (respectivement Siϕ est une formule FOLTL et Y ⊆X est un ensemble de variables (de l'ordre donné tapez ) , alors : ∃Y.ϕ et ∀Y.ϕ sont des formules FOLTL, où, comme d'habitude : ∀Y.ϕ≡ ¬∃Y.¬ϕ.

Behavior Patterns

Puisque A est un automate à traces et τ est un transducteur à traces, le résultat s'ensuit en analogie directe avec le cas des transducteurs de mots sur les alphabets de mots Ω et Ω� : le résultat équivalent sur les mots est montré notamment dans [87] . Supposons qu'il y ait deux constantes α et β dans Fd qui identifient les paramètres spécifiques IPPROTO_ICMP et ICMP_ECHOREQ (voir section 2.3 sur les traces d'exécution étendues). Un ping peut également être effectué à l'aide de la fonction IcmpSendEcho, dont le paramètre représente la cible du ping.

Problème de la Détection

Le comportement abstrait du ping d'un hôte distant peut alors être défini par la formule : ϕM =∃x.Fλping(x). Supposons maintenant que nous souhaitions détecter un comportement abstrait dans l’ensemble des tracesL d’un certain programme. Pour un modèle de comportement λ, soit Rλ la restriction de la relation d'abstraction R à l'abstraction par rapport à λ.

Complexité de la Détection

En notant M�� l’ensemble des n-pièces de trace M, la propriété de (m, n)-complétude peut être reformulée comme suit. Ensuite, en utilisant l’ensemble de n pistes M exposantes, nous obtenons la complexité suivante du problème de détection. Soit M un comportement abstrait régulier avec la propriété de complétude (m, n) et AM un automate arborescent qui reconnaît l'ensemble des traces présentant M par rapport à R.

Abstraction de Traces

Une relation d'abstraction par rapport à ce modèle comportemental est la relation de réduction sur TTrace(F) générée par un système d'abstraction composé de règles Ai(X) Bi(X) y→Ai(X) λ(x ) Bi(X) y vérification . Notez qu’une relation d’abstraction saine avec un ensemble de modèles de comportement n’est généralement pas convergente. Soit B un modèle de comportement et R une relation d'abstraction saine par rapport à B, définie par un système d'abstraction dont l'ensemble des instances de membres réels de ses règles est reconnu par un automate arborescent AR.

Application à la Détection d’une Fuite d’Information

De plus, puisque les données capturées doivent rester valides jusqu'à leur envoi, nous définissons un modèle de comportement λinval(x), qui représente l'invalidation de ces données. Nous supposons que l'exécution d'un hookf avec un argument x dans une trace est représentée par un actionHookCalled(f, x). Ensuite, pour prendre en compte une telle transformation des données capturées, nous adaptons la définition du comportement abstrait de fuite d'information.

Expérimentations

Par exemple, supposons que nous souhaitions transformer le tableau de traces de l'exemple précédent en insérant actione(x) après actione(x). Alors, si l’ensemble des traces L est représenté par le processus PL, l’ensemble L� = R≤2(L) est représenté par le processus suivant. Γ en synchronisant le processus représentant l'ensemble de traces L avec le processus ABSTRACT_SIG, puis nous avons validé la formule mcl représentant ϕM sur le processus résultant.

Conclusion

Un automate de trace pondéré dans F est un automate d'arbre pondéré qui connaît un langage de trace pondéré. Les transformations d'arbres de poids descendants linéaires non vides préservent la régularité [83,76] et sont fermées par union fonctionnelle et composition [83,44] . Ensuite, l’identité sur « A » est réalisée par un transducteur à arbre descendant linéaire sans balayage sans « passes » de taille O(|A|).

Abstraction Pondérée

Comme dans le formalisme d'abstraction non pondéré, nous insérons l'action abstraite TAction(FΓ) lorsque nous détectons l'occurrence d'un modèle de comportement. Une relation de réduction pondérée sur TTrace(F) générée par un système d'abstraction pondéré R sur un demi-anneau�. Une transformation pondérée sur TTrace(F) générée par un système abstrait pondéré R sur un demi-anneau.

Problème de la détection

Nous montrons maintenant que la détection d'un comportement qui possède la propriété (m, n)-complétude peut être décidée dans le cas d'une transformation d'abstraction rationnelle pondérée. Étendons la définition de la réduction à une position concrète (Définition99) à l'abstraction à une position concrète. Par conséquent, d’après la définition 86 de la transformation d’abstraction pondérée �R, nous avons dans le semi-anneau tropical, parR.

Abstraction Rationnelle

La conséquence de l’utilisation de la proposition 81 est donc un langage arborescent pondéré Ω(s) = τ(s), qui est reconnu par un automate arborescent pondéré de taille O(|τ| · |A|) =O(| A|). Restez rationnel et pour tout automate arborescent pondéré A, R(�A�) reconnaît un automate arborescent pondéré de taille O(|A| · |AR|). D’après la proposition 80, la transformation Id�AM� est effectuée par un convertisseur d’arbre pondéré de taille O(|AM|).

Conclusion

Nous avons également proposé un algorithme de détection, en temps linéaire par rapport à la taille de l'automate abstrait de la trace et à la taille de l'automate représentant la signature. Là encore, pour les comportements possédant cette propriété, nous avons proposé un algorithme de détection efficace, en temps linéaire par rapport à la taille de l'automate trace. L’approche d’analyse comportementale que nous avons présentée a de nombreuses applications, tant en termes de détection de comportement que d’analyse de programmes.

Perspectives

In Proceedings of the 8th Asian conference on programming languages ​​and systems, APLAS'10, pages 188–203, Berlin, Heidelberg, 2010. 256, New York, NY, USA, 1979. In Proceedings of Sixth Annual Workshop on Cyber Security and Information Intelligence Research, CSIIRW '10, page New York, NY, USA, 2010.

Imagem

Figure 3.1: Exemple de construction d’un automate de traces en présence de threads.
Figure 3.2: Exemple d’état de la représentation abstraite de la mémoire.
Figure 3.3: Fuite de SMS : Représentation abstraite de la mémoire.
Figure 3.4: Fuite de SMS : État de la représentation abstraite de la mémoire.
+7

Referências

Documentos relacionados

Nous calculons ainsi le cycle de synchronisation selon le type du nœud avec les relations suivantes: V.1 V.2 Dans cette configuration, nos objectifs sont:  De vérifier que la