Catégorie : Réseau

18 mai 2017 /

Voici comment détecter rapidement les machines vulnérable à l’exploit WannaCry grâce à Nmap (version 7 minimum) et  du plugin associé à l’exploit : smb-vuln-ms17-010.nse.

Vous pouvez vérifié votre version de Nmap avec la commande suivante:

nmap -V

Nmap version 5.51 ( http://nmap.org )

Si vous avez une version inférieur à la 7, il faudra compiler Nmap à partir de la dernière version disponible (nmap-7.40.tar.bz2 actuellement).

cd /usr/share/
wget https://nmap.org/dist/nmap-7.40.tar.bz2
bzip2 -cd nmap-7.40.tar.bz2 | tar xvf -
cd nmap-7.40
./configure
make
make install

Maintenant que Nmap est installé et en version au moins égale à la 7.4, nous allons installer le plugin nécessaire pour identifier les machines vulnérable à Wannacry.

Pour cela nous devons trouver le répertoire contenant les scripts Nmap, vous pouvez pour cela vous aider de cette commande:

locate -i *.nse

ou

locate -i nmap | grep -i script

Une fois trouvé, on se rend dedans et on télécharge le plugin:

cd /usr/share/nmap-7.40/scripts/
wget https://raw.githubusercontent.com/cldrn/nmap-nse-scripts/master/scripts/smb-vuln-ms17-010.nse

On met à jour la base de donnée de Nmap:

cd /usr/share/nmap-7.40/
./nmap --script-updatedb

Pour scanner une machine en 192.168.0.33 et générer le résultat dans un fichier HTLM:

./nmap -sC -p 445 --script smb-vuln-ms17-010.nse 192.168.0.33 -oX scan.xml && xsltproc scan.xml -o "wannacry_192.168.0.33_`date +%d%m%y`.html"

 

On peut ensuite consulter le fichier HTML contenant rapport généré par Nmap:

 

 

Pour scanner le réseau 192.168.0.0/24 et générer le résultat dans un fichier HTLM:

./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse 192.168.0.0/24 -oX scan.xml && xsltproc scan.xml -o "wannacry_192.168.0.0-24_`date +%d%m%y`.html"

 

On peut ensuite consulter le fichier HTML contenant rapport généré par Nmap:

 

 

Pour scanner une liste d’adresse IP et générer le résultat dans un fichier HTLM:

vi ip.txt

Dans le fichier ip.txt nous allons mettre toute nos adresse IP à scanner (une adresse ip par ligne) et on le donne en argument à Nmap:

./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse -iL ip.txt -oX scan.xml && xsltproc scan.xml -o "wannacry_listeIP_`date +%d%m%y`.html"

 

Si aucune machine vulnérable à l’exploit SMBv1 n’est détectée (ou que le service n’est pas activé, patché ou pas), la sortie sera vide.
Si une machine à le protocole SMBv1 activé mais qu’il a été patché, la sortie affichera « Could not connect to ‘IPC$’ « .

Mais si une machine vulnérable à l’exploit SMBv1 est détectée (service activé et non patché), voici la sortie que vous allez avoir:

Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-18 12:16 CEST
Nmap scan report for 192.168.0.33
Host is up (0.0013s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:E5:8A:29 (VMware)

Host script results:
| smb-vuln-ms17-010:
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)

|     State: VULNERABLE

|     IDs:  CVE:CVE-2017-0143

|     Risk factor: HIGH

|       A critical remote code execution vulnerability exists in Microsoft SMBv1

|        servers (ms17-010)
.
|
|     Disclosure date: 2017-03-14
|     References:
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143

Nmap done: 1 IP address (1 host up) scanned in 13.61 seconds

 

Et voila, vous savez maintenant le nombre machine Windaube qu’il faut patcher…

 

4 mai 2017 /

On commence par installer un environnement graphique ainsi que notre serveur VNC :

yum groupinstall Desktop
yum install gnome-core
yum install tigervnc-server

Puis on active le serveur au démarrage:

chkconfig vncserver on

On va ensuite donner l’accès sur notre serveur VNC à l’utilisateur starmate, on va donc le créer:

useradd starmate

On se connecte dessus et on génère un mot de passe de connexion pour VNC

su - starmate
vncpasswd

Un fois généré, on retourne sous root et on édite la configuration du serveur VNC:

exit
vi /etc/sysconfig/vncservers

On va déclarer l’utilisateur starmate qui va se connecter, ainsi que la résolution d’écran:

VNCSERVERS="1:starmate"
VNCSERVERARGS[1]="-geometry 1024x768"

Il est configuré ici pour être à l’écoute sur 5901 et avec une résolution d’écran de 1024×768.

On redémarre le service VNC, cela va générer un script qu’il faudra modifier (xstartup):

service vncserver restart

On modifie le fichier généré /home/starmate/.vnc/xstartup :

vi /home/starmate/.vnc/xstartup

Et l’on va commenter la ligne contenant « twm & » et ajouter à la suite « gnome-session & » comme ci-dessous en rouge:

#!/bin/sh

[ -r /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
export LANG
export SYSFONT
vncconfig -iconic &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
if [ -x /etc/X11/xinit/xinitrc ]; then
exec /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
exec sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
exec gnome-session &

On redémarre le service VNC:

service vncserver restart

Il ne reste plus qu’a configurer une connexion via un client VNC.
SI la connexion ne passe pas, regardez du coté du pare-feu (service iptables stop).

4 mai 2017 /

Chaque instance de x11VNC exécutée utilisera un port différent. Ainsi la première instance écoutera sur le port 5900, la seconde sur le port 5901, la troisième sur 5902, etc.

On commence par installer le paquet « x11vnc » :

apt-get install x11vnc

Puis on lance l’application, pour cela il vous suffit d’aller dans le dash d’Ubuntu, et de taper «x11vnc». L’icône «X11VNC Server» va apparaitre, il suffit de cliquer dessus.

 

Cette fenêtre va alors s’ouvrir :

 

Dans le champ de saisi « Port » on va indiquer le port (par défaut, on commence donc a 5900) que l’on souhaite utiliser pour établir la connexion entre le client et le serveur VNC.

  • Enable SSL : on cochez cette cache si on veux crypter la connexion entre le client et le serveur VNC en SSL
  • Listen on localhost : Si on veux se connecter en VNC en local.
  • File Transfer : Active ou non le transfert de fichiers entre X11VNC et le client VNC UltraVNC ou TightVNC.

Une fois configuré, on clique sur « OK ». Une seconde fenêtre de configuration va alors s’ouvrir:

 

Les options qui nous intéressent sont « Accept Connections », « Password » et « View Only Password »:

  • On coche « Accept connections » pour se connecter sur notre serveur VNC.
  • Dans le champ « Password », on indique un mot de passe pour pouvoir se connecter sur la machine Ubuntu avec un contrôle du clavier et de la souris.
  • Dans le champ « View Only Password » indiquez un mot de passe (naturellement different que celui du champ « Password») pour pouvoir accéder à la machine Ubuntu avec la vue de l’écran sans le support du clavier/souris

Une fois configuré, on clique sur « Apply » puis sur « OK ».

Maintenant, à partir d’un client VNC (ici VNC Viewer) sur une machine Linux ou Windows, on va initier la connexion à destination de la machine Ubuntu que l’on vient de configurer pour vérifier que ça fonctionne.

Il suffit de spécifié l’adresse ip du serveur VNC ainsi que son port d’écoute:

Une fois la connexion configurée, il suffit de double cliquer dessus pour initier la connexion.
On vous demandera alors le mot de passe précédemment configuré sur le serveur VNC:

Et voila, vous êtes maintenant connecté sur l’environnement graphique du poste Ubuntu.


Si la connexion ne fonctionne pas, vérifiez bien les paramètres de votre pare-feu.

 

8 avril 2017 /

Pour faire un déport de l’affichage X11 depuis un serveur Linux qui n’a pas d’environnement graphique sur un poste Windows, on peut se servir de l’outil Xming.

Une fois Xming installé sur le poste Windows, on vérifie coté serveur que le X11 forwarding est bien activé:

vi  /etc/ssh/sshd_config

X11Forwarding yes

On installe également xauth:

yum install -y xorg-x11-xauth

ou pour Debian:

apt-get install -y xauth

Maintenant on retourne coté client sur le poste Windows, et on active le X11Forwarding et on spécifie la variable DISPLAY dans putty:

Il ne reste plus qu’a se connecter et faire un test en lançant une application graphique, exemple firefox:

firefox

5 mars 2017 /

Un petit mémo pour mettre en place une connexion Openvpn, avec reconnexion auto.

On commence par stocker ses identifiants de connexion ici:

vi /etc/openvpn/starmate.pass

login
passwd

On sécurise le fichier:

chmod 700 /etc/openvpn/starmate.pass

On télécharge les fichiers de configuration de HMA:

mkdir /etc/openvpn/hma
wget -t 3 -T 20 -r -A.ovpn -nd --no-parent -e robots=off https://vpn.hidemyass.com/vpn-config/UDP/ -P /etc/openvpn/hma

On declare où se trouve le couple login/passwd dans les fichiers de configuration openvpn :

sed -i 's/auth-user-pass/auth-user-pass \/etc\/openvpn\/starmate.pass/g' /etc/openvpn/hma/*ovpn

On relance le service

service openvpn stop
service openvpn start

On peut tester la connexion avec cette commande

openvpn /etc/openvpn/hma/Netherlands.Amsterdam.UDP.ovpn

Pour automatiser cela, nous allons faire un petit script pour cron:

vi /etc/openvpn/vpn.sh

#!/bin/bash
VPN=`ifconfig | grep tun0 > /dev/null 2>&1 ; echo $?`
if [ "$VPN" -eq "1" ];
then
openvpn /etc/openvpn/hma/Netherlands.Amsterdam_LOC2S5.UDP.ovpn
fi

chmod +x /etc/openvpn/vpn.sh

Et la ligne crontab pour une exécution toutes les minutes:

vi /etc/crontab

* * * * * root /etc/openvpn/vpn.sh > /dev/null 2>&1

Ou alors, encore mieux, créer un service:

On commence par copier le fichier de connexion désiré dans /etc/openvpn :

cd /etc/openvpn/hma
cp -p /etc/openvpn/hma/Netherlands.Amsterdam.UDP.ovpn /etc/openvpn/Netherlands.conf

Puis on créer le service.

systemctl enable openvpn@Netherlands.service
systemctl start openvpn@Netherlands.service

La partie suivant directement le @, « Netherlands« , est le nom du fichier de connexion que l’on à copié précédemment.

On peut vérifier son adresse publique:

dig +short myip.opendns.com @resolver1.opendns.com