Вот так нас и хакают. BlueMail. Не вляпайтесь.

Apr 29, 2016 00:03

Те, у кого нет устройств с Андроидом, могут дальше не читать. Хотя, мож, оно и для других ОС существует? Anyway, моё дело предупредить.

Итак. Обычно я на своих мобильных устройствах пользовал штатный ведроидовский почтовый клиент. Он меня абсолютно устраивал для задач типа "квакнуть о том, что пришла почта, пока я был в дороге, и более или менее схематически показать её мне, когда я вылезу из машины". Потом в хозяйстве появился планшет на Android 4.4, и штатный его клиент почему-то напрочь отказался коннектиться к нашему копропротивному Exchange. Ну, тоись, он просто падал при попытке запуска. Не имея никакого желания с ним бодаться, я просто тупо вынес его, а взамен поставил MailWise. В принципе, прилично, не считая нескольких мелких недочётов. Главный из которых - оно напрочь не умеет таскать почту по POP3. Только IMAP, Exchange и ещё как-то коннектор. А поскольку у меня личный почтовый сервер свой собственный (вон в шкафу стоит), но лепить туда IMAP у меня не было никакого, опять же, желания - я решил посмотреть, чего в Google Store имеется из соответствующего. Больше всего звёзд там собрала софтина под названием BlueMail. Её я и поставил, вторым клиентом на планшет. Сконфигурил ей POP3S, SMTP + STARTTLS и приготовился радоваться.

Радоваться пришлось не слишком долго. В первом же отчёте секьюрити-монитора, резвящегося на упомянутом персональном серваке, нашлось немало жалоб на ошибку аутентификации при коннектах к почтовому серверу (по понятным причинам, в логах ниже часть атрибутов заменена или изменена, но самые важные оставлены как есть):

Apr 26 03:41:11 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser rhost=54.174.128.247 user=mailuser
Apr 26 04:41:14 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser
rhost=54.174.128.247 user=mailuser
Apr 26 05:41:15 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser
rhost=54.174.128.247 user=mailuser
Apr 26 06:41:52 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser
rhost=54.174.128.247 user=mailuser
Apr 26 07:41:21 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser
rhost=54.174.128.247 user=mailuser
Apr 26 08:41:23 mailer auth: pam_unix(dovecot:auth): authentication failure; logname= uid= euid= tty=dovecot ruser=mailuser
rhost=54.174.128.247 user=mailuser

Итак, некий хост с айпишником 54.174.128.247 начал ровно раз в час ломиться ко мне на почтовый сервер по протоколу POP3S, предъявляя при этом неправильный пароль. Ресолвинг хоста дал полезной инфы чуть меньше, чем нихера:

# host 54.174.128.247
247.128.174.54.in-addr.arpa domain name pointer ec2-54-174-128-247.compute-1.amazonaws.com.

То есть, это амазоновский клауд, а в нём безымянный арендованный хост. И он точно не мой, бо у Амазона у меня нет ничего, кроме аккаунта в их магазине и их же кредитки. И раньше такой херни в логах не наблюдалось, только после установки BlueMail началось.

Следующим логичным шагом было включение дебаг-логов у Голубятни, с последующим изучением наловленного.

Клиент засветился быстро, бо фигачил раз в час (ниже бум считать, что 1.2.3.4 - IP моего мейлера):

Apr 27 18:08:59 auth: Debug: client in: AUTH 1 XXXXXXXX service=pop3 secured session=3rLUK4Ex4gA2roD3
lip=1.2.3.4 rip=54.174.128.247 lport=995 rport=57314
Apr 27 18:08:59 auth: Debug: client out: CONT 1
Apr 27 18:08:59 auth: Debug: client in: CONT 1 AGN5YmVyY2F0ADVHZExVa18qNEFzY3habiBQWXg5VA==
Apr 27 18:08:59 auth-worker(19111): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Apr 27 18:08:59 auth-worker(19111): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Apr 27 18:08:59 auth-worker(19111): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_pgsql.so
Apr 27 18:08:59 auth-worker(19111): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_sqlite.so
Apr 27 18:08:59 auth-worker(19111): Debug: pam(mailuser,54.174.128.247): lookup service=dovecot
Apr 27 18:08:59 auth-worker(19111): Debug: pam(mailuser,54.174.128.247): #1/1 style=1 msg=Password:
Apr 27 18:09:01 auth-worker(19111): Info: pam(mailuser,54.174.128.247): pam_authenticate() failed: Authentication failure
(password mismatch?) (given password: 5GdLUk_*4AscxZn PYx9T2SzP0)
Apr 27 18:09:03 auth: Debug: client out: FAIL 1 user=mailuser
Apr 27 18:09:44 pop3-login: Info: Disconnected (auth failed, 1 attempts in 45 secs): user=, method=XXXXXXXX,
rip=54.174.128.247, lip=1.2.3.4, TLS, session=<3rLUK4Ex4gA2roD3>

Обращаем внимание на пароль (можно не пытаться эксплуатить, я его уже давно сменил :) - 5GdLUk_*4AscxZn PYx9T2SzP0. Единственное его отличие от пароля истинного - на месте пробела должен стоять знак "+".

На этом месте у меня появилось сумасшедшее подозрение, что BlueMail хитровыкопан донельзя, и мой планшет на самом деле ползает за почтой к этому самому AWS-хосту, а не напрямую к моему серваку (хотя почему тогда пароль неправильный, и почему планшет таки получает почту?!). Ан нифига, рядом в логах законная сессия с планшета (не обращайте внимания на ошибку аутентификации - пароль на серваке я сменил тут же, а вот на планшете в клиенте не стал, желая понаблюдать, что будет дальше):

Apr 27 18:31:58 auth: Debug: client in: AUTH 1 XXXXXXXX service=pop3 secured session=3coOfoExRwDAqAco
lip=1.2.3.4 rip=192.168.15.40 lport=995 rport=37959
Apr 27 18:31:58 auth: Debug: client out: CONT 1
Apr 27 18:31:58 auth: Debug: client in: CONT 1 AGN5YmVyY2F0ADVHZExVa18qNEFzY3habitQWXg5VA==
Apr 27 18:31:58 auth-worker(19257): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Apr 27 18:31:59 auth-worker(19257): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Apr 27 18:31:59 auth-worker(19257): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_pgsql.so
Apr 27 18:31:59 auth-worker(19257): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_sqlite.so
Apr 27 18:31:59 auth-worker(19257): Debug: pam(mailuser,192.168.15.40): lookup service=dovecot
Apr 27 18:31:59 auth-worker(19257): Debug: pam(mailuser,192.168.15.40): #1/1 style=1 msg=Password:
Apr 27 18:32:00 auth-worker(19257): Info: pam(mailuser,192.168.15.40): pam_authenticate() failed: Authentication failure
(password mismatch?) (given password: 5GdLUk_*4AscxZn+PYx9T2SzP0)
Apr 27 18:32:02 auth: Debug: client out: FAIL 1 user=mailuser
Apr 27 18:32:17 pop3-login: Info: Disconnected (auth failed, 1 attempts in 19 secs): user=, method=XXXXXXXXX,
rip=192.168.15.40, lip=1.2.3.4, TLS: Disconnected, session=<3coOfoExRwDAqAco>

192.168.15.40 - это, собссно, планшет. То есть, к Давкоту он ходит таки напрямую, предъявляя при этом пароль хоть и старый, но правильный, с "плюсом". А поскольку на серваке пароль уже сменен - получает отлуп. Всё работает как доктор прописал.

На этом месте копания в логах мне вчера захотелось спать, я скормил 54.174.128.247 iptables-у (и не подумайте, что в ACCEPT :), а к экспериментам вернулся только сегодня. Первым из них было вписывание нового, правильного пароля в настройки BlueMail в планшете. Ну и вынос айпишника из файрволла, ессесьно. Результат не заставил себя ждать:

Apr 28 20:50:51 auth: Debug: auth client connected (pid=712)
Apr 28 20:50:52 auth: Debug: client in: AUTH 1 XXXXXXX service=pop3 secured session=Vd+djJcxtAA2roD3
lip=1.2.3.4 rip=54.174.128.247 lport=995 rport=3252
Apr 28 20:50:52 auth: Debug: client out: CONT 1
Apr 28 20:50:52 auth: Debug: client in: CONT 1 AGN5YmVyY2F0ADQwOGloUWQxWURf
Apr 28 20:50:52 auth-worker(714): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Apr 28 20:50:52 auth-worker(714): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Apr 28 20:50:52 auth-worker(714): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_pgsql.so
Apr 28 20:50:52 auth-worker(714): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_sqlite.so
Apr 28 20:50:52 auth-worker(714): Debug: pam(mailuser,54.174.128.247): lookup service=dovecot
Apr 28 20:50:52 auth-worker(714): Debug: pam(mailuser,54.174.128.247): #1/1 style=1 msg=Password:
Apr 28 20:50:55 auth-worker(714): Info: pam(mailuser,54.174.128.247): pam_authenticate() failed: Authentication failure
(password mismatch?) (given password: RX6rjQq4Pz_)
Apr 28 20:50:57 auth: Debug: client out: FAIL 1 user=mailuser
Apr 28 20:51:20 pop3-login: Info: Disconnected (auth failed, 1 attempts in 28 secs): user=, method=XXXXXXXX,
rip=54.174.128.247, lip=1.2.3.4, TLS: Disconnected, session=

Всем хорошо видно? RX6rjQq4Pz_ - это кусок нового пароля. Вот он полностью (тоже не стОит, уже также сменён): RX6rjQq4Pz_:375Dwy#$#A7X

Заметили? AWS-овский хост опять обломался на спецсимволе. На этот раз - на ":".

И тогда поехал последний эксперимент. Был сгенерён пароль без спецсимволов вообще. Ну, точнее, я взял этот же пароль - и повыкидывал оттуда спецсимволы. И завёл ещё одного почтового пользователя, с пустым ящиком, чтобы AWS не потащил к себе мою личную почту, в случае чего. Этому новому пользователю и был присвоен пароль без спецсимволов. Вот он: RX6rjQq4Pz375Dwy351A7X

Сначала с новым паролем и новым юзернеймом пришёл планшет:

Apr 28 21:56:13 auth: Debug: auth client connected (pid=1218)
Apr 28 21:56:13 auth: Debug: client in: AUTH 1 XXXXXXX service=pop3 secured session=1sBPdpgx1gDAqAco
lip=1.2.3.4 rip=192.168.15.40 lport=995 rport=58326
Apr 28 21:56:13 auth: Debug: client out: CONT 1
Apr 28 21:56:13 auth: Debug: client in: CONT 1 AG1haWx1c2VyMQBSWDZyalFxNFB6Mzc1RHd5MzUxQTdY
Apr 28 21:56:13 auth-worker(1222): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Apr 28 21:56:13 auth-worker(1222): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Apr 28 21:56:13 auth-worker(1222): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_pgsql.so
Apr 28 21:56:13 auth-worker(1222): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_sqlite.so
Apr 28 21:56:13 auth-worker(1222): Debug: pam(mailuser1,192.168.15.40): lookup service=dovecot
Apr 28 21:56:13 auth-worker(1222): Debug: pam(mailuser1,192.168.15.40): #1/1 style=1 msg=Password:
Apr 28 21:56:13 auth: Debug: client out: OK 1 user=mailuser1
Apr 28 21:56:13 auth: Debug: master in: REQUEST 4089577473 1218 1 79802324750faca360a603481d111002
Apr 28 21:56:13 auth: Debug: passwd(mailuser1,192.168.15.40,<1sBPdpgx1gDAqAco>): lookup
Apr 28 21:56:13 auth: Debug: master out: USER 4089577473 mailuser1 system_groups_user=mailuser1
uid=6666 gid=7777 home=/blabla/blabla/mailuser1
Apr 28 21:56:13 pop3-login: Info: Login: user=, method=XXXXXXX, rip=192.168.15.40, lip=1.2.3.4, mpid=1223,
TLS, session=<1sBPdpgx1gDAqAco>
Apr 28 21:56:13 pop3(mailuser1): Info: Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0

Пароля в логе нету, поскольку он правильный, а Давкоту было велено протоколить пароли только при ошибках аутентификации.

На этом месте, пользователю mailuser1 было отправлено контрольное письмецо, объёмом 1218 байт в общей сложности. BlueMail на планшете был выгружен, дабы не мешался под руками в логах.

И вот... YEEESSSS!! Буквально пару минут назад. Как оно и подозревалось.

Apr 28 22:11:41 auth: Debug: auth client connected (pid=1370)
Apr 28 22:11:42 auth: Debug: client in: AUTH 1 XXXXXXXXX service=pop3 secured session=uYezrZgxUgA2roD3
lip=1.2.3.4 rip=54.174.128.247 lport=995 rport=34642
Apr 28 22:11:42 auth: Debug: client out: CONT 1
Apr 28 22:11:42 auth: Debug: client in: CONT 1 AG1haWx1c2VyMQBSWDZyalFxNFB6Mzc1RHd5MzUxQTdY
Apr 28 22:11:42 auth-worker(1374): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Apr 28 22:11:42 auth-worker(1374): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Apr 28 22:11:42 auth-worker(1374): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_pgsql.so
Apr 28 22:11:42 auth-worker(1374): Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_sqlite.so
Apr 28 22:11:42 auth-worker(1374): Debug: pam(mailuser1,54.174.128.247): lookup service=dovecot
Apr 28 22:11:42 auth-worker(1374): Debug: pam(mailuser1,54.174.128.247): #1/1 style=1 msg=Password:
Apr 28 22:11:42 auth: Debug: client out: OK 1 user=mailuser1
Apr 28 22:11:42 auth: Debug: master in: REQUEST 951844865 1370 1 b86f4b51c13ba45201a9ed0b0b4c37f3
Apr 28 22:11:42 auth: Debug: passwd(mailuser1,54.174.128.247,): lookup
Apr 28 22:11:42 auth: Debug: master out: USER 951844865 mailuser1 system_groups_user=mailuser1
uid=6666 gid=7777 home=/blabla/blabla/mailuser1
Apr 28 22:11:42 pop3-login: Info: Login: user=, method=XXXXXXXX, rip=54.174.128.247, lip=1.2.3.4, mpid=1375,
TLS, session=
Apr 28 22:11:42 pop3(mailuser1): Info: Disconnected: Logged out top=0/0, retr=1/1246, del=0/1, size=1246

Всем нормально видно? 54.174.128.247 успешно зашёл и выкачал единственное имеющееся в honeypot-ящике письмо. Не удаляя его, разумеется.

Итак, в случае, если пароль к почтовому ящику не содержит спецсимволов - некий хост с айпишником 54.174.128.247, принадлежащем сетке AWS, способен залогиниться на мой почтовик и молча выкачать мою личную почту. Более того: судя по логам, он должен делать это каждый час. После чего использовать вытащенную почту для каких-то целей (догадайтесь с двух раз, для каких именно). Или не использовать, это похую: я даже приблизительно не давал софтине разрешений производить такие операции. И я очень хотел бы пожать тестикулы гондонам-авторам, вкрячившим в софт такую хуйню.

Почему софтина обламывается на спецсимволах в пароле? Хер её знает. Скорее всего, писали пиздомозглые ебантяи-хипстеры или прочие подобные дырявые пидарасы, решившие срубить баблеца на общем современном пизданутом фоне "айда пиздить всё подряд, ибо теперь в тренде BigData и прочая торговля персональными данными юзеров" (как мы видим на данном примере - куда уже более персональными...) Писали, да наебались в коде, ибо знаний трендов чуть больше чем дохуя, а вот руки растут именно из того места, которое подобные персонажи используют в качестве мужского влагалища, только очень грязного. Хер знает, в общем - но в данном случае упомянутый баг оказался для меня натурально спасительным, иначе вся моя личная (и в некоторых аспектах довольно конфиденциальная) почта, объёмом в несколько лет, ещё вчера улетела бы хуй знает куда и хуй знает с какими перспективами...

Ну а BlueMail я, ессесьно, вынес нахер немедленно, вот только что. Чего и остальным советую. Да, и используйте спецсимволы в паролях, уж сколько раз твердили миру :).

Перепосты вполне приветствуются. Я крайне редко об этом прошу, но это именно тот случай, когда страна должна знать своих геморроев.

Update, спасибо dalekhin: Не я первый наступил, да.

я охуеваю, везёт мне на уродов, софт

Previous post Next post
Up