Il est arrivé d'avoir des posts où des PME ont reçu des mails de du FAI disant que leur IP spammer et que la connexion serait coupé si rien n'était fait.
Très souvent le réseau de ces PME est "simple" et pas sécurisé et aucune visibilité est possible (Les machines sont connectées à un switch et un routeur grand public pour sortir vers internet).
Cette page vous explique comment identifier quelle machine, ce sera à partir d'un CD Live GNU/Linux.
Principe
Le principe est de faire passer le traffic reseau sortant vers internet par une machine GNU/Linux afin d'analyser le traffic et de déterminer quelle machine spamme.
On partira du principe que vous disposez d'un PC Sous Windows, vous pouvez alors utiliser un CD Live GNU/Linux (attention vous perdez la configuration à chaque redémarrage).
* CD Live Ubuntu : http://forum.malekal.com/live-recuperat ... ml#p405489
* Kaella : http://kaella.linux-azur.org/
ou vous pouvez installer une distribution ou utiliser une machine virtuelle.
On partira du principe aussi que la distribution utilisée est à base Debian, dans le cas où vous avez une distribution d'un autre type (Fedora, Gentoo), utilisez la documentation de la distribution pour adapter les commandes ou fichiers de conf mentionnés sur cette page.
(Typiquement si c'est une ubuntu il faut ajouter sudo devant chaque commande afin qu'elle soit executée en tant que root)
Voici un lien des commandes minimales.
Nous aurons aussi besoin des programmes : ngrep dig whois
vous pouvez l'installer à partir de la commande : apt-get install ngrep dig whois (dans le cas d'une distribution à base Debian).
La machine suivante fera office de machine infectée qui spamme - on voit ici les connexions SMTP :

- L'adresse de la machine infectée est : 192.168.1.27
- L'adresse de la passerelle GNU/Linux est : 192.168.1.5
- L'adresse du routeur est : 192.168.1.1

