Como posso descobrir qual script / programa / usuário invoca o exim (e está enviando spam)?

1

O problema

Um cliente meu pediu que eu desse uma olhada no seu servidor de hospedagem compartilhada para o seguinte problema, mas estou empenhado em descobrir o que está errado. O servidor dele está sendo colocado na lista negra de muitas das principais listas de bloqueio, como CBL, Spamhaus e a lista de bloqueio do Outlook.com.

O que eu já tentei

Comecei olhando para os usuários em seu ambiente DirectAdmin, mas não encontrei nenhum usuário que esteja enviando mais do que alguns e-mails por dia. Eu baixei o seu log exim, dei uma olhada na fila de mensagens, mas não consegui encontrar nada fora do comum. A próxima coisa que pensei foi correr findbot.pl da CBL, mas surgiu apenas com falsos positivos.

Outra coisa que tentei foi alterar o sendmail_path in php.ini para registrar todos os e-mails que estão sendo enviados via sendmail. No entanto, toda vez que eu mudei o sendmail_path, todos os processos PHP começaram a travar. Eu tentei diferentes maneiras ( MailCatcher , meus próprios scripts), mas todas as mudanças fizeram os processos travarem. Realmente estranho, mas depois de algumas tentativas, mudei para o próximo passo.

Próxima etapa: instalando lsof e criando um script bash que imprimiria a saída de lsof -i | grep smtp em um arquivo de log, a cada segundo, enquanto imprimia o outpot de ps auxw em outro arquivo de log a cada segundo. Isso me deu algumas informações valiosas, mas ainda não consigo rastrear o problema.

Onde estou preso

Então, depois de deixá-lo funcionar por algumas horas, abri os dois arquivos de log e vi uma grande parte dessas regras:

lsof - logfile

COMMAND     PID    USER   FD   TYPE           DEVICE  SIZE/OFF    NODE NAME
exim      10921    mail    9u  IPv4 2260427      0t0  TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED)
exim      10921    mail   10u  IPv4 2260427      0t0  TCP hostname-from-server.com:smtp->208.93.4.208:49711 (ESTABLISHED)

Quando olho para o arquivo de log e procuro pelo PID mencionado no arquivo de log lsof, vejo as seguintes linhas:

ps auxw - logfile

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mail      1750  0.0  0.0  59032  1320 ?        Ss   Nov28   0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root     10909  0.0  0.0 103388   896 pts/2    S+   17:44   0:00 grep mail

mail      1750  0.0  0.0  59032  1320 ?        Ss   Nov28   0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root     10917  0.0  0.0 103388   896 pts/2    S+   17:44   0:00 grep mail

mail      1750  0.0  0.0  59032  1320 ?        Ss   Nov28   0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
mail     10921  0.0  0.0  61112  1792 ?        S    17:44   0:00 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root     10923  0.0  0.0 103388   896 pts/2    S+   17:44   0:00 grep mail

mail      1750  0.0  0.0  59032  1320 ?        Ss   Nov28   0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root     10931  0.0  0.0 103388   896 pts/2    S+   17:44   0:00 grep mail

mail      1750  0.0  0.0  59032  1320 ?        Ss   Nov28   0:01 /usr/sbin/exim -bd -q15m -oP /var/run/exim.pid
root     10939  0.0  0.0 103388   896 pts/2    S+   17:44   0:00 grep mail

O problema: não há nada fora do comum com essa linha e não consigo ver qual script, programa de usuário chamado exim. Quando eu dou uma olhada no exim mainlog e rejectlog, não consigo encontrar o ip 208.93.4.208 nem consigo encontrar nenhuma linha por volta das 17:44 (horário de acordo com o log do ps auxw).

Quando eu sigo as linhas dos arquivos de log dos e-mails que eu mesmo envio, posso encontrá-los no log principal do exim exatamente no horário mencionado no log do ps auxw. Parece que, de alguma forma, os spammails não estão logados no exim ou são removidos imediatamente após o envio.

Minhas perguntas

  • Acho que posso resolver meu problema se soubesse qual script, programa ou usuário chamou o PID e invoquei o exim / mail. Alguém tem alguma ideia?
  • É possível que algum outro servidor, não o nosso, esteja enviando spam e esteja, por exemplo, falsificando nosso endereço IP? Talvez essa seja uma pergunta muito idiota, mas estou curioso, já que é muito fácil falsificar cabeçalhos.

Informações adicionais

Por meio do portal do provedor do Outlook.com, conseguimos um dos cabeçalhos de e-mail:

