OVH Community, votre nouvel espace communautaire.

Spam - Zombie ?


Didier Misson
17/12/2013, 11h44
Citation Envoyé par Nowwhat
OVH qui change un disque sans autorisation préalable de la locataire du serveur ......
C'est ça qui tu veux dire ???
oui, c'est ce qu'on m'a dit.

un ticket a été ouvert, probablement sur "problème disque dur" ...
mais ensuite, le disque a été remplacé sans prévenir de la date !
...
(mais ok, je n'ai pas vu ce ticket OVH)


Citation Envoyé par Nowwhat
Faut voir ça de bon coté : à jour, sans spam - ou autre soucis.
Tu vas voir que le temps que t’as investi dans préparation d’une sauvegarde n’était pas une perte de temps
oui, certainement.
De plus ce serait l'occasion de réinstaller en virtuel avec OpenVZ, etc
mais ce n'est pas mes serveurs, pas moi qui décide.

Merci et bonne journée

Didier

Nowwhat
17/12/2013, 10h39
Citation Envoyé par Didier Misson
[B][COLOR="#000080"]....
Le disque dur est HS, remplacé à l'arrache sans prévenir par OVH...
(ok, un ticket avait été ouvert pour problèmes...)
OVH qui change un disque sans autorisation préalable de la locataire du serveur ......
C'est ça qui tu veux dire ???

Citation Envoyé par Didier Misson
Bon, maintenant le HD du serveur de DEV est ok,
mais ... il est vide (enfin, une Debian dessus)...
Faut voir ça de bon coté : à jour, sans spam - ou autre soucis.
Tu vas voir que le temps que t’as investi dans préparation d’une sauvegarde n’était pas une perte de temps

Didier Misson
17/12/2013, 09h57
Citation Envoyé par Nowwhat
Le serveur n'est pas utilisé - la version de Debian date de 2011/2012 - la version à ce jour est 7.3.
Sauvegarder, peut être, pour un analyse 'cas d'école', certainement pas pour une réinstallation. Le serveur entier vers >>/dev/null
Les applications présent sur le serveur sont probablement ok, mais les "données", dont entre autre le paramétrage qui fait fonctionner les applications, permettent la faille.
Nuke les données.

Un serveur 'pas utilisé':
Garde l'OS à jour. Automatise cette tâche.
Arrête tout service non nécessaire, publiquement adressable: Apache, postfix, FTP (tous ce qui est listé avec netstat -napt - peut être même le DNS).
Bascule SSH en authentification clé publique/privé - bloque toutes les autres login.
Et surtout: arrête moi ce panel ....
à ma connaissance, le serveur a été upgradé de Debian 6 en Debian 7, début novembre.
Mais je n'ai accès au serveur que depuis hier soir

Donc, le serveur est à jour... mais évidemment, s'il existait une faille avant... just too bad...

Oui, il y a plein de choses à améliorer... dont les logons SSH par clé !

Didier Misson
17/12/2013, 09h30
Citation Envoyé par fritz2cat
Le seul truc qui ne soit pas suspect dans ta machine, c'est /usr/bin/[
Tout le reste me semble indiquer que ta machine est 0wned.
Seule solution: sauvegarder les données et réinstaller depuis le manager OVH.

Une réinstall, ce serait probablement l'idéal.

Je vais en discuter avec la personne qui gère ce serveur, qui lui-même à repris ce serveur dans un étant de mise à jour pas très génial...

Mais pour arranger le tout, leur 2ème serveur de DEV est en rade !
Le disque dur est HS, remplacé à l'arrache sans prévenir par OVH...
(ok, un ticket avait été ouvert pour problèmes...)

Bon, maintenant le HD du serveur de DEV est ok,
mais ... il est vide (enfin, une Debian dessus)...

Merci pour vos réponses et conseils

Nowwhat
17/12/2013, 09h04
Citation Envoyé par sbou
J'ai eu le même problème pendant quelques temps , a priori cela vient d'un problème sur php et php-cgi.
Il y avait ce tread http://www.howtoforge.com/forums/sho...t=63740&page=2
Bizarre comme thread ....
Un paquet des gens qui sont toujours (Novembre 2013 !!) avec Squeeze, voir Lenny .... et PHP 5.3.x.
Or, par défaut, c'est Wheezy depuis des lustres, PHP PHP 5.4.4 et PHP CGI/FastCGI.

Ce que je veux dire: garder ces vieilles versions, pourquoi pas, mais leurs défauts sont extrêmement bien documentés sur le net ....donc dans la portée de tout.
Garder son serveur à jour, ça n'exclut pas du tout le fait qu’il peut y avoir des failles - il y'en aura, mais au moins: ils ne sont pas ou, au moins, moins connus.

sbou
17/12/2013, 08h47
Bonjour,

J'ai eu le même problème pendant quelques temps , a priori cela vient d'un problème sur php et php-cgi.
Il y avait ce tread http://www.howtoforge.com/forums/sho...t=63740&page=2
Depuis 3 semaines j'ai plus de problème de ce type.

Stéphane

Nowwhat
17/12/2013, 07h28
Citation Envoyé par fritz2cat
....
Seule solution: sauvegarder les données et réinstaller depuis le manager OVH.
Le serveur n'est pas utilisé - la version de Debian date de 2011/2012 - la version à ce jour est 7.3.
Sauvegarder, peut être, pour un analyse 'cas d'école', certainement pas pour une réinstallation. Le serveur entier vers >>/dev/null
Les applications présent sur le serveur sont probablement ok, mais les "données", dont entre autre le paramétrage qui fait fonctionner les applications, permettent la faille.
Nuke les données.

Un serveur 'pas utilisé':
Garde l'OS à jour. Automatise cette tâche.
Arrête tout service non nécessaire, publiquement adressable: Apache, postfix, FTP (tous ce qui est listé avec netstat -napt - peut être même le DNS).
Bascule SSH en authentification clé publique/privé - bloque toutes les autres login.
Et surtout: arrête moi ce panel ....

fritz2cat
17/12/2013, 06h27
Le seul truc qui ne soit pas suspect dans ta machine, c'est /usr/bin/[
Tout le reste me semble indiquer que ta machine est 0wned.
Seule solution: sauvegarder les données et réinstaller depuis le manager OVH.

Didier Misson
17/12/2013, 02h38
Citation Envoyé par cassiopee
ça c'est assez suspect.
Citation Envoyé par bsm
dans /usr/bin/ j'ai trouvé un ELF du nom de "[" c'est normal pour un Bin ce genre de nom ?
ça m'intéresse votre discussion, car un de mes amis m'a demandé de l'aide pour un serveur qui spamme !

Je suis en train de lire.
Pas encore tout compris...

Sur "notre" serveur Debian wheezy :


Il n'est PAS Open Relay.
J'ai vérifié manuellement, et avec 2 ou 3 sites de test : c'est ok.



On a toutes les 1h04, des mails avec :


Code:
# postcat -q AC6A917E004A

*** ENVELOPE RECORDS deferred/A/AC6A917E004A ***
message_size:             343             178               1               0             343
message_arrival_time: Tue Dec 17 00:24:18 2013
create_time: Tue Dec 17 00:24:18 2013
named_attribute: rewrite_context=local
sender_fullname: root
sender: root@xxxxxxxx.ovh.net
*** MESSAGE CONTENTS deferred/A/AC6A917E004A ***
Received: by xxxxxxxx.ovh.net (Postfix, from userid 0)
	id AC6A917E004A; Tue, 17 Dec 2013 00:24:18 +0100 (CET)
From: root@localhost
To: tomgrey290@yahoo.com
Subject: Test mail 166075564
Message-Id: <20131216232418.AC6A917E004A@ns388078.ovh.net>
Date: Tue, 17 Dec 2013 00:24:18 +0100 (CET)

Bla-bla-bla
----------------
best regards
*** HEADER EXTRACTED deferred/A/AC6A917E004A ***
original_recipient: tomgrey290@yahoo.com
recipient: tomgrey290@yahoo.com
*** MESSAGE FILE END deferred/A/AC6A917E004A ***

Je vois dans un autre forum :


http://forum.parallels.com/showthrea...-hole-in-Plesk

Les adresses mails utilisées (comme tomgrey290@yahoo.com) sont EXACTEMENT les mêmes que dans la liste de cet autre forum.



Par contre, ce n'est pas le userid www-data qui serait corrompu,
mais ici, c'est "Postfix, from userid 0"

ça veut donc dire user root corrompu ???

aie aie aie

Mais, donc, ce n'est peut-être pas le process www-data, ou un site Web, qui est le responsable de nos problèmes ?


Après avoir lu certains posts, j'ai vérifié :

Pas de FICHIER /usr/bin/crond !

Par contre, il y a bien une tâche /usr/bin/crond qui tourne !

Code:
# ps -A|grep cro

16380 ?        00:00:02 /usr/bin/crond
Mais c'est normal ça il me semble... j'ai aussi une ou des tâches crond sur mes autres serveurs...

Ah, un truc bizarre,
j'ai un fichier "..." (3 points) dans /tmp, avec taille 0 !

Code:
# ls -lha

total 48K
drwxrwxrwt  9 root     root     4,0K déc.  17 03:27 .
drwxr-xr-x 23 root     root     4,0K nov.  20 23:28 ..
-rw-r--r--  1 root     root        0 déc.  16 06:05 ...

J'ai des nouveaux spams à 3h37... c'est bien toutes les 1h04 (et quelques secondes)

Des idées pour creuser ça ?

Merci

Didier

sbou
31/10/2013, 10h45
Bonjour,

je ne vois rien de particulier dans le log a l'heure ou cela commence

je sais qu'il parte d'un utilisateur de mon system uid 1003 , le 29 oct a 7h50

Mais j'ai rien vu dans les trace apache non plus

C'est un serveur ou j'ai pas d'activité car il n'est pas utilisé

Je peux voir un POST queques jours avant

POST /?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1" 200 29308 "-" "lwp-request/2.06"


Stéphane

fritz2cat
31/10/2013, 10h18
Tu as des traces dans /var/log/mail.log ; tu devrais trouver si le spammeur est entré par un site web vulnérable ; ou par une erreur de config de postfix ; ou par l'utilisation abusive d'un tes comptes clients.

sbou
31/10/2013, 09h22
Bonjour,

Je déterre un peu le post, j'ai eu la même problème sur 2 de mes dédié

debian 6.0.6

Mon serveur a donc spammé un peu.

/usr/bin/crond qui tourne , dés que je le supprime tout rentre dans l'ordre.

On parle de ce problème ici http://forum.parallels.com/showthread.php?290730-Spam-from-hole-in-Plesk/

Mais impossible de savoir par ou ils sont passé.

Avez vous trouvé quelque chose ?

Stéphane

bsm
14/05/2013, 19h53
Merci pour les conseils je vais voir à les appliquer

fritz2cat
14/05/2013, 19h31
Citation Envoyé par buddy
v=spf1 include:mail.ndd.com ~all
avec mail.ndd.com qui pointe vers ton serveur.
Ce n'est pas juste. Il faut utiliser la clause a:
http://www.openspf.org/SPF_Record_Syntax#a

Note pour @bsm: tu peux aussi envisager l'envoi direct sans passer par un smarthost, mais passe d'abord par un site tel que blacklistalert.org ; teste ton IP et tu n'as pas intérêt à la retrouver dans une liste telle que spamhaus PBL (ou ZEN).

Frédéric

buddy
14/05/2013, 18h50
Salut,

je le fait (mail envoyés depuis le serveur) et çà passe nickel.

Tu peux aussi depuis ton serveur (une fois que tu enverras tes mails directement depuis ton serveur) tester via ce site :
http://www.mail-tester.com/

çà te permet de savoir +/- si ton serveur est ien configuré.
Si tu fais des modifs au niveau du DNS attend quelques minutes ( après il affichera un message propagation dns en cours )

franchement, j'ai toujours fait comme çà et je n'ai jamais été considéré en spam.

tu peux définir ton enregistrement spf comme
v=spf1 a mx ip4:123.123.123.123 ~all
ou
v=spf1 include:mail.ndd.com ~all
avec mail.ndd.com qui pointe vers ton serveur.
personnellement je préfère mettre l'ip en dur ( mais faut penser à la changer si l'ip change)

fritz2cat
14/05/2013, 14h34
Ce n'est pas fermé et contradictoire.

Soit ton "serveur" avec 40000 membres inscrits tourne dans ta chambre à coucher, et alors tu utilises le SMTP de ton FAI (Orange, Free, etc) dans les limites de ton contrat,
soit il est dans un datacentre d'un concurrent d'OVH, tu lis leurs guides, tu questionnes leur support, tu discutes dans leur forum, dans leurs mailing listes, et tu utilises leurs services.

Frédéric

bsm
14/05/2013, 14h21
Ok et Merci !

Le web est tellement ouvert qu'il est devenu tellement fermé et contradictoire...

cassiopee
14/05/2013, 14h16
Oui, il faut installer un enregistrement DNS de type SPF et être bien carré sur les respect des RFC
concernant le format des emails mais bon, ce n'est pas la mort à faire.

De cette façon, tu ne seras pas limité en nombre d'emails et c'est une solution gratuite.

bsm
14/05/2013, 13h53
c'est ce que je vais faire...mais si j'ai utilisé la solution OVH c'est pcq Gmail et Hotmail sont très chiant et considère les emails en provenance de serveur direct (sans une clef dont j'ai oublié le nom) comme des spammeurs...

