• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Заметка о спаме

mag_nat

RAID-массив
Пользователь
Регистрация
14.08.2019
Сообщения
56
Реакции
97
Скрытый контент для зарегистрированных пользователей.
Эту статью я посвящаю человеку, указавшему мне путь: Марио Штраймельвегеру. :) Кто этот чел? А это завсегдатай mail:pass листов, которые постят отдельные пользователи форумов как илитныя, приватныя с высоким валидом и так далее. :) Этого самого mario.streimelweger@a1.net там ОЧЕНЬ много. Как и разных других ребят, но особенно его.

Беглый анализ дубликатов показал следующее:
  • Некоторые дубликаты валидны!
  • Их пароли частично совпадают.
  • Это работает не только на a1.net, но ещё на arcor.de
, а раз так, то наверняка где-то ещё.

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

Bash:
nmap -p 993 --script=banner imap.arcor.de
nmap -p 993 --script=banner imap.a1.net

На аркоре нам ничего не дают. На а1 дают следющее:

Код:
| banner: * OK [CAPABILITY IMAP4rev1 QUOTA] perdition ready on WARSBL506
|_0003d414

Может хватит и этого. Идём гуглить. perdition - это такой pop3\imap реверс-прокси. Нужен для балансировки нагрузки на сервера. На сайтике говорят что он ходит в базу. Интересно, он ходит туда, чтобы чекнуть креды, или чтоб узнать на какой сервер нам пойти за почтой? В мануале ничего не нашёл. Нужно больше данных.

Решил почекать дубликаты в валиде. По серверам нашлось вот что:
Код:
arcor.de
a1.net
aon.at (a1.net)
terra.com.br
homechoice.co.uk
dcsystem.co.za (vox.co.za)
absamail.co.za (vox.co.za)
lantic.net    (vox.co.za)
actel.hu (enternet.hu)
hu.inter.net (enternet.hu)
nexgo.de (arcor.de)
vetorial.net
sion.com
tvnetwork.hu
orcon.net.nz

В процессе также выяснилось, что пароли на g2.ru и juno.com регистронезависмые. Для самых маленьких: это значит, что сервер считает, что password, Password, PASSWORD и так далее - один и тот же пароль. Сервера на них определить не получилось.

Пройдёмся NMAPом по серверам, может хоть где-то нам дадут что-то полезное. Так, нигде нам ни про какой perdition не рассказывают. Значит дело не в нём, а точно в сервере. Надо более пристально присмотреться к серверам, на 993 порту нам ничего интересного не говорят, может где-то есть что-то ещё.

Код:
...
host imap.homechoice.co.uk
shodan host 212.74.112.80
(так просто быстрее, чем нмапом...)
telnet 212.74.112.80 110
+OK Dovecot ready.

...
telnet 41.193.157.227 143
Dovecot ready

На этот сервак, внезапно, приходит три домена из моего списка
imap.absamail.co.za
imap.lantic.net
imap.dcsystem.co.za

Это сервер африканского телеком оператора https://www.vox.co.za/ Если есть какой-то способ получить все домены ссылающиеся на этот IP, то можно узнать ещё больше доменов подверженных этой хвори. Та же петрушка с серверами imap.actel.hu и imap.hu.inter.net, они оба приходят на ip 62.112.192.45 который принадлежит венгерскому телеком оператору (https://dravanet.hu/), тем не менее c сервером imap.enternet.hu ссылающимся на тот же адрес этот трюк не проходит. Возможно там как раз несколько imap серверов за реверс-прокси, а на них разное ПО, или просто dovecot разных версий. Попытка найти хоть какую-то информацию по проблеме результатов не дала. Рытьё в CVE на dovecot - тоже. Хотя может я просто недостаточно усердно рылся и у вас выйдет лучше.

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

Несколько аккаунтов для проверки:
Код:
mario.streimelweger@a1.net:25041983
1234567890@arcor.de:12345678
ortner.k@aon.at:58489588
adecalvio@terra.com.br:ade17150
alexpook@homechoice.co.uk:genesis1
bear0@absamail.co.za:gerhardt
carla1@lantic.net:elituxeb
g.balazs@actel.hu:9xG2a55P
langnora@hu.inter.net:5In3AM7t
forni@vetorial.net:crgf1975
issur@sion.com:g3l1e0i3
magyard1@tvnetwork.hu:Pracli11
smp16@orcon.net.nz:kenneth45

Добавляйте после пароля любой мусор - сервер схавает. Какая именно версия dovecot является "восьмисимвольной" выяснить не получилось. Может дело в комбинации базы и почтовика, или вообще в некорректных настройках - не знаю. Тем не менее проблема, как видите, вполне распространённая. Кстати, можете зарепортить им багу. :)

