Cet article expose la mise en oeuvre du leurrage dans un but de renseignement sur les attaquants (outils et méthodes). Le réalisme du honeypot sous-jacent ainsi que la méthodologie d'extraction des données résultantes sont deux points critiques. Les auteurs présentent la plate-forme développée par AMOSSYS, les choix techniques opérés pour traiter au mieux les deux aspects précités, ainsi que des résultats d'expérimentation.
Understanding data distributions is one of the most fundamentalresearch topic in data analysis. The literature provides a great dealof powerful statistical learning algorithms to gain knowledge onthe underlying distribution given multivariate observations. We arelikely to find out a dependence between features, the appearanceof clusters or the presence of outliers. Before such deep investi-gations, we propose the folding test of unimodality. As a simplestatistical description, it allows to detect whether data are gatheredor not (unimodal or multimodal). To the best of our knowledge,this is the firstmultivariate and purely statisticalunimodality test.It makes no distribution assumption and relies only on a straight-forwardp−value. Through real world data experiments, we showits relevance and how it could be useful for clustering.
Le
langage C++ s'est imposé comme une référence dans les domaines où la
modularité du développement ne doit pas empiéter sur les performances du
logiciel final. Les principaux navigateurs, les interpréteurs et même
certaines parties du système d'exploitation de Microsoft utilisent le
langage C++.
L'étude des bases de données de vulnérabilités montre
que ces logiciels sont sujets à une catégorie de vulnérabilités
particulières, les confusions de type, qui sont tout aussi exploitables
que les vulnérabilités plus connues.
Cet article présente les mécanismes à l'origine des confusions de type et dresse un état de l'art des méthodes servant à les détecter dans du code source ou du binaire seul. Il met aussi en avant les principales difficultés que rencontrent les analyses de binaire, et propose les grandes lignes d'une nouvelle approche pour détecter des confusions de type dans du binaire.
Verification of software security properties, when conducted at the binary code level, is a difficult and cumbersome task. This paper is focused on the reverse engineering task that needs to be performed prior to any thorough analysis. A previous line of work has been dedicated to the identification of cryptographic primitives. Relying on the techniques that have been proposed, we devise a semi-automated solution to identify modes of operation. Our solution produces a concise representation of the data transfers occurring within a cryptographic scheme. Inspired by program slicing techniques, we extract from a dynamic data flow a slice defined as the smallest subgraph that is distance preserving for the set of cryptographic parameters. We apply our solution to several modes of operation including CBC, CTR, HMAC and OCB. For each of them, we successfully obtain a complete and readable representation. Moreover, we show with an example that our solution can be applied on non standard schemes to quickly discover security flaw.
Depuis le début du premier semestre 2016, six CVE permettant l'exécution de code arbitraire ont été déposées. Ces CVE ont toutes en commun l'exploitation d'une vulnérabilité encore peu considérée la confusion de type. Elle peut, pourtant, à elle seule outrepasser les sécurités actuelles et mener à l'exploitation. Cette vulnérabilité correspond à la manipulation d'objets C++ d'une façon incompatible avec leur type réel. Son origine réside dans la mauvaise utilisation des opérateurs de conversions. Or, ces opérations sont courantes dans les logiciels où la programmation orientée objet et le polymorphisme ont une place importante. Cet article, rédigé par notre collaborateur Florent SAUDEL à l'occasion du SSTIC 2016, présente plus en détail l'origine de cette vulnérabilité et les mécanismes bas niveaux à l'origine de son exploitabilité.
Le choix de Java est souvent guidé par la sécurité qu'il est
censé apporter. La plate-forme d'exécution Java assure en effet des
propriétés de sécurité permettant notamment de se prémunir contre
l'exploitation
de la mémoire. Toutefois, de nombreuses vulnérabilités publiques
concernent Java, notamment sa bibliothèque standard.
- Qu'en est-il donc
de l'apport de Java en termes de sécurité ?
- Quelles sont ses faiblesses ?
- Quelles améliorations sont envisageables ?
Cet article tente de répondre
à
ces questions. Il décrit tout d'abord les différents composants de la
plateforme
d'exécution Java en détaillant les mécanismes de sécurité offerts et
les propriétés garanties. Il analyse ensuite les différentes faiblesses
de ces
composants et propose enfin des pistes pour l'amélioration de la
sécurité
de la plate-forme.
AMOSSYS a présenté ses travaux sur la modélisation et simulation du canal de communication d'un botnet pour l'évaluation des systèmes de détection d'intrusion réseau.
We will present Netzob, an Open Source tool, and show how it helps to
semi-automatically reverse undocumented communication protocols (USB,
Network, IPC, ...). It leverages bio-informatic, automata theory and
data dependencies algorithms to infer both the message format and the
state machine of a protocol. Most of these algorithms were
re-implemented from scratch which allowed us to customize their
specifications regarding our needs. These algorithms will be
pedagogically explained and their uses for RE purposes will be detailed.
We will also expose the methodology to generate contextualized
communications based on the obtained specifications. Hence, the provided
simulation module allows the creation of realists servers and clients in
a controllable manner.
En informatique de confiance, le mécanisme d'attestation distante permet à un logiciel de prouver son intégrité à une entité
tierce. Cette entité est alors particulièrement sensible car elle contient les données de référence qui permettent de valider ou
d’inférer l’intégrité du logiciel mesuré. Le principe de ses travaux est donc d’offrir à l’utilisateur la possibilité de baser sa confiance sur une entité qui ne quitte que rarement la poche de son propriétaire : son smartphone. Contrairement aux solutions classiques d’attestation d’intégrité, l’architecture proposée est dépendante d’aucune infrastructure de confiance sur le réseau et repose sur le simple branchement par USB de son téléphone à un poste utilisateur. Pour cela, nous avons utilisé un téléphone Android afin d'attester de l'intégrité d'une plateforme Debian disposant d'une puce TPM1. La preuve de concept développée consiste à se baser sur le mécanisme de tethering USB proposé par Android, ainsi que sur la solution de sources libres OpenPTS.
Softwares use cryptographic algorithms to secure their communications and to protect their internal data. However the algorithm choice, its implementation design and the generation methods of its input parameters may have dramatic consequences on the security of the data it was initially supposed to protect. Therefore to assess the security of a binary program involving cryptography, analysts need to check that none of these points will cause a system vulnerability. It implies, as a first step, to precisely identify and locate the cryptographic code in the binary program. Since binary analysis is a difficult and cumbersome task, it is interesting to devise a method to automatically retrieve cryptographic primitives and their parameters.
In this paper, we present a novel approach to automatically identify symmetric cryptographic algorithms and their parameters inside binary code. Our approach is static and based on DFG (Data Flow Graph) isomorphism. To cope with binary codes produced from different source codes and by different compilers and options, the DFGs is normalized using code rewrite mechanisms. Our approach differs from previous works, that either use statistical criteria leading to imprecise results, or rely on heavy dynamic instrumentation. To validate our approach, we present experimental results on a set of synthetic samples including several cryptographic algorithms, binary code of well-known cryptographic libraries and reference source implementation compiled using different compilers and options.
Après avoir rappelé l'historique du "Trusted Computing", cette
conférence présente l'apport que peuvent avoir les technologies
d'informatique de confiance dans le monde du logiciel libre.
Les dernières évolutions matérielles et logicielles sont détaillées
(technologie TPM et Intel TXT / AMD SVM) et une analyse en terme
d'usage est réalisée.
AMOSSYS a présenté un état des lieux de l’informatique de confiance.
Dans cet article, nous présentons Netzob, un outil libre de rétro-conception semi-automatisée de protocoles de communication. Netzob est destiné à répondre à différents cas d'applications (analyse de sécurité, génération de trafic réaliste, interopérabilité, etc.) où la compréhension d'un protocole propriétaire ou non documenté est primordiale.
Netzob s'appuie principalement sur des algorithmes issus des domaines de la bio-informatique et de la théorie des automates. Il propose également un module de simulation de trafic, permettant ainsi la génération de flux de communication réalistes issus de l'inférence de protocoles dont la spécification est inconnue.
L'article d'AMOSSYS présente la démarche CSPN. Pour rappel, ce type d'évaluation (promue par l'ANSSI, autorité de tutelle du CESTI AMOSSYS) consiste à évaluer et analyser une cible d'évaluation en temps contraint.
Après avoir introduit le schéma CSPN, l'auteur de l'article démontre que ce type d'évaluation est complémentaire à une démarche d'évaluation Critères Communs et peut être vue comme une étape préliminaire à cette dernière qui est plus coûteuse en temps et en investissement.
Dans cet article, nous présentons une méthodologie pour disséquer sur le vif, un protocole de communication. Promis, pas de copie d’écrans d’IDA ni d’OllyDbg, et à l’inverse pas de formule mathématique. Pour être précis, ici on dissèque des protocoles inconnus en Python avec « son Netzob et son couteau ».
Network security products, such as NIDS or application firewalls, tend to focus on application level communication flows. However, adding support for new proprietary and often undocumented protocols, implies the reverse engineering of these protocols. Currently, this task is performed manually. Considering the difficulty and time needed for manual reverse engineering of protocols, one can easily understand the importance of automating this task. This is even given more significance in today's cybersecurity context where reaction time and automated adaptation become a priority. Several studies were carried out to infer protocol's specifications from traces. As shown in this article, they do not provide accurate results on complex protocols and are often not applicable in an operational context to provide parsers or traffic generators, some key indicators of the quality of obtained specifications. In addition, too few previous works have resulted in the publication of tools that would allow the scientific community to experimentally validate and compare the different approaches. In this paper, we infer the specifications out of complex protocols by means of an automated approach and novel techniques. Based on communication traces, we reverse the vocabulary of a protocol by considering embedded contextual information. We also use this information to improve message clustering and to enhance the identification of fields boundaries. We then show the viability of our approach through a comparative study including our reimplementation of three other state-of-the-art approaches (ASAP, Discoverer and ScriptGen).
L’exposé présentait les résultats des travaux de thèse de doctorat de
l’expert. Celui-ci a été amené à proposer une solution de détection
d’intrusions paramétrée par la politique de sécurité et s’appuyant sur
le contrôle des flux d’information du système à différents niveaux (au
niveau OS et au sein des applicatifs Java).
L’article présente
l’architecture proposée et les résultats obtenus à l’aide d’un prototype
de système de détection d’intrusions réalisé par l’expert d’AMOSSYS. Ce
prototype s’appuie sur une modification du noyau Linux et sur
l’instrumentation à la volée des applications Java.
AMOSSYS a été invité à présenter le résultat de ses travaux sur les TPM (Trusted Platform Module) :
Cet article à vocation prospective dresse un panorama des
atouts et limites de l'informatique de confiance pour la réalisation d'une
architecture de sécurité sur une plateforme PC.
L'étude met en évidence
deux problèmes de positionnement majeurs :
- une adéquation imprécise
vis-à-vis des besoins des différents marchés ;
- le manque de clarté
sur le positionnement du TPM relativement aux technologies concurrentes.
L'article montre que la couverture de nouveaux besoins liés à
l'intégrité et la confidentialité d'exécution nécessiterait soit une adaptation
du TPM (transformation vers un crypto-processeur, voire un processeur
sécurisé), soit l'utilisation de technologies complémentaires telles
que la virtualisation.
AMOSSYS a présenté ses retours d'expériences sur l'évaluation/certification de produits de sécurité en temps contraint - le schéma d'évaluation technique CSPN de l'ANSSI.
During CC evaluations, experts may face proprietary hardware or software
interfaces. Understanding, validating and testing these interfaces
require important time and resources. To limit associated costs, a
dynamic analysis approach appears more suitable, but currently lacks of
efficient tools.
We introduce Netzob, a tool that allows dynamic analysis of proprietary
protocols. It first permits to avoid manual learning of a protocol
thanks to a semi-automatized modelization approach. It leverages passive
and active algorithms on observed communications to build a model. This
model can afterward be used to measure the conformity of an
implementation against its provided specification. For instance, Netzob
allows to learn message formats and state machine of protocols, and thus
to identify deviations with the documentation. Moreover, Netzob can
combine any learned models with its traffic generator to apply targeted
variations on message formats and sequences. In the context of AVA_VAN,
Netzob therefore permits efficient robustness analysis of protocol
implementations.
Have you ever been staring for nights at binary or hexadecimal data
flows extracted from an USB channel ? Don't you remember yourself
searching for some patterns and similarities in this mess of zeros and
ones grabbed from a binary configuration file ? How long did it take you
to find an 16bits decimal size field last time you reversed an IPC
communication protocol ?
Did you know you were not alone and that among them, Rob Savoye (@
FOSDEM-08) and Drew Fisher (@ 28C3) have already reported the main
difficulties of the RE operations. Both of them called for the creation
of a tool which would help experts in their work.
After 2 years of intensive researches, we are pleased to present our
results. A tool that facilitates the analysis of binary flows, finds
relations between segments of data, deduces data types and formats,
infers the state machine and other few little things, including fuzzing
and simulating implementations of undocumented protocols.
Released under GPLv3, Netzob is (to our knowledge) the most advanced
available tool that helps reversers and security evaluators/auditors in
their work on undocumented protocols.
Android est aujourd'hui le système d'exploitation sur mobiles le plus répandu du marché, ce qui en a fait une cible de choix pour les applications malveillantes. Afin de parer celles-ci, l'OS de Google se base principalement sur un système de permissions: un utilisateur doit valider les permissions demandées par une application avant son installation. Ce modèle présente cependant une faiblesse particulièrement gênante : le besoin de l'utilisateur. En effet, il est difficile de refuser l'installation d'une application à partir du moment où l'utilisateur en a besoin, même si celle-ci demande des droits injustifiés. Il existe donc a priori le besoin d'une base de connaissances publique permettant de comprendre si l'application que l'on souhaite installer pose un problème de sécurité. Dans cet article, nous proposons une solution d'analyse automatisée de markets Android : Hooker. Celle-ci permet d'identifier les événements sensibles intervenants sur un système Android et de les centraliser au sein d’une base de données dédiée. Le traitement de ces informations et la présentation des résultats effectuée de manière intelligente permet, au final, de réaliser des analyses tant microscopiques que macroscopiques. La première se concentre sur le fonctionnement d'une application en particulier; la seconde sur la recherche de comportements similaires à un ensemble d’applications et donc potentiellement à un market entier.