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.
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.
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).
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.
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.
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.
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.
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.