X-HmXmrOriginalRecipient: [email protected]
X-Reporter-IP: [IP-from-some-who-flagged-as-spam]
X-Message-Guid: a2236172-9474-11e5-9c3a-00215ad6eec8
x-store-info:4r51+eLowCe79NzwdU2kR3P+ctWZsO+J
Authentication-Results: hotmail.com; spf=none (sender IP is [OUR-IP-ADDRESS]) [email protected]; dkim=none header.d=blackberrysa.com; x-hmca=none [email protected]
X-SID-PRA: [email protected]
X-AUTH-Result: NONE
X-SID-Result: NONE
X-Message-Status: n:n
X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MjtHRD0yO1NDTD02
X-Message-Info: 11chDOWqoTmjqhOzvWWho/vK8oL2x1FIoEm0Tn+r3D4Vy8IHo2wUnqS07yp2Fxclyw07ONZgeH1xFUrogbJOZz8Pfl5FrUXTGgolDal8+UhiPOrwCAKsLtRr0R42oH/Du2inmiSwuWc/pY9oiWRqLA5If7jw818pUulf3QP7m+wKn2HEVHAg2VBr+OqDk1w/hWWO68tIy1BSoE8QFSPMNXh31MYdKh4mif3jAqDU+0qWqWSAxPdE/A==
Received: from [our-hostname] ([our-ip-address) by COL004-MC2F4.hotmail.com with Microsoft SMTPSVC(7.5.7601.23143);
 Thu, 26 Nov 2015 11:34:05 -0800
Return-path: <[email protected]>
Received: (qmail 18660 invoked by uid 61081); 26 Nov 2015 20:52:03 -0000
Date: 26 Nov 2015 20:52:03 -0000
Message-ID: <[email protected]>
From: "Meghann Gasparo" <[email protected]>
To: "someone-who-received-spam-from-our-server" <[email protected]>
Subject: You could strike all your limpid seed right into my love tunnel text me 1.970.572.00.14
Mime-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
Mime-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
X-OriginalArrivalTime: 26 Nov 2015 19:34:06.0061 (UTC) FILETIME=[69C119D0:01D12881]

<html><body>Throw some of your hot cum on my face, deep into my door<br>
or <a href="http://holidayextravaganza.org/wp-content/themes/">run my humps rubbed</a> once again.<br>
<a href="http://holidayextravaganza.org/wp-content/themes/">Watch my profile</a> to receive much more spicy fun or just sms right now 1-970-572-00-73</body></html>

--70969AA2-2F73-4465-8DF3-26DC57EA3967--

Não usamos o qmail como MTA. Escusado será dizer, mas o domínio blackberrysa.com não é um dos nossos.

    
por BlueCola 29.11.2015 / 18:58

3 respostas

1

Você poderia tentar ver o netstat para obter conexões de saída e filtrar a porta 25

netstat -nptw | grep :25

Você pode usar o iptables para registrar conexões de saída na porta 25

iptables -I OUTPUT -p tcp -m tcp --dport 25 -j LOG --log-prefix 'Outbound SMTP connection'

Isso produz um registro de log como

Nov 29 18:15:56 hostname kernel: Outbound connectionIN= OUT=eth0 SRC=192.168.254.16 DST=192.0.2.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=36829 DF PROTO=TCP SPT=39355 DPT=25 WINDOW=14600 RES=0x00 SYN URGP=0

Observe o SPT=39355 que você pode usar para pesquisar sua saída netstat

netstat -anp  | grep 39355
tcp      0    1 192.168.254.16:39355      192.0.2.1:25        SYN_SENT    13992/someprogram
    
por 29.11.2015 / 19:24
0

O cabeçalho indica que o email não passou pelo exim. O cabeçalho "Recebido" do qmail é uma fabricação de spammer. Se você tiver um servidor web neste servidor, é provável que exista algum script comprometido. Se você estiver fazendo NAT para outros hosts, o problema pode estar nos outros hosts. Caso contrário, você provavelmente tem um servidor comprometido.

Se você estiver hesitante, tente

iptables -I OUTPUT -m state --state NEW -p tcp --dport 25 -j LOG --log-uid --log-prefix 'New SMTP Outbound'

Isso registrará o ID do usuário do processo que está enviando os e-mails.

    
por 29.11.2015 / 20:21
0

Eu recomendo uma inspeção na (s) instalação (ões) do (s) servidor (es), onde você provavelmente encontrará muitos PHP maliciosos. Esses códigos PHP provavelmente chegaram ao seu servidor web por alguém / algum bot abusando de uma ou mais vulnerabilidades do seu servidor ou seus arquivos PHP. Cuidado que esses códigos PHP podem ser encontrados em muitos lugares e formatos: dentro de um comentário de uma imagem GIF ou JPEG, md5-summed, invertido, etc. Encontre aquelas funções PHP e os eval e grep para eles em lugares onde você sei que eles podem não estar lá.

    
por 29.11.2015 / 20:37