Yop

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, 15 avril 2011

Exporter des certificats marqués "non exportables"

Jailbreak is a tool for exporting certificates marked as non-exportable from the Windows certificate store.[...]

Pratique par exemple quand un réseau Wifi préçis n'autorise que des certificats clients de certaines machines Windows... Et permet ainsi après export, de se connecter avec un OS libre...des smartphones...



jeudi, 29 juillet 2010

Tunnels TCP à travers proxy HTTP - Corkscrew et Proxytunnel


  • Introduction

Présentation des 2 outils Corkscrew et Proxytunnel:

Ils permettent donc de créer des tunnels TCP à travers un proxy HTTP (via la méthode CONNECT)...
On sera donc par exemple en mesure de monter une connexion SSH... Cette connexion SSH pourra être ensuite elle-même un tunnel chiffré dans lequel faire passer d'autres connexions... Je ne vous fait pas un dessin (option -D d'openSSH, tsocks...etc.. ;) )


  • Présentation

corkscrew is a simple tool to tunnel TCP connections through an HTTP proxy supporting the CONNECT method. It reads stdin and writes to std‐out during the connection, just like netcat. It can be used for instance to connect to an SSH server running on a remote 443 port through a strict HTTPS proxy.


proxytunnel is a program that open a tunnel through a HTTPS proxy.


  • Fichier '~/.ssh/config'

$ man ssh_config
ProxyCommand
Specifies the command to use to connect to the server.[...]


- Pour Corkscrew

Host mon.serveur.ssh
Port 443
ProxyCommand corkscrew mon.proxy.intra 8080 %h %p loginpassfile

- Pour Proxytunnel

Host mon.serveur.ssh
Port 443
ProxyCommand proxytunnel -p mon.proxy.intra:8080 -F loginpassfile -d %h:%p

On peut constater que le principe est le même.. et que la syntaxe est très proche.


  • Syntaxe du fichier loginpass

- Pour Corkscrew

superLogin:superPass

- Pour Proxytunnel

proxy_user = superLogin
proxy_passwd = superPass


  • Création de connexion SSH à travers le proxy avec par exemple:

$ ssh -p 443 mon.serveur.ssh

ou

$ ssh -D 1111 -p 443 mon.serveur.ssh

etc...


  • Différences

Je n'ai pas trouvé beaucoup de différence entre les 2...pour mon utilisation:

- Proxytunnel affiche une petite ligne lors de la connexion SSH

Via mon.proxy.intra:8080 -> mon.serveur.ssh:443

- La dernière version de Corscrew semble dater de 2001.. et la dernière de Proxytunnel de 2008.

- Proxytunnel semble avoir une option pour chaîner 2 proxys (non testé).

- Proxytunnel semble avoir une option pour chiffrer la connexion entre le client et le proxy. (Non testé.. le proxy à dispo ne le supporte pas).

- Corkscrew à un logo plus sympa ;)

- Proxytunnel semble avoir une option pour faire du NTLM (non testé).



  • Divers

- PuTTY a une option pour faire passer la connexion dans un Proxy...

- On peut ajouter la ligne suivante dans le '~/.ssh/config' pour maintenir le tunnel si besoin

ProtocolKeepAlives 30

- On peut aussi faire du SCP de la même manière (dans les 2 sens)

$ scp -P 443 file mon.serveur.ssh:/tmp
Via mon.proxy.intra:8080 -> mon.serveur.ssh:443
file 100% 171 0.2KB/s 00:00
$ scp -P 443 mon.serveur.ssh:/tmp/file .
Via mon.proxy.intra:8080 -> mon.serveur.ssh:443
file 100% 171 0.2KB/s 00:00

- N'oubliez pas que ce n'est pas parceque vous arrivez à vous connectez en SSH, que l'admin est forcément bigleux...
Il lui est tout à fait possible de voir qu'il s'agit d'un tunnel SSH et non d'une banale connexion HTTPS... méfiance :)


