August 2010 Archives

29-08-2010 23:36:25

[Secu]PFT, the Python Firewall Tester

Il existe une multitude de scanner de port. Cependant parfois on a besoin de déterminer non pas les ports ouverts mais de vérifier quels sont les ports que laisse passer le firewall afin de vérifier si les matrices de flux sont correctes. Pour cela j'ai créé un petit script en python qui va faire cela.

Principe : le script va se connecter via SSH (donc le port ssh doit etre ouvert) sur une machine dans la DMZ que l'on souhaite tester puis va se mettre en écoute via la commande netcat pendant une courte durée puis le client va tenter de s'y connecter. S'il y arrive il indiquera que le port est ouvert sinon qu'il est fermé. Le scan peut etre long si la plage de port est trop grande.

Le code du script est le suivant :
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import paramiko
import sys
import socket

hostname = '' #hostname of the target
username = '' #ssh username to log on the target
password = '' #password of the ssh account
portssh = 22 #ssh's port
startport = 16000 #the first port to scan
endport = 16100 #the last port to scan

#----------------------------------------------------
# function intro()
# This function prints information about this program
# no return
#----------------------------------------------------
def intro():
	print '-------------------------------------'
	print '- PFT, the Python Firewall Tester'
	print '- Author : cloud - cloud@madpowah.org'
	print '- Version 0.1'
	print '-------------------------------------'
#----------------------------------------------------

#----------------------------------------------------
# function connec_ssh()
# Launch the ssh client to connect with information given
# return the ssh connexion (Channel)
#----------------------------------------------------
def connec_ssh():
	print '- Trying to connect to ' + hostname + ' ...'
	t = paramiko.SSHClient()
	t.set_missing_host_key_policy(paramiko.AutoAddPolicy())
	t.load_system_host_keys()
	try:
		t.connect(hostname, port=portssh, username=username, password=password)
		print '- Connected!'
	except:
		print '- Connection refused'
		exit()
	
	return t
#----------------------------------------------------

#----------------------------------------------------
# function netcat()
# Launch netcat on the port given
# no return
#----------------------------------------------------
def netcat(con, port):
	try:
		stdin, stdout, stderr = con.exec_command('nc -l -q 0.3 ' + str(port)) #Version FreeBSD
#		stdin, stdout, stderr = con.exec_command('nc -l -q 0.3 -p ' + str(port)) #Version Linux

		try:
			sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
			sock.settimeout(1)
			sock.connect((hostname,port))
			print '- Port ' + str(port) + ' opened'
		except:
			print '- Port ' + str(port) + ' closed'

	except:
		print '- Cannot launch netcat on port ' + str(port)
#----------------------------------------------------

#----------------------------------------------------
# function main()
# The main function
#----------------------------------------------------
def main():
	intro()
	con = connec_ssh()
	print '- Launching Netcat...'

	for i in range(startport, endport):
		netcat(con, i)
		
	return 0
#----------------------------------------------------

if __name__ == '__main__':
	main()

J'essaierai peut etre de recoder cette application sous un angle serveur, c'est à dire en mettant sur la machine à scanner un script qui va sniffer le traffic (via scapy par ex) puis lancer un nmap sur le client et récupérer coté serveur le résultat. Cela pourrait etre plus rapide mais cela obligerait à installer une appli sur le serveur ... Bref à tester :)

Have fun.

Posted by cloud | Permanent link | File under: OpenSource, Security, Coding

19-08-2010 20:48:11

[Secu] Facebook Places, un nouveau danger ?

J'avoue ne pas etre du tout à la pointe de l'actualité en ce qui concerne les applications de réseaux sociaux etc type Facebook. Mais aujourd'hui en regardant les news j'ai été interpelé par la nouvelle application qui doit etre mise en service aujourd'hui aux USA, j'ai nommé Facebook Places.

