
# nmap -v -p25,110,143,465,587,993,995 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2014-10-31 15:59 MSK Initiating SYN Stealth Scan against localhost.localdomain (127.0.0.1) [7 ports] at 15:59 Discovered open port 25/tcp on 127.0.0.1 Discovered open port 465/tcp on 127.0.0.1 Discovered open port 143/tcp on 127.0.0.1 Discovered open port 993/tcp on 127.0.0.1 The SYN Stealth Scan took 0.00s to scan 7 total ports. Host localhost.localdomain (127.0.0.1) appears to be up ... good. Interesting ports on localhost.localdomain (127.0.0.1): PORT STATE SERVICE 25/tcp open smtp 110/tcp closed pop3 143/tcp open imap 465/tcp open smtps 587/tcp closed submission 993/tcp open imaps 995/tcp closed pop3s Nmap finished: 1 IP address (1 host up) scanned in 0.004 seconds Raw packets sent: 7 (308B) | Rcvd: 17 (724B) # netstat -lnpvut ( -anpvut, ) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 477/dovecot tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 477/dovecot tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 603/master tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 430/unbound tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 10042/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 603/master tcp 0 0 0.0.0.0:1025 0.0.0.0:* LISTEN 603/master tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 477/dovecot tcp 0 0 127.0.0.1:1953 0.0.0.0:* LISTEN 430/unbound tcp 0 0 127.0.0.1:1026 0.0.0.0:* LISTEN 603/master tcp 0 0 127.0.0.1:2025 0.0.0.0:* LISTEN 603/master tcp 0 0 :::22 :::* LISTEN 10042/sshd udp 0 0 127.0.0.1:53 0.0.0.0:* 430/unbound # ss -lntp | sed -r 's/\t/ /g' Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 *:143 *:* users:(("dovecot",477,6),("imap-login",14400,4),("imap-login",15370,4),("imap-login",15372,4)) 0 0 *:2000 *:* users:(("dovecot",477,8),("managesieve-log",10229,4),("managesieve-log",10230,4),("managesieve-log",21149,4)) 0 0 *:465 *:* users:(("master",603,31)) 0 0 127.0.0.1:53 *:* users:(("unbound",430,4)) 0 0 *:22 *:* users:(("sshd",10042,4)) 0 0 *:25 *:* users:(("master",603,19)) 0 0 *:1025 *:* users:(("master",603,12)) 0 0 *:993 *:* users:(("dovecot",477,7),("imap-login",14400,5),("imap-login",15370,5),("imap-login",15372,5)) 0 0 127.0.0.1:1953 *:* users:(("unbound",430,5)) 0 0 127.0.0.1:1026 *:* users:(("master",603,16)) 0 0 127.0.0.1:2025 *:* users:(("master",603,28)) 0 0 :::22 :::* users:(("sshd",10042,3)) ss() { /sbin/ss $@ | sed -r 's/\t/ /g'; } # apt-cache search telnet # apt-get install telnet # yum search telnet # yum install telnet $ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mailserver at mail.server.net greets you. Make love not war! HELO localhost.localdomain 250 mail.server.net MAIL FROM:<> 250 2.1.0 Ok RCPT TO:<user@mail.server.net> 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> FROM: root@localhost.localdomain TO: user@mail.server.net SUBJECT: test mail from test subject test body . 250 2.0.0 Ok: queued as 1CF5FC0AAE QUIT 221 2.0.0 Bye Connection closed by foreign host. $ telnet 127.0.0.1 143 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK IMAP Server at mail.server.net ready 001 LOGIN user@mail.server.net testpass 001 OK completed 002 CAPABILITY * CAPABILITY IMAP4 IMAP4REV1 ACL NAMESPACE UIDPLUS IDLE LITERAL+ QUOTA ID MULTIAPPEND LISTEXT CHILDREN BINARY LOGIN-REFERRALS STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5 AUTH=MSN 002 OK completed 003 SELECT Inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent)] limited * 7214 EXISTS * 0 RECENT * OK [UIDVALIDITY 306349424] UIDs valid * OK [UNSEEN 1] message 1 is first unseen 003 OK [READ-WRITE] SELECT completed 004 FETCH 7214 body[header] * 7214 FETCH (BODY[header] {639} Return-Path: <> X-Antispam-passed: yes X-Antispam: yes X-Real-To: user@mail.server.net Received: from [127.0.0.1] (HELO mail.server.net) by mail.server.net ( SMTP 4.1.8) with ESMTP id 22561074 for user@mail.server.net; Sat, 01 Nov 2014 03:21:16 +0300 Received: from localhost.localdomain (localhost [127.0.0.1]) by mail.server.net (Postfix) with SMTP id 1CF5FC0AAE for <user@mail.server.net>; Sat, 1 Nov 2014 03:20:09 +0300 (MSK) FROM: root@localhost.localdomain TO: user@mail.server.net SUBJECT: test mail from test subject Message-Id: <20141101002009.1CF5FC0AAE@mail.server.net> Date: Sat, 1 Nov 2014 03:20:09 +0300 (MSK) FLAGS (\Seen)) 004 OK completed 004 FETCH 7214 body * 7214 FETCH (BODY ("text" "plain" NIL NIL NIL "8bit" 13 2)) 004 OK completed 004 FETCH 7214 body[] * 7214 FETCH (BODY[] {652} Return-Path: <> X-Antispam-passed: yes X-Antispam: yes X-Real-To: user@mail.server.net Received: from [127.0.0.1] (HELO mail.server.net) by mail.server.net ( SMTP 4.1.8) with ESMTP id 22561074 for user@mail.server.net; Sat, 01 Nov 2014 03:21:16 +0300 Received: from localhost.localdomain (localhost [127.0.0.1]) by mail.server.net (Postfix) with SMTP id 1CF5FC0AAE for <user@mail.server.net>; Sat, 1 Nov 2014 03:20:09 +0300 (MSK) FROM: root@localhost.localdomain TO: user@mail.server.net SUBJECT: test mail from test subject Message-Id: <20141101002009.1CF5FC0AAE@mail.server.net> Date: Sat, 1 Nov 2014 03:20:09 +0300 (MSK) test body ) 004 OK completed 005 LOGOUT * BYE IMAP closing connection 005 OK completed Connection closed by foreign host. $ telnet 127.0.0.1 110 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. +OK POP3 Server 4.1.8 ready <137.1414802293@mail.server.net> USER test@mail.server.net +OK please send the PASS PASS testpass +OK 7214 messages (174404489 bytes) NOOP +OK cool TOP 7214 +OK message follows Return-Path: <> X-Antispam-passed: yes X-Antispam: yes X-Real-To: test@mail.server.net Received: from [127.0.0.1] (HELO mail.server.net) by mail.server.net ( SMTP 4.1.8) with ESMTP id 22561074 for test@mail.server.net; Sat, 01 Nov 2014 03:21:16 +0300 Received: from localhost.localdomain (localhost [127.0.0.1]) by mail.server.net (Postfix) with SMTP id 1CF5FC0AAE for <test@mail.server.net>; Sat, 1 Nov 2014 03:20:09 +0300 (MSK) FROM: root@localhost.localdomain TO: test@mail.server.net SUBJECT: test mail from test subject Message-Id: <20141101002009.1CF5FC0AAE@mail.server.net> Date: Sat, 1 Nov 2014 03:20:09 +0300 (MSK) . RETR 7214 +OK 652 bytes will follow Return-Path: <> X-Antispam-passed: yes X-Antispam: yes X-Real-To: test@mail.server.net Received: from [127.0.0.1] (HELO mail.server.net) by mail.server.net ( SMTP 4.1.8) with ESMTP id 22561074 for test@mail.server.net; Sat, 01 Nov 2014 03:21:16 +0300 Received: from localhost.localdomain (localhost [127.0.0.1]) by mail.server.net (Postfix) with SMTP id 1CF5FC0AAE for <test@mail.server.net>; Sat, 1 Nov 2014 03:20:09 +0300 (MSK) FROM: root@localhost.localdomain TO: test@mail.server.net SUBJECT: test mail from test subject Message-Id: <20141101002009.1CF5FC0AAE@mail.server.net> Date: Sat, 1 Nov 2014 03:20:09 +0300 (MSK) test body . DELE 7214 +OK marked deleted QUIT +OK POP3 Server connection closed Connection closed by foreign host. $ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mailserver ESMTP ready. EHLO localhost.localdomain 250-mal.server.net 250-PIPELINING 250-SIZE 104857600 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5 250-ENHANCEDSTATUSCODES 250 8BITMIME ^] telnet> quit Connection closed. $ telnet 127.0.0.1 143 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5] Dovecot ready. 001 CAPABILITY * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS XEXEC QUOTA STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5 001 OK Capability completed. 002 LOGOUT * BYE Logging out 002 OK Logout completed. Connection closed by foreign host. $ telnet pop.mail.ru 110 Trying 217.69.139.74... Connected to pop.mail.ru. Escape character is '^]'. +OK AUTH +OK methods supported: LOGIN PLAIN . CAPA +OK Capability list follows TOP USER LOGIN-DELAY 120 EXPIRE NEVER UIDL IMPLEMENTATION Mail.Ru SASL LOGIN PLAIN STLS . QUIT +OK POP3 server at signing off Connection closed by foreign host. $ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.server.net ESMTP Server EHLO client.server.net 250-mail.server.net Hello client.server.net 250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5 GSSAPI 250-ENHANCEDSTATUSCODES 250 STARTTLS AUTH LOGIN 334 VXNlcm5hbWU6 dGVzdA== 334 UGFzc3dvcmQ6 dGVzdHBhc3M= 235 2.7.0 Authentication successful QUIT 221 2.0.0 Bye $ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.server.net ESMTP Server EHLO client.server.net 250-mail.server.net Hello client.server.net 250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5 GSSAPI 250-ENHANCEDSTATUSCODES 250 STARTTLS AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz 235 2.7.0 Authentication successful QUIT 221 2.0.0 Bye # apt-cache search perl | grep -i digest # apt-get install libdigest-hmac-perl # yum search perl | grep -i digest # yum install perl-Digest-HMAC #!/usr/bin/perl -W use strict; use MIME::Base64 qw(encode_base64 decode_base64); use Digest::HMAC_MD5; die "Usage: $0 username password ticket\n" unless $#ARGV == 2; my ($username, $password, $ticket64) = @ARGV; my $ticket = decode_base64($ticket64) or die ("Unable to decode Base64 encoded string '$ticket64'\n"); my $password_md5 = Digest::HMAC_MD5::hmac_md5_hex($ticket, $password); print encode_base64 ("$username $password_md5", ""); $ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 mail.server.net ESMTP Server EHLO client.server.net 250-mail.server.net Hello client.server.net 250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5 GSSAPI 250-ENHANCEDSTATUSCODES 250 STARTTLS AUTH CRAM-MD5 ## , : PDMzMjE2NDkzMTA1OTExNDQuMTQxNDc5NTExOUBtYWlsLnNlcnZlci5uZXQ+ dGVzdCAxNTU0YTQwNzA1NTgxZjUwZmI1MmNjZDhlZDhjM2EyYg== 235 2.7.0 Authentication successful QUIT 221 2.0.0 Bye # ./md5cram.pl test testpass PDMzMjE2NDkzMTA1OTExNDQuMTQxNDc5NTExOUBtYWlsLnNlcnZlci5uZXQ+ dGVzdCAxNTU0YTQwNzA1NTgxZjUwZmI1MmNjZDhlZDhjM2EyYg== $ telnet 127.0.0.1 143 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5] Dovecot ready. 01 AUTHENTICATE CRAM-MD5 + PDgxOTAyMjA2NTYwNzcyMzEuMTQxNDc5NzA3MkBtYWlsLnNlcnZlci5uZXQ+ dGVzdCA1YTZlNjYwMDlmZGJlZWNjYWRlNDY5M2FlMjU5YTA2ZQ== 01 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS XEXEC QUOTA] Logged in 02 LOGOUT * BYE Logging out 02 OK Logout completed. Connection closed by foreign host. # ./md5cram.pl test testpass PDgxOTAyMjA2NTYwNzcyMzEuMTQxNDc5NzA3MkBtYWlsLnNlcnZlci5uZXQ+ dGVzdCA1YTZlNjYwMDlmZGJlZWNjYWRlNDY5M2FlMjU5YTA2ZQ== $ printf 'test\0test\0testpass' | base64 dGVzdAB0ZXN0AHRlc3RwYXNz $ echo dGVzdAB0ZXN0AHRlc3RwYXNz | base64 -d testtesttestpass $ printf 'test\0test\0testpass' | uuencode -m - begin-base64 644 - dGVzdAB0ZXN0AHRlc3RwYXNz ==== printf 'begin-base64 644 -\ndGVzdAB0ZXN0AHRlc3RwYXNz\n====' | uudecode $ uudecode<<EOF begin-base64 644 - dGVzdAB0ZXN0AHRlc3RwYXNz ==== EOF $ printf 'test\0test\0testpass' | mmencode dGVzdAB0ZXN0AHRlc3RwYXNz $ echo dGVzdAB0ZXN0AHRlc3RwYXNz | mmencode -u testtesttestpass $ printf 'test\0test\0testpass' | python -m base64 dGVzdAB0ZXN0AHRlc3RwYXNz $ echo dGVzdAB0ZXN0AHRlc3RwYXNz | python -m base64 -d $ printf 'test\0test\0testpass' | php -r 'echo base64_encode(fgets(STDIN));' dGVzdAB0ZXN0AHRlc3RwYXNz $ php -r 'echo base64_decode($argv[1]);' dGVzdAB0ZXN0AHRlc3RwYXNz testtesttestpass $ perl -MMIME::Base64 -e 'print encode_base64("test\0test\0testpass")' dGVzdAB0ZXN0AHRlc3RwYXNz $ perl -MMIME::Base64 -e 'print decode_base64("dGVzdAB0ZXN0AHRlc3RwYXNz")' testtesttestpass $ printf 'test\0test\0testpass' | openssl base64 dGVzdAB0ZXN0AHRlc3RwYXNz $ echo dGVzdAB0ZXN0AHRlc3RwYXNz | openssl base64 -d testtesttestpass $ openssl s_client -starttls smtp -crlf -connect mail.truevds.ru:25 $ openssl s_client -starttls smtp -crlf -connect mail.truevds.ru:587 $ openssl s_client -crlf -connect mail.truevds.ru:465 $ openssl s_client -connect mail.truevds.ru:995 $ openssl s_client -starttls pop3 -crlf -connect mail.truevds.ru:110 $ openssl s_client -crlf -connect mail.truevds.ru:993 $ openssl s_client -starttls imap -crlf -connect mail.truevds.ru:143 $ openssl s_client -ssl3 -starttls smtp -crlf -connect mail.truevds.ru:25 $ openssl ciphers -ssl3 $ openssl ciphers -tls1 # tshark -i eth0 -f "port 25" -R smtp # tshark -i eth0 -f "port 143" -R imap # tshark -i eth0 -f "port 110" -R pop # tcpdump -s0 -nn -i eth0 -w smtps.pcap port 465 and host HOSTIP # dumpcap -s0 -i eth0 -w smtp.pcap -f 'port 25 and host HOSTIP' # tshark -n -r smtp.pcap -R smtp # openssl ciphers -ssl3 # openssl ciphers -tls1 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,25,smtp,/etc/pki/tls/private/server.key" -R smtp $ printf "EHLO RC4-MD5\nEXIT" | openssl s_client -starttls smtp -crlf -tls1 -cipher RC4-MD5 -connect mail.truevds.ru:25 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,465,smtp,/etc/pki/tls/private/server.key" -R smtp $ printf "EHLO RC4-MD5\nEXIT" | openssl s_client -ssl3 -cipher RC4-SHA -connect mail.truevds.ru:465 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,143,imap,/etc/pki/tls/private/server.key" -R imap $ printf "* CAPABILITY\nLOGOUT" | openssl s_client -starttls imap -crlf -tls1 -cipher RC4-MD5 -connect mail.truevds.ru:143 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,993,imap,/etc/pki/tls/private/server.key" -R imap $ printf "* CAPABILITY\nLOGOUT" | openssl s_client -crlf -ssl3 -cipher RC4-MD5 -connect mail.truevds.ru:993 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,110,pop,/etc/pki/tls/private/server.key" -R pop $ printf "USER RC4-MD5\nEXIT" | openssl s_client -starttls pop -crlf -tls1 -cipher RC4-MD5 -connect mail.truevds.ru:110 # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,995,pop,/etc/pki/tls/private/server.key" -R pop $ printf "USER RC4-MD5\nEXIT" | openssl s_client -crlf -ssl3 -cipher RC4-MD5 -connect mail.truevds.ru:995 94.127.66.53 is the ip address of the server to which the client connects, /etc/pki/tls/private/server.key is the path to the private key of the server. The private key is usually located in /etc/pki or /etc/ssl , depending on the server. This information can be viewed in the settings of the mail server itself. $ grep key_file /etc/postfix/main.cf smtpd_tls_key_file = /etc/pki/tls/private/server.key smtp_tls_key_file = /etc/pki/tls/private/server.key ssl.keys_list:94.127.66.53,start_tls,smtp,/etc/pki/tls/private/server.key instead of ssl.keys_list:94.127.66.53,25,smtp,/etc/pki/tls/private/server.key . But this option did not work for me, traffic only showed up before encryption was initialized.-o "ssl.debug_file: /tmp/debug.log" # tshark -i eth0 -n -o "ssl.keys_list:94.127.66.53,25,smtp,/etc/pki/tls/private/server.key" -R "smtp" Running as user "root" and group "root". This could be dangerous. Capturing on eth0 0.178964 94.127.66.21 -> 94.127.66.53 SMTP C: EHLO RC4-MD5 | EXIT 0.179357 94.127.66.53 -> 94.127.66.21 SMTP 250-mail.truevds.ru | 250-PIPELINING | 250-SIZE 104857600 | 250-ETRN | 
Source: https://habr.com/ru/post/262819/
All Articles