dimanche, 10 janvier 2010

vsftpd - Utilisation de différentes IPs en passif

En FTP passif, la connexion du canal Data s'initie depuis le client vers le serveur. Le serveur renvoit donc au client le port (et l'IP) sur lequel doit s'établir le canal Data.

Dans le cas où le serveur est dans une DMZ avec une adresse privée, de base le serveur va renvoyer au client cette adresse privée et la connexion avec Internet ne pourra donc pas se monter.
Il suffit donc d'utiliser dans vsftpd le paramètre pasv_address pour indiquer l'IP publique.

L'histoire pourrait s'arrêter là, mais maintenant que c'est l'IP publique qui est annoncée, il devient parfois délicat de se connecter depuis le LAN. (Problème de firewall, de routage etc..)
vsftpd permet d'utliser des fichiers de configuration différents en fonction de l'adresse IP de la machine qui se connecte, grâce à tcpwrapper. (vsftpd doit être compiler pour).

Il suffit donc d'utiliser 2 fichiers de configuration, chacun ayant une valeur différente de pasv_address.


$ grep vsftpd /etc/hosts.allow
vsftpd: 10.: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap_private_ip.conf
$
$ cat /etc/vsftpd_tcp_wrap_private_ip.conf
pasv_address=10.20.30.40
$

Avec cette configuration, si c'est une machine du LAN qui se connecte (réseau 10.0.0.0), c'est l'adresse 10.20.30.40 qui sera renvoyée pour le canal Data en passif.
Sinon, ca sera l'adresse publique spécifié dans le fichier de configuration par défaut.



Extrait de /usr/share/doc/vsftpd/EXAMPLE/PER_IP_CONFIG/README

vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf

If a client connects from 192.168.1.3, then vsftpd will apply the vsftpd config file /etc/vsftpd_tcp_wrap.conf to the session! These settings are applied ON TOP of the default vsftpd.conf.


Extrait du man vsftpd.conf

pasv_address
Use this option to override the IP address that vsftpd will advertise in response to the PASV command. Provide a numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup.
Default: (none - the address is taken from the incoming connected socket)

mercredi, 19 août 2009

Execution de commande lors de la détection d'un mot dans les logs

Une commande pouvant être utilisée pour envoyer un mail lors de la détection est:

$ tail -f /var/log/messages | awk ' /toto/ { system("echo toto | mail -s pouet toto@aaa.tld") }'


Pour déclencher lors d'un test on peut utiliser:

$ logger -t TEST totofgdfsdfsdf



Extraits des man:

man awk
The pattern comes first, and then the action. Action statements are enclosed in { and }.
For /regular expression/ patterns, the associated statement is executed for each input record that matches the regular expression.
system(cmd-line) Execute the command cmd-line, and return the exit status.
EXAMPLES
Run an external command for particular lines of data:
tail -f access_log | awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'


man system
system - Exécuter une commande shell
La fonction system() exécute la commande indiquée dans commande en appelant /bin/sh -c commande...

vendredi, 5 juin 2009

Execution de commandes lors d'une connexion SSH

Extrait du man ssh

/etc/ssh/sshrc
Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started. See the sshd(8) manual page for more information.



Exemple ici de fichier /etc/ssh/sshrc pour l'envoi d'un mail d'alerte à l'administrateur:

DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`

echo "Connexion de $USER sur $HOSTNAME

IP: $IP
ReverseDNS: $REVERSE
Date: $DATE

" | mail -s "Connexion de $USER sur $HOSTNAME" user@example.org

USER et HOSTNAME sont les variables d'environnement déjà existantes.

MailLoginSsh-uggy1.png

Il va de soit pour tout le monde qu'OpenSSH doit être sécurisé en authorisant UNIQUEMENT les authentifications par clé (et non pas par mot de passe)... Mais ceci est un autre sujet.

- page 2 de 10 -