PS.
> shodan count dovecot
12567131

Хм. Количество символов 4600. Этого явно недостаточно для конкурса, но всё что я хотел я уже изложил. И я старался. Прямо очень старался пожиже всё размазать. :( Хорошо, тогда давайте вооружимся свежеприобретённым знанием и напишем простейший чекер для mail:pass листов на python.

Python:
#!/usr/bin/env python3
from optparse import OptionParser
from tqdm import tqdm #pip3 install tqdm

parser = OptionParser()
parser.add_option('-l', '--list', dest='list',action='store', default='', help="mail:pass list")
parser.add_option('-a', '--anti', dest='apubl',action='store', default='', help="Antipublic file")
parser.add_option('-o', '--output', dest='out',action='store', default='', help="Output file")
options, args = parser.parse_args()

if not options.list:
    print('-h для помощи')
    exit()

def get_checkline(line):
    line = (line.lower()).rstrip()
    a = line.split(':')
    passw = (a[1])[0:8]
    return (a[0]+':'+passw)

mail = set([])
tmpdup =  set([])
trash = 0
dupes = 0
with open(options.list,'r', encoding='utf8') as file:
    for line in tqdm(file.readlines()):
        if ('@' not in line) or (':' not in line):
            trash +=1
            continue
        eml = get_checkline(line)
        if eml not in tmpdup:
            mail.add(line)
            tmpdup.add(eml)
        else:
            dupes+=1

print('Мусорных строк: '+str(trash))
print('Дубликатов: '+str(dupes))

public = 0
out = set([])
if options.apubl:
    apub = set([])
    with open(options.apubl,'r', encoding='utf8') as file:
        for line in tqdm(file.readlines()):
            if ('@' not in line) or (':' not in line): continue
            apub.add(get_checkline(line))
    for line in mail:
        if get_checkline(line) in apub:
            public +=1
        else:
            out.add(line)
    print('Паблика: '+str(public))

if len(out) == 0: out = mail
if options.out:
    with open(options.out,'w', encoding='utf8') as file:
        for i in out:
            file.write(i)

Из зависимостей только tqdm (pip3 install tqdm), но можно обойтись и без него, просто удалите строку импорта и все упоминания и у вас не будет красивых консольных прогрессбаров. Под виндой придётся поставить ещё питон третьй версии. Под линухом можно назвать скрипт например mailchecker, положить в папку $PATH сделать "chmod +x mailchecker" и вызывать его просто из терминала не обращаясь к интерпретатору.

Пример работы чекера:
Код:
python3 checker.py -l arc/Zabugor.txt -a mail_trash
100%|-----------------------------| 1980148/1980148 [00:05<00:00, 384344.93it/s]
Мусорных строк: 0
Дубликатов: 891433
100%|---------------------------| 10624024/10624024 [00:16<00:00, 633258.85it/s]
Паблика: 750178

Баалин. Всё равно меньше 7к символов. :) Ладно, допишу в чекер вывод валида в файл. :)

Это первое, что я написал со времён школьных сочинений. Просьба строго не судить.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Я нихуя не понял бл#ть что это за набор символов и строчек кода бл#ть.
О чем тема, про что тема - нихуя не понятно. Еще и название темы уебанское.
 
Я нихуя не понял бл#ть что это за набор символов и строчек кода бл#ть.
О чем тема, про что тема - нихуя не понятно. Еще и название темы уебанское.

Некоторым почтовым серверам до пизды что ты шлёшь после 8 символа пароля, некоторым - на регистр. Вот и весь смысл. :)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Некоторым почтовым серверам до пизды что ты шлёшь после 8 символа пароля, некоторым - на регистр. Вот и весь смысл. :)
Ну и как это связано с трафиком?
 
Спасибо всем, кто поддержал голосами. Небольшое дополнение к статье: если ваш антипаблик разросся и его нельзя так просто взять и запихнуть в оперативную память, то можно либо читать его построчно, проверяя наличие строки в листе, либо использовать базу. Первый вариант проще. Набросал его на скорую руку, код не проверял:
Python:
if options.apubl:
    #считаем количество строк чтобы корректно выводился прогрессбар
    num_lines = sum(1 for line in open(options.apubl))
    with open(options.apubl,'r', encoding='utf8') as file:
        for line in tqdm(file, total=num_lines):
            if ('@' not in line) or (':' not in line): continue
            if get_checkline(line) in mail:
                mail.remove(line)
                public +=1
    print('Паблика: '+str(public))
А хотя не, тут же сет mail содержит полную строку, а проверять надо по сокращённой. Можно сгенерировать временный сет типа mail но с сокращёнными строками. Идея, думаю, понятна.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх