alexsokolov: (nin)
[personal profile] alexsokolov
Оригинал взят у [livejournal.com profile] cybernatic_cat в Вот так нас и хакают. BlueMail. Не вляпайтесь.
Те, у кого нет устройств с Андроидом, могут дальше не читать. Хотя, мож, оно и для других ОС существует? 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, спасибо [livejournal.com profile] dalekhin: Не я первый наступил, да.
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

alexsokolov: (Default)
alexsokolov

April 2016

S M T W T F S
     12
3456789
10111213141516
17181920212223
2425262728 2930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 12:41 am
Powered by Dreamwidth Studios