R0 CREW

ZTE USB Modem Engine Reverse

ZTE USB Modem Engine Reverse

author : Sanjar Satsura {4k4 S4NJ}
web : http://www.d34dm4st3rs.narod.ru
e-mail I : sacura_08[at]inbox[dot]ru
e-mail II : d34dm4st3rs[at]yandex[dot]ru
e-mail III: sanjar[at]xakep[dot]ru

0x00 Intro
Сегодня я хотел бы поделиться со всем миром о моей недавней реверсерской работе.
Начну с того что вы все наверное уже наслышаны о такой новомодной вещице как USB
модем для интернета (от Beeline,MTS,etc)…
Да и маркетологи не спят во всю изрекламировали этот весьма страноватый продукт…
Почему странноватый споросите вы ?!
А дело все в том, что этот проект является довольно подозрительным и опасным !!!
Итак сегодня я попытаюсь вам объяснить почему он таковым является…

Для лучшего понимания статьи советую скачать исходники:

[url]http://d34dm4st3rs.narod.ru/reliases/ZTE_modem_REVERSE.tar.gz[/url]

Начнем с того что этот проект разрабатывали китайцы (ZTE) и как каждый китайский продукт
этот продукт является самим по себе бажным и убогим… Не из-за того что его кодили
неправильные и безмозглые китайцы (а таковы не только китайцы), а потому что этот продукт
был изготовлен на скорую руку и стоит эта технология не совсем то дорого!
На моей родине (Узбекистан) этот модем давно набрал высокие обороты по продаже и на нем
специализируются почти все сотовые операторы(MTS UZ, Beeline UZ, Ucell)…
Первый раз я столкнулся с этим модемом месяца 3 назад и он сразу же меня заинтересовал
своей активностью… Когда я пытался установить этот модем своей подруге, касперыч 2010
сразул предупредил об некой странной активности этого модема… Я на всякий пожарный
снял копию этой проги и спокойно поехал в свою реверсерскую нору.
Приехав домой я сразу начал иследование этой проги и обнаружил не хилую активность
этой в ней=)) Утилиты FileMon & RegMon показали что программа проявляет активное участие в
жизни ОС и её реестра =0 А именно программа производит сканирование ОС (выявляет :
1 Инфо о состоянии свободного пространстве RAM
2 Получает данные о CP
3 Инфо о состоянии COM подсистемы
4 Инфо о параметрах Commnad Line (Командная Строка)
5 Инфо о уровне ID запущенной программы
6 Инфо о кол-во потоков данного процесса
7 Инфо о Формате Даты
8 Инфо о состоянии свободного пространства в жестком диске
9 Инфо о переменных средах ОС
10 Проверка размера программы
11 Инфо о времени ОС
12 Инфо о микропроцессоре
13 Инфо о состоянии автозагрузки
14 Инфо о языке ОС (по умолчанию)
15 Полная системная информация, аналогичная команде systeminfo в cmd.exe
16 Получает информацию о зональной относительности компьютера
17 Здесь получаем SID работающего пользователя
18 А здесь версию программы=))))
а также сканирует внутренее содержание системного диска %systemdrive% командой tree и
производит многие подозрительные действия
) но на этом все это не заканчивается…
А что вы думаете дальше делает эта тварь ?! Правильно ! Передает все собранные данные
на сервер=))))
Реверс этой проги это вполне доказал !!! (все данные присутсвуют в этом архиве).
Вот часть кода (с моими коментами) которая это наглядно демонстрирует :

004D35C0 ; Инфо о состоянии COM подсистемы....
004D35C6 [00000006 BYTES: COLLAPSED FUNCTION j_GetCommState. PRESS KEYPAD "+" TO EXPAND]
; Инфо о параметрах Commnad Line (Командная Строка)...
004D35CC [00000006 BYTES: COLLAPSED FUNCTION j_GetCommandLineA. PRESS KEYPAD "+" TO EXPAND]
; Инфо о уровне ID запущенной программы ....
004D35D2 [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentProcessId. PRESS KEYPAD "+" TO EXPAND]
; Инфо о кол-во потоков данного процесса ...
004D35D8 [00000006 BYTES: COLLAPSED FUNCTION j_GetCurrentThreadId. PRESS KEYPAD "+" TO EXPAND]
; Инфо о Формате Даты....
004D35DE [00000006 BYTES: COLLAPSED FUNCTION j_GetDateFormatA. PRESS KEYPAD "+" TO EXPAND]
; Инфо о состоянии свободного пространства в жестком диске....
004D35E4 [00000006 BYTES: COLLAPSED FUNCTION j_GetDiskFreeSpaceA. PRESS KEYPAD "+" TO EXPAND]
; Инфо о переменных средах ОС...
004D35EA [00000006 BYTES: COLLAPSED FUNCTION j_GetEnvironmentStrings. PRESS KEYPAD "+" TO EXPAND]
004D35F0 00000006 BYTES: COLLAPSED FUNCTION j_GetExitCodeThread. PRESS KEYPAD "+" TO EXPAND]
; Проверка размера программы....
004D35F6 [00000006 BYTES: COLLAPSED FUNCTION j_GetFileSize. PRESS KEYPAD "+" TO EXPAND]

Я диззасемблировал эту тварь (DLL_Netcard_R.dll) Идой (Idag), кому интересно может
сам продизассемблировать эту хрень=))…

После анализа этой твари я обнаружил также серёзные баги в её проектирование,
а именно эти баги позволяли нам производить различные несанкционированные действия на
сервере=)))

0x01 БАГ I - Puk & Pin Spoofing:
Эта часть статьи посвященна подделке Puk & Pin кодов при запросе с серверной части программы.
Вот часть кода которая наглядно демонстрирует всё выше сказанное мной :

004EBE13 aSimPukRequir_2 db 'SIM PUK Required',0 ; DATA XREF: sub_4CEB04+163 - Функция проверки PUK -кода
; - Посдующее не требует коментариев=))
004EBE24 aNoUim db 'NO UIM',0 
004EBE2B aSimPin_0 db 'SIM PIN',0
004EBE33 aSimPuk_0 db 'SIM PUK',0
004EBE3B aSimPin2 db 'SIM PIN2',0
004EBE44 aSimPuk2 db 'SIM PUK2',0
004EBE4D aSimFailure_0 db 'SIM failure',0
004EBE59 aSimBusy_0 db 'SIM busy',0
004EBE62 aSc_2 db 'SC',0 ; DATA XREF: sub_4CEEF0+B1
004EBE65 aIncorrectPas_3 db 'Incorrect password',0 ; DATA XREF: sub_4CEEF0+134 ; Функция вызова "неправильного пароля"
; она же "правильного запроса"
004EBE78 aSimPukRequir_3 db 'SIM PUK Required',0 ; DATA XREF: sub_4CEEF0+161 - Вот тут функция коректности PUK-кода
; начинающим реверсерам : просто при поиске правильного Puk - кода , сравните правильный результат с Required PUK
; в main процедуре и все будет тип-топ=)) 
;Exp:
;cmp aSimPuk_0,aSimPukRequir_3
; jmp .... [далее на место назначения]
004EBE89 align 4
004EBE8C off_4EBE8C dd offset dword_4CDA95+3 ; DATA XREF: .data:004EBEAC

Вот еще пример который можно использовать для перехватов ключа и для дальнейшего использования поддельных ключей=)):

004DF26B aSystemCurren_4 db '\SYSTEM\CurrentControlSet\Services\qcusbser\Enum',0 ; Установка ключа для загрузки Сервиса
004DF26B ; DATA XREF: sub_423BB4+B1 USB Modem'a (qcubser)
004DF29C aCount_1 db 'Count',0 ; DATA XREF: sub_423BB4+183
004DF2A2 a1 db '1',0 ; DATA XREF: sub_423BB4+1BD
004DF2A4 a1_0 db '1',0 ; DATA XREF: sub_423BB4+214
004DF2A6 a0_0 db '0',0 ; DATA XREF: sub_423BB4+271
004DF2A8 aSystemCurren_5 db '\SYSTEM\CurrentControlSet\Enum\',0 ; DATA XREF: sub_423BB4+2CD ; Состояние подсистемы
004DF2C8 aDeviceParamete db '\Device Parameters',0 ; DATA XREF: sub_423BB4+335 ; Параметры для устройства
004DF2DB aPortname db 'PortName',0 ; DATA XREF: sub_423BB4+42C ; Названия порта =)))))

Далее еще много чего интересного можете найти в исходнике dll_card_reverse_from flash_media.asm

0x02 БАГ II - NETCARD PID Exploitation =)) :
Эта часть статьи удивительно уникальна. Дело в том ,что мы используем клиентскую реализацию программы.
Но есть также серверная часть… Здесь подробно приведен код отвечающий за подключение к серверной части
Итак, по всему ниже стоящему коду следует ,что на сервере действует та же система организации что и при организации
прав unix-like системы:
PID 3 - уровень доступа простого пользователя. Права ограничены, так что он может просмаривать только свою учетную запись
PID 2 - уровень доступа с правами Модератора. Права включают в себя просмотр не только своей учетной записи, но и других
пользователей=))) Далее также в права входят редактирование, удаление учетных записей=)))))!!! По мойму круто!!
Но все это ограничивается тем что, вы не можете добавлять учетные записи=(
PID 1 - уровень доступа с правами Администратора. Права не ограничены (ну или почти) ничем. Вы можете удалять,редактировать
вставлять, добавлять учетные записи, все в рамках этой системы=))))
PID 0 - уровень Супер Визора (Супер Администратора). Дает полный контроль над всеми системами связанных с этой системой.=)))
Попросту говоря это права root.
Существует также PID 4 - ну это простой гость не имеющий никаких прав на этом сервере. Так что его мы прсото не включили=))
Итак мы выяснили какие существуюит PID’ы и как они работают, но зачем нам эта инфа ?!
А затем, что когда мы подключаемся (мы входит с правами PID3), но сама программа использует права доступа у серверу с правами
PID2 !!! Да, да!!! вы не ослышались !!! Права модератора, и всё всё всё что они наследуют!!
Также существует возможность получения прав PID1 & PID 0 через баги в проектировании системы, но это уже другая тема=))
А сейчас мы рассмотрим те функции которые отвечают за подключение системы с правами PID 2.
Не терпится посмотреть зырим в исходник (dll_card_reverse_netcardconf.asm):

РАЗ:

00402C88 ; Получение данных с сетевой карты usb модема
00402C88 public _MEC_GetNetcardInfo
00402C88 _MEC_GetNetcardInfo proc near
00402C88 
00402C88 arg_0 = dword ptr 8
00402C88 
00402C88 push ebp ; точка подключения заносится в стек=))
00402C89 mov ebp, esp ; Передаем содержимое указателю стека=))))))
00402C8B mov eax, dword_4D42F8 ; Передаем в eax удвоенное значение адресса 4D42F8
00402C90 test eax, eax ; Проверка (сравнение)
00402C92 jnz short loc_402C9A ; если не расно 0 , скачем 402C9A
00402C94 mov ax, 9 ; Выпоняем 
00402C98 pop ebp ; все конец функции
00402C99 retn ; возврат в точку конца подпрограммы

00402C9A loc_402C9A: ; CODE XREF: _MEC_GetNetcardInfo+A
00402C9A cmp byte ptr [eax+0D0h], 1 ; Сверка ключей =))
00402CA1 jz short loc_402CA9 ; если да (т.е равно 0) то едем дальше
00402CA3 mov ax, 7; выполняем
00402CA7 pop ebp ; конец функции
00402CA8 retn ; возврат в точку конца подпрограммы 

ДВА:

00402CE0 ; Здесь проводятся установки SID&NID
; где SID - это ваш ID по подключению и NID - это и есть наш PID
00402CE0 public _MEC_SetNetcardSIDAndNID
00402CE0 _MEC_SetNetcardSIDAndNID proc near
00402CE0 ;;;;;;; Установки для глобальных переменных
00402CE0 arg_0 = dword ptr 8 ; Дес. 8
00402CE0 arg_4 = dword ptr 0Ch ; Дес. 12
00402CE0 arg_8 = dword ptr 10h ; Дес. 16 
00402CE0 
00402CE0 push ebp ; Заносим в стек=))
00402CE1 mov ebp, esp ; Вот здесь можно и шелкод сбабахать =))) Запоминаем адресс =D))))
00402CE3 mov eax, dword_4D42F8 ; Заносим двойное значение генерируемое функцией ... 
; по адрессу 4D12F8
00402CE8 test eax, eax ; Проверка
00402CEA jnz short loc_402CF2 ; Прыгаем если да, нет идем дальше
00402CEC mov ax, 9 ; конец подфункции
00402CF0 pop ebp ; выходим
00402CF1 retn ; возврат в основную программу
00402CF2 ; ---------------------------------------------------------------------------
00402CF2 
00402CF2 loc_402CF2: ; CODE XREF: _MEC_SetNetcardSIDAndNID+A
00402CF2 cmp byte ptr [eax+0D0h], 1 ; Сравнение везде одно и тоже, так что поломав одну функцию
00402CF9 jz short loc_402D01 ; с легкостью ломаем следующую (т.к они писались достаточно
00402CFB mov ax, 7 ; одинаково)
00402CFF pop ebp
00402D00 retn
00402D01 ; ---------------------------------------------------------------------------

00402D01 loc_402D01: ; CODE XREF: _MEC_SetNetcardSIDAndNID+19
00402D01 mov edx, [ebp+arg_8] ; MOV в роли LEA =)))) 
00402D04 push edx ; Заносим EDX
00402D05 mov ecx, [ebp+arg_4] ; Берутся те самые ключи занесенные в регистр ebp
00402D08 mov edx, [ebp+arg_0] ; и заносятся путем попутного шифрования =)))
; mov ecx, [ebp+arg_4] == mov ecx,[ebx+ 12] (см. выше)=)))
00402D0B call sub_40B544 ; Вызов подфункции 
00402D10 pop ebp ; Выходим из процедуры
00402D11 retn
00402D11 _MEC_SetNetcardSIDAndNID endp

И Наконец ТРИ:

00402E20 ; Exported entry 72. _MEC_SetNetcardPwd
00402E20 ; Установки для пароля
00402E20 ; --------------- S U B R O U T I N E ---------------------------------------
00402E20 
00402E20 ; Attributes: bp-based frame
00402E20 
00402E20 public _MEC_SetNetcardPwd
00402E20 _MEC_SetNetcardPwd proc near
00402E20 
00402E20 arg_0 = dword ptr 8
00402E20 
00402E20 push ebp ; Можно выловить пасс
00402E21 mov ebp, esp ; Здесь он попадает в стек так что можно снять pwd (pass) 
00402E23 mov eax, dword_4D42F8 ; LordPE (простым дампом)
00402E28 test eax, eax ; Вносит пароль по умолчанию и тестирует
00402E2A jnz short loc_402E32 ; если поменять инструкцию jnz на jz можно без проблем
00402E2C mov ax, 9 ; проходить на сервер 
00402E30 pop ebp
00402E31 retn
00402E32 ; ---------------------------------------------------------------------------
00402E32 
00402E32 loc_402E32: ; CODE XREF: _MEC_SetNetcardPwd+A
00402E32 cmp byte ptr [eax+0D0h], 1 ; /// Та же самая проверка =))
00402E39 jz short loc_402E41
00402E3B mov ax, 7
00402E3F pop ebp
00402E40 retn
00402E41 ; ---------------------------------------------------------------------------
00402E41 
00402E41 loc_402E41: ; CODE XREF: _MEC_SetNetcardPwd+19
00402E41 mov edx, [ebp+arg_0]
00402E44 call sub_40B5A4
00402E49 pop ebp
00402E4A retn
00402E4A _MEC_SetNetcardPwd endp

0402F24 ; Exported entry 78. _MEC_ChangeNetcardLockPwd
00402F24 ; Установки для изменения PWD (пароля)
; Вот и все перехватываем esp и дело в шляпе =D
00402F24 ; --------------- S U B R O U T I N E ---------------------------------------
00402F24 
00402F24 ; Attributes: bp-based frame
00402F24 
00402F24 public _MEC_ChangeNetcardLockPwd
00402F24 _MEC_ChangeNetcardLockPwd proc near
00402F24 
00402F24 arg_0 = dword ptr 8
00402F24 arg_4 = dword ptr 0Ch
00402F24 
00402F24 push ebp ; Ни чем не скрывается
00402F25 mov ebp, esp
00402F27 mov eax, dword_4D42F8
00402F2C test eax, eax
00402F2E jnz short loc_402F36
00402F30 mov ax, 9
00402F34 pop ebp
00402F35 retn

Помойму достаточно доказательств ужасного бага =)) нет ?! Тогда копайте исходник =D))!

0x03 БАГ IV - Remote SQL Injection
И напоследок очень серьёзный баг в проектировании системы который позволяет производить произвольные
SQL-иньекции в билинговой системе соединеной через серверную часть программы…
Этот пример демонстрирует также взаимосвязь серверной части ZTE USB-modem Engine с другими
компонентами системы=)) Это поможет вам ориентироваться в системе в целом =)))
Далее расмотренны возможные реализации атак:

РАЗ:

004D4767 unk_4D4767 db 5Ch ; \ ; DATA XREF: sub_405248+113 ; Слеш который может помочь
; при организации null(x00) байтов
004D4768 db 0 ; ; %d
004D4769 aDb_dat_0 db 'db.dat',0 ; DATA XREF: sub_405248+13D ; Файл куда скидываются временные данные 
004D4792 aDataSource db 'Data Source=',0 ; DATA XREF: sub_405248+1F1 ; Указатель на db.dat (temp database)
004D479F asc_4D479F db ';',0 ; DATA XREF: sub_405248+1FF ; 
004D47A1 aPersistSecurit db 'Persist Security Info=False',0 ; DATA XREF: sub_405248+264 ; Состояние Информационной службы
; по умолчанию отключён... =))))

ДВА:

.....
04D47D5 aSmsindex db 'Smsindex',0 ; DATA XREF: sub_405768+46 ; ID индекса (номер по счету)
004D47DE aCodetype db 'CodeType',0 ; DATA XREF: sub_405768+82 ; Код региона(компании) Exp:+998-65
004D47E7 aLocation db 'Location',0 ; DATA XREF: sub_405768+C0 ; Направление (регион)
004D47F0 aStatus db 'Status',0 ; DATA XREF: sub_405768+FE ; Статус (отправлен или нет)
004D47F7 aIsconcat db 'IsConcat',0 ; DATA XREF: sub_405768+13C ; Каталог Контакта
004D4800 aConcatrefindex db 'ConcatRefIndex',0 ; DATA XREF: sub_405768+177 ; Активность клиента
004D480F aConcattotalmou db 'ConcatTotalMount',0 ; DATA XREF: sub_405768+1B3 ; Общее кол-во отпрваленных
004D4820 aConcatseq db 'ConcatSeq',0 ; DATA XREF: sub_405768+1EE ; Sequens =D
004D482A aContent db 'Content',0 ; DATA XREF: sub_405768+229 ; Содержание =))))))
004D4832 aSender db 'Sender',0 ; DATA XREF: sub_405768+2AB ; Отправитель
004D4839 aReceiver db 'Receiver',0 ; DATA XREF: sub_405768+32A ; Получатель
004D4842 aSendtime db 'SendTime',0 ; DATA XREF: sub_405768+3AF ; Время отправки
004D484B aRecvtime db 'RecvTime',0 ; DATA XREF: sub_405768+428 ; Время получения СМС =))) 
004D4854 aSmscentre db 'SMSCentre',0 ; DATA XREF: sub_405768+4A1 ; SMS Центр
004D485E aIndexid db 'indexID',0 ; DATA XREF: sub_405CAC+2D ; ID индекса
004D4866 aGroupid db 'GroupID',0 ; DATA XREF: sub_405CAC+77 ; ID Группы. Exp: User, Moderator, Administrator
004D486E aLocation_0 db 'Location',0 ; DATA XREF: sub_405CAC+B5 ; Направление СМС
004D4877 aAnumber db 'ANumber',0 ; DATA XREF: sub_405CAC+F6 ; Номер контакта exp: 6660666 =)))
004D487F aName db 'Name',0 ; DATA XREF: sub_405CAC+138 ; Имя контакта на кого зарегистрован номер;-))
004D4884 aCompany db 'Company',0 ; DATA XREF: sub_405CAC+1C0 ; Компания. Exp: beeline ,mts , etc...
.....

ТРИ :

; Это запрос типа : select count(*)as Total from SMS where Location=%d ; %d = 0(по умочанию) см. адресс:004D4768,
; также %d может быть любой цифрой (организации в С) 
004D4A9A aSelectCountAsT db 'select count(*) as Total from SMS where Location=%d;',0 ; Запрос помогает 
004D4A9A ; DATA XREF: sub_407D9C+21 ; вытаскивать любое СМС из базы
; Запрос парсится путем прибавления данных (mov eax,0; mov ebx,1, add eax,ebx)
; Таким образом организованны некоторые запросы снизу
; А у нас получилось : select count(*) as Total from SMS where Status=%d and Location=%d; где %d = 0
004D4ACF aSelectCountA_0 db 'select count(*) as Total from SMS where Status=%d and Locati' ; Вытаскивает все СМС где статус равно
004D4ACF ; DATA XREF: sub_407D9C+40 ; %d - любая цифра...
004D4ACF db 'on=%d;',0 ; И выше стоящий Location = %d, %d - любая цифра
004D4B12 aTotal db 'Total',0 ; DATA XREF: sub_407D9C+87
004D4B18 aSelectFromSmsW db 'select * from SMS where Location = %d',0 ; Выборка СМС
004D4B18 ; DATA XREF: sub_407E6C+50 
004D4B3E aSelectFromSm_0 db 'select * from SMS where Status = %d and Location = %d',0 
004D4B3E ; DATA XREF: sub_407E6C+72
004D4B74 aDeleteFromSmsW db 'delete * from SMS where Smsindex = %d and Location = %d',0 ; Удаление СМС =))))))
004D4B74 ; DATA XREF: sub_408010+19
004D4BAC aDeleteFromSm_0 db 'delete * from SMS where Location = %d',0
004D4BAC ; DATA XREF: sub_408078+1A
004D4BD2 aDeleteFromSm_1 db 'delete * from SMS where Status = %d and Location = %d',0
004D4BD2 ; DATA XREF: sub_408078+38
004D4C08 aUpdateSmsSetSt db 'update SMS set Status=%d where Smsindex = %d and Location =' ; Изменить СМС-ку ?! =D
004D4C08 ; DATA XREF: sub_408100+29
004D4C08 db ' %d',0

В действительности запросы могут выглядеть следующим образом :
select count(*)as Total from SMS where Location=998657231001 - вытаскивает все СМС-ки абонента (UZB MTS) 7231001

ЧЕТЫРЕ :

; А теперь CDR
; Разговариваем сколько угодно и меняем значение времени на 0:01 =)))
; И платим гроши=)) Или звоним куда надо и потом меняем номера и все =))))
; Делаем что хотим =D)))
; повторяю %d - число (целое,натуральное)
; %f - число с плавающей запятой; PS: ИЗ Си %f - float
004D4DF4 aSelectFromCdrW db 'select * from CDR where Location=%d;',0
004D4DF4 ; DATA XREF: sub_408430+17
004D4E19 aSelectFromCd_0 db 'select * from CDR where CDRType=%d and Location=%d;',0
004D4E19 ; DATA XREF: sub_408430+36
004D4E4D aDeleteFromCdrW db 'delete * from CDR where Location = %d;',0
004D4E4D ; DATA XREF: sub_4084FC+1A
004D4E74 aDeleteFromCd_0 db 'delete * from CDR where CDRType = %d and Location = %d;',0
004D4E74 ; DATA XREF: sub_4084FC+38
004D4EAC aInsertIntoCdrI db 'insert into CDR(indexID,PhoneNumber,RecordName,RecordTime,Du'
004D4EAC ; DATA XREF: sub_408584+56
004D4EAC db 'ration,DurationActive,TXBytes,RXBytes,Location,CDRType)value'
004D4EAC db 's(%d,:PhoneNumber,:RecordName,:RecordTime,%d,%d,%f,%f,%d,%d)'
004D4EAC db ';',0
004D4F62 aDeleteFromCd_1 db 'delete * from CDR where indexID = %d and Location = %d;',0
004D4F62 ; DATA XREF: sub_408654+18
004D4F9A aSelectCountA_3 db 'select count(*) As Total from PhoneBook where Location = %d',0
004D4F9A ; DATA XREF: sub_4086BC+1A
004D4FD6 aTotal_1 db 'Total',0 ; DATA XREF: sub_4086BC+64

SQL запрос может выглядеть так :

insert into CDR(666,7231001,Hacker,11:00,00:01,00:01,0,0,0,SIM)values+
+(666,:+998657230666,:Hax0r,:00:01,0,0,0.0,0.0,0.0,0.0) 

PS: + - это знак продолжения строки

И наконец ПЯТЬ !!! :

; переменные которые можно вводить с телефона (например запрос для shtrom атаки=))))
004D7BEC a0123456789ppht db '0123456789pPHT+*#',0 ; DATA XREF: sub_40D490+29
004D7BFE aEI db '-T=е¦+Tы',0 ; DATA XREF: sub_40D490+98
004D7C07 unk_4D7C07 db 0CAh ; ¦ ; DATA XREF: sub_40D490+AA

0x04 Заключение:
Итак сегодня мы с вами рассмотрели USB модем от ZTE… Ну и какие впечатления ?!
Надеюсь статья вам понравилась и мои старанья не пропали зря…
Эта статья является поучительной, так что за любое несанкционнированое действие
направленное против закона я отвественности не несу!!!
Наверное каждый из нас сделал для себя выводы (и разработчки и пользователи), так что
без обид ok =))
С вами был тот же 4k4 S4NJ,S4(uR4_13l@(kH@(k3R_XxX, Sanjar Satsura, etc…

Gr33tz: m3=))) & FBI =)))) & 4ll p30pl3 wh0 kn0w m3=)))
Fuckzz: 4ll $tup1d b0t of our b1g W0RLD=))

Спасибо Sanjar!

Очень рады видеть тебя и твои статьи на нашем форуме. Действительно, статьи интересные и качественные.

В общем, ещё раз спасибо за статьи.

Присоединяюсь к Ærik"у. Спасибо за статьи! ))

Присоеденяюсь к товарищам.
Спасибо за статьи. Рады видеть на нашем форуме!

Вам спасибо что пригласили… Тут смотрю походу крутой форумец у вас=) Хоть и молодой … Щас вот закончу реверс нового ботнета, сразу статью размещу=)) dance4

Стараемся)) Осталось немножко его подпилить (заказать лого, приобрести или сделать дизайн для главной странички, немного подкорректировать структуру форума) и можно будет усиленно привлекать посетителей.

Будем ждать :slight_smile:

PS: До кучи еще возможно приобретем коммерческий форум и дизайн к нему, но над этим еще нужно будет подумать.

Спасибо, Sanjar Satsura! Интересно было почитать!!!