cassiopee
14/05/2013, 13h48
Pourquoi ne pas utiliser directement ton serveur afin d'émettre les messages ?

bsm
14/05/2013, 13h35
je n'ai pas de Baie chez OVH, merci de lire l'intro du sujet

Je veux dire que quand mon serveur (qui n'est pas chez OVH) mais utilise les DNS d'OVH, doit envoyer des emails, je passe par le SMTP de OVH, et la queue des emails est rapidement saturée de un, de deux, les emails sont rejetés car il semble que je dépasse un certain quota d'envoi par jours... HORS mon site possède plus de 40.000 membres, ça vous situe les besoins en terme de communication et d'envoi d'emails (notification forum, inscriptions, mises à jour,...)

Je me dis (idée, supposition,...), si OVH limite le nombre d'envois par jours, pq ne pas mettre en place un système de certificat ou clef de validation qui authentifie les serveurs qui le/la possède qu'ils ne sont pas des serveurs de SPAMS...

J'utilise OVH comme DNS et Mailer, mon serveur est dans une baie en dehors de chez OVH, la raison c'est que je ne vais pas me rendre en France à chaque fois que mon serveur doit avoir une petite maintenance...

Nowwhat
14/05/2013, 13h28
Pas compris la.
OVH te livre un baie et quelques ampères. En quoi ils sont restrictif ?
Et ce certificat, explique stp. Un certificat de 'hébergement' ?

bsm
14/05/2013, 12h21
Bon tout va bien

Sinon OVH est quand même devenu vachement restrictif pour l'envoi des emails...ils pourraient au moins proposé une solution, même payante, pour que les sites ayant un "certificat" ovh ne soit pas limiter...

cassiopee
12/05/2013, 22h48
Oui, c'est ce qu'il faut faire, au moins pendant 2-3 jours pour vérifier.

bsm
12/05/2013, 22h37
Merci bien Pour info tout roule depuis cette aprem... je check régulièrement, mis à part des attaques classiques (Chine, Corée, Vietnam, Ukraine,...), plus de spams...

buddy
12/05/2013, 14h57
Citation Envoyé par bsm
est-il possible qu'un JPG contienne du code malicieux ? apres le FIND pour PERL, il y a un mot PERL dans une image JPG, l'image s'affiche correctement, donc j'ai un gros doute mais je pose quand même la question...
prends l'image quand tu as fait ton backup, vérifie qu'elle soit saine et remplace la.
Sinon ouvre l'image avec un logiciel de retouche style gimp.
Réenregistre la et vois toujours si il y a un script a l'intérieur.

bsm
12/05/2013, 14h50
oki encore merci !

cassiopee
12/05/2013, 14h48
Citation Envoyé par bsm
mon serveur n'est pas un dédié OVH, c'est ma propre machine dans une baie...
Ah oui ok, dans ce cas pas de souci.

Un bon port pour FTP ?
N'importe lequel au dessus de 1024 (et < à 65535).

bsm
12/05/2013, 14h23
mon serveur n'est pas un dédié OVH, c'est ma propre machine dans une baie...

Un bon port pour FTP ?

cassiopee
12/05/2013, 14h21
Citation Envoyé par bsm
autre questions : j'ai un jojo de chine qui essaies de se connecter sur mon FTP, est-il judicieux ou non de changer le PORT FTP ?
ça évitera les scans automatiques, donc oui.

Idem pour SSH ?
Là c'est différent : il faut laisser le port 22 ouvert pour OVH s'ils ont besoin d'intervenir
dans le dédié.

Cf toutes les conversations à ce sujet dans le forum.

cassiopee
12/05/2013, 14h18
Citation Envoyé par bsm
est-il possible qu'un JPG contienne du code malicieux ? apres le FIND pour PERL, il y a un mot PERL dans une image JPG, l'image s'affiche correctement, donc j'ai un gros doute mais je pose quand même la question...
Dans l'absolu, oui mais ce n'est pas le plus probable.

J'ai rajouté un script PHP sur mon serveur qui va me permettre de scanner les fichiers et savoir si il y a des ajouts...
ça ne peut pas faire de mal

bsm
12/05/2013, 13h44
autre questions : j'ai un jojo de chine qui essaies de se connecter sur mon FTP, est-il judicieux ou non de changer le PORT FTP ? Idem pour SSH ?

bsm
12/05/2013, 13h29
est-il possible qu'un JPG contienne du code malicieux ? apres le FIND pour PERL, il y a un mot PERL dans une image JPG, l'image s'affiche correctement, donc j'ai un gros doute mais je pose quand même la question...

J'ai rajouté un script PHP sur mon serveur qui va me permettre de scanner les fichiers et savoir si il y a des ajouts...

cassiopee
12/05/2013, 12h40
De rien

Tiens nous au courant si jamais ça recommence.

bsm
12/05/2013, 12h33
bien bien, je vais reverifier avec FIND et si tout semble ok je relance Apache, Nullmailer et je vais vérifier les Log mais surtout la Queue et les Process...

Je ne sais pas comment tu/vous remercier ça faisait deux semaines que je galérais, je cherchais a comprendre comment www-data pouvait exister si Apache était coupé...

Vous m'avez appris quelque chose !

Un tout grand MERCI !

cassiopee
12/05/2013, 12h25
Citation Envoyé par bsm
je suppose que si il y a une porte : clamav, chkrookit et rkhunter aurait trouvé quelques choses...
D'un point de vue très théorique, oui, dans la réalité ...

Disons que si un de ces programmes dit qu'il y a quelque chose, c'est a peu près
certain qu'il y a quelque chose (malgré quelques faux positifs). En revanche, ce n'est
pas parce qu'ils disent qu'il n'y a rien, qu'il n'y a effectivement rien.

bsm
12/05/2013, 12h24
message bien reçu, habitude windosiène de tout effacer...

bsm
12/05/2013, 12h23
je suppose que si il y a une porte : clamav, chkrookit et rkhunter aurait trouvé quelques choses...

cassiopee
12/05/2013, 12h23
Citation Envoyé par bsm
je peux purger le TMP ? il y a des fichiers out-dated...
Pour la deuxième fois : non, pas de purge systématique du genre "on efface tout"
dans ce répertoire.

A la limite des fichiers de type "sess_0154560" assez anciens, ça oui, mais pour le reste
si tu ne sais à quoi / d'où vient un fichier dans ce répertoire : ne l'efface pas.

Il peut très bien avoir été lancé par un des serveurs logiciels du dédié et ce serveur logiciel
a besoin de ce fichier afin de fonctionner normalement.

cassiopee
12/05/2013, 12h21
Citation Envoyé par bsm
oki, je relance le serveur Apache et NullMailer et j'attends de voir ?
Oui, il faut continuer à surveiller afin de voir si la faille a bien été rebouchée
et si le pirate n'a pas laissé une "porte par derrière" (backdoor) afin de revenir facilement.

bsm
12/05/2013, 12h15
je peux purger le TMP ? il y a des fichiers out-dated...

bsm
12/05/2013, 12h14
oki, je relance le serveur Apache et NullMailer et j'attends de voir ?

cassiopee
12/05/2013, 12h12
Citation Envoyé par bsm
si j'ai Kill le process en mémoire, il est mort ?
Oui, de sa belle mort

le fichier "..." j'ai voulu le renommer.. et il a disparu..
Vraisemblablement parce qu'ouvert et "tenu" par le script en RAM, donc à la mort
de ce dernier, ça purge.

bsm
12/05/2013, 12h11
si j'ai Kill le process en mémoire, il est mort ?

le fichier "..." j'ai voulu le renommer.. et il a disparu..

cassiopee
12/05/2013, 12h10
Yep, il est possible que le script se soit lancé en RAM puis ait effacé son propre fichier du disque dur,
de façon à compliquer l'analyse ultérieure.

bsm
12/05/2013, 12h07
rien non plus...

bsm
12/05/2013, 12h06
oui c'est le bon folder, je check...

cassiopee
12/05/2013, 12h05
Citation Envoyé par bsm
ok j'ai executer Find, et rien...
Je ne me souviens si cette commande englobe ou pas les fichiers cachés, dans le doute :

Code:
find /var/www -name ".*" | xargs grep -i "perl"
oui, ça ressemble mais non ce n'est pas la même commande

(enfin là je suppose que ton site est dans "/var/www", ce qui n'est pas forcément
le cas, à toi d'adapter le répertoire à analyser, notamment ça peut être dans "/home")

bsm
12/05/2013, 12h03
ok j'ai executer Find, et rien...

cassiopee
12/05/2013, 12h02
Citation Envoyé par bsm
je peux effacer le contenu tu TMP ou pas ? je fais quoi du fichier "..." ?
Tu peux effacer le fichier "..." oui, pour le reste, non ça dépend des fichiers présents.

je viens de re démarrer Apache (bien ou pas bien ?)
Ben maintenant que c'est fait ...

je peux re-starter NullMailer ?
Oui, surveille simplement qu'il n'y a pas/plus de programme tournant sous l'utilisateur
"www-data" qui ne soit pas lié à Apache. Si jamais ça arrive, tu arrêtes Apache
et ensuite tu relances le "ps aux | grep www-data" afin d'isoler le script.

cassiopee
12/05/2013, 12h01
Ok, si ton site web ne contient pas de scripts en PERL, tu peux également chercher
tout fichier contenant la séquence "PERL" afin d'en vérifier le contenu :

Code:
find /var/www -name "*" | xargs grep -i "perl"
par exemple.

bsm
12/05/2013, 11h59
je peux effacer le contenu tu TMP ou pas ? je fais quoi du fichier "..." ?

je viens de re démarrer Apache (bien ou pas bien ?) je peux re-starter NullMailer ?

bsm
12/05/2013, 11h56
bon j'ai fait un Kill et effectivement plus de process www-data

Pour la faille j'ai mon idée, j'avais trouvé des scripts très très louche sur mon serveur (j'ai changé le hardware il y peu) et depuis j'ai renforcé tous mes formulaires, fonction mail(), re-verifier mes chmod (folders et scripts),... installé ClamAV, chkrootkit, rkhunter et php Suhoshin...

cassiopee
12/05/2013, 11h52
Disons qu'il est facile d'arrêter le script maintenant la question est plus de trouver la faille
dans le site web (puisque ça vient de là : le script PERL s'exécutant sous/avec l'utilisateur d'Apache).

Pour arrêter le script :

Code:
kill -9 20700
ensuite vérifier qu'il n'est plus en RAM via :

Code:
ps aux | grep www-data
(Apache étant toujours arrêté)

ce qui ne devrait pas donner autre chose que :

Code:
root 23612 0.0 0.0 111248 3344 ? S 11:55 0:00 su root -c ps aux|grep www-data
root 23619 0.0 0.0 12324 1204 ? S 11:55 0:00 bash -c ps aux|grep www-data
root 23621 0.0 0.0 9424 904 ? S 11:55 0:00 grep www-data
(même si certains chiffres vont changer)

buddy
12/05/2013, 11h52
salut,

tu peux toujours les renommer faire chmod 600 sur les fichiers, çà empêchera leur exécution.

http://www.wistee.fr/serveur-ftp/mod...its-chmod.html

bsm
12/05/2013, 11h47
ok, j'ai renomé index.html en bad.txt, je fais quoi des "..." et surtout comment stoppé le lancement, il y a un script PERL ?

cassiopee
12/05/2013, 11h47
Citation Envoyé par bsm
dans le /var/www/ j'ai trouvé un index.html, probablement le signal du lancement du spam... j'ai downloader l'index.html et surprise il s'agit d'une page que j'avais sur mon site, mais que j'ai supprimée depuis bien longtemps...

si je lance la page index.html sur mon desktop, le vieux contenu apparait (celui d'origine), hors si je lance la page avec un edit (webmin) il est écrit :

"It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet."


la page HTML downloadée fait +-35KB et sur le serveur elle fait à peine 200 bytes
C'est simplement qu'il ne s'agit pas du même fichier "index.html",
il y en a plusieurs "index.html" dans des répertoires différents dans le dédié,
ce qui est très courant.

La page "it works" est la page par défaut d'Apache. Rien d'anormal.
Et surtout pas de rapport avec le problème de spam.

Quant à la page affichant une vieille version du site, c'est un reste simplement oublié
(ce n'est pas le pirate qui a pu créer cette page)

cassiopee
12/05/2013, 11h44
N'efface rien du tout dans l'immédiat. Renomme ou déplace, c'est mieux.

bsm
12/05/2013, 11h42
J'efface le /var/www/ ? ou le index.html ?

J'ai renommé la page index.html en bad.txt et la magie, avec l'edit de webmin je n 'ai plus d’exécution de la page...

je confirme que j'ai un fichier /tmp/... il fait 0Bytes, si je l'edit il ne contient rien.

bsm
12/05/2013, 11h40
dans le /var/www/ j'ai trouvé un index.html, probablement le signal du lancement du spam... j'ai downloader l'index.html et surprise il s'agit d'une page que j'avais sur mon site, mais que j'ai supprimée depuis bien longtemps...

si je lance la page index.html sur mon desktop, le vieux contenu apparait (celui d'origine), hors si je lance la page avec un edit (webmin) il est écrit :

"It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet."


la page HTML downloadée fait +-35KB et sur le serveur elle fait à peine 200 bytes

bsm
12/05/2013, 11h33
je vais vérifier le TMP et les ... et var/www/

cassiopee
12/05/2013, 11h28
Yep, comme c'était prévisibile, c'est un script PERL (le fait de renommer le script est assez courant
pour les scripts pirates écrits en PERL).

Il semble manipuler pas mal de données dans le répertoire "/tmp", essaye de regarder
(par exemple, un tri par date dans ce répertoire via un "ls -alrt")

Notamment regarde s'il y a un fichier "..." (*) (avec 3 caractères points qui se suivent).
Un nom de répertoire "." ou encore ".." c'est normal (désigne le répertoire courant
et le répertoire parent) mais avec 3 points, ce n'est pas normal. C'est peut-être le
script pirate lui-même.

De même il y a une référence à "/var/www", il est possible que le script y soit encore,
éventuellement sous un nom apparemment banal.

(*) via un "ls -al /tmp/..." : c'est un fichier caché (le nom commence par un point)
donc il n'apparaitra pas via un simple "ls /tmp/..."

bsm
12/05/2013, 11h23
> lsof | grep 20700
/usr/bin/ 20700 www-data cwd DIR 8,1 4096 10225404 /var/www
/usr/bin/ 20700 www-data rtd DIR 8,1 4096 2 /
/usr/bin/ 20700 www-data txt REG 8,1 10376 5514832 /usr/bin/perl
/usr/bin/ 20700 www-data DEL REG 8,1 35651611 /lib/x86_64-linux-gnu/libresolv-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651623 /lib/x86_64-linux-gnu/libnss_dns-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651616 /lib/x86_64-linux-gnu/libnss_files-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651612 /lib/x86_64-linux-gnu/libnss_nis-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651625 /lib/x86_64-linux-gnu/libnsl-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651617 /lib/x86_64-linux-gnu/libnss_compat-2.15.so
/usr/bin/ 20700 www-data mem REG 8,1 35176 5514809 /usr/lib/perl/5.14.2/auto/Socket/Socket.so
/usr/bin/ 20700 www-data mem REG 8,1 2940416 5511369 /usr/lib/locale/locale-archive
/usr/bin/ 20700 www-data DEL REG 8,1 35651615 /lib/x86_64-linux-gnu/libcrypt-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651606 /lib/x86_64-linux-gnu/libpthread-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651614 /lib/x86_64-linux-gnu/libm-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651601 /lib/x86_64-linux-gnu/libdl-2.15.so
/usr/bin/ 20700 www-data DEL REG 8,1 35651602 /lib/x86_64-linux-gnu/libc-2.15.so
/usr/bin/ 20700 www-data mem REG 8,1 1554200 5514792 /usr/lib/libperl.so.5.14.2
/usr/bin/ 20700 www-data DEL REG 8,1 35651620 /lib/x86_64-linux-gnu/ld-2.15.so
/usr/bin/ 20700 www-data 0r CHR 1,3 0t0 5887 /dev/null
/usr/bin/ 20700 www-data 1u REG 8,1 38904 20712627 /tmp/tmpfTFaSWo (deleted)
/usr/bin/ 20700 www-data 2u REG 8,1 38904 20712627 /tmp/tmpfTFaSWo (deleted)
/usr/bin/ 20700 www-data 3r REG 8,1 11233 20712624 /tmp/sess_f652da7dd28dce7baeeae54a46ae4092 (deleted)
/usr/bin/ 20700 www-data 4wW REG 8,1 0 20712628 /tmp/...

voilà, si vous pouviez me décoder ça

cassiopee
12/05/2013, 11h13
Citation Envoyé par bsm
alors :
ls: impossible d'accéder à /usr/bin/crond: Aucun fichier ou dossier de ce type

/usr/bin/crond: ERROR: cannot open `/usr/bin/crond' (No such file or directory)
Ok, je crois que tu as trouvé le coupable : un process dont le nom apparent
(celui qui apparait dans un "ps") a été modifié pour le rendre sans doute plus anodin,
ici essayer de se faire passer pour un process lié à "cron".

Il va falloir utiliser le PID (ici 20700 ) afin d'en apprendre davantage.

Que donne comme résultat la commande :

Code:
lsof | grep 20700
?

bsm
12/05/2013, 11h04
alors :
ls: impossible d'accéder à /usr/bin/crond: Aucun fichier ou dossier de ce type

/usr/bin/crond: ERROR: cannot open `/usr/bin/crond' (No such file or directory)

cassiopee
12/05/2013, 11h04
Citation Envoyé par bsm
dans /usr/bin/ j'ai trouvé un ELF du nom de "[" c'est normal pour un Bin ce genre de nom ?
Oui (même si ça peut paraître bizarre)

bsm
12/05/2013, 11h02
dans /usr/bin/ j'ai trouvé un ELF du nom de "[" c'est normal pour un Bin ce genre de nom ?

cassiopee
12/05/2013, 11h01
Citation Envoyé par bsm
www-data 20700 0.0 0.2 44896 11276 ? S Apr22 14:24 /usr/bin/crond
ça c'est assez suspect.

Que donne comme résultats les commandes :

Code:
ls -al /usr/bin/crond
Code:
file /usr/bin/crond

bsm
12/05/2013, 10h54
j'ai ça une fois Apache coupé :

www-data 20700 0.0 0.2 44896 11276 ? S Apr22 14:24 /usr/bin/crond
root 23612 0.0 0.0 111248 3344 ? S 11:55 0:00 su root -c ps aux|grep www-data
root 23619 0.0 0.0 12324 1204 ? S 11:55 0:00 bash -c ps aux|grep www-data
root 23621 0.0 0.0 9424 904 ? S 11:55 0:00 grep www-data

une idée ?

bsm
12/05/2013, 10h53
Progression : hier soir un peu avant minuit je coupe le process de NullMailerSend, et...les spams de test sont continué a s'accumuler dans la queue...

j'en conclus que NullMailer ne sert que de relais d'envois et qu'il n'est pas la source de l'injection, idem avec Apache vu que quand il est coupé les Spams de tests arrivent quand même...je vais vérifier le process pirate quand Apache est coupé !

fritz2cat
12/05/2013, 09h59
Bonjour,
S'il est mis "invoked by uid 33" c'est bien l'utilisateur www-data d'une debian standard qui a le uid 33.
Donc si tu arrêtes Apache, es-tu certain qu'il n'y a plus un tout petit process (pirate) qui tourne sous ce user (ps aux|grep www-data)

Frédéric

bsm
11/05/2013, 21h43
je ne sais pas ... -> nullmailer-send [--daemon] [--syslog]

buddy
11/05/2013, 20h24
est-il possible d'utiliser nullmailer en ligne de commande ? si oui alors ils utilisent çà et pas apache.
Si non, bonne question.
Je ne connais pas du tout son fonctionnement alors ...

Sinon, les paquets du serveur sont bien à jour ? Sinon, ils peuvent passer par n'importe quel autre endroit.

bsm
11/05/2013, 20h10
j'ai la même impression : script ou cron, mais comment expliqué si script que ca part même avec apache fermé... vais re re vérifier...

buddy
11/05/2013, 19h54
heu ... mettre le dernier kernel pas forcément mais mettre à jour les paquets du serveur oui toujours ... ( je parle de mise à jour et pas forcément d'upgrade de distrib... )
Quel est la distrib ?

Sinon, il a été formaté ok mais les fichiers php, de config et etc ... ont été copiés de l'un à l'autre directement ? ou ils ont été ouverts et vérifiés 1 par 1 ? Car si le script malveillant qui envoie les mails a été copié çà a servi à rien du coup.

Edit : si les mails partent à heure fixe, c'est forcément que soit une script php malveillant est visité à heure fixe, soit qu'il y a un cron qui exécute l'envoie des mails.

rien de bizarre aux heures des spams dans les logs apache ? quelles pages sont visitées à cette heure là ? Elles sont 100 % clean ? c'est sur ?

bsm
11/05/2013, 19h36
voilà la question ! comment ils rentrent...je vais vérifier CRON une quatrième fois...

J'ai formaté le serveur il y a deux semaines.

Pensez-vous que je dois mettre le noyaux Kernel Up-To-Date ?

buddy
11/05/2013, 19h25
Tu as aussi dit
J'ai tenté de shutdowner Apache pour voir, rien, le serveur envois tjs des SPAMS, J'ai stoppé NullMailler, rien le serveur envois tjs des spams.
du coup, si çà passe ni par apache ni par nullmailler il y a quoi d'autre sur ton serveur qui peut envoyer des mails ??

est-il possible d'utiliser nullmailer en ligne de commande ?
si oui, as tu un script dans le crontab qui envoie automatiquement ces mails ?

si non, je ne sais pas comment les mails arrive dans la queue ...

Faudrait savoir comment les mails peuvent entrer dans la queue. Puis une fois trouvée, comblée la faille.

Sinon, reste le formatage qui est radical ... à condition de vérifier 1/1 les scripts copiés après

bsm
11/05/2013, 19h08
je ne vois rien (de suspet) dans les logs Apache...

Ok il y a peut-être un script pourrit dans mon site (pourtant j'ai tout vérifié) mais alors comment le scripts peut-il fonctionner si Apache est Down ? Sachant que PHP est un module Apache...

Il n'y a que deux personnes : moi et un ami qui gère le système.

je vais lire ton thread...

buddy
11/05/2013, 17h38
beh, il n'y a pas une faille dans ton site PHP qui lui aurait permis d'uploader un script à lui pour générer du spam ?
lis tes logs apache ... y a pas de miracle. Si ton connais son ip çà va encore plus vite ...
tu as dit que ton site avait été infecté. une analyse des logs apache te permettra de voir si il est toujours infecté et si oui par ou ...


Après, qui utilise ton site / nécessite un accès à ton serveur ?
c'est "moche" comme réparation mais en attendant tu peux bloquer un pays entier au niveau de ton serveur.
http://forum.ovh.com/showthread.php?t=36682

bsm
11/05/2013, 16h45
Bon ça progresse :

Si je coupe NullMailler (NulMailler -Stop), les spams de test s'accumule dans la Queue mais ne peuvent pas partir (vu que NullMailler est coupé).

Donc Si NulMailler est STOPPE, il y a des quelques emails SPAMS de tests qui restent bloqué, et je n'ai plus la grosse sauce systématiquement après.

Ce qui veut dire que le Spammer, arrive a envoyer des emails de tests mais ceux-ci ne sortent plus, et donc plus de SPAMS dans la queue (et plus d'envois d'emails normaux non plus évidement)

Ma question : comment fait-il pour se connecter et injecter des emails dans la queue de NulMailler si il est Stoppé ?

Les emails de test sont toujours avec un sujet similaire : Subject: Test mail 1138934935

Ma petite conclusion : le pirate passe sur le serveur, injecte dans la queue des emails, attend sont emails de test en retour, si nulmailler est start = oui alors il envoi la sauce, si nulmailler est stop = non, aucun spams n'est envoyé.

Mais comment ?

bsm
11/05/2013, 16h38
il n'y a rien qui tourne, un gros site en PHP programmé maison.

Apache, Mysql, Proftpd, Nullmailler et c'est tout.

C'est ça qui est bizarre, comment passe-t-il par Apache si Apache est coupé/shutdown ???

buddy
11/05/2013, 13h08
çà passe donc via apache si l'uid 33 c'est bien l'utilisateur www-data

nullmailer pid 25572 invoked by uid 33
Après, je ne sais pas comment çà marche donc je vais pas trop pouvoir t'aider ...

tu as des logs apache bizarre ?
Il y a quoi qui tourne sur ton serveur ? des sites ? des CMS ?

bsm
11/05/2013, 12h23
voilà un email complet, j'ai rien de plus... :

www-data@*****.com
krjord@aol.com

Received: (nullmailer pid 25572 invoked by uid 33);
Sat, 11 May 2013 11:22:35 -0000
From: Rebecca Hubbs
To: krjord@aol.com
Subject: How about an ENCOUNTER WITHOUT OBLIGATIONS?
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="=_7d0ffd91c262c8419d453fffbdc05c67"
Date: Sat, 11 May 2013 13:22:35 +0200
Message-Id: <1368271355.316820.25570.nullmailer@*****.com>

--=_7d0ffd91c262c8419d453fffbdc05c67
Content-Type: multipart/alternative;
boundary="=_6df2f6846119d104c53d164e93a6a062"

--=_6df2f6846119d104c53d164e93a6a062
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit

Hi honey!
My name is Rebecca. I'm a business lady.
Unfortunately I spend most of my time working and have absolutely no time for my private life.
My collegues at a coffee brake gave me the site where I can find a person with whom I can date without any obligations.
I found your profile in Facebook and I consider you very attractive.
I just need a nice guy to spend a few hot weekends with.
Any offers are welcomed and money is not an object.

You can find my profile here: http://www.rebecca-hubbs.us/

Hope for a pleasant acquaintance,
Rebecca Hubbs



--=_6df2f6846119d104c53d164e93a6a062
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable



Hi honey!
My name is Rebecca. I'm a business lady.

Unfortunately I spend most of my time working and have absolutely no time f=
or my private life.

My collegues at a coffee brake gave me the site where I can find a person w=
ith whom I can date without any obligations.

I found your profile in Facebook and I consider you very attractive.

I just need a nice guy to spend a few hot weekends with.

Any offers are welcomed and money is not an object.



You can find my profile here: http=
://www.rebecca-hubbs.us/





=20
3D"" ight=3D"255" border=3D"0">
=20


Hope for a pleasant acquaintance,

Rebecca Hubbs



9712">


--=_6df2f6846119d104c53d164e93a6a062--
--=_7d0ffd91c262c8419d453fffbdc05c67
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="dmc002.jpg"
Content-ID:

/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK
CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBT/wAARCAD/AL4DAREA
AhEBAxEB/8QAHgAAAQUBAQEBAQAAAAAAAAAAAwIEBQYHCAEJAAr/xABPEAABAwIEBAMEBwMIBggH
AAABAgMEBREABhIhBxMxQSJRYQgUcYEVIzJSkaGxCULBFiQzYn KCssKSk8PS4fAXGCVTY6LR8TRD
VHSDs9P/xAAbAQACAwEBAQAAAAAAAAAAAAAAAQIDBAUGB//EADQRAAICAQMCAwcEAgICAwAAAAAB
AhEDEiExBEETUWEFInGRodHwMoGxwSPhFFJC8RUzcv/aAAwDAQACEQMRAD8AWlq2MRoDoaw+A5Cp
axEAyW8NgGS3gHyES3th8ALDdsIGEDV8HICg3gGKSzhAK5WGFi g36YBM/aMFhR+5eAZ+5WDYdn4t
74BHhbHlgA85e2GMSpu+I7gI5eHYhCm8OxUCUi2FYwZR6YBCeX 6YAW3AzQ3hvYWwZLf4YBBktYdA
GQjfphDChGGAVLfphDFpawuBBA3hjFBv0wAe6BhBZD17ONCywo oqlXhQHQAS088A5Y9DoHi3+GIu
cUSScuEUmv8AtCZYobRcbRNqyQbfzJi3zuvSLfPEFk1Ook3jkl bRRZvtWPzlIVRstIRHSoc1U+SV
OEX3slAsDbuSfhgk5XuJQs2/JuaY2b6DFqMcp0uoBUm4uhXcEXNumJRlaK6pk9y74mB5y8A6Px b9
MAjzlgYAQktjAANaPLAMGW7DpgoQgtYABqb3OEB4GhbfAMYITb EyN0GSjvgoAyEYBbhUJwhoMlv0
wAECMABAi2HwMIhq/TfC5Cj3RpG+DgRj/EPiRUJdf/kvlZSjPUsx3JDN1Ol3u00B3AvqWfskehOK
W3LaJfGK5Zp3Bn2OpMxlVVzBUE81y60sR9KhvfUpxxaSFHvcJO/fbENCW7LXk2pBeJXD7IWWG0iJ
malLksK1LbjPF4i1/ArQkpJJ7FI+I71SnAlHW+xz1m6v5FmzG33ctvRXNRTJmwFadW2 ytJsCL9eh
+OKvElLYtUaVsbNVJ/IE5jMGU5bVSy/KCUqZN9K7dQfJQ332Iv0xap36MqeNSOg8o5qh5tpLM2Ko
hKwNTauqD3Hr/wA9DcDVGWpGNpp0ye0+mJgeBGGI8KMAzwowByDUnfAISUgjfAA NTeEANTdjhAIK
LYED2I9Ke2JkeQyBhDDJTbAIKhOGNBUpvhBQVKcABEowDJGnJb AUVjfDEzIeNfFRdBX/ACcy6XJO
ZpqkspEYalR9ZsLH/vDfbyvfFcm5PSiyMb958GlezTwNpnD+DBnVGMir5onpUp0qVrb YaSd0J82w
SNX31EA7EJxXKaxrSi3eTL17QGfaimlyKdCSHkIQRNfNxGaPUN lIsHF2FyPspFgBe5xnnO92Wxh5
HClaqmaczSp30YkLbgqDcye+B7tDJvpRpGy3Tv4U3O2+wJTCKi 4658fyXNOL0rkp8bhLVM4zH5Dt
UlSocZel+e+PCV922kDa4vv2T+WLlkUFajRVLFb3Zo2UGF5PoV UhxI8eXCQtK24c4cwKVY6l79zt
e3ljFkm29RrjBJUOcscQWMq5hTIpkCRBpb+kS6c9I5qQq1ittR APXff4eVtWObMWWO50rTJzNTht
SI6+Yy4kKSr0xuTsyWOim/bEhHmnfAMSU9cACFI9MRDYQpOGAhSThCEFvAMQUWwVQiMQnEuS IVKM
IA6E2w9xhkowAFSmwwhhUjbA2ARKdsCAaVeqRqJTJM6a+I0SM2 p551R+yhIuT+AwmwSME4G0t3PP
EaVm2oRlo9+mLkMBxRTyWCSStRv4bpshO97A26jFEpKPJo3ao6 dy9xIapj9Uq51e8y1ohU6M2m4b
ZSSNQT0sB0T0Kje2+OdCTzScvyjbKCxxUfyx3xYos6q5XouQqN KU/myv/wA5qTzSgoQGL+K6vS5A
GxUq6zYBAEsi8SahHjuTxNRTyy4XBmudPZ+frOecucMspoVTMs 0OIJNQloN1FSwOY6o93FXCR8PK
4xqfvStlW9a33NEqXBGn02kopEGOlmJHa5TEdpGm1vM3ud9yep vcnrjLknuasWPUrMsz/wAEnsvQ
S9AUmQQkuOqUqxHpb4eWIJqez2NMsejgwR6kqnzVMOJVGcBIJ0 9D2JHl/DF0Vp2ZzssbZrfBCoza
ezKo84nUy5dvUSQU2vdJ8v8Aj5Y2Y9jnTjT3NfFiMaCs8VgASR h7AJI2wCEEXwu4xJGGAkpxEZ+L
d8IKIZCbYlaIB0JvgGwyRt6YADJGAd0ESMIQQDAMIBhgZfxpbn 16DDy3AVyk1BZVOkK+y1FRbUn4
rUQBbsFfEUTmoq2WQTk9j8wmHkbLLUeOQ0/Iv4lKGqw6qV5ADoO3xuTxM2Z5JaF+f+zq4cSitbK7
lLNi6xWjUzJDFJjuCPDJv9aUm63fUA+FNu4PS2NME4pQ7vkJc2 ztDg7RKfQspz841RYZCmQ44tX2
19NKLnpYadie46Xx0IwjjjZinJzagi05ejs0NiS4tv8A7arTom yjqKlBbhuyyB18DZTZPmv1xU3p
W/LLYrxJbcL8smqjlwRI/OWn+cqF1730+mKJwpWzqYZq6MwzXTUuNOXHiFyMZDdJWjj6v05 mJxAl
w5CAzzrvRnb21EHcDtfqfljXvSkcjKqbLXAjyHMrZlqNFTFdrF PhiQ0HwVN606rEgEHSSLGx21DG
jG1dWYJK0zleV7b/ABKktj3dGX4IIuOVTFLI/wBNxX6Y6HhLzf0+xzfEZDyfa44sTrgZmai3/wDp
aXEQfxLROJ+FEi5SL9wS9q7NDecafSc7VNur0aouhhU19htp6G tdgheptKQUarBQI2CioHaxqyQ0
LVHsOM3dM7IWkoUUqFlA2IxFFwjDA8NsPgLPCnCe4IOy2FdRfC GV5AwiNBkDDCwyBhCDIw9xhU4B
hRgA9JFjgEZNxGrzFIzM5IXupiO2jSsbXNzt8iPmccrq3Jz0wW 50OnitNszStViXm9yQ2p9UWAy3
qnzNO7bVgrlNi26iNybGwI6mwOTHjUPee7N+q6RYOEGX5fELMj UiMwImX6YEtM825SkjZNxfxW3U
R3IAJPiONuKP/kyrNJRVdzpWt8U2M2VilZRpbaWMqUElbi1m5lSECynHFdCAok2 6EqN+gtKWR5HS
4X1KoYtC1Plm3cHqzSqs03WPexOkWU2ykhX1RuQpRChfWrz8re eIRmozuRseF+HUf3LDn3PcfL1M
lyFsh5TbZUlouBGojzUdgO5Jw55NT0oljx6VZzJUPaCpGZpymF Z0ydQkKOnkpliVJv5bqCNz/wC2
JPClym38NiayyezaRjfFHLjuZ6fPSzOblSI6xJjVCM3oIUk6rg A+Hv0PliUGu3BDJFtMaez/AJrk
1GMqoPtBwuRH4s1A2S8jbmC3qkE28xtjJO4ZHGPbcypKUU33OT M08L5tMzVU4Qb5hbkuJBbGx3JB
A8iCCPjj0mNqcVJdzgZI6ZNMmKRwrYhsJk1V0xmgdSgpvUNI63 AN8XUVblAzl7o9Um/c2EsMOxxq
bRfSCSrYXv2KcQkM7V4Z+05lKo5SojGY6q5TK8iKhmWXobpZU4 kaSsLSFCyrX3tucYlCUdq2L1NP
k2Cj12m5jhmXSKjDqsUWCnoT6XUpJ7K0k6TsdjY7YV9ia3Hd8S A/BdsADmNJQ2k3IufPABXkDERL
YMn1wxhm7EXwUAZJw7EETgJIInYE3CQASVE2AA6knsMLYDBuJX tKttS10fJSmpSwrQ/XFpC2k+Yj
pOyz/wCIq6fIKuFYmoN7sg5LhFBocmoZlkx4FQcW/LW446+7JWVq0J1K1qJPWwJF+1vPHNyxjGTc
ToYpNxpl9pWV49ThQaQClUZ1/nKjX2eUDcuyV7akgkqDYIGwvfbGTVvRtiu5p1HhzXqSrLORojw Y
c1sv11nloaZA2WlpRIBdPQKA0o2AuQNNmu9iyPTyn78l+xT52U uIEKnuZZpVFqWUwiUpoNxovvBl
s8tWiUuoI1pulyx5CUJuLjWb7dLHixUpNp+nH+yC1PI/Ei/2Oncl5ek5SlxpLZqbNODjZZbrMhD0
soCU6+YUbbm5AJJHQ9MY+ojjbuBsw69OmfJLcRstKzhnNiNIWw hlstvNxpranGHFJsqy0AjUklNi
L+YwsUvDnbJTjeOkZNXvZjqFUquZryqNCp1fJRKbYgKfLLJfL6 0R0ukoa1OKKrkLKdgkgDHRl1Ue
adlMsWXLjhinK4w42A5+ybQ+GfDqfCocFEVEOK5y0J3KjpI3Px OMGpznbLHj8OFUZzwIoDtMy0Is
oBtf0WZKt9iCVKUB/rAPxxmS1ZJy/NtjBk2UF5FO4rUIZSzHGnPhRcqsFqQrmJ02ULosE9QChCFb
/eOO9022NHGz/rbMjz/MqNQo8hTTzUeElBLg0hTixboL9PljZTMzMhzJFIrzUQ2C2UoSq 3bYW/K2
K2JkxFAabsrfCqwJOjV6dluqNVOkzH6dPa2RJir0OAdweykm26 VAg9wRiMoqSpjTaOteCnHFniU2
aTVUtQ80MNF0paGlmc0LanWh+6oXGtvtfUm6SdOWUXB7l8ZWam TfDJEJmCFJfLbsYuKI8Kmwuw+P
/PphoQdOK+4BwL4kMK0nSAL4ADJOEAtOxw+AMD9pviTJhPxsmU5 SkCRHEmpaFFKnW1X0shXYWTqU
O4UgdNQMoR1OyDkjn5+pURFKlKiLqC6g2kFtDkTQ0m6gLqVcgi xNgDufLDnKa2oSjFs0GDmJLlCm
1WK3yUrYQwUpUCoqf8TxKrbkpaUntYGwtjlyjUqOtBppM6J4ac P48aMlvkIerFTlMMynDvy90goB
6WSgHp1J77YyNp2zVC1sXDhtObpFWqMAKCGWZzpbAGwSVGw/FJwpcJo6/T+8tJ0jlqVHmxkAWBt1
GJwZbkxOO5G5ueYiTWW7hxSgbgfujEZPcrSpWM851NDFbpkxxB 0rbQ26oDdJSdz/AOb8sWzbe4lD
SqLDVpLTMRelYUq2+Ia9jRihvuc38bJ6H6ROjrP1bidCje1gSB e/4YnBvkq6tJQZF0lSaLCpaXmg
lEiOlpZWLcpGrSQfIaibeYA9MRTo4bWrgyb2oaqmot0eoly4ZU 7Et5JFlJN/msY7PTZOxyM8aOX6
/m0OoTEB1FSrK9B3/LG1yMPcZUDKc2rw5GYnlNpS+6pLDTqVfWC9irUDsAQQLA9Dhbk qDzqa7EH1
jamlEagCoKSoeaVDr+o74aER4WRgETVImVKguNVmlOlip01Xv0 VdibLb3Nx3SRqSoHYpUQcRa1Jo
d0d2ZQzVEztlel16CCmLUGEvJQTctk/aQfVKgR8sYl5Pk0JkscTQrGCMRHQdBOGSDJ6YA7BE/hhC
CtILi0oHVRAGADhTiDWm8+ccM0T0DVEMoxWja3gZAZSr0JDd/njXijUUUS3ZG1mkOMIeQoa0vC5I
FivSdXb97Ym3fc+eFljasljdMlaLUUuUgwlJ8Lr7Dg03sC3qGm w6g6+npjkSTUrOnF7He3AVgLRB
qEkhLrDDst5NtipQCEm/9bUSPhjmyVbHRjwZ5QFuR69Ikl4ASpL6UoN7kheoW89tQ+WJxe qLOhgl
oyJG+ZLrb7UYJVfbuMUN0dyTTVkpPzJRaotMX31K5ySrwRQXnU kbqBSkK8jcEdji+EJyWyMLxylv
wvXb+R9mB6dPXHcnxqtNai2bSj6Jk6UmwISfq77BQOn19caZY8 z7MpUcS31xV7/qj8+SJTmhvMMF
5yEXFtoUUKWptSPEOv2gDjFNOLpmuNx5Mnz17sajSoM11CDVJf urfM6LUoGyfie2NEFcWczq50is
5hzSxIpFfoynA5U4TzcVbn7x5S0pT67o3v3KT5Yhw2jnLs0c08 bsyrqFPEcKCm2ZADaU7lzdwrX8
y6B8EY6PTWmYOqVxMNptGlVOWq6FN6xp1uJPgHdVvlbHWRxzZK i1GjZchQoTOlphCUoRYgeu1+p3
Nzc7nfE27JEZVaemRSnyhopXHSFgrFylQ3sRfuAR5b4EIpbcJK HAs30nxJHp5n0whF4ydCjusyWJ
BUr3pOjQnYkWPX03Ow/HElSI3Zq3sgV5xeX6/lx5RP0bJTIaSf3UuXCx/poJ/vHGPIqyfH+vxF8P
0nQbieXa/fEbJkenEbGtg6NxhgGSLYQBEjDAcwiRLY/tp/XCJHzy4eNqdzZU+adbmp29/vcwAn8z
jfHZGWXJosykIloKVp1W3HoRglwEeRjk+iTagaY5BQEomurTzb eJoIJ1q3FrhIJ79vPHKzJQj4jO
lhuTUTu/hokUjh3MnFkBGhMgp1dGUgBhsq81EXHU+L0OOLK9Fs68ac0jD5 M15vLsl6EBInxmHZkY
lOq7yUqUCAOtzcEdwTieNU1HsWze+pG28FeItOzbR4c5lKm0vB Ta2nR4m1jZSfUA9D3BGDJDTJo6
EM2uNlnmwq1RczuVmgS5kZyQkB33JzSu4TpvptZQse4NiTi/DlePazdB9PngsfUwTS/OeSfzpmPO
Ga8uGK5VK0tbhAW17i3BaI2vrWhRUsbHwgAdz5Y3TzrTyynD0v QdPk1+GmvWTl9Gq+bZXKYynKWW
Uw3HE6kBSnFk2Tc7k79AP0GOS/elYs+d5Jub2ObM+zZvFLMHOpcaRKgx7M09cZCip1eoKW4gdTcp
sCOyQdsaU1GOk4mSXiSsb5oyqeHEOqVnMVcjyczzFJVMisq1tw 7iyGisD6x42BIT3Nhfrit02kuS
tXXGxzrnymTYs4qmNFMgvAFkp06N+lu1iLW9Djf08lLdGLqo6d iYoYp7dNVyYaWnHAi61JBKrDcg
npv5dfPHUjNI5bT8gqnUuamk2NxuFqAHTuTixO+Ctoj3GEpafk rQvQ2koLit7XSqySD52O+1t+u2
GDKu82mPNLLo1FgJuFoKSVW7g+V7Af8AqcBBk5lEqm1plHMLaP EolPYBJP8ADD5FRfPZOdJ4j5x+
4uIV29fedv1OMub9a/f+i6HDOqApspGq5OK36FgwQkYgSYRKbYYBU7nAJIKMMfAZhfLe bWd9KgcD
VjujgqlwzQeM2baUpOlbNWmNJSO45yin8ik42Y3cUZpI0ZYDY3 SVFRsEJFyo+VsOTUVchRTk6Rau
HeUk0JCXKlJASsFboDlkNNg35YV6mxUoeVh5ny/U9T4j0rhfU9H0/TuKt8/wafnHOlTdyesoCoVE
kNl5tChZ6YAD9coH7KDYhANjpJPRWKVq5kalGMdkUHJ1VMemJc dJUhuM5e/UHScQlKpmhY24l/4C
UtX0OuKs8q4RJbUjZSVLHUfh+eHKbu0aoY0o0ze8v5qVR3AzVx yrK0olaTy3B6n90+hxKLT4E4yX
Jca9xCpApiErqEdQA8CW3AtR+CU3J/DF7nqVFcY6XZx57RnEqr1OtsZbjx36dTXm1OPBYIekFLqm
+Wofup1IO3VW17DbENSS2FOD5Z+4QZxpeUZAXMDrzbKCp8pcOp RCR9WL7D4nwi3TCUkuDDKDbMsq
XEefxZ4z0aaI0aFSqbKLtNpEUD3eOlAKubY7KXsFFZuSbW8sa4 4/daXL5KbSlfKRZqvw+GaMxJde
Kn5CbuOPOX0BxXQhN9ggEkJHVShc+EnG3GlBaUZprU9Ui5U/IbMKMliK3yGWwEAIABNgBdRHU+Zx
oKRc7hzFqUJ1tyKzIWRfU8i6unZXUfI4abRFxvkwzPWUTlcOuL CjC1hCiseJo33CjtcWBsbeh7X0
Reowzhp3RkL0pydMky3CSt9xTpuelze2LChltySjkQ6rN/7pgNg/1nFBA/U/hgjyRZpHsh09U7Nu
c6igEsqYaQlRH33lr/QDGPK7mv3/AKL4cHUP0esAG2FyWDAJB6jFYxYbTfY4l6CFpQbYBi0jzGAY
q2E9gOLeL0AZX9rCSooKWao5FnNpA+1zGQldvPxoXjVhfu0Z5c k9xLiVHKTkN15tcdx1d2WSQFKA
v4rdRuLb4z55RlFxNWHHKMlIlci5vRVqhFYqaV1RxGn+YJACNh 1WsiwHn+Atjz8sajK6O/CTkqWx
qOePeMyJaVJW2uyR9SjdKRYdbknc+e/TzsKpTa37l+OC4GsHJ0pHIppjK57zalKatYhB+2T6C5/T
GP3pTOjjSq0bFT6CjLdQiORE3jhCUHT0022O2NTW1ImudzUKY6 hbaV2tcdcRSJ1Y8SY0ZSlsx2Gn
CN1ttpSo/MC+JccsFEyLiDwhYz9VhKMpMJxh1Uhpa06kErIU4hW97FQ1BQ+ yb7b2MVLehyimtznL
OWUJ/C6VVXXA3WYqlqRI9ykIfcZSuyucUgg6CLpvYEEbgYvjUnpumcr KlHtsVXhDIpdPaeS06p/M
EuSmHHQltR+oIRuDbuoEkdfCPXHTjL5nN0P9jpym0lmF4Gxex+ 0dyfjjYlWxme7JdqKkHYdsTIrY
MI4QobbYBmecR8tN1SPLaUyHmnm1NutEkBxBFiLjp8cWJ07KpK zjnNuXnMsVRcQ61MkksuqH20+v
qOh/HoRi+MrVnMnFxdE6619CcHEzCdMmq1dLCBv9hpJWSPS4SPniyP DZA3T2OKSYWRqzPKQPeqgG
0q80ttgfqo457d5GaI7I6CLtxiaQyvjFQ+QiTfbEvQYQG3wwAE CsAxVr2wmIppy/BqvEubWmm0io
Rqa1SVSrBRADi3SlPlYrAV0O1u2JLguhHezK/ajoktqgUiqFDMsw5ZjLU2wUkNuJJGs6j4daEgeq
vXeicbNS2KDw4YdkSGeU37um/VsBpAPlqNgPxxy5rc3Q2VnRNDfpNGZbfQ63VpLRAajMO8xBc81 u
AEJA9Lq8h3EFgnN8UXeLGCrktWWYclT0uqurDkuSsBagjSNKQN KEjeyBvZN+u5JO+KskFjlpidbp
VrhqLjQWZ8+ShrlhTZ2urFe7NbguWaMinop0VKVI3AxPTpK1u9 ik8VM3LyRkmfWks6g1ZA36FV7H
pva3TFU02rSLlS5Obcj5vzTxOanxmgpSXgEIQ0hIUoE7lTlhYX tvcd8Lw9C33Zhc3lncUPf+q5Cp
4FRrE1VSqqnEFMWOnTHjDUkqUtV7rsAoBIsCSO2NnTtyagZ+qx xhFzNCp1FhUrltw4jUYNo06kIA
UR6q6n5nHbUa4OC2yRipBSfO+J0RJAI1WwCDPIAWkAWFsAURE+ KiQlYVvfbDIvc5o9pmmmnx6DDi
ISS9JU/IIT4vsFLSb9rkrJ/sjFmOSUtPcozY5PHrXF/0UPjg2nLycn5TBsqnQFSZCTbZ15Q6+oCb
XxqltHY5vc6d9n6hmg8IsvtKSUuSULmLBG4LiioflbHNi7bZp7 Gj6LjFwEGn88VfAkKB33wAwgOA
AiemAD864ptla0WK0pJTfpe22BsaIXK9PRSog0AAqUVn1J6nD5 4NaQTMdKi1uFJgzmESoclBbdZc
HhUk/ob2II3BAI3GI1fJatt0c/Z5964arj0WhwZK46lrqDLryg8h3QgcxJb6G1xq2BAsQbE45vgT
WTVZt8WMoU0bJQWzLp0GQuN7op5pt1Ue1uUVJBKbehJHyx0aMX c07K1MLkJDnVKlHb52/hjg9S/8
rPUdG/8ACmX+gJbgvoUUDbEIOjXO2iwTHkzVAjpicnZXD3SrcUcmJzxw yzFRE6G3ZERSmXCkHS4n
xJ/G1vgTiUdiGR7GP+zE7QYkmtUdhxpMptll8JBGpTYugj5KJJ9Sc UualLcrxpxjRp+fJDLdPjxm
h/SO6zbuEg9fmoY3dGrm2jF1zqKXmUTTcrIHpjr8HEYeIzZW+GgH ikAbAWwAfpKrvddgnfCE+CNe
UlDalEdN8DairY4pzdIwzinGDzvvz7XPLMpqSpFt1BDiVFI/upKRji4sz8fW+53uo6aP/FeJeX1O
ec91ZfE/jDW34ThfZmTkwoBVsOXq0N+f3h8749NlmkrXkeHjF2d9QIKKZT 4kJu2iMyhhNvJKQkfp
jHFUki9ryHzQ288T3EV1JxUWBAcAgiTtiQCwrfAAiW/7vBlvd2mXHP8ARST/AAxFvYaK7w/rZzFk
qkTVq1SwyhqSfNwJSdX94EK27kjtivHkWSNo6ebE8U3EnXze+L SspVdy6azWaLLW4ltFLlyJZFrq
c1sFoIHkPEST6WtvcIVljhNqBSFdSo/rhjRp+UVBNIYBO/j/AMaseb6l/wCaX7fwj1PSf/TH87st
LSbjbFKZsHkQLQd8XKyLaoLVcxRsvxDLlSURWkEXdcNgD2xJzU d2QS1bHzzz9U5ORuObtc4XSnqu
y88X2IkaK8dJWfrYq0lI1IKr28hpPVN8XY3jnBxnsZMsMuOalB WdfVyTImOxfemhHfQwgusBWoNu
KSCpN+9th8sa+ii1DV5nM62eqdLsMG2dLfxOOkc5B2WyN+m+GI W7cEk9b4OQAvKHNcI7pAwJgeGA
XIbi7bJFh6nHM6vJXuI6vQ4blrZjWe4pddfFtuuOR3s7s1sZBw F4cF3jZJd8bcGjKXUAU2sVLNmk
dOl1E+fgx6SOTxYR/ODwvU4fBzSj+bnYAQfDffF6MrJKMptCbFIUcHwApyFd8V+pMKF X+OAAiVYd
gLBwrEIlMmVClMDq8y40B6qSR/HA90x8bmUcDp5VTIjWr6t+K22fLWlIKf8AMP72OZ089GVw7M9R
1kfEwqa7fwaosePHUOKiNLIW47fucMRIoYB5az+6DiLJItGX5D rMZAF9Fzb8ceX6q1mZ6zpV/hiX
aky+apIVimLNLVFncaSzG5hta18a+EZ9W5nlYzLzpimWiQQbYz OVltbDymtPyLLK1EgdSTtgUWyq
VIqEl0ypLjxueaoq37D/ANseoxQ0QUfI8xkm5ycg2n6sDbyxcVheUUISPPfARBuo+d8FAM 1aluqQ
jxuKWEIA7k9B+JwnJRTbJxi5NJFonQkRqahkHVoTYq8z3P4485 KbnJyl3PT4oKCUV2MWzjTSp90g
XviqRtW6KPw/njLnEtMdXhYq7Bjnb/5qPEjftcXH4Y6fST2o817Ww8ZEbs2pRx17POBGCtSlYlYi
vpiTe0dJ/wDyW/hheGwUkHTBlq25Kb/2v+GH4bY9SDJgTOoYR07uH/dOE8bDUgv0fOAFo7R+Lyh/
s8Pw2GpB4sCaZLVozRIUOrq7f/rw/DYnNbnPvApZlUVhseFbZsD6/aH6485kemdo9pjWrFpZuLN1
jxCygN/jjtwlripI4Eo6JOI3aZ8ZPnfEyutyRaRZoAi2EySL7lejiVS46 7XBB/Uj+GPO54askj1H
TSSxRJpNNVEWCEnGdwaNKlY7zFVfc8m1GRqAcZbGm/mSEj8zht+6QjG5IzHKdPXUZAcXdRJuScKM
S2TNKqkNNJynNe21rQGUA9ys6fyBJ+WOh0+O5o5fU5HGDM9SyL k+Qx20cCxaW7I6YACrGx9BhkRn
JJSgm+GMg0V+NTazBQ+4hKnXXNCVEC+hNyfkSnGPqpVjaXc19N HVkvyLQ7WBNTYG98cSqO+nRVMy
01LjajbcjEJVwaYMwbiC27SX2Z8UqRKgupkoUkkG6Tc7jfpcYv 6adSVlPW4PGwtHTFHpbdVp8WY0
+pTElpD7Z5rqgUqSCOq/XHqoxi1Z87tk1Gy2hNyXdV/Vf+/idITbKgnNMMWPvkMDzMlFv1wtSJ6W
E/lfTtVvpSmg+RmND/NgsKCDOVObHjq9JST5z2h/mwWFN9j8c8UpKL/TNJ27me1/vYL2CmIRxCpT
V3fpikkoBWB783vYX+9hahOLo554KoXT4kZRFkrbSsfGwx5Obu R7+EajRuTMtK3/AO0kG/r0x1el
lcNL7HE6yGnJfmOUNbg2uMbjESDbYW2LdRhOgNL4avtOsNsrsS klO/bcnHEy7ZWmegw74E0Xyv0f
kNhWmwIvgnjrcMeTU6Mc4i1BcanGGAdMl5CD8AdX+UYwSW51sf A8yXCCOWbbDFsUVSZZOJ8pMOiU
eIANTy3JCvPwgJT/AI1fhjs9LCk2ee6uVvSZu06pS9rbnpjbRzx0q5WAOgw6ChRV9U s9sIRFzF3u
Ae9sMDj32kOK6qDxByq5CkKcNMVJdkxQk+NC1IBN+n7igB1BSe 2G8SywcX3K5ZngnGS/deh0tw3z
CzXqXElMvJfZfaS4hxJuFJIuCD88eclFptM9TCSmk1wy5VOMJL BA8sZpI2xdGMZ7o+sPBSAbgg7b
YrTcZGulKNC+EfFk5eyuigyoQkO0tamkuuz0tXaJ1N2ToJsAbf LHrOmyqeNHzvr8Dw55Lz3LuvjT
HAv7kE3PQTisfiGsa1NGBxZzuy23q+yn8Mc9I2D5q2m2kAeQGL BMIEJAGgW+WABwhF074NxMDVV8
mlzXQbcuO4sHyIQcNuk2iUackmXnhXSEv0KHdNlIaQDfrcJAP5 jHm+ZNnudLUUmXuoRVU96GpOwc
UW/ibah+STjpdI/eaOR10fcT9SYikqZSrrjqHHHbbhbv2whk3lKt/RNRbcUbNLO9+gPnjn9Ti38R
HX6PNt4T7m7VWrtVGkR3BcnTvirJJSii7DjcJswzigED3By/SUn/AAqxgkrZ1sb5JzJkhBSg3Fr4
kluVyexH8VK0mbmlLCDZMOI0yd7+I3cP+MfhjudOv8Z5rqH/AJGitQnAhGtRti8zDtD4BCjuMAgi
nQUWSRYnDEQVRlaCoDzGGHJ82uN9cFW4jTdJ1BhtLRPqVKc/2mL4cGDqJXPbsb37IHEjn0t3L0lw
mRA8TFzcqZJ2t/ZJI+BTjkdZi0y1rh/ydv2bn1Q8N8r+DreNVEPs2J2tjjyW56WHmU7NcdlSTe3i
Nh64zzRtxp3Zz9nyNIoFSYqMB5batYZcSAkpWknYLCttOrrYg7 7EY6Xs/L7zgzie2unUsayrlB6X
mGTIicyZTX2HQtTfJhrbkLKkKKFmxUnSkKTYEne+wNjb0Gld2e J1Em1SUJQVakhKRfdW+MiZpYKQ
7GhMuPLdQ02gXW4tWlKR6k4mJ+bKBXeNdJphUinMKqDvTWs8tv 5bXP5YtWPzKnkXYpNU46V5aVGO
7FhJtsGo4Vb5r1YtWNFbmxOReKWac41qRRJcpE+FIjq13YbbWy ApPiBQlJN/s2N/tHyxn6lxxYnI
29DCWfOofudmcLEhiAkFNh5Y8vDds95kLTmiSkwbpO7K0ui3ps f/ACk434JaJpnJ6mGuDQulT0us
DfYdMdtnAHxkAi174Bn5qWhIKFdMJq9iSlTsuGXs/mNDEOU9cA2bWo9R5H1/XHMy4nHjg7vT5o5V
vyUziXXXqzKgU+BZcpyUgp8trkj+HzxhnUVbOnDue5bzoiPFCg hfMSkks2OpJSDqBHa1jfyticVe
6KJy0xdjRdRXOedkPK1PPLLiz6nHegtMUjy85OUm33HnvQ5YA6 dMMgLM4BOxwAEcnhEfUTaww6EU
3OdbRAo7iluBtb55SSe1xufkL/O2BvTuxpW6R81s2PKfzXXHFG6lT5BUfXmqxqXByJO5Nkzw1zqv
IubKbV0qIaYctICd9TKtl7d7DcDzAxVmx+LjcS7ps3gZVk7d/gd3sZ5cnNNs04hbpSCp47pSCNrD
ue+PJy25PomFprY8mQ5Eu70qS4+6RYqUdgPIDoB8MZpWzbGjNu IkNK6HPYVulbSh1722/O2NPTNx
mmjJ1sVLFJehnNLn1yKy26xNIJaQ1pbA5aUpFkpS2oEJAHS2/W5JJJ9L4l8HzpxS2NAqNWj0eBJn
TXuTEYRrccIvYeQHck2AHcnEVHfYbltuc7574kzM1yTe8anJN2 IiVfZ/rL81eva9h664xUTPKWoo
i5y33CSrYYsIjKbKWrwg3wAb37NOS3nqZLqRIbXLdCUuabqCEX Hfp4irp5DHnvaWZKSh5Hr/AGLg
ahLK+7/g6roiqjQ42pLaZjPcIOhweZt0PwxxoWtz0M6ezJGVXGKrCWUOW UnZaFDSpJ8iMaoyMeSK
rYzDKXtCUGFn2r5LrMkU6RFfS1DnyFgMyCQCWlK/cUkmwJ2UAehAB9DiUnjUmeSzTis0oI19ddaa
KAXEgK+yb9cWNB6DaRmRttV1GxTuUDdXrt6YCXApNeaSvmHkSW bgqYeSFpNj1sdlJt1HXv8ACucF
OLjIcZyg7i6ZfKDEyFCyzLznKdnU56KvkPxqaxIqKYyVqT9Zyd KlhvSFr1hdkpSobkWPm+owTxyc
JS27N/wdXD12bUo0n9PqR/En3LI7TsynqjOvZiipdS8WXEPGMu1nNCvCgOW6i5VYn1xZ0fTz yZFK
f6Y7/v2+5m6jqZZtuPQzyBmVthpIdcstSj1Pbb/jj0lHPuuR8zm1txWlK7jUQB5/83GBhZ69mW6w
0g6ljrY4aG2eT8yswoTj0qQlmKwnmPOrUEpSB5kkAfPEG9O7HG MpvTFGHZp4o07NVRq9VW45IpmV
2m5zPIc+okOkuJSlNv6QBSPtnYqAt4UgmqGrLO3svL+39i/Np6fG4rdvl/0v37nHzinHFFx1Rcec
JWtajcqUdyT8STjpHAuw0GEuoy2Ibf8ASSXUMp+KlBI/XEZS0pyfYcYubUV3PoJkCgMUSkRozaTo
abSgFW5IAsCfwx46cnOTbPo2CKxxUF2LPUXmkNEbAgYzydbHRi mZHxMeQikSnegQlSvyxq6ZNzSM
XWSqEvgYtlCp0OvsyGsxVZ+K4woBmG0VNNlJH29SLlRvcWPS/e+3p1j8j5056nbIPjZn8VquGhQ3
LwKcuzxSdnn+h+SN0j11HyxbjjW5CcrdIzGS/r0hJ3I3xaViAnSnbbCsCayTkap59rjdNpTHOkKQ
p0lRsltA2KlH4kAeZIGItjOpOBjApeU6WwbBSWhrt3USSfzx5H rXqzSZ9E9nJQ6WCfkbpFlIMcb7
4qxvYvyPcqGbF+5Oe/Nq0LaBUog2Ckjcg/hjXjjq2MGSbTObOGeS36xX5+daoVBU5152Gyr7RDhN
3VeliUpHlc9LX9BJ1FQR5XFjc5vNLuWWZmasZdrIRDqciFTS8t hUKTrkMAdlIb6gkAqAFhuADjny
ySg5RX58zvY8UMkIuW9/nYey+LklyEeSgh9tCWy48lTKkLtbWAFKFrkWQT88UPPm1Lf5bm 6HQ9PJ
ammO2+LiUUqFAUt5MyVGJfqMSVploWlfiKG1J5diLJ2sQDfY2x RLL1VuWva+KVfPk1R6DpNSjpXz
f3E5X4g13I0NNVyjU6/TJ0dJEh6JV/eGi2Tqspop1E3BuLFNr+RGJeLKSUZfUtfSY1cpJNf/AJX8
oeVv2gKhNRBq0iMioNyVlS3HWlthRTsW0KT4LAFNiAAnoU9Cb1 Ocfdg6rtRjl0PTveV797/0R8ni
6zIYVIfo77GlwIU01M1LTcEgm7Vkg72CjvY+WBdTl1Vs/wA+JTL2Zg85L5P+kF/6VYUNNPdZptcl
Ozm1OtR4yW3nEgEjcXR5E7XFrm+LY9TOTd6VXq/9mSfs+EUnFyf7L7hJHG9FOqctmLCjOQIyLvT3
5nVWm+httCSpZvZO3Q3vYC5HnySiqVN/v9kgfR4oy3ba+X3M4zhxGrObDETWn2hGU2ZaYA0NRm1G
4aSWzdS1A+O7h8QIskJsVLeTbu+339F5bfOySioLSlSf4vV+e/yIDMNefpHD6XS34jkV2oLjsBTz
2p51LClKKimw0I8Vgnc7p6d+hgg4tyfc4XW5ozqEe3e+TNuZq3 xsOTRauE7KJPEmgBY1JQ+XbeZS
hRA/G2MvVOsMjZ0avqIL1O66JLCYyd7G2PISkfQ8UdhFTlagdzipbm ttJbGI8cMyIpWWZSVqAW/Z
lCSepJ/9Ln5Y6/Q49WReh572nmUcEvN7HNsmUl1WrY/HHpkeHK6p9SnVLO6lG5PrhgTeU8t1TOFd
g0ejwH6pV6g7yIsOOLuOrsTYD4A4TaStiE0qD9I86S+lSIMcgO A+ErWfstj1PU+QBPW14sZ177Gd
Fp9QpCpqWWxJXWUx5agLHQkNlCfRIStVgPM4mkDGuVgaLW6pTi bCFUJUUJ8tEhxI/IY8j1kf8jPd
+z5Xgh8DVotR0xhuDtjHB0bptFXzhNTMpUpi+7w5PyVsfyJx1O ni3JHH6iWzsjabR3NKEx20qQlI
SGxYAJAtYDHVT8zlye2xW83cJZWYffXaKwwmtKZQhxiU9yhIbC rgWVtrSLlK7G1rHYjCnBTr0Hiy
+E/RmeSspVfLzLzVRy9KpuhJZdlPtLbZc03VcOqPKUbJO6bXAOOfl g4u2z0fT58U9k+xG0eUILku
A8uPOjRHxKS62QVFCkhtZaVYgLGpvbobKBOwOITimlPdNqv73+ pdhk1LTzW5PwMwSYqZdOYRG98m
BJjzIzBDtrk3eH2iNN9+qeoKk7Gmk421sjb4ji+dzzN+epGbst RIzqYzQpbJS69Aa5bDrhWTzUBB
AC12Sk+GxsSNNzi6/eiqr0+5jySlGL09+7v9kvzuLp7LkpcchpvS8jWhhT31K3NO7i1 G6NR6aTvY
G4FhfHJ06OtjepW12IWrxWaY67UKm8tabgpL6xolL6W1C9kD7v UpAHh1bW425bR2Ms4pRbbJSn8L
q9UIsblUlVNpElAU5VVaQh0aiQdN9ak7eEABJNj6jbjhLJ7xxu p6nDhbjHlc15/n5ZPM5HgURsvO
zXqrUhuqbKQnUD/VG5G1hupR9bbY6McKhweez9RLMqb2/OTG+MTyk1qnNEnlpjqUm/S5XY/4RjXD
g5GTkoiFYmVmv+zBwszRxS4ox2MsUWZV109pT8lyM3duOFJKEF xZslNyTa530m17HGPq7licIq2z
f0TjDMpzdJWfQuh+zPnB2PObjM0txyDLMFbaqo2FuvBKStKOxK SopIJG6VAXtvxH7Nzd6v4npY+1
8EK2fyX3M04gUSdkyrTqTV4qoVShq0PMLINj1BBBsQRuCNjjFL BLDLRPk68Opx54eJjdpnEfHDOq
cz5nEOK7rh08qSVJPhW6dieu9unx1Y9L0eHwoW+WeM9pdSs2XR F7R/kz1LqsbzkDaNHXKdShAutX
Qf8APbABd6BDdpdOcnQaoYNUdeTCiNNLUh51soWp5YUkgoSAlC bnqHFDscLdCRKOwG3UlLLYbhsr
IBSmwU4rdR+Jt8gAMQskzVPZEzWrL3EKu5ecJDNQj+8sAjpJj7 7fFtSz/cTixO0Itud5P0LxozrC
jRHZ0t2uzHY8RkgFQWrm3Uo7IQOYPEflc7Y4HV4tU5Nuku/5yz1XRZtOGMUrfZfD+F6k7UH81Uen
mdKoUR+Egalt02oKdkJTbshbSErPoFAntfHOhDDN1GTv1W30ex 0J5M0VcoJr0e/1SsTldyNm19Ut
mW08w2hLqEX3dSoHe3UW27bEi+OvhxuF6uUcjNkU609yVpLy6Z LW8hPPhtLU26QLlsfeIHw3+eNh
lcrNAhVSkyoKUTVR3m3Buy+tI8xtc7H1G+E0QCU6nMPx0QGXGq jTL3dZlul1xJ6o2BKbg97C1rjf
BKMZRqSsnGTi9S2Znea/Zgo0+pRZ9BkDL6EpU3KhqSt9l5KvuFS7tq6/eT9nwi2+eWG1Udjfj63J
B3Lf6Ded7LqXEKXFzDzpIUC1JmQwhxAHTUplSStXTxHfbbrir/jVsnt+erNUfaVfqx7/AB/0Ggez
BTJdRcm5lrTtTUpoI90prSorVwRZS1qW4tw7A7kb9b2xOOBR4/Pz4FOTr55OI19fsTkHgBlCmz+a
2mpFt1JbXGcmlTTv9oab37XBH5nAulx+pJ+0+prlX8PxfQmMvZ Ly5kZEhqj0liGmS9zHSpS3lKX5
3cUoj5WxdHDBbtX9TnZOoy5f1y/r+CEzWZCnHENuXUhRKNW4Wg/un8j6EeuNBlexllXSZjy0tJ0m
5Cknz9cPgraMd4yURZXCWWbFthWpY30nXYXPkb2+JGLocGTItz JwoIBKtgBvfEys+qfskUWXwx4A
0yiUmMaauux/pCuSZDQMqU++1pU2Cb8ptDZShIT4jYq1DVpHCy9dKMv8L/f7fc9T0vs6CgpZlb8j
X+HRiZLy03lj+dw6BBU0ab7hd12GEvBzlFCyNbQIWoKCg4NZFl i2m/p+tUlp6h7+fPP7fyR6vo9c
lPDH4rt+fQwH2zs2HN9EkmAZcKpU2SmjRJT0NaXZzDkdUhT4WR pIQoJbQjUVhSl6gkFGN+jB1CUo
u9L/ABU9znPJl6TVGtOpHzKABQkgW26YvOSeAKUdhgAt1PpeZKBVwq JTW1TGFlCeSmO4kKG19iRc
diRt164UZeQMtVMy3NjMmVWHVmtvqVzWS4lxMdmwKDqSSNaypd wTqFiTbULqbGh9HhB6gTmUpupp
0v8Ay0gfoDiDEQ9AzFKyfnqm5kYeWuSzKL+5HdNlJ+BBO3qcSU twRv8AlOqx8+cRMwZrQhTbNZqX
1CTsr3dptCB17koUT644fXy99RXH3PU+yo1By839Eb+pVOqsNc MlKC4NPTp5EY5dJ8HZkjGOE8OX
TMquxzq8dSmrQw3HW4rTzlJBtdP3Cdr7EY9KncU/RHla0ya9X/JcPo15t4S3aDJLo2DzbLsdR+Ni
b9OhwJiq92S1EhxENFhcZEqNc2jzGUhxq5vZKh267EA79cNoKo cuOZWp89KUOP02aoW5KFvtLUn0
0mxSbdj2wJMeos7dcgzlBmPKYfcSCtaG3ApSR03ANxgprcBD85 Xu6UIFlqNr4YCtaWrAm5tvhEQM
oj6sjsq4wxvggqg5fWAbKB1fnhlZXKkhcpKx1WgkA+Y7flg7ia solSQiUku6OVMbOi/ZQ9cPuQZk
PGOe5Ro1NfVEaltyC7GcbeJCbEJVfaxv4Tbfbr2xdAzZOxm3Cv Jv/SHxPyzQNBcamTW/eRbV9Sg6
3SfTQlX44q6nL4WGU1+NlvSYvGzwg+L3+C5PsVlanIksNNoQEN pG21gBjzGNJ7Ht8smrHdZiNwSs
i22+L3HczRm6o4g9qfiuwxVI1BE9hblGfq9ccgrcuA6tuHHitq F9r8patI38V+hvjv8AR3HA15v+
F/s837SaedLyX9s4d03+0q57nzxqOUSuWmWVSn3pCQplCAjf7yjc fkk4VWJnXmYOG+W8yuvyZtMY
TPeSUmcwCh1JI2VsbKI2+0DfGT9PBpaT5MQnszMo1N+jVNAQ+1 4kLT9h5sk6XE+hsfgQQdwcXJqW
5Q1TpjiiZhiUt95EwlMZ0f0iUlWgjzA3sR5eQw6sCo5hYTEkPo bKVspcK2lpOoKRfwkHuLYaEdIc
Bcp1JdOgNsRlOTHkqKQRs2kqub+VidzjzfVzU8rSPZdDjeLCtX JuFVyHOplg9IS68AkqbbQQRcX6
4xK0zo1aKLNfFHmusNtTnkAAjlylMJF/3dSRqO9+4+eO7gyp4/eZwc+FrJUVdgolWENzWih2P3m6
u4lw/ElW/wCGL/FxvbUV+BlS/STEfN9OkLQxLMulvK2SqaOYgm9rBwb9+p2264s2ZQ15klMcTJY a
ElPMQPE1JaUDa/QpV67fH1wURqzymzYtPeXaIiGopsuRyigOWO2oncH4m3kcAuB9 FzFGq05tljWF
gkBLidJVYXJA8sD2EtxzInL97KNtKdie98NcCYozFL0pPQHrhh ZG1QhQURuRh8CISQr6hawSCEm/
ywEWUaW0p+Q44EkXO2Ag9zPOO1HDnDGZJ0guQ32Hgq24u4Gz+T mLYclWRe6WD2EOHXNlzc3SmvrJ
GuFCUr91tJHNWP7SrJ/uK88cT2hl1TWJdt38f/R3fZODTF5332XwPpBlOGkQUj7OMcFSOtN7kRmN
et15m+6VW/K+Jye9FUV3PmF7XOXJEXjxX0rGo1LkPMdtQUhISn46kLT8Rjvd JJPCvQ817RjWdt90
vt/Rj1TyfU6cylUmlT4qjsA/EcQSfS6cazl2KVRplJbVSn4q4s4KEiSzKa5a27pHLSQoXB0nVb +v
6Ya80FnagaA67g4xUabITNeSKbnmme51FtQLRKmJTRs6wo9Sk+ RsLpOxsO4BBbXANJ8mF5j4KZto
RcVGDFahoQVl6M4ErCQLnU2o3vsdk6sWLL5orcO6HvCbhBUc4T 3pjyGHaNBst8pUSHVkXS30HXqT
5D1xl6vqfBjpX6mdHoOkfUT1y/Svr6H0EyXw/i5Dy79JCX7w4IyXXFFAQlKUo1aUjyG+OFpo9bFa
npRERs4MZtflVOA6h+KUoIU0oL3Smy+h3tYDbuDico6XuSlVJI xCoyna1V5VSdTy/eHCpDd76U32
H8fnipuy9RUUN3dtsMj3ArW42ghKrtnqg7pPyO2LoTlDhlGTFD JtJDzL+Y/ot1TB1LiLuVRL30+a
m7/MlB2P6dXDl8TZ8nEz9M8W64LvEkMust8pSZMZ4EoT1StPfTfy7 pO4xoZgoJCiKpzUt2iGKw/J
G5kIKwD5BQN0i/bcemDvuIqTlRcysUP1l0e+SFKufEomxF97abb/ALuJJ2Qd9yXhZ4o04J0zmtXn
uB+NrYbQkDqmcaRCkpQ/MQht1IIfR9YgXuNym/cWw0hXuQVRra2EiTDImxT/AEhYGsaelxbC+IPd
bC0cqXGbW2Lg9LJI/LtgEk+wwzRlc5hyzVaUtpRTKiuM303sSk6T8QbH5YE63E43s+5 tHAjh09lW
kU2gsxnVopsNhrWGlDmeE6l2t+8oFXzx5ub1yc333PX44eFjjj XZUdI0iFKhxSp1hxpFuq06R+Jx
bBFM+Sj5kqsSNUZBkz4UYkg2dlNp7Ad1YJRk3aT+RONJUcJe2m in1XiNRnotQpjqpNMKTLTKQ42k
odP1bmgnYhVxcggjY7kY7HRJxg1JVuef9qRucGvJmYO1zP0nLx gjNcKfSQkERk5sjFVtWvor60WO
9jv29MdZOTW39HC01uZvmCPKcU1znY6lSE+8K92liQSSSLuLBJ 17HwqsQCNt96pSGos2Ae0s5cn+
TTavQ1E//wAsZqVl9i1e0zIKbJy0wB6z1H/Z4NKC0eI9pWYkhScuRdQIIvMWf8mBxiwTQThd7SSu
GMWrRI2TadVIlQW6ssyZzrYa1BaUhOkXOkKAF/ujGbL08c0rm2dHp+reCGmK72WfMntrZnzHkORl
YZcpcBp+MIqpzUl9bwRYJOxNrkXHzxUukgmt2a37UkrqHPqQGV PaeqGU8oSMupyZlmpxnCpTcya0
575GJFgWnkKCkaTuANr3uCCQdCwY3Fqav17/ADK//kJUqjTXFSdc91wyFR7QteCQhNIpWw6q5x/z
4yrosfm/p9i5+1sr/wDBfUG7x9zE6TanUhA8uS8fz5uH/wALH5v6fYg/amb/AKr6/car42ZkcO0e
mNj+qw5/Fw4mukxLz/P2Iv2lmfCXyf3Eq4rZhkEFXuSFAgpUiOQQfMeLElghF3Ei+uzS VOvkPGeN
mb4iX22ZcJtt46lNiEggKHRSfuqHmLHGi/NGTXIdt8e8+BepNaYQoixKaex4vU3Qbn1wtXp/IJt8
i3uNue5TZQ5mG6D1SmBFH+yxFv0JoZHibm9Kw63mGUw59+Ohtk n46EC/zw9VcEqsiZuca/MmLlvV
iYuUpWpTqXNBJ8/CAL+uFqbKmkMYGdMxUd7VAr1UhKJJJjzHEHcbnY4mpSKxvLzhm Bxbxcr1VUp5
ZdcJnu+NZ6qPi3J88STZBuhi5mCrPm7lXqLhtbxTHT/mw7fmLUwLlSmu7uT5rh81yXD+pxFNp7E3
kn5v5jR5kP35oLwPZwlX64nrlxYm2+WANNjW2jNfJsYVt8kas9 REQ2CG20oHkkWxGxUJXF1H7N8P
4iZ77uRvbDI0MkDbfDIC03OAAqQeowhhEXGAYsFQOAYtCupOAD 0LIwDTPQ6RhAKStRVhCTHDSjcb
4RNByD1thFm44ZTqttiLLEPC3oRqUQlPmcR5LWIXMjIbJVJZSR 95YGBeobnrRRJASyeeo9EsjWfw
F8QcorlhRIwuHebK04n6NyjmOoX6e6UaU7f/AEWzhrLj/wCy+ZTJbloi+zBxgq4SqJwozm4FdFO0
R9gH/WJTiepevyf2K3XmWWl+wf7QFZ08jhXVWge8uZCjgfHmPg4kpXw n8mQtLuWWn/s1PaBmqAey
xR6b/wDeV2Pt/qyvDuX/AEf0+5HVHzLXTv2UvGOSkGbW8kUsW6KqMl9X4JjW/PEqn2j839rH4kSV
yV+yszbmlqoKlcRKDTXIE9+nPst0x+QoONKsTutGygUqH9VSfg HpyeS+f+g8RIs8/wDZQMZckUJV
X4oSJMSfUW6fIdgURLPILiF8pQ1vLvqcCG9+hcB36YaxZHw1+f uR8T0LlVP2S+S6blypSYubc4VS
qNRXHIzLiIrLbjiRqCSAzfexA8Q3Iw1jl3l9P9kfEfkXbL37Mf gJUKVEntR8zVGNMYRIZdk1xbai
haQpJshKQNiNsPwn/wBn9PsRc2z49pSAN+uIkq8xSU+Qww4Nj4OeyPxT48UWRWMm5fj y6Uw8GFyp
tRZipKyCbJC1XPTsMJ3ylfy/toLSNMy5+zU43Zgn1aImNlmC9S5DcaR75WFBJcWyh4BCkNKCrI cR
f44XvVel/T7haJ7Lv7LritmCdW4ruYMoU1dJmJgvqXKkvJW4WW3vBpYuQEu oBuE73HrgqfNfX7WP
Ui3079kRniR/8VxKy1HANlcinSXbfiUYVZP+q+f+hakUinfs/JEjjSnh7IzupbgkuxnKjCpGpI5c
dTxIbLtz9nTYnr3wlqbce6/f7Em1Vmsyf2U1DpOYMq0+VxBzDITWZzsV1SaSxGU0huK8+VJ1K XuS
2lO/3ie1sTWPI+6+T+4al5Fmqv7LHhzl7MuT4D2a84TmavLkMSQ4/DaKUNxXXgUFLGxK0JG5OxPQ
74ksM5d/kvvZFT9CG49ewVwk4P5ao86kvVuoTZU0x3WZ9ZS5ZAbUq4DaEd wBfpv6jEZYJRVuT+n2
JRnb4Nr4Zfs9OA9QyNlqp1HKT9SqE2mRpUgyK7N0qccaStXgS8 ABcm1hg8Bd2xPJJMszXsJ8FaXn
WliLw0pTlINNlmQmQp59v3gOx+VqLi1G+gvWF9/Fe9hY8CHe/m/uHiz8yeq3stcIRETHy5w6ygip
U6qwFSkx6czzENh9px1C1KHQsKUSknxA2sbjD/4+PuhLJO+TQ6FkDh9GmzodJy1l6PKp60IkIj0Z
lrlFaAtAuGwDdJB2v1wf8fEt9C+SIucnyzzh+xEpOaM/U2I37ohurMy9DSAhFnYTHS39ZC/xxdpj
GtKE3dFjg5ojz69WKSymUZVLDBeKkjSoOoKklFiSfskG4G/niVbWREU/NSKjmquUIw3kSKWzFf5i
1Ah5D4c0lI6iymlp37jDa2THXcTFzE7KzZWaGqnqaXBjRZTTxd uJCHuaNhYadKmVA7nqDthUqTCt
rBx6rO/lZWabKgNs06NDjS4s4pUEL1l1LqFLPh1ILaTYb6Vi/qbUqEIp8+pSc2T2eUy7QHKfFlwJ
7KAUKWpTgdRrF9WwaWPRXfsPbbuBG5ciPLzbWKrAkJk0DMESHP YlNuhSDJSgtLKU9bLaTHN+ng88
N+TH2FUZxeZqwapGnpqeVarBivxA6oktSW3FeJDS0+EEaFb7hb fQHA9tgBZOWmv1Y5lgSnlUSrwW
m/c5OoOsyGXHEFWm5SjwkpUBvdAvge23kBJZfzGjMlKbnNUyS2VL dadZWq62XW3FNrQqyTuFIOFJ
aXQj+cxs6jjMW2OmmVOEJTusmyR5ntgJLc+5/sUcM2sj+znlSK1bVOSqc8va51WQi/n9W2j5k41N
VSKLs0XhGyahl6RW2kA/TdUmVB3nK1KQkvFttI27NtNg+oNtrYc1ToAXB1C5mVl1dK0K+m arNqDh
X1sqQtKABbazaGx8QcE7umA64d5hn5mynT6pLqIX749IW2Sykf Ve8OBoWSkdGwgb77b74jJU6Gzg
TP2cZ7/Eqt1ulz34jrtRkusy4zimndClqSNxYi6NreRscVK4TclyWVtTL Lwb4s/yU4ixMw5qlVet
RI0aQ22gSC8tDriQnXZxVumoGxB3HwxasjltJ7CapbFh9onjlS OLEOgxaTTp0NNOfdeU5NKPHqSl
IsEk+WCWlfpYRXmYlLe1oUrSLkHfvimTb5LVR9L+FjCTw2yhdp I/7GhXN/8AwEYuZnfI8zzXHMp5
eXUmYzchaZMVnluKIBDshtpRuO4CyR6gYcUm9wSsjs5I/kLQs0ZipjSHJ0lxiQ4iX42rpDbNwkEE
eBPn1GBbtJhzsGzlS5VAy9m6tZdaQ1X34hfStR1B1xluzY0rOk eEae3r54E1fvcAt6QfMdIecoWa
ZmWEoj5lnQ1oZkpsCt9ttSWb6/CLE2uRbfAtmrBDdTbeaaBmL6EfTEry4ztMfltpLbzUpDRCQXLX
VoU5cEEgXNjh04tNgJoz6cy0etUiRKWipQ2EUmoONpOtt4xkrK kudViz1wdrEnvfC/TTECytLYmU
uXlGoqdm1CjU+LCqazs1ILkcXUg3uQbK6gG+G7T1DYLIspNGkJ yNLBmSaDRYCvf17JmNLDjRPLud
JBYNwVG+rA/+wPzB5IcGT6xAyCkKmMU2htSok92wccSl5bRQpI2GkBqx73Plh PdWD33CUBk5KzLR
snxGk/Q7lLky4bjp1PIcbkI1tkiw0BMhGkaf3bX2w3ur7hzuGaiu5PzL Q6PTWksUKYxOUthFiGZP
MS/rClHVpVreGkbDw2AG2FyvUOQbEV6BXqcuhrSKPz5zVWjtXQhMh w87n6VblXN1A2vfnE9sD2W4
uSEzXTqnXGlnI0+OzVKfOejz2ngqOwta0ocWpQCTqcB5ZCrH7a 98Nbch8T//2Q==
--=_7d0ffd91c262c8419d453fffbdc05c67--

bsm
11/05/2013, 12h17
Port 25 is Closed at ***.***.***.***
Test aborted.

buddy
11/05/2013, 12h14
j'ai ajouté çà au message précédent pendant que tu postais :

Pour ton serveur, si tu tapes son ip ici : http://www.mailradar.com/openrelay/
il se passe quoi ?

bsm
11/05/2013, 12h13
fail2ban est déjà installé...

Oui j'avais bien compris pour l'entête mais je voulais être sur de la demande, pour l'instant les seuls infos que j'ai sont celles que j'ai transmise sur le forum...j’attends la prochaine salve pour copier/coller une entête plus complète...

buddy
11/05/2013, 12h10
çà ce sont des tentatives de connexions via SSH.
si tu veux limiter/contrer le bruteforce installe fail2ban, en plus tu peux également changer le port SSH. Par défaut 22, tu peux le changement par n'importe quel autre port inutilisé.

Pour ton serveur, si tu tapes son ip ici : http://www.mailradar.com/openrelay/
il se passe quoi ?

buddy
11/05/2013, 12h08
Bonjour,

l'en-tête d'un email çà ressemble à çà (c'est l'en-tête d'une newsletter d'ovh)
Code:
Delivered-To: mon-email@gmail.com
Received: by 10.194.118.194 with SMTP id ko2csp125584wjb;
        Wed, 10 Apr 2013 13:57:55 -0700 (PDT)
X-Received: by 10.180.90.41 with SMTP id bt9mr5992405wib.19.1365627474921;
        Wed, 10 Apr 2013 13:57:54 -0700 (PDT)
Return-Path: 
Received: from video.o-v_h.net (137.o-v_h.mail-out.o-v_h.net. [87.98.149.147])
        by mx.google.com with SMTP id j3si564670wje.216.2013.04.10.13.57.54;
        Wed, 10 Apr 2013 13:57:54 -0700 (PDT)
Received-SPF: pass (google.com: domain of error@o-v_h.com designates 87.98.149.147 as permitted sender) client-ip=87.98.149.147;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of error@o-v_h.com designates 87.98.149.147 as permitted sender) smtp.mail=error@o-v_h.com
Received: (qmail 19450 invoked by uid 0); 10 Apr 2013 20:29:47 -0000
Date: 10 Apr 2013 20:29:47 -0000
Message-ID: <20130410202947.19449.qmail@video.o-v_h.net>
Subject: Lettre d'information o-v_h Avril 2013
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="boundary.1365604330.24875"
To: mon-email@gmail.com
Content-Transfer-Encoding: 8bit
From: News o-v_h 

This is a multi-part message in MIME format.
--boundary.1365604330.24875
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

bsm
11/05/2013, 11h52
dans le Auth.log j'ai ceci :

May 11 12:17:50 www sshd[24303]: Invalid user plesk from 183.232.32.24
May 11 12:17:50 www sshd[24303]: input_userauth_request: invalid user plesk [preauth]
May 11 12:17:50 www sshd[24303]: pam_unix(sshd:auth): check pass; user unknown
May 11 12:17:50 www sshd[24303]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=183.232.32.24
May 11 12:17:50 www sshd[24303]: pam_winbind(sshd:auth): getting password (0x00000xxx)
May 11 12:17:50 www sshd[24303]: pam_winbind(sshd:auth): pam_get_item returned a password
May 11 12:17:52 www sshd[24303]: Failed password for invalid user plesk from 183.232.32.24 port 37691 ssh2
May 11 12:17:52 www sshd[24303]: Received disconnect from 183.232.32.24: 11: Bye Bye [preauth]
May 11 12:17:55 www sshd[24305]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=183.232.32.24 user=root
May 11 12:17:55 www sshd[24305]: pam_winbind(sshd:auth): getting password (0x00000xxx)
May 11 12:17:55 www sshd[24305]: pam_winbind(sshd:auth): pam_get_item returned a password
May 11 12:17:55 www sshd[24305]: pam_winbind(sshd:auth): request wbcLogonUser failed: WBC_ERR_AUTH_ERROR, PAM error: PAM_USER_UNKNOWN (10), NTSTATUS: NT_STATUS_NO_SUCH_USER, Error message was: No such user
May 11 12:17:58 www sshd[24305]: Failed password for root from 183.232.32.24 port 39204 ssh2
May 11 12:17:58 www sshd[24305]: Received disconnect from 183.232.32.24: 11: Bye Bye [preauth]

bsm
11/05/2013, 11h41
Que voulez-vous dire par entête complète ? je n'ai rien de plus dans la Queue...

cassiopee
11/05/2013, 11h33
Ok, il faudrait voir les entêtes complets d'un email pour être plus sûr.

bsm
11/05/2013, 11h30
j'utilise PHP mail() et je passe par Nulmailler, je n'ai pas de serveur d'email sur le serveur. je passe en SMTP par OVH (qui gère mes emails)

La configuration de Nulmailler est ont ne peu plus simple...:

ns0.ovh.net smtp --port=587 --user=*****@*****.com --pass=********************

Je ne suis pas sur un dédié. Un serveur perso.

uid 33 = www-data

cassiopee
11/05/2013, 11h26
A quel utilisateur correspond l'UID 33 (cf le fichier "/etc/passwd" du dédié) ?

buddy
11/05/2013, 11h22
Salut,

Tu as quoi comme serveur mail ?qmail ? Postfix ? Tu utilises un serveur smtp ? Si oui il est bien configurer pour pas faire relay ?

bsm
11/05/2013, 11h19
voilà deux de vérification (je précise que nullmailler est STOP):

www-data@*****.com
hcoommontest@tproper.com

Received: (nullmailer pid 24320 invoked by uid 33);
Sat, 11 May 2013 10:19:28 -0000
From: root@localhost
To: hcoommontest@tproper.com
Subject: Test mail 1138934935
Date: Sat, 11 May 2013 12:19:28 +0200
Message-Id: <1368267568.600762.24319.nullmailer@*****.com>

Bla-bla-bla
----------------
best regards


--------------------------------------------------------------------------------------------

www-data@*****.com
alvinengelmann32@hotmail.com

Received: (nullmailer pid 24336 invoked by uid 33);
Sat, 11 May 2013 10:19:28 -0000
From: root@localhost
To: alvinengelmann32@hotmail.com
Subject: Test mail 1138934935
Date: Sat, 11 May 2013 12:19:28 +0200
Message-Id: <1368267568.891862.24335.nullmailer@*****.com>

Bla-bla-bla
----------------
best regards

bsm
11/05/2013, 11h17
Dés que ça recommence, je posterais deux entêtes.

Pq deux ? Pcq en fait il (le spammeur) envoi quelques mails de vérification et si ça passe il envoi la sauce, les mails de vérification font quelques 300-400 bytes en texte, les mails de spams pur et dur eux font entre 15 et 300Ko avec texte et html, image incluses...

cassiopee
11/05/2013, 11h03
On pourrait voir les entêtes d'un de ces messages de spam ?

(sans trop anonymiser les choses sinon ça devient inexploitable)

bsm
11/05/2013, 10h48
Bonjour,

Je m'en remet à vous car je sèche...

Mon Dns OVH point sur mon serveur hébergé en Europe, j'utilise NullMailler pour relayer les emails du serveur sur mon DNS OVH, tout va bien sauf...

Mon serveur envoi des spams, toutes les heures, souvent heures fixes.

J'ai vérifié tous mes fichiers PHP, renforcé tous mes scripts, scanner mes folders et j'ai trouvé des bout de codes douteux, j'ai tout supprimé, j'ai effectué des recherches Regex sur le serveur, plus rien, re-vérifié tous mes CHMOD, réduis les permissions au maximum (PHP, Mysql,...), renforcé mon HTaccess, vérifié Mysql, la DB, les comptes, Placé PHP-Suhosin, Fail2Ban, Configuré IP-Table,etc... bref tout est CLEAN.

Je scan avec ClamAV, CHKrootKit, RKhunter,...rien de rien

J'ai fait plusieurs testes d'Audit du serveur, rien...

Mais le serveur envois toujours des SPAMS !

J'ai loggé Mail() dan sPHP, rien, les spams n'utilisent pas mes scripts d'envois d'emails.

J'ai tenté de shutdowner Apache pour voir, rien, le serveur envois tjs des SPAMS, J'ai stoppé NullMailler, rien le serveur envois tjs des spams.

J'ai bien évidement changé tous mes mots de passes et avant scanner mon PC avec MalwareByte, Avast, Nod32 et Sophos,...pas de keylogger ou autre...

A votre avis ? Comment mon serveur peut-il continuer a envoyer des spams ?

La je sèche vraiment et je me dit que c'est peut-être une connerie...