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 (0x0000003d59200000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003d58600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003d57a00000)
libssl.so.6 => /lib64/libssl.so.6 (0x0000003d65400000)
libcrypto.so.6 => /lib64/libcrypto.so.6 (0x0000003d61600000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d58200000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003d6a000000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003d5b200000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003d69c00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003d57e00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003d69800000)
libc.so.6 => /lib64/libc.so.6 (0x0000003d57600000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d57200000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003d63400000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003d63800000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003d5e200000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003d5fa00000)
libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000003d5fe00000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003d64000000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003d5ce00000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003d58e00000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003d58a00000)

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 Corbier

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

« Previous Entries