Facebook Places a pour objectif de permettre de géolocaliser les utilisateurs. Par exemple vous pourrez voir très rapidement si un de vos "amis" est proche de là ou vous etes et vice versa. Sauf qu'actuellement on fait plutot l'inverse, c'est à dire que l'on a envi de savoir ou est un ami en particulier et le rejoindre et non l'inverse. Parce que si j'ai mis entre "" le mot ami c'est que ces "amis" ne sont pas pour la plupart de vrais amis donc on s'en fou de savoir ou ils sont. C'est un coup à se retrouver des boulets qui viennent voir ou vous etes.
Par ailleurs il n'est plus possible de mentir ou d'avoir sa vie privée.
Si vous avez un spot secret ou vous surfez, surtout n'allumez pas votre téléphone !
Si vous avez dit à votre patron que vous étiez malade, éviter de bouger quelque part en allumant votre téléphone ..
Vous avez dit à votre petite amie que vous étiez fatigués pour aller voir sa meilleure amie :p ? Perdu vous etes grillés.

Ca encore, ce n'est pas très grave. Mais que peut on faire de plus intéressant ? Cette géolocalisation va devenir le nouveau jouet des experts en social engineering et autres arnaqueurs. Prenons un exemple :
J'ai constaté une très belle maison avec un équipement hifi-vidéo plutot intéressant. Je vais regarder le nom des proprios sur leur boite au lettre, les chercher sur Facebook, me créer un compte avec une jolie photo de demoiselle souhaitant devenir "ami" avec le Mr de la maison. A partir de là, je n'ai plus qu'a vérifier à quel moment il est loin de chez lui pour braquer sa maison :) Il y a déjà eu des cas similaires par des utilisateurs Facebook ayant mis dans leur statut qu'ils partaient en vacances. C'est ca de partager sa vie (dont en réalité tout le monde se fou) avec tout le monde dans le but d'assouvir son égo.
Je suis un commercial, je vais observer ou vous mangez, faites vos courses, allez faire du sport et ainsi orienter et faciliter n'importe quelle vente.

Il faut également se rappeler que Facebook est privée et que son objectif est de faire de l'argent. Il ne va donc probablement pas hésiter à revendre (meme s'il dit le contraire) vos informations à qui veut, commerciaux, statistiques, gouvernements ...

La CNIL va avoir du boulot avec cela et a d'ailleurs commencé a donné son opinion (négative) sur cette technologie. De nouvelles problématiques risquent de vite arriver derrière. Imaginons que cela servent de preuve lors d'un enquete. Quel niveau de confiance donner alors à cette information ? Bref je m'éloigne mais on risque d'avoir de belles surprises.

Bref pour moi Facebook Places est vraiment une application à utiliser avec précau... euh non à ne pas utiliser du tout.

Posted by cloud | Permanent link | File under: Security, Fun / Divers

06-08-2010 01:07:44

[New] RapidTchat, webtchat en beta test

Il arrive parfois que l'on ait besoin de discuter via le web avec quelqu'un sans forcément pouvoir utiliser MSN ou facebook car on se trouve sur un lieu ou ces sites / applications sont interdits ou tout simplement car l'on souhaite etre réellement anonyme.

C'est pourquoi j'ai développé un petit site, RapidTchat, permettant de créer un tchat rapide et protégé par mot de passe afin que seul vous et les personnes que vous souhaitez inviter puissent y accéder et sur lequel vous n'avez à entrer aucune information personnelle. Je testerai d'ajouter le SSL dans un futur proche pour sécuriser un peu plus le tout mais je souhaite d'abord tester le site sans.

Si vous souhaitez tester ce site je vous invite donc à aller sur RapidTchat à l'adresse http://www.rapidtchat.com et surtout à me remonter tout problème que vous auriez pu constater par email à l'adresse blog[at]madpowah[dot]org

Merci beaucoup et bon tchat.

Posted by cloud | Permanent link | File under: Fun / Divers, Coding