Préparation de la machine GNU/Linux
Une fois la machine GNU/Linux démarrée, celle-ci doit être en DHCP, pour visualiser l'adresse IP, tapez la commande : ifconfig.
Si vous désirez assigner une adresse IP de votre choix, voici les commandes :
<= assigne l'adresse ip 192.168.1.5 à l'interface eth0 avec le masque de sous réseau 255.255.255.0ifconfig eth0 192.168.1.5 netmask 255.255.255.0
<= ajoute la route passerelle vers l'adresse IP de votre routeur afin que la machine sorte par le routeur (route -N pour visualiser les routes).route add default gw 192.168.1.1
On voit bien que la passerelle est 192.168.1.1 pour l'interface eth0
Enfin les fichiers la configuration DNS se fait dans /etc/resolv.confneptune:/home/malekalmorte/malware# route -N
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
exemple pour rajouter les DNS de Wanadoo :
Pour visualiser le contenu du fichier DNS :echo nameserver 80.10.246.2 > /etc/resolv.conf
nameserver 80.10.246.129 >> /etc/resolv.conf
Enfin, pour vérifier sir Internet fonctionne, vous pouvez effectuer un ping sur Google - exemple :neptune:/home/malekalmorte/malware# cat /etc/resolv.conf
nameserver 80.10.246.2
nameserver 80.10.246.129
Ensuite nous devons configurer la machine GNU/Linux afin que celle-ci fasse du NAT, c'est à dire qu'elle partage la connexion Windows et que le trafic réseau passe par elle.[email protected]:/tmp$ ping http://www.google.fr
PING http://www.l.google.com (66.249.92.104) 56(84) bytes of data.
64 bytes from 66.249.92.104: icmp_req=1 ttl=55 time=29.9 ms
64 bytes from 66.249.92.104: icmp_req=2 ttl=55 time=30.1 ms
^C64 bytes from 66.249.92.104: icmp_req=3 ttl=55 time=30.0 ms
--- http://www.l.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10127ms
rtt min/avg/max/mdev = 29.991/30.066/30.125/0.055 ms
Iptables permet de cela (n'hésitez pas à faire des recherches Google, il y a bcp de documentations sur Iptables).
Il suffit de passer les commandes suivantes :
Enfin vous devez configurer le réseau pour que tous les postes clients passent par la machine GNU/Linux pour sortir.echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Il faut donc que tous les postes clients aient en passerelle l'adresse IP de la machine GNU/Linux.
Configurez le serveur DHCP en mettant donc l'adresse IP de la machine GNU/Linux en passerelle à la place du routeur actuel.
Avant de faire cela et impacter tout le réseau, vous pouvez eventuellement tester depuis un poste en modifiant la passerelle de ce dernier et vérifier qu'internaute est toujours fonctionnel.
Du côté de la machine GNU/Linux, si vous voulez vous assurer que le traffic de la machine passe bien par celle-ci, vous pouvez utiliser la commande :
Par exemple ici, on voit que la machine 192.168.1.27 effectue des requêtes DNS (protocole udp - port 53) vers des machines distantes : 203.119.8.106 (nscache1.vnnic.net.vn)conntrack -L
udp 17 2 src=192.168.1.27 dst=203.119.8.106 sport=4835 dport=53 packets=1 bytes=75 [UNREPLIED] src=203.119.8.106 dst=192.168.1.27 sport=53 dport=4835 packets=0 bytes=0 mark=0 secmark=0 use=1
udp 17 16 src=192.168.1.27 dst=203.119.8.106 sport=4857 dport=53 packets=1 bytes=75 [UNREPLIED] src=203.119.8.106 dst=192.168.1.27 sport=53 dport=4857 packets=0 bytes=0 mark=0 secmark=0 use=2
udp 17 6 src=192.168.1.27 dst=203.119.8.106 sport=4841 dport=53 packets=1 bytes=75 [UNREPLIED] src=203.119.8.106 dst=192.168.1.27 sport=53 dport=4841 packets=0 bytes=0 mark=0 secmark=0 use=1
udp 17 21 src=192.168.1.27 dst=203.119.8.106 sport=4863 dport=53 packets=1 bytes=75 [UNREPLIED] src=203.119.8.106 dst=192.168.1.27 sport=53 dport=4863 packets=0 bytes=0 mark=0 secmark=0 use=1

Si cela fonctionne, vous pouvez modifier la configuration DHCP.
Identifier la machine qui spamme
Toutes les machines clientes ont redémarré et utilisent comme passerelle votre machine GNU/Linux.
Il suffit maintenant de tracker les connexions vers le port 25 afin de visualiser les connexions SMTP effectuer par les machines clientes du LAN.
La commande conntrack -L|egrep "dport=25" permet de le faire.
Ce qui donne dans mon cas ceci, où l'on voit clairement les connexions SMTP :

On voit bien que notre machine infectée (192.168.1.27) bourrinent au niveau des connexions SMTP

Les adresses IP n'étant pas parlante, pour avoir le reverse :
et un whois sur l'adresse IP donne les informations sur le réseau, le pays etc :neptune:/home/malekalmorte/malware# dig -x 98.137.54.237
; <<>> DiG 9.5.1-P3 <<>> -x 98.137.54.237
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24765
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;237.54.137.98.in-addr.arpa. IN PTR
;; ANSWER SECTION:
237.54.137.98.in-addr.arpa. 1195 IN PTR mta-v1.mail.vip.sp2.yahoo.com.
;; Query time: 31 msec
;; SERVER: 80.10.246.2#53(80.10.246.2)
;; WHEN: Fri Jul 9 16:26:16 2010
;; MSG SIZE rcvd: 87
On voit donc qu'ici la machine utilise un serveur Yahoo! comme serveur SMTP (ce que l'on constatait sur la capture initiale).neptune:/home/malekalmorte/malware# whois 98.137.54.237
OrgName: Yahoo! Inc.
OrgID: YHOO
Address: 701 First Ave
City: Sunnyvale
StateProv: CA
PostalCode: 94089
Country: US
NetRange: 98.136.0.0 - 98.139.255.255
CIDR: 98.136.0.0/14
NetName: A-YAHOO-US9
NetHandle: NET-98-136-0-0-1
Parent: NET-98-0-0-0-0
NetType: Direct Allocation
NameServer: NS1.YAHOO.COM
NameServer: NS2.YAHOO.COM
NameServer: NS3.YAHOO.COM
NameServer: NS4.YAHOO.COM
NameServer: NS5.YAHOO.COM
Comment:
RegDate: 2007-12-07
Updated: 2009-05-18
RAbuseHandle: NETWO857-ARIN
RAbuseName: Network Abuse
RAbusePhone: +1-408-349-3300
RAbuseEmail: [email protected]
RTechHandle: NA258-ARIN
RTechName: Netblock Admin
RTechPhone: +1-408-349-3300
RTechEmail: [email protected]
OrgAbuseHandle: NETWO857-ARIN
OrgAbuseName: Network Abuse
OrgAbusePhone: +1-408-349-3300
OrgAbuseEmail: [email protected]
OrgTechHandle: NA258-ARIN
OrgTechName: Netblock Admin
OrgTechPhone: +1-408-349-3300
OrgTechEmail: [email protected]
# ARIN WHOIS database, last updated 2010-07-08 20:00
# Enter ? for additional hints on searching ARIN's WHOIS database.
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at https://www.arin.net/whois_tou.html
#
Dans votre cas, vous devriez identifier des connexions SMTP depuis plusieurs machines (selon la taille de votre réseau), une machine qui spamme doit effectuer plus de requêtes SMTP que les autres.
Il est aussi possible de visualiser ce qui passe en clair sur le réseau et donc de capter les mails, ce que fait la commande ngrep.
Pour voir le traffic SMTP :
si vous avez un doute sur une machine, vous pouvez restreindre l'écoute sur l'adresse IP de cette machine - ex :ngrep port 25
Ce qui donne dans le cas de notre machine infectée :ngrep host 192.168.1.27 and port 25

On voit bien les connexions SMTP avec le contenu du mail qui passe et une belle URL .ru
Je me suis amusé à récupérer les mails de SPAM (comme je l'avais fait dans le cas du malware CutWail - cf : http://forum.malekal.com/les-zombis-bot ... ml#p153175 ).
Les mails sont identiques :


Bloquer les machines qui spamment et aller un peu plus loin
Voici quelques règles IPTABLES qui peuvent vous aider à bloquer les connexions SMTP.
Bloquer les connexions SMTP pour la machine qui spamment (mettre l'adresse IP de votre machine) :
Pour la supprimer :iptables -I FORWARD -o eth0 -s 192.168.1.27 -p tcp --dport 25 -j DROP
Pour visualiser les règles Iptables :iptables -D FORWARD -o eth0 -s 192.168.1.27 -p tcp --dport 25 -j DROP
Vous devez regarder la chaîne FORWARD dans notre cas.iptables -L -n -v
Notez que l'outil iptraf peut permettre de visualiser les connexions établies avec le débit qui passe, ce qui peut dans certains cas s'avérer utile.

Enfin l'installation d'un proxy WEB (type squid https://www.malekal.com/squid.php ) peut vous permettre de visualiser les pages WEB consultés et donc dans le cas d'une machine infectée, les connexions à son Command Center (C&C) typiquement, ce sont des pages PHP avec des informations renvoyés (id, version etc).
Si vous coupez les connexions au C&C le malware ne reçoit plus d'autres et il devient inactif.
Voir la page : PC Zombis/ Botnet
Exemples :
Code : Tout sélectionner
278756481.094 178 192.168.1.90 TCP_MISS/200 294 GET http://aahydrogen.com/yulgbvqk/vzdlfahpxe.php?adv=adv448&code1=LVP0&code2=7905&id=1353422705&p=1 - DIRECT/195.2.252.150 text/html
1278756481.301 170 192.168.1.90 TCP_MISS/200 294 GET http://aahydrogen.com/yulgbvqk/wnrltbvf.php?id=1353422705&p=1 - DIRECT/195.2.252.150 text/html
Code : Tout sélectionner
1278756523.229 384 192.168.1.90 TCP_MISS/200 372 GET http://buydiscountqbsoftware.com/no/getcmd.php?uid=386744&ver=2.03a - DIRECT/174.120.61.8 text/html
1278756632.647 822 192.168.1.90 TCP_MISS/200 297 GET http://antivirmore.com/loads2.php?r=75.3&pgid=2 - DIRECT/188.65.74.169 text/html
Code : Tout sélectionner
1278755486.077 91 192.168.1.96 TCP_MISS/200 345 GET http://oneysongs.info/dw/dw.php?id=&ver=d01 - DIRECT/94.75.233.171 text/html
1278755486.129 50 192.168.1.96 TCP_MISS/200 350 GET http://oneysongs.info/dw/dw.php?id=1CB201460BFF130&ver=d00&v=250510&er=S_wd_rd_wr_rr_we_re_wc_rc_ - DIRECT/94.75.233.171 text/html
En espérant que cette page a pû vous aider à identifier la machine responsable du SPAM.
Vous pouvez tenter la désinfection en suivant les instructions de la page suivante : https://www.malekal.com/Procedure_Desin ... _virus.php
ou poster sur le forum.
Sinon il reste le formatage.
GNU/Linux peut s'avérer utile pour sécuriser son réseau et avoir une meilleur visibilité (cette page était un maigre aperçu des possibilites qu'offre GNU/Linux) pour un coût faible (l'achet d'un boîtier firewall étant possible).
Pour aller plus loin, vous pouvez installer une machine GNU/Linux définitive et y configurer un firewall qui pourrait par exemple réduire le traffic SMTP aux serveurs de votre FAI.
Vous pouvez aussi y ajouter un Proxy filtrant type Squid : https://www.malekal.com/squid